]> git.ipfire.org Git - people/arne_f/ipfire-3.x.git/commitdiff
vim: Import latest patches from upstream.
authorMichael Tremer <michael.tremer@ipfire.org>
Thu, 7 Jun 2012 12:11:18 +0000 (14:11 +0200)
committerMichael Tremer <michael.tremer@ipfire.org>
Thu, 7 Jun 2012 12:11:18 +0000 (14:11 +0200)
These patch provide minor fixes for various bugs and problems.

468 files changed:
vim/patches/download.sh [new file with mode: 0644]
vim/patches/vim-7.3.082.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.083.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.084.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.085.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.086.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.087.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.088.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.089.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.090.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.091.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.092.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.093.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.094.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.095.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.096.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.097.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.098.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.099.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.100.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.101.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.102.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.103.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.104.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.105.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.106.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.107.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.108.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.109.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.110.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.111.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.112.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.113.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.114.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.115.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.116.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.117.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.118.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.119.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.120.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.121.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.122.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.123.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.124.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.125.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.126.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.127.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.128.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.129.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.130.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.131.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.132.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.133.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.134.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.135.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.136.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.137.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.138.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.139.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.140.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.141.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.142.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.143.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.144.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.145.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.146.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.147.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.148.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.149.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.150.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.151.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.152.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.153.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.154.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.155.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.156.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.157.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.158.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.159.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.160.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.161.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.162.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.163.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.164.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.165.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.166.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.167.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.168.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.169.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.170.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.171.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.172.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.173.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.174.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.175.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.176.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.177.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.178.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.179.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.180.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.181.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.182.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.183.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.184.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.185.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.186.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.187.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.188.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.189.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.190.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.191.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.192.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.193.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.194.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.195.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.196.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.197.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.198.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.199.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.200.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.201.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.202.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.203.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.204.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.205.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.206.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.207.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.208.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.209.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.210.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.211.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.212.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.213.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.214.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.215.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.216.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.217.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.218.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.219.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.220.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.221.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.222.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.223.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.224.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.225.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.226.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.227.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.228.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.229.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.230.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.231.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.232.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.233.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.234.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.235.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.236.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.237.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.238.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.239.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.240.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.241.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.242.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.243.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.244.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.245.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.246.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.247.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.248.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.249.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.250.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.251.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.252.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.253.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.254.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.255.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.256.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.257.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.258.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.259.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.260.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.261.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.262.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.263.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.264.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.265.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.266.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.267.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.268.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.269.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.270.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.271.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.272.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.273.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.274.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.275.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.276.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.277.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.278.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.279.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.280.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.281.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.282.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.283.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.284.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.285.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.286.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.287.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.288.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.289.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.290.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.291.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.292.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.293.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.294.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.295.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.296.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.297.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.298.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.299.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.300.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.301.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.302.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.303.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.304.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.305.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.306.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.307.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.308.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.309.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.310.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.311.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.312.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.313.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.314.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.315.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.316.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.317.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.318.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.319.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.320.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.321.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.322.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.323.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.324.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.325.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.326.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.327.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.328.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.329.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.330.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.331.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.332.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.333.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.334.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.335.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.336.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.337.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.338.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.339.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.340.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.341.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.342.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.343.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.344.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.345.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.346.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.347.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.348.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.349.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.350.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.351.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.352.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.353.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.354.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.355.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.356.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.357.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.358.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.359.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.360.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.361.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.362.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.363.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.364.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.365.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.366.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.367.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.368.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.369.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.370.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.371.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.372.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.373.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.374.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.375.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.376.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.377.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.378.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.379.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.380.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.381.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.382.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.383.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.384.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.385.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.386.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.387.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.388.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.389.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.390.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.391.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.392.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.393.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.394.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.395.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.396.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.397.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.398.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.399.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.400.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.401.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.402.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.403.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.404.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.405.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.406.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.407.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.408.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.409.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.410.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.411.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.412.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.413.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.414.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.415.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.416.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.417.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.418.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.419.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.420.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.421.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.422.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.423.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.424.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.425.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.426.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.427.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.428.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.429.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.430.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.431.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.432.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.433.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.434.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.435.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.436.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.437.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.438.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.439.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.440.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.441.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.442.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.443.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.444.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.445.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.446.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.447.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.448.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.449.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.450.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.451.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.452.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.453.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.454.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.455.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.456.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.457.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.458.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.459.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.460.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.461.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.462.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.463.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.464.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.465.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.466.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.467.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.468.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.469.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.470.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.471.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.472.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.473.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.474.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.475.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.476.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.477.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.478.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.479.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.480.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.481.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.482.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.483.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.484.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.485.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.486.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.487.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.488.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.489.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.490.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.491.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.492.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.493.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.494.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.495.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.496.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.497.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.498.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.499.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.500.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.501.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.502.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.503.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.504.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.505.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.506.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.507.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.508.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.509.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.510.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.511.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.512.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.513.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.514.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.515.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.516.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.517.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.518.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.519.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.520.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.521.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.522.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.523.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.524.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.525.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.526.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.527.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.528.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.529.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.530.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.531.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.532.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.533.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.534.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.535.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.536.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.537.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.538.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.539.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.540.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.541.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.542.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.543.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.544.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.545.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.546.patch0 [new file with mode: 0644]
vim/patches/vim-7.3.547.patch0 [new file with mode: 0644]
vim/vim.nm

diff --git a/vim/patches/download.sh b/vim/patches/download.sh
new file mode 100644 (file)
index 0000000..c40da4b
--- /dev/null
@@ -0,0 +1,14 @@
+#!/bin/bash
+
+last=${1}
+
+vim_version="7.3"
+vim_url="ftp://ftp.vim.org/pub/vim/patches/${vim_version}"
+
+filenames="${vim_version}.%s.patch0"
+
+for patch in $(seq 1 ${last}); do
+       patch=$(printf "${vim_version}.%03d" "${patch}")
+
+       wget -O "vim-${patch}.patch0" "${vim_url}/${patch}"
+done
diff --git a/vim/patches/vim-7.3.082.patch0 b/vim/patches/vim-7.3.082.patch0
new file mode 100644 (file)
index 0000000..5753c05
--- /dev/null
@@ -0,0 +1,51 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.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.3.082
+Problem:    Leaking file descriptor when hostname doesn't exist.
+Solution:   Remove old debugging lines.
+Files:     src/netbeans.c
+
+
+*** ../vim-7.3.081/src/netbeans.c      2010-12-08 13:11:15.000000000 +0100
+--- src/netbeans.c     2010-12-17 12:13:32.000000000 +0100
+***************
+*** 323,334 ****
+      server.sin_port = htons(port);
+      if ((host = gethostbyname(hostname)) == NULL)
+      {
+-      if (mch_access(hostname, R_OK) >= 0)
+-      {
+-          /* DEBUG: input file */
+-          sd = mch_open(hostname, O_RDONLY, 0);
+-          goto theend;
+-      }
+       nbdebug(("error in gethostbyname() in netbeans_connect()\n"));
+       PERROR("gethostbyname() in netbeans_connect()");
+       goto theend;
+--- 323,328 ----
+*** ../vim-7.3.081/src/version.c       2010-12-08 19:56:52.000000000 +0100
+--- src/version.c      2010-12-17 12:17:11.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     82,
+  /**/
+
+-- 
+How To Keep A Healthy Level Of Insanity:
+1. At lunch time, sit in your parked car with sunglasses on and point
+   a hair dryer at passing cars. See if they slow down.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.083.patch0 b/vim/patches/vim-7.3.083.patch0
new file mode 100644 (file)
index 0000000..f337d21
--- /dev/null
@@ -0,0 +1,362 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.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.3.083
+Problem:    When a read() or write() is interrupted by a signal it fails.
+Solution:   Add read_eintr() and write_eintr().
+Files:     src/fileio.c, src/proto/fileio.pro, src/memfile.c, src/memline.c,
+           src/os_unix.c, src/undo.c, src/vim.h
+
+
+*** ../vim-7.3.082/src/fileio.c        2010-08-15 21:57:26.000000000 +0200
+--- src/fileio.c       2010-12-17 16:04:30.000000000 +0100
+***************
+*** 918,924 ****
+           {
+               /* Read the first line (and a bit more).  Immediately rewind to
+                * the start of the file.  If the read() fails "len" is -1. */
+!              len = vim_read(fd, firstline, 80);
+               lseek(fd, (off_t)0L, SEEK_SET);
+               for (p = firstline; p < firstline + len; ++p)
+                   if (*p >= 0x80)
+--- 918,924 ----
+           {
+               /* Read the first line (and a bit more).  Immediately rewind to
+                * the start of the file.  If the read() fails "len" is -1. */
+!              len = read_eintr(fd, firstline, 80);
+               lseek(fd, (off_t)0L, SEEK_SET);
+               for (p = firstline; p < firstline + len; ++p)
+                   if (*p >= 0x80)
+***************
+*** 1373,1379 ****
+                   /*
+                    * Read bytes from the file.
+                    */
+!                  size = vim_read(fd, ptr, size);
+               }
+  
+               if (size <= 0)
+--- 1373,1379 ----
+                   /*
+                    * Read bytes from the file.
+                    */
+!                  size = read_eintr(fd, ptr, size);
+               }
+  
+               if (size <= 0)
+***************
+*** 4000,4006 ****
+  #ifdef HAS_BW_FLAGS
+                       write_info.bw_flags = FIO_NOCONVERT;
+  #endif
+!                      while ((write_info.bw_len = vim_read(fd, copybuf,
+                                                               BUFSIZE)) > 0)
+                       {
+                           if (buf_write_bytes(&write_info) == FAIL)
+--- 4000,4006 ----
+  #ifdef HAS_BW_FLAGS
+                       write_info.bw_flags = FIO_NOCONVERT;
+  #endif
+!                      while ((write_info.bw_len = read_eintr(fd, copybuf,
+                                                               BUFSIZE)) > 0)
+                       {
+                           if (buf_write_bytes(&write_info) == FAIL)
+***************
+*** 4813,4819 ****
+  #ifdef HAS_BW_FLAGS
+                       write_info.bw_flags = FIO_NOCONVERT;
+  #endif
+!                      while ((write_info.bw_len = vim_read(fd, smallbuf,
+                                                     SMBUFSIZE)) > 0)
+                           if (buf_write_bytes(&write_info) == FAIL)
+                               break;
+--- 4813,4819 ----
+  #ifdef HAS_BW_FLAGS
+                       write_info.bw_flags = FIO_NOCONVERT;
+  #endif
+!                      while ((write_info.bw_len = read_eintr(fd, smallbuf,
+                                                     SMBUFSIZE)) > 0)
+                           if (buf_write_bytes(&write_info) == FAIL)
+                               break;
+***************
+*** 5330,5336 ****
+  
+  /*
+   * Call write() to write a number of bytes to the file.
+!  * Also handles encryption and 'encoding' conversion.
+   *
+   * Return FAIL for failure, OK otherwise.
+   */
+--- 5330,5336 ----
+  
+  /*
+   * Call write() to write a number of bytes to the file.
+!  * Handles encryption and 'encoding' conversion.
+   *
+   * Return FAIL for failure, OK otherwise.
+   */
+***************
+*** 5702,5717 ****
+       crypt_encode(buf, len, buf);
+  #endif
+  
+!     /* Repeat the write(), it may be interrupted by a signal. */
+!     while (len > 0)
+!     {
+!      wlen = vim_write(ip->bw_fd, buf, len);
+!      if (wlen <= 0)              /* error! */
+!          return FAIL;
+!      len -= wlen;
+!      buf += wlen;
+!     }
+!     return OK;
+  }
+  
+  #ifdef FEAT_MBYTE
+--- 5702,5709 ----
+       crypt_encode(buf, len, buf);
+  #endif
+  
+!     wlen = write_eintr(ip->bw_fd, buf, len);
+!     return (wlen < len) ? FAIL : OK;
+  }
+  
+  #ifdef FEAT_MBYTE
+***************
+*** 6662,6669 ****
+       return -1;
+      }
+  
+!     while ((n = vim_read(fd_in, buffer, BUFSIZE)) > 0)
+!      if (vim_write(fd_out, buffer, n) != n)
+       {
+           errmsg = _("E208: Error writing to \"%s\"");
+           break;
+--- 6654,6661 ----
+       return -1;
+      }
+  
+!     while ((n = read_eintr(fd_in, buffer, BUFSIZE)) > 0)
+!      if (write_eintr(fd_out, buffer, n) != n)
+       {
+           errmsg = _("E208: Error writing to \"%s\"");
+           break;
+***************
+*** 10304,10306 ****
+--- 10296,10350 ----
+      }
+      return reg_pat;
+  }
++ 
++ #if defined(EINTR) || defined(PROTO)
++ /*
++  * Version of read() that retries when interrupted by EINTR (possibly
++  * by a SIGWINCH).
++  */
++     long
++ read_eintr(fd, buf, bufsize)
++     int          fd;
++     void    *buf;
++     size_t  bufsize;
++ {
++     long ret;
++ 
++     for (;;)
++     {
++      ret = vim_read(fd, buf, bufsize);
++      if (ret >= 0 || errno != EINTR)
++          break;
++     }
++     return ret;
++ }
++ 
++ /*
++  * Version of write() that retries when interrupted by EINTR (possibly
++  * by a SIGWINCH).
++  */
++     long
++ write_eintr(fd, buf, bufsize)
++     int          fd;
++     void    *buf;
++     size_t  bufsize;
++ {
++     long    ret = 0;
++     long    wlen;
++ 
++     /* Repeat the write() so long it didn't fail, other than being interrupted
++      * by a signal. */
++     while (ret < (long)bufsize)
++     {
++      wlen = vim_write(fd, buf + ret, bufsize - ret);
++      if (wlen < 0)
++      {
++          if (errno != EINTR)
++              break;
++      }
++      else
++          ret += wlen;
++     }
++     return ret;
++ }
++ #endif
+*** ../vim-7.3.082/src/proto/fileio.pro        2010-08-15 21:57:28.000000000 +0200
+--- src/proto/fileio.pro       2010-12-17 15:01:26.000000000 +0100
+***************
+*** 54,57 ****
+--- 54,59 ----
+  int match_file_pat __ARGS((char_u *pattern, regprog_T *prog, char_u *fname, char_u *sfname, char_u *tail, int allow_dirs));
+  int match_file_list __ARGS((char_u *list, char_u *sfname, char_u *ffname));
+  char_u *file_pat_to_reg_pat __ARGS((char_u *pat, char_u *pat_end, char *allow_dirs, int no_bslash));
++ long read_eintr __ARGS((int fd, void *buf, size_t bufsize));
++ long write_eintr __ARGS((int fd, void *buf, size_t bufsize));
+  /* vim: set ft=c : */
+*** ../vim-7.3.082/src/memfile.c       2010-08-15 21:57:25.000000000 +0200
+--- src/memfile.c      2010-12-17 16:02:54.000000000 +0100
+***************
+*** 1049,1055 ****
+       PERROR(_("E294: Seek error in swap file read"));
+       return FAIL;
+      }
+!     if ((unsigned)vim_read(mfp->mf_fd, hp->bh_data, size) != size)
+      {
+       PERROR(_("E295: Read error in swap file"));
+       return FAIL;
+--- 1049,1055 ----
+       PERROR(_("E294: Seek error in swap file read"));
+       return FAIL;
+      }
+!     if ((unsigned)read_eintr(mfp->mf_fd, hp->bh_data, size) != size)
+      {
+       PERROR(_("E295: Read error in swap file"));
+       return FAIL;
+***************
+*** 1168,1174 ****
+      }
+  #endif
+  
+!     if ((unsigned)vim_write(mfp->mf_fd, data, size) != size)
+       result = FAIL;
+  
+  #ifdef FEAT_CRYPT
+--- 1168,1174 ----
+      }
+  #endif
+  
+!     if ((unsigned)write_eintr(mfp->mf_fd, data, size) != size)
+       result = FAIL;
+  
+  #ifdef FEAT_CRYPT
+*** ../vim-7.3.082/src/memline.c       2010-12-08 13:16:58.000000000 +0100
+--- src/memline.c      2010-12-17 15:46:49.000000000 +0100
+***************
+*** 2062,2068 ****
+      fd = mch_open((char *)fname, O_RDONLY | O_EXTRA, 0);
+      if (fd >= 0)
+      {
+!      if (read(fd, (char *)&b0, sizeof(b0)) == sizeof(b0))
+       {
+           if (STRNCMP(b0.b0_version, "VIM 3.0", 7) == 0)
+           {
+--- 2062,2068 ----
+      fd = mch_open((char *)fname, O_RDONLY | O_EXTRA, 0);
+      if (fd >= 0)
+      {
+!      if (read_eintr(fd, &b0, sizeof(b0)) == sizeof(b0))
+       {
+           if (STRNCMP(b0.b0_version, "VIM 3.0", 7) == 0)
+           {
+***************
+*** 4392,4398 ****
+               fd = mch_open((char *)fname, O_RDONLY | O_EXTRA, 0);
+               if (fd >= 0)
+               {
+!                  if (read(fd, (char *)&b0, sizeof(b0)) == sizeof(b0))
+                   {
+                       /*
+                        * If the swapfile has the same directory as the
+--- 4392,4398 ----
+               fd = mch_open((char *)fname, O_RDONLY | O_EXTRA, 0);
+               if (fd >= 0)
+               {
+!                  if (read_eintr(fd, &b0, sizeof(b0)) == sizeof(b0))
+                   {
+                       /*
+                        * If the swapfile has the same directory as the
+*** ../vim-7.3.082/src/os_unix.c       2010-10-20 19:17:43.000000000 +0200
+--- src/os_unix.c      2010-12-17 16:17:43.000000000 +0100
+***************
+*** 4454,4460 ****
+                   ++noread_cnt;
+                   while (RealWaitForChar(fromshell_fd, 10L, NULL))
+                   {
+!                      len = read(fromshell_fd, (char *)buffer
+  # ifdef FEAT_MBYTE
+                               + buffer_off, (size_t)(BUFLEN - buffer_off)
+  # else
+--- 4454,4460 ----
+                   ++noread_cnt;
+                   while (RealWaitForChar(fromshell_fd, 10L, NULL))
+                   {
+!                      len = read_eintr(fromshell_fd, buffer
+  # ifdef FEAT_MBYTE
+                               + buffer_off, (size_t)(BUFLEN - buffer_off)
+  # else
+*** ../vim-7.3.082/src/undo.c  2010-11-03 19:32:36.000000000 +0100
+--- src/undo.c 2010-12-17 15:39:24.000000000 +0100
+***************
+*** 1386,1392 ****
+               char_u  mbuf[UF_START_MAGIC_LEN];
+               int     len;
+  
+!              len = vim_read(fd, mbuf, UF_START_MAGIC_LEN);
+               close(fd);
+               if (len < UF_START_MAGIC_LEN
+                     || memcmp(mbuf, UF_START_MAGIC, UF_START_MAGIC_LEN) != 0)
+--- 1386,1392 ----
+               char_u  mbuf[UF_START_MAGIC_LEN];
+               int     len;
+  
+!              len = read_eintr(fd, mbuf, UF_START_MAGIC_LEN);
+               close(fd);
+               if (len < UF_START_MAGIC_LEN
+                     || memcmp(mbuf, UF_START_MAGIC, UF_START_MAGIC_LEN) != 0)
+*** ../vim-7.3.082/src/vim.h   2010-12-02 16:01:23.000000000 +0100
+--- src/vim.h  2010-12-17 14:55:04.000000000 +0100
+***************
+*** 1642,1647 ****
+--- 1642,1652 ----
+  # define USE_INPUT_BUF
+  #endif
+  
++ #ifndef EINTR
++ # define read_eintr(fd, buf, count) vim_read((fd), (buf), (count))
++ # define write_eintr(fd, buf, count) vim_write((fd), (buf), (count))
++ #endif
++ 
+  #ifdef MSWIN
+  /* On MS-Windows the third argument isn't size_t.  This matters for Win64,
+   * where sizeof(size_t)==8, not 4 */
+*** ../vim-7.3.082/src/version.c       2010-12-17 12:19:14.000000000 +0100
+--- src/version.c      2010-12-17 16:10:58.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     83,
+  /**/
+
+-- 
+How To Keep A Healthy Level Of Insanity:
+9. As often as possible, skip rather than walk.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.084.patch0 b/vim/patches/vim-7.3.084.patch0
new file mode 100644 (file)
index 0000000..a46892e
--- /dev/null
@@ -0,0 +1,123 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.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.3.084
+Problem:    When splitting the window, the new one scrolls with the cursor at
+           the top.
+Solution:   Compute w_fraction before setting the new height.
+Files:     src/window.c
+
+
+*** ../vim-7.3.083/src/window.c        2010-09-21 16:56:29.000000000 +0200
+--- src/window.c       2010-12-17 17:09:51.000000000 +0100
+***************
+*** 70,76 ****
+  #endif /* FEAT_WINDOWS */
+  
+  static win_T *win_alloc __ARGS((win_T *after, int hidden));
+! static void win_new_height __ARGS((win_T *, int));
+  
+  #define URL_SLASH    1               /* path_is_url() has found "://" */
+  #define URL_BACKSLASH        2               /* path_is_url() has found ":\\" */
+--- 70,77 ----
+  #endif /* FEAT_WINDOWS */
+  
+  static win_T *win_alloc __ARGS((win_T *after, int hidden));
+! static void set_fraction __ARGS((win_T *wp));
+! static void win_new_height __ARGS((win_T *wp, int height));
+  
+  #define URL_SLASH    1               /* path_is_url() has found "://" */
+  #define URL_BACKSLASH        2               /* path_is_url() has found ":\\" */
+***************
+*** 983,992 ****
+--- 984,999 ----
+      else
+       frame_append(curfrp, frp);
+  
++     /* Set w_fraction now so that the cursor keeps the same relative
++      * vertical position. */
++     set_fraction(oldwin);
++     wp->w_fraction = oldwin->w_fraction;
++ 
+  #ifdef FEAT_VERTSPLIT
+      if (flags & WSP_VERT)
+      {
+       wp->w_p_scr = curwin->w_p_scr;
++ 
+       if (need_status)
+       {
+           win_new_height(oldwin, oldwin->w_height - 1);
+***************
+*** 5453,5458 ****
+--- 5460,5478 ----
+  
+  #endif /* FEAT_WINDOWS */
+  
++ #define FRACTION_MULT        16384L
++ 
++ /*
++  * Set wp->w_fraction for the current w_wrow and w_height.
++  */
++     static void
++ set_fraction(wp)
++     win_T    *wp;
++ {
++     wp->w_fraction = ((long)wp->w_wrow * FRACTION_MULT
++                                  + FRACTION_MULT / 2) / (long)wp->w_height;
++ }
++ 
+  /*
+   * Set the height of a window.
+   * This takes care of the things inside the window, not what happens to the
+***************
+*** 5465,5471 ****
+  {
+      linenr_T lnum;
+      int              sline, line_size;
+- #define FRACTION_MULT        16384L
+  
+      /* Don't want a negative height.  Happens when splitting a tiny window.
+       * Will equalize heights soon to fix it. */
+--- 5485,5490 ----
+***************
+*** 5475,5482 ****
+       return;     /* nothing to do */
+  
+      if (wp->w_wrow != wp->w_prev_fraction_row && wp->w_height > 0)
+!      wp->w_fraction = ((long)wp->w_wrow * FRACTION_MULT
+!                                  + FRACTION_MULT / 2) / (long)wp->w_height;
+  
+      wp->w_height = height;
+      wp->w_skipcol = 0;
+--- 5494,5500 ----
+       return;     /* nothing to do */
+  
+      if (wp->w_wrow != wp->w_prev_fraction_row && wp->w_height > 0)
+!      set_fraction(wp);
+  
+      wp->w_height = height;
+      wp->w_skipcol = 0;
+*** ../vim-7.3.083/src/version.c       2010-12-17 16:27:10.000000000 +0100
+--- src/version.c      2010-12-17 17:14:19.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     84,
+  /**/
+
+-- 
+How To Keep A Healthy Level Of Insanity:
+12. Sing along at the opera.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.085.patch0 b/vim/patches/vim-7.3.085.patch0
new file mode 100644 (file)
index 0000000..15fb87f
--- /dev/null
@@ -0,0 +1,313 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.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.3.085 (after 7.3.083)
+Problem:    Inconsistency with preproc symbols.  void * computation.
+Solution:   Include vimio.h from vim.h.  Add type cast.
+Files:      src/eval.c, src/ex_cmds.c, src/ex_cmds2.c, src/fileio.c,
+            src/if_cscope.c, src/if_sniff.c, src/main.c, src/memfile.c,
+            src/memline.c, src/netbeans.c, src/os_msdos.c, src/os_mswin.c,
+            src/os_win16.c, src/os_win32.c, src/spell.c, src/tag.c,
+            src/undo.c, src/vim.h
+
+
+*** ../vim-7.3.084/src/eval.c  2010-12-02 21:44:35.000000000 +0100
+--- src/eval.c 2010-12-17 17:45:37.000000000 +0100
+***************
+*** 10,18 ****
+  /*
+   * eval.c: Expression evaluation.
+   */
+- #if defined(MSDOS) || defined(WIN16) || defined(WIN32) || defined(_WIN64)
+- # include "vimio.h"  /* for mch_open(), must be before vim.h */
+- #endif
+  
+  #include "vim.h"
+  
+--- 10,15 ----
+*** ../vim-7.3.084/src/ex_cmds.c       2010-11-24 17:59:27.000000000 +0100
+--- src/ex_cmds.c      2010-12-17 17:46:09.000000000 +0100
+***************
+*** 11,20 ****
+   * ex_cmds.c: some functions for command line commands
+   */
+  
+- #if defined(MSDOS) || defined(WIN16) || defined(WIN32) || defined(_WIN64)
+- # include "vimio.h"  /* for mch_open(), must be before vim.h */
+- #endif
+- 
+  #include "vim.h"
+  #include "version.h"
+  
+--- 11,16 ----
+*** ../vim-7.3.084/src/ex_cmds2.c      2010-09-21 16:56:29.000000000 +0200
+--- src/ex_cmds2.c     2010-12-17 17:46:26.000000000 +0100
+***************
+*** 11,20 ****
+   * ex_cmds2.c: some more functions for command line commands
+   */
+  
+- #if defined(MSDOS) || defined(WIN16) || defined(WIN32) || defined(_WIN64)
+- # include "vimio.h"  /* for mch_open(), must be before vim.h */
+- #endif
+- 
+  #include "vim.h"
+  #include "version.h"
+  
+--- 11,16 ----
+*** ../vim-7.3.084/src/fileio.c        2010-12-17 16:27:09.000000000 +0100
+--- src/fileio.c       2010-12-17 17:52:42.000000000 +0100
+***************
+*** 11,24 ****
+   * fileio.c: read from and write to a file
+   */
+  
+- #if defined(MSDOS) || defined(WIN16) || defined(WIN32) || defined(_WIN64)
+- # include "vimio.h"  /* for lseek(), must be before vim.h */
+- #endif
+- 
+- #if defined __EMX__
+- # include "vimio.h"  /* for mktemp(), CJW 1997-12-03 */
+- #endif
+- 
+  #include "vim.h"
+  
+  #if defined(__TANDEM) || defined(__MINT__)
+--- 11,16 ----
+***************
+*** 10336,10342 ****
+       * by a signal. */
+      while (ret < (long)bufsize)
+      {
+!      wlen = vim_write(fd, buf + ret, bufsize - ret);
+       if (wlen < 0)
+       {
+           if (errno != EINTR)
+--- 10328,10334 ----
+       * by a signal. */
+      while (ret < (long)bufsize)
+      {
+!      wlen = vim_write(fd, (char *)buf + ret, bufsize - ret);
+       if (wlen < 0)
+       {
+           if (errno != EINTR)
+*** ../vim-7.3.084/src/if_cscope.c     2010-09-21 16:56:29.000000000 +0200
+--- src/if_cscope.c    2010-12-17 17:47:02.000000000 +0100
+***************
+*** 20,28 ****
+  #include <sys/stat.h>
+  #if defined(UNIX)
+  # include <sys/wait.h>
+- #else
+-     /* not UNIX, must be WIN32 */
+- # include "vimio.h"
+  #endif
+  #include "if_cscope.h"
+  
+--- 20,25 ----
+*** ../vim-7.3.084/src/if_sniff.c      2010-08-15 21:57:25.000000000 +0200
+--- src/if_sniff.c     2010-12-17 17:47:20.000000000 +0100
+***************
+*** 9,15 ****
+  
+  #ifdef WIN32
+  # include <stdio.h>
+- # include "vimio.h"
+  # include <process.h>
+  # include <string.h>
+  # include <assert.h>
+--- 9,14 ----
+*** ../vim-7.3.084/src/main.c  2010-11-16 16:25:46.000000000 +0100
+--- src/main.c 2010-12-17 17:47:41.000000000 +0100
+***************
+*** 7,16 ****
+   * See README.txt for an overview of the Vim source code.
+   */
+  
+- #if defined(MSDOS) || defined(WIN16) || defined(WIN32) || defined(_WIN64)
+- # include "vimio.h"          /* for close() and dup() */
+- #endif
+- 
+  #define EXTERN
+  #include "vim.h"
+  
+--- 7,12 ----
+*** ../vim-7.3.084/src/memfile.c       2010-12-17 16:27:10.000000000 +0100
+--- src/memfile.c      2010-12-17 17:47:54.000000000 +0100
+***************
+*** 32,41 ****
+   * file is opened.
+   */
+  
+- #if defined(MSDOS) || defined(WIN16) || defined(WIN32) || defined(_WIN64)
+- # include "vimio.h"  /* for lseek(), must be before vim.h */
+- #endif
+- 
+  #include "vim.h"
+  
+  /*
+--- 32,37 ----
+*** ../vim-7.3.084/src/memline.c       2010-12-17 16:27:10.000000000 +0100
+--- src/memline.c      2010-12-17 17:48:06.000000000 +0100
+***************
+*** 42,51 ****
+   *  mf_get().
+   */
+  
+- #if defined(MSDOS) || defined(WIN16) || defined(WIN32) || defined(_WIN64)
+- # include "vimio.h"  /* for mch_open(), must be before vim.h */
+- #endif
+- 
+  #include "vim.h"
+  
+  #ifndef UNIX         /* it's in os_unix.h for Unix */
+--- 42,47 ----
+*** ../vim-7.3.084/src/netbeans.c      2010-12-17 12:19:14.000000000 +0100
+--- src/netbeans.c     2010-12-17 17:48:19.000000000 +0100
+***************
+*** 16,25 ****
+   * See ":help netbeans-protocol" for explanation.
+   */
+  
+- #if defined(MSDOS) || defined(WIN16) || defined(WIN32) || defined(_WIN64)
+- # include "vimio.h"  /* for mch_open(), must be before vim.h */
+- #endif
+- 
+  #include "vim.h"
+  
+  #if defined(FEAT_NETBEANS_INTG) || defined(PROTO)
+--- 16,21 ----
+*** ../vim-7.3.084/src/os_msdos.c      2010-08-15 21:57:25.000000000 +0200
+--- src/os_msdos.c     2010-12-17 17:48:40.000000000 +0100
+***************
+*** 21,27 ****
+   * Some functions are also used for Win16 (MS-Windows 3.1).
+   */
+  
+- #include "vimio.h"
+  #include "vim.h"
+  
+  #include <conio.h>
+--- 21,26 ----
+*** ../vim-7.3.084/src/os_mswin.c      2010-10-23 14:02:48.000000000 +0200
+--- src/os_mswin.c     2010-12-17 17:48:51.000000000 +0100
+***************
+*** 22,28 ****
+  # endif
+  #endif
+  
+- #include "vimio.h"
+  #include "vim.h"
+  
+  #ifdef WIN16
+--- 22,27 ----
+*** ../vim-7.3.084/src/os_win16.c      2010-08-15 21:57:32.000000000 +0200
+--- src/os_win16.c     2010-12-17 17:49:02.000000000 +0100
+***************
+*** 20,26 ****
+  # pragma warn -obs
+  #endif
+  
+- #include "vimio.h"
+  #include "vim.h"
+  
+  #include <dos.h>
+--- 20,25 ----
+*** ../vim-7.3.084/src/os_win32.c      2010-11-24 12:35:14.000000000 +0100
+--- src/os_win32.c     2010-12-17 17:49:11.000000000 +0100
+***************
+*** 20,26 ****
+   * Roger Knobbe <rogerk@wonderware.com> did the initial port of Vim 3.0.
+   */
+  
+- #include "vimio.h"
+  #include "vim.h"
+  
+  #ifdef FEAT_MZSCHEME
+--- 20,25 ----
+*** ../vim-7.3.084/src/spell.c 2010-12-08 17:09:27.000000000 +0100
+--- src/spell.c        2010-12-17 17:49:24.000000000 +0100
+***************
+*** 303,312 ****
+   *                       few bytes as possible, see offset2bytes())
+   */
+  
+- #if defined(MSDOS) || defined(WIN16) || defined(WIN32) || defined(_WIN64)
+- # include "vimio.h"  /* for lseek(), must be before vim.h */
+- #endif
+- 
+  #include "vim.h"
+  
+  #if defined(FEAT_SPELL) || defined(PROTO)
+--- 303,308 ----
+*** ../vim-7.3.084/src/tag.c   2010-09-21 16:56:29.000000000 +0200
+--- src/tag.c  2010-12-17 17:49:35.000000000 +0100
+***************
+*** 11,20 ****
+   * Code to handle tags and the tag stack
+   */
+  
+- #if defined(MSDOS) || defined(WIN16) || defined(WIN32) || defined(_WIN64)
+- # include "vimio.h"  /* for lseek(), must be before vim.h */
+- #endif
+- 
+  #include "vim.h"
+  
+  /*
+--- 11,16 ----
+*** ../vim-7.3.084/src/undo.c  2010-12-17 16:27:10.000000000 +0100
+--- src/undo.c 2010-12-17 17:49:59.000000000 +0100
+***************
+*** 81,90 ****
+  #define UH_MAGIC 0x18dade    /* value for uh_magic when in use */
+  #define UE_MAGIC 0xabc123    /* value for ue_magic when in use */
+  
+- #if defined(MSDOS) || defined(WIN16) || defined(WIN32) || defined(_WIN64)
+- # include "vimio.h"  /* for vim_read(), must be before vim.h */
+- #endif
+- 
+  #include "vim.h"
+  
+  static void u_unch_branch __ARGS((u_header_T *uhp));
+--- 81,86 ----
+*** ../vim-7.3.084/src/vim.h   2010-12-17 16:27:10.000000000 +0100
+--- src/vim.h  2010-12-17 17:51:43.000000000 +0100
+***************
+*** 27,32 ****
+--- 27,37 ----
+  # endif
+  #endif
+  
++ #if defined(MSDOS) || defined(WIN16) || defined(WIN32) || defined(_WIN64) \
++      || defined(__EMX__)
++ # include "vimio.h"
++ #endif
++ 
+  /* ============ the header file puzzle (ca. 50-100 pieces) ========= */
+  
+  #ifdef HAVE_CONFIG_H /* GNU autoconf (or something else) was here */
+*** ../vim-7.3.084/src/version.c       2010-12-17 17:35:05.000000000 +0100
+--- src/version.c      2010-12-17 17:55:39.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     85,
+  /**/
+
+-- 
+How To Keep A Healthy Level Of Insanity:
+14. Put mosquito netting around your work area. Play a tape of jungle
+    sounds all 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/vim/patches/vim-7.3.086.patch0 b/vim/patches/vim-7.3.086.patch0
new file mode 100644 (file)
index 0000000..cf494e0
--- /dev/null
@@ -0,0 +1,138 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.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.3.086
+Problem:    When using a mapping with an expression and there was no count,
+           v:count has the value of the previous command. (ZyX)
+Solution:   Also set v:count and v:count1 before getting the character that
+           could be a command or a count.
+Files:     src/normal.c
+
+
+*** ../vim-7.3.085/src/normal.c        2010-10-13 18:06:42.000000000 +0200
+--- src/normal.c       2010-12-17 18:46:56.000000000 +0100
+***************
+*** 25,30 ****
+--- 25,33 ----
+  static int   restart_VIsual_select = 0;
+  #endif
+  
++ #ifdef FEAT_EVAL
++ static void  set_vcount_ca __ARGS((cmdarg_T *cap, int *set_prevcount));
++ #endif
+  static int
+  # ifdef __BORLANDC__
+  _RTLENTRYF
+***************
+*** 648,653 ****
+--- 651,664 ----
+      dont_scroll = FALSE;     /* allow scrolling here */
+  #endif
+  
++ #ifdef FEAT_EVAL
++     /* Set v:count here, when called from main() and not a stuffed
++      * command, so that v:count can be used in an expression mapping
++      * when there is no count. */
++     if (toplevel && stuff_empty())
++      set_vcount_ca(&ca, &set_prevcount);
++ #endif
++ 
+      /*
+       * Get the command character from the user.
+       */
+***************
+*** 725,739 ****
+            * command, so that v:count can be used in an expression mapping
+            * right after the count. */
+           if (toplevel && stuff_empty())
+!          {
+!              long count = ca.count0;
+! 
+!              /* multiply with ca.opcount the same way as below */
+!              if (ca.opcount != 0)
+!                  count = ca.opcount * (count == 0 ? 1 : count);
+!              set_vcount(count, count == 0 ? 1 : count, set_prevcount);
+!              set_prevcount = FALSE;  /* only set v:prevcount once */
+!          }
+  #endif
+           if (ctrl_w)
+           {
+--- 736,742 ----
+            * command, so that v:count can be used in an expression mapping
+            * right after the count. */
+           if (toplevel && stuff_empty())
+!              set_vcount_ca(&ca, &set_prevcount);
+  #endif
+           if (ctrl_w)
+           {
+***************
+*** 1386,1391 ****
+--- 1389,1414 ----
+      opcount = ca.opcount;
+  }
+  
++ #ifdef FEAT_EVAL
++ /*
++  * Set v:count and v:count1 according to "cap".
++  * Set v:prevcount only when "set_prevcount" is TRUE.
++  */
++     static void
++ set_vcount_ca(cap, set_prevcount)
++     cmdarg_T *cap;
++     int              *set_prevcount;
++ {
++     long count = cap->count0;
++ 
++     /* multiply with cap->opcount the same way as above */
++     if (cap->opcount != 0)
++      count = cap->opcount * (count == 0 ? 1 : count);
++     set_vcount(count, count == 0 ? 1 : count, *set_prevcount);
++     *set_prevcount = FALSE;  /* only set v:prevcount once */
++ }
++ #endif
++ 
+  /*
+   * Handle an operator after visual mode or when the movement is finished
+   */
+***************
+*** 8529,8535 ****
+      else
+       curwin->w_curswant = 0;
+      /* keep curswant at the column where we wanted to go, not where
+!        we ended; differs if line is too short */
+      curwin->w_set_curswant = FALSE;
+  }
+  
+--- 8552,8558 ----
+      else
+       curwin->w_curswant = 0;
+      /* keep curswant at the column where we wanted to go, not where
+!      * we ended; differs if line is too short */
+      curwin->w_set_curswant = FALSE;
+  }
+  
+*** ../vim-7.3.085/src/version.c       2010-12-17 18:06:00.000000000 +0100
+--- src/version.c      2010-12-17 18:51:20.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     86,
+  /**/
+
+-- 
+How To Keep A Healthy Level Of Insanity:
+15. Five days in advance, tell your friends you can't attend their
+    party because you're not in the mood.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.087.patch0 b/vim/patches/vim-7.3.087.patch0
new file mode 100644 (file)
index 0000000..e0497db
--- /dev/null
@@ -0,0 +1,152 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.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.3.087
+Problem:    EINTR is not always defined.
+Solution:   Include errno.h in vim.h.
+Files:     src/if_cscope.c, src/if_tcl.c, src/integration.c, src/memline.c,
+           src/os_mswin.c, src/os_win16.c, src/os_win32.c, src/vim.h,
+           src/workshop.c
+
+
+*** ../vim-7.3.086/src/if_cscope.c     2010-12-17 18:06:00.000000000 +0100
+--- src/if_cscope.c    2010-12-17 20:06:01.000000000 +0100
+***************
+*** 13,20 ****
+  
+  #if defined(FEAT_CSCOPE) || defined(PROTO)
+  
+- #include <string.h>
+- #include <errno.h>
+  #include <assert.h>
+  #include <sys/types.h>
+  #include <sys/stat.h>
+--- 13,18 ----
+*** ../vim-7.3.086/src/if_tcl.c        2010-08-15 21:57:27.000000000 +0200
+--- src/if_tcl.c       2010-12-17 20:06:56.000000000 +0100
+***************
+*** 74,80 ****
+  #endif
+  
+  #include <tcl.h>
+- #include <errno.h>
+  #include <string.h>
+  
+  typedef struct
+--- 74,79 ----
+*** ../vim-7.3.086/src/integration.c   2010-08-15 21:57:29.000000000 +0200
+--- src/integration.c  2010-12-17 20:07:12.000000000 +0100
+***************
+*** 33,39 ****
+  #include <sys/un.h>
+  #endif
+  
+- #include <errno.h>
+  #include <sys/types.h>
+  #include <sys/socket.h>
+  #include <sys/param.h>
+--- 33,38 ----
+*** ../vim-7.3.086/src/memline.c       2010-12-17 18:06:00.000000000 +0100
+--- src/memline.c      2010-12-17 20:07:31.000000000 +0100
+***************
+*** 52,61 ****
+  # include <proto/dos.h>          /* for Open() and Close() */
+  #endif
+  
+- #ifdef HAVE_ERRNO_H
+- # include <errno.h>
+- #endif
+- 
+  typedef struct block0                ZERO_BL;    /* contents of the first block */
+  typedef struct pointer_block PTR_BL;     /* contents of a pointer block */
+  typedef struct data_block    DATA_BL;    /* contents of a data block */
+--- 52,57 ----
+*** ../vim-7.3.086/src/os_mswin.c      2010-12-17 18:06:00.000000000 +0100
+--- src/os_mswin.c     2010-12-17 20:08:14.000000000 +0100
+***************
+*** 30,36 ****
+  # include <string.h>
+  #endif
+  #include <sys/types.h>
+- #include <errno.h>
+  #include <signal.h>
+  #include <limits.h>
+  #include <process.h>
+--- 30,35 ----
+*** ../vim-7.3.086/src/os_win16.c      2010-12-17 18:06:00.000000000 +0100
+--- src/os_win16.c     2010-12-17 20:08:53.000000000 +0100
+***************
+*** 25,31 ****
+  #include <dos.h>
+  #include <string.h>
+  #include <sys/types.h>
+- #include <errno.h>
+  #include <signal.h>
+  #include <limits.h>
+  #include <process.h>
+--- 25,30 ----
+*** ../vim-7.3.086/src/os_win32.c      2010-12-17 18:06:00.000000000 +0100
+--- src/os_win32.c     2010-12-17 20:09:18.000000000 +0100
+***************
+*** 27,33 ****
+  #endif
+  
+  #include <sys/types.h>
+- #include <errno.h>
+  #include <signal.h>
+  #include <limits.h>
+  #include <process.h>
+--- 27,32 ----
+*** ../vim-7.3.086/src/vim.h   2010-12-17 18:06:00.000000000 +0100
+--- src/vim.h  2010-12-17 20:09:56.000000000 +0100
+***************
+*** 480,485 ****
+--- 480,490 ----
+  # include <sys/stat.h>
+  #endif
+  
++ #if defined(HAVE_ERRNO_H) || defined(DJGPP) || defined(WIN16) \
++      || defined(WIN32) || defined(_WIN64) || defined(__EMX__)
++ # include <errno.h>
++ #endif
++ 
+  /*
+   * Allow other (non-unix) systems to configure themselves now
+   * These are also in os_unix.h, because osdef.sh needs them there.
+*** ../vim-7.3.086/src/workshop.c      2010-08-15 21:57:26.000000000 +0200
+--- src/workshop.c     2010-12-17 20:09:31.000000000 +0100
+***************
+*** 16,22 ****
+  #include <sys/types.h>
+  #include <netdb.h>
+  #include <netinet/in.h>
+- #include <errno.h>
+  #include <sys/socket.h>
+  #ifdef HAVE_LIBGEN_H
+  # include <libgen.h>
+--- 16,21 ----
+*** ../vim-7.3.086/src/version.c       2010-12-17 18:52:56.000000000 +0100
+--- src/version.c      2010-12-17 20:14:49.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     87,
+  /**/
+
+-- 
+How To Keep A Healthy Level Of Insanity:
+17. When the money comes out the ATM, scream "I won!, I won! 3rd
+    time this week!!!!!"
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.088.patch0 b/vim/patches/vim-7.3.088.patch0
new file mode 100644 (file)
index 0000000..98acc7c
--- /dev/null
@@ -0,0 +1,152 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.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.3.088
+Problem:    Ruby can't load Gems sometimes, may cause a crash.
+Solution:   Undefine off_t.  Use ruby_process_options(). (Yasuhiro Matsumoto)
+Files:     src/if_ruby.c
+
+
+*** ../vim-7.3.087/src/if_ruby.c       2010-12-08 13:11:15.000000000 +0100
+--- src/if_ruby.c      2010-12-24 12:18:31.000000000 +0100
+***************
+*** 90,95 ****
+--- 90,96 ----
+  # include <ruby/encoding.h>
+  #endif
+  
++ #undef off_t /* ruby defines off_t as _int64, Mingw uses long */
+  #undef EXTERN
+  #undef _
+  
+***************
+*** 229,238 ****
+  # define rb_enc_find_index           dll_rb_enc_find_index
+  # define rb_enc_find                 dll_rb_enc_find
+  # define rb_enc_str_new                      dll_rb_enc_str_new
+- # define rb_intern2                  dll_rb_intern2
+- # define rb_const_remove             dll_rb_const_remove
+  # define rb_sprintf                  dll_rb_sprintf
+  # define ruby_init_stack             dll_ruby_init_stack
+  #endif
+  
+  /*
+--- 230,239 ----
+  # define rb_enc_find_index           dll_rb_enc_find_index
+  # define rb_enc_find                 dll_rb_enc_find
+  # define rb_enc_str_new                      dll_rb_enc_str_new
+  # define rb_sprintf                  dll_rb_sprintf
++ # define rb_require                  dll_rb_require
+  # define ruby_init_stack             dll_ruby_init_stack
++ # define ruby_process_options                dll_ruby_process_options
+  #endif
+  
+  /*
+***************
+*** 319,329 ****
+  static int (*dll_rb_enc_find_index) (const char*);
+  static rb_encoding* (*dll_rb_enc_find) (const char*);
+  static VALUE (*dll_rb_enc_str_new) (const char*, long, rb_encoding*);
+- static ID (*dll_rb_intern2) (const char*, long);
+- static void (*dll_Init_prelude) (void);
+- static VALUE (*dll_rb_const_remove) (VALUE, ID);
+  static VALUE (*dll_rb_sprintf) (const char*, ...);
+  static void (*ruby_init_stack)(VALUE*);
+  #endif
+  
+  #ifdef RUBY19_OR_LATER
+--- 320,329 ----
+  static int (*dll_rb_enc_find_index) (const char*);
+  static rb_encoding* (*dll_rb_enc_find) (const char*);
+  static VALUE (*dll_rb_enc_str_new) (const char*, long, rb_encoding*);
+  static VALUE (*dll_rb_sprintf) (const char*, ...);
++ static VALUE (*dll_rb_require) (const char*);
+  static void (*ruby_init_stack)(VALUE*);
++ static void* (*ruby_process_options)(int, char**);
+  #endif
+  
+  #ifdef RUBY19_OR_LATER
+***************
+*** 430,439 ****
+      {"rb_enc_find_index", (RUBY_PROC*)&dll_rb_enc_find_index},
+      {"rb_enc_find", (RUBY_PROC*)&dll_rb_enc_find},
+      {"rb_enc_str_new", (RUBY_PROC*)&dll_rb_enc_str_new},
+-     {"rb_intern2", (RUBY_PROC*)&dll_rb_intern2},
+-     {"rb_const_remove", (RUBY_PROC*)&dll_rb_const_remove},
+      {"rb_sprintf", (RUBY_PROC*)&dll_rb_sprintf},
+      {"ruby_init_stack", (RUBY_PROC*)&dll_ruby_init_stack},
+  #endif
+      {"", NULL},
+  };
+--- 430,439 ----
+      {"rb_enc_find_index", (RUBY_PROC*)&dll_rb_enc_find_index},
+      {"rb_enc_find", (RUBY_PROC*)&dll_rb_enc_find},
+      {"rb_enc_str_new", (RUBY_PROC*)&dll_rb_enc_str_new},
+      {"rb_sprintf", (RUBY_PROC*)&dll_rb_sprintf},
++     {"rb_require", (RUBY_PROC*)&dll_rb_require},
+      {"ruby_init_stack", (RUBY_PROC*)&dll_ruby_init_stack},
++     {"ruby_process_options", (RUBY_PROC*)&dll_ruby_process_options},
+  #endif
+      {"", NULL},
+  };
+***************
+*** 663,680 ****
+               ruby_init();
+           }
+  #ifdef RUBY19_OR_LATER
+           ruby_script("vim-ruby");
+! #endif
+           ruby_init_loadpath();
+-          ruby_io_init();
+- #ifdef RUBY19_OR_LATER
+-          rb_enc_find_index("encdb");
+- 
+-          /* This avoids the error "Encoding::ConverterNotFoundError: code
+-           * converter not found (UTF-16LE to ASCII-8BIT)". */
+-          rb_define_module("Gem");
+-          rb_const_remove(rb_cObject, rb_intern2("TMP_RUBY_PREFIX", 15));
+  #endif
+           ruby_vim_init();
+           ruby_initialized = 1;
+  #ifdef DYNAMIC_RUBY
+--- 663,678 ----
+               ruby_init();
+           }
+  #ifdef RUBY19_OR_LATER
++          {
++              int dummy_argc = 2;
++              char *dummy_argv[] = {"vim-ruby", "-e0"};
++              ruby_process_options(dummy_argc, dummy_argv);
++          }
+           ruby_script("vim-ruby");
+! #else
+           ruby_init_loadpath();
+  #endif
++          ruby_io_init();
+           ruby_vim_init();
+           ruby_initialized = 1;
+  #ifdef DYNAMIC_RUBY
+*** ../vim-7.3.087/src/version.c       2010-12-17 20:23:56.000000000 +0100
+--- src/version.c      2010-12-24 13:38:51.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     88,
+  /**/
+
+-- 
+It is hard to understand how a cemetery raised its burial
+cost and blamed it on the cost of living.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.089.patch0 b/vim/patches/vim-7.3.089.patch0
new file mode 100644 (file)
index 0000000..47b894a
--- /dev/null
@@ -0,0 +1,52 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.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.3.089
+Problem:    Compiler warning on 64 bit MS-Windows.
+Solution:   Add type cast. (Mike Williams)
+Files:     src/netbeans.c
+
+
+*** ../vim-7.3.088/src/netbeans.c      2010-12-17 18:06:00.000000000 +0100
+--- src/netbeans.c     2010-12-17 20:21:05.000000000 +0100
+***************
+*** 800,806 ****
+        *                  -> gui event loop or select loop
+        *                      -> netbeans_read()
+        */
+!      save((char_u *)DETACH_MSG, strlen(DETACH_MSG));
+       nb_close_socket();
+  
+       if (len < 0)
+--- 800,806 ----
+        *                  -> gui event loop or select loop
+        *                      -> netbeans_read()
+        */
+!      save((char_u *)DETACH_MSG, (int)strlen(DETACH_MSG));
+       nb_close_socket();
+  
+       if (len < 0)
+*** ../vim-7.3.088/src/version.c       2010-12-24 13:39:29.000000000 +0100
+--- src/version.c      2010-12-24 13:59:03.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     89,
+  /**/
+
+-- 
+The 50-50-90 rule: Anytime you have a 50-50 chance of getting
+something right, there's a 90% probability you'll get it wrong.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.090.patch0 b/vim/patches/vim-7.3.090.patch0
new file mode 100644 (file)
index 0000000..cf68d62
--- /dev/null
@@ -0,0 +1,68 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.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.3.090
+Problem:    Wrong help text for Cscope.
+Solution:   Adjust the help text for "t". (Dominique Pelle)
+Files:     src/if_cscope.c
+
+
+*** ../vim-7.3.089/src/if_cscope.c     2010-12-17 20:23:56.000000000 +0100
+--- src/if_cscope.c    2010-12-30 11:35:37.000000000 +0100
+***************
+*** 1346,1352 ****
+                      "       g: Find this definition\n"
+                      "       i: Find files #including this file\n"
+                      "       s: Find this C symbol\n"
+!                     "       t: Find assignments to\n"));
+  
+       cmdp++;
+      }
+--- 1346,1352 ----
+                      "       g: Find this definition\n"
+                      "       i: Find files #including this file\n"
+                      "       s: Find this C symbol\n"
+!                     "       t: Find this text string\n"));
+  
+       cmdp++;
+      }
+***************
+*** 1657,1663 ****
+  /*
+   * PRIVATE: cs_make_vim_style_matches
+   *
+!  * convert the cscope output into into a ctags style entry (as might be found
+   * in a ctags tags file).  there's one catch though: cscope doesn't tell you
+   * the type of the tag you are looking for.  for example, in Darren Hiebert's
+   * ctags (the one that comes with vim), #define's use a line number to find the
+--- 1657,1663 ----
+  /*
+   * PRIVATE: cs_make_vim_style_matches
+   *
+!  * convert the cscope output into a ctags style entry (as might be found
+   * in a ctags tags file).  there's one catch though: cscope doesn't tell you
+   * the type of the tag you are looking for.  for example, in Darren Hiebert's
+   * ctags (the one that comes with vim), #define's use a line number to find the
+*** ../vim-7.3.089/src/version.c       2010-12-24 14:00:09.000000000 +0100
+--- src/version.c      2010-12-30 11:36:33.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     90,
+  /**/
+
+-- 
+ERROR 047: Keyboard not found.  Press RETURN 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/vim/patches/vim-7.3.091.patch0 b/vim/patches/vim-7.3.091.patch0
new file mode 100644 (file)
index 0000000..f0aac0d
--- /dev/null
@@ -0,0 +1,321 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.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.3.091
+Problem:    "vim -w foo" writes special key codes for removed escape
+           sequences. (Josh Triplett)
+Solution:   Don't write K_IGNORE codes.
+Files:     src/getchar.c, src/misc1.c, src/term.c, src/vim.h
+
+
+*** ../vim-7.3.090/src/getchar.c       2010-10-27 17:39:00.000000000 +0200
+--- src/getchar.c      2010-12-30 12:16:36.000000000 +0100
+***************
+*** 1506,1514 ****
+      }
+  }
+  
+- #define KL_PART_KEY -1               /* keylen value for incomplete key-code */
+- #define KL_PART_MAP -2               /* keylen value for incomplete mapping */
+- 
+  /*
+   * Get the next input character.
+   * Can return a special key or a multi-byte character.
+--- 1506,1511 ----
+***************
+*** 2171,2177 ****
+                                       if (!timedout)
+                                       {
+                                           /* break at a partly match */
+!                                          keylen = KL_PART_MAP;
+                                           break;
+                                       }
+                                   }
+--- 2168,2174 ----
+                                       if (!timedout)
+                                       {
+                                           /* break at a partly match */
+!                                          keylen = KEYLEN_PART_MAP;
+                                           break;
+                                       }
+                                   }
+***************
+*** 2192,2198 ****
+  
+                       /* If no partly match found, use the longest full
+                        * match. */
+!                      if (keylen != KL_PART_MAP)
+                       {
+                           mp = mp_match;
+                           keylen = mp_match_len;
+--- 2189,2195 ----
+  
+                       /* If no partly match found, use the longest full
+                        * match. */
+!                      if (keylen != KEYLEN_PART_MAP)
+                       {
+                           mp = mp_match;
+                           keylen = mp_match_len;
+***************
+*** 2230,2236 ****
+                       }
+                       /* Need more chars for partly match. */
+                       if (mlen == typebuf.tb_len)
+!                          keylen = KL_PART_KEY;
+                       else if (max_mlen < mlen)
+                           /* no match, may have to check for termcode at
+                            * next character */
+--- 2227,2233 ----
+                       }
+                       /* Need more chars for partly match. */
+                       if (mlen == typebuf.tb_len)
+!                          keylen = KEYLEN_PART_KEY;
+                       else if (max_mlen < mlen)
+                           /* no match, may have to check for termcode at
+                            * next character */
+***************
+*** 2238,2244 ****
+                   }
+  
+                   if ((mp == NULL || max_mlen >= mp_match_len)
+!                                                   && keylen != KL_PART_MAP)
+                   {
+                       int     save_keylen = keylen;
+  
+--- 2235,2241 ----
+                   }
+  
+                   if ((mp == NULL || max_mlen >= mp_match_len)
+!                                               && keylen != KEYLEN_PART_MAP)
+                   {
+                       int     save_keylen = keylen;
+  
+***************
+*** 2264,2271 ****
+                           /* If no termcode matched but 'pastetoggle'
+                            * matched partially it's like an incomplete key
+                            * sequence. */
+!                          if (keylen == 0 && save_keylen == KL_PART_KEY)
+!                              keylen = KL_PART_KEY;
+  
+                           /*
+                            * When getting a partial match, but the last
+--- 2261,2268 ----
+                           /* If no termcode matched but 'pastetoggle'
+                            * matched partially it's like an incomplete key
+                            * sequence. */
+!                          if (keylen == 0 && save_keylen == KEYLEN_PART_KEY)
+!                              keylen = KEYLEN_PART_KEY;
+  
+                           /*
+                            * When getting a partial match, but the last
+***************
+*** 2302,2308 ****
+                                   continue;
+                               }
+                               if (*s == NUL)      /* need more characters */
+!                                  keylen = KL_PART_KEY;
+                           }
+                           if (keylen >= 0)
+  #endif
+--- 2299,2305 ----
+                                   continue;
+                               }
+                               if (*s == NUL)      /* need more characters */
+!                                  keylen = KEYLEN_PART_KEY;
+                           }
+                           if (keylen >= 0)
+  #endif
+***************
+*** 2339,2345 ****
+                       if (keylen > 0)     /* full matching terminal code */
+                       {
+  #if defined(FEAT_GUI) && defined(FEAT_MENU)
+!                          if (typebuf.tb_buf[typebuf.tb_off] == K_SPECIAL
+                                        && typebuf.tb_buf[typebuf.tb_off + 1]
+                                                                  == KS_MENU)
+                           {
+--- 2336,2343 ----
+                       if (keylen > 0)     /* full matching terminal code */
+                       {
+  #if defined(FEAT_GUI) && defined(FEAT_MENU)
+!                          if (typebuf.tb_len >= 2
+!                              && typebuf.tb_buf[typebuf.tb_off] == K_SPECIAL
+                                        && typebuf.tb_buf[typebuf.tb_off + 1]
+                                                                  == KS_MENU)
+                           {
+***************
+*** 2381,2387 ****
+                       /* Partial match: get some more characters.  When a
+                        * matching mapping was found use that one. */
+                       if (mp == NULL || keylen < 0)
+!                          keylen = KL_PART_KEY;
+                       else
+                           keylen = mp_match_len;
+                   }
+--- 2379,2385 ----
+                       /* Partial match: get some more characters.  When a
+                        * matching mapping was found use that one. */
+                       if (mp == NULL || keylen < 0)
+!                          keylen = KEYLEN_PART_KEY;
+                       else
+                           keylen = mp_match_len;
+                   }
+***************
+*** 2553,2559 ****
+  #endif
+                       && typebuf.tb_maplen == 0
+                       && (State & INSERT)
+!                      && (p_timeout || (keylen == KL_PART_KEY && p_ttimeout))
+                       && (c = inchar(typebuf.tb_buf + typebuf.tb_off
+                                                    + typebuf.tb_len, 3, 25L,
+                                                typebuf.tb_change_cnt)) == 0)
+--- 2551,2558 ----
+  #endif
+                       && typebuf.tb_maplen == 0
+                       && (State & INSERT)
+!                      && (p_timeout
+!                          || (keylen == KEYLEN_PART_KEY && p_ttimeout))
+                       && (c = inchar(typebuf.tb_buf + typebuf.tb_off
+                                                    + typebuf.tb_len, 3, 25L,
+                                                typebuf.tb_change_cnt)) == 0)
+***************
+*** 2783,2791 ****
+                           ? 0
+                           : ((typebuf.tb_len == 0
+                                   || !(p_timeout || (p_ttimeout
+!                                                 && keylen == KL_PART_KEY)))
+                                   ? -1L
+!                                  : ((keylen == KL_PART_KEY && p_ttm >= 0)
+                                           ? p_ttm
+                                           : p_tm)), typebuf.tb_change_cnt);
+  
+--- 2782,2790 ----
+                           ? 0
+                           : ((typebuf.tb_len == 0
+                                   || !(p_timeout || (p_ttimeout
+!                                             && keylen == KEYLEN_PART_KEY)))
+                                   ? -1L
+!                                  : ((keylen == KEYLEN_PART_KEY && p_ttm >= 0)
+                                           ? p_ttm
+                                           : p_tm)), typebuf.tb_change_cnt);
+  
+*** ../vim-7.3.090/src/misc1.c 2010-12-02 16:01:23.000000000 +0100
+--- src/misc1.c        2010-12-30 12:28:59.000000000 +0100
+***************
+*** 3114,3123 ****
+              && (!p_ttimeout || waited * 100L < (p_ttm < 0 ? p_tm : p_ttm)))
+           continue;
+  
+!      /* found a termcode: adjust length */
+!      if (n > 0)
+           len = n;
+!      if (len == 0)       /* nothing typed yet */
+           continue;
+  
+       /* Handle modifier and/or special key code. */
+--- 3114,3124 ----
+              && (!p_ttimeout || waited * 100L < (p_ttm < 0 ? p_tm : p_ttm)))
+           continue;
+  
+!      if (n == KEYLEN_REMOVED)  /* key code removed */
+!          continue;
+!      if (n > 0)              /* found a termcode: adjust length */
+           len = n;
+!      if (len == 0)           /* nothing typed yet */
+           continue;
+  
+       /* Handle modifier and/or special key code. */
+*** ../vim-7.3.090/src/term.c  2010-08-15 21:57:32.000000000 +0200
+--- src/term.c 2010-12-30 12:14:48.000000000 +0100
+***************
+*** 3828,3833 ****
+--- 3831,3837 ----
+   * Check from typebuf.tb_buf[typebuf.tb_off] to typebuf.tb_buf[typebuf.tb_off
+   * + max_offset].
+   * Return 0 for no match, -1 for partial match, > 0 for full match.
++  * Return KEYLEN_REMOVED when a key code was deleted.
+   * With a match, the match is removed, the replacement code is inserted in
+   * typebuf.tb_buf[] and the number of characters in typebuf.tb_buf[] is
+   * returned.
+***************
+*** 3845,3850 ****
+--- 3849,3855 ----
+      int              slen = 0;       /* init for GCC */
+      int              modslen;
+      int              len;
++     int              retval = 0;
+      int              offset;
+      char_u   key_name[2];
+      int              modifiers;
+***************
+*** 4940,4945 ****
+--- 4945,4957 ----
+  #endif
+               string[new_slen++] = key_name[1];
+       }
++      else if (new_slen == 0 && key_name[0] == KS_EXTRA
++                                                && key_name[1] == KE_IGNORE)
++      {
++          /* Do not put K_IGNORE into the buffer, do return KEYLEN_REMOVED
++           * to indicate what happened. */
++          retval = KEYLEN_REMOVED;
++      }
+       else
+       {
+           string[new_slen++] = K_SPECIAL;
+***************
+*** 4976,4982 ****
+                                                  (size_t)(buflen - offset));
+           mch_memmove(buf + offset, string, (size_t)new_slen);
+       }
+!      return (len + extra + offset);
+      }
+  
+      return 0;                            /* no match found */
+--- 4988,4994 ----
+                                                  (size_t)(buflen - offset));
+           mch_memmove(buf + offset, string, (size_t)new_slen);
+       }
+!      return retval == 0 ? (len + extra + offset) : retval;
+      }
+  
+      return 0;                            /* no match found */
+*** ../vim-7.3.090/src/vim.h   2010-12-17 20:23:56.000000000 +0100
+--- src/vim.h  2010-12-30 12:06:45.000000000 +0100
+***************
+*** 2211,2214 ****
+--- 2211,2218 ----
+  #define MSCR_LEFT    -1
+  #define MSCR_RIGHT   -2
+  
++ #define KEYLEN_PART_KEY -1   /* keylen value for incomplete key-code */
++ #define KEYLEN_PART_MAP -2   /* keylen value for incomplete mapping */
++ #define KEYLEN_REMOVED  9999 /* keylen value for removed sequence */
++ 
+  #endif /* VIM__H */
+*** ../vim-7.3.090/src/version.c       2010-12-30 11:41:05.000000000 +0100
+--- src/version.c      2010-12-30 12:24:56.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     91,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+56. You leave the modem speaker on after connecting because you think it
+    sounds like the ocean wind...the perfect soundtrack for "surfing the net".
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.092.patch0 b/vim/patches/vim-7.3.092.patch0
new file mode 100644 (file)
index 0000000..d100b00
--- /dev/null
@@ -0,0 +1,62 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.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.3.092
+Problem:    Resizing the window when exiting.
+Solution:   Don't resize when exiting.
+Files:     src/term.c
+
+
+*** ../vim-7.3.091/src/term.c  2010-12-30 12:30:26.000000000 +0100
+--- src/term.c 2010-12-30 12:14:48.000000000 +0100
+***************
+*** 3053,3062 ****
+      int              old_Rows = Rows;
+      int              old_Columns = Columns;
+  
+!     (void)ui_get_shellsize();
+!     check_shellsize();
+!     if (old_Rows != Rows || old_Columns != Columns)
+!      shell_resized();
+  }
+  
+  /*
+--- 3053,3065 ----
+      int              old_Rows = Rows;
+      int              old_Columns = Columns;
+  
+!     if (!exiting)
+!     {
+!      (void)ui_get_shellsize();
+!      check_shellsize();
+!      if (old_Rows != Rows || old_Columns != Columns)
+!          shell_resized();
+!     }
+  }
+  
+  /*
+*** ../vim-7.3.091/src/version.c       2010-12-30 12:30:26.000000000 +0100
+--- src/version.c      2010-12-30 14:47:04.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     92,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+57. You begin to wonder how on earth your service provider is allowed to call
+    200 hours per month "unlimited."
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.093.patch0 b/vim/patches/vim-7.3.093.patch0
new file mode 100644 (file)
index 0000000..9bf0fe8
--- /dev/null
@@ -0,0 +1,201 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.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.3.093
+Problem:    New DLL dependencies in MingW with gcc 4.5.0.
+Solution:   Add STATIC_STDCPLUS, LDFLAGS and split up WINDRES. (Guopeng Wen)
+Files:      src/GvimExt/Make_ming.mak, src/Make_ming.mak
+
+
+*** ../vim-7.3.092/src/GvimExt/Make_ming.mak   2010-09-29 18:42:25.000000000 +0200
+--- src/GvimExt/Make_ming.mak  2010-12-30 14:42:51.000000000 +0100
+***************
+*** 17,22 ****
+--- 17,33 ----
+  # check also the executables
+  MINGWOLD = no
+  
++ # Link against the shared versions of libgcc/libstdc++ by default.  Set
++ # STATIC_STDCPLUS to "yes" to link against static versions instead.
++ STATIC_STDCPLUS=no
++ #STATIC_STDCPLUS=yes
++ 
++ # Note: -static-libstdc++ is not available until gcc 4.5.x.
++ LDFLAGS += -shared
++ ifeq (yes, $(STATIC_STDCPLUS))
++ LDFLAGS += -static-libgcc -static-libstdc++
++ endif
++ 
+  ifeq ($(CROSS),yes)
+  DEL = rm
+  ifeq ($(MINGWOLD),yes)
+***************
+*** 33,39 ****
+  endif
+  endif
+  CXX := $(CROSS_COMPILE)g++
+! WINDRES := $(CROSS_COMPILE)windres --preprocessor="$(CXX) -E -xc" -DRC_INVOKED
+  LIBS :=  -luuid
+  RES  := gvimext.res
+  DEFFILE = gvimext_ming.def
+--- 44,52 ----
+  endif
+  endif
+  CXX := $(CROSS_COMPILE)g++
+! WINDRES := $(CROSS_COMPILE)windres
+! WINDRES_CXX = $(CXX)
+! WINDRES_FLAGS = --preprocessor="$(WINDRES_CXX) -E -xc" -DRC_INVOKED
+  LIBS :=  -luuid
+  RES  := gvimext.res
+  DEFFILE = gvimext_ming.def
+***************
+*** 46,52 ****
+  all: all-before $(DLL) all-after
+  
+  $(DLL): $(OBJ) $(RES) $(DEFFILE)
+!      $(CXX) -shared $(CXXFLAGS) -s -o $@ \
+               -Wl,--enable-auto-image-base \
+               -Wl,--enable-auto-import \
+               -Wl,--whole-archive \
+--- 59,65 ----
+  all: all-before $(DLL) all-after
+  
+  $(DLL): $(OBJ) $(RES) $(DEFFILE)
+!      $(CXX) $(LDFLAGS) $(CXXFLAGS) -s -o $@ \
+               -Wl,--enable-auto-image-base \
+               -Wl,--enable-auto-import \
+               -Wl,--whole-archive \
+***************
+*** 58,64 ****
+       $(CXX) $(CXXFLAGS) -DFEAT_GETTEXT -c $? -o $@
+  
+  $(RES): gvimext_ming.rc
+!      $(WINDRES) --input-format=rc --output-format=coff -DMING $? -o $@
+  
+  clean: clean-custom
+       -$(DEL)  $(OBJ) $(RES) $(DLL)
+--- 71,77 ----
+       $(CXX) $(CXXFLAGS) -DFEAT_GETTEXT -c $? -o $@
+  
+  $(RES): gvimext_ming.rc
+!      $(WINDRES) $(WINDRES_FLAGS) --input-format=rc --output-format=coff -DMING $? -o $@
+  
+  clean: clean-custom
+       -$(DEL)  $(OBJ) $(RES) $(DLL)
+*** ../vim-7.3.092/src/Make_ming.mak   2010-11-03 21:59:23.000000000 +0100
+--- src/Make_ming.mak  2010-12-30 14:42:51.000000000 +0100
+***************
+*** 56,61 ****
+--- 56,67 ----
+  NETBEANS=$(GUI)
+  
+  
++ # Link against the shared version of libstdc++ by default.  Set
++ # STATIC_STDCPLUS to "yes" to link against static version instead.
++ ifndef STATIC_STDCPLUS
++ STATIC_STDCPLUS=no
++ endif
++ 
+  # If the user doesn't want gettext, undefine it.
+  ifeq (no, $(GETTEXT))
+  GETTEXT=
+***************
+*** 309,320 ****
+  endif
+  endif
+  CC := $(CROSS_COMPILE)gcc
+! WINDRES := $(CROSS_COMPILE)windres --preprocessor="$(CC) -E -xc" -DRC_INVOKED
+  
+  #>>>>> end of choices
+  ###########################################################################
+  
+  CFLAGS = -Iproto $(DEFINES) -pipe -w -march=$(ARCH) -Wall
+  
+  ifdef GETTEXT
+  DEFINES += -DHAVE_GETTEXT -DHAVE_LOCALE_H
+--- 315,328 ----
+  endif
+  endif
+  CC := $(CROSS_COMPILE)gcc
+! WINDRES := $(CROSS_COMPILE)windres
+! WINDRES_CC = $(CC)
+  
+  #>>>>> end of choices
+  ###########################################################################
+  
+  CFLAGS = -Iproto $(DEFINES) -pipe -w -march=$(ARCH) -Wall
++ WINDRES_FLAGS = --preprocessor="$(WINDRES_CC) -E -xc" -DRC_INVOKED
+  
+  ifdef GETTEXT
+  DEFINES += -DHAVE_GETTEXT -DHAVE_LOCALE_H
+***************
+*** 577,584 ****
+  endif
+  
+  ifeq (yes, $(OLE))
+! LIB += -loleaut32 -lstdc++
+  OBJ += $(OUTDIR)/if_ole.o
+  endif
+  
+  ifeq (yes, $(MBYTE))
+--- 585,597 ----
+  endif
+  
+  ifeq (yes, $(OLE))
+! LIB += -loleaut32
+  OBJ += $(OUTDIR)/if_ole.o
++ ifeq (yes, $(STATIC_STDCPLUS))
++ LIB += -Wl,-Bstatic -lstdc++ -Wl,-Bdynamic
++ else
++ LIB += -lstdc++
++ endif
+  endif
+  
+  ifeq (yes, $(MBYTE))
+***************
+*** 656,665 ****
+       $(CC) -c $(CFLAGS) $< -o $@
+  
+  $(OUTDIR)/vimres.res: vim.rc version.h gui_w32_rc.h
+!      $(WINDRES) $(DEFINES) vim.rc $(OUTDIR)/vimres.res
+  
+  $(OUTDIR)/vimrc.o: $(OUTDIR)/vimres.res
+!      $(WINDRES) $(OUTDIR)/vimres.res $(OUTDIR)/vimrc.o
+  
+  $(OUTDIR):
+       $(MKDIR) $(OUTDIR)
+--- 669,678 ----
+       $(CC) -c $(CFLAGS) $< -o $@
+  
+  $(OUTDIR)/vimres.res: vim.rc version.h gui_w32_rc.h
+!      $(WINDRES) $(WINDRES_FLAGS) $(DEFINES) vim.rc $(OUTDIR)/vimres.res
+  
+  $(OUTDIR)/vimrc.o: $(OUTDIR)/vimres.res
+!      $(WINDRES) $(WINDRES_FLAGS) $(OUTDIR)/vimres.res $(OUTDIR)/vimrc.o
+  
+  $(OUTDIR):
+       $(MKDIR) $(OUTDIR)
+*** ../vim-7.3.092/src/version.c       2010-12-30 14:47:32.000000000 +0100
+--- src/version.c      2010-12-30 14:48:34.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     93,
+  /**/
+
+-- 
+Creating the world with Emacs:   M-x let-there-be-light
+Creating the world with Vim:     :make world
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.094.patch0 b/vim/patches/vim-7.3.094.patch0
new file mode 100644 (file)
index 0000000..e95122b
--- /dev/null
@@ -0,0 +1,70 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.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.3.094
+Problem:    Using abs() requires type cast to int.
+Solution:   Use labs() so that the value remains long. (Hong Xu)
+Files:     src/screen.c
+
+
+*** ../vim-7.3.093/src/screen.c        2010-12-08 19:56:52.000000000 +0100
+--- src/screen.c       2010-12-30 14:54:08.000000000 +0100
+***************
+*** 2317,2323 ****
+               num = (long)lnum;
+           else
+               /* 'relativenumber', don't use negative numbers */
+!              num = (long)abs((int)get_cursor_rel_lnum(wp, lnum));
+  
+           sprintf((char *)buf, "%*ld ", w, num);
+  #ifdef FEAT_RIGHTLEFT
+--- 2317,2323 ----
+               num = (long)lnum;
+           else
+               /* 'relativenumber', don't use negative numbers */
+!              num = labs((long)get_cursor_rel_lnum(wp, lnum));
+  
+           sprintf((char *)buf, "%*ld ", w, num);
+  #ifdef FEAT_RIGHTLEFT
+***************
+*** 3475,3482 ****
+                           num = (long)lnum;
+                       else
+                           /* 'relativenumber', don't use negative numbers */
+!                          num = (long)abs((int)get_cursor_rel_lnum(wp,
+!                                                                  lnum));
+  
+                       sprintf((char *)extra, "%*ld ",
+                                               number_width(wp), num);
+--- 3475,3481 ----
+                           num = (long)lnum;
+                       else
+                           /* 'relativenumber', don't use negative numbers */
+!                          num = labs((long)get_cursor_rel_lnum(wp, lnum));
+  
+                       sprintf((char *)extra, "%*ld ",
+                                               number_width(wp), num);
+*** ../vim-7.3.093/src/version.c       2010-12-30 14:50:46.000000000 +0100
+--- src/version.c      2010-12-30 14:56:32.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     94,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+58. You turn on your computer and turn off your wife.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.095.patch0 b/vim/patches/vim-7.3.095.patch0
new file mode 100644 (file)
index 0000000..2ea3492
--- /dev/null
@@ -0,0 +1,70 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.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.3.095
+Problem:    Win32: In Chinese tear-off menu doesn't work. (Weasley)
+Solution:   Use menu_name_equal().  (Alex Jakushev)
+Files:     src/menu.c
+
+
+*** ../vim-7.3.094/src/menu.c  2010-08-15 21:57:25.000000000 +0200
+--- src/menu.c 2011-01-04 17:41:38.000000000 +0100
+***************
+*** 1512,1519 ****
+  {
+  #ifdef FEAT_MULTI_LANG
+      if (menu->en_name != NULL
+!          && (menu_namecmp(name,menu->en_name)
+!              || menu_namecmp(name,menu->en_dname)))
+       return TRUE;
+  #endif
+      return menu_namecmp(name, menu->name) || menu_namecmp(name, menu->dname);
+--- 1512,1519 ----
+  {
+  #ifdef FEAT_MULTI_LANG
+      if (menu->en_name != NULL
+!          && (menu_namecmp(name, menu->en_name)
+!              || menu_namecmp(name, menu->en_dname)))
+       return TRUE;
+  #endif
+      return menu_namecmp(name, menu->name) || menu_namecmp(name, menu->dname);
+***************
+*** 2342,2348 ****
+  
+       while (menu != NULL)
+       {
+!          if (STRCMP(name, menu->name) == 0 || STRCMP(name, menu->dname) == 0)
+           {
+               if (menu->children == NULL)
+               {
+--- 2342,2348 ----
+  
+       while (menu != NULL)
+       {
+!          if (menu_name_equal(name, menu))
+           {
+               if (menu->children == NULL)
+               {
+*** ../vim-7.3.094/src/version.c       2010-12-30 14:57:03.000000000 +0100
+--- src/version.c      2011-01-04 17:43:41.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     95,
+  /**/
+
+-- 
+If your nose runs, and your feet smell, you might be upside down.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.096.patch0 b/vim/patches/vim-7.3.096.patch0
new file mode 100644 (file)
index 0000000..b8b541b
--- /dev/null
@@ -0,0 +1,97 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.096
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.096
+Problem:    "gvim -nb" is not interruptable.  Leaking file descriptor on
+           netbeans connection error.
+Solution:   Check for CTRL-C typed.  Free file descriptor.  (Xavier de Gaye)
+Files:     src/netbeans.c
+
+
+*** ../vim-7.3.095/src/netbeans.c      2010-12-24 14:00:09.000000000 +0100
+--- src/netbeans.c     2011-01-04 18:00:35.000000000 +0100
+***************
+*** 321,326 ****
+--- 321,327 ----
+      {
+       nbdebug(("error in gethostbyname() in netbeans_connect()\n"));
+       PERROR("gethostbyname() in netbeans_connect()");
++      sock_close(sd);
+       goto theend;
+      }
+      memcpy((char *)&server.sin_addr, host->h_addr, host->h_length);
+***************
+*** 370,384 ****
+                                                        || (errno == EINTR)))
+               {
+                   nbdebug(("retrying...\n"));
+!                  sleep(5);
+!                  if (!doabort)
+                   {
+!                      ui_breakcheck();
+!                      if (got_int)
+!                      {
+!                          errno = EINTR;
+!                          break;
+!                      }
+                   }
+                   if (connect(sd, (struct sockaddr *)&server,
+                                                        sizeof(server)) == 0)
+--- 371,382 ----
+                                                        || (errno == EINTR)))
+               {
+                   nbdebug(("retrying...\n"));
+!                  mch_delay(3000L, TRUE);
+!                  ui_breakcheck();
+!                  if (got_int)
+                   {
+!                      errno = EINTR;
+!                      break;
+                   }
+                   if (connect(sd, (struct sockaddr *)&server,
+                                                        sizeof(server)) == 0)
+***************
+*** 393,398 ****
+--- 391,397 ----
+                   /* Get here when the server can't be found. */
+                   nbdebug(("Cannot connect to Netbeans #2\n"));
+                   PERROR(_("Cannot connect to Netbeans #2"));
++                  sock_close(sd);
+                   if (doabort)
+                       getout(1);
+                   goto theend;
+***************
+*** 403,408 ****
+--- 402,408 ----
+       {
+           nbdebug(("Cannot connect to Netbeans\n"));
+           PERROR(_("Cannot connect to Netbeans"));
++          sock_close(sd);
+           if (doabort)
+               getout(1);
+           goto theend;
+*** ../vim-7.3.095/src/version.c       2011-01-04 17:49:25.000000000 +0100
+--- src/version.c      2011-01-04 18:09:46.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     96,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+85. Choice between paying Compuserve bill and paying for kids education
+    is a no brainer -- although a bit painful for your kids.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.097.patch0 b/vim/patches/vim-7.3.097.patch0
new file mode 100644 (file)
index 0000000..2ee20a3
--- /dev/null
@@ -0,0 +1,54 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.097
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.097
+Problem:    Using ":call" inside "if 0" does not see that a function returns a
+           Dict and gives error for "." as string concatenation.
+Solution:   Use eval0() to skip over the expression.  (Yasuhiro Matsumoto)
+Files:     src/eval.c
+
+
+*** ../vim-7.3.096/src/eval.c  2010-12-17 18:06:00.000000000 +0100
+--- src/eval.c 2011-01-04 18:54:27.000000000 +0100
+***************
+*** 3335,3340 ****
+--- 3335,3349 ----
+      int              failed = FALSE;
+      funcdict_T       fudi;
+  
++     if (eap->skip)
++     {
++      /* trans_function_name() doesn't work well when skipping, use eval0()
++       * instead to skip to any following command, e.g. for:
++       *   :if 0 | call dict.foo().bar() | endif  */
++      eval0(eap->arg, &rettv, &eap->nextcmd, FALSE);
++      return;
++     }
++ 
+      tofree = trans_function_name(&arg, eap->skip, TFN_INT, &fudi);
+      if (fudi.fd_newkey != NULL)
+      {
+*** ../vim-7.3.096/src/version.c       2011-01-04 18:11:39.000000000 +0100
+--- src/version.c      2011-01-04 19:00:21.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     97,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+86. E-mail Deficiency Depression (EDD) forces you to e-mail yourself.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.098.patch0 b/vim/patches/vim-7.3.098.patch0
new file mode 100644 (file)
index 0000000..9e6435e
--- /dev/null
@@ -0,0 +1,61 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.098
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.098
+Problem:    Function that ignores error still causes called_emsg to be set.
+           E.g. when expand() fails the status line is disabled.
+Solution:   Move check for emsg_not_now() up. (James Vega)
+Files:     src/message.c
+
+
+*** ../vim-7.3.097/src/message.c       2010-10-20 21:22:17.000000000 +0200
+--- src/message.c      2011-01-04 19:19:04.000000000 +0100
+***************
+*** 569,574 ****
+--- 569,578 ----
+      int              severe;
+  #endif
+  
++     /* Skip this if not giving error messages at the moment. */
++     if (emsg_not_now())
++      return TRUE;
++ 
+      called_emsg = TRUE;
+      ex_exitval = 1;
+  
+***************
+*** 581,590 ****
+      emsg_severe = FALSE;
+  #endif
+  
+-     /* Skip this if not giving error messages at the moment. */
+-     if (emsg_not_now())
+-      return TRUE;
+- 
+      if (!emsg_off || vim_strchr(p_debug, 't') != NULL)
+      {
+  #ifdef FEAT_EVAL
+--- 585,590 ----
+*** ../vim-7.3.097/src/version.c       2011-01-04 19:03:22.000000000 +0100
+--- src/version.c      2011-01-04 19:24:30.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     98,
+  /**/
+
+-- 
+Ed's Radiator Shop: The Best Place in Town to Take a Leak.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.099.patch0 b/vim/patches/vim-7.3.099.patch0
new file mode 100644 (file)
index 0000000..84aa2a3
--- /dev/null
@@ -0,0 +1,54 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.099
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.099
+Problem:    Crash when splitting a window with zero height. (Yukihiro
+           Nakadaira)
+Solution:   Don't set the fraction in a window with zero height.
+Files:     src/window.c
+
+
+*** ../vim-7.3.098/src/window.c        2010-12-17 17:35:05.000000000 +0100
+--- src/window.c       2011-01-08 14:41:32.000000000 +0100
+***************
+*** 986,992 ****
+  
+      /* Set w_fraction now so that the cursor keeps the same relative
+       * vertical position. */
+!     set_fraction(oldwin);
+      wp->w_fraction = oldwin->w_fraction;
+  
+  #ifdef FEAT_VERTSPLIT
+--- 986,993 ----
+  
+      /* Set w_fraction now so that the cursor keeps the same relative
+       * vertical position. */
+!     if (oldwin->w_height > 0)
+!      set_fraction(oldwin);
+      wp->w_fraction = oldwin->w_fraction;
+  
+  #ifdef FEAT_VERTSPLIT
+*** ../vim-7.3.098/src/version.c       2011-01-04 19:25:46.000000000 +0100
+--- src/version.c      2011-01-08 14:44:02.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     99,
+  /**/
+
+-- 
+From "know your smileys":
+ 8-O   "Omigod!!" (done "rm -rf *" ?)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.100.patch0 b/vim/patches/vim-7.3.100.patch0
new file mode 100644 (file)
index 0000000..2b6e8b0
--- /dev/null
@@ -0,0 +1,52 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.100
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.100 
+Problem:    When using :normal v:count isn't set. 
+Solution:   Call normal_cmd() with toplevel set to TRUE. 
+Files:      src/ex_docmd.c 
+    
+
+*** ../vim-7.3.099/src/ex_docmd.c      2010-12-02 16:01:23.000000000 +0100
+--- src/ex_docmd.c     2011-01-06 17:23:43.000000000 +0100
+***************
+*** 9310,9316 ****
+                                                                 && !got_int)
+      {
+       update_topline_cursor();
+!      normal_cmd(&oa, FALSE); /* execute a Normal mode cmd */
+      }
+  }
+  #endif
+--- 9310,9316 ----
+                                                                 && !got_int)
+      {
+       update_topline_cursor();
+!      normal_cmd(&oa, TRUE);  /* execute a Normal mode cmd */
+      }
+  }
+  #endif
+*** ../vim-7.3.099/src/version.c       2011-01-08 14:45:57.000000000 +0100
+--- src/version.c      2011-01-17 19:49:07.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     100,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+109. You actually read -- and enjoy -- lists like this.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.101.patch0 b/vim/patches/vim-7.3.101.patch0
new file mode 100644 (file)
index 0000000..8869baf
--- /dev/null
@@ -0,0 +1,92 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.1
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.101
+Problem:    ino_t defined with wrong size.
+Solution:   Move including auto/config.h before other includes. (Marius
+            Geminas)
+Files:      src/if_ruby.c, src/if_lua.c
+               
+
+*** ../vim-7.3.100/src/if_ruby.c       2010-12-24 13:39:29.000000000 +0100
+--- src/if_ruby.c      2011-01-09 14:43:14.000000000 +0100
+***************
+*** 11,23 ****
+   * See README.txt for an overview of the Vim source code.
+   */
+  
+- #include <stdio.h>
+- #include <string.h>
+- 
+  #ifdef HAVE_CONFIG_H
+  # include "auto/config.h"
+  #endif
+  
+  #ifdef _WIN32
+  # if !defined(DYNAMIC_RUBY_VER) || (DYNAMIC_RUBY_VER < 18)
+  #   define NT
+--- 11,23 ----
+   * See README.txt for an overview of the Vim source code.
+   */
+  
+  #ifdef HAVE_CONFIG_H
+  # include "auto/config.h"
+  #endif
+  
++ #include <stdio.h>
++ #include <string.h>
++ 
+  #ifdef _WIN32
+  # if !defined(DYNAMIC_RUBY_VER) || (DYNAMIC_RUBY_VER < 18)
+  #   define NT
+*** ../vim-7.3.100/src/if_lua.c        2010-10-23 14:02:48.000000000 +0200
+--- src/if_lua.c       2011-01-09 14:46:46.000000000 +0100
+***************
+*** 9,20 ****
+   * See README.txt for an overview of the Vim source code.
+   */
+  
+! #include <stdio.h>
+! #include <string.h>
+  #include <lua.h>
+  #include <lualib.h>
+  #include <lauxlib.h>
+- #include "vim.h"
+  
+  /* Only do the following when the feature is enabled.  Needed for "make
+   * depend". */
+--- 9,19 ----
+   * See README.txt for an overview of the Vim source code.
+   */
+  
+! #include "vim.h"
+! 
+  #include <lua.h>
+  #include <lualib.h>
+  #include <lauxlib.h>
+  
+  /* Only do the following when the feature is enabled.  Needed for "make
+   * depend". */
+*** ../vim-7.3.100/src/version.c       2011-01-17 19:50:01.000000000 +0100
+--- src/version.c      2011-01-17 19:51:40.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     101,
+  /**/
+
+-- 
+In a world without walls and borders, who needs windows and gates?
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.102.patch0 b/vim/patches/vim-7.3.102.patch0
new file mode 100644 (file)
index 0000000..785e597
--- /dev/null
@@ -0,0 +1,615 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.102
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.102
+Problem:    When using ":make", typing the next command and then getting the
+            "reload" prompt the next command is (partly) eaten by the reload
+            prompt.
+Solution:   Accept ':' as a special character at the reload prompt to accept
+            the default choice and execute the command.
+Files:      src/eval.c, src/fileio.c, src/gui.c, src/gui_xmdlg.c,
+            src/memline.c, src/message.c, src/proto/message.pro,
+            src/gui_athena.c, src/gui_gtk.c, src/gui_mac.c, src/gui_motif.c,
+            src/gui_photon.c, src/gui_w16.c, src/gui_w32.c, src/os_mswin.c
+            src/proto/gui_athena.pro, src/proto/gui_gtk.pro,
+            src/proto/gui_mac.pro, src/proto/gui_motif.pro,
+            src/proto/gui_photon.pro, src/proto/gui_w16.pro,
+            src/proto/gui_w32.pro
+
+
+*** ../vim-7.3.101/src/eval.c  2011-01-04 19:03:22.000000000 +0100
+--- src/eval.c 2011-01-16 00:14:21.000000000 +0100
+***************
+*** 9323,9329 ****
+  
+      if (!error)
+       rettv->vval.v_number = do_dialog(type, NULL, message, buttons,
+!                                                                 def, NULL);
+  #endif
+  }
+  
+--- 9323,9329 ----
+  
+      if (!error)
+       rettv->vval.v_number = do_dialog(type, NULL, message, buttons,
+!                                                          def, NULL, FALSE);
+  #endif
+  }
+  
+***************
+*** 12744,12750 ****
+           IObuff[0] = NUL;
+       if (message != NULL && defstr != NULL
+               && do_dialog(VIM_QUESTION, NULL, message,
+!                              (char_u *)_("&OK\n&Cancel"), 1, IObuff) == 1)
+           rettv->vval.v_string = vim_strsave(IObuff);
+       else
+       {
+--- 12744,12750 ----
+           IObuff[0] = NUL;
+       if (message != NULL && defstr != NULL
+               && do_dialog(VIM_QUESTION, NULL, message,
+!                        (char_u *)_("&OK\n&Cancel"), 1, IObuff, FALSE) == 1)
+           rettv->vval.v_string = vim_strsave(IObuff);
+       else
+       {
+*** ../vim-7.3.101/src/fileio.c        2010-12-17 18:06:00.000000000 +0100
+--- src/fileio.c       2011-01-16 00:14:37.000000000 +0100
+***************
+*** 7008,7014 ****
+                   STRCAT(tbuf, mesg2);
+               }
+               if (do_dialog(VIM_WARNING, (char_u *)_("Warning"), tbuf,
+!                              (char_u *)_("&OK\n&Load File"), 1, NULL) == 2)
+                   reload = TRUE;
+           }
+           else
+--- 7008,7014 ----
+                   STRCAT(tbuf, mesg2);
+               }
+               if (do_dialog(VIM_WARNING, (char_u *)_("Warning"), tbuf,
+!                        (char_u *)_("&OK\n&Load File"), 1, NULL, TRUE) == 2)
+                   reload = TRUE;
+           }
+           else
+*** ../vim-7.3.101/src/gui.c   2010-10-20 19:17:43.000000000 +0200
+--- src/gui.c  2011-01-16 00:14:56.000000000 +0100
+***************
+*** 4903,4909 ****
+               if (STRLEN(p) > 2000)
+                   STRCPY(p + 2000 - 14, "...(truncated)");
+               (void)do_dialog(VIM_ERROR, (char_u *)_("Error"),
+!                                            p, (char_u *)_("&Ok"), 1, NULL);
+               break;
+           }
+       ga_clear(&error_ga);
+--- 4903,4909 ----
+               if (STRLEN(p) > 2000)
+                   STRCPY(p + 2000 - 14, "...(truncated)");
+               (void)do_dialog(VIM_ERROR, (char_u *)_("Error"),
+!                                     p, (char_u *)_("&Ok"), 1, NULL, FALSE);
+               break;
+           }
+       ga_clear(&error_ga);
+*** ../vim-7.3.101/src/gui_xmdlg.c     2010-08-15 21:57:32.000000000 +0200
+--- src/gui_xmdlg.c    2011-01-16 00:15:33.000000000 +0100
+***************
+*** 688,694 ****
+           do_dialog(VIM_ERROR,
+                   (char_u *)_("Error"),
+                   (char_u *)_("Invalid font specification"),
+!                  (char_u *)_("&Dismiss"), 1, NULL);
+  
+       return True;
+      }
+--- 688,694 ----
+           do_dialog(VIM_ERROR,
+                   (char_u *)_("Error"),
+                   (char_u *)_("Invalid font specification"),
+!                  (char_u *)_("&Dismiss"), 1, NULL, FALSE);
+  
+       return True;
+      }
+***************
+*** 807,813 ****
+       do_dialog(VIM_ERROR,
+               (char_u *)_("Error"),
+               (char_u *)_("Invalid font specification"),
+!              (char_u *)_("&Dismiss"), 1, NULL);
+       XFreeFontNames(name);
+      }
+      else
+--- 807,813 ----
+       do_dialog(VIM_ERROR,
+               (char_u *)_("Error"),
+               (char_u *)_("Invalid font specification"),
+!              (char_u *)_("&Dismiss"), 1, NULL, FALSE);
+       XFreeFontNames(name);
+      }
+      else
+*** ../vim-7.3.101/src/memline.c       2010-12-17 20:23:56.000000000 +0100
+--- src/memline.c      2011-01-16 00:15:47.000000000 +0100
+***************
+*** 4516,4522 ****
+                                   process_still_running
+                                       ? (char_u *)_("&Open Read-Only\n&Edit anyway\n&Recover\n&Quit\n&Abort") :
+  # endif
+!                                      (char_u *)_("&Open Read-Only\n&Edit anyway\n&Recover\n&Delete it\n&Quit\n&Abort"), 1, NULL);
+  
+  # if defined(UNIX) || defined(__EMX__) || defined(VMS)
+                       if (process_still_running && choice >= 4)
+--- 4516,4522 ----
+                                   process_still_running
+                                       ? (char_u *)_("&Open Read-Only\n&Edit anyway\n&Recover\n&Quit\n&Abort") :
+  # endif
+!                                      (char_u *)_("&Open Read-Only\n&Edit anyway\n&Recover\n&Delete it\n&Quit\n&Abort"), 1, NULL, FALSE);
+  
+  # if defined(UNIX) || defined(__EMX__) || defined(VMS)
+                       if (process_still_running && choice >= 4)
+*** ../vim-7.3.101/src/message.c       2011-01-04 19:25:46.000000000 +0100
+--- src/message.c      2011-01-17 19:57:30.000000000 +0100
+***************
+*** 3315,3321 ****
+   * different letter.
+   */
+      int
+! do_dialog(type, title, message, buttons, dfltbutton, textfield)
+      int              type UNUSED;
+      char_u   *title UNUSED;
+      char_u   *message;
+--- 3315,3321 ----
+   * different letter.
+   */
+      int
+! do_dialog(type, title, message, buttons, dfltbutton, textfield, ex_cmd)
+      int              type UNUSED;
+      char_u   *title UNUSED;
+      char_u   *message;
+***************
+*** 3323,3328 ****
+--- 3323,3330 ----
+      int              dfltbutton;
+      char_u   *textfield UNUSED;      /* IObuff for inputdialog(), NULL
+                                          otherwise */
++     int              ex_cmd;     /* when TRUE pressing : accepts default and starts
++                             Ex command */
+  {
+      int              oldState;
+      int              retval = 0;
+***************
+*** 3341,3347 ****
+      if (gui.in_use && vim_strchr(p_go, GO_CONDIALOG) == NULL)
+      {
+       c = gui_mch_dialog(type, title, message, buttons, dfltbutton,
+!                                                                 textfield);
+       /* avoid a hit-enter prompt without clearing the cmdline */
+       need_wait_return = FALSE;
+       emsg_on_display = FALSE;
+--- 3343,3349 ----
+      if (gui.in_use && vim_strchr(p_go, GO_CONDIALOG) == NULL)
+      {
+       c = gui_mch_dialog(type, title, message, buttons, dfltbutton,
+!                                                         textfield, ex_cmd);
+       /* avoid a hit-enter prompt without clearing the cmdline */
+       need_wait_return = FALSE;
+       emsg_on_display = FALSE;
+***************
+*** 3388,3393 ****
+--- 3390,3402 ----
+           default:            /* Could be a hotkey? */
+               if (c < 0)      /* special keys are ignored here */
+                   continue;
++              if (c == ':' && ex_cmd)
++              {
++                  retval = dfltbutton;
++                  ins_char_typebuf(':');
++                  break;
++              }
++ 
+               /* Make the character lowercase, as chars in "hotkeys" are. */
+               c = MB_TOLOWER(c);
+               retval = 1;
+***************
+*** 3661,3667 ****
+      if (do_dialog(type,
+               title == NULL ? (char_u *)_("Question") : title,
+               message,
+!              (char_u *)_("&Yes\n&No"), dflt, NULL) == 1)
+       return VIM_YES;
+      return VIM_NO;
+  }
+--- 3670,3676 ----
+      if (do_dialog(type,
+               title == NULL ? (char_u *)_("Question") : title,
+               message,
+!              (char_u *)_("&Yes\n&No"), dflt, NULL, FALSE) == 1)
+       return VIM_YES;
+      return VIM_NO;
+  }
+***************
+*** 3676,3682 ****
+      switch (do_dialog(type,
+               title == NULL ? (char_u *)_("Question") : title,
+               message,
+!              (char_u *)_("&Yes\n&No\n&Cancel"), dflt, NULL))
+      {
+       case 1: return VIM_YES;
+       case 2: return VIM_NO;
+--- 3685,3691 ----
+      switch (do_dialog(type,
+               title == NULL ? (char_u *)_("Question") : title,
+               message,
+!              (char_u *)_("&Yes\n&No\n&Cancel"), dflt, NULL, FALSE))
+      {
+       case 1: return VIM_YES;
+       case 2: return VIM_NO;
+***************
+*** 3695,3701 ****
+               title == NULL ? (char_u *)"Question" : title,
+               message,
+               (char_u *)_("&Yes\n&No\nSave &All\n&Discard All\n&Cancel"),
+!                                                                dflt, NULL))
+      {
+       case 1: return VIM_YES;
+       case 2: return VIM_NO;
+--- 3704,3710 ----
+               title == NULL ? (char_u *)"Question" : title,
+               message,
+               (char_u *)_("&Yes\n&No\nSave &All\n&Discard All\n&Cancel"),
+!                                                         dflt, NULL, FALSE))
+      {
+       case 1: return VIM_YES;
+       case 2: return VIM_NO;
+*** ../vim-7.3.101/src/proto/message.pro       2010-10-20 21:22:17.000000000 +0200
+--- src/proto/message.pro      2011-01-16 00:22:36.000000000 +0100
+***************
+*** 64,70 ****
+  int verbose_open __ARGS((void));
+  void give_warning __ARGS((char_u *message, int hl));
+  void msg_advance __ARGS((int col));
+! int do_dialog __ARGS((int type, char_u *title, char_u *message, char_u *buttons, int dfltbutton, char_u *textfield));
+  void display_confirm_msg __ARGS((void));
+  int vim_dialog_yesno __ARGS((int type, char_u *title, char_u *message, int dflt));
+  int vim_dialog_yesnocancel __ARGS((int type, char_u *title, char_u *message, int dflt));
+--- 64,70 ----
+  int verbose_open __ARGS((void));
+  void give_warning __ARGS((char_u *message, int hl));
+  void msg_advance __ARGS((int col));
+! int do_dialog __ARGS((int type, char_u *title, char_u *message, char_u *buttons, int dfltbutton, char_u *textfield, int ex_cmd));
+  void display_confirm_msg __ARGS((void));
+  int vim_dialog_yesno __ARGS((int type, char_u *title, char_u *message, int dflt));
+  int vim_dialog_yesnocancel __ARGS((int type, char_u *title, char_u *message, int dflt));
+*** ../vim-7.3.101/src/gui_athena.c    2010-08-15 21:57:25.000000000 +0200
+--- src/gui_athena.c   2011-01-16 00:18:47.000000000 +0100
+***************
+*** 2117,2129 ****
+  }
+  
+      int
+! gui_mch_dialog(type, title, message, buttons, dfltbutton, textfield)
+      int              type UNUSED;
+      char_u   *title;
+      char_u   *message;
+      char_u   *buttons;
+      int              dfltbutton UNUSED;
+      char_u   *textfield;
+  {
+      char_u           *buts;
+      char_u           *p, *next;
+--- 2117,2130 ----
+  }
+  
+      int
+! gui_mch_dialog(type, title, message, buttons, dfltbutton, textfield, ex_cmd)
+      int              type UNUSED;
+      char_u   *title;
+      char_u   *message;
+      char_u   *buttons;
+      int              dfltbutton UNUSED;
+      char_u   *textfield;
++     int              ex_cmd UNUSED;
+  {
+      char_u           *buts;
+      char_u           *p, *next;
+*** ../vim-7.3.101/src/gui_gtk.c       2010-12-08 13:11:15.000000000 +0100
+--- src/gui_gtk.c      2011-01-16 00:24:44.000000000 +0100
+***************
+*** 1268,1274 ****
+              char_u   *message,   /* message text */
+              char_u   *buttons,   /* names of buttons */
+              int      def_but,    /* default button */
+!             char_u   *textfield) /* text for textfield or NULL */
+  {
+      GtkWidget        *dialog;
+      GtkWidget        *entry = NULL;
+--- 1268,1275 ----
+              char_u   *message,   /* message text */
+              char_u   *buttons,   /* names of buttons */
+              int      def_but,    /* default button */
+!             char_u   *textfield, /* text for textfield or NULL */
+!             int      ex_cmd UNUSED)
+  {
+      GtkWidget        *dialog;
+      GtkWidget        *entry = NULL;
+*** ../vim-7.3.101/src/gui_mac.c       2010-09-21 17:34:26.000000000 +0200
+--- src/gui_mac.c      2011-01-16 00:19:52.000000000 +0100
+***************
+*** 5583,5589 ****
+      char_u   *message,
+      char_u   *buttons,
+      int              dfltbutton,
+!     char_u   *textfield)
+  {
+      Handle   buttonDITL;
+      Handle   iconDITL;
+--- 5583,5590 ----
+      char_u   *message,
+      char_u   *buttons,
+      int              dfltbutton,
+!     char_u   *textfield,
+!     int              ex_cmd)
+  {
+      Handle   buttonDITL;
+      Handle   iconDITL;
+*** ../vim-7.3.101/src/gui_motif.c     2010-08-15 21:57:28.000000000 +0200
+--- src/gui_motif.c    2011-01-16 00:20:14.000000000 +0100
+***************
+*** 2549,2561 ****
+  #endif
+  
+      int
+! gui_mch_dialog(type, title, message, button_names, dfltbutton, textfield)
+      int              type UNUSED;
+      char_u   *title;
+      char_u   *message;
+      char_u   *button_names;
+      int              dfltbutton;
+      char_u   *textfield;             /* buffer of size IOSIZE */
+  {
+      char_u           *buts;
+      char_u           *p, *next;
+--- 2549,2562 ----
+  #endif
+  
+      int
+! gui_mch_dialog(type, title, message, button_names, dfltbutton, textfield, ex_cmd)
+      int              type UNUSED;
+      char_u   *title;
+      char_u   *message;
+      char_u   *button_names;
+      int              dfltbutton;
+      char_u   *textfield;             /* buffer of size IOSIZE */
++     int              ex_cmd UNUSED;
+  {
+      char_u           *buts;
+      char_u           *p, *next;
+*** ../vim-7.3.101/src/gui_photon.c    2010-08-15 21:57:27.000000000 +0200
+--- src/gui_photon.c   2011-01-16 00:20:28.000000000 +0100
+***************
+*** 1502,1508 ****
+       char_u  *message,
+       char_u  *buttons,
+       int     default_button,
+!      char_u  *textfield)
+  {
+      char_u   *str;
+      char_u   **button_array;
+--- 1502,1509 ----
+       char_u  *message,
+       char_u  *buttons,
+       int     default_button,
+!      char_u  *textfield,
+!      int     ex_cmd)
+  {
+      char_u   *str;
+      char_u   **button_array;
+*** ../vim-7.3.101/src/gui_w16.c       2010-08-15 21:57:28.000000000 +0200
+--- src/gui_w16.c      2011-01-16 00:20:48.000000000 +0100
+***************
+*** 1098,1104 ****
+      char_u   *message,
+      char_u   *buttons,
+      int               dfltbutton,
+!     char_u   *textfield)
+  {
+      FARPROC  dp;
+      LPWORD   p, pnumitems;
+--- 1098,1105 ----
+      char_u   *message,
+      char_u   *buttons,
+      int               dfltbutton,
+!     char_u   *textfield,
+!     int              ex_cmd)
+  {
+      FARPROC  dp;
+      LPWORD   p, pnumitems;
+*** ../vim-7.3.101/src/gui_w32.c       2010-10-27 12:33:12.000000000 +0200
+--- src/gui_w32.c      2011-01-16 00:21:08.000000000 +0100
+***************
+*** 3005,3011 ****
+      char_u   *message,
+      char_u   *buttons,
+      int               dfltbutton,
+!     char_u   *textfield)
+  {
+      WORD     *p, *pdlgtemplate, *pnumitems;
+      DWORD    *dwp;
+--- 3005,3012 ----
+      char_u   *message,
+      char_u   *buttons,
+      int               dfltbutton,
+!     char_u   *textfield,
+!     int              ex_cmd)
+  {
+      WORD     *p, *pdlgtemplate, *pnumitems;
+      DWORD    *dwp;
+*** ../vim-7.3.101/src/os_mswin.c      2010-12-17 20:23:56.000000000 +0100
+--- src/os_mswin.c     2011-01-16 00:21:41.000000000 +0100
+***************
+*** 593,599 ****
+                                    gui.starting ? (char_u *)_("Message") :
+  #endif
+                                            (char_u *)_("Error"),
+!                                   p, (char_u *)_("&Ok"), 1, NULL);
+               break;
+           }
+       ga_clear(&error_ga);
+--- 593,599 ----
+                                    gui.starting ? (char_u *)_("Message") :
+  #endif
+                                            (char_u *)_("Error"),
+!                                   p, (char_u *)_("&Ok"), 1, NULL, FALSE);
+               break;
+           }
+       ga_clear(&error_ga);
+*** ../vim-7.3.101/src/proto/gui_athena.pro    2010-08-15 21:57:28.000000000 +0200
+--- src/proto/gui_athena.pro   2011-01-16 00:23:00.000000000 +0100
+***************
+*** 27,31 ****
+  void gui_mch_set_scrollbar_colors __ARGS((scrollbar_T *sb));
+  Window gui_x11_get_wid __ARGS((void));
+  char_u *gui_mch_browse __ARGS((int saving, char_u *title, char_u *dflt, char_u *ext, char_u *initdir, char_u *filter));
+! int gui_mch_dialog __ARGS((int type, char_u *title, char_u *message, char_u *buttons, int dfltbutton, char_u *textfield));
+  /* vim: set ft=c : */
+--- 27,31 ----
+  void gui_mch_set_scrollbar_colors __ARGS((scrollbar_T *sb));
+  Window gui_x11_get_wid __ARGS((void));
+  char_u *gui_mch_browse __ARGS((int saving, char_u *title, char_u *dflt, char_u *ext, char_u *initdir, char_u *filter));
+! int gui_mch_dialog __ARGS((int type, char_u *title, char_u *message, char_u *buttons, int dfltbutton, char_u *textfield, int ex_cmd));
+  /* vim: set ft=c : */
+*** ../vim-7.3.101/src/proto/gui_gtk.pro       2010-08-15 21:57:28.000000000 +0200
+--- src/proto/gui_gtk.pro      2011-01-16 00:22:57.000000000 +0100
+***************
+*** 13,19 ****
+  void gui_mch_destroy_scrollbar __ARGS((scrollbar_T *sb));
+  char_u *gui_mch_browse __ARGS((int saving, char_u *title, char_u *dflt, char_u *ext, char_u *initdir, char_u *filter));
+  char_u *gui_mch_browsedir __ARGS((char_u *title, char_u *initdir));
+! int gui_mch_dialog __ARGS((int type, char_u *title, char_u *message, char_u *buttons, int def_but, char_u *textfield));
+  void gui_mch_show_popupmenu __ARGS((vimmenu_T *menu));
+  void gui_make_popup __ARGS((char_u *path_name, int mouse_pos));
+  void gui_mch_find_dialog __ARGS((exarg_T *eap));
+--- 13,19 ----
+  void gui_mch_destroy_scrollbar __ARGS((scrollbar_T *sb));
+  char_u *gui_mch_browse __ARGS((int saving, char_u *title, char_u *dflt, char_u *ext, char_u *initdir, char_u *filter));
+  char_u *gui_mch_browsedir __ARGS((char_u *title, char_u *initdir));
+! int gui_mch_dialog __ARGS((int type, char_u *title, char_u *message, char_u *buttons, int def_but, char_u *textfield, int ex_cmd));
+  void gui_mch_show_popupmenu __ARGS((vimmenu_T *menu));
+  void gui_make_popup __ARGS((char_u *path_name, int mouse_pos));
+  void gui_mch_find_dialog __ARGS((exarg_T *eap));
+*** ../vim-7.3.101/src/proto/gui_mac.pro       2010-08-15 21:57:28.000000000 +0200
+--- src/proto/gui_mac.pro      2011-01-16 00:31:46.000000000 +0100
+***************
+*** 81,87 ****
+  int gui_mch_get_mouse_y __ARGS((void));
+  void gui_mch_setmouse __ARGS((int x, int y));
+  void gui_mch_show_popupmenu __ARGS((vimmenu_T *menu));
+! int gui_mch_dialog __ARGS((int type, char_u *title, char_u *message, char_u *buttons, int dfltbutton, char_u *textfield));
+  char_u *gui_mch_browse __ARGS((int saving, char_u *title, char_u *dflt, char_u *ext, char_u *initdir, char_u *filter));
+  void gui_mch_set_foreground __ARGS((void));
+  void gui_mch_show_tabline __ARGS((int showit));
+--- 81,87 ----
+  int gui_mch_get_mouse_y __ARGS((void));
+  void gui_mch_setmouse __ARGS((int x, int y));
+  void gui_mch_show_popupmenu __ARGS((vimmenu_T *menu));
+! int gui_mch_dialog __ARGS((int type, char_u *title, char_u *message, char_u *buttons, int dfltbutton, char_u *textfield, int ex_cmd));
+  char_u *gui_mch_browse __ARGS((int saving, char_u *title, char_u *dflt, char_u *ext, char_u *initdir, char_u *filter));
+  void gui_mch_set_foreground __ARGS((void));
+  void gui_mch_show_tabline __ARGS((int showit));
+*** ../vim-7.3.101/src/proto/gui_motif.pro     2010-08-15 21:57:28.000000000 +0200
+--- src/proto/gui_motif.pro    2011-01-16 00:22:58.000000000 +0100
+***************
+*** 29,35 ****
+  void gui_mch_set_scrollbar_colors __ARGS((scrollbar_T *sb));
+  Window gui_x11_get_wid __ARGS((void));
+  char_u *gui_mch_browse __ARGS((int saving, char_u *title, char_u *dflt, char_u *ext, char_u *initdir, char_u *filter));
+! int gui_mch_dialog __ARGS((int type, char_u *title, char_u *message, char_u *button_names, int dfltbutton, char_u *textfield));
+  void gui_mch_enable_footer __ARGS((int showit));
+  void gui_mch_set_footer __ARGS((char_u *s));
+  void gui_mch_show_toolbar __ARGS((int showit));
+--- 29,35 ----
+  void gui_mch_set_scrollbar_colors __ARGS((scrollbar_T *sb));
+  Window gui_x11_get_wid __ARGS((void));
+  char_u *gui_mch_browse __ARGS((int saving, char_u *title, char_u *dflt, char_u *ext, char_u *initdir, char_u *filter));
+! int gui_mch_dialog __ARGS((int type, char_u *title, char_u *message, char_u *button_names, int dfltbutton, char_u *textfield, int ex_cmd));
+  void gui_mch_enable_footer __ARGS((int showit));
+  void gui_mch_set_footer __ARGS((char_u *s));
+  void gui_mch_show_toolbar __ARGS((int showit));
+*** ../vim-7.3.101/src/proto/gui_photon.pro    2010-08-15 21:57:28.000000000 +0200
+--- src/proto/gui_photon.pro   2011-01-16 00:32:33.000000000 +0100
+***************
+*** 8,14 ****
+  void gui_mch_update __ARGS((void));
+  int gui_mch_wait_for_chars __ARGS((int wtime));
+  char_u *gui_mch_browse __ARGS((int saving, char_u *title, char_u *default_name, char_u *ext, char_u *initdir, char_u *filter));
+! int gui_mch_dialog __ARGS((int type, char_u *title, char_u *message, char_u *buttons, int default_button, char_u *textfield));
+  int gui_mch_get_winpos __ARGS((int *x, int *y));
+  void gui_mch_set_winpos __ARGS((int x, int y));
+  void gui_mch_set_shellsize __ARGS((int width, int height, int min_width, int min_height, int base_width, int base_height, int direction));
+--- 8,14 ----
+  void gui_mch_update __ARGS((void));
+  int gui_mch_wait_for_chars __ARGS((int wtime));
+  char_u *gui_mch_browse __ARGS((int saving, char_u *title, char_u *default_name, char_u *ext, char_u *initdir, char_u *filter));
+! int gui_mch_dialog __ARGS((int type, char_u *title, char_u *message, char_u *buttons, int default_button, char_u *textfield, int ex_cmd));
+  int gui_mch_get_winpos __ARGS((int *x, int *y));
+  void gui_mch_set_winpos __ARGS((int x, int y));
+  void gui_mch_set_shellsize __ARGS((int width, int height, int min_width, int min_height, int base_width, int base_height, int direction));
+*** ../vim-7.3.101/src/proto/gui_w16.pro       2010-08-15 21:57:28.000000000 +0200
+--- src/proto/gui_w16.pro      2011-01-16 00:34:36.000000000 +0100
+***************
+*** 74,79 ****
+  void gui_mch_add_menu_item __ARGS((vimmenu_T *menu, int idx));
+  void gui_mch_destroy_menu __ARGS((vimmenu_T *menu));
+  void gui_mch_menu_grey __ARGS((vimmenu_T *menu, int grey));
+! int gui_mch_dialog __ARGS((int type, char_u *title, char_u *message, char_u *buttons, int dfltbutton, char_u *textfield));
+  void gui_mch_set_foreground __ARGS((void));
+  /* vim: set ft=c : */
+--- 74,79 ----
+  void gui_mch_add_menu_item __ARGS((vimmenu_T *menu, int idx));
+  void gui_mch_destroy_menu __ARGS((vimmenu_T *menu));
+  void gui_mch_menu_grey __ARGS((vimmenu_T *menu, int grey));
+! int gui_mch_dialog __ARGS((int type, char_u *title, char_u *message, char_u *buttons, int dfltbutton, char_u *textfield, int ex_cmd));
+  void gui_mch_set_foreground __ARGS((void));
+  /* vim: set ft=c : */
+*** ../vim-7.3.101/src/proto/gui_w32.pro       2010-08-15 21:57:28.000000000 +0200
+--- src/proto/gui_w32.pro      2011-01-16 00:33:12.000000000 +0100
+***************
+*** 81,87 ****
+  void gui_mch_add_menu_item __ARGS((vimmenu_T *menu, int idx));
+  void gui_mch_destroy_menu __ARGS((vimmenu_T *menu));
+  void gui_mch_menu_grey __ARGS((vimmenu_T *menu, int grey));
+! int gui_mch_dialog __ARGS((int type, char_u *title, char_u *message, char_u *buttons, int dfltbutton, char_u *textfield));
+  void gui_mch_set_foreground __ARGS((void));
+  void gui_mch_drawsign __ARGS((int row, int col, int typenr));
+  void *gui_mch_register_sign __ARGS((char_u *signfile));
+--- 81,87 ----
+  void gui_mch_add_menu_item __ARGS((vimmenu_T *menu, int idx));
+  void gui_mch_destroy_menu __ARGS((vimmenu_T *menu));
+  void gui_mch_menu_grey __ARGS((vimmenu_T *menu, int grey));
+! int gui_mch_dialog __ARGS((int type, char_u *title, char_u *message, char_u *buttons, int dfltbutton, char_u *textfield, int ex_cmd));
+  void gui_mch_set_foreground __ARGS((void));
+  void gui_mch_drawsign __ARGS((int row, int col, int typenr));
+  void *gui_mch_register_sign __ARGS((char_u *signfile));
+*** ../vim-7.3.101/src/version.c       2011-01-17 19:53:20.000000000 +0100
+--- src/version.c      2011-01-17 20:05:02.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     102,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+110. You actually volunteer to become your employer's webmaster.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.103.patch0 b/vim/patches/vim-7.3.103.patch0
new file mode 100644 (file)
index 0000000..f9e086f
--- /dev/null
@@ -0,0 +1,145 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.103
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.103
+Problem:    Changing 'fileformat' and then using ":w" in an empty file sets
+            the 'modified' option.
+Solution:   In unchanged() don't ignore 'ff' for an empty file.
+Files:      src/misc1.c, src/option.c, src/proto/option.pro, src/undo.c
+
+
+*** ../vim-7.3.102/src/misc1.c 2010-12-30 12:30:26.000000000 +0100
+--- src/misc1.c        2011-01-22 00:00:24.000000000 +0100
+***************
+*** 2919,2925 ****
+      buf_T    *buf;
+      int              ff;     /* also reset 'fileformat' */
+  {
+!     if (buf->b_changed || (ff && file_ff_differs(buf)))
+      {
+       buf->b_changed = 0;
+       ml_setflags(buf);
+--- 2919,2925 ----
+      buf_T    *buf;
+      int              ff;     /* also reset 'fileformat' */
+  {
+!     if (buf->b_changed || (ff && file_ff_differs(buf, FALSE)))
+      {
+       buf->b_changed = 0;
+       ml_setflags(buf);
+*** ../vim-7.3.102/src/option.c        2010-12-02 21:43:10.000000000 +0100
+--- src/option.c       2011-01-22 00:03:40.000000000 +0100
+***************
+*** 11296,11311 ****
+   * from when editing started (save_file_ff() called).
+   * Also when 'endofline' was changed and 'binary' is set, or when 'bomb' was
+   * changed and 'binary' is not set.
+!  * Don't consider a new, empty buffer to be changed.
+   */
+      int
+! file_ff_differs(buf)
+      buf_T    *buf;
+  {
+      /* In a buffer that was never loaded the options are not valid. */
+      if (buf->b_flags & BF_NEVERLOADED)
+       return FALSE;
+!     if ((buf->b_flags & BF_NEW)
+           && buf->b_ml.ml_line_count == 1
+           && *ml_get_buf(buf, (linenr_T)1, FALSE) == NUL)
+       return FALSE;
+--- 11296,11314 ----
+   * from when editing started (save_file_ff() called).
+   * Also when 'endofline' was changed and 'binary' is set, or when 'bomb' was
+   * changed and 'binary' is not set.
+!  * When "ignore_empty" is true don't consider a new, empty buffer to be
+!  * changed.
+   */
+      int
+! file_ff_differs(buf, ignore_empty)
+      buf_T    *buf;
++     int              ignore_empty;
+  {
+      /* In a buffer that was never loaded the options are not valid. */
+      if (buf->b_flags & BF_NEVERLOADED)
+       return FALSE;
+!     if (ignore_empty
+!          && (buf->b_flags & BF_NEW)
+           && buf->b_ml.ml_line_count == 1
+           && *ml_get_buf(buf, (linenr_T)1, FALSE) == NUL)
+       return FALSE;
+*** ../vim-7.3.102/src/proto/option.pro        2010-08-15 21:57:28.000000000 +0200
+--- src/proto/option.pro       2011-01-22 00:04:35.000000000 +0100
+***************
+*** 54,59 ****
+  int option_was_set __ARGS((char_u *name));
+  int can_bs __ARGS((int what));
+  void save_file_ff __ARGS((buf_T *buf));
+! int file_ff_differs __ARGS((buf_T *buf));
+  int check_ff_value __ARGS((char_u *p));
+  /* vim: set ft=c : */
+--- 54,59 ----
+  int option_was_set __ARGS((char_u *name));
+  int can_bs __ARGS((int what));
+  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));
+  /* vim: set ft=c : */
+*** ../vim-7.3.102/src/undo.c  2010-12-17 18:06:00.000000000 +0100
+--- src/undo.c 2011-01-22 00:03:58.000000000 +0100
+***************
+*** 3304,3310 ****
+  #ifdef FEAT_QUICKFIX
+           !bt_dontwrite(buf) &&
+  #endif
+!          (buf->b_changed || file_ff_differs(buf));
+  }
+  
+      int
+--- 3304,3310 ----
+  #ifdef FEAT_QUICKFIX
+           !bt_dontwrite(buf) &&
+  #endif
+!          (buf->b_changed || file_ff_differs(buf, TRUE));
+  }
+  
+      int
+***************
+*** 3314,3320 ****
+  #ifdef FEAT_QUICKFIX
+       !bt_dontwrite(curbuf) &&
+  #endif
+!      (curbuf->b_changed || file_ff_differs(curbuf));
+  }
+  
+  #if defined(FEAT_EVAL) || defined(PROTO)
+--- 3314,3320 ----
+  #ifdef FEAT_QUICKFIX
+       !bt_dontwrite(curbuf) &&
+  #endif
+!      (curbuf->b_changed || file_ff_differs(curbuf, TRUE));
+  }
+  
+  #if defined(FEAT_EVAL) || defined(PROTO)
+*** ../vim-7.3.102/src/version.c       2011-01-17 20:08:03.000000000 +0100
+--- src/version.c      2011-01-22 00:07:56.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     103,
+  /**/
+
+-- 
+In a world without fences, who needs Gates and Windows?
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.104.patch0 b/vim/patches/vim-7.3.104.patch0
new file mode 100644 (file)
index 0000000..1e719bd
--- /dev/null
@@ -0,0 +1,50 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.104
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Problem:    Conceal: using Tab for cchar causes problems. (ZyX)
+Solution:   Do not accept a control character for cchar.
+Files:      src/syntax.c
+
+
+*** ../vim-7.3.103/src/syntax.c        2010-09-29 18:32:47.000000000 +0200
+--- src/syntax.c       2011-01-22 00:50:20.000000000 +0100
+***************
+*** 4537,4542 ****
+--- 4537,4549 ----
+               ;
+  #endif
+           }
++ #ifdef FEAT_CONCEAL
++          if (!vim_isprintc_strict(*conceal_char))
++          {
++              EMSG(_("E844: invalid cchar value"));
++              return NULL;
++          }
++ #endif
+           arg = skipwhite(arg + 7);
+       }
+       else
+*** ../vim-7.3.103/src/version.c       2011-01-22 00:11:42.000000000 +0100
+--- src/version.c      2011-01-22 00:54:56.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     104,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+132. You come back and check this list every half-hour.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.105.patch0 b/vim/patches/vim-7.3.105.patch0
new file mode 100644 (file)
index 0000000..abf69ac
--- /dev/null
@@ -0,0 +1,50 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.105
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.105
+Problem:    Can't get the value of "b:changedtick" with getbufvar().
+Solution:   Make it work. (Christian Brabandt)
+Files:      src/eval.c
+
+
+*** ../vim-7.3.104/src/eval.c  2011-01-17 20:08:03.000000000 +0100
+--- src/eval.c 2011-01-22 01:10:42.000000000 +0100
+***************
+*** 10866,10871 ****
+--- 10866,10876 ----
+  
+       if (*varname == '&')    /* buffer-local-option */
+           get_option_tv(&varname, rettv, TRUE);
++      else if (STRCMP(varname, "changedtick") == 0)
++      {
++          rettv->v_type = VAR_NUMBER;
++          rettv->vval.v_number = curbuf->b_changedtick;
++      }
+       else
+       {
+           if (*varname == NUL)
+*** ../vim-7.3.104/src/version.c       2011-01-22 00:58:15.000000000 +0100
+--- src/version.c      2011-01-22 01:13:19.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     105,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+133. You communicate with people on other continents more than you
+     do with your own neighbors.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.106.patch0 b/vim/patches/vim-7.3.106.patch0
new file mode 100644 (file)
index 0000000..f98df30
--- /dev/null
@@ -0,0 +1,58 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.106
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.106
+Problem:    When 'cursorbind' is set another window may scroll unexpectedly
+            when 'scrollbind' is also set. (Xavier Wang)
+Solution:   Don't call update_topline() if 'scrollbind' is set.
+Files:      src/move.c
+
+
+*** ../vim-7.3.105/src/move.c  2010-08-15 21:57:29.000000000 +0200
+--- src/move.c 2011-01-22 20:58:50.000000000 +0100
+***************
+*** 2882,2890 ****
+           if (has_mbyte)
+               mb_adjust_cursor();
+  # endif
+- 
+           redraw_later(VALID);
+!          update_topline();
+  # ifdef FEAT_WINDOWS
+           curwin->w_redr_status = TRUE;
+  # endif
+--- 2882,2892 ----
+           if (has_mbyte)
+               mb_adjust_cursor();
+  # endif
+           redraw_later(VALID);
+! 
+!          /* Only scroll when 'scrollbind' hasn't done this. */
+!          if (!curwin->w_p_scb)
+!              update_topline();
+  # ifdef FEAT_WINDOWS
+           curwin->w_redr_status = TRUE;
+  # endif
+*** ../vim-7.3.105/src/version.c       2011-01-22 01:13:33.000000000 +0100
+--- src/version.c      2011-01-22 21:03:21.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     106,
+  /**/
+
+-- 
+Never eat yellow snow.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.107.patch0 b/vim/patches/vim-7.3.107.patch0
new file mode 100644 (file)
index 0000000..1256b81
--- /dev/null
@@ -0,0 +1,58 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.107
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.107
+Problem:    Year number for :undolist can be confused with month or day.
+Solution:   Change "%y" to "%Y".
+Files:      src/undo.c
+
+
+*** ../vim-7.3.106/src/undo.c  2011-01-22 00:11:42.000000000 +0100
+--- src/undo.c 2011-01-22 00:03:58.000000000 +0100
+***************
+*** 2884,2890 ****
+           (void)strftime((char *)buf, buflen, "%m/%d %H:%M:%S", curtime);
+       else
+           /* long ago */
+!          (void)strftime((char *)buf, buflen, "%y/%m/%d %H:%M:%S", curtime);
+      }
+      else
+  #endif
+--- 2884,2890 ----
+           (void)strftime((char *)buf, buflen, "%m/%d %H:%M:%S", curtime);
+       else
+           /* long ago */
+!          (void)strftime((char *)buf, buflen, "%Y/%m/%d %H:%M:%S", curtime);
+      }
+      else
+  #endif
+*** ../vim-7.3.106/src/version.c       2011-01-22 21:05:02.000000000 +0100
+--- src/version.c      2011-01-22 21:24:07.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     107,
+  /**/
+
+-- 
+"The sun oozed over the horizon, shoved aside darkness, crept along the
+greensward, and, with sickly fingers, pushed through the castle window,
+revealing the pillaged princess, hand at throat, crown asunder, gaping
+in frenzied horror at the sated, sodden amphibian lying beside her,
+disbelieving the magnitude of the frog's deception, screaming madly,
+"You lied!"
+    - Winner of the Bulwer-Lytton contest (San Jose State University),
+      wherein one writes only the first line of a bad novel
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.108.patch0 b/vim/patches/vim-7.3.108.patch0
new file mode 100644 (file)
index 0000000..91f3ceb
--- /dev/null
@@ -0,0 +1,111 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.108
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.108
+Problem:    Useless check for NULL when calling vim_free().
+Solution:   Remove the check. (Dominique Pelle)
+Files:     src/eval.c, src/ex_cmds.c, src/os_win32.c
+
+
+*** ../vim-7.3.107/src/eval.c  2011-01-22 01:13:33.000000000 +0100
+--- src/eval.c 2011-01-30 21:37:53.000000000 +0100
+***************
+*** 5106,5114 ****
+           else
+               ret = OK;
+       }
+! 
+!      if (alias != NULL)
+!          vim_free(alias);
+      }
+  
+      *arg = skipwhite(*arg);
+--- 5106,5112 ----
+           else
+               ret = OK;
+       }
+!      vim_free(alias);
+      }
+  
+      *arg = skipwhite(*arg);
+***************
+*** 19807,19813 ****
+           EMSG2(_("E704: Funcref variable name must start with a capital: %s"), name);
+           return;
+       }
+!      /* Don't allow hiding a function.  When "v" is not NULL we migth be
+        * assigning another function to the same var, the type is checked
+        * below. */
+       if (v == NULL && function_exists(name))
+--- 19805,19811 ----
+           EMSG2(_("E704: Funcref variable name must start with a capital: %s"), name);
+           return;
+       }
+!      /* Don't allow hiding a function.  When "v" is not NULL we might be
+        * assigning another function to the same var, the type is checked
+        * below. */
+       if (v == NULL && function_exists(name))
+*** ../vim-7.3.107/src/ex_cmds.c       2010-12-17 18:06:00.000000000 +0100
+--- src/ex_cmds.c      2011-01-30 21:37:53.000000000 +0100
+***************
+*** 5412,5418 ****
+      vir_T    *virp;
+      int              force;
+  {
+!     if (old_sub != NULL && force)
+       vim_free(old_sub);
+      if (force || old_sub == NULL)
+       old_sub = viminfo_readstring(virp, 1, TRUE);
+--- 5412,5418 ----
+      vir_T    *virp;
+      int              force;
+  {
+!     if (force)
+       vim_free(old_sub);
+      if (force || old_sub == NULL)
+       old_sub = viminfo_readstring(virp, 1, TRUE);
+*** ../vim-7.3.107/src/os_win32.c      2010-12-17 20:23:56.000000000 +0100
+--- src/os_win32.c     2011-01-30 21:37:53.000000000 +0100
+***************
+*** 1886,1893 ****
+       cb->BufferSize.X = cb->Info.dwSize.X;
+       cb->BufferSize.Y = cb->Info.dwSize.Y;
+       NumCells = cb->BufferSize.X * cb->BufferSize.Y;
+!      if (cb->Buffer != NULL)
+!          vim_free(cb->Buffer);
+       cb->Buffer = (PCHAR_INFO)alloc(NumCells * sizeof(CHAR_INFO));
+       if (cb->Buffer == NULL)
+           return FALSE;
+--- 1886,1892 ----
+       cb->BufferSize.X = cb->Info.dwSize.X;
+       cb->BufferSize.Y = cb->Info.dwSize.Y;
+       NumCells = cb->BufferSize.X * cb->BufferSize.Y;
+!      vim_free(cb->Buffer);
+       cb->Buffer = (PCHAR_INFO)alloc(NumCells * sizeof(CHAR_INFO));
+       if (cb->Buffer == NULL)
+           return FALSE;
+*** ../vim-7.3.107/src/version.c       2011-01-22 21:25:07.000000000 +0100
+--- src/version.c      2011-02-01 13:47:07.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     108,
+  /**/
+
+-- 
+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/vim/patches/vim-7.3.109.patch0 b/vim/patches/vim-7.3.109.patch0
new file mode 100644 (file)
index 0000000..ce35fb0
--- /dev/null
@@ -0,0 +1,266 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.109
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.109
+Problem:    Processing new Esperanto spell file fails and crashes Vim.
+           (Dominique Pelle)
+Solution:   When running out of memory give an error.  Handle '?' in
+           COMPOUNDRULE properly.
+Files:     src/spell.c
+
+
+*** ../vim-7.3.108/src/spell.c 2010-12-17 18:06:00.000000000 +0100
+--- src/spell.c        2011-02-01 13:43:52.000000000 +0100
+***************
+*** 3634,3640 ****
+       }
+  
+       /* Add all flags to "sl_compallflags". */
+!      if (vim_strchr((char_u *)"+*[]/", c) == NULL
+               && !byte_in_str(slang->sl_compallflags, c))
+       {
+           *ap++ = c;
+--- 3634,3640 ----
+       }
+  
+       /* Add all flags to "sl_compallflags". */
+!      if (vim_strchr((char_u *)"?*+[]/", c) == NULL
+               && !byte_in_str(slang->sl_compallflags, c))
+       {
+           *ap++ = c;
+***************
+*** 3664,3670 ****
+       /* Copy flag to "sl_comprules", unless we run into a wildcard. */
+       if (crp != NULL)
+       {
+!          if (c == '+' || c == '*')
+           {
+               vim_free(slang->sl_comprules);
+               slang->sl_comprules = NULL;
+--- 3664,3670 ----
+       /* Copy flag to "sl_comprules", unless we run into a wildcard. */
+       if (crp != NULL)
+       {
+!          if (c == '?' || c == '+' || c == '*')
+           {
+               vim_free(slang->sl_comprules);
+               slang->sl_comprules = NULL;
+***************
+*** 3682,3689 ****
+       }
+       else                /* normal char, "[abc]" and '*' are copied as-is */
+       {
+!          if (c == '+' || c == '~')
+!              *pp++ = '\\';       /* "a+" becomes "a\+" */
+  #ifdef FEAT_MBYTE
+           if (enc_utf8)
+               pp += mb_char2bytes(c, pp);
+--- 3682,3689 ----
+       }
+       else                /* normal char, "[abc]" and '*' are copied as-is */
+       {
+!          if (c == '?' || c == '+' || c == '~')
+!              *pp++ = '\\';       /* "a?" becomes "a\?", "a+" becomes "a\+" */
+  #ifdef FEAT_MBYTE
+           if (enc_utf8)
+               pp += mb_char2bytes(c, pp);
+***************
+*** 4951,4956 ****
+--- 4951,4958 ----
+  
+      sblock_T *si_blocks;     /* memory blocks used */
+      long     si_blocks_cnt;  /* memory blocks allocated */
++     int              si_did_emsg;    /* TRUE when ran out of memory */
++ 
+      long     si_compress_cnt;    /* words to add before lowering
+                                      compression limit */
+      wordnode_T       *si_first_free; /* List of nodes that have been freed during
+***************
+*** 5477,5497 ****
+           }
+           else if (is_aff_rule(items, itemcnt, "COMPOUNDRULE", 2))
+           {
+!              /* Concatenate this string to previously defined ones, using a
+!               * slash to separate them. */
+!              l = (int)STRLEN(items[1]) + 1;
+!              if (compflags != NULL)
+!                  l += (int)STRLEN(compflags) + 1;
+!              p = getroom(spin, l, FALSE);
+!              if (p != NULL)
+               {
+                   if (compflags != NULL)
+                   {
+!                      STRCPY(p, compflags);
+!                      STRCAT(p, "/");
+                   }
+-                  STRCAT(p, items[1]);
+-                  compflags = p;
+               }
+           }
+           else if (is_aff_rule(items, itemcnt, "COMPOUNDWORDMAX", 2)
+--- 5479,5503 ----
+           }
+           else if (is_aff_rule(items, itemcnt, "COMPOUNDRULE", 2))
+           {
+!              /* Don't use the first rule if it is a number. */
+!              if (compflags != NULL || *skipdigits(items[1]) != NUL)
+               {
++                  /* Concatenate this string to previously defined ones,
++                   * using a slash to separate them. */
++                  l = (int)STRLEN(items[1]) + 1;
+                   if (compflags != NULL)
++                      l += (int)STRLEN(compflags) + 1;
++                  p = getroom(spin, l, FALSE);
++                  if (p != NULL)
+                   {
+!                      if (compflags != NULL)
+!                      {
+!                          STRCPY(p, compflags);
+!                          STRCAT(p, "/");
+!                      }
+!                      STRCAT(p, items[1]);
+!                      compflags = p;
+                   }
+               }
+           }
+           else if (is_aff_rule(items, itemcnt, "COMPOUNDWORDMAX", 2)
+***************
+*** 6291,6297 ****
+  
+      for (p = compflags; *p != NUL; )
+      {
+!      if (vim_strchr((char_u *)"/*+[]", *p) != NULL)
+           /* Copy non-flag characters directly. */
+           *tp++ = *p++;
+       else
+--- 6297,6303 ----
+  
+      for (p = compflags; *p != NUL; )
+      {
+!      if (vim_strchr((char_u *)"/?*+[]", *p) != NULL)
+           /* Copy non-flag characters directly. */
+           *tp++ = *p++;
+       else
+***************
+*** 6320,6326 ****
+                   {
+                       check_renumber(spin);
+                       id = spin->si_newcompID--;
+!                  } while (vim_strchr((char_u *)"/+*[]\\-^", id) != NULL);
+                   ci->ci_newID = id;
+                   hash_add(&aff->af_comp, ci->ci_key);
+               }
+--- 6326,6332 ----
+                   {
+                       check_renumber(spin);
+                       id = spin->si_newcompID--;
+!                  } while (vim_strchr((char_u *)"/?*+[]\\-^", id) != NULL);
+                   ci->ci_newID = id;
+                   hash_add(&aff->af_comp, ci->ci_key);
+               }
+***************
+*** 7364,7373 ****
+  
+      if (bl == NULL || bl->sb_used + len > SBLOCKSIZE)
+      {
+!      /* Allocate a block of memory. This is not freed until much later. */
+!      bl = (sblock_T *)alloc_clear((unsigned)(sizeof(sblock_T) + SBLOCKSIZE));
+       if (bl == NULL)
+           return NULL;
+       bl->sb_next = spin->si_blocks;
+       spin->si_blocks = bl;
+       bl->sb_used = 0;
+--- 7370,7390 ----
+  
+      if (bl == NULL || bl->sb_used + len > SBLOCKSIZE)
+      {
+!      if (len >= SBLOCKSIZE)
+!          bl = NULL;
+!      else
+!          /* Allocate a block of memory. It is not freed until much later. */
+!          bl = (sblock_T *)alloc_clear(
+!                                 (unsigned)(sizeof(sblock_T) + SBLOCKSIZE));
+       if (bl == NULL)
++      {
++          if (!spin->si_did_emsg)
++          {
++              EMSG(_("E845: Insufficient memory, word list will be incomplete"));
++              spin->si_did_emsg = TRUE;
++          }
+           return NULL;
++      }
+       bl->sb_next = spin->si_blocks;
+       spin->si_blocks = bl;
+       bl->sb_used = 0;
+***************
+*** 7382,7387 ****
+--- 7399,7405 ----
+  
+  /*
+   * Make a copy of a string into memory allocated with getroom().
++  * Returns NULL when out of memory.
+   */
+      static char_u *
+  getroom_save(spin, s)
+***************
+*** 7416,7421 ****
+--- 7434,7440 ----
+  
+  /*
+   * Allocate the root of a word tree.
++  * Returns NULL when out of memory.
+   */
+      static wordnode_T *
+  wordtree_alloc(spin)
+***************
+*** 7700,7705 ****
+--- 7719,7725 ----
+  /*
+   * Get a wordnode_T, either from the list of previously freed nodes or
+   * allocate a new one.
++  * Returns NULL when out of memory.
+   */
+      static wordnode_T *
+  get_wordnode(spin)
+***************
+*** 7717,7723 ****
+       --spin->si_free_count;
+      }
+  #ifdef SPELL_PRINTTREE
+!     n->wn_nr = ++spin->si_wordnode_nr;
+  #endif
+      return n;
+  }
+--- 7737,7744 ----
+       --spin->si_free_count;
+      }
+  #ifdef SPELL_PRINTTREE
+!     if (n != NULL)
+!      n->wn_nr = ++spin->si_wordnode_nr;
+  #endif
+      return n;
+  }
+*** ../vim-7.3.108/src/version.c       2011-02-01 13:48:47.000000000 +0100
+--- src/version.c      2011-02-01 13:56:38.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     109,
+  /**/
+
+-- 
+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/vim/patches/vim-7.3.110.patch0 b/vim/patches/vim-7.3.110.patch0
new file mode 100644 (file)
index 0000000..3ffc7f2
--- /dev/null
@@ -0,0 +1,76 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.110
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.110
+Problem:    The "nbsp" item in 'listchars' isn't used for ":list".
+Solution:   Make it work. (Christian Brabandt)
+Files:     src/message.c
+
+
+*** ../vim-7.3.109/src/message.c       2011-01-17 20:08:03.000000000 +0100
+--- src/message.c      2011-02-01 17:06:21.000000000 +0100
+***************
+*** 1637,1644 ****
+       else if (has_mbyte && (l = (*mb_ptr2len)(s)) > 1)
+       {
+           col += (*mb_ptr2cells)(s);
+!          mch_memmove(buf, s, (size_t)l);
+!          buf[l] = NUL;
+           msg_puts(buf);
+           s += l;
+           continue;
+--- 1637,1652 ----
+       else if (has_mbyte && (l = (*mb_ptr2len)(s)) > 1)
+       {
+           col += (*mb_ptr2cells)(s);
+!          if (lcs_nbsp != NUL && list && mb_ptr2char(s) == 160)
+!          {
+!              mb_char2bytes(lcs_nbsp, buf);
+!              buf[(*mb_ptr2len)(buf)] = NUL;
+!          }
+!          else
+!          {
+!              mch_memmove(buf, s, (size_t)l);
+!              buf[l] = NUL;
+!          }
+           msg_puts(buf);
+           s += l;
+           continue;
+***************
+*** 1664,1669 ****
+--- 1672,1682 ----
+                   attr = hl_attr(HLF_8);
+               }
+           }
++          else if (c == 160 && list && lcs_nbsp != NUL)
++          {
++              c = lcs_nbsp;
++              attr = hl_attr(HLF_8);
++          }
+           else if (c == NUL && list && lcs_eol != NUL)
+           {
+               p_extra = (char_u *)"";
+*** ../vim-7.3.109/src/version.c       2011-02-01 13:59:44.000000000 +0100
+--- src/version.c      2011-02-01 17:08:31.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     110,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+176. You lie, even to user-friends, about how long you were online yesterday.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.111.patch0 b/vim/patches/vim-7.3.111.patch0
new file mode 100644 (file)
index 0000000..e3cf717
--- /dev/null
@@ -0,0 +1,121 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.111
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.111 (after 7.3.100)
+Problem:    Executing a :normal command in 'statusline' evaluation causes the
+           cursor to move. (Dominique Pelle)
+Solution:   When updating the cursor for 'cursorbind' allow the cursor beyond
+           the end of the line.  When evaluating 'statusline' temporarily
+           reset 'cursorbind'.
+Files:     src/move.c, src/screen.c
+
+
+*** ../vim-7.3.110/src/move.c  2011-01-22 21:05:02.000000000 +0100
+--- src/move.c 2011-02-01 17:36:10.000000000 +0100
+***************
+*** 2846,2851 ****
+--- 2846,2852 ----
+      colnr_T  col =  curwin->w_cursor.col;
+      win_T    *old_curwin = curwin;
+      buf_T    *old_curbuf = curbuf;
++     int              restart_edit_save;
+  # ifdef FEAT_VISUAL
+      int              old_VIsual_select = VIsual_select;
+      int              old_VIsual_active = VIsual_active;
+***************
+*** 2875,2882 ****
+               curwin->w_cursor.lnum = line;
+           curwin->w_cursor.col = col;
+  
+!          /* Make sure the cursor is in a valid position. */
+           check_cursor();
+  # ifdef FEAT_MBYTE
+           /* Correct cursor for multi-byte character. */
+           if (has_mbyte)
+--- 2876,2887 ----
+               curwin->w_cursor.lnum = line;
+           curwin->w_cursor.col = col;
+  
+!          /* Make sure the cursor is in a valid position.  Temporarily set
+!           * "restart_edit" to allow the cursor to be beyond the EOL. */
+!          restart_edit_save = restart_edit;
+!          restart_edit = TRUE;
+           check_cursor();
++          restart_edit = restart_edit_save;
+  # ifdef FEAT_MBYTE
+           /* Correct cursor for multi-byte character. */
+           if (has_mbyte)
+*** ../vim-7.3.110/src/screen.c        2010-12-30 14:57:03.000000000 +0100
+--- src/screen.c       2011-02-01 17:45:45.000000000 +0100
+***************
+*** 6435,6440 ****
+--- 6435,6442 ----
+      struct   stl_hlrec hltab[STL_MAX_ITEM];
+      struct   stl_hlrec tabtab[STL_MAX_ITEM];
+      int              use_sandbox = FALSE;
++     win_T    *ewp;
++     int              p_crb_save;
+  
+      /* setup environment for the task at hand */
+      if (wp == NULL)
+***************
+*** 6513,6526 ****
+      if (maxwidth <= 0)
+       return;
+  
+      /* Make a copy, because the statusline may include a function call that
+       * might change the option value and free the memory. */
+      stl = vim_strsave(stl);
+!     width = build_stl_str_hl(wp == NULL ? curwin : wp,
+!                              buf, sizeof(buf),
+                               stl, use_sandbox,
+                               fillchar, maxwidth, hltab, tabtab);
+      vim_free(stl);
+  
+      /* Make all characters printable. */
+      p = transstr(buf);
+--- 6515,6534 ----
+      if (maxwidth <= 0)
+       return;
+  
++     /* Temporarily reset 'cursorbind', we don't want a side effect from moving
++      * the cursor away and back. */
++     ewp = wp == NULL ? curwin : wp;
++     p_crb_save = ewp->w_p_crb;
++     ewp->w_p_crb = FALSE;
++ 
+      /* Make a copy, because the statusline may include a function call that
+       * might change the option value and free the memory. */
+      stl = vim_strsave(stl);
+!     width = build_stl_str_hl(ewp, buf, sizeof(buf),
+                               stl, use_sandbox,
+                               fillchar, maxwidth, hltab, tabtab);
+      vim_free(stl);
++     ewp->w_p_crb = p_crb_save;
+  
+      /* Make all characters printable. */
+      p = transstr(buf);
+*** ../vim-7.3.110/src/version.c       2011-02-01 17:12:20.000000000 +0100
+--- src/version.c      2011-02-01 18:00:14.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     111,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+177. You log off of your system because it's time to go 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/vim/patches/vim-7.3.112.patch0 b/vim/patches/vim-7.3.112.patch0
new file mode 100644 (file)
index 0000000..af9b881
--- /dev/null
@@ -0,0 +1,63 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.112
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.112
+Problem:    Setting 'statusline' to "%!'asdf%' reads uninitialized memory.
+Solution:   Check for NUL after %.
+Files:     src/buffer.c
+
+
+*** ../vim-7.3.111/src/buffer.c        2010-10-27 16:17:56.000000000 +0200
+--- src/buffer.c       2011-02-01 21:40:17.000000000 +0100
+***************
+*** 3364,3370 ****
+   * or truncated if too long, fillchar is used for all whitespace.
+   */
+      int
+! build_stl_str_hl(wp, out, outlen, fmt, use_sandbox, fillchar, maxwidth, hltab, tabtab)
+      win_T    *wp;
+      char_u   *out;           /* buffer to write into != NameBuff */
+      size_t   outlen;         /* length of out[] */
+--- 3364,3371 ----
+   * or truncated if too long, fillchar is used for all whitespace.
+   */
+      int
+! build_stl_str_hl(wp, out, outlen, fmt, use_sandbox, fillchar,
+!                                                    maxwidth, hltab, tabtab)
+      win_T    *wp;
+      char_u   *out;           /* buffer to write into != NameBuff */
+      size_t   outlen;         /* length of out[] */
+***************
+*** 3474,3479 ****
+--- 3475,3482 ----
+        * Handle one '%' item.
+        */
+       s++;
++      if (*s == NUL)  /* ignore trailing % */
++          break;
+       if (*s == '%')
+       {
+           if (p + 1 >= out + outlen)
+*** ../vim-7.3.111/src/version.c       2011-02-01 18:01:06.000000000 +0100
+--- src/version.c      2011-02-01 21:54:01.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     112,
+  /**/
+
+-- 
+Rule #1: Don't give somebody a tool that he's going to hurt himself 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/vim/patches/vim-7.3.113.patch0 b/vim/patches/vim-7.3.113.patch0
new file mode 100644 (file)
index 0000000..a4383ad
--- /dev/null
@@ -0,0 +1,55 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.113
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.113
+Problem:    Windows: Fall back directory for creating temp file is wrong.
+Solution:   Use "." instead of empty string. (Hong Xu)
+Files:     src/fileio.c
+
+
+*** ../vim-7.3.112/src/fileio.c        2011-01-17 20:08:03.000000000 +0100
+--- src/fileio.c       2011-02-06 13:14:25.000000000 +0100
+***************
+*** 7459,7465 ****
+  
+      STRCPY(itmp, "");
+      if (GetTempPath(_MAX_PATH, szTempFile) == 0)
+!      szTempFile[0] = NUL;    /* GetTempPath() failed, use current dir */
+      strcpy(buf4, "VIM");
+      buf4[2] = extra_char;   /* make it "VIa", "VIb", etc. */
+      if (GetTempFileName(szTempFile, buf4, 0, itmp) == 0)
+--- 7459,7468 ----
+  
+      STRCPY(itmp, "");
+      if (GetTempPath(_MAX_PATH, szTempFile) == 0)
+!     {
+!      szTempFile[0] = '.';    /* GetTempPath() failed, use current dir */
+!      szTempFile[1] = NUL;
+!     }
+      strcpy(buf4, "VIM");
+      buf4[2] = extra_char;   /* make it "VIa", "VIb", etc. */
+      if (GetTempFileName(szTempFile, buf4, 0, itmp) == 0)
+*** ../vim-7.3.112/src/version.c       2011-02-01 21:54:56.000000000 +0100
+--- src/version.c      2011-02-09 14:46:12.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     113,
+  /**/
+
+-- 
+'Psychologist' -- Someone who looks at everyone else when
+an attractive woman enters the room.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.114.patch0 b/vim/patches/vim-7.3.114.patch0
new file mode 100644 (file)
index 0000000..34bdd36
--- /dev/null
@@ -0,0 +1,50 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.114
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.114
+Problem:    Potential problem in initialization when giving an error message
+           early.
+Solution:   Initialize 'verbosefile' empty. (Ben Schmidt)
+Files:     src/option.h
+
+
+*** ../vim-7.3.113/src/option.h        2010-12-02 16:01:23.000000000 +0100
+--- src/option.h       2011-02-09 15:37:36.000000000 +0100
+***************
+*** 854,860 ****
+--- 854,864 ----
+  # define VE_ONEMORE  8
+  #endif
+  EXTERN long  p_verbose;      /* 'verbose' */
++ #ifdef IN_OPTION_C
++ char_u       *p_vfile = (char_u *)""; /* used before options are initialized */
++ #else
+  EXTERN char_u        *p_vfile;       /* 'verbosefile' */
++ #endif
+  EXTERN int   p_warn;         /* 'warn' */
+  #ifdef FEAT_CMDL_COMPL
+  EXTERN char_u        *p_wop;         /* 'wildoptions' */
+*** ../vim-7.3.113/src/version.c       2011-02-09 14:46:58.000000000 +0100
+--- src/version.c      2011-02-09 15:46:17.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     114,
+  /**/
+
+-- 
+From the classified section of a city newspaper:
+Dog for sale: eats anything and is fond of children.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.115.patch0 b/vim/patches/vim-7.3.115.patch0
new file mode 100644 (file)
index 0000000..dd36df3
--- /dev/null
@@ -0,0 +1,58 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.115
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.115
+Problem:    Vim can crash when tmpnam() returns NULL.
+Solution:   Check for NULL. (Hong Xu)
+Files:     src/fileio.c
+
+
+*** ../vim-7.3.114/src/fileio.c        2011-02-09 14:46:58.000000000 +0100
+--- src/fileio.c       2011-02-09 16:14:35.000000000 +0100
+***************
+*** 7483,7490 ****
+  # else /* WIN3264 */
+  
+  #  ifdef USE_TMPNAM
+      /* tmpnam() will make its own name */
+!     if (*tmpnam((char *)itmp) == NUL)
+       return NULL;
+  #  else
+      char_u   *p;
+--- 7483,7493 ----
+  # else /* WIN3264 */
+  
+  #  ifdef USE_TMPNAM
++     char_u   *p;
++ 
+      /* tmpnam() will make its own name */
+!     p = tmpnam((char *)itmp);
+!     if (p == NULL || *p == NUL)
+       return NULL;
+  #  else
+      char_u   *p;
+*** ../vim-7.3.114/src/version.c       2011-02-09 15:59:32.000000000 +0100
+--- src/version.c      2011-02-09 16:44:11.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     115,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+218. Your spouse hands you a gift wrapped magnet with your PC's name
+     on it and you accuse him or her of genocide.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.116.patch0 b/vim/patches/vim-7.3.116.patch0
new file mode 100644 (file)
index 0000000..ee9543a
--- /dev/null
@@ -0,0 +1,58 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.116
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.116
+Problem:    'cursorline' is displayed too short when there are concealed
+           characters and 'list' is set.  (Dennis Preiser)
+Solution:   Check for 'cursorline' when 'list' is set. (Christian Brabandt)
+Files:     src/screen.c
+
+
+*** ../vim-7.3.115/src/screen.c        2011-02-01 18:01:06.000000000 +0100
+--- src/screen.c       2011-02-09 16:59:28.000000000 +0100
+***************
+*** 5099,5105 ****
+  #ifdef FEAT_DIFF
+                   || filler_todo > 0
+  #endif
+!                  || (wp->w_p_list && lcs_eol != NUL && p_extra != at_end_str)
+                   || (n_extra != 0 && (c_extra != NUL || *p_extra != NUL)))
+               )
+       {
+--- 5099,5109 ----
+  #ifdef FEAT_DIFF
+                   || filler_todo > 0
+  #endif
+!                  || (wp->w_p_list && lcs_eol != NUL && p_extra != at_end_str
+! #ifdef FEAT_SYN_HL
+!                         && !wp->w_p_cul
+! #endif
+!                      )
+                   || (n_extra != 0 && (c_extra != NUL || *p_extra != NUL)))
+               )
+       {
+*** ../vim-7.3.115/src/version.c       2011-02-09 16:44:45.000000000 +0100
+--- src/version.c      2011-02-09 17:08:58.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     116,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+219. Your spouse has his or her lawyer deliver the divorce papers...
+     via e-mail.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.117.patch0 b/vim/patches/vim-7.3.117.patch0
new file mode 100644 (file)
index 0000000..19fcf73
--- /dev/null
@@ -0,0 +1,89 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.117
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.117
+Problem:    On some systems --as-needed does not work, because the "tinfo"
+           library is included indirectly from "ncurses". (Charles Campbell)
+Solution:   In configure prefer using "tinfo" instead of "ncurses".
+Files:     src/configure.in, src/auto/configure
+
+
+*** ../vim-7.3.116/src/configure.in    2010-11-16 19:25:56.000000000 +0100
+--- src/configure.in   2011-02-09 17:28:16.000000000 +0100
+***************
+*** 2618,2630 ****
+    AC_MSG_RESULT([empty: automatic terminal library selection])
+    dnl  On HP-UX 10.10 termcap or termlib should be used instead of
+    dnl  curses, because curses is much slower.
+!   dnl  Newer versions of ncurses are preferred over anything.
+    dnl  Older versions of ncurses have bugs, get a new one!
+    dnl  Digital Unix (OSF1) should use curses (Ronald Schild).
+    dnl  On SCO Openserver should prefer termlib (Roger Cornelius).
+    case "`uname -s 2>/dev/null`" in
+!      OSF1|SCO_SV)    tlibs="ncurses curses termlib termcap";;
+!      *)      tlibs="ncurses termlib termcap curses";;
+    esac
+    for libname in $tlibs; do
+      AC_CHECK_LIB(${libname}, tgetent,,)
+--- 2618,2631 ----
+    AC_MSG_RESULT([empty: automatic terminal library selection])
+    dnl  On HP-UX 10.10 termcap or termlib should be used instead of
+    dnl  curses, because curses is much slower.
+!   dnl  Newer versions of ncurses are preferred over anything, except
+!   dnl  when tinfo has been split off, it conains all we need.
+    dnl  Older versions of ncurses have bugs, get a new one!
+    dnl  Digital Unix (OSF1) should use curses (Ronald Schild).
+    dnl  On SCO Openserver should prefer termlib (Roger Cornelius).
+    case "`uname -s 2>/dev/null`" in
+!      OSF1|SCO_SV)    tlibs="tinfo ncurses curses termlib termcap";;
+!      *)      tlibs="tinfo ncurses termlib termcap curses";;
+    esac
+    for libname in $tlibs; do
+      AC_CHECK_LIB(${libname}, tgetent,,)
+*** ../vim-7.3.116/src/auto/configure  2010-11-16 19:25:56.000000000 +0100
+--- src/auto/configure 2011-02-09 17:29:13.000000000 +0100
+***************
+*** 9886,9894 ****
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: empty: automatic terminal library selection" >&5
+  $as_echo "empty: automatic terminal library selection" >&6; }
+!               case "`uname -s 2>/dev/null`" in
+!      OSF1|SCO_SV)    tlibs="ncurses curses termlib termcap";;
+!      *)      tlibs="ncurses termlib termcap curses";;
+    esac
+    for libname in $tlibs; do
+      as_ac_Lib=`$as_echo "ac_cv_lib_${libname}''_tgetent" | $as_tr_sh`
+--- 9886,9894 ----
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: empty: automatic terminal library selection" >&5
+  $as_echo "empty: automatic terminal library selection" >&6; }
+!                 case "`uname -s 2>/dev/null`" in
+!      OSF1|SCO_SV)    tlibs="tinfo ncurses curses termlib termcap";;
+!      *)      tlibs="tinfo ncurses termlib termcap curses";;
+    esac
+    for libname in $tlibs; do
+      as_ac_Lib=`$as_echo "ac_cv_lib_${libname}''_tgetent" | $as_tr_sh`
+*** ../vim-7.3.116/src/version.c       2011-02-09 17:09:26.000000000 +0100
+--- src/version.c      2011-02-09 17:41:37.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     117,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+220. Your wife asks for sex and you tell her where to find you on IRC.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.118.patch0 b/vim/patches/vim-7.3.118.patch0
new file mode 100644 (file)
index 0000000..fecb948
--- /dev/null
@@ -0,0 +1,69 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.118
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.118
+Problem:    Ruby uses SIGVTALARM which makes Vim exit. (Alec Tica)
+Solution:   Ignore SIGVTALARM. (Dominique Pelle)
+Files:     src/os_unix.c
+
+
+*** ../vim-7.3.117/src/os_unix.c       2010-12-17 16:27:10.000000000 +0100
+--- src/os_unix.c      2011-02-09 18:19:57.000000000 +0100
+***************
+*** 283,289 ****
+  #ifdef SIGTERM
+      {SIGTERM,            "TERM",     TRUE},
+  #endif
+! #ifdef SIGVTALRM
+      {SIGVTALRM,          "VTALRM",   TRUE},
+  #endif
+  #if defined(SIGPROF) && !defined(FEAT_MZSCHEME) && !defined(WE_ARE_PROFILING)
+--- 283,289 ----
+  #ifdef SIGTERM
+      {SIGTERM,            "TERM",     TRUE},
+  #endif
+! #if defined(SIGVTALRM) && !defined(FEAT_RUBY)
+      {SIGVTALRM,          "VTALRM",   TRUE},
+  #endif
+  #if defined(SIGPROF) && !defined(FEAT_MZSCHEME) && !defined(WE_ARE_PROFILING)
+***************
+*** 1107,1113 ****
+   * On Linux, signal is not always handled immediately either.
+   * See https://bugs.launchpad.net/bugs/291373
+   *
+!  * volatile because it is used in in signal handler sigcont_handler().
+   */
+  static volatile int sigcont_received;
+  static RETSIGTYPE sigcont_handler __ARGS(SIGPROTOARG);
+--- 1107,1113 ----
+   * On Linux, signal is not always handled immediately either.
+   * See https://bugs.launchpad.net/bugs/291373
+   *
+!  * volatile because it is used in signal handler sigcont_handler().
+   */
+  static volatile int sigcont_received;
+  static RETSIGTYPE sigcont_handler __ARGS(SIGPROTOARG);
+*** ../vim-7.3.117/src/version.c       2011-02-09 17:42:53.000000000 +0100
+--- src/version.c      2011-02-09 18:46:53.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     118,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+221. Your wife melts your keyboard in the oven.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.119.patch0 b/vim/patches/vim-7.3.119.patch0
new file mode 100644 (file)
index 0000000..1547625
--- /dev/null
@@ -0,0 +1,52 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.1
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.119
+Problem:    Build problem on Mac. (Nicholas Stallard)
+Solution:   Use "extern" instead of "EXTERN" for p_vfile.
+Files:     src/option.h
+
+
+*** ../vim-7.3.118/src/option.h        2011-02-09 15:59:32.000000000 +0100
+--- src/option.h       2011-02-12 13:56:50.000000000 +0100
+***************
+*** 857,863 ****
+  #ifdef IN_OPTION_C
+  char_u       *p_vfile = (char_u *)""; /* used before options are initialized */
+  #else
+! EXTERN char_u        *p_vfile;       /* 'verbosefile' */
+  #endif
+  EXTERN int   p_warn;         /* 'warn' */
+  #ifdef FEAT_CMDL_COMPL
+--- 857,863 ----
+  #ifdef IN_OPTION_C
+  char_u       *p_vfile = (char_u *)""; /* used before options are initialized */
+  #else
+! extern char_u        *p_vfile;       /* 'verbosefile' */
+  #endif
+  EXTERN int   p_warn;         /* 'warn' */
+  #ifdef FEAT_CMDL_COMPL
+*** ../vim-7.3.118/src/version.c       2011-02-09 18:47:36.000000000 +0100
+--- src/version.c      2011-02-12 13:59:41.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     119,
+  /**/
+
+-- 
+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/vim/patches/vim-7.3.120.patch0 b/vim/patches/vim-7.3.120.patch0
new file mode 100644 (file)
index 0000000..04e2f63
--- /dev/null
@@ -0,0 +1,59 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.120
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.120
+Problem:    The message for an existing swap file is too long to fit in a 25
+           line terminal.
+Solution:   Make the message shorter. (Chad Miller)
+Files:     src/memline.c
+
+
+*** ../vim-7.3.119/src/memline.c       2011-01-17 20:08:03.000000000 +0100
+--- src/memline.c      2011-02-13 14:18:08.000000000 +0100
+***************
+*** 4071,4079 ****
+      }
+      /* Some of these messages are long to allow translation to
+       * other languages. */
+!     MSG_PUTS(_("\n(1) Another program may be editing the same file.\n    If this is the case, be careful not to end up with two\n    different instances of the same file when making changes.\n"));
+!     MSG_PUTS(_("    Quit, or continue with caution.\n"));
+!     MSG_PUTS(_("\n(2) An edit session for this file crashed.\n"));
+      MSG_PUTS(_("    If this is the case, use \":recover\" or \"vim -r "));
+      msg_outtrans(buf->b_fname);
+      MSG_PUTS(_("\"\n    to recover the changes (see \":help recovery\").\n"));
+--- 4071,4079 ----
+      }
+      /* Some of these messages are long to allow translation to
+       * other languages. */
+!     MSG_PUTS(_("\n(1) Another program may be editing the same file.  If this is the case,\n    be careful not to end up with two different instances of the same\n    file when making changes."));
+!     MSG_PUTS(_("  Quit, or continue with caution.\n"));
+!     MSG_PUTS(_("(2) An edit session for this file crashed.\n"));
+      MSG_PUTS(_("    If this is the case, use \":recover\" or \"vim -r "));
+      msg_outtrans(buf->b_fname);
+      MSG_PUTS(_("\"\n    to recover the changes (see \":help recovery\").\n"));
+*** ../vim-7.3.119/src/version.c       2011-02-12 13:59:55.000000000 +0100
+--- src/version.c      2011-02-15 11:56:14.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     120,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+257. Your "hundred-and-one" lists include well over 101 items, since you
+     automatically interpret all numbers in hexadecimal notation.
+     (hex 101 = decimal 257)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.121.patch0 b/vim/patches/vim-7.3.121.patch0
new file mode 100644 (file)
index 0000000..f51a774
--- /dev/null
@@ -0,0 +1,57 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.121
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.121
+Problem:    Complicated 'statusline' causes a crash. (Christian Brabandt)
+Solution:   Check that the number of items is not too big.
+Files:     src/buffer.c
+
+
+*** ../vim-7.3.120/src/buffer.c        2011-02-01 21:54:56.000000000 +0100
+--- src/buffer.c       2011-02-15 14:00:51.000000000 +0100
+***************
+*** 3460,3465 ****
+--- 3461,3478 ----
+      prevchar_isitem = FALSE;
+      for (s = usefmt; *s; )
+      {
++      if (curitem == STL_MAX_ITEM)
++      {
++          /* There are too many items.  Add the error code to the statusline
++           * to give the user a hint about what went wrong. */
++          if (p + 6 < out + outlen)
++          {
++              mch_memmove(p, " E541", (size_t)5);
++              p += 5;
++          }
++          break;
++      }
++ 
+       if (*s != NUL && *s != '%')
+           prevchar_isflag = prevchar_isitem = FALSE;
+  
+*** ../vim-7.3.120/src/version.c       2011-02-15 11:56:56.000000000 +0100
+--- src/version.c      2011-02-15 14:23:39.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     121,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+265. Your reason for not staying in touch with family is that
+     they do not have e-mail addresses.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.122.patch0 b/vim/patches/vim-7.3.122.patch0
new file mode 100644 (file)
index 0000000..02e9759
--- /dev/null
@@ -0,0 +1,100 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.122
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.122
+Problem:    Having auto/config.mk in the repository causes problems.
+Solution:   Remove auto/config.mk from the distribution.  In the toplevel
+           Makefile copy it from the "dist" file.
+Files:     Makefile, src/Makefile, src/auto/config.mk
+
+
+*** ../vim-7.3.121/Makefile    2010-08-15 21:57:20.000000000 +0200
+--- Makefile   2011-02-12 14:28:09.000000000 +0100
+***************
+*** 23,28 ****
+--- 23,31 ----
+  # has run can result in compiling with $(CC) empty.
+  
+  first:
++      @if test ! -f src/auto/config.mk; then \
++              cp src/config.mk.dist src/auto/config.mk; \
++      fi
+       @echo "Starting make in the src directory."
+       @echo "If there are problems, cd to the src directory and run make there"
+       cd src && $(MAKE) $@
+***************
+*** 30,35 ****
+--- 33,41 ----
+  # Some make programs use the last target for the $@ default; put the other
+  # targets separately to always let $@ expand to "first" by default.
+  all install uninstall tools config configure reconfig proto depend lint tags types test testclean clean distclean:
++      @if test ! -f src/auto/config.mk; then \
++              cp src/config.mk.dist src/auto/config.mk; \
++      fi
+       @echo "Starting make in the src directory."
+       @echo "If there are problems, cd to the src directory and run make there"
+       cd src && $(MAKE) $@
+*** ../vim-7.3.121/src/Makefile        2010-11-03 22:32:18.000000000 +0100
+--- src/Makefile       2011-02-15 15:21:37.000000000 +0100
+***************
+*** 283,294 ****
+  
+  ######################## auto/config.mk ######################## {{{1
+  # At this position auto/config.mk is included. When starting from the
+! # distribution it is almost empty. After running auto/configure it contains
+! # settings that have been discovered for your system. Settings below this
+! # include override settings in auto/config.mk!
+! 
+! # Note: if auto/config.mk is lost somehow (e.g., because configure was
+! # interrupted), create an empty auto/config.mk file and do "make config".
+  
+  # (X) How to include auto/config.mk depends on the version of "make" you have,
+  #     if the current choice doesn't work, try the other one.
+--- 283,295 ----
+  
+  ######################## auto/config.mk ######################## {{{1
+  # At this position auto/config.mk is included. When starting from the
+! # toplevel Makefile it is almost empty. After running auto/configure it
+! # contains settings that have been discovered for your system. Settings below
+! # this include override settings in auto/config.mk!
+! 
+! # Note: If make fails because auto/config.mk does not exist (it is not
+! # included in the repository), do:
+! #    cp config.mk.dist auto/config.mk
+  
+  # (X) How to include auto/config.mk depends on the version of "make" you have,
+  #     if the current choice doesn't work, try the other one.
+*** ../vim-7.3.121/src/auto/config.mk  2010-08-16 21:59:00.000000000 +0200
+--- src/auto/config.mk 1970-01-01 01:00:00.000000000 +0100
+***************
+*** 1,5 ****
+- the first targets to make vim are: scratch config myself
+- srcdir = .
+- VIMNAME = vim
+- EXNAME = ex
+- VIEWNAME = view
+--- 0 ----
+*** ../vim-7.3.121/src/version.c       2011-02-15 14:24:42.000000000 +0100
+--- src/version.c      2011-02-15 15:25:07.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     122,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+267. You get an extra phone line so you can get phone calls.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.123.patch0 b/vim/patches/vim-7.3.123.patch0
new file mode 100644 (file)
index 0000000..0bca41b
--- /dev/null
@@ -0,0 +1,55 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.123
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.123
+Problem:    ml_get error when executing register being recorded into, deleting
+           lines and 'conceallevel' is set. (ZyX)
+Solution:   Don't redraw a line for concealing when it doesn't exist.
+Files:     src/main.c
+
+
+*** ../vim-7.3.122/src/main.c  2010-12-17 18:06:00.000000000 +0100
+--- src/main.c 2011-02-15 16:09:41.000000000 +0100
+***************
+*** 1198,1204 ****
+                       || conceal_cursor_line(curwin)
+                       || need_cursor_line_redraw))
+           {
+!              if (conceal_old_cursor_line != conceal_new_cursor_line)
+                   update_single_line(curwin, conceal_old_cursor_line);
+               update_single_line(curwin, conceal_new_cursor_line);
+               curwin->w_valid &= ~VALID_CROW;
+--- 1198,1206 ----
+                       || conceal_cursor_line(curwin)
+                       || need_cursor_line_redraw))
+           {
+!              if (conceal_old_cursor_line != conceal_new_cursor_line
+!                      && conceal_old_cursor_line
+!                                              <= curbuf->b_ml.ml_line_count)
+                   update_single_line(curwin, conceal_old_cursor_line);
+               update_single_line(curwin, conceal_new_cursor_line);
+               curwin->w_valid &= ~VALID_CROW;
+*** ../vim-7.3.122/src/version.c       2011-02-15 15:27:00.000000000 +0100
+--- src/version.c      2011-02-15 16:15:28.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     123,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+268. You get up in the morning and go online before getting your coffee.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.124.patch0 b/vim/patches/vim-7.3.124.patch0
new file mode 100644 (file)
index 0000000..738c2a1
--- /dev/null
@@ -0,0 +1,229 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.124
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.124
+Problem:    When writing a file in binary mode it may be missing the final EOL
+           if a file previously read was missing the EOL. (Kevin Goodsell)
+Solution:   Move the write_no_eol_lnum into the buffer struct.
+Files:     src/structs.h, src/fileio.c, src/globals.h, src/os_unix.c
+
+
+*** ../vim-7.3.123/src/structs.h       2010-10-20 21:22:17.000000000 +0200
+--- src/structs.h      2011-02-15 17:06:34.000000000 +0100
+***************
+*** 1564,1569 ****
+--- 1564,1572 ----
+  
+      /* end of buffer options */
+  
++     linenr_T b_no_eol_lnum;  /* non-zero lnum when last line of next binary
++                               * write should not have an end-of-line */
++ 
+      int              b_start_eol;    /* last line had eol when it was read */
+      int              b_start_ffc;    /* first char of 'ff' when edit started */
+  #ifdef FEAT_MBYTE
+*** ../vim-7.3.123/src/fileio.c        2011-02-09 16:44:45.000000000 +0100
+--- src/fileio.c       2011-02-15 17:30:54.000000000 +0100
+***************
+*** 317,323 ****
+      int              using_b_fname;
+  #endif
+  
+!     write_no_eol_lnum = 0;   /* in case it was set by the previous read */
+  
+      /*
+       * If there is no file name yet, use the one for the read file.
+--- 317,323 ----
+      int              using_b_fname;
+  #endif
+  
+!     curbuf->b_no_eol_lnum = 0;       /* in case it was set by the previous read */
+  
+      /*
+       * If there is no file name yet, use the one for the read file.
+***************
+*** 2599,2608 ****
+  
+      /*
+       * Trick: We remember if the last line of the read didn't have
+!      * an eol for when writing it again.  This is required for
+       * ":autocmd FileReadPost *.gz set bin|'[,']!gunzip" to work.
+       */
+!     write_no_eol_lnum = read_no_eol_lnum;
+  
+      /* When reloading a buffer put the cursor at the first line that is
+       * different. */
+--- 2599,2609 ----
+  
+      /*
+       * Trick: We remember if the last line of the read didn't have
+!      * an eol even when 'binary' is off, for when writing it again with
+!      * 'binary' on.  This is required for
+       * ":autocmd FileReadPost *.gz set bin|'[,']!gunzip" to work.
+       */
+!     curbuf->b_no_eol_lnum = read_no_eol_lnum;
+  
+      /* When reloading a buffer put the cursor at the first line that is
+       * different. */
+***************
+*** 2650,2662 ****
+                                                           FALSE, NULL, eap);
+       if (msg_scrolled == n)
+           msg_scroll = m;
+! #ifdef FEAT_EVAL
+       if (aborting())     /* autocmds may abort script processing */
+           return FAIL;
+! #endif
+      }
+  #endif
+  
+      if (recoverymode && error)
+       return FAIL;
+      return OK;
+--- 2651,2667 ----
+                                                           FALSE, NULL, eap);
+       if (msg_scrolled == n)
+           msg_scroll = m;
+! # ifdef FEAT_EVAL
+       if (aborting())     /* autocmds may abort script processing */
+           return FAIL;
+! # endif
+      }
+  #endif
+  
++     /* Reset now, following writes should not omit the EOL.  Also, the line
++      * number will become invalid because of edits. */
++     curbuf->b_no_eol_lnum = 0;
++ 
+      if (recoverymode && error)
+       return FAIL;
+      return OK;
+***************
+*** 4560,4566 ****
+       if (end == 0
+               || (lnum == end
+                   && write_bin
+!                  && (lnum == write_no_eol_lnum
+                       || (lnum == buf->b_ml.ml_line_count && !buf->b_p_eol))))
+       {
+           ++lnum;                     /* written the line, count it */
+--- 4565,4571 ----
+       if (end == 0
+               || (lnum == end
+                   && write_bin
+!                  && (lnum == buf->b_no_eol_lnum
+                       || (lnum == buf->b_ml.ml_line_count && !buf->b_p_eol))))
+       {
+           ++lnum;                     /* written the line, count it */
+***************
+*** 5086,5093 ****
+      {
+       aco_save_T      aco;
+  
+-      write_no_eol_lnum = 0;  /* in case it was set by the previous read */
+- 
+       /*
+        * Apply POST autocommands.
+        * Careful: The autocommands may call buf_write() recursively!
+--- 5091,5096 ----
+***************
+*** 7256,7263 ****
+  write_lnum_adjust(offset)
+      linenr_T offset;
+  {
+!     if (write_no_eol_lnum != 0)              /* only if there is a missing eol */
+!      write_no_eol_lnum += offset;
+  }
+  
+  #if defined(TEMPDIRNAMES) || defined(PROTO)
+--- 7259,7266 ----
+  write_lnum_adjust(offset)
+      linenr_T offset;
+  {
+!     if (curbuf->b_no_eol_lnum != 0)  /* only if there is a missing eol */
+!      curbuf->b_no_eol_lnum += offset;
+  }
+  
+  #if defined(TEMPDIRNAMES) || defined(PROTO)
+*** ../vim-7.3.123/src/globals.h       2010-12-02 21:43:10.000000000 +0100
+--- src/globals.h      2011-02-15 17:06:06.000000000 +0100
+***************
+*** 1057,1066 ****
+                       ;
+  #endif
+  
+- EXTERN linenr_T      write_no_eol_lnum INIT(= 0); /* non-zero lnum when last line
+-                                              of next binary write should
+-                                              not have an end-of-line */
+- 
+  #ifdef FEAT_WINDOWS
+  EXTERN int   postponed_split INIT(= 0);  /* for CTRL-W CTRL-] command */
+  EXTERN int   postponed_split_flags INIT(= 0);  /* args for win_split() */
+--- 1057,1062 ----
+*** ../vim-7.3.123/src/os_unix.c       2011-02-09 18:47:36.000000000 +0100
+--- src/os_unix.c      2011-02-15 17:07:22.000000000 +0100
+***************
+*** 4245,4251 ****
+                                * should not have one. */
+                               if (lnum != curbuf->b_op_end.lnum
+                                       || !curbuf->b_p_bin
+!                                      || (lnum != write_no_eol_lnum
+                                           && (lnum !=
+                                                   curbuf->b_ml.ml_line_count
+                                                   || curbuf->b_p_eol)))
+--- 4245,4251 ----
+                                * should not have one. */
+                               if (lnum != curbuf->b_op_end.lnum
+                                       || !curbuf->b_p_bin
+!                                      || (lnum != curbuf->b_no_eol_lnum
+                                           && (lnum !=
+                                                   curbuf->b_ml.ml_line_count
+                                                   || curbuf->b_p_eol)))
+***************
+*** 4588,4597 ****
+                   {
+                       append_ga_line(&ga);
+                       /* remember that the NL was missing */
+!                      write_no_eol_lnum = curwin->w_cursor.lnum;
+                   }
+                   else
+!                      write_no_eol_lnum = 0;
+                   ga_clear(&ga);
+               }
+  
+--- 4588,4597 ----
+                   {
+                       append_ga_line(&ga);
+                       /* remember that the NL was missing */
+!                      curbuf->b_no_eol_lnum = curwin->w_cursor.lnum;
+                   }
+                   else
+!                      curbuf->b_no_eol_lnum = 0;
+                   ga_clear(&ga);
+               }
+  
+*** ../vim-7.3.123/src/version.c       2011-02-15 16:29:54.000000000 +0100
+--- src/version.c      2011-02-15 17:37:38.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     124,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+270. You are subscribed to a mailing list for every piece of software
+     you use.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.125.patch0 b/vim/patches/vim-7.3.125.patch0
new file mode 100644 (file)
index 0000000..719fc95
--- /dev/null
@@ -0,0 +1,66 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.125
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.125
+Problem:    MSVC: Problem with quotes in link argument.
+Solution:   Escape backslashes and quotes. (Weasley)
+Files:     src/Make_mvc.mak
+
+
+*** ../vim-7.3.124/src/Make_mvc.mak    2010-12-08 14:54:58.000000000 +0100
+--- src/Make_mvc.mak   2011-02-15 17:55:24.000000000 +0100
+***************
+*** 1159,1164 ****
+--- 1159,1168 ----
+  E0_CFLAGS = $(CFLAGS:\=\\)
+  E_CFLAGS = $(E0_CFLAGS:"=\")
+  # ") stop the string
++ # $LINKARGS2 may contain backslashes and double quotes, escape them both.
++ E0_LINKARGS2 = $(LINKARGS2:\=\\)
++ E_LINKARGS2 = $(E0_LINKARGS2:"=\")
++ # ") stop the string
+  
+  $(PATHDEF_SRC): auto
+       @echo creating $(PATHDEF_SRC)
+***************
+*** 1167,1173 ****
+       @echo char_u *default_vim_dir = (char_u *)"$(VIMRCLOC:\=\\)"; >> $(PATHDEF_SRC)
+       @echo char_u *default_vimruntime_dir = (char_u *)"$(VIMRUNTIMEDIR:\=\\)"; >> $(PATHDEF_SRC)
+       @echo char_u *all_cflags = (char_u *)"$(CC:\=\\) $(E_CFLAGS)"; >> $(PATHDEF_SRC)
+!      @echo char_u *all_lflags = (char_u *)"$(link:\=\\) $(LINKARGS1:\=\\) $(LINKARGS2:\=\\)"; >> $(PATHDEF_SRC)
+       @echo char_u *compiled_user = (char_u *)"$(USERNAME)"; >> $(PATHDEF_SRC)
+       @echo char_u *compiled_sys = (char_u *)"$(USERDOMAIN)"; >> $(PATHDEF_SRC)
+  
+--- 1171,1177 ----
+       @echo char_u *default_vim_dir = (char_u *)"$(VIMRCLOC:\=\\)"; >> $(PATHDEF_SRC)
+       @echo char_u *default_vimruntime_dir = (char_u *)"$(VIMRUNTIMEDIR:\=\\)"; >> $(PATHDEF_SRC)
+       @echo char_u *all_cflags = (char_u *)"$(CC:\=\\) $(E_CFLAGS)"; >> $(PATHDEF_SRC)
+!      @echo char_u *all_lflags = (char_u *)"$(link:\=\\) $(LINKARGS1:\=\\) $(E_LINKARGS2)"; >> $(PATHDEF_SRC)
+       @echo char_u *compiled_user = (char_u *)"$(USERNAME)"; >> $(PATHDEF_SRC)
+       @echo char_u *compiled_sys = (char_u *)"$(USERDOMAIN)"; >> $(PATHDEF_SRC)
+  
+*** ../vim-7.3.124/src/version.c       2011-02-15 17:39:14.000000000 +0100
+--- src/version.c      2011-02-15 17:55:49.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     125,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+271. You collect hilarious signatures from all 250 mailing lists you
+     are subscribed to.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.126.patch0 b/vim/patches/vim-7.3.126.patch0
new file mode 100644 (file)
index 0000000..89d9684
--- /dev/null
@@ -0,0 +1,63 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.126
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.126
+Problem:    Compiler warning for signed pointer.
+Solution:   Use unsigned int argument for sscanf().
+Files:     src/blowfish.c
+
+
+*** ../vim-7.3.125/src/blowfish.c      2010-08-15 21:57:28.000000000 +0200
+--- src/blowfish.c     2010-12-17 19:58:18.000000000 +0100
+***************
+*** 413,418 ****
+--- 413,419 ----
+      int    salt_len;
+  {
+      int      i, j, keypos = 0;
++     unsigned u;
+      UINT32_T val, data_l, data_r;
+      char_u   *key;
+      int      keylen;
+***************
+*** 432,439 ****
+      }
+      for (i = 0; i < keylen; i++)
+      {
+!      sscanf((char *)&key[i * 2], "%2x", &j);
+!      key[i] = j;
+      }
+  
+      mch_memmove(sbx, sbi, 4 * 4 * 256);
+--- 433,440 ----
+      }
+      for (i = 0; i < keylen; i++)
+      {
+!      sscanf((char *)&key[i * 2], "%2x", &u);
+!      key[i] = u;
+      }
+  
+      mch_memmove(sbx, sbi, 4 * 4 * 256);
+*** ../vim-7.3.125/src/version.c       2011-02-15 18:06:11.000000000 +0100
+--- src/version.c      2011-02-25 14:40:22.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     126,
+  /**/
+
+-- 
+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/vim/patches/vim-7.3.127.patch0 b/vim/patches/vim-7.3.127.patch0
new file mode 100644 (file)
index 0000000..518d2f7
--- /dev/null
@@ -0,0 +1,55 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.127
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.127
+Problem:    Compiler complains about comma.
+Solution:   Remove comma after last enum element.
+Files:     src/ex_cmds2.c
+
+
+*** ../vim-7.3.126/src/ex_cmds2.c      2010-12-17 18:06:00.000000000 +0100
+--- src/ex_cmds2.c     2010-12-17 19:58:37.000000000 +0100
+***************
+*** 1115,1121 ****
+  static enum
+  {
+      PEXP_SUBCMD,     /* expand :profile sub-commands */
+!     PEXP_FUNC,               /* expand :profile func {funcname} */
+  } pexpand_what;
+  
+  static char *pexpand_cmds[] = {
+--- 1115,1121 ----
+  static enum
+  {
+      PEXP_SUBCMD,     /* expand :profile sub-commands */
+!     PEXP_FUNC                /* expand :profile func {funcname} */
+  } pexpand_what;
+  
+  static char *pexpand_cmds[] = {
+*** ../vim-7.3.126/src/version.c       2011-02-25 14:40:51.000000000 +0100
+--- src/version.c      2011-02-25 14:45:19.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     127,
+  /**/
+
+-- 
+   LAUNCELOT leaps into SHOT with a mighty cry and runs the GUARD through and
+   hacks him to the floor.  Blood.  Swashbuckling music (perhaps).
+   LAUNCELOT races through into the castle screaming.
+SECOND SENTRY: Hey!
+                 "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/vim/patches/vim-7.3.128.patch0 b/vim/patches/vim-7.3.128.patch0
new file mode 100644 (file)
index 0000000..d443868
--- /dev/null
@@ -0,0 +1,58 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.128
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.128
+Problem:    Another compiler warning for signed pointer.
+Solution:   Use unsigned int argument for sscanf().
+Files:     src/mark.c
+
+
+*** ../vim-7.3.127/src/mark.c  2010-08-15 21:57:25.000000000 +0200
+--- src/mark.c 2010-12-17 20:00:05.000000000 +0100
+***************
+*** 1750,1756 ****
+           {
+               if (line[1] != NUL)
+               {
+!                  sscanf((char *)line + 2, "%ld %u", &pos.lnum, &pos.col);
+                   switch (line[1])
+                   {
+                       case '"': curbuf->b_last_cursor = pos; break;
+--- 1750,1759 ----
+           {
+               if (line[1] != NUL)
+               {
+!                  unsigned u;
+! 
+!                  sscanf((char *)line + 2, "%ld %u", &pos.lnum, &u);
+!                  pos.col = u;
+                   switch (line[1])
+                   {
+                       case '"': curbuf->b_last_cursor = pos; break;
+*** ../vim-7.3.127/src/version.c       2011-02-25 14:46:06.000000000 +0100
+--- src/version.c      2011-02-25 15:10:34.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     128,
+  /**/
+
+-- 
+FATHER:    Who are you?
+PRINCE:    I'm ... your son ...
+FATHER:    Not you.
+LAUNCELOT: I'm ... er ... Sir Launcelot, sir.
+                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.129.patch0 b/vim/patches/vim-7.3.129.patch0
new file mode 100644 (file)
index 0000000..10f11d6
--- /dev/null
@@ -0,0 +1,241 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.129
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.129
+Problem:    Using integer like a boolean.
+Solution:   Nicer check for integer being non-zero.
+Files:     src/tag.c
+
+
+*** ../vim-7.3.128/src/tag.c   2010-12-17 18:06:00.000000000 +0100
+--- src/tag.c  2010-12-17 17:49:35.000000000 +0100
+***************
+*** 204,210 ****
+      else
+      {
+  #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX)
+!      if (g_do_tagpreview)
+           use_tagstack = FALSE;
+       else
+  #endif
+--- 204,210 ----
+      else
+      {
+  #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX)
+!      if (g_do_tagpreview != 0)
+           use_tagstack = FALSE;
+       else
+  #endif
+***************
+*** 222,228 ****
+                   ))
+       {
+  #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX)
+!          if (g_do_tagpreview)
+           {
+               if (ptag_entry.tagname != NULL
+                       && STRCMP(ptag_entry.tagname, tag) == 0)
+--- 222,228 ----
+                   ))
+       {
+  #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX)
+!          if (g_do_tagpreview != 0)
+           {
+               if (ptag_entry.tagname != NULL
+                       && STRCMP(ptag_entry.tagname, tag) == 0)
+***************
+*** 278,284 ****
+       {
+           if (
+  #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX)
+!                  g_do_tagpreview ? ptag_entry.tagname == NULL :
+  #endif
+                   tagstacklen == 0)
+           {
+--- 278,284 ----
+       {
+           if (
+  #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX)
+!                  g_do_tagpreview != 0 ? ptag_entry.tagname == NULL :
+  #endif
+                   tagstacklen == 0)
+           {
+***************
+*** 361,367 ****
+              )
+           {
+  #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX)
+!              if (g_do_tagpreview)
+               {
+                   cur_match = ptag_entry.cur_match;
+                   cur_fnum = ptag_entry.cur_fnum;
+--- 361,367 ----
+              )
+           {
+  #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX)
+!              if (g_do_tagpreview != 0)
+               {
+                   cur_match = ptag_entry.cur_match;
+                   cur_fnum = ptag_entry.cur_fnum;
+***************
+*** 399,405 ****
+               prevtagstackidx = tagstackidx;
+  
+  #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX)
+!              if (g_do_tagpreview)
+               {
+                   cur_match = ptag_entry.cur_match;
+                   cur_fnum = ptag_entry.cur_fnum;
+--- 399,405 ----
+               prevtagstackidx = tagstackidx;
+  
+  #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX)
+!              if (g_do_tagpreview != 0)
+               {
+                   cur_match = ptag_entry.cur_match;
+                   cur_fnum = ptag_entry.cur_fnum;
+***************
+*** 437,443 ****
+       }
+  
+  #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX)
+!      if (g_do_tagpreview)
+       {
+           if (type != DT_SELECT && type != DT_JUMP)
+           {
+--- 437,443 ----
+       }
+  
+  #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX)
+!      if (g_do_tagpreview != 0)
+       {
+           if (type != DT_SELECT && type != DT_JUMP)
+           {
+***************
+*** 492,498 ****
+       if (use_tagstack)
+           name = tagstack[tagstackidx].tagname;
+  #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX)
+!      else if (g_do_tagpreview)
+           name = ptag_entry.tagname;
+  #endif
+       else
+--- 492,498 ----
+       if (use_tagstack)
+           name = tagstack[tagstackidx].tagname;
+  #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX)
+!      else if (g_do_tagpreview != 0)
+           name = ptag_entry.tagname;
+  #endif
+       else
+***************
+*** 620,626 ****
+                   parse_match(matches[i], &tagp);
+                   if (!new_tag && (
+  #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX)
+!                              (g_do_tagpreview
+                                && i == ptag_entry.cur_match) ||
+  #endif
+                               (use_tagstack
+--- 620,626 ----
+                   parse_match(matches[i], &tagp);
+                   if (!new_tag && (
+  #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX)
+!                              (g_do_tagpreview != 0
+                                && i == ptag_entry.cur_match) ||
+  #endif
+                               (use_tagstack
+***************
+*** 962,968 ****
+               ++tagstackidx;
+           }
+  #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX)
+!          else if (g_do_tagpreview)
+           {
+               ptag_entry.cur_match = cur_match;
+               ptag_entry.cur_fnum = cur_fnum;
+--- 962,968 ----
+               ++tagstackidx;
+           }
+  #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX)
+!          else if (g_do_tagpreview != 0)
+           {
+               ptag_entry.cur_match = cur_match;
+               ptag_entry.cur_fnum = cur_fnum;
+***************
+*** 3110,3116 ****
+  #endif
+  
+  #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX)
+!     if (g_do_tagpreview)
+      {
+       postponed_split = 0;    /* don't split again below */
+       curwin_save = curwin;   /* Save current window */
+--- 3110,3116 ----
+  #endif
+  
+  #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX)
+!     if (g_do_tagpreview != 0)
+      {
+       postponed_split = 0;    /* don't split again below */
+       curwin_save = curwin;   /* Save current window */
+***************
+*** 3148,3154 ****
+       /* A :ta from a help file will keep the b_help flag set.  For ":ptag"
+        * we need to use the flag from the window where we came from. */
+  #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX)
+!      if (g_do_tagpreview)
+           keep_help_flag = curwin_save->w_buffer->b_help;
+       else
+  #endif
+--- 3148,3154 ----
+       /* A :ta from a help file will keep the b_help flag set.  For ":ptag"
+        * we need to use the flag from the window where we came from. */
+  #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX)
+!      if (g_do_tagpreview != 0)
+           keep_help_flag = curwin_save->w_buffer->b_help;
+       else
+  #endif
+***************
+*** 3322,3328 ****
+       }
+  
+  #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX)
+!      if (g_do_tagpreview && curwin != curwin_save && win_valid(curwin_save))
+       {
+           /* Return cursor to where we were */
+           validate_cursor();
+--- 3322,3329 ----
+       }
+  
+  #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX)
+!      if (g_do_tagpreview != 0
+!                         && curwin != curwin_save && win_valid(curwin_save))
+       {
+           /* Return cursor to where we were */
+           validate_cursor();
+*** ../vim-7.3.128/src/version.c       2011-02-25 15:11:17.000000000 +0100
+--- src/version.c      2011-02-25 15:12:25.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     129,
+  /**/
+
+-- 
+PRINCE:    He's come to rescue me, father.
+LAUNCELOT: (embarrassed) Well, let's not jump to conclusions ...
+                 "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/vim/patches/vim-7.3.130.patch0 b/vim/patches/vim-7.3.130.patch0
new file mode 100644 (file)
index 0000000..3f7db76
--- /dev/null
@@ -0,0 +1,74 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.130
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.130
+Problem:    Variable misplaced in #ifdef.
+Solution:   Move clipboard_event_time outside of #ifdef.
+Files:     src/gui_gtk_x11.c
+
+
+*** ../vim-7.3.129/src/gui_gtk_x11.c   2010-08-15 21:57:31.000000000 +0200
+--- src/gui_gtk_x11.c  2010-12-04 15:26:41.000000000 +0100
+***************
+*** 86,94 ****
+  
+  #ifdef HAVE_X11_SUNKEYSYM_H
+  # include <X11/Sunkeysym.h>
+- static guint32 clipboard_event_time = CurrentTime;
+  #endif
+  
+  /*
+   * Easy-to-use macro for multihead support.
+   */
+--- 86,95 ----
+  
+  #ifdef HAVE_X11_SUNKEYSYM_H
+  # include <X11/Sunkeysym.h>
+  #endif
+  
++ static guint32 clipboard_event_time = CurrentTime;
++ 
+  /*
+   * Easy-to-use macro for multihead support.
+   */
+***************
+*** 5419,5425 ****
+       }
+  
+  #if defined(FEAT_NETBEANS_INTG)
+!      /* Process the queued netbeans messages. */
+       netbeans_parse_messages();
+  #endif
+  
+--- 5420,5426 ----
+       }
+  
+  #if defined(FEAT_NETBEANS_INTG)
+!      /* Process any queued netbeans messages. */
+       netbeans_parse_messages();
+  #endif
+  
+*** ../vim-7.3.129/src/version.c       2011-02-25 15:13:43.000000000 +0100
+--- src/version.c      2011-02-25 15:15:02.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     130,
+  /**/
+
+-- 
+A vacation is a period of travel during which you find that you
+took twice as many clothes and half as much money as you needed.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.131.patch0 b/vim/patches/vim-7.3.131.patch0
new file mode 100644 (file)
index 0000000..e142059
--- /dev/null
@@ -0,0 +1,47 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.131
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.131
+Problem:    Including errno.h too often.
+Solution:   Don't include errno.h in Unix header file.
+Files:     src/os_unix.h
+
+
+*** ../vim-7.3.130/src/os_unix.h       2010-08-15 21:57:28.000000000 +0200
+--- src/os_unix.h      2010-12-17 20:05:34.000000000 +0100
+***************
+*** 184,193 ****
+  
+  #define BASENAMELEN  (MAXNAMLEN - 5)
+  
+- #ifdef HAVE_ERRNO_H
+- # include <errno.h>
+- #endif
+- 
+  #ifdef HAVE_PWD_H
+  # include <pwd.h>
+  #endif
+--- 184,189 ----
+*** ../vim-7.3.130/src/version.c       2011-02-25 15:15:43.000000000 +0100
+--- src/version.c      2011-02-25 15:16:49.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     131,
+  /**/
+
+-- 
+Overflow on /dev/null, please empty the bit bucket.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.132.patch0 b/vim/patches/vim-7.3.132.patch0
new file mode 100644 (file)
index 0000000..2f0753d
--- /dev/null
@@ -0,0 +1,82 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.132
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.132
+Problem:    C++ style comments.
+Solution:   Change to C comments.
+Files:     src/if_python3.c
+
+
+*** ../vim-7.3.131/src/if_python3.c    2010-11-16 19:25:56.000000000 +0100
+--- src/if_python3.c   2011-01-16 01:28:35.000000000 +0100
+***************
+*** 22,29 ****
+   * Adaptations to support both python3.x and python2.x
+   */
+  
+! // uncomment this if used with the debug version of python
+! // #define Py_DEBUG
+  
+  #include "vim.h"
+  
+--- 22,29 ----
+   * Adaptations to support both python3.x and python2.x
+   */
+  
+! /* uncomment this if used with the debug version of python */
+! /* #define Py_DEBUG */
+  
+  #include "vim.h"
+  
+***************
+*** 74,80 ****
+  #define PyString_Size(obj) PyUnicode_GET_SIZE(obj)
+  #define PyString_FromString(repr) PyUnicode_FromString(repr)
+  
+! #if defined(DYNAMIC_PYTHON3)
+  
+  # ifndef WIN3264
+  #  include <dlfcn.h>
+--- 74,80 ----
+  #define PyString_Size(obj) PyUnicode_GET_SIZE(obj)
+  #define PyString_FromString(repr) PyUnicode_FromString(repr)
+  
+! #if defined(DYNAMIC_PYTHON3) || defined(PROTO)
+  
+  # ifndef WIN3264
+  #  include <dlfcn.h>
+*** ../vim-7.3.131/src/version.c       2011-02-25 15:17:14.000000000 +0100
+--- src/version.c      2011-02-25 15:18:18.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     132,
+  /**/
+
+-- 
+        **  Hello and Welcome to the Psychiatric Hotline **
+If you are obsessive-compulsive, please press 1 repeatedly.
+If you are co-dependent, please ask someone to press 2.
+If you have multiple personalities, please press 3, 4, 5 and 6.
+If you are paranoid-delusional, we know who you are and what you want
+       - just stay on the line so we can trace the call.
+If you are schizophrenic, listen carefully and a little voice will
+       tell you which number to press next.
+If you are manic-depressive, it doesn't matter which number you press
+       - no one will answer.
+If you suffer from panic attacks, push every button you can find.
+If you are sane, please hold on - we have the rest of humanity on the
+        other line and they desparately want to ask you a few questions.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.133.patch0 b/vim/patches/vim-7.3.133.patch0
new file mode 100644 (file)
index 0000000..d7d9951
--- /dev/null
@@ -0,0 +1,122 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.133
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.133
+Problem:    When using encryption it's not clear what method was used.
+Solution:   In the file message show "blowfish" when using blowfish.
+Files:     src/fileio.c
+
+
+*** ../vim-7.3.132/src/fileio.c        2011-02-15 17:39:14.000000000 +0100
+--- src/fileio.c       2011-02-25 16:30:19.000000000 +0100
+***************
+*** 250,255 ****
+--- 250,256 ----
+  #ifdef FEAT_CRYPT
+      char_u   *cryptkey = NULL;
+      int              did_ask_for_key = FALSE;
++     int              crypt_method_used;
+  #endif
+  #ifdef FEAT_PERSISTENT_UNDO
+      context_sha256_T sha_ctx;
+***************
+*** 2289,2294 ****
+--- 2290,2296 ----
+       save_file_ff(curbuf);           /* remember the current file format */
+  
+  #ifdef FEAT_CRYPT
++     crypt_method_used = use_crypt_method;
+      if (cryptkey != NULL)
+      {
+       crypt_pop_state();
+***************
+*** 2483,2489 ****
+  #ifdef FEAT_CRYPT
+           if (cryptkey != NULL)
+           {
+!              STRCAT(IObuff, _("[crypted]"));
+               c = TRUE;
+           }
+  #endif
+--- 2485,2494 ----
+  #ifdef FEAT_CRYPT
+           if (cryptkey != NULL)
+           {
+!              if (crypt_method_used == 1)
+!                  STRCAT(IObuff, _("[blowfish]"));
+!              else
+!                  STRCAT(IObuff, _("[crypted]"));
+               c = TRUE;
+           }
+  #endif
+***************
+*** 3199,3204 ****
+--- 3204,3212 ----
+      int                  write_undo_file = FALSE;
+      context_sha256_T sha_ctx;
+  #endif
++ #ifdef FEAT_CRYPT
++     int                  crypt_method_used;
++ #endif
+  
+      if (fname == NULL || *fname == NUL)      /* safety check */
+       return FAIL;
+***************
+*** 4728,4733 ****
+--- 4736,4742 ----
+       mch_set_acl(wfname, acl);
+  #endif
+  #ifdef FEAT_CRYPT
++     crypt_method_used = use_crypt_method;
+      if (wb_flags & FIO_ENCRYPTED)
+       crypt_pop_state();
+  #endif
+***************
+*** 4882,4888 ****
+  #ifdef FEAT_CRYPT
+       if (wb_flags & FIO_ENCRYPTED)
+       {
+!          STRCAT(IObuff, _("[crypted]"));
+           c = TRUE;
+       }
+  #endif
+--- 4891,4900 ----
+  #ifdef FEAT_CRYPT
+       if (wb_flags & FIO_ENCRYPTED)
+       {
+!          if (crypt_method_used == 1)
+!              STRCAT(IObuff, _("[blowfish]"));
+!          else
+!              STRCAT(IObuff, _("[crypted]"));
+           c = TRUE;
+       }
+  #endif
+*** ../vim-7.3.132/src/version.c       2011-02-25 15:18:46.000000000 +0100
+--- src/version.c      2011-02-25 16:42:58.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     133,
+  /**/
+
+-- 
+    [clop clop]
+GUARD #1:  Halt!  Who goes there?
+ARTHUR:    It is I, Arthur, son of Uther Pendragon, from the castle of
+           Camelot.  King of the Britons, defeator of the Saxons, sovereign of
+           all England!
+GUARD #1:  Pull the other one!
+                                  The Quest for the Holy Grail (Monty Python)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.134.patch0 b/vim/patches/vim-7.3.134.patch0
new file mode 100644 (file)
index 0000000..cb20ce4
--- /dev/null
@@ -0,0 +1,51 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.134
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.134
+Problem:    Drag-n-drop doesn't work in KDE Dolphin.
+Solution:   Add GDK_ACTION_MOVE flag. (Florian Degner)
+Files:     src/gui_gtk_x11.c
+
+
+*** ../vim-7.3.133/src/gui_gtk_x11.c   2011-02-25 15:15:43.000000000 +0100
+--- src/gui_gtk_x11.c  2011-02-25 17:07:36.000000000 +0100
+***************
+*** 3094,3100 ****
+      gtk_drag_dest_set(gui.drawarea,
+                     GTK_DEST_DEFAULT_ALL,
+                     targets, n_targets,
+!                    GDK_ACTION_COPY);
+  }
+  
+  /*
+--- 3094,3100 ----
+      gtk_drag_dest_set(gui.drawarea,
+                     GTK_DEST_DEFAULT_ALL,
+                     targets, n_targets,
+!                    GDK_ACTION_COPY | GDK_ACTION_MOVE);
+  }
+  
+  /*
+*** ../vim-7.3.133/src/version.c       2011-02-25 16:52:13.000000000 +0100
+--- src/version.c      2011-02-25 17:08:35.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     134,
+  /**/
+
+-- 
+Proverb: A nightingale that forgets the lyrics is a hummingbird.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.135.patch0 b/vim/patches/vim-7.3.135.patch0
new file mode 100644 (file)
index 0000000..ca1ebd6
--- /dev/null
@@ -0,0 +1,90 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.135
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.135
+Problem:    When there is no previous substitute pattern, the previous search
+           pattern is used.  The other way around doesn't work.
+Solution:   When there is no previous search pattern, use the previous
+           substitute pattern if possible. (Christian Brabandt)
+Files:     src/search.c
+
+
+*** ../vim-7.3.134/src/search.c        2010-09-21 16:56:29.000000000 +0200
+--- src/search.c       2011-02-25 18:36:56.000000000 +0100
+***************
+*** 1161,1172 ****
+       {
+           if (spats[RE_SEARCH].pat == NULL)       /* no previous pattern */
+           {
+!              EMSG(_(e_noprevre));
+!              retval = 0;
+!              goto end_do_search;
+           }
+-          /* make search_regcomp() use spats[RE_SEARCH].pat */
+-          searchstr = (char_u *)"";
+       }
+  
+       if (pat != NULL && *pat != NUL) /* look for (new) offset */
+--- 1161,1180 ----
+       {
+           if (spats[RE_SEARCH].pat == NULL)       /* no previous pattern */
+           {
+!              pat = spats[RE_SUBST].pat;
+!              if (pat == NULL)
+!              {
+!                  EMSG(_(e_noprevre));
+!                  retval = 0;
+!                  goto end_do_search;
+!              }
+!              searchstr = pat;
+!          }
+!          else
+!          {
+!              /* make search_regcomp() use spats[RE_SEARCH].pat */
+!              searchstr = (char_u *)"";
+           }
+       }
+  
+       if (pat != NULL && *pat != NUL) /* look for (new) offset */
+***************
+*** 4527,4533 ****
+  #if defined(FEAT_FIND_ID) || defined(PROTO)
+  /*
+   * Find identifiers or defines in included files.
+!  * if p_ic && (compl_cont_status & CONT_SOL) then ptr must be in lowercase.
+   */
+      void
+  find_pattern_in_path(ptr, dir, len, whole, skip_comments,
+--- 4535,4541 ----
+  #if defined(FEAT_FIND_ID) || defined(PROTO)
+  /*
+   * Find identifiers or defines in included files.
+!  * If p_ic && (compl_cont_status & CONT_SOL) then ptr must be in lowercase.
+   */
+      void
+  find_pattern_in_path(ptr, dir, len, whole, skip_comments,
+*** ../vim-7.3.134/src/version.c       2011-02-25 17:10:22.000000000 +0100
+--- src/version.c      2011-02-25 18:35:30.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     135,
+  /**/
+
+-- 
+A real patriot is the fellow who gets a parking ticket and rejoices
+that the system works.
+
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.136.patch0 b/vim/patches/vim-7.3.136.patch0
new file mode 100644 (file)
index 0000000..87acecb
--- /dev/null
@@ -0,0 +1,51 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.136
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.136
+Problem:    Duplicate include of assert.h.
+Solution:   Remove it.
+Files:     src/if_cscope.c
+
+
+*** ../vim-7.3.135/src/if_cscope.c     2010-12-30 11:41:05.000000000 +0100
+--- src/if_cscope.c    2011-03-03 15:01:15.000000000 +0100
+***************
+*** 13,19 ****
+  
+  #if defined(FEAT_CSCOPE) || defined(PROTO)
+  
+- #include <assert.h>
+  #include <sys/types.h>
+  #include <sys/stat.h>
+  #if defined(UNIX)
+--- 13,18 ----
+*** ../vim-7.3.135/src/version.c       2011-02-25 18:38:29.000000000 +0100
+--- src/version.c      2011-03-03 14:59:32.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     136,
+  /**/
+
+-- 
+ARTHUR:  You fight with the strength of many men, Sir knight.
+         I am Arthur, King of the Britons.  [pause]
+         I seek the finest and the bravest knights in the land to join me
+         in my Court of Camelot.  [pause]
+         You have proved yourself worthy; will you join me?  [pause]
+         You make me sad.  So be it.  Come, Patsy.
+BLACK KNIGHT:  None shall pass.
+                                  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/vim/patches/vim-7.3.137.patch0 b/vim/patches/vim-7.3.137.patch0
new file mode 100644 (file)
index 0000000..91f68ed
--- /dev/null
@@ -0,0 +1,81 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.137
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.137 (after 7.3.091)
+Problem:    When 'lazyredraw' is set the screen may not be updated. (Ivan
+           Krasilnikov)
+Solution:   Call update_screen() before waiting for input.
+Files:     src/misc1.c, src/getchar.c
+
+
+*** ../vim-7.3.136/src/misc1.c 2011-01-22 00:11:42.000000000 +0100
+--- src/misc1.c        2011-03-03 14:02:02.000000000 +0100
+***************
+*** 3115,3121 ****
+--- 3115,3129 ----
+           continue;
+  
+       if (n == KEYLEN_REMOVED)  /* key code removed */
++      {
++          if (must_redraw)
++          {
++              /* Redrawing was postponed, do it now. */
++              update_screen(0);
++              setcursor(); /* put cursor back where it belongs */
++          }
+           continue;
++      }
+       if (n > 0)              /* found a termcode: adjust length */
+           len = n;
+       if (len == 0)           /* nothing typed yet */
+*** ../vim-7.3.136/src/getchar.c       2010-12-30 12:30:26.000000000 +0100
+--- src/getchar.c      2011-03-03 14:01:26.000000000 +0100
+***************
+*** 2710,2717 ****
+                * are still available.  But when those available characters
+                * are part of a mapping, and we are going to do a blocking
+                * wait here.  Need to update the screen to display the
+!               * changed text so far. */
+!              if ((State & INSERT) && advance && must_redraw != 0)
+               {
+                   update_screen(0);
+                   setcursor(); /* put cursor back where it belongs */
+--- 2710,2719 ----
+                * are still available.  But when those available characters
+                * are part of a mapping, and we are going to do a blocking
+                * wait here.  Need to update the screen to display the
+!               * changed text so far. Also for when 'lazyredraw' is set and
+!               * redrawing was postponed because there was something in the
+!               * input buffer (e.g., termresponse). */
+!              if (((State & INSERT) || p_lz) && advance && must_redraw != 0)
+               {
+                   update_screen(0);
+                   setcursor(); /* put cursor back where it belongs */
+*** ../vim-7.3.136/src/version.c       2011-03-03 15:01:25.000000000 +0100
+--- src/version.c      2011-03-03 15:02:45.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     137,
+  /**/
+
+-- 
+ARTHUR:        What?
+BLACK KNIGHT:  None shall pass.
+ARTHUR:        I have no quarrel with you, good Sir knight, but I must cross
+               this bridge.
+BLACK KNIGHT:  Then you shall die.
+                                  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/vim/patches/vim-7.3.138.patch0 b/vim/patches/vim-7.3.138.patch0
new file mode 100644 (file)
index 0000000..e045e79
--- /dev/null
@@ -0,0 +1,69 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.138
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.138
+Problem:    ":com" changes the multi-byte text of :echo. (Dimitar Dimitrov)
+Solution:   Search for K_SPECIAL as a byte, not a character. (Ben Schmidt)
+Files:     src/ex_docmd.c
+
+
+*** ../vim-7.3.137/src/ex_docmd.c      2011-01-17 19:50:01.000000000 +0100
+--- src/ex_docmd.c     2011-03-03 15:47:00.000000000 +0100
+***************
+*** 6054,6068 ****
+               end = vim_strchr(start + 1, '>');
+           if (buf != NULL)
+           {
+!              ksp = vim_strchr(p, K_SPECIAL);
+!              if (ksp != NULL && (start == NULL || ksp < start || end == NULL)
+                       && ((ksp[1] == KS_SPECIAL && ksp[2] == KE_FILLER)
+  # ifdef FEAT_GUI
+                           || (ksp[1] == KS_EXTRA && ksp[2] == (int)KE_CSI)
+  # endif
+                           ))
+               {
+!                  /* K_SPECIAL han been put in the buffer as K_SPECIAL
+                    * KS_SPECIAL KE_FILLER, like for mappings, but
+                    * do_cmdline() doesn't handle that, so convert it back.
+                    * Also change K_SPECIAL KS_EXTRA KE_CSI into CSI. */
+--- 6054,6070 ----
+               end = vim_strchr(start + 1, '>');
+           if (buf != NULL)
+           {
+!              for (ksp = p; *ksp != NUL && *ksp != K_SPECIAL; ++ksp)
+!                  ;
+!              if (*ksp == K_SPECIAL
+!                      && (start == NULL || ksp < start || end == NULL)
+                       && ((ksp[1] == KS_SPECIAL && ksp[2] == KE_FILLER)
+  # ifdef FEAT_GUI
+                           || (ksp[1] == KS_EXTRA && ksp[2] == (int)KE_CSI)
+  # endif
+                           ))
+               {
+!                  /* K_SPECIAL has been put in the buffer as K_SPECIAL
+                    * KS_SPECIAL KE_FILLER, like for mappings, but
+                    * do_cmdline() doesn't handle that, so convert it back.
+                    * Also change K_SPECIAL KS_EXTRA KE_CSI into CSI. */
+*** ../vim-7.3.137/src/version.c       2011-03-03 15:04:01.000000000 +0100
+--- src/version.c      2011-03-03 15:53:41.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     138,
+  /**/
+
+-- 
+    f y cn rd ths thn y cn hv grt jb n cmptr prgrmmng
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.139.patch0 b/vim/patches/vim-7.3.139.patch0
new file mode 100644 (file)
index 0000000..057bf65
--- /dev/null
@@ -0,0 +1,111 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.139
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.139 (after 7.3.137)
+Problem:    When 'lazyredraw' is set ":ver" output can't be read.
+Solution:   Don't redraw the screen when at a prompt or command line.
+Files:      src/getchar.c, src/message.c, src/misc1.c
+
+
+*** ../vim-7.3.138/src/getchar.c       2011-03-03 15:04:01.000000000 +0100
+--- src/getchar.c      2011-03-22 12:16:23.000000000 +0100
+***************
+*** 2713,2719 ****
+                * changed text so far. Also for when 'lazyredraw' is set and
+                * redrawing was postponed because there was something in the
+                * input buffer (e.g., termresponse). */
+!              if (((State & INSERT) || p_lz) && advance && must_redraw != 0)
+               {
+                   update_screen(0);
+                   setcursor(); /* put cursor back where it belongs */
+--- 2713,2720 ----
+                * changed text so far. Also for when 'lazyredraw' is set and
+                * redrawing was postponed because there was something in the
+                * input buffer (e.g., termresponse). */
+!              if (((State & INSERT) != 0 || p_lz) && (State & CMDLINE) == 0
+!                        && advance && must_redraw != 0 && !need_wait_return)
+               {
+                   update_screen(0);
+                   setcursor(); /* put cursor back where it belongs */
+*** ../vim-7.3.138/src/message.c       2011-02-01 17:12:20.000000000 +0100
+--- src/message.c      2011-03-22 13:06:24.000000000 +0100
+***************
+*** 879,894 ****
+      if (msg_silent != 0)
+       return;
+  
+! /*
+!  * With the global command (and some others) we only need one return at the
+!  * end. Adjust cmdline_row to avoid the next message overwriting the last one.
+!  * When inside vgetc(), we can't wait for a typed character at all.
+!  */
+      if (vgetc_busy > 0)
+       return;
+      if (no_wait_return)
+      {
+-      need_wait_return = TRUE;
+       if (!exmode_active)
+           cmdline_row = msg_row;
+       return;
+--- 879,895 ----
+      if (msg_silent != 0)
+       return;
+  
+!     /*
+!      * When inside vgetc(), we can't wait for a typed character at all.
+!      * With the global command (and some others) we only need one return at
+!      * the end. Adjust cmdline_row to avoid the next message overwriting the
+!      * last one.
+!      */
+      if (vgetc_busy > 0)
+       return;
++     need_wait_return = TRUE;
+      if (no_wait_return)
+      {
+       if (!exmode_active)
+           cmdline_row = msg_row;
+       return;
+*** ../vim-7.3.138/src/misc1.c 2011-03-03 15:04:01.000000000 +0100
+--- src/misc1.c        2011-03-22 12:15:26.000000000 +0100
+***************
+*** 3116,3122 ****
+  
+       if (n == KEYLEN_REMOVED)  /* key code removed */
+       {
+!          if (must_redraw)
+           {
+               /* Redrawing was postponed, do it now. */
+               update_screen(0);
+--- 3116,3122 ----
+  
+       if (n == KEYLEN_REMOVED)  /* key code removed */
+       {
+!          if (must_redraw != 0 && !need_wait_return && (State & CMDLINE) == 0)
+           {
+               /* Redrawing was postponed, do it now. */
+               update_screen(0);
+*** ../vim-7.3.138/src/version.c       2011-03-03 15:54:45.000000000 +0100
+--- src/version.c      2011-03-22 13:06:33.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     139,
+  /**/
+
+-- 
+"Software is like sex... it's better when it's free."
+               -- Linus Torvalds, initiator of the free Linux OS
+Makes me wonder what FSF stands for...?
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.140.patch0 b/vim/patches/vim-7.3.140.patch0
new file mode 100644 (file)
index 0000000..53c3aaf
--- /dev/null
@@ -0,0 +1,58 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.140
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.140
+Problem:    Crash when drawing the "$" at end-of-line for list mode just after
+           the window border and 'cursorline' is set.
+Solution:   Don't check for 'cursorline'. (Quentin Carbonneaux)
+Files:     src/screen.c
+
+
+*** ../vim-7.3.139/src/screen.c        2011-02-09 17:09:26.000000000 +0100
+--- src/screen.c       2011-03-22 13:29:04.000000000 +0100
+***************
+*** 5099,5109 ****
+  #ifdef FEAT_DIFF
+                   || filler_todo > 0
+  #endif
+!                  || (wp->w_p_list && lcs_eol != NUL && p_extra != at_end_str
+! #ifdef FEAT_SYN_HL
+!                         && !wp->w_p_cul
+! #endif
+!                      )
+                   || (n_extra != 0 && (c_extra != NUL || *p_extra != NUL)))
+               )
+       {
+--- 5099,5105 ----
+  #ifdef FEAT_DIFF
+                   || filler_todo > 0
+  #endif
+!                  || (wp->w_p_list && lcs_eol != NUL && p_extra != at_end_str)
+                   || (n_extra != 0 && (c_extra != NUL || *p_extra != NUL)))
+               )
+       {
+*** ../vim-7.3.139/src/version.c       2011-03-22 13:07:19.000000000 +0100
+--- src/version.c      2011-03-22 13:27:26.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     140,
+  /**/
+
+-- 
+Lawmakers made it obligatory for everybody to take at least one bath
+each week -- on Saturday night.
+               [real standing law in Vermont, 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/vim/patches/vim-7.3.141.patch0 b/vim/patches/vim-7.3.141.patch0
new file mode 100644 (file)
index 0000000..deb001b
--- /dev/null
@@ -0,0 +1,94 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.141
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.141
+Problem:    When a key code is not set get a confusing error message.
+Solution:   Change the error message to say the key code is not set.
+Files:     src/option.c, runtime/doc/options.txt
+
+
+*** ../vim-7.3.140/src/option.c        2011-01-22 00:11:42.000000000 +0100
+--- src/option.c       2011-03-22 14:25:52.000000000 +0100
+***************
+*** 4352,4358 ****
+                   p = find_termcode(key_name);
+                   if (p == NULL)
+                   {
+!                      errmsg = (char_u *)N_("E518: Unknown option");
+                       goto skip;
+                   }
+                   else
+--- 4352,4358 ----
+                   p = find_termcode(key_name);
+                   if (p == NULL)
+                   {
+!                      errmsg = (char_u *)N_("E846: Key code not set");
+                       goto skip;
+                   }
+                   else
+***************
+*** 4700,4707 ****
+                                               || s[i] == ','
+                                               || s[i] == NUL))
+                                       break;
+!                                  /* Count backspaces.  Only a comma with an
+!                                   * even number of backspaces before it is
+                                    * recognized as a separator */
+                                   if (s > origval && s[-1] == '\\')
+                                       ++bs;
+--- 4700,4707 ----
+                                               || s[i] == ','
+                                               || s[i] == NUL))
+                                       break;
+!                                  /* Count backslashes.  Only a comma with an
+!                                   * even number of backslashes before it is
+                                    * recognized as a separator */
+                                   if (s > origval && s[-1] == '\\')
+                                       ++bs;
+*** ../vim-7.3.140/runtime/doc/options.txt     2010-12-02 21:43:10.000000000 +0100
+--- runtime/doc/options.txt    2011-03-22 14:32:14.000000000 +0100
+***************
+*** 150,155 ****
+--- 150,167 ----
+  (the ^[ is a real <Esc> here, use CTRL-V <Esc> to enter it)
+  The advantage over a mapping is that it works in all situations.
+  
++ You can define any key codes, e.g.: >
++      :set t_xy=^[foo;
++ There is no warning for using a name that isn't recognized.  You can map these
++ codes as you like: >
++      :map <t_xy> something
++ <                                                            *E846*
++ When a key code is not set, it's like it does not exist.  Trying to get its
++ value will result in an error: >
++      :set t_kb=
++      :set t_kb
++      E846: Key code not set: t_kb
++ 
+  The t_xx options cannot be set from a |modeline| or in the |sandbox|, for
+  security reasons.
+  
+*** ../vim-7.3.140/src/version.c       2011-03-22 13:29:20.000000000 +0100
+--- src/version.c      2011-03-22 14:32:59.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     141,
+  /**/
+
+-- 
+"I know that there are people who don't love their fellow man,
+and I hate those people!" - Tom Lehrer
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.142.patch0 b/vim/patches/vim-7.3.142.patch0
new file mode 100644 (file)
index 0000000..6574f71
--- /dev/null
@@ -0,0 +1,85 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.142
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.142
+Problem:    Python stdout doesn't have a flush() method, causing an import to
+           fail.
+Solution:   Add a dummy flush() method. (Tobias Columbus)
+Files:     src/if_py_both.h
+
+
+*** ../vim-7.3.141/src/if_py_both.h    2010-10-27 12:17:54.000000000 +0200
+--- src/if_py_both.h   2011-03-22 15:37:43.000000000 +0100
+***************
+*** 33,38 ****
+--- 33,39 ----
+  
+  static PyObject *OutputWrite(PyObject *, PyObject *);
+  static PyObject *OutputWritelines(PyObject *, PyObject *);
++ static PyObject *OutputFlush(PyObject *, PyObject *);
+  
+  /* Function to write a line, points to either msg() or emsg(). */
+  typedef void (*writefn)(char_u *);
+***************
+*** 47,55 ****
+  
+  static struct PyMethodDef OutputMethods[] = {
+      /* name,     function,           calling,    documentation */
+!     {"write",            OutputWrite,        1,          "" },
+!     {"writelines",  OutputWritelines,        1,          "" },
+!     { NULL,      NULL,               0,          NULL }
+  };
+  
+  #define PyErr_SetVim(str) PyErr_SetString(VimError, str)
+--- 48,57 ----
+  
+  static struct PyMethodDef OutputMethods[] = {
+      /* name,     function,           calling,    documentation */
+!     {"write",            OutputWrite,        1,          ""},
+!     {"writelines",  OutputWritelines,        1,          ""},
+!     {"flush",       OutputFlush,        1,          ""},
+!     { NULL,      NULL,               0,          NULL}
+  };
+  
+  #define PyErr_SetVim(str) PyErr_SetString(VimError, str)
+***************
+*** 123,128 ****
+--- 125,139 ----
+      return Py_None;
+  }
+  
++     static PyObject *
++ OutputFlush(PyObject *self UNUSED, PyObject *args UNUSED)
++ {
++     /* do nothing */
++     Py_INCREF(Py_None);
++     return Py_None;
++ }
++ 
++ 
+  /* Buffer IO, we write one whole line at a time. */
+  static garray_T io_ga = {0, 0, 1, 80, NULL};
+  static writefn old_fn = NULL;
+*** ../vim-7.3.141/src/version.c       2011-03-22 14:35:01.000000000 +0100
+--- src/version.c      2011-03-22 15:45:38.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     142,
+  /**/
+
+-- 
+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/vim/patches/vim-7.3.143.patch0 b/vim/patches/vim-7.3.143.patch0
new file mode 100644 (file)
index 0000000..82585b0
--- /dev/null
@@ -0,0 +1,1520 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.143
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.143
+Problem:    Memfile is not tested sufficiently.  Looking up blocks in a
+           memfile is slow when there are many blocks.
+Solution:   Add high level test and unittest.  Adjust the number of hash
+           buckets to the number of blocks.  (Ivan Krasilnikov)
+Files:     Filelist, src/Makefile, src/main.c, src/memfile.c,
+           src/memfile_test.c src/structs.h src/testdir/Make_amiga.mak,
+           src/testdir/Make_dos.mak, src/testdir/Make_ming.mak,
+           src/testdir/Make_os2.mak, src/testdir/Make_vms.mak,
+           src/testdir/Makefile, src/testdir/test77.in, src/testdir/test77.ok
+
+
+*** ../vim-7.3.142/Filelist    2010-08-15 21:57:20.000000000 +0200
+--- Filelist   2011-03-22 17:39:22.000000000 +0100
+***************
+*** 39,44 ****
+--- 39,45 ----
+               src/mark.c \
+               src/mbyte.c \
+               src/memfile.c \
++              src/memfile_test.c \
+               src/memline.c \
+               src/menu.c \
+               src/message.c \
+***************
+*** 686,691 ****
+--- 687,694 ----
+               runtime/tutor/tutor.utf-8 \
+               runtime/tutor/tutor.?? \
+               runtime/tutor/tutor.??.* \
++              runtime/tutor/tutor.bar \
++              runtime/tutor/tutor.bar.* \
+               runtime/spell/README.txt \
+               runtime/spell/??/*.diff \
+               runtime/spell/??/main.aap \
+*** ../vim-7.3.142/src/Makefile        2011-02-15 15:27:00.000000000 +0100
+--- src/Makefile       2011-03-22 18:07:25.000000000 +0100
+***************
+*** 561,567 ****
+  #CFLAGS = -g -O2 '-DSTARTUPTIME="vimstartup"' -fno-strength-reduce -Wall -Wmissing-prototypes
+  
+  # Use this with GCC to check for mistakes, unused arguments, etc.
+! #CFLAGS = -g -Wall -Wextra -Wmissing-prototypes -Wunreachable-code -D_FORTIFY_SOURCE=1 -DU_DEBUG
+  #CFLAGS = -g -O2 -Wall -Wextra -Wmissing-prototypes -D_FORTIFY_SOURCE=1 -DU_DEBUG
+  #PYTHON_CFLAGS_EXTRA = -Wno-missing-field-initializers
+  #MZSCHEME_CFLAGS_EXTRA = -Wno-unreachable-code -Wno-unused-parameter
+--- 561,567 ----
+  #CFLAGS = -g -O2 '-DSTARTUPTIME="vimstartup"' -fno-strength-reduce -Wall -Wmissing-prototypes
+  
+  # Use this with GCC to check for mistakes, unused arguments, etc.
+! #CFLAGS = -g -Wall -Wextra -Wmissing-prototypes -Wunreachable-code -D_FORTIFY_SOURCE=1
+  #CFLAGS = -g -O2 -Wall -Wextra -Wmissing-prototypes -D_FORTIFY_SOURCE=1 -DU_DEBUG
+  #PYTHON_CFLAGS_EXTRA = -Wno-missing-field-initializers
+  #MZSCHEME_CFLAGS_EXTRA = -Wno-unreachable-code -Wno-unused-parameter
+***************
+*** 594,601 ****
+  
+  # PROFILING - Uncomment the next two lines to do profiling with gcc and gprof.
+  # Might not work with GUI or Perl.
+! # For unknown reasons adding "-lc" fixes a linking problem with GCC.  That's
+! # probably a bug in the "-pg" implementation.
+  # Need to recompile everything after changing this: "make clean" "make".
+  #PROFILE_CFLAGS = -pg -g -DWE_ARE_PROFILING
+  #PROFILE_LIBS = -pg
+--- 594,602 ----
+  
+  # PROFILING - Uncomment the next two lines to do profiling with gcc and gprof.
+  # Might not work with GUI or Perl.
+! # For unknown reasons adding "-lc" fixes a linking problem with some versions
+! # of GCC.  That's probably a bug in the "-pg" implementation.
+! # After running Vim see the profile result with: gmon vim gmon.out | vim -
+  # Need to recompile everything after changing this: "make clean" "make".
+  #PROFILE_CFLAGS = -pg -g -DWE_ARE_PROFILING
+  #PROFILE_LIBS = -pg
+***************
+*** 606,613 ****
+  # Configuration is in the .ccmalloc or ~/.ccmalloc file.
+  # Doesn't work very well, since memory linked to from global variables
+  # (in libraries) is also marked as leaked memory.
+! #PROFILE_CFLAGS = -DEXITFREE
+! #PROFILE_LIBS = -lccmalloc
+  
+  #####################################################
+  ###  Specific systems, check if yours is listed!  ### {{{
+--- 607,614 ----
+  # Configuration is in the .ccmalloc or ~/.ccmalloc file.
+  # Doesn't work very well, since memory linked to from global variables
+  # (in libraries) is also marked as leaked memory.
+! #LEAK_CFLAGS = -DEXITFREE
+! #LEAK_LIBS = -lccmalloc
+  
+  #####################################################
+  ###  Specific systems, check if yours is listed!  ### {{{
+***************
+*** 1329,1335 ****
+  PRE_DEFS = -Iproto $(DEFS) $(GUI_DEFS) $(GUI_IPATH) $(CPPFLAGS) $(EXTRA_IPATHS)
+  POST_DEFS = $(X_CFLAGS) $(MZSCHEME_CFLAGS) $(TCL_CFLAGS) $(EXTRA_DEFS)
+  
+! ALL_CFLAGS = $(PRE_DEFS) $(CFLAGS) $(PROFILE_CFLAGS) $(POST_DEFS)
+  
+  # Exclude $CFLAGS for osdef.sh, for Mac 10.4 some flags don't work together
+  # with "-E".
+--- 1330,1336 ----
+  PRE_DEFS = -Iproto $(DEFS) $(GUI_DEFS) $(GUI_IPATH) $(CPPFLAGS) $(EXTRA_IPATHS)
+  POST_DEFS = $(X_CFLAGS) $(MZSCHEME_CFLAGS) $(TCL_CFLAGS) $(EXTRA_DEFS)
+  
+! ALL_CFLAGS = $(PRE_DEFS) $(CFLAGS) $(PROFILE_CFLAGS) $(LEAK_CFLAGS) $(POST_DEFS)
+  
+  # Exclude $CFLAGS for osdef.sh, for Mac 10.4 some flags don't work together
+  # with "-E".
+***************
+*** 1358,1364 ****
+          $(PYTHON3_LIBS) \
+          $(TCL_LIBS) \
+          $(RUBY_LIBS) \
+!         $(PROFILE_LIBS)
+  
+  # abbreviations
+  DEST_BIN = $(DESTDIR)$(BINDIR)
+--- 1359,1366 ----
+          $(PYTHON3_LIBS) \
+          $(TCL_LIBS) \
+          $(RUBY_LIBS) \
+!         $(PROFILE_LIBS) \
+!         $(LEAK_LIBS)
+  
+  # abbreviations
+  DEST_BIN = $(DESTDIR)$(BINDIR)
+***************
+*** 1480,1487 ****
+           if_python.c if_python3.c if_tcl.c if_ruby.c if_sniff.c \
+           gui_beval.c workshop.c wsdebug.c integration.c netbeans.c
+  
+  # All sources, also the ones that are not configured
+! ALL_SRC = $(BASIC_SRC) $(ALL_GUI_SRC) $(EXTRA_SRC)
+  
+  # Which files to check with lint.  Select one of these three lines.  ALL_SRC
+  # checks more, but may not work well for checking a GUI that wasn't configured.
+--- 1482,1496 ----
+           if_python.c if_python3.c if_tcl.c if_ruby.c if_sniff.c \
+           gui_beval.c workshop.c wsdebug.c integration.c netbeans.c
+  
++ # Unittest files
++ MEMFILE_TEST_SRC = memfile_test.c
++ MEMFILE_TEST_TARGET = memfile_test$(EXEEXT)
++ 
++ UNITTEST_SRC = $(MEMFILE_TEST_SRC)
++ UNITTEST_TARGETS = $(MEMFILE_TEST_TARGET)
++ 
+  # All sources, also the ones that are not configured
+! ALL_SRC = $(BASIC_SRC) $(ALL_GUI_SRC) $(UNITTEST_SRC) $(EXTRA_SRC)
+  
+  # Which files to check with lint.  Select one of these three lines.  ALL_SRC
+  # checks more, but may not work well for checking a GUI that wasn't configured.
+***************
+*** 1492,1498 ****
+  #LINT_SRC = $(ALL_SRC)
+  #LINT_SRC = $(BASIC_SRC)
+  
+! OBJ = \
+       objects/buffer.o \
+       objects/blowfish.o \
+       objects/charset.o \
+--- 1501,1507 ----
+  #LINT_SRC = $(ALL_SRC)
+  #LINT_SRC = $(BASIC_SRC)
+  
+! OBJ_COMMON = \
+       objects/buffer.o \
+       objects/blowfish.o \
+       objects/charset.o \
+***************
+*** 1513,1522 ****
+       $(HANGULIN_OBJ) \
+       objects/if_cscope.o \
+       objects/if_xcmdsrv.o \
+-      objects/main.o \
+       objects/mark.o \
+!      objects/memfile.o \
+!      objects/memline.o \
+       objects/menu.o \
+       objects/message.o \
+       objects/misc1.o \
+--- 1522,1529 ----
+       $(HANGULIN_OBJ) \
+       objects/if_cscope.o \
+       objects/if_xcmdsrv.o \
+       objects/mark.o \
+!         objects/memline.o \
+       objects/menu.o \
+       objects/message.o \
+       objects/misc1.o \
+***************
+*** 1541,1546 ****
+--- 1548,1554 ----
+       objects/term.o \
+       objects/ui.o \
+       objects/undo.o \
++      objects/version.o \
+       objects/window.o \
+       $(GUI_OBJ) \
+       $(LUA_OBJ) \
+***************
+*** 1555,1560 ****
+--- 1563,1575 ----
+       $(NETBEANS_OBJ) \
+       $(WSDEBUG_OBJ)
+  
++ OBJ = $(OBJ_COMMON) \
++      objects/main.o \
++      objects/memfile.o \
++ 
++ MEMFILE_TEST_OBJ = $(OBJ_COMMON) \
++         objects/memfile_test.o
++ 
+  PRO_AUTO = \
+       blowfish.pro \
+       buffer.pro \
+***************
+*** 1700,1706 ****
+  $(VIMTARGET): auto/config.mk objects $(OBJ) version.c version.h
+       $(CCC) version.c -o objects/version.o
+       @LINK="$(PURIFY) $(SHRPENV) $(CClink) $(ALL_LIB_DIRS) $(LDFLAGS) \
+!              -o $(VIMTARGET) $(OBJ) objects/version.o $(ALL_LIBS)" \
+               MAKE="$(MAKE)" LINK_AS_NEEDED=$(LINK_AS_NEEDED) \
+               sh $(srcdir)/link.sh
+  
+--- 1715,1721 ----
+  $(VIMTARGET): auto/config.mk objects $(OBJ) version.c version.h
+       $(CCC) version.c -o objects/version.o
+       @LINK="$(PURIFY) $(SHRPENV) $(CClink) $(ALL_LIB_DIRS) $(LDFLAGS) \
+!              -o $(VIMTARGET) $(OBJ) $(ALL_LIBS)" \
+               MAKE="$(MAKE)" LINK_AS_NEEDED=$(LINK_AS_NEEDED) \
+               sh $(srcdir)/link.sh
+  
+***************
+*** 1825,1830 ****
+--- 1840,1854 ----
+               ln -s $(VIMTARGET) vim; \
+       fi
+       cd testdir; $(MAKE) -f Makefile $(GUI_TESTTARGET) VIMPROG=../$(VIMTARGET) $(GUI_TESTARG)
++      $(MAKE) -f Makefile unittest
++ 
++ unittesttargets:
++      $(MAKE) -f Makefile $(UNITTEST_TARGETS)
++ 
++ unittest unittests: $(UNITTEST_TARGETS)
++      @for t in $(UNITTEST_TARGETS); do \
++              ./$$t || exit 1; echo $$t passed; \
++      done
+  
+  testclean:
+       cd testdir; $(MAKE) -f Makefile clean
+***************
+*** 1832,1837 ****
+--- 1856,1872 ----
+               cd $(PODIR); $(MAKE) checkclean; \
+       fi
+  
++ # Unittests
++ # It's build just like Vim to satisfy all dependencies.
++ $(MEMFILE_TEST_TARGET): auto/config.mk objects $(MEMFILE_TEST_OBJ)
++      $(CCC) version.c -o objects/version.o
++      @LINK="$(PURIFY) $(SHRPENV) $(CClink) $(ALL_LIB_DIRS) $(LDFLAGS) \
++              -o $(MEMFILE_TEST_TARGET) $(MEMFILE_TEST_OBJ) $(ALL_LIBS)" \
++              MAKE="$(MAKE)" LINK_AS_NEEDED=$(LINK_AS_NEEDED) \
++              sh $(srcdir)/link.sh
++ 
++ # install targets
++ 
+  install: $(GUI_INSTALL)
+  
+  install_normal: installvim installtools $(INSTALL_LANGS) install-icons
+***************
+*** 2265,2270 ****
+--- 2300,2306 ----
+       -rm -f *.o objects/* core $(VIMTARGET).core $(VIMTARGET) vim xxd/*.o
+       -rm -f $(TOOLS) auto/osdef.h auto/pathdef.c auto/if_perl.c
+       -rm -f conftest* *~ auto/link.sed
++      -rm -f $(UNITTEST_TARGETS)
+       -rm -f runtime pixmaps
+       -rm -rf $(APPDIR)
+       -rm -rf mzscheme_base.c
+***************
+*** 2559,2564 ****
+--- 2595,2603 ----
+  objects/memfile.o: memfile.c
+       $(CCC) -o $@ memfile.c
+  
++ objects/memfile_test.o: memfile_test.c
++      $(CCC) -o $@ memfile_test.c
++ 
+  objects/memline.o: memline.c
+       $(CCC) -o $@ memline.c
+  
+***************
+*** 2877,2883 ****
+  objects/os_unix.o: os_unix.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
+   ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
+   gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h globals.h farsi.h \
+!  arabic.h if_mzsch.h os_unixx.h
+  objects/pathdef.o: auto/pathdef.c vim.h auto/config.h feature.h os_unix.h \
+   auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \
+   regexp.h gui.h gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h \
+--- 2916,2922 ----
+  objects/os_unix.o: os_unix.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
+   ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
+   gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h globals.h farsi.h \
+!  arabic.h os_unixx.h
+  objects/pathdef.o: auto/pathdef.c vim.h auto/config.h feature.h os_unix.h \
+   auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \
+   regexp.h gui.h gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h \
+***************
+*** 3016,3021 ****
+--- 3055,3064 ----
+  objects/pty.o: pty.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h ascii.h \
+   keymap.h term.h macros.h option.h structs.h regexp.h gui.h gui_beval.h \
+   proto/gui_beval.pro ex_cmds.h proto.h globals.h farsi.h arabic.h
++ objects/memfile_test.o: memfile_test.c main.c vim.h auto/config.h feature.h \
++  os_unix.h auto/osdef.h ascii.h keymap.h term.h macros.h option.h \
++  structs.h regexp.h gui.h gui_beval.h proto/gui_beval.pro ex_cmds.h \
++  proto.h globals.h farsi.h arabic.h farsi.c arabic.c memfile.c
+  objects/hangulin.o: hangulin.c vim.h auto/config.h feature.h os_unix.h \
+   auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \
+   regexp.h gui.h gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h \
+***************
+*** 3027,3033 ****
+  objects/if_mzsch.o: if_mzsch.c vim.h auto/config.h feature.h os_unix.h \
+   auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \
+   regexp.h gui.h gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h \
+!  globals.h farsi.h arabic.h if_mzsch.h mzscheme_base.c
+  objects/if_perl.o: auto/if_perl.c vim.h auto/config.h feature.h os_unix.h \
+   auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \
+   regexp.h gui.h gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h \
+--- 3070,3076 ----
+  objects/if_mzsch.o: if_mzsch.c vim.h auto/config.h feature.h os_unix.h \
+   auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \
+   regexp.h gui.h gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h \
+!  globals.h farsi.h arabic.h if_mzsch.h
+  objects/if_perl.o: auto/if_perl.c vim.h auto/config.h feature.h os_unix.h \
+   auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \
+   regexp.h gui.h gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h \
+***************
+*** 3048,3054 ****
+   ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
+   gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h globals.h farsi.h \
+   arabic.h
+! objects/if_ruby.o: if_ruby.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
+   ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
+   gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h globals.h farsi.h \
+   arabic.h version.h
+--- 3091,3097 ----
+   ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
+   gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h globals.h farsi.h \
+   arabic.h
+! objects/if_ruby.o: if_ruby.c auto/config.h vim.h feature.h os_unix.h auto/osdef.h \
+   ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
+   gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h globals.h farsi.h \
+   arabic.h version.h
+*** ../vim-7.3.142/src/main.c  2011-02-15 16:29:54.000000000 +0100
+--- src/main.c 2011-03-18 13:19:48.000000000 +0100
+***************
+*** 92,128 ****
+  #define EDIT_TAG    3            /* tag name argument given, use tagname */
+  #define EDIT_QF          4       /* start in quickfix mode */
+  
+! #if defined(UNIX) || defined(VMS)
+  static int file_owned __ARGS((char *fname));
+  #endif
+  static void mainerr __ARGS((int, char_u *));
+  static void main_msg __ARGS((char *s));
+  static void usage __ARGS((void));
+  static int get_number_arg __ARGS((char_u *p, int *idx, int def));
+! #if defined(HAVE_LOCALE_H) || defined(X_LOCALE)
+  static void init_locale __ARGS((void));
+! #endif
+  static void parse_command_name __ARGS((mparm_T *parmp));
+  static void early_arg_scan __ARGS((mparm_T *parmp));
+  static void command_line_scan __ARGS((mparm_T *parmp));
+  static void check_tty __ARGS((mparm_T *parmp));
+  static void read_stdin __ARGS((void));
+  static void create_windows __ARGS((mparm_T *parmp));
+! #ifdef FEAT_WINDOWS
+  static void edit_buffers __ARGS((mparm_T *parmp));
+! #endif
+  static void exe_pre_commands __ARGS((mparm_T *parmp));
+  static void exe_commands __ARGS((mparm_T *parmp));
+  static void source_startup_scripts __ARGS((mparm_T *parmp));
+  static void main_start_gui __ARGS((void));
+! #if defined(HAS_SWAP_EXISTS_ACTION)
+  static void check_swap_exists_action __ARGS((void));
+! #endif
+! #ifdef FEAT_CLIENTSERVER
+  static void exec_on_server __ARGS((mparm_T *parmp));
+  static void prepare_server __ARGS((mparm_T *parmp));
+  static void cmdsrv_main __ARGS((int *argc, char **argv, char_u *serverName_arg, char_u **serverStr));
+  static char_u *serverMakeName __ARGS((char_u *arg, char *cmd));
+  #endif
+  
+  
+--- 92,130 ----
+  #define EDIT_TAG    3            /* tag name argument given, use tagname */
+  #define EDIT_QF          4       /* start in quickfix mode */
+  
+! #if (defined(UNIX) || defined(VMS)) && !defined(NO_VIM_MAIN)
+  static int file_owned __ARGS((char *fname));
+  #endif
+  static void mainerr __ARGS((int, char_u *));
++ #ifndef NO_VIM_MAIN
+  static void main_msg __ARGS((char *s));
+  static void usage __ARGS((void));
+  static int get_number_arg __ARGS((char_u *p, int *idx, int def));
+! # if defined(HAVE_LOCALE_H) || defined(X_LOCALE)
+  static void init_locale __ARGS((void));
+! # endif
+  static void parse_command_name __ARGS((mparm_T *parmp));
+  static void early_arg_scan __ARGS((mparm_T *parmp));
+  static void command_line_scan __ARGS((mparm_T *parmp));
+  static void check_tty __ARGS((mparm_T *parmp));
+  static void read_stdin __ARGS((void));
+  static void create_windows __ARGS((mparm_T *parmp));
+! # ifdef FEAT_WINDOWS
+  static void edit_buffers __ARGS((mparm_T *parmp));
+! # endif
+  static void exe_pre_commands __ARGS((mparm_T *parmp));
+  static void exe_commands __ARGS((mparm_T *parmp));
+  static void source_startup_scripts __ARGS((mparm_T *parmp));
+  static void main_start_gui __ARGS((void));
+! # if defined(HAS_SWAP_EXISTS_ACTION)
+  static void check_swap_exists_action __ARGS((void));
+! # endif
+! # if defined(FEAT_CLIENTSERVER) || defined(PROTO)
+  static void exec_on_server __ARGS((mparm_T *parmp));
+  static void prepare_server __ARGS((mparm_T *parmp));
+  static void cmdsrv_main __ARGS((int *argc, char **argv, char_u *serverName_arg, char_u **serverStr));
+  static char_u *serverMakeName __ARGS((char_u *arg, char *cmd));
++ # endif
+  #endif
+  
+  
+***************
+*** 145,151 ****
+  #define ME_INVALID_ARG               5
+  };
+  
+! #ifndef PROTO            /* don't want a prototype for main() */
+      int
+  # ifdef VIMDLL
+  _export
+--- 147,154 ----
+  #define ME_INVALID_ARG               5
+  };
+  
+! #ifndef NO_VIM_MAIN  /* skip this for unittests */
+! #ifndef PROTO                /* don't want a prototype for main() */
+      int
+  # ifdef VIMDLL
+  _export
+***************
+*** 966,971 ****
+--- 969,975 ----
+      return 0;
+  }
+  #endif /* PROTO */
++ #endif /* NO_VIM_MAIN */
+  
+  /*
+   * Main loop: Execute Normal mode commands until exiting Vim.
+***************
+*** 1430,1435 ****
+--- 1434,1440 ----
+      mch_exit(exitval);
+  }
+  
++ #ifndef NO_VIM_MAIN
+  /*
+   * Get a (optional) count for a Vim argument.
+   */
+***************
+*** 2994,2999 ****
+--- 2999,3006 ----
+  #endif
+  }
+  
++ #endif  /* NO_VIM_MAIN */
++ 
+  /*
+   * Get an environment variable, and execute it as Ex commands.
+   * Returns FAIL if the environment variable was not executed, OK otherwise.
+***************
+*** 3033,3039 ****
+      return FAIL;
+  }
+  
+! #if defined(UNIX) || defined(VMS)
+  /*
+   * Return TRUE if we are certain the user owns the file "fname".
+   * Used for ".vimrc" and ".exrc".
+--- 3040,3046 ----
+      return FAIL;
+  }
+  
+! #if (defined(UNIX) || defined(VMS)) && !defined(NO_VIM_MAIN)
+  /*
+   * Return TRUE if we are certain the user owns the file "fname".
+   * Used for ".vimrc" and ".exrc".
+***************
+*** 3091,3096 ****
+--- 3098,3104 ----
+      mainerr(ME_ARG_MISSING, str);
+  }
+  
++ #ifndef NO_VIM_MAIN
+  /*
+   * print a message with three spaces prepended and '\n' appended.
+   */
+***************
+*** 3311,3316 ****
+--- 3319,3326 ----
+  }
+  #endif
+  
++ #endif
++ 
+  #if defined(STARTUPTIME) || defined(PROTO)
+  static void time_diff __ARGS((struct timeval *then, struct timeval *now));
+  
+***************
+*** 3420,3426 ****
+  
+  #endif
+  
+! #if defined(FEAT_CLIENTSERVER) || defined(PROTO)
+  
+  /*
+   * Common code for the X command server and the Win32 command server.
+--- 3430,3436 ----
+  
+  #endif
+  
+! #if (defined(FEAT_CLIENTSERVER) && !defined(NO_VIM_MAIN)) || defined(PROTO)
+  
+  /*
+   * Common code for the X command server and the Win32 command server.
+***************
+*** 3888,3893 ****
+--- 3898,3929 ----
+  }
+  
+  /*
++  * Make our basic server name: use the specified "arg" if given, otherwise use
++  * the tail of the command "cmd" we were started with.
++  * Return the name in allocated memory.  This doesn't include a serial number.
++  */
++     static char_u *
++ serverMakeName(arg, cmd)
++     char_u   *arg;
++     char     *cmd;
++ {
++     char_u *p;
++ 
++     if (arg != NULL && *arg != NUL)
++      p = vim_strsave_up(arg);
++     else
++     {
++      p = vim_strsave_up(gettail((char_u *)cmd));
++      /* Remove .exe or .bat from the name. */
++      if (p != NULL && vim_strchr(p, '.') != NULL)
++          *vim_strchr(p, '.') = NUL;
++     }
++     return p;
++ }
++ #endif /* FEAT_CLIENTSERVER */
++ 
++ #if defined(FEAT_CLIENTSERVER) || defined(PROTO)
++ /*
+   * Replace termcodes such as <CR> and insert as key presses if there is room.
+   */
+      void
+***************
+*** 3998,4029 ****
+  # endif
+      return res;
+  }
+! 
+! 
+! /*
+!  * Make our basic server name: use the specified "arg" if given, otherwise use
+!  * the tail of the command "cmd" we were started with.
+!  * Return the name in allocated memory.  This doesn't include a serial number.
+!  */
+!     static char_u *
+! serverMakeName(arg, cmd)
+!     char_u   *arg;
+!     char     *cmd;
+! {
+!     char_u *p;
+! 
+!     if (arg != NULL && *arg != NUL)
+!      p = vim_strsave_up(arg);
+!     else
+!     {
+!      p = vim_strsave_up(gettail((char_u *)cmd));
+!      /* Remove .exe or .bat from the name. */
+!      if (p != NULL && vim_strchr(p, '.') != NULL)
+!          *vim_strchr(p, '.') = NUL;
+!     }
+!     return p;
+! }
+! #endif /* FEAT_CLIENTSERVER */
+  
+  /*
+   * When FEAT_FKMAP is defined, also compile the Farsi source code.
+--- 4034,4040 ----
+  # endif
+      return res;
+  }
+! #endif
+  
+  /*
+   * When FEAT_FKMAP is defined, also compile the Farsi source code.
+*** ../vim-7.3.142/src/memfile.c       2010-12-17 18:06:00.000000000 +0100
+--- src/memfile.c      2011-03-03 18:47:39.000000000 +0100
+***************
+*** 84,89 ****
+--- 84,96 ----
+  static int  mf_write_block __ARGS((memfile_T *mfp, bhdr_T *hp, off_t offset, unsigned size));
+  static int  mf_trans_add __ARGS((memfile_T *, bhdr_T *));
+  static void mf_do_open __ARGS((memfile_T *, char_u *, int));
++ static void mf_hash_init __ARGS((mf_hashtab_T *));
++ static void mf_hash_free __ARGS((mf_hashtab_T *));
++ static void mf_hash_free_all __ARGS((mf_hashtab_T *));
++ static mf_hashitem_T *mf_hash_find __ARGS((mf_hashtab_T *, blocknr_T));
++ static void mf_hash_add_item __ARGS((mf_hashtab_T *, mf_hashitem_T *));
++ static void mf_hash_rem_item __ARGS((mf_hashtab_T *, mf_hashitem_T *));
++ static int mf_hash_grow __ARGS((mf_hashtab_T *));
+  
+  /*
+   * The functions for using a memfile:
+***************
+*** 119,125 ****
+      int              flags;
+  {
+      memfile_T                *mfp;
+-     int                      i;
+      off_t            size;
+  #if defined(STATFS) && defined(UNIX) && !defined(__QNX__)
+  # define USE_FSTATFS
+--- 126,131 ----
+***************
+*** 152,162 ****
+      mfp->mf_used_last = NULL;
+      mfp->mf_dirty = FALSE;
+      mfp->mf_used_count = 0;
+!     for (i = 0; i < MEMHASHSIZE; ++i)
+!     {
+!      mfp->mf_hash[i] = NULL;         /* hash lists are empty */
+!      mfp->mf_trans[i] = NULL;        /* trans lists are empty */
+!     }
+      mfp->mf_page_size = MEMFILE_PAGE_SIZE;
+  #ifdef FEAT_CRYPT
+      mfp->mf_old_key = NULL;
+--- 158,165 ----
+      mfp->mf_used_last = NULL;
+      mfp->mf_dirty = FALSE;
+      mfp->mf_used_count = 0;
+!     mf_hash_init(&mfp->mf_hash);
+!     mf_hash_init(&mfp->mf_trans);
+      mfp->mf_page_size = MEMFILE_PAGE_SIZE;
+  #ifdef FEAT_CRYPT
+      mfp->mf_old_key = NULL;
+***************
+*** 242,249 ****
+      int              del_file;
+  {
+      bhdr_T   *hp, *nextp;
+-     NR_TRANS *tp, *tpnext;
+-     int              i;
+  
+      if (mfp == NULL)             /* safety check */
+       return;
+--- 245,250 ----
+***************
+*** 263,274 ****
+      }
+      while (mfp->mf_free_first != NULL)           /* free entries in free list */
+       vim_free(mf_rem_free(mfp));
+!     for (i = 0; i < MEMHASHSIZE; ++i)            /* free entries in trans lists */
+!      for (tp = mfp->mf_trans[i]; tp != NULL; tp = tpnext)
+!      {
+!          tpnext = tp->nt_next;
+!          vim_free(tp);
+!      }
+      vim_free(mfp->mf_fname);
+      vim_free(mfp->mf_ffname);
+      vim_free(mfp);
+--- 264,271 ----
+      }
+      while (mfp->mf_free_first != NULL)           /* free entries in free list */
+       vim_free(mf_rem_free(mfp));
+!     mf_hash_free(&mfp->mf_hash);
+!     mf_hash_free_all(&mfp->mf_trans);            /* free hashtable and its items */
+      vim_free(mfp->mf_fname);
+      vim_free(mfp->mf_ffname);
+      vim_free(mfp);
+***************
+*** 743,758 ****
+      memfile_T        *mfp;
+      bhdr_T   *hp;
+  {
+!     bhdr_T   *hhp;
+!     int              hash;
+! 
+!     hash = MEMHASH(hp->bh_bnum);
+!     hhp = mfp->mf_hash[hash];
+!     hp->bh_hash_next = hhp;
+!     hp->bh_hash_prev = NULL;
+!     if (hhp != NULL)
+!      hhp->bh_hash_prev = hp;
+!     mfp->mf_hash[hash] = hp;
+  }
+  
+  /*
+--- 740,746 ----
+      memfile_T        *mfp;
+      bhdr_T   *hp;
+  {
+!     mf_hash_add_item(&mfp->mf_hash, (mf_hashitem_T *)hp);
+  }
+  
+  /*
+***************
+*** 763,775 ****
+      memfile_T        *mfp;
+      bhdr_T   *hp;
+  {
+!     if (hp->bh_hash_prev == NULL)
+!      mfp->mf_hash[MEMHASH(hp->bh_bnum)] = hp->bh_hash_next;
+!     else
+!      hp->bh_hash_prev->bh_hash_next = hp->bh_hash_next;
+! 
+!     if (hp->bh_hash_next)
+!      hp->bh_hash_next->bh_hash_prev = hp->bh_hash_prev;
+  }
+  
+  /*
+--- 751,757 ----
+      memfile_T        *mfp;
+      bhdr_T   *hp;
+  {
+!     mf_hash_rem_item(&mfp->mf_hash, (mf_hashitem_T *)hp);
+  }
+  
+  /*
+***************
+*** 780,791 ****
+      memfile_T        *mfp;
+      blocknr_T        nr;
+  {
+!     bhdr_T   *hp;
+! 
+!     for (hp = mfp->mf_hash[MEMHASH(nr)]; hp != NULL; hp = hp->bh_hash_next)
+!      if (hp->bh_bnum == nr)
+!          break;
+!     return hp;
+  }
+  
+  /*
+--- 762,768 ----
+      memfile_T        *mfp;
+      blocknr_T        nr;
+  {
+!     return (bhdr_T *)mf_hash_find(&mfp->mf_hash, nr);
+  }
+  
+  /*
+***************
+*** 1187,1193 ****
+  {
+      bhdr_T   *freep;
+      blocknr_T        new_bnum;
+-     int              hash;
+      NR_TRANS *np;
+      int              page_count;
+  
+--- 1164,1169 ----
+***************
+*** 1235,1246 ****
+      hp->bh_bnum = new_bnum;
+      mf_ins_hash(mfp, hp);                /* insert in new hash list */
+  
+!     hash = MEMHASH(np->nt_old_bnum);     /* insert in trans list */
+!     np->nt_next = mfp->mf_trans[hash];
+!     mfp->mf_trans[hash] = np;
+!     if (np->nt_next != NULL)
+!      np->nt_next->nt_prev = np;
+!     np->nt_prev = NULL;
+  
+      return OK;
+  }
+--- 1211,1218 ----
+      hp->bh_bnum = new_bnum;
+      mf_ins_hash(mfp, hp);                /* insert in new hash list */
+  
+!     /* Insert "np" into "mf_trans" hashtable with key "np->nt_old_bnum" */
+!     mf_hash_add_item(&mfp->mf_trans, (mf_hashitem_T *)np);
+  
+      return OK;
+  }
+***************
+*** 1255,1279 ****
+      memfile_T        *mfp;
+      blocknr_T        old_nr;
+  {
+-     int              hash;
+      NR_TRANS *np;
+      blocknr_T        new_bnum;
+  
+!     hash = MEMHASH(old_nr);
+!     for (np = mfp->mf_trans[hash]; np != NULL; np = np->nt_next)
+!      if (np->nt_old_bnum == old_nr)
+!          break;
+      if (np == NULL)          /* not found */
+       return old_nr;
+  
+      mfp->mf_neg_count--;
+      new_bnum = np->nt_new_bnum;
+!     if (np->nt_prev != NULL)         /* remove entry from the trans list */
+!      np->nt_prev->nt_next = np->nt_next;
+!     else
+!      mfp->mf_trans[hash] = np->nt_next;
+!     if (np->nt_next != NULL)
+!      np->nt_next->nt_prev = np->nt_prev;
+      vim_free(np);
+  
+      return new_bnum;
+--- 1227,1246 ----
+      memfile_T        *mfp;
+      blocknr_T        old_nr;
+  {
+      NR_TRANS *np;
+      blocknr_T        new_bnum;
+  
+!     np = (NR_TRANS *)mf_hash_find(&mfp->mf_trans, old_nr);
+! 
+      if (np == NULL)          /* not found */
+       return old_nr;
+  
+      mfp->mf_neg_count--;
+      new_bnum = np->nt_new_bnum;
+! 
+!     /* remove entry from the trans list */
+!     mf_hash_rem_item(&mfp->mf_trans, (mf_hashitem_T *)np);
+! 
+      vim_free(np);
+  
+      return new_bnum;
+***************
+*** 1397,1399 ****
+--- 1364,1570 ----
+       mch_hide(mfp->mf_fname);    /* try setting the 'hidden' flag */
+      }
+  }
++ 
++ /*
++  * Implementation of mf_hashtab_T follows.
++  */
++ 
++ /*
++  * The number of buckets in the hashtable is increased by a factor of
++  * MHT_GROWTH_FACTOR when the average number of items per bucket
++  * exceeds 2 ^ MHT_LOG_LOAD_FACTOR.
++  */
++ #define MHT_LOG_LOAD_FACTOR 6
++ #define MHT_GROWTH_FACTOR   2   /* must be a power of two */
++ 
++ /*
++  * Initialize an empty hash table.
++  */
++     static void
++ mf_hash_init(mht)
++     mf_hashtab_T *mht;
++ {
++     vim_memset(mht, 0, sizeof(mf_hashtab_T));
++     mht->mht_buckets = mht->mht_small_buckets;
++     mht->mht_mask = MHT_INIT_SIZE - 1;
++ }
++ 
++ /*
++  * Free the array of a hash table.  Does not free the items it contains!
++  * The hash table must not be used again without another mf_hash_init() call.
++  */
++     static void
++ mf_hash_free(mht)
++     mf_hashtab_T *mht;
++ {
++     if (mht->mht_buckets != mht->mht_small_buckets)
++      vim_free(mht->mht_buckets);
++ }
++ 
++ /*
++  * Free the array of a hash table and all the items it contains.
++  */
++     static void
++ mf_hash_free_all(mht)
++     mf_hashtab_T    *mht;
++ {
++     long_u       idx;
++     mf_hashitem_T   *mhi;
++     mf_hashitem_T   *next;
++ 
++     for (idx = 0; idx <= mht->mht_mask; idx++)
++      for (mhi = mht->mht_buckets[idx]; mhi != NULL; mhi = next)
++      {
++          next = mhi->mhi_next;
++          vim_free(mhi);
++      }
++ 
++     mf_hash_free(mht);
++ }
++ 
++ /*
++  * Find "key" in hashtable "mht".
++  * Returns a pointer to a mf_hashitem_T or NULL if the item was not found.
++  */
++     static mf_hashitem_T *
++ mf_hash_find(mht, key)
++     mf_hashtab_T    *mht;
++     blocknr_T            key;
++ {
++     mf_hashitem_T   *mhi;
++ 
++     mhi = mht->mht_buckets[key & mht->mht_mask];
++     while (mhi != NULL && mhi->mhi_key != key)
++      mhi = mhi->mhi_next;
++ 
++     return mhi;
++ }
++ 
++ /*
++  * Add item "mhi" to hashtable "mht".
++  * "mhi" must not be NULL.
++  */
++     static void
++ mf_hash_add_item(mht, mhi)
++     mf_hashtab_T    *mht;
++     mf_hashitem_T   *mhi;
++ {
++     long_u       idx;
++ 
++     idx = mhi->mhi_key & mht->mht_mask;
++     mhi->mhi_next = mht->mht_buckets[idx];
++     mhi->mhi_prev = NULL;
++     if (mhi->mhi_next != NULL)
++      mhi->mhi_next->mhi_prev = mhi;
++     mht->mht_buckets[idx] = mhi;
++ 
++     mht->mht_count++;
++ 
++     /*
++      * Grow hashtable when we have more thank 2^MHT_LOG_LOAD_FACTOR
++      * items per bucket on average
++      */
++     if (mht->mht_fixed == 0
++      && (mht->mht_count >> MHT_LOG_LOAD_FACTOR) > mht->mht_mask)
++     {
++      if (mf_hash_grow(mht) == FAIL)
++      {
++          /* stop trying to grow after first failure to allocate memory */
++          mht->mht_fixed = 1;
++      }
++     }
++ }
++ 
++ /*
++  * Remove item "mhi" from hashtable "mht".
++  * "mhi" must not be NULL and must have been inserted into "mht".
++  */
++     static void
++ mf_hash_rem_item(mht, mhi)
++     mf_hashtab_T    *mht;
++     mf_hashitem_T   *mhi;
++ {
++     if (mhi->mhi_prev == NULL)
++      mht->mht_buckets[mhi->mhi_key & mht->mht_mask] = mhi->mhi_next;
++     else
++      mhi->mhi_prev->mhi_next = mhi->mhi_next;
++ 
++     if (mhi->mhi_next != NULL)
++      mhi->mhi_next->mhi_prev = mhi->mhi_prev;
++ 
++     mht->mht_count--;
++ 
++     /* We could shrink the table here, but it typically takes little memory,
++      * so why bother?  */
++ }
++ 
++ /*
++  * Increase number of buckets in the hashtable by MHT_GROWTH_FACTOR and
++  * rehash items.
++  * Returns FAIL when out of memory.
++  */
++     static int
++ mf_hash_grow(mht)
++     mf_hashtab_T    *mht;
++ {
++     long_u       i, j;
++     int                  shift;
++     mf_hashitem_T   *mhi;
++     mf_hashitem_T   *tails[MHT_GROWTH_FACTOR];
++     mf_hashitem_T   **buckets;
++     size_t       size;
++ 
++     size = (mht->mht_mask + 1) * MHT_GROWTH_FACTOR * sizeof(void *);
++     buckets = (mf_hashitem_T **)lalloc_clear(size, FALSE);
++     if (buckets == NULL)
++      return FAIL;
++ 
++     shift = 0;
++     while ((mht->mht_mask >> shift) != 0)
++      shift++;
++ 
++     for (i = 0; i <= mht->mht_mask; i++)
++     {
++      /*
++       * Traverse the items in the i-th original bucket and move them into
++       * MHT_GROWTH_FACTOR new buckets, preserving their relative order
++       * within each new bucket.  Preserving the order is important because
++       * mf_get() tries to keep most recently used items at the front of
++       * each bucket.
++       *
++       * Here we strongly rely on the fact the hashes are computed modulo
++       * a power of two.
++       */
++ 
++      vim_memset(tails, 0, sizeof(tails));
++ 
++      for (mhi = mht->mht_buckets[i]; mhi != NULL; mhi = mhi->mhi_next)
++      {
++          j = (mhi->mhi_key >> shift) & (MHT_GROWTH_FACTOR - 1);
++          if (tails[j] == NULL)
++          {
++              buckets[i + (j << shift)] = mhi;
++              tails[j] = mhi;
++              mhi->mhi_prev = NULL;
++          }
++          else
++          {
++              tails[j]->mhi_next = mhi;
++              mhi->mhi_prev = tails[j];
++              tails[j] = mhi;
++          }
++      }
++ 
++      for (j = 0; j < MHT_GROWTH_FACTOR; j++)
++          if (tails[j] != NULL)
++              tails[j]->mhi_next = NULL;
++     }
++ 
++     if (mht->mht_buckets != mht->mht_small_buckets)
++      vim_free(mht->mht_buckets);
++ 
++     mht->mht_buckets = buckets;
++     mht->mht_mask = (mht->mht_mask + 1) * MHT_GROWTH_FACTOR - 1;
++ 
++     return OK;
++ }
+*** ../vim-7.3.142/src/memfile_test.c  2011-03-03 21:58:14.000000000 +0100
+--- src/memfile_test.c 2011-03-03 20:40:29.000000000 +0100
+***************
+*** 0 ****
+--- 1,145 ----
++ /* vi:set ts=8 sts=4 sw=4:
++  *
++  * VIM - Vi IMproved by Bram Moolenaar
++  *
++  * Do ":help uganda"  in Vim to read copying and usage conditions.
++  * Do ":help credits" in Vim to see a list of people who contributed.
++  * See README.txt for an overview of the Vim source code.
++  */
++ 
++ /*
++  * memfile_test.c: Unittests for memfile.c
++  * Mostly by Ivan Krasilnikov.
++  */
++ 
++ #undef NDEBUG
++ #include <assert.h>
++ 
++ /* Must include main.c because it contains much more than just main() */
++ #define NO_VIM_MAIN
++ #include "main.c"
++ 
++ /* This file has to be included because the tested functions are static */
++ #include "memfile.c"
++ 
++ #define index_to_key(i) ((i) ^ 15167)
++ #define TEST_COUNT 50000
++ 
++ static void test_mf_hash __ARGS((void));
++ 
++ /*
++  * Test mf_hash_*() functions.
++  */
++     static void
++ test_mf_hash()
++ {
++     mf_hashtab_T   ht;
++     mf_hashitem_T  *item;
++     blocknr_T      key;
++     long_u      i;
++     long_u      num_buckets;
++ 
++     mf_hash_init(&ht);
++ 
++     /* insert some items and check invariants */
++     for (i = 0; i < TEST_COUNT; i++)
++     {
++      assert(ht.mht_count == i);
++ 
++      /* check that number of buckets is a power of 2 */
++      num_buckets = ht.mht_mask + 1;
++      assert(num_buckets > 0 && (num_buckets & (num_buckets - 1)) == 0);
++ 
++      /* check load factor */
++      assert(ht.mht_count <= (num_buckets << MHT_LOG_LOAD_FACTOR));
++ 
++      if (i < (MHT_INIT_SIZE << MHT_LOG_LOAD_FACTOR))
++      {
++          /* first expansion shouldn't have occurred yet */
++          assert(num_buckets == MHT_INIT_SIZE);
++          assert(ht.mht_buckets == ht.mht_small_buckets);
++      }
++      else
++      {
++          assert(num_buckets > MHT_INIT_SIZE);
++          assert(ht.mht_buckets != ht.mht_small_buckets);
++      }
++ 
++      key = index_to_key(i);
++      assert(mf_hash_find(&ht, key) == NULL);
++ 
++      /* allocate and add new item */
++      item = (mf_hashitem_T *)lalloc_clear(sizeof(mf_hashtab_T), FALSE);
++      assert(item != NULL);
++      item->mhi_key = key;
++      mf_hash_add_item(&ht, item);
++ 
++      assert(mf_hash_find(&ht, key) == item);
++ 
++      if (ht.mht_mask + 1 != num_buckets)
++      {
++          /* hash table was expanded */
++          assert(ht.mht_mask + 1 == num_buckets * MHT_GROWTH_FACTOR);
++          assert(i + 1 == (num_buckets << MHT_LOG_LOAD_FACTOR));
++      }
++     }
++ 
++     /* check presence of inserted items */
++     for (i = 0; i < TEST_COUNT; i++)
++     {
++      key = index_to_key(i);
++      item = mf_hash_find(&ht, key);
++      assert(item != NULL);
++      assert(item->mhi_key == key);
++     }
++ 
++     /* delete some items */
++     for (i = 0; i < TEST_COUNT; i++)
++     {
++      if (i % 100 < 70)
++      {
++          key = index_to_key(i);
++          item = mf_hash_find(&ht, key);
++          assert(item != NULL);
++          assert(item->mhi_key == key);
++ 
++          mf_hash_rem_item(&ht, item);
++          assert(mf_hash_find(&ht, key) == NULL);
++ 
++          mf_hash_add_item(&ht, item);
++          assert(mf_hash_find(&ht, key) == item);
++ 
++          mf_hash_rem_item(&ht, item);
++          assert(mf_hash_find(&ht, key) == NULL);
++ 
++          vim_free(item);
++      }
++     }
++ 
++     /* check again */
++     for (i = 0; i < TEST_COUNT; i++)
++     {
++      key = index_to_key(i);
++      item = mf_hash_find(&ht, key);
++ 
++      if (i % 100 < 70)
++      {
++          assert(item == NULL);
++      }
++      else
++      {
++          assert(item != NULL);
++          assert(item->mhi_key == key);
++      }
++     }
++ 
++     /* free hash table and all remaining items */
++     mf_hash_free_all(&ht);
++ }
++ 
++     int
++ main()
++ {
++     test_mf_hash();
++     return 0;
++ }
+*** ../vim-7.3.142/src/structs.h       2011-02-15 17:39:14.000000000 +0100
+--- src/structs.h      2011-03-03 18:49:01.000000000 +0100
+***************
+*** 378,383 ****
+--- 378,412 ----
+  typedef long             blocknr_T;
+  
+  /*
++  * mf_hashtab_T is a chained hashtable with blocknr_T key and arbitrary
++  * structures as items.  This is an intrusive data structure: we require
++  * that items begin with mf_hashitem_T which contains the key and linked
++  * list pointers.  List of items in each bucket is doubly-linked.
++  */
++ 
++ typedef struct mf_hashitem_S mf_hashitem_T;
++ 
++ struct mf_hashitem_S
++ {
++     mf_hashitem_T   *mhi_next;
++     mf_hashitem_T   *mhi_prev;
++     blocknr_T            mhi_key;
++ };
++ 
++ #define MHT_INIT_SIZE   64
++ 
++ typedef struct mf_hashtab_S
++ {
++     long_u       mht_mask;       /* mask used for hash value (nr of items
++                                   * in array is "mht_mask" + 1) */
++     long_u       mht_count;      /* nr of items inserted into hashtable */
++     mf_hashitem_T   **mht_buckets;  /* points to mht_small_buckets or
++                                   *dynamically allocated array */
++     mf_hashitem_T   *mht_small_buckets[MHT_INIT_SIZE];   /* initial buckets */
++     char         mht_fixed;      /* non-zero value forbids growth */
++ } mf_hashtab_T;
++ 
++ /*
+   * for each (previously) used block in the memfile there is one block header.
+   *
+   * The block may be linked in the used list OR in the free list.
+***************
+*** 394,404 ****
+  
+  struct block_hdr
+  {
+      bhdr_T   *bh_next;           /* next block_hdr in free or used list */
+      bhdr_T   *bh_prev;           /* previous block_hdr in used list */
+-     bhdr_T   *bh_hash_next;      /* next block_hdr in hash list */
+-     bhdr_T   *bh_hash_prev;      /* previous block_hdr in hash list */
+-     blocknr_T        bh_bnum;            /* block number */
+      char_u   *bh_data;           /* pointer to memory (for used block) */
+      int              bh_page_count;      /* number of pages in this block */
+  
+--- 423,433 ----
+  
+  struct block_hdr
+  {
++     mf_hashitem_T bh_hashitem;      /* header for hash table and key */
++ #define bh_bnum bh_hashitem.mhi_key /* block number, part of bh_hashitem */
++ 
+      bhdr_T   *bh_next;           /* next block_hdr in free or used list */
+      bhdr_T   *bh_prev;           /* previous block_hdr in used list */
+      char_u   *bh_data;           /* pointer to memory (for used block) */
+      int              bh_page_count;      /* number of pages in this block */
+  
+***************
+*** 417,425 ****
+  
+  struct nr_trans
+  {
+!     NR_TRANS *nt_next;               /* next nr_trans in hash list */
+!     NR_TRANS *nt_prev;               /* previous nr_trans in hash list */
+!     blocknr_T        nt_old_bnum;            /* old, negative, number */
+      blocknr_T        nt_new_bnum;            /* new, positive, number */
+  };
+  
+--- 446,454 ----
+  
+  struct nr_trans
+  {
+!     mf_hashitem_T nt_hashitem;               /* header for hash table and key */
+! #define nt_old_bnum nt_hashitem.mhi_key      /* old, negative, number */
+! 
+      blocknr_T        nt_new_bnum;            /* new, positive, number */
+  };
+  
+***************
+*** 499,510 ****
+  
+  typedef struct file_buffer buf_T;  /* forward declaration */
+  
+- /*
+-  * Simplistic hashing scheme to quickly locate the blocks in the used list.
+-  * 64 blocks are found directly (64 * 4K = 256K, most files are smaller).
+-  */
+- #define MEMHASHSIZE  64
+- #define MEMHASH(nr)  ((nr) & (MEMHASHSIZE - 1))
+  #define MF_SEED_LEN  8
+  
+  struct memfile
+--- 528,533 ----
+***************
+*** 517,524 ****
+      bhdr_T   *mf_used_last;          /* lru block_hdr in used list */
+      unsigned mf_used_count;          /* number of pages in used list */
+      unsigned mf_used_count_max;      /* maximum number of pages in memory */
+!     bhdr_T   *mf_hash[MEMHASHSIZE];  /* array of hash lists */
+!     NR_TRANS *mf_trans[MEMHASHSIZE]; /* array of trans lists */
+      blocknr_T        mf_blocknr_max;         /* highest positive block number + 1*/
+      blocknr_T        mf_blocknr_min;         /* lowest negative block number - 1 */
+      blocknr_T        mf_neg_count;           /* number of negative blocks numbers */
+--- 540,547 ----
+      bhdr_T   *mf_used_last;          /* lru block_hdr in used list */
+      unsigned mf_used_count;          /* number of pages in used list */
+      unsigned mf_used_count_max;      /* maximum number of pages in memory */
+!     mf_hashtab_T mf_hash;            /* hash lists */
+!     mf_hashtab_T mf_trans;           /* trans lists */
+      blocknr_T        mf_blocknr_max;         /* highest positive block number + 1*/
+      blocknr_T        mf_blocknr_min;         /* lowest negative block number - 1 */
+      blocknr_T        mf_neg_count;           /* number of negative blocks numbers */
+*** ../vim-7.3.142/src/testdir/Make_amiga.mak  2010-11-10 16:54:16.000000000 +0100
+--- src/testdir/Make_amiga.mak 2011-03-03 17:04:14.000000000 +0100
+***************
+*** 28,34 ****
+               test61.out test62.out test63.out test64.out test65.out \
+               test66.out test67.out test68.out test69.out test70.out \
+               test71.out test72.out test73.out test74.out test75.out \
+!              test76.out
+  
+  .SUFFIXES: .in .out
+  
+--- 28,34 ----
+               test61.out test62.out test63.out test64.out test65.out \
+               test66.out test67.out test68.out test69.out test70.out \
+               test71.out test72.out test73.out test74.out test75.out \
+!              test76.out test77.out
+  
+  .SUFFIXES: .in .out
+  
+***************
+*** 124,126 ****
+--- 124,127 ----
+  test74.out: test74.in
+  test75.out: test75.in
+  test76.out: test76.in
++ test77.out: test77.in
+*** ../vim-7.3.142/src/testdir/Make_dos.mak    2010-11-10 16:54:16.000000000 +0100
+--- src/testdir/Make_dos.mak   2011-03-03 17:04:20.000000000 +0100
+***************
+*** 28,34 ****
+               test37.out test38.out test39.out test40.out test41.out \
+               test42.out test52.out test65.out test66.out test67.out \
+               test68.out test69.out test71.out test72.out test73.out \
+!              test74.out test75.out test76.out
+  
+  SCRIPTS32 =  test50.out test70.out
+  
+--- 28,34 ----
+               test37.out test38.out test39.out test40.out test41.out \
+               test42.out test52.out test65.out test66.out test67.out \
+               test68.out test69.out test71.out test72.out test73.out \
+!              test74.out test75.out test76.out test77.out
+  
+  SCRIPTS32 =  test50.out test70.out
+  
+*** ../vim-7.3.142/src/testdir/Make_ming.mak   2010-11-10 16:54:16.000000000 +0100
+--- src/testdir/Make_ming.mak  2011-03-03 17:04:32.000000000 +0100
+***************
+*** 48,54 ****
+               test37.out test38.out test39.out test40.out test41.out \
+               test42.out test52.out test65.out test66.out test67.out \
+               test68.out test69.out test71.out test72.out test73.out \
+!              test74.out test75.out test76.out
+  
+  SCRIPTS32 =  test50.out test70.out
+  
+--- 48,54 ----
+               test37.out test38.out test39.out test40.out test41.out \
+               test42.out test52.out test65.out test66.out test67.out \
+               test68.out test69.out test71.out test72.out test73.out \
+!              test74.out test75.out test76.out test77.out
+  
+  SCRIPTS32 =  test50.out test70.out
+  
+*** ../vim-7.3.142/src/testdir/Make_os2.mak    2010-11-10 16:54:16.000000000 +0100
+--- src/testdir/Make_os2.mak   2011-03-03 17:04:48.000000000 +0100
+***************
+*** 28,34 ****
+               test61.out test62.out test63.out test64.out test65.out \
+               test66.out test67.out test68.out test69.out test70.out \
+               test71.out test72.out test73.out test74.out test75.out \
+!              test76.out
+  
+  .SUFFIXES: .in .out
+  
+--- 28,34 ----
+               test61.out test62.out test63.out test64.out test65.out \
+               test66.out test67.out test68.out test69.out test70.out \
+               test71.out test72.out test73.out test74.out test75.out \
+!              test76.out test77.out
+  
+  .SUFFIXES: .in .out
+  
+*** ../vim-7.3.142/src/testdir/Makefile        2010-11-10 16:54:16.000000000 +0100
+--- src/testdir/Makefile       2011-03-22 17:03:25.000000000 +0100
+***************
+*** 25,31 ****
+               test59.out test60.out test61.out test62.out test63.out \
+               test64.out test65.out test66.out test67.out test68.out \
+               test69.out test70.out test71.out test72.out test73.out \
+!              test74.out test75.out test76.out
+  
+  SCRIPTS_GUI = test16.out
+  
+--- 25,31 ----
+               test59.out test60.out test61.out test62.out test63.out \
+               test64.out test65.out test66.out test67.out test68.out \
+               test69.out test70.out test71.out test72.out test73.out \
+!              test74.out test75.out test76.out test77.out
+  
+  SCRIPTS_GUI = test16.out
+  
+***************
+*** 71,77 ****
+                 fi \
+               else echo $* NO OUTPUT >>test.log; \
+               fi"
+!      -rm -rf X* test.ok viminfo
+  
+  test49.out: test49.vim
+  
+--- 71,77 ----
+                 fi \
+               else echo $* NO OUTPUT >>test.log; \
+               fi"
+! #    -rm -rf X* test.ok viminfo
+  
+  test49.out: test49.vim
+  
+*** ../vim-7.3.142/src/testdir/test77.in       2011-03-03 21:59:10.000000000 +0100
+--- src/testdir/test77.in      2011-03-22 17:12:38.000000000 +0100
+***************
+*** 0 ****
+--- 1,27 ----
++ Inserts 2 million lines with consecutive integers starting from 1
++ (essentially, the output of GNU's seq 1 2000000), writes them to Xtest
++ and writes its cksum to test.out.
++ 
++ We need 2 million lines to trigger a call to mf_hash_grow().  If it would mess
++ up the lines the checksum would differ.
++ 
++ cksum is part of POSIX and so should be available on most Unixes.
++ If it isn't available then the test will be skipped.
++ 
++ STARTTEST
++ :so small.vim
++ :if !executable("cksum")
++ : e! test.ok
++ : w! test.out
++ : qa!
++ :endif
++ :set fileformat=unix undolevels=-1
++ ggdG
++ :let i = 1
++ :while i <= 2000000 | call append(i, range(i, i + 99)) | let i += 100 | endwhile
++ ggdd
++ :w! Xtest
++ :!cksum Xtest > test.out
++ :qa!
++ ENDTEST
++ 
+*** ../vim-7.3.142/src/testdir/test77.ok       2011-03-03 21:59:10.000000000 +0100
+--- src/testdir/test77.ok      2011-03-22 17:10:14.000000000 +0100
+***************
+*** 0 ****
+--- 1 ----
++ 3678979763 14888896 Xtest
+*** ../vim-7.3.142/src/version.c       2011-03-22 15:47:18.000000000 +0100
+--- src/version.c      2011-03-22 18:01:48.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     143,
+  /**/
+
+-- 
+SIGIRO -- irony detected (iron core dumped)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.144.patch0 b/vim/patches/vim-7.3.144.patch0
new file mode 100644 (file)
index 0000000..3bdea8d
--- /dev/null
@@ -0,0 +1,80 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.144
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.144
+Problem:    Crash with ":python help(dir)". (Kearn Holliday)
+Solution:   Fix the way the type is set on objects. (Tobias Columbus)
+Files:     src/if_python.c
+
+
+*** ../vim-7.3.143/src/if_python.c     2010-11-16 19:25:56.000000000 +0100
+--- src/if_python.c    2011-03-26 13:54:22.000000000 +0100
+***************
+*** 780,786 ****
+  PythonIO_Init(void)
+  {
+      /* Fixups... */
+!     OutputType.ob_type = &PyType_Type;
+  
+      return PythonIO_Init_io();
+  }
+--- 780,786 ----
+  PythonIO_Init(void)
+  {
+      /* Fixups... */
+!     PyType_Ready(&OutputType);
+  
+      return PythonIO_Init_io();
+  }
+***************
+*** 1402,1413 ****
+      static char *(argv[2]) = {"/must>not&exist/foo", NULL};
+  
+      /* Fixups... */
+!     BufferType.ob_type = &PyType_Type;
+!     RangeType.ob_type = &PyType_Type;
+!     WindowType.ob_type = &PyType_Type;
+!     BufListType.ob_type = &PyType_Type;
+!     WinListType.ob_type = &PyType_Type;
+!     CurrentType.ob_type = &PyType_Type;
+  
+      /* Set sys.argv[] to avoid a crash in warn(). */
+      PySys_SetArgv(1, argv);
+--- 1402,1413 ----
+      static char *(argv[2]) = {"/must>not&exist/foo", NULL};
+  
+      /* Fixups... */
+!     PyType_Ready(&BufferType);
+!     PyType_Ready(&RangeType);
+!     PyType_Ready(&WindowType);
+!     PyType_Ready(&BufListType);
+!     PyType_Ready(&WinListType);
+!     PyType_Ready(&CurrentType);
+  
+      /* Set sys.argv[] to avoid a crash in warn(). */
+      PySys_SetArgv(1, argv);
+*** ../vim-7.3.143/src/version.c       2011-03-22 18:10:34.000000000 +0100
+--- src/version.c      2011-03-26 13:56:15.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     144,
+  /**/
+
+-- 
+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/vim/patches/vim-7.3.145.patch0 b/vim/patches/vim-7.3.145.patch0
new file mode 100644 (file)
index 0000000..a435fc2
--- /dev/null
@@ -0,0 +1,64 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.145
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.145 (after 7.3.144)
+Problem:    Can't build with Python dynamically loading.
+Solution:   Add dll_PyType_Ready.
+Files:     src/if_python.c
+
+
+*** ../vim-7.3.144/src/if_python.c     2011-03-26 13:56:41.000000000 +0100
+--- src/if_python.c    2011-03-26 18:10:00.000000000 +0100
+***************
+*** 165,170 ****
+--- 165,171 ----
+  # define PySys_SetObject dll_PySys_SetObject
+  # define PySys_SetArgv dll_PySys_SetArgv
+  # define PyType_Type (*dll_PyType_Type)
++ # define PyType_Ready (*dll_PyType_Ready)
+  # define Py_BuildValue dll_Py_BuildValue
+  # define Py_FindMethod dll_Py_FindMethod
+  # define Py_InitModule4 dll_Py_InitModule4
+***************
+*** 224,229 ****
+--- 225,231 ----
+  static int(*dll_PySys_SetObject)(char *, PyObject *);
+  static int(*dll_PySys_SetArgv)(int, char **);
+  static PyTypeObject* dll_PyType_Type;
++ static int (*dll_PyType_Ready)(PyTypeObject *type);
+  static PyObject*(*dll_Py_BuildValue)(char *, ...);
+  static PyObject*(*dll_Py_FindMethod)(struct PyMethodDef[], PyObject *, char *);
+  static PyObject*(*dll_Py_InitModule4)(char *, struct PyMethodDef *, char *, PyObject *, int);
+***************
+*** 305,310 ****
+--- 307,313 ----
+      {"PySys_SetObject", (PYTHON_PROC*)&dll_PySys_SetObject},
+      {"PySys_SetArgv", (PYTHON_PROC*)&dll_PySys_SetArgv},
+      {"PyType_Type", (PYTHON_PROC*)&dll_PyType_Type},
++     {"PyType_Ready", (PYTHON_PROC*)&dll_PyType_Ready},
+      {"Py_BuildValue", (PYTHON_PROC*)&dll_Py_BuildValue},
+      {"Py_FindMethod", (PYTHON_PROC*)&dll_Py_FindMethod},
+  # if (PY_VERSION_HEX >= 0x02050000) && SIZEOF_SIZE_T != SIZEOF_INT
+*** ../vim-7.3.144/src/version.c       2011-03-26 13:56:41.000000000 +0100
+--- src/version.c      2011-03-26 18:11:19.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     145,
+  /**/
+
+-- 
+This message contains 78% recycled characters.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.146.patch0 b/vim/patches/vim-7.3.146.patch0
new file mode 100644 (file)
index 0000000..0a7390c
--- /dev/null
@@ -0,0 +1,224 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.146
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.146
+Problem:    It's possible to assign to a read-only member of a dict.
+           It's possible to create a global variable "0". (ZyX)
+            It's possible to add a v: variable with ":let v:.name = 1".
+Solution:   Add check for dict item being read-only.
+           Check the name of g: variables.
+           Disallow adding v: variables.
+Files:     src/eval.c
+
+
+*** ../vim-7.3.145/src/eval.c  2011-02-01 13:48:47.000000000 +0100
+--- src/eval.c 2011-03-27 15:56:44.000000000 +0200
+***************
+*** 789,794 ****
+--- 789,796 ----
+  static void set_var __ARGS((char_u *name, typval_T *varp, int copy));
+  static int var_check_ro __ARGS((int flags, char_u *name));
+  static int var_check_fixed __ARGS((int flags, char_u *name));
++ static int var_check_func_name __ARGS((char_u *name, int new_var));
++ static int valid_varname __ARGS((char_u *varname));
+  static int tv_check_lock __ARGS((int lock, char_u *name));
+  static int item_copy __ARGS((typval_T *from, typval_T *to, int deep, int copyID));
+  static char_u *find_option_end __ARGS((char_u **arg, int *opt_flags));
+***************
+*** 2716,2723 ****
+--- 2718,2744 ----
+           lp->ll_list = NULL;
+           lp->ll_dict = lp->ll_tv->vval.v_dict;
+           lp->ll_di = dict_find(lp->ll_dict, key, len);
++ 
++          /* When assigning to g: check that a function and variable name is
++           * valid. */
++          if (rettv != NULL && lp->ll_dict == &globvardict)
++          {
++              if (rettv->v_type == VAR_FUNC
++                             && var_check_func_name(key, lp->ll_di == NULL))
++                  return NULL;
++              if (!valid_varname(key))
++                  return NULL;
++          }
++ 
+           if (lp->ll_di == NULL)
+           {
++              /* Can't add "v:" variable. */
++              if (lp->ll_dict == &vimvardict)
++              {
++                  EMSG2(_(e_illvar), name);
++                  return NULL;
++              }
++ 
+               /* Key does not exist in dict: may need to add it. */
+               if (*p == '[' || *p == '.' || unlet)
+               {
+***************
+*** 2737,2742 ****
+--- 2758,2767 ----
+                   p = NULL;
+               break;
+           }
++          /* existing variable, need to check if it can be changed */
++          else if (var_check_ro(lp->ll_di->di_flags, name))
++              return NULL;
++ 
+           if (len == -1)
+               clear_tv(&var1);
+           lp->ll_tv = &lp->ll_di->di_tv;
+***************
+*** 19786,19792 ****
+      dictitem_T       *v;
+      char_u   *varname;
+      hashtab_T        *ht;
+-     char_u   *p;
+  
+      ht = find_var_ht(name, &varname);
+      if (ht == NULL || *varname == NUL)
+--- 19811,19816 ----
+***************
+*** 19796,19820 ****
+      }
+      v = find_var_in_ht(ht, varname, TRUE);
+  
+!     if (tv->v_type == VAR_FUNC)
+!     {
+!      if (!(vim_strchr((char_u *)"wbs", name[0]) != NULL && name[1] == ':')
+!              && !ASCII_ISUPPER((name[0] != NUL && name[1] == ':')
+!                                                       ? name[2] : name[0]))
+!      {
+!          EMSG2(_("E704: Funcref variable name must start with a capital: %s"), name);
+!          return;
+!      }
+!      /* Don't allow hiding a function.  When "v" is not NULL we might be
+!       * assigning another function to the same var, the type is checked
+!       * below. */
+!      if (v == NULL && function_exists(name))
+!      {
+!          EMSG2(_("E705: Variable name conflicts with existing function: %s"),
+!                                                                      name);
+!          return;
+!      }
+!     }
+  
+      if (v != NULL)
+      {
+--- 19820,19827 ----
+      }
+      v = find_var_in_ht(ht, varname, TRUE);
+  
+!     if (tv->v_type == VAR_FUNC && var_check_func_name(name, v == NULL))
+!      return;
+  
+      if (v != NULL)
+      {
+***************
+*** 19880,19892 ****
+       }
+  
+       /* Make sure the variable name is valid. */
+!      for (p = varname; *p != NUL; ++p)
+!          if (!eval_isnamec1(*p) && (p == varname || !VIM_ISDIGIT(*p))
+!                                                     && *p != AUTOLOAD_CHAR)
+!          {
+!              EMSG2(_(e_illvar), varname);
+!              return;
+!          }
+  
+       v = (dictitem_T *)alloc((unsigned)(sizeof(dictitem_T)
+                                                         + STRLEN(varname)));
+--- 19887,19894 ----
+       }
+  
+       /* Make sure the variable name is valid. */
+!      if (!valid_varname(varname))
+!          return;
+  
+       v = (dictitem_T *)alloc((unsigned)(sizeof(dictitem_T)
+                                                         + STRLEN(varname)));
+***************
+*** 19951,19956 ****
+--- 19953,20007 ----
+  }
+  
+  /*
++  * Check if a funcref is assigned to a valid variable name.
++  * Return TRUE and give an error if not.
++  */
++     static int
++ var_check_func_name(name, new_var)
++     char_u *name;    /* points to start of variable name */
++     int    new_var;  /* TRUE when creating the variable */
++ {
++     if (!(vim_strchr((char_u *)"wbs", name[0]) != NULL && name[1] == ':')
++          && !ASCII_ISUPPER((name[0] != NUL && name[1] == ':')
++                                                   ? name[2] : name[0]))
++     {
++      EMSG2(_("E704: Funcref variable name must start with a capital: %s"),
++                                                                      name);
++      return TRUE;
++     }
++     /* Don't allow hiding a function.  When "v" is not NULL we might be
++      * assigning another function to the same var, the type is checked
++      * below. */
++     if (new_var && function_exists(name))
++     {
++      EMSG2(_("E705: Variable name conflicts with existing function: %s"),
++                                                                  name);
++      return TRUE;
++     }
++     return FALSE;
++ }
++ 
++ /*
++  * Check if a variable name is valid.
++  * Return FALSE and give an error if not.
++  */
++     static int
++ valid_varname(varname)
++     char_u *varname;
++ {
++     char_u *p;
++ 
++     for (p = varname; *p != NUL; ++p)
++      if (!eval_isnamec1(*p) && (p == varname || !VIM_ISDIGIT(*p))
++                                                 && *p != AUTOLOAD_CHAR)
++      {
++          EMSG2(_(e_illvar), varname);
++          return FALSE;
++      }
++     return TRUE;
++ }
++ 
++ /*
+   * Return TRUE if typeval "tv" is set to be locked (immutable).
+   * Also give an error message, using "name".
+   */
+*** ../vim-7.3.145/src/version.c       2011-03-26 18:32:00.000000000 +0100
+--- src/version.c      2011-03-27 16:01:03.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     146,
+  /**/
+
+-- 
+ARTHUR: It is I, Arthur, son of Uther Pendragon, from the castle of Camelot.
+        King of all Britons, defeator of the Saxons, sovereign of all England!
+   [Pause]
+SOLDIER: Get away!
+                 "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/vim/patches/vim-7.3.147.patch0 b/vim/patches/vim-7.3.147.patch0
new file mode 100644 (file)
index 0000000..b6fd756
--- /dev/null
@@ -0,0 +1,53 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.147
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.147 (after 7.3.143)
+Problem:    Can't build on HP-UX.
+Solution:   Remove an unnecessary backslash. (John Marriott)
+Files:     src/Makefile
+
+
+*** ../vim-7.3.146/src/Makefile        2011-03-22 18:10:34.000000000 +0100
+--- src/Makefile       2011-04-01 13:00:58.000000000 +0200
+***************
+*** 1565,1571 ****
+  
+  OBJ = $(OBJ_COMMON) \
+       objects/main.o \
+!      objects/memfile.o \
+  
+  MEMFILE_TEST_OBJ = $(OBJ_COMMON) \
+          objects/memfile_test.o
+--- 1565,1571 ----
+  
+  OBJ = $(OBJ_COMMON) \
+       objects/main.o \
+!      objects/memfile.o
+  
+  MEMFILE_TEST_OBJ = $(OBJ_COMMON) \
+          objects/memfile_test.o
+*** ../vim-7.3.146/src/version.c       2011-03-27 16:03:09.000000000 +0200
+--- src/version.c      2011-04-01 13:05:18.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     147,
+  /**/
+
+-- 
+DENNIS: You can't expect to wield supreme executive power just 'cause some
+        watery tart threw a sword at you!
+                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.148.patch0 b/vim/patches/vim-7.3.148.patch0
new file mode 100644 (file)
index 0000000..30492c0
--- /dev/null
@@ -0,0 +1,252 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.148
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.148
+Problem:    A syntax file with a huge number of items or clusters causes weird
+           behavior, a hang or a crash. (Yukihiro Nakadaira)
+Solution:   Check running out of IDs. (partly by Ben Schmidt)
+Files:     src/syntax.c
+
+
+*** ../vim-7.3.147/src/syntax.c        2011-01-22 00:58:15.000000000 +0100
+--- src/syntax.c       2011-04-01 14:25:39.000000000 +0200
+***************
+*** 219,234 ****
+  
+  /*
+   * Syntax group IDs have different types:
+!  *     0 -  9999  normal syntax groups
+!  * 10000 - 14999  ALLBUT indicator (current_syn_inc_tag added)
+!  * 15000 - 19999  TOP indicator (current_syn_inc_tag added)
+!  * 20000 - 24999  CONTAINED indicator (current_syn_inc_tag added)
+!  * >= 25000    cluster IDs (subtract SYNID_CLUSTER for the cluster ID)
+!  */
+! #define SYNID_ALLBUT 10000       /* syntax group ID for contains=ALLBUT */
+! #define SYNID_TOP    15000       /* syntax group ID for contains=TOP */
+! #define SYNID_CONTAINED      20000       /* syntax group ID for contains=CONTAINED */
+! #define SYNID_CLUSTER        25000       /* first syntax group ID for clusters */
+  
+  /*
+   * Annoying Hack(TM):  ":syn include" needs this pointer to pass to
+--- 219,238 ----
+  
+  /*
+   * Syntax group IDs have different types:
+!  *     0 - 19999  normal syntax groups
+!  * 20000 - 20999  ALLBUT indicator (current_syn_inc_tag added)
+!  * 21000 - 21999  TOP indicator (current_syn_inc_tag added)
+!  * 22000 - 22999  CONTAINED indicator (current_syn_inc_tag added)
+!  * 23000 - 32767  cluster IDs (subtract SYNID_CLUSTER for the cluster ID)
+!  */
+! #define SYNID_ALLBUT 20000       /* syntax group ID for contains=ALLBUT */
+! #define SYNID_TOP    21000       /* syntax group ID for contains=TOP */
+! #define SYNID_CONTAINED      22000       /* syntax group ID for contains=CONTAINED */
+! #define SYNID_CLUSTER        23000       /* first syntax group ID for clusters */
+! 
+! #define MAX_SYNID       SYNID_ALLBUT
+! #define MAX_SYN_INC_TAG      999         /* maximum before the above overflow */
+! #define MAX_CLUSTER_ID  (32767 - SYNID_CLUSTER)
+  
+  /*
+   * Annoying Hack(TM):  ":syn include" needs this pointer to pass to
+***************
+*** 3442,3447 ****
+--- 3446,3454 ----
+      /* free the stored states */
+      syn_stack_free_all(block);
+      invalidate_current_state();
++ 
++     /* Reset the counter for ":syn include" */
++     running_syn_inc_tag = 0;
+  }
+  
+  /*
+***************
+*** 4661,4666 ****
+--- 4668,4675 ----
+           return;
+       }
+       sgl_id = syn_check_cluster(arg, (int)(group_name_end - arg));
++      if (sgl_id == 0)
++          return;
+       /* separate_nextcmd() and expand_filename() depend on this */
+       eap->arg = rest;
+      }
+***************
+*** 4689,4694 ****
+--- 4698,4708 ----
+       * Save and restore the existing top-level grouplist id and ":syn
+       * include" tag around the actual inclusion.
+       */
++     if (running_syn_inc_tag >= MAX_SYN_INC_TAG)
++     {
++      EMSG((char_u *)_("E847: Too many syntax includes"));
++      return;
++     }
+      prev_syn_inc_tag = current_syn_inc_tag;
+      current_syn_inc_tag = ++running_syn_inc_tag;
+      prev_toplvl_grp = curwin->w_s->b_syn_topgrp;
+***************
+*** 4712,4718 ****
+      char_u   *group_name_end;
+      int              syn_id;
+      char_u   *rest;
+!     char_u   *keyword_copy;
+      char_u   *p;
+      char_u   *kw;
+      syn_opt_arg_T syn_opt_arg;
+--- 4726,4732 ----
+      char_u   *group_name_end;
+      int              syn_id;
+      char_u   *rest;
+!     char_u   *keyword_copy = NULL;
+      char_u   *p;
+      char_u   *kw;
+      syn_opt_arg_T syn_opt_arg;
+***************
+*** 4724,4732 ****
+      if (rest != NULL)
+      {
+       syn_id = syn_check_group(arg, (int)(group_name_end - arg));
+! 
+!      /* allocate a buffer, for removing the backslashes in the keyword */
+!      keyword_copy = alloc((unsigned)STRLEN(rest) + 1);
+       if (keyword_copy != NULL)
+       {
+           syn_opt_arg.flags = 0;
+--- 4738,4746 ----
+      if (rest != NULL)
+      {
+       syn_id = syn_check_group(arg, (int)(group_name_end - arg));
+!      if (syn_id != 0)
+!          /* allocate a buffer, for removing backslashes in the keyword */
+!          keyword_copy = alloc((unsigned)STRLEN(rest) + 1);
+       if (keyword_copy != NULL)
+       {
+           syn_opt_arg.flags = 0;
+***************
+*** 5133,5139 ****
+                           (item == ITEM_SKIP) ? SPTYPE_SKIP : SPTYPE_END;
+                   SYN_ITEMS(curwin->w_s)[idx].sp_flags |= syn_opt_arg.flags;
+                   SYN_ITEMS(curwin->w_s)[idx].sp_syn.id = syn_id;
+!                  SYN_ITEMS(curwin->w_s)[idx].sp_syn.inc_tag = current_syn_inc_tag;
+                   SYN_ITEMS(curwin->w_s)[idx].sp_syn_match_id =
+                                                       ppp->pp_matchgroup_id;
+  #ifdef FEAT_CONCEAL
+--- 5147,5154 ----
+                           (item == ITEM_SKIP) ? SPTYPE_SKIP : SPTYPE_END;
+                   SYN_ITEMS(curwin->w_s)[idx].sp_flags |= syn_opt_arg.flags;
+                   SYN_ITEMS(curwin->w_s)[idx].sp_syn.id = syn_id;
+!                  SYN_ITEMS(curwin->w_s)[idx].sp_syn.inc_tag =
+!                                                        current_syn_inc_tag;
+                   SYN_ITEMS(curwin->w_s)[idx].sp_syn_match_id =
+                                                       ppp->pp_matchgroup_id;
+  #ifdef FEAT_CONCEAL
+***************
+*** 5426,5431 ****
+--- 5441,5454 ----
+       curwin->w_s->b_syn_clusters.ga_growsize = 10;
+      }
+  
++     len = curwin->w_s->b_syn_clusters.ga_len;
++     if (len >= MAX_CLUSTER_ID)
++     {
++      EMSG((char_u *)_("E848: Too many syntax clusters"));
++      vim_free(name);
++      return 0;
++     }
++ 
+      /*
+       * Make room for at least one other cluster entry.
+       */
+***************
+*** 5434,5440 ****
+       vim_free(name);
+       return 0;
+      }
+-     len = curwin->w_s->b_syn_clusters.ga_len;
+  
+      vim_memset(&(SYN_CLSTR(curwin->w_s)[len]), 0, sizeof(syn_cluster_T));
+      SYN_CLSTR(curwin->w_s)[len].scl_name = name;
+--- 5457,5462 ----
+***************
+*** 5476,5483 ****
+  
+      if (rest != NULL)
+      {
+!      scl_id = syn_check_cluster(arg, (int)(group_name_end - arg))
+!                                                            - SYNID_CLUSTER;
+  
+       for (;;)
+       {
+--- 5498,5507 ----
+  
+      if (rest != NULL)
+      {
+!      scl_id = syn_check_cluster(arg, (int)(group_name_end - arg));
+!      if (scl_id == 0)
+!          return;
+!      scl_id -= SYNID_CLUSTER;
+  
+       for (;;)
+       {
+***************
+*** 5516,5522 ****
+       if (got_clstr)
+       {
+           redraw_curbuf_later(SOME_VALID);
+!          syn_stack_free_all(curwin->w_s);    /* Need to recompute all syntax. */
+       }
+      }
+  
+--- 5540,5546 ----
+       if (got_clstr)
+       {
+           redraw_curbuf_later(SOME_VALID);
+!          syn_stack_free_all(curwin->w_s);    /* Need to recompute all. */
+       }
+      }
+  
+***************
+*** 8972,8977 ****
+--- 8996,9008 ----
+       highlight_ga.ga_growsize = 10;
+      }
+  
++     if (highlight_ga.ga_len >= MAX_SYNID)
++     {
++      EMSG(_("E849: Too many syntax groups"));
++      vim_free(name);
++      return 0;
++     }
++ 
+      /*
+       * Make room for at least one other syntax_highlight entry.
+       */
+*** ../vim-7.3.147/src/version.c       2011-04-01 13:05:37.000000000 +0200
+--- src/version.c      2011-04-01 14:26:44.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     148,
+  /**/
+
+-- 
+BLACK KNIGHT: None shall pass.
+ARTHUR:       I have no quarrel with you, brave Sir knight, but I must cross
+              this bridge.
+BLACK KNIGHT: Then you shall die.
+                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.149.patch0 b/vim/patches/vim-7.3.149.patch0
new file mode 100644 (file)
index 0000000..1901a74
--- /dev/null
@@ -0,0 +1,78 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.149
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.149
+Problem:    The cursor disappears after the processing of the 'setDot'
+           netbeans command when vim runs in a terminal.
+Solution:   Show the cursor after a screen update. (Xavier de Gaye, 2011
+Files:     src/netbeans.c
+
+
+*** ../vim-7.3.148/src/netbeans.c      2011-01-04 18:11:39.000000000 +0100
+--- src/netbeans.c     2011-04-01 15:33:49.000000000 +0200
+***************
+*** 191,196 ****
+--- 191,197 ----
+      changed_window_setting();
+      update_screen(CLEAR);
+      setcursor();
++     cursor_on();
+      out_flush();
+  #ifdef FEAT_GUI
+      if (gui.in_use)
+***************
+*** 2248,2253 ****
+--- 2249,2255 ----
+           update_topline();           /* scroll to show the line */
+           update_screen(VALID);
+           setcursor();
++          cursor_on();
+           out_flush();
+  #ifdef FEAT_GUI
+           if (gui.in_use)
+***************
+*** 2642,2647 ****
+--- 2644,2650 ----
+      {
+       update_screen(NOT_VALID);
+       setcursor();
++      cursor_on();
+       out_flush();
+  #ifdef FEAT_GUI
+       if (gui.in_use)
+***************
+*** 3008,3013 ****
+--- 3011,3017 ----
+      changed_window_setting();
+      update_screen(CLEAR);
+      setcursor();
++     cursor_on();
+      out_flush();
+  #ifdef FEAT_GUI
+      if (gui.in_use)
+*** ../vim-7.3.148/src/version.c       2011-04-01 14:44:54.000000000 +0200
+--- src/version.c      2011-04-01 15:33:21.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     149,
+  /**/
+
+-- 
+ARTHUR:       You are indeed brave Sir knight, but the fight is mine.
+BLACK KNIGHT: Had enough?
+ARTHUR:       You stupid bastard.  You havn't got any arms left.
+                 "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/vim/patches/vim-7.3.150.patch0 b/vim/patches/vim-7.3.150.patch0
new file mode 100644 (file)
index 0000000..83a8bf2
--- /dev/null
@@ -0,0 +1,113 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.150
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.150
+Problem:    readline() does not return the last line when the NL is missing.
+           (Hong Xu)
+Solution:   When at the end of the file Also check for a previous line.
+Files:     src/eval.c
+
+
+*** ../vim-7.3.149/src/eval.c  2011-03-27 16:03:09.000000000 +0200
+--- src/eval.c 2011-04-01 16:06:04.000000000 +0200
+***************
+*** 14305,14313 ****
+       {
+           if (buf[filtd] == '\n' || readlen <= 0)
+           {
+!              /* Only when in binary mode add an empty list item when the
+!               * last line ends in a '\n'. */
+!              if (!binary && readlen == 0 && filtd == 0)
+                   break;
+  
+               /* Found end-of-line or end-of-file: add a text line to the
+--- 14305,14313 ----
+       {
+           if (buf[filtd] == '\n' || readlen <= 0)
+           {
+!              /* In binary mode add an empty list item when the last
+!               * non-empty line ends in a '\n'. */
+!              if (!binary && readlen == 0 && filtd == 0 && prev == NULL)
+                   break;
+  
+               /* Found end-of-line or end-of-file: add a text line to the
+***************
+*** 14372,14396 ****
+  
+       if (tolist == 0)
+       {
+!          /* "buf" is full, need to move text to an allocated buffer */
+!          if (prev == NULL)
+           {
+!              prev = vim_strnsave(buf, buflen);
+!              prevlen = buflen;
+!          }
+!          else
+!          {
+!              s = alloc((unsigned)(prevlen + buflen));
+!              if (s != NULL)
+               {
+!                  mch_memmove(s, prev, prevlen);
+!                  mch_memmove(s + prevlen, buf, buflen);
+!                  vim_free(prev);
+!                  prev = s;
+!                  prevlen += buflen;
+               }
+           }
+-          filtd = 0;
+       }
+       else
+       {
+--- 14372,14399 ----
+  
+       if (tolist == 0)
+       {
+!          if (buflen >= FREAD_SIZE / 2)
+           {
+!              /* "buf" is full, need to move text to an allocated buffer */
+!              if (prev == NULL)
+!              {
+!                  prev = vim_strnsave(buf, buflen);
+!                  prevlen = buflen;
+!              }
+!              else
+               {
+!                  s = alloc((unsigned)(prevlen + buflen));
+!                  if (s != NULL)
+!                  {
+!                      mch_memmove(s, prev, prevlen);
+!                      mch_memmove(s + prevlen, buf, buflen);
+!                      vim_free(prev);
+!                      prev = s;
+!                      prevlen += buflen;
+!                  }
+               }
++              filtd = 0;
+           }
+       }
+       else
+       {
+*** ../vim-7.3.149/src/version.c       2011-04-01 15:33:54.000000000 +0200
+--- src/version.c      2011-04-01 16:04:42.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     150,
+  /**/
+
+-- 
+ARTHUR: What are you going to do. bleed on me?
+                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.151.patch0 b/vim/patches/vim-7.3.151.patch0
new file mode 100644 (file)
index 0000000..20f5105
--- /dev/null
@@ -0,0 +1,59 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.151
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.151 (after 7.3.074)
+Problem:    When "unnamedplus" is in 'clipboard' the selection is sometimes
+           also copied to the star register.
+Solution:   Avoid copy to the star register when undesired. (James Vega)
+Files:     src/ops.c
+
+
+*** ../vim-7.3.150/src/ops.c   2010-12-08 14:23:08.000000000 +0100
+--- src/ops.c  2011-04-01 16:23:10.000000000 +0200
+***************
+*** 3148,3157 ****
+           /* Copy the text from register 0 to the clipboard register. */
+           copy_yank_reg(&(y_regs[PLUS_REGISTER]));
+  
+-      /* No need to copy to * register upon 'unnamed' now - see below */
+       clip_own_selection(&clip_plus);
+       clip_gen_set_selection(&clip_plus);
+!      if (!clip_isautosel() && !did_star)
+       {
+           copy_yank_reg(&(y_regs[STAR_REGISTER]));
+           clip_own_selection(&clip_star);
+--- 3148,3156 ----
+           /* Copy the text from register 0 to the clipboard register. */
+           copy_yank_reg(&(y_regs[PLUS_REGISTER]));
+  
+       clip_own_selection(&clip_plus);
+       clip_gen_set_selection(&clip_plus);
+!      if (!clip_isautosel() && !did_star && curr == &(y_regs[PLUS_REGISTER]))
+       {
+           copy_yank_reg(&(y_regs[STAR_REGISTER]));
+           clip_own_selection(&clip_star);
+*** ../vim-7.3.150/src/version.c       2011-04-01 16:07:41.000000000 +0200
+--- src/version.c      2011-04-01 16:25:40.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     151,
+  /**/
+
+-- 
+BLACK KNIGHT: I'm invincible!
+ARTHUR:       You're a looney.
+                 "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/vim/patches/vim-7.3.152.patch0 b/vim/patches/vim-7.3.152.patch0
new file mode 100644 (file)
index 0000000..fdc58a0
--- /dev/null
@@ -0,0 +1,643 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.152
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.152
+Problem:    Xxd does not check for errors from library functions.
+Solution:   Add error checks. (Florian Zumbiehl)
+Files:     src/xxd/xxd.c
+
+
+*** ../vim-7.3.151/src/xxd/xxd.c       2010-08-15 21:57:25.000000000 +0200
+--- src/xxd/xxd.c      2011-04-01 18:56:11.000000000 +0200
+***************
+*** 49,54 ****
+--- 49,56 ----
+   *       option -b added: 01000101 binary output in normal format.
+   * 16.05.00 Added VAXC changes by Stephen P. Wall
+   * 16.05.00 Improved MMS file and merge for VMS by Zoltan Arpadffy
++  * 2011 March  Better error handling by Florian Zumbiehl.
++  * 2011 April  Formatting by Bram Moolenaar
+   *
+   * (c) 1990-1998 by Juergen Weigert (jnweiger@informatik.uni-erlangen.de)
+   *
+***************
+*** 207,214 ****
+  
+  /* Let's collect some prototypes */
+  /* CodeWarrior is really picky about missing prototypes */
+! static void exit_with_usage __P((char *));
+! static int huntype __P((FILE *, FILE *, FILE *, char *, int, int, long));
+  static void xxdline __P((FILE *, char *, int));
+  
+  #define TRY_SEEK     /* attempt to use lseek, or skip forward by reading */
+--- 209,216 ----
+  
+  /* Let's collect some prototypes */
+  /* CodeWarrior is really picky about missing prototypes */
+! static void exit_with_usage __P((void));
+! static int huntype __P((FILE *, FILE *, FILE *, int, int, long));
+  static void xxdline __P((FILE *, char *, int));
+  
+  #define TRY_SEEK     /* attempt to use lseek, or skip forward by reading */
+***************
+*** 223,231 ****
+  #define HEX_CINCLUDE 2
+  #define HEX_BITS 3           /* not hex a dump, but bits: 01111001 */
+  
+! static void
+! exit_with_usage(pname)
+! char *pname;
+  {
+    fprintf(stderr, "Usage:\n       %s [options] [infile [outfile]]\n", pname);
+    fprintf(stderr, "    or\n       %s -r [-s [-]offset] [-c cols] [-ps] [infile [outfile]]\n", pname);
+--- 225,234 ----
+  #define HEX_CINCLUDE 2
+  #define HEX_BITS 3           /* not hex a dump, but bits: 01111001 */
+  
+! static char *pname;
+! 
+!   static void
+! exit_with_usage()
+  {
+    fprintf(stderr, "Usage:\n       %s [options] [infile [outfile]]\n", pname);
+    fprintf(stderr, "    or\n       %s -r [-s [-]offset] [-c cols] [-ps] [infile [outfile]]\n", pname);
+***************
+*** 252,257 ****
+--- 255,269 ----
+    exit(1);
+  }
+  
++   static void
++ die(ret)
++   int ret;
++ {
++   fprintf(stderr, "%s: ", pname);
++   perror(NULL);
++   exit(ret);
++ }
++ 
+  /*
+   * Max. cols binary characters are decoded from the input stream per line.
+   * Two adjacent garbage characters after evaluated data delimit valid data.
+***************
+*** 259,270 ****
+   *
+   * The name is historic and came from 'undo type opt h'.
+   */
+! static int
+! huntype(fpi, fpo, fperr, pname, cols, hextype, base_off)
+! FILE *fpi, *fpo, *fperr;
+! char *pname;
+! int cols, hextype;
+! long base_off;
+  {
+    int c, ign_garb = 1, n1 = -1, n2 = 0, n3, p = cols;
+    long have_off = 0, want_off = 0;
+--- 271,281 ----
+   *
+   * The name is historic and came from 'undo type opt h'.
+   */
+!   static int
+! huntype(fpi, fpo, fperr, cols, hextype, base_off)
+!   FILE *fpi, *fpo, *fperr;
+!   int cols, hextype;
+!   long base_off;
+  {
+    int c, ign_garb = 1, n1 = -1, n2 = 0, n3, p = cols;
+    long have_off = 0, want_off = 0;
+***************
+*** 318,324 ****
+  
+        if (base_off + want_off != have_off)
+       {
+!        fflush(fpo);
+  #ifdef TRY_SEEK
+         c = fseek(fpo, base_off + want_off - have_off, 1);
+         if (c >= 0)
+--- 329,336 ----
+  
+        if (base_off + want_off != have_off)
+       {
+!        if (fflush(fpo) != 0)
+!          die(3);
+  #ifdef TRY_SEEK
+         c = fseek(fpo, base_off + want_off - have_off, 1);
+         if (c >= 0)
+***************
+*** 330,341 ****
+             return 5;
+           }
+         for (; have_off < base_off + want_off; have_off++)
+!          putc(0, fpo);
+       }
+  
+        if (n2 >= 0 && n1 >= 0)
+       {
+!        putc((n2 << 4) | n1, fpo);
+         have_off++;
+         want_off++;
+         n1 = -1;
+--- 342,355 ----
+             return 5;
+           }
+         for (; have_off < base_off + want_off; have_off++)
+!          if (putc(0, fpo) == EOF)
+!            die(3);
+       }
+  
+        if (n2 >= 0 && n1 >= 0)
+       {
+!        if (putc((n2 << 4) | n1, fpo) == EOF)
+!          die(3);
+         have_off++;
+         want_off++;
+         n1 = -1;
+***************
+*** 345,350 ****
+--- 359,366 ----
+             want_off = 0;
+             while ((c = getc(fpi)) != '\n' && c != EOF)
+               ;
++            if (c == EOF && ferror(fpi))
++              die(2);
+             ign_garb = 1;
+           }
+       }
+***************
+*** 355,369 ****
+           want_off = 0;
+         while ((c = getc(fpi)) != '\n' && c != EOF)
+           ;
+         ign_garb = 1;
+       }
+      }
+!   fflush(fpo);
+  #ifdef TRY_SEEK
+    fseek(fpo, 0L, 2);
+  #endif
+!   fclose(fpo);
+!   fclose(fpi);
+    return 0;
+  }
+  
+--- 371,390 ----
+           want_off = 0;
+         while ((c = getc(fpi)) != '\n' && c != EOF)
+           ;
++        if (c == EOF && ferror(fpi))
++          die(2);
+         ign_garb = 1;
+       }
+      }
+!   if (fflush(fpo) != 0)
+!     die(3);
+  #ifdef TRY_SEEK
+    fseek(fpo, 0L, 2);
+  #endif
+!   if (fclose(fpo) != 0)
+!     die(3);
+!   if (fclose(fpi) != 0)
+!     die(2);
+    return 0;
+  }
+  
+***************
+*** 379,389 ****
+   *
+   * If nz is always positive, lines are never suppressed.
+   */
+! static void
+  xxdline(fp, l, nz)
+! FILE *fp;
+! char *l;
+! int nz;
+  {
+    static char z[LLEN+1];
+    static int zero_seen = 0;
+--- 400,410 ----
+   *
+   * If nz is always positive, lines are never suppressed.
+   */
+!   static void
+  xxdline(fp, l, nz)
+!   FILE *fp;
+!   char *l;
+!   int nz;
+  {
+    static char z[LLEN+1];
+    static int zero_seen = 0;
+***************
+*** 398,409 ****
+         if (nz < 0)
+           zero_seen--;
+         if (zero_seen == 2)
+!          fputs(z, fp);
+         if (zero_seen > 2)
+!          fputs("*\n", fp);
+       }
+        if (nz >= 0 || zero_seen > 0)
+!      fputs(l, fp);
+        if (nz)
+       zero_seen = 0;
+      }
+--- 419,433 ----
+         if (nz < 0)
+           zero_seen--;
+         if (zero_seen == 2)
+!          if (fputs(z, fp) == EOF)
+!            die(3);
+         if (zero_seen > 2)
+!          if (fputs("*\n", fp) == EOF)
+!            die(3);
+       }
+        if (nz >= 0 || zero_seen > 0)
+!      if (fputs(l, fp) == EOF)
+!        die(3);
+        if (nz)
+       zero_seen = 0;
+      }
+***************
+*** 439,448 ****
+      0070,0071,0372,0373,0374,0375,0376,0377
+  };
+  
+! int
+  main(argc, argv)
+! int argc;
+! char *argv[];
+  {
+    FILE *fp, *fpo;
+    int c, e, p = 0, relseek = 1, negseek = 0, revert = 0;
+--- 463,472 ----
+      0070,0071,0372,0373,0374,0375,0376,0377
+  };
+  
+!   int
+  main(argc, argv)
+!   int argc;
+!   char *argv[];
+  {
+    FILE *fp, *fpo;
+    int c, e, p = 0, relseek = 1, negseek = 0, revert = 0;
+***************
+*** 452,458 ****
+    int grplen;                /* total chars per octet group */
+    long length = -1, n = 0, seekoff = 0;
+    char l[LLEN+1];
+!   char *pname, *pp;
+  
+  #ifdef AMIGA
+    /* This program doesn't work when started from the Workbench */
+--- 476,482 ----
+    int grplen;                /* total chars per octet group */
+    long length = -1, n = 0, seekoff = 0;
+    char l[LLEN+1];
+!   char *pp;
+  
+  #ifdef AMIGA
+    /* This program doesn't work when started from the Workbench */
+***************
+*** 495,501 ****
+         else
+           {
+             if (!argv[2])
+!              exit_with_usage(pname);
+             cols = (int)strtol(argv[2], NULL, 0);
+             argv++;
+             argc--;
+--- 519,525 ----
+         else
+           {
+             if (!argv[2])
+!              exit_with_usage();
+             cols = (int)strtol(argv[2], NULL, 0);
+             argv++;
+             argc--;
+***************
+*** 508,514 ****
+         else
+           {
+             if (!argv[2])
+!              exit_with_usage(pname);
+             octspergrp = (int)strtol(argv[2], NULL, 0);
+             argv++;
+             argc--;
+--- 532,538 ----
+         else
+           {
+             if (!argv[2])
+!              exit_with_usage();
+             octspergrp = (int)strtol(argv[2], NULL, 0);
+             argv++;
+             argc--;
+***************
+*** 531,537 ****
+         else
+           {
+             if (!argv[2])
+!              exit_with_usage(pname);
+  #ifdef TRY_SEEK
+             if (argv[2][0] == '+')
+               relseek++;
+--- 555,561 ----
+         else
+           {
+             if (!argv[2])
+!              exit_with_usage();
+  #ifdef TRY_SEEK
+             if (argv[2][0] == '+')
+               relseek++;
+***************
+*** 550,556 ****
+         else
+           {
+             if (!argv[2])
+!              exit_with_usage(pname);
+             length = strtol(argv[2], (char **)NULL, 0);
+             argv++;
+             argc--;
+--- 574,580 ----
+         else
+           {
+             if (!argv[2])
+!              exit_with_usage();
+             length = strtol(argv[2], (char **)NULL, 0);
+             argv++;
+             argc--;
+***************
+*** 563,569 ****
+         break;
+       }
+        else if (pp[0] == '-' && pp[1])        /* unknown option */
+!      exit_with_usage(pname);
+        else
+       break;                          /* not an option */
+  
+--- 587,593 ----
+         break;
+       }
+        else if (pp[0] == '-' && pp[1])        /* unknown option */
+!      exit_with_usage();
+        else
+       break;                          /* not an option */
+  
+***************
+*** 602,608 ****
+      octspergrp = cols;
+  
+    if (argc > 3)
+!     exit_with_usage(pname);
+  
+    if (argc == 1 || (argv[1][0] == '-' && !argv[1][1]))
+      BIN_ASSIGN(fp = stdin, !revert);
+--- 626,632 ----
+      octspergrp = cols;
+  
+    if (argc > 3)
+!     exit_with_usage();
+  
+    if (argc == 1 || (argv[1][0] == '-' && !argv[1][1]))
+      BIN_ASSIGN(fp = stdin, !revert);
+***************
+*** 640,646 ****
+         fprintf(stderr, "%s: sorry, cannot revert this type of hexdump\n", pname);
+         return -1;
+       }
+!       return huntype(fp, fpo, stderr, pname, cols, hextype,
+               negseek ? -seekoff : seekoff);
+      }
+  
+--- 664,670 ----
+         fprintf(stderr, "%s: sorry, cannot revert this type of hexdump\n", pname);
+         return -1;
+       }
+!       return huntype(fp, fpo, stderr, cols, hextype,
+               negseek ? -seekoff : seekoff);
+      }
+  
+***************
+*** 664,670 ****
+         long s = seekoff;
+  
+         while (s--)
+!          (void)getc(fp);
+       }
+      }
+  
+--- 688,703 ----
+         long s = seekoff;
+  
+         while (s--)
+!          if (getc(fp) == EOF)
+!            if (ferror(fp))
+!              {
+!                die(2);
+!              }
+!            else
+!              {
+!                fprintf(stderr, "%s: sorry cannot seek.\n", pname);
+!                return 4;
+!              }
+       }
+      }
+  
+***************
+*** 672,725 ****
+      {
+        if (fp != stdin)
+       {
+!        fprintf(fpo, "unsigned char %s", isdigit((int)argv[1][0]) ? "__" : "");
+         for (e = 0; (c = argv[1][e]) != 0; e++)
+!          putc(isalnum(c) ? c : '_', fpo);
+!        fputs("[] = {\n", fpo);
+       }
+  
+        p = 0;
+        while ((length < 0 || p < length) && (c = getc(fp)) != EOF)
+       {
+!        fprintf(fpo, (hexx == hexxa) ? "%s0x%02x" : "%s0X%02X",
+!          (p % cols) ? ", " : ",\n  "+2*!p,  c);
+         p++;
+       }
+  
+        if (p)
+!      fputs("\n};\n"+3*(fp == stdin), fpo);
+  
+        if (fp != stdin)
+       {
+!        fprintf(fpo, "unsigned int %s", isdigit((int)argv[1][0]) ? "__" : "");
+         for (e = 0; (c = argv[1][e]) != 0; e++)
+!          putc(isalnum(c) ? c : '_', fpo);
+!        fprintf(fpo, "_len = %d;\n", p);
+       }
+  
+!       fclose(fp);
+!       fclose(fpo);
+        return 0;
+      }
+  
+    if (hextype == HEX_POSTSCRIPT)
+      {
+        p = cols;
+        while ((length < 0 || n < length) && (e = getc(fp)) != EOF)
+       {
+!        putchar(hexx[(e >> 4) & 0xf]);
+!        putchar(hexx[(e     ) & 0xf]);
+         n++;
+         if (!--p)
+           {
+!            putchar('\n');
+             p = cols;
+           }
+       }
+        if (p < cols)
+!      putchar('\n');
+!       fclose(fp);
+!       fclose(fpo);
+        return 0;
+      }
+  
+--- 705,779 ----
+      {
+        if (fp != stdin)
+       {
+!        if (fprintf(fpo, "unsigned char %s", isdigit((int)argv[1][0]) ? "__" : "") < 0)
+!          die(3);
+         for (e = 0; (c = argv[1][e]) != 0; e++)
+!          if (putc(isalnum(c) ? c : '_', fpo) == EOF)
+!            die(3);
+!        if (fputs("[] = {\n", fpo) == EOF)
+!          die(3);
+       }
+  
+        p = 0;
++       c = 0;
+        while ((length < 0 || p < length) && (c = getc(fp)) != EOF)
+       {
+!        if (fprintf(fpo, (hexx == hexxa) ? "%s0x%02x" : "%s0X%02X",
+!              (p % cols) ? ", " : ",\n  "+2*!p,  c) < 0)
+!          die(3);
+         p++;
+       }
++       if (c == EOF && ferror(fp))
++      die(2);
+  
+        if (p)
+!      if (fputs("\n};\n" + 3 * (fp == stdin), fpo) == EOF)
+!        die(3);
+  
+        if (fp != stdin)
+       {
+!        if (fprintf(fpo, "unsigned int %s", isdigit((int)argv[1][0]) ? "__" : "") < 0)
+!          die(3);
+         for (e = 0; (c = argv[1][e]) != 0; e++)
+!          if (putc(isalnum(c) ? c : '_', fpo) == EOF)
+!            die(3);
+!        if (fprintf(fpo, "_len = %d;\n", p) < 0)
+!          die(3);
+       }
+  
+!       if (fclose(fp))
+!      die(2);
+!       if (fclose(fpo))
+!      die(3);
+        return 0;
+      }
+  
+    if (hextype == HEX_POSTSCRIPT)
+      {
+        p = cols;
++       e = 0;
+        while ((length < 0 || n < length) && (e = getc(fp)) != EOF)
+       {
+!        if (putc(hexx[(e >> 4) & 0xf], fpo) == EOF
+!                || putc(hexx[e & 0xf], fpo) == EOF)
+!          die(3);
+         n++;
+         if (!--p)
+           {
+!            if (putc('\n', fpo) == EOF)
+!              die(3);
+             p = cols;
+           }
+       }
++       if (e == EOF && ferror(fp))
++      die(2);
+        if (p < cols)
+!      if (putc('\n', fpo) == EOF)
+!        die(3);
+!       if (fclose(fp))
+!      die(2);
+!       if (fclose(fpo))
+!      die(3);
+        return 0;
+      }
+  
+***************
+*** 730,735 ****
+--- 784,790 ----
+    else       /* hextype == HEX_BITS */
+      grplen = 8 * octspergrp + 1;
+  
++   e = 0;
+    while ((length < 0 || n < length) && (e = getc(fp)) != EOF)
+      {
+        if (p == 0)
+***************
+*** 771,776 ****
+--- 826,833 ----
+         p = 0;
+       }
+      }
++   if (e == EOF && ferror(fp))
++     die(2);
+    if (p)
+      {
+        l[c = (11 + (grplen * cols - 1)/octspergrp + p)] = '\n'; l[++c] = '\0';
+***************
+*** 779,785 ****
+    else if (autoskip)
+      xxdline(fpo, l, -1);     /* last chance to flush out suppressed lines */
+  
+!   fclose(fp);
+!   fclose(fpo);
+    return 0;
+  }
+--- 836,846 ----
+    else if (autoskip)
+      xxdline(fpo, l, -1);     /* last chance to flush out suppressed lines */
+  
+!   if (fclose(fp))
+!     die(2);
+!   if (fclose(fpo))
+!     die(3);
+    return 0;
+  }
++ 
++ /* vi:set ts=8 sw=4 sts=2 cino+={2 cino+=n-2 : */
+*** ../vim-7.3.151/src/version.c       2011-04-01 16:28:33.000000000 +0200
+--- src/version.c      2011-04-01 19:00:26.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     152,
+  /**/
+
+-- 
+Eye have a spelling checker, it came with my PC;
+It plainly marks four my revue mistakes I cannot sea.
+I've run this poem threw it, I'm sure your please to no,
+It's letter perfect in it's weigh, my checker tolled me sew!
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.153.patch0 b/vim/patches/vim-7.3.153.patch0
new file mode 100644 (file)
index 0000000..9f76b51
--- /dev/null
@@ -0,0 +1,66 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.153
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.153 (after 7.3.152)
+Problem:    Compiler warning for ambiguous else, missing prototype.
+Solution:   Add braces. (Dominique Pelle)  Add prototype for die().
+Files:     src/xxd/xxd.c
+
+
+*** ../vim-7.3.152/src/xxd/xxd.c       2011-04-01 19:14:35.000000000 +0200
+--- src/xxd/xxd.c      2011-04-02 14:42:54.000000000 +0200
+***************
+*** 210,215 ****
+--- 210,216 ----
+  /* Let's collect some prototypes */
+  /* CodeWarrior is really picky about missing prototypes */
+  static void exit_with_usage __P((void));
++ static void die __P((int));
+  static int huntype __P((FILE *, FILE *, FILE *, int, int, long));
+  static void xxdline __P((FILE *, char *, int));
+  
+***************
+*** 689,694 ****
+--- 690,696 ----
+  
+         while (s--)
+           if (getc(fp) == EOF)
++          {
+             if (ferror(fp))
+               {
+                 die(2);
+***************
+*** 698,703 ****
+--- 700,706 ----
+                 fprintf(stderr, "%s: sorry cannot seek.\n", pname);
+                 return 4;
+               }
++          }
+       }
+      }
+  
+*** ../vim-7.3.152/src/version.c       2011-04-01 19:14:35.000000000 +0200
+--- src/version.c      2011-04-02 14:41:12.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     153,
+  /**/
+
+-- 
+            |
+
+Ceci n'est pas une pipe.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.154.patch0 b/vim/patches/vim-7.3.154.patch0
new file mode 100644 (file)
index 0000000..e7c8862
--- /dev/null
@@ -0,0 +1,106 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.154
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.154 (after 7.3.148)
+Problem:    Can't compile with tiny features. (Tony Mechelynck)
+Solution:   Move #define outside of #ifdef.
+Files:     src/syntax.c
+
+
+*** ../vim-7.3.153/src/syntax.c        2011-04-01 14:44:54.000000000 +0200
+--- src/syntax.c       2011-04-02 15:11:47.000000000 +0200
+***************
+*** 68,73 ****
+--- 68,75 ----
+  
+  #define HL_TABLE() ((struct hl_group *)((highlight_ga.ga_data)))
+  
++ #define MAX_HL_ID       20000        /* maximum value for a highlight ID. */
++ 
+  #ifdef FEAT_CMDL_COMPL
+  /* Flags to indicate an additional string for highlight name completion. */
+  static int include_none = 0; /* when 1 include "None" */
+***************
+*** 225,236 ****
+   * 22000 - 22999  CONTAINED indicator (current_syn_inc_tag added)
+   * 23000 - 32767  cluster IDs (subtract SYNID_CLUSTER for the cluster ID)
+   */
+! #define SYNID_ALLBUT 20000       /* syntax group ID for contains=ALLBUT */
+  #define SYNID_TOP    21000       /* syntax group ID for contains=TOP */
+  #define SYNID_CONTAINED      22000       /* syntax group ID for contains=CONTAINED */
+  #define SYNID_CLUSTER        23000       /* first syntax group ID for clusters */
+  
+- #define MAX_SYNID       SYNID_ALLBUT
+  #define MAX_SYN_INC_TAG      999         /* maximum before the above overflow */
+  #define MAX_CLUSTER_ID  (32767 - SYNID_CLUSTER)
+  
+--- 227,237 ----
+   * 22000 - 22999  CONTAINED indicator (current_syn_inc_tag added)
+   * 23000 - 32767  cluster IDs (subtract SYNID_CLUSTER for the cluster ID)
+   */
+! #define SYNID_ALLBUT MAX_HL_ID   /* syntax group ID for contains=ALLBUT */
+  #define SYNID_TOP    21000       /* syntax group ID for contains=TOP */
+  #define SYNID_CONTAINED      22000       /* syntax group ID for contains=CONTAINED */
+  #define SYNID_CLUSTER        23000       /* first syntax group ID for clusters */
+  
+  #define MAX_SYN_INC_TAG      999         /* maximum before the above overflow */
+  #define MAX_CLUSTER_ID  (32767 - SYNID_CLUSTER)
+  
+***************
+*** 6462,6468 ****
+  
+  #endif /* FEAT_SYN_HL */
+  
+- 
+  /**************************************
+   *  Highlighting stuff                     *
+   **************************************/
+--- 6463,6468 ----
+***************
+*** 8996,9004 ****
+       highlight_ga.ga_growsize = 10;
+      }
+  
+!     if (highlight_ga.ga_len >= MAX_SYNID)
+      {
+!      EMSG(_("E849: Too many syntax groups"));
+       vim_free(name);
+       return 0;
+      }
+--- 8996,9004 ----
+       highlight_ga.ga_growsize = 10;
+      }
+  
+!     if (highlight_ga.ga_len >= MAX_HL_ID)
+      {
+!      EMSG(_("E849: Too many highlight and syntax groups"));
+       vim_free(name);
+       return 0;
+      }
+*** ../vim-7.3.153/src/version.c       2011-04-02 14:44:50.000000000 +0200
+--- src/version.c      2011-04-02 14:52:33.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     154,
+  /**/
+
+-- 
+BEDEVERE:        Why do you think she is a witch?
+SECOND VILLAGER: She turned me into a newt.
+BEDEVERE:        A newt?
+SECOND VILLAGER: (After looking at himself for some time) I got better.
+                 "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/vim/patches/vim-7.3.155.patch0 b/vim/patches/vim-7.3.155.patch0
new file mode 100644 (file)
index 0000000..806efca
--- /dev/null
@@ -0,0 +1,286 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.155
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.155
+Problem:    Crash when using map(), filter() and remove() on v:. (ZyX)
+            Also for extend(). (Yukihiro Nakadaira)
+Solution:   Mark v: as locked.  Also correct locking error messages.
+Files:     src/eval.c
+
+
+*** ../vim-7.3.154/src/eval.c  2011-04-01 16:07:41.000000000 +0200
+--- src/eval.c 2011-04-11 13:28:34.000000000 +0200
+***************
+*** 853,858 ****
+--- 853,859 ----
+  
+      init_var_dict(&globvardict, &globvars_var);
+      init_var_dict(&vimvardict, &vimvars_var);
++     vimvardict.dv_lock = VAR_FIXED;
+      hash_init(&compat_hashtab);
+      hash_init(&func_hashtab);
+  
+***************
+*** 8545,8551 ****
+      if (argvars[0].v_type == VAR_LIST)
+      {
+       if ((l = argvars[0].vval.v_list) != NULL
+!              && !tv_check_lock(l->lv_lock, (char_u *)"add()")
+               && list_append_tv(l, &argvars[1]) == OK)
+           copy_tv(&argvars[0], rettv);
+      }
+--- 8546,8552 ----
+      if (argvars[0].v_type == VAR_LIST)
+      {
+       if ((l = argvars[0].vval.v_list) != NULL
+!              && !tv_check_lock(l->lv_lock, (char_u *)_("add() argument"))
+               && list_append_tv(l, &argvars[1]) == OK)
+           copy_tv(&argvars[0], rettv);
+      }
+***************
+*** 9946,9951 ****
+--- 9947,9954 ----
+      typval_T *argvars;
+      typval_T *rettv;
+  {
++     char      *arg_errmsg = N_("extend() argument");
++ 
+      if (argvars[0].v_type == VAR_LIST && argvars[1].v_type == VAR_LIST)
+      {
+       list_T          *l1, *l2;
+***************
+*** 9955,9961 ****
+  
+       l1 = argvars[0].vval.v_list;
+       l2 = argvars[1].vval.v_list;
+!      if (l1 != NULL && !tv_check_lock(l1->lv_lock, (char_u *)"extend()")
+               && l2 != NULL)
+       {
+           if (argvars[2].v_type != VAR_UNKNOWN)
+--- 9958,9964 ----
+  
+       l1 = argvars[0].vval.v_list;
+       l2 = argvars[1].vval.v_list;
+!      if (l1 != NULL && !tv_check_lock(l1->lv_lock, (char_u *)_(arg_errmsg))
+               && l2 != NULL)
+       {
+           if (argvars[2].v_type != VAR_UNKNOWN)
+***************
+*** 9994,10000 ****
+  
+       d1 = argvars[0].vval.v_dict;
+       d2 = argvars[1].vval.v_dict;
+!      if (d1 != NULL && !tv_check_lock(d1->dv_lock, (char_u *)"extend()")
+               && d2 != NULL)
+       {
+           /* Check the third argument. */
+--- 9997,10003 ----
+  
+       d1 = argvars[0].vval.v_dict;
+       d2 = argvars[1].vval.v_dict;
+!      if (d1 != NULL && !tv_check_lock(d1->dv_lock, (char_u *)_(arg_errmsg))
+               && d2 != NULL)
+       {
+           /* Check the third argument. */
+***************
+*** 10236,10255 ****
+      typval_T save_key;
+      int              rem;
+      int              todo;
+!     char_u   *ermsg = map ? (char_u *)"map()" : (char_u *)"filter()";
+      int              save_did_emsg;
+      int              idx = 0;
+  
+      if (argvars[0].v_type == VAR_LIST)
+      {
+       if ((l = argvars[0].vval.v_list) == NULL
+!              || (map && tv_check_lock(l->lv_lock, ermsg)))
+           return;
+      }
+      else if (argvars[0].v_type == VAR_DICT)
+      {
+       if ((d = argvars[0].vval.v_dict) == NULL
+!              || (map && tv_check_lock(d->dv_lock, ermsg)))
+           return;
+      }
+      else
+--- 10239,10260 ----
+      typval_T save_key;
+      int              rem;
+      int              todo;
+!     char_u   *ermsg = (char_u *)(map ? "map()" : "filter()");
+!     char     *arg_errmsg = (map ? N_("map() argument")
+!                                 : N_("filter() argument"));
+      int              save_did_emsg;
+      int              idx = 0;
+  
+      if (argvars[0].v_type == VAR_LIST)
+      {
+       if ((l = argvars[0].vval.v_list) == NULL
+!              || tv_check_lock(l->lv_lock, (char_u *)_(arg_errmsg)))
+           return;
+      }
+      else if (argvars[0].v_type == VAR_DICT)
+      {
+       if ((d = argvars[0].vval.v_dict) == NULL
+!              || tv_check_lock(d->dv_lock, (char_u *)_(arg_errmsg)))
+           return;
+      }
+      else
+***************
+*** 10286,10292 ****
+               {
+                   --todo;
+                   di = HI2DI(hi);
+!                  if (tv_check_lock(di->di_tv.v_lock, ermsg))
+                       break;
+                   vimvars[VV_KEY].vv_str = vim_strsave(di->di_key);
+                   if (filter_map_one(&di->di_tv, expr, map, &rem) == FAIL
+--- 10291,10298 ----
+               {
+                   --todo;
+                   di = HI2DI(hi);
+!                  if (tv_check_lock(di->di_tv.v_lock,
+!                                                   (char_u *)_(arg_errmsg)))
+                       break;
+                   vimvars[VV_KEY].vv_str = vim_strsave(di->di_key);
+                   if (filter_map_one(&di->di_tv, expr, map, &rem) == FAIL
+***************
+*** 10305,10311 ****
+  
+           for (li = l->lv_first; li != NULL; li = nli)
+           {
+!              if (tv_check_lock(li->li_tv.v_lock, ermsg))
+                   break;
+               nli = li->li_next;
+               vimvars[VV_KEY].vv_nr = idx;
+--- 10311,10317 ----
+  
+           for (li = l->lv_first; li != NULL; li = nli)
+           {
+!              if (tv_check_lock(li->li_tv.v_lock, (char_u *)_(arg_errmsg)))
+                   break;
+               nli = li->li_next;
+               vimvars[VV_KEY].vv_nr = idx;
+***************
+*** 12910,12916 ****
+      if (argvars[0].v_type != VAR_LIST)
+       EMSG2(_(e_listarg), "insert()");
+      else if ((l = argvars[0].vval.v_list) != NULL
+!          && !tv_check_lock(l->lv_lock, (char_u *)"insert()"))
+      {
+       if (argvars[2].v_type != VAR_UNKNOWN)
+           before = get_tv_number_chk(&argvars[2], &error);
+--- 12916,12922 ----
+      if (argvars[0].v_type != VAR_LIST)
+       EMSG2(_(e_listarg), "insert()");
+      else if ((l = argvars[0].vval.v_list) != NULL
+!          && !tv_check_lock(l->lv_lock, (char_u *)_("insert() argument")))
+      {
+       if (argvars[2].v_type != VAR_UNKNOWN)
+           before = get_tv_number_chk(&argvars[2], &error);
+***************
+*** 14775,14787 ****
+      char_u   *key;
+      dict_T   *d;
+      dictitem_T       *di;
+  
+      if (argvars[0].v_type == VAR_DICT)
+      {
+       if (argvars[2].v_type != VAR_UNKNOWN)
+           EMSG2(_(e_toomanyarg), "remove()");
+       else if ((d = argvars[0].vval.v_dict) != NULL
+!              && !tv_check_lock(d->dv_lock, (char_u *)"remove() argument"))
+       {
+           key = get_tv_string_chk(&argvars[1]);
+           if (key != NULL)
+--- 14781,14794 ----
+      char_u   *key;
+      dict_T   *d;
+      dictitem_T       *di;
++     char     *arg_errmsg = N_("remove() argument");
+  
+      if (argvars[0].v_type == VAR_DICT)
+      {
+       if (argvars[2].v_type != VAR_UNKNOWN)
+           EMSG2(_(e_toomanyarg), "remove()");
+       else if ((d = argvars[0].vval.v_dict) != NULL
+!              && !tv_check_lock(d->dv_lock, (char_u *)_(arg_errmsg)))
+       {
+           key = get_tv_string_chk(&argvars[1]);
+           if (key != NULL)
+***************
+*** 14801,14807 ****
+      else if (argvars[0].v_type != VAR_LIST)
+       EMSG2(_(e_listdictarg), "remove()");
+      else if ((l = argvars[0].vval.v_list) != NULL
+!          && !tv_check_lock(l->lv_lock, (char_u *)"remove() argument"))
+      {
+       int         error = FALSE;
+  
+--- 14808,14814 ----
+      else if (argvars[0].v_type != VAR_LIST)
+       EMSG2(_(e_listdictarg), "remove()");
+      else if ((l = argvars[0].vval.v_list) != NULL
+!          && !tv_check_lock(l->lv_lock, (char_u *)_(arg_errmsg)))
+      {
+       int         error = FALSE;
+  
+***************
+*** 15135,15141 ****
+      if (argvars[0].v_type != VAR_LIST)
+       EMSG2(_(e_listarg), "reverse()");
+      else if ((l = argvars[0].vval.v_list) != NULL
+!          && !tv_check_lock(l->lv_lock, (char_u *)"reverse()"))
+      {
+       li = l->lv_last;
+       l->lv_first = l->lv_last = NULL;
+--- 15142,15148 ----
+      if (argvars[0].v_type != VAR_LIST)
+       EMSG2(_(e_listarg), "reverse()");
+      else if ((l = argvars[0].vval.v_list) != NULL
+!          && !tv_check_lock(l->lv_lock, (char_u *)_("reverse() argument")))
+      {
+       li = l->lv_last;
+       l->lv_first = l->lv_last = NULL;
+***************
+*** 16432,16438 ****
+      else
+      {
+       l = argvars[0].vval.v_list;
+!      if (l == NULL || tv_check_lock(l->lv_lock, (char_u *)"sort()"))
+           return;
+       rettv->vval.v_list = l;
+       rettv->v_type = VAR_LIST;
+--- 16439,16446 ----
+      else
+      {
+       l = argvars[0].vval.v_list;
+!      if (l == NULL || tv_check_lock(l->lv_lock,
+!                                           (char_u *)_("sort() argument")))
+           return;
+       rettv->vval.v_list = l;
+       rettv->v_type = VAR_LIST;
+*** ../vim-7.3.154/src/version.c       2011-04-02 15:12:45.000000000 +0200
+--- src/version.c      2011-04-11 13:13:38.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     155,
+  /**/
+
+-- 
+I used to be indecisive, now I'm not sure.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.156.patch0 b/vim/patches/vim-7.3.156.patch0
new file mode 100644 (file)
index 0000000..ec87324
--- /dev/null
@@ -0,0 +1,89 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.156
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.156
+Problem:    Tty names possibly left unterminated.
+Solution:   Use vim_strncpy() instead of strncpy().
+Files:     src/pty.c
+
+
+*** ../vim-7.3.155/src/pty.c   2010-08-15 21:57:28.000000000 +0200
+--- src/pty.c  2011-04-11 14:02:49.000000000 +0200
+***************
+*** 209,216 ****
+  #ifdef _SEQUENT_
+      fvhangup(s);
+  #endif
+!     strncpy(PtyName, m, sizeof(PtyName));
+!     strncpy(TtyName, s, sizeof(TtyName));
+      initmaster(f);
+      *ttyn = TtyName;
+      return f;
+--- 209,216 ----
+  #ifdef _SEQUENT_
+      fvhangup(s);
+  #endif
+!     vim_strncpy((char_u *)PtyName, (char_u *)m, sizeof(PtyName) - 1);
+!     vim_strncpy((char_u *)TtyName, (char_u *)s, sizeof(TtyName) - 1);
+      initmaster(f);
+      *ttyn = TtyName;
+      return f;
+***************
+*** 301,307 ****
+       return -1;
+      }
+      signal(SIGCHLD, sigcld);
+!     strncpy(TtyName, m, sizeof(TtyName));
+      initmaster(f);
+      *ttyn = TtyName;
+      return f;
+--- 301,307 ----
+       return -1;
+      }
+      signal(SIGCHLD, sigcld);
+!     vim_strncpy((char_u *)TtyName, (char_u *)m, sizeof(TtyName) - 1);
+      initmaster(f);
+      *ttyn = TtyName;
+      return f;
+***************
+*** 326,332 ****
+      /* a dumb looking loop replaced by mycrofts code: */
+      if ((f = open("/dev/ptc", O_RDWR | O_NOCTTY | O_EXTRA)) < 0)
+       return -1;
+!     strncpy(TtyName, ttyname(f), sizeof(TtyName));
+      if (geteuid() != ROOT_UID && mch_access(TtyName, R_OK | W_OK))
+      {
+       close(f);
+--- 326,332 ----
+      /* a dumb looking loop replaced by mycrofts code: */
+      if ((f = open("/dev/ptc", O_RDWR | O_NOCTTY | O_EXTRA)) < 0)
+       return -1;
+!     vim_strncpy((char_u *)TtyName, (char_u *)ttyname(f), sizeof(TtyName) - 1);
+      if (geteuid() != ROOT_UID && mch_access(TtyName, R_OK | W_OK))
+      {
+       close(f);
+*** ../vim-7.3.155/src/version.c       2011-04-11 13:46:07.000000000 +0200
+--- src/version.c      2011-04-11 14:23:38.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     156,
+  /**/
+
+-- 
+I think that you'll agree that engineers are very effective in their social
+interactions.  It's the "normal" people who are nuts.
+                               (Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.157.patch0 b/vim/patches/vim-7.3.157.patch0
new file mode 100644 (file)
index 0000000..403c948
--- /dev/null
@@ -0,0 +1,52 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.157
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.157
+Problem:    Superfluous assignment.
+Solution:   Remove assignment.
+Files:     src/misc1.c
+
+
+*** ../vim-7.3.156/src/misc1.c 2011-03-22 13:07:19.000000000 +0100
+--- src/misc1.c        2011-04-11 14:11:17.000000000 +0200
+***************
+*** 6773,6780 ****
+               {
+                   curwin->w_cursor.lnum = our_paren_pos.lnum;
+                   curwin->w_cursor.col = col;
+!                  if ((trypos = find_match_paren(ind_maxparen,
+!                                                   ind_maxcomment)) != NULL)
+                       amount += ind_unclosed2;
+                   else
+                       amount += ind_unclosed;
+--- 6775,6781 ----
+               {
+                   curwin->w_cursor.lnum = our_paren_pos.lnum;
+                   curwin->w_cursor.col = col;
+!                  if (find_match_paren(ind_maxparen, ind_maxcomment) != NULL)
+                       amount += ind_unclosed2;
+                   else
+                       amount += ind_unclosed;
+*** ../vim-7.3.156/src/version.c       2011-04-11 14:24:33.000000000 +0200
+--- src/version.c      2011-04-11 14:25:36.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     157,
+  /**/
+
+-- 
+A radioactive cat has eighteen half-lives.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.158.patch0 b/vim/patches/vim-7.3.158.patch0
new file mode 100644 (file)
index 0000000..8fba350
--- /dev/null
@@ -0,0 +1,48 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.158
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.158
+Problem:    Might use uninitialized memory in C indenting.
+Solution:   Init arrays to empty.
+Files:     src/misc1.c
+
+
+*** ../vim-7.3.157/src/misc1.c 2011-04-11 14:26:15.000000000 +0200
+--- src/misc1.c        2011-04-11 14:11:17.000000000 +0200
+***************
+*** 6433,6438 ****
+--- 6433,6440 ----
+       /* find how indented the line beginning the comment is */
+       getvcol(curwin, trypos, &col, NULL, NULL);
+       amount = col;
++      *lead_start = NUL;
++      *lead_middle = NUL;
+  
+       p = curbuf->b_p_com;
+       while (*p != NUL)
+*** ../vim-7.3.157/src/version.c       2011-04-11 14:26:15.000000000 +0200
+--- src/version.c      2011-04-11 14:27:05.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     158,
+  /**/
+
+-- 
+It's totally unfair to suggest - as many have - that engineers are socially
+inept.  Engineers simply have different objectives when it comes to social
+interaction.
+                               (Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.159.patch0 b/vim/patches/vim-7.3.159.patch0
new file mode 100644 (file)
index 0000000..7029ac8
--- /dev/null
@@ -0,0 +1,54 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.159
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.159
+Problem:    Using uninitialized pointer when out of memory.
+Solution:   Check for NULL return value.
+Files:     src/mbyte.c
+
+
+*** ../vim-7.3.158/src/mbyte.c 2010-10-27 13:37:39.000000000 +0200
+--- src/mbyte.c        2011-04-11 14:17:39.000000000 +0200
+***************
+*** 4129,4135 ****
+       done = to - (char *)result;
+      }
+  
+!     if (resultlenp != NULL)
+       *resultlenp = (int)(to - (char *)result);
+      return result;
+  }
+--- 4129,4135 ----
+       done = to - (char *)result;
+      }
+  
+!     if (resultlenp != NULL && result != NULL)
+       *resultlenp = (int)(to - (char *)result);
+      return result;
+  }
+*** ../vim-7.3.158/src/version.c       2011-04-11 14:27:34.000000000 +0200
+--- src/version.c      2011-04-11 14:28:08.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     159,
+  /**/
+
+-- 
+I learned the customs and mannerisms of engineers by observing them, much the
+way Jane Goodall learned about the great apes, but without the hassle of
+grooming.
+                               (Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.160.patch0 b/vim/patches/vim-7.3.160.patch0
new file mode 100644 (file)
index 0000000..bf3a069
--- /dev/null
@@ -0,0 +1,482 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.160
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.160
+Problem:    Unsafe string copying.
+Solution:   Use vim_strncpy() instead of strcpy().  Use vim_strcat() instead
+           of strcat().
+Files:     src/buffer.c, src/ex_docmd.c, src/hardcopy.c, src/menu.c,
+           src/misc1.c, src/misc2.c, src/proto/misc2.pro, src/netbeans.c,
+           src/os_unix.c, src/spell.c, src/syntax.c, src/tag.c
+
+*** ../vim-7.3.159/src/buffer.c        2011-02-15 14:24:42.000000000 +0100
+--- src/buffer.c       2011-04-11 16:08:38.000000000 +0200
+***************
+*** 3176,3182 ****
+           /* format: "fname + (path) (1 of 2) - VIM" */
+  
+           if (curbuf->b_fname == NULL)
+!              STRCPY(buf, _("[No Name]"));
+           else
+           {
+               p = transstr(gettail(curbuf->b_fname));
+--- 3176,3182 ----
+           /* format: "fname + (path) (1 of 2) - VIM" */
+  
+           if (curbuf->b_fname == NULL)
+!              vim_strncpy(buf, (char_u *)_("[No Name]"), IOSIZE - 100);
+           else
+           {
+               p = transstr(gettail(curbuf->b_fname));
+***************
+*** 3232,3238 ****
+           if (serverName != NULL)
+           {
+               STRCAT(buf, " - ");
+!              STRCAT(buf, serverName);
+           }
+           else
+  #endif
+--- 3232,3238 ----
+           if (serverName != NULL)
+           {
+               STRCAT(buf, " - ");
+!              vim_strcat(buf, serverName, IOSIZE);
+           }
+           else
+  #endif
+*** ../vim-7.3.159/src/ex_docmd.c      2011-03-03 15:54:45.000000000 +0100
+--- src/ex_docmd.c     2011-04-11 15:43:48.000000000 +0200
+***************
+*** 5096,5102 ****
+               char_u  buff[IOSIZE];
+  
+               if (n == 1)
+!                  STRCPY(buff, _("1 more file to edit.  Quit anyway?"));
+               else
+                   vim_snprintf((char *)buff, IOSIZE,
+                             _("%d more files to edit.  Quit anyway?"), n);
+--- 5096,5104 ----
+               char_u  buff[IOSIZE];
+  
+               if (n == 1)
+!                  vim_strncpy(buff,
+!                          (char_u *)_("1 more file to edit.  Quit anyway?"),
+!                                                                IOSIZE - 1);
+               else
+                   vim_snprintf((char *)buff, IOSIZE,
+                             _("%d more files to edit.  Quit anyway?"), n);
+*** ../vim-7.3.159/src/hardcopy.c      2010-08-15 21:57:25.000000000 +0200
+--- src/hardcopy.c     2011-04-11 15:30:09.000000000 +0200
+***************
+*** 1761,1772 ****
+  {
+      char_u   buffer[MAXPATHL + 1];
+  
+!     STRCPY(resource->name, name);
+      /* Look for named resource file in runtimepath */
+      STRCPY(buffer, "print");
+      add_pathsep(buffer);
+!     STRCAT(buffer, name);
+!     STRCAT(buffer, ".ps");
+      resource->filename[0] = NUL;
+      return (do_in_runtimepath(buffer, FALSE, prt_resource_name,
+                                                          resource->filename)
+--- 1761,1772 ----
+  {
+      char_u   buffer[MAXPATHL + 1];
+  
+!     vim_strncpy(resource->name, (char_u *)name, 63);
+      /* Look for named resource file in runtimepath */
+      STRCPY(buffer, "print");
+      add_pathsep(buffer);
+!     vim_strcat(buffer, (char_u *)name, MAXPATHL);
+!     vim_strcat(buffer, (char_u *)".ps", MAXPATHL);
+      resource->filename[0] = NUL;
+      return (do_in_runtimepath(buffer, FALSE, prt_resource_name,
+                                                          resource->filename)
+*** ../vim-7.3.159/src/menu.c  2011-01-04 17:49:25.000000000 +0100
+--- src/menu.c 2011-04-11 15:17:21.000000000 +0200
+***************
+*** 1394,1400 ****
+      int              idx;
+  {
+      static vimmenu_T *menu = NULL;
+!     static char_u    tbuffer[256]; /*hack*/
+      char_u           *str;
+  #ifdef FEAT_MULTI_LANG
+      static  int              should_advance = FALSE;
+--- 1394,1401 ----
+      int              idx;
+  {
+      static vimmenu_T *menu = NULL;
+! #define TBUFFER_LEN 256
+!     static char_u    tbuffer[TBUFFER_LEN]; /*hack*/
+      char_u           *str;
+  #ifdef FEAT_MULTI_LANG
+      static  int              should_advance = FALSE;
+***************
+*** 1428,1438 ****
+       {
+  #ifdef FEAT_MULTI_LANG
+           if (should_advance)
+!              STRCPY(tbuffer, menu->en_dname);
+           else
+           {
+  #endif
+!              STRCPY(tbuffer, menu->dname);
+  #ifdef FEAT_MULTI_LANG
+               if (menu->en_dname == NULL)
+                   should_advance = TRUE;
+--- 1429,1439 ----
+       {
+  #ifdef FEAT_MULTI_LANG
+           if (should_advance)
+!              vim_strncpy(tbuffer, menu->en_dname, TBUFFER_LEN - 2);
+           else
+           {
+  #endif
+!              vim_strncpy(tbuffer, menu->dname,  TBUFFER_LEN - 2);
+  #ifdef FEAT_MULTI_LANG
+               if (menu->en_dname == NULL)
+                   should_advance = TRUE;
+*** ../vim-7.3.159/src/misc1.c 2011-04-11 14:27:34.000000000 +0200
+--- src/misc1.c        2011-04-11 16:03:22.000000000 +0200
+***************
+*** 3332,3350 ****
+       if (pn == 1)
+       {
+           if (n > 0)
+!              STRCPY(msg_buf, _("1 more line"));
+           else
+!              STRCPY(msg_buf, _("1 line less"));
+       }
+       else
+       {
+           if (n > 0)
+!              sprintf((char *)msg_buf, _("%ld more lines"), pn);
+           else
+!              sprintf((char *)msg_buf, _("%ld fewer lines"), pn);
+       }
+       if (got_int)
+!          STRCAT(msg_buf, _(" (Interrupted)"));
+       if (msg(msg_buf))
+       {
+           set_keep_msg(msg_buf, 0);
+--- 3332,3354 ----
+       if (pn == 1)
+       {
+           if (n > 0)
+!              vim_strncpy(msg_buf, (char_u *)_("1 more line"),
+!                                                           MSG_BUF_LEN - 1);
+           else
+!              vim_strncpy(msg_buf, (char_u *)_("1 line less"),
+!                                                           MSG_BUF_LEN - 1);
+       }
+       else
+       {
+           if (n > 0)
+!              vim_snprintf((char *)msg_buf, MSG_BUF_LEN,
+!                                                   _("%ld more lines"), pn);
+           else
+!              vim_snprintf((char *)msg_buf, MSG_BUF_LEN,
+!                                                  _("%ld fewer lines"), pn);
+       }
+       if (got_int)
+!          vim_strcat(msg_buf, (char_u *)_(" (Interrupted)"), MSG_BUF_LEN);
+       if (msg(msg_buf))
+       {
+           set_keep_msg(msg_buf, 0);
+*** ../vim-7.3.159/src/misc2.c 2010-12-08 13:11:15.000000000 +0100
+--- src/misc2.c        2011-04-11 15:30:20.000000000 +0200
+***************
+*** 1647,1652 ****
+--- 1647,1674 ----
+  }
+  
+  /*
++  * Like strcat(), but make sure the result fits in "tosize" bytes and is
++  * always NUL terminated.
++  */
++     void
++ vim_strcat(to, from, tosize)
++     char_u   *to;
++     char_u   *from;
++     size_t   tosize;
++ {
++     size_t tolen = STRLEN(to);
++     size_t fromlen = STRLEN(from);
++ 
++     if (tolen + fromlen + 1 > tosize)
++     {
++      mch_memmove(to + tolen, from, tosize - tolen - 1);
++      to[tosize - 1] = NUL;
++     }
++     else
++      STRCPY(to + tolen, from);
++ }
++ 
++ /*
+   * Isolate one part of a string option where parts are separated with
+   * "sep_chars".
+   * The part is copied into "buf[maxlen]".
+*** ../vim-7.3.159/src/proto/misc2.pro 2010-08-15 21:57:28.000000000 +0200
+--- src/proto/misc2.pro        2011-04-11 15:29:55.000000000 +0200
+***************
+*** 40,45 ****
+--- 40,46 ----
+  void copy_chars __ARGS((char_u *ptr, size_t count, int c));
+  void del_trailing_spaces __ARGS((char_u *ptr));
+  void vim_strncpy __ARGS((char_u *to, char_u *from, size_t len));
++ void vim_strcat __ARGS((char_u *to, char_u *from, size_t tosize));
+  int copy_option_part __ARGS((char_u **option, char_u *buf, int maxlen, char *sep_chars));
+  void vim_free __ARGS((void *x));
+  int vim_stricmp __ARGS((char *s1, char *s2));
+*** ../vim-7.3.159/src/netbeans.c      2011-04-01 15:33:54.000000000 +0200
+--- src/netbeans.c     2011-04-11 16:02:51.000000000 +0200
+***************
+*** 3914,3927 ****
+      }
+      else
+      {
+!      char_u ebuf[BUFSIZ];
+  
+!      STRCPY(ebuf, (char_u *)_("E505: "));
+!      STRCAT(ebuf, IObuff);
+!      STRCAT(ebuf, (char_u *)_("is read-only (add ! to override)"));
+!      STRCPY(IObuff, ebuf);
+!      nbdebug(("    %s\n", ebuf ));
+!      emsg(IObuff);
+      }
+  }
+  
+--- 3914,3925 ----
+      }
+      else
+      {
+!      char_u msgbuf[IOSIZE];
+  
+!      vim_snprintf((char *)msgbuf, IOSIZE,
+!              _("E505: %s is read-only (add ! to override)"), IObuff);
+!      nbdebug(("    %s\n", msgbuf));
+!      emsg(msgbuf);
+      }
+  }
+  
+*** ../vim-7.3.159/src/os_unix.c       2011-02-15 17:39:14.000000000 +0100
+--- src/os_unix.c      2011-04-11 16:39:11.000000000 +0200
+***************
+*** 5725,5730 ****
+--- 5725,5731 ----
+       if (shell_style == STYLE_PRINT && !did_find_nul)
+       {
+           /* If there is a NUL, set did_find_nul, else set check_spaces */
++          buffer[len] = NUL;
+           if (len && (int)STRLEN(buffer) < (int)len - 1)
+               did_find_nul = TRUE;
+           else
+***************
+*** 6594,6600 ****
+           xterm_hints.x = 2;
+       return TRUE;
+      }
+!     if (mouse_code == NULL)
+      {
+       xterm_trace = 0;
+       return FALSE;
+--- 6595,6601 ----
+           xterm_hints.x = 2;
+       return TRUE;
+      }
+!     if (mouse_code == NULL || STRLEN(mouse_code) > 45)
+      {
+       xterm_trace = 0;
+       return FALSE;
+*** ../vim-7.3.159/src/spell.c 2011-02-01 13:59:44.000000000 +0100
+--- src/spell.c        2011-04-11 15:50:40.000000000 +0200
+***************
+*** 6957,6963 ****
+                           if (ae->ae_add == NULL)
+                               *newword = NUL;
+                           else
+!                              STRCPY(newword, ae->ae_add);
+                           p = word;
+                           if (ae->ae_chop != NULL)
+                           {
+--- 6957,6963 ----
+                           if (ae->ae_add == NULL)
+                               *newword = NUL;
+                           else
+!                              vim_strncpy(newword, ae->ae_add, MAXWLEN - 1);
+                           p = word;
+                           if (ae->ae_chop != NULL)
+                           {
+***************
+*** 6978,6984 ****
+                       else
+                       {
+                           /* suffix: chop/add at the end of the word */
+!                          STRCPY(newword, word);
+                           if (ae->ae_chop != NULL)
+                           {
+                               /* Remove chop string. */
+--- 6978,6984 ----
+                       else
+                       {
+                           /* suffix: chop/add at the end of the word */
+!                          vim_strncpy(newword, word, MAXWLEN - 1);
+                           if (ae->ae_chop != NULL)
+                           {
+                               /* Remove chop string. */
+***************
+*** 8654,8660 ****
+       * Write the .sug file.
+       * Make the file name by changing ".spl" to ".sug".
+       */
+!     STRCPY(fname, wfname);
+      len = (int)STRLEN(fname);
+      fname[len - 2] = 'u';
+      fname[len - 1] = 'g';
+--- 8654,8660 ----
+       * Write the .sug file.
+       * Make the file name by changing ".spl" to ".sug".
+       */
+!     vim_strncpy(fname, wfname, MAXPATHL - 1);
+      len = (int)STRLEN(fname);
+      fname[len - 2] = 'u';
+      fname[len - 1] = 'g';
+***************
+*** 10261,10267 ****
+  
+           /* The suggested word may replace only part of the bad word, add
+            * the not replaced part. */
+!          STRCPY(wcopy, stp->st_word);
+           if (sug.su_badlen > stp->st_orglen)
+               vim_strncpy(wcopy + stp->st_wordlen,
+                                              sug.su_badptr + stp->st_orglen,
+--- 10261,10267 ----
+  
+           /* The suggested word may replace only part of the bad word, add
+            * the not replaced part. */
+!          vim_strncpy(wcopy, stp->st_word, MAXWLEN);
+           if (sug.su_badlen > stp->st_orglen)
+               vim_strncpy(wcopy + stp->st_wordlen,
+                                              sug.su_badptr + stp->st_orglen,
+***************
+*** 13162,13168 ****
+       pbad = badsound2;
+      }
+  
+!     if (lendiff > 0)
+      {
+       /* Add part of the bad word to the good word, so that we soundfold
+        * what replaces the bad word. */
+--- 13162,13168 ----
+       pbad = badsound2;
+      }
+  
+!     if (lendiff > 0 && stp->st_wordlen + lendiff < MAXWLEN)
+      {
+       /* Add part of the bad word to the good word, so that we soundfold
+        * what replaces the bad word. */
+***************
+*** 13875,13881 ****
+      for (i = gap->ga_len - 1; i >= 0; --i)
+      {
+       /* Need to append what follows to check for "the the". */
+!      STRCPY(longword, stp[i].st_word);
+       len = stp[i].st_wordlen;
+       vim_strncpy(longword + len, su->su_badptr + stp[i].st_orglen,
+                                                              MAXWLEN - len);
+--- 13875,13881 ----
+      for (i = gap->ga_len - 1; i >= 0; --i)
+      {
+       /* Need to append what follows to check for "the the". */
+!      vim_strncpy(longword, stp[i].st_word, MAXWLEN);
+       len = stp[i].st_wordlen;
+       vim_strncpy(longword + len, su->su_badptr + stp[i].st_orglen,
+                                                              MAXWLEN - len);
+***************
+*** 14221,14227 ****
+       *t = NUL;
+      }
+      else
+!      STRCPY(word, s);
+  
+      smp = (salitem_T *)slang->sl_sal.ga_data;
+  
+--- 14221,14227 ----
+       *t = NUL;
+      }
+      else
+!      vim_strncpy(word, s, MAXWLEN - 1);
+  
+      smp = (salitem_T *)slang->sl_sal.ga_data;
+  
+*** ../vim-7.3.159/src/syntax.c        2011-04-02 15:12:45.000000000 +0200
+--- src/syntax.c       2011-04-11 15:44:30.000000000 +0200
+***************
+*** 8576,8583 ****
+               if (iarg & hl_attr_table[i])
+               {
+                   if (buf[0] != NUL)
+!                      STRCAT(buf, ",");
+!                  STRCAT(buf, hl_name_table[i]);
+                   iarg &= ~hl_attr_table[i];      /* don't want "inverse" */
+               }
+           }
+--- 8576,8583 ----
+               if (iarg & hl_attr_table[i])
+               {
+                   if (buf[0] != NUL)
+!                      vim_strcat(buf, (char_u *)",", 100);
+!                  vim_strcat(buf, (char_u *)hl_name_table[i], 100);
+                   iarg &= ~hl_attr_table[i];      /* don't want "inverse" */
+               }
+           }
+*** ../vim-7.3.159/src/tag.c   2011-02-25 15:13:43.000000000 +0100
+--- src/tag.c  2011-04-11 15:34:59.000000000 +0200
+***************
+*** 806,812 ****
+                   p = tag_full_fname(&tagp);
+                   if (p == NULL)
+                       continue;
+!                  STRCPY(fname, p);
+                   vim_free(p);
+  
+                   /*
+--- 806,812 ----
+                   p = tag_full_fname(&tagp);
+                   if (p == NULL)
+                       continue;
+!                  vim_strncpy(fname, p, MAXPATHL);
+                   vim_free(p);
+  
+                   /*
+*** ../vim-7.3.159/src/version.c       2011-04-11 14:29:13.000000000 +0200
+--- src/version.c      2011-04-11 16:50:53.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     160,
+  /**/
+
+-- 
+If someone questions your market projections, simply point out that your
+target market is "People who are nuts" and "People who will buy any damn
+thing".  Nobody is going to tell you there aren't enough of those people
+to go around.
+                               (Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.161.patch0 b/vim/patches/vim-7.3.161.patch0
new file mode 100644 (file)
index 0000000..61223ec
--- /dev/null
@@ -0,0 +1,1645 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.161
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.161
+Problem:    Items on the stack may be too big.
+Solution:   Make items static or allocate them.
+Files:     src/eval.c, src/ex_cmds.c, src/ex_cmds2.c, src/ex_docmd.c,
+           src/fileio.c, src/hardcopy.c, src/quickfix.c, src/main.c,
+           src/netbeans.c, src/spell.c, src/tag.c, src/vim.h, src/xxd/xxd.c
+
+
+*** ../vim-7.3.160/src/eval.c  2011-04-11 13:46:07.000000000 +0200
+--- src/eval.c 2011-04-11 21:05:50.000000000 +0200
+***************
+*** 11100,11117 ****
+      typval_T *argvars UNUSED;
+      typval_T *rettv;
+  {
+!     char_u   cwd[MAXPATHL];
+  
+      rettv->v_type = VAR_STRING;
+!     if (mch_dirname(cwd, MAXPATHL) == FAIL)
+!      rettv->vval.v_string = NULL;
+!     else
+      {
+!      rettv->vval.v_string = vim_strsave(cwd);
+  #ifdef BACKSLASH_IN_FILENAME
+!      if (rettv->vval.v_string != NULL)
+!          slash_adjust(rettv->vval.v_string);
+  #endif
+      }
+  }
+  
+--- 11100,11121 ----
+      typval_T *argvars UNUSED;
+      typval_T *rettv;
+  {
+!     char_u   *cwd;
+  
+      rettv->v_type = VAR_STRING;
+!     rettv->vval.v_string = NULL;
+!     cwd = alloc(MAXPATHL);
+!     if (cwd != NULL)
+      {
+!      if (mch_dirname(cwd, MAXPATHL) != FAIL)
+!      {
+!          rettv->vval.v_string = vim_strsave(cwd);
+  #ifdef BACKSLASH_IN_FILENAME
+!          if (rettv->vval.v_string != NULL)
+!              slash_adjust(rettv->vval.v_string);
+  #endif
++      }
++      vim_free(cwd);
+      }
+  }
+  
+***************
+*** 14938,14943 ****
+--- 14942,14950 ----
+      typval_T *rettv;
+  {
+      char_u   *p;
++ #ifdef HAVE_READLINK
++     char_u   *buf = NULL;
++ #endif
+  
+      p = get_tv_string(&argvars[0]);
+  #ifdef FEAT_SHORTCUT
+***************
+*** 14953,14959 ****
+  #else
+  # ifdef HAVE_READLINK
+      {
+-      char_u  buf[MAXPATHL + 1];
+       char_u  *cpy;
+       int     len;
+       char_u  *remain = NULL;
+--- 14960,14965 ----
+***************
+*** 14981,14986 ****
+--- 14987,14996 ----
+           q[-1] = NUL;
+       }
+  
++      buf = alloc(MAXPATHL + 1);
++      if (buf == NULL)
++          goto fail;
++ 
+       for (;;)
+       {
+           for (;;)
+***************
+*** 15124,15129 ****
+--- 15134,15140 ----
+  
+  #ifdef HAVE_READLINK
+  fail:
++     vim_free(buf);
+  #endif
+      rettv->v_type = VAR_STRING;
+  }
+***************
+*** 17604,17621 ****
+      typval_T *argvars UNUSED;
+      typval_T *rettv;
+  {
+!     char_u   fname[MAXPATHL + 1];
+      tagname_T        tn;
+      int              first;
+  
+      if (rettv_list_alloc(rettv) == FAIL)
+       return;
+  
+      for (first = TRUE; ; first = FALSE)
+       if (get_tagfname(&tn, first, fname) == FAIL
+               || list_append_string(rettv->vval.v_list, fname, -1) == FAIL)
+           break;
+      tagname_free(&tn);
+  }
+  
+  /*
+--- 17615,17636 ----
+      typval_T *argvars UNUSED;
+      typval_T *rettv;
+  {
+!     char_u   *fname;
+      tagname_T        tn;
+      int              first;
+  
+      if (rettv_list_alloc(rettv) == FAIL)
+       return;
++     fname = alloc(MAXPATHL);
++     if (fname == NULL)
++      return;
+  
+      for (first = TRUE; ; first = FALSE)
+       if (get_tagfname(&tn, first, fname) == FAIL
+               || list_append_string(rettv->vval.v_list, fname, -1) == FAIL)
+           break;
+      tagname_free(&tn);
++     vim_free(fname);
+  }
+  
+  /*
+*** ../vim-7.3.160/src/ex_cmds.c       2011-02-01 13:48:47.000000000 +0100
+--- src/ex_cmds.c      2011-04-11 20:51:34.000000000 +0200
+***************
+*** 2777,2783 ****
+  #if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG)
+           if (p_confirm || cmdmod.confirm)
+           {
+!              char_u  buff[IOSIZE];
+  
+               dialog_msg(buff, _("Overwrite existing file \"%s\"?"), fname);
+               if (vim_dialog_yesno(VIM_QUESTION, NULL, buff, 2) != VIM_YES)
+--- 2777,2783 ----
+  #if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG)
+           if (p_confirm || cmdmod.confirm)
+           {
+!              char_u  buff[DIALOG_MSG_SIZE];
+  
+               dialog_msg(buff, _("Overwrite existing file \"%s\"?"), fname);
+               if (vim_dialog_yesno(VIM_QUESTION, NULL, buff, 2) != VIM_YES)
+***************
+*** 2795,2801 ****
+       /* For ":w! filename" check that no swap file exists for "filename". */
+       if (other && !emsg_silent)
+       {
+!          char_u      dir[MAXPATHL];
+           char_u      *p;
+           int         r;
+           char_u      *swapname;
+--- 2795,2801 ----
+       /* For ":w! filename" check that no swap file exists for "filename". */
+       if (other && !emsg_silent)
+       {
+!          char_u      *dir;
+           char_u      *p;
+           int         r;
+           char_u      *swapname;
+***************
+*** 2806,2825 ****
+            * Use 'shortname' of the current buffer, since there is no buffer
+            * for the written file. */
+           if (*p_dir == NUL)
+               STRCPY(dir, ".");
+           else
+           {
+               p = p_dir;
+               copy_option_part(&p, dir, MAXPATHL, ",");
+           }
+           swapname = makeswapname(fname, ffname, curbuf, dir);
+           r = vim_fexists(swapname);
+           if (r)
+           {
+  #if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG)
+               if (p_confirm || cmdmod.confirm)
+               {
+!                  char_u      buff[IOSIZE];
+  
+                   dialog_msg(buff,
+                           _("Swap file \"%s\" exists, overwrite anyway?"),
+--- 2806,2834 ----
+            * Use 'shortname' of the current buffer, since there is no buffer
+            * for the written file. */
+           if (*p_dir == NUL)
++          {
++              dir = alloc(5);
++              if (dir == NULL)
++                  return FAIL;
+               STRCPY(dir, ".");
++          }
+           else
+           {
++              dir = alloc(MAXPATHL);
++              if (dir == NULL)
++                  return FAIL;
+               p = p_dir;
+               copy_option_part(&p, dir, MAXPATHL, ",");
+           }
+           swapname = makeswapname(fname, ffname, curbuf, dir);
++          vim_free(dir);
+           r = vim_fexists(swapname);
+           if (r)
+           {
+  #if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG)
+               if (p_confirm || cmdmod.confirm)
+               {
+!                  char_u      buff[DIALOG_MSG_SIZE];
+  
+                   dialog_msg(buff,
+                           _("Swap file \"%s\" exists, overwrite anyway?"),
+***************
+*** 2969,2975 ****
+  #if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG)
+       if ((p_confirm || cmdmod.confirm) && buf->b_fname != NULL)
+       {
+!          char_u      buff[IOSIZE];
+  
+           if (buf->b_p_ro)
+               dialog_msg(buff, _("'readonly' option is set for \"%s\".\nDo you wish to write anyway?"),
+--- 2978,2984 ----
+  #if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG)
+       if ((p_confirm || cmdmod.confirm) && buf->b_fname != NULL)
+       {
+!          char_u      buff[DIALOG_MSG_SIZE];
+  
+           if (buf->b_p_ro)
+               dialog_msg(buff, _("'readonly' option is set for \"%s\".\nDo you wish to write anyway?"),
+*** ../vim-7.3.160/src/ex_cmds2.c      2011-02-25 14:46:06.000000000 +0100
+--- src/ex_cmds2.c     2011-04-11 20:51:40.000000000 +0200
+***************
+*** 1492,1498 ****
+      buf_T    *buf;
+      int              checkall;       /* may abandon all changed buffers */
+  {
+!     char_u   buff[IOSIZE];
+      int              ret;
+      buf_T    *buf2;
+  
+--- 1492,1498 ----
+      buf_T    *buf;
+      int              checkall;       /* may abandon all changed buffers */
+  {
+!     char_u   buff[DIALOG_MSG_SIZE];
+      int              ret;
+      buf_T    *buf2;
+  
+*** ../vim-7.3.160/src/ex_docmd.c      2011-04-11 16:56:29.000000000 +0200
+--- src/ex_docmd.c     2011-04-11 21:20:35.000000000 +0200
+***************
+*** 5093,5106 ****
+  #if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG)
+           if ((p_confirm || cmdmod.confirm) && curbuf->b_fname != NULL)
+           {
+!              char_u  buff[IOSIZE];
+  
+               if (n == 1)
+                   vim_strncpy(buff,
+                           (char_u *)_("1 more file to edit.  Quit anyway?"),
+!                                                                IOSIZE - 1);
+               else
+!                  vim_snprintf((char *)buff, IOSIZE,
+                             _("%d more files to edit.  Quit anyway?"), n);
+               if (vim_dialog_yesno(VIM_QUESTION, NULL, buff, 1) == VIM_YES)
+                   return OK;
+--- 5093,5106 ----
+  #if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG)
+           if ((p_confirm || cmdmod.confirm) && curbuf->b_fname != NULL)
+           {
+!              char_u  buff[DIALOG_MSG_SIZE];
+  
+               if (n == 1)
+                   vim_strncpy(buff,
+                           (char_u *)_("1 more file to edit.  Quit anyway?"),
+!                                                       DIALOG_MSG_SIZE - 1);
+               else
+!                  vim_snprintf((char *)buff, DIALOG_MSG_SIZE,
+                             _("%d more files to edit.  Quit anyway?"), n);
+               if (vim_dialog_yesno(VIM_QUESTION, NULL, buff, 1) == VIM_YES)
+                   return OK;
+***************
+*** 8926,8960 ****
+               failed = TRUE;
+           if (eap->cmdidx == CMD_mksession)
+           {
+!              char_u dirnow[MAXPATHL];        /* current directory */
+  
+!              /*
+!               * Change to session file's dir.
+!               */
+!              if (mch_dirname(dirnow, MAXPATHL) == FAIL
+!                                          || mch_chdir((char *)dirnow) != 0)
+!                  *dirnow = NUL;
+!              if (*dirnow != NUL && (ssop_flags & SSOP_SESDIR))
+!              {
+!                  if (vim_chdirfile(fname) == OK)
+!                      shorten_fnames(TRUE);
+!              }
+!              else if (*dirnow != NUL
+!                      && (ssop_flags & SSOP_CURDIR) && globaldir != NULL)
+               {
+!                  if (mch_chdir((char *)globaldir) == 0)
+!                      shorten_fnames(TRUE);
+!              }
+  
+!              failed |= (makeopens(fd, dirnow) == FAIL);
+  
+!              /* restore original dir */
+!              if (*dirnow != NUL && ((ssop_flags & SSOP_SESDIR)
+                       || ((ssop_flags & SSOP_CURDIR) && globaldir != NULL)))
+!              {
+!                  if (mch_chdir((char *)dirnow) != 0)
+!                      EMSG(_(e_prev_dir));
+!                  shorten_fnames(TRUE);
+               }
+           }
+           else
+--- 8926,8967 ----
+               failed = TRUE;
+           if (eap->cmdidx == CMD_mksession)
+           {
+!              char_u *dirnow;  /* current directory */
+  
+!              dirnow = alloc(MAXPATHL);
+!              if (dirnow == NULL)
+!                  failed = TRUE;
+!              else
+               {
+!                  /*
+!                   * Change to session file's dir.
+!                   */
+!                  if (mch_dirname(dirnow, MAXPATHL) == FAIL
+!                                          || mch_chdir((char *)dirnow) != 0)
+!                      *dirnow = NUL;
+!                  if (*dirnow != NUL && (ssop_flags & SSOP_SESDIR))
+!                  {
+!                      if (vim_chdirfile(fname) == OK)
+!                          shorten_fnames(TRUE);
+!                  }
+!                  else if (*dirnow != NUL
+!                         && (ssop_flags & SSOP_CURDIR) && globaldir != NULL)
+!                  {
+!                      if (mch_chdir((char *)globaldir) == 0)
+!                          shorten_fnames(TRUE);
+!                  }
+  
+!                  failed |= (makeopens(fd, dirnow) == FAIL);
+  
+!                  /* restore original dir */
+!                  if (*dirnow != NUL && ((ssop_flags & SSOP_SESDIR)
+                       || ((ssop_flags & SSOP_CURDIR) && globaldir != NULL)))
+!                  {
+!                      if (mch_chdir((char *)dirnow) != 0)
+!                          EMSG(_(e_prev_dir));
+!                      shorten_fnames(TRUE);
+!                  }
+!                  vim_free(dirnow);
+               }
+           }
+           else
+***************
+*** 8985,8994 ****
+       else if (eap->cmdidx == CMD_mksession)
+       {
+           /* successful session write - set this_session var */
+!          char_u      tbuf[MAXPATHL];
+  
+!          if (vim_FullName(fname, tbuf, MAXPATHL, FALSE) == OK)
+!              set_vim_var_string(VV_THIS_SESSION, tbuf, -1);
+       }
+  #endif
+  #ifdef MKSESSION_NL
+--- 8992,9006 ----
+       else if (eap->cmdidx == CMD_mksession)
+       {
+           /* successful session write - set this_session var */
+!          char_u      *tbuf;
+  
+!          tbuf = alloc(MAXPATHL);
+!          if (tbuf != NULL)
+!          {
+!              if (vim_FullName(fname, tbuf, MAXPATHL, FALSE) == OK)
+!                  set_vim_var_string(VV_THIS_SESSION, tbuf, -1);
+!              vim_free(tbuf);
+!          }
+       }
+  #endif
+  #ifdef MKSESSION_NL
+***************
+*** 10677,10683 ****
+      unsigned *flagp;
+  {
+      int              i;
+!     char_u   buf[MAXPATHL];
+      char_u   *s;
+  
+      if (gap->ga_len == 0)
+--- 10689,10695 ----
+      unsigned *flagp;
+  {
+      int              i;
+!     char_u   *buf = NULL;
+      char_u   *s;
+  
+      if (gap->ga_len == 0)
+***************
+*** 10692,10702 ****
+       {
+           if (fullname)
+           {
+!              (void)vim_FullName(s, buf, MAXPATHL, FALSE);
+!              s = buf;
+           }
+           if (fputs(" ", fd) < 0 || ses_put_fname(fd, s, flagp) == FAIL)
+               return FAIL;
+       }
+      }
+      return put_eol(fd);
+--- 10704,10722 ----
+       {
+           if (fullname)
+           {
+!              buf = alloc(MAXPATHL);
+!              if (buf != NULL)
+!              {
+!                  (void)vim_FullName(s, buf, MAXPATHL, FALSE);
+!                  s = buf;
+!              }
+           }
+           if (fputs(" ", fd) < 0 || ses_put_fname(fd, s, flagp) == FAIL)
++          {
++              vim_free(buf);
+               return FAIL;
++          }
++          vim_free(buf);
+       }
+      }
+      return put_eol(fd);
+***************
+*** 10925,10931 ****
+  
+  #if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG) || defined(PROTO)
+  /*
+!  * Make a dialog message in "buff[IOSIZE]".
+   * "format" must contain "%s".
+   */
+      void
+--- 10945,10951 ----
+  
+  #if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG) || defined(PROTO)
+  /*
+!  * Make a dialog message in "buff[DIALOG_MSG_SIZE]".
+   * "format" must contain "%s".
+   */
+      void
+***************
+*** 10936,10942 ****
+  {
+      if (fname == NULL)
+       fname = (char_u *)_("Untitled");
+!     vim_snprintf((char *)buff, IOSIZE, format, fname);
+  }
+  #endif
+  
+--- 10956,10962 ----
+  {
+      if (fname == NULL)
+       fname = (char_u *)_("Untitled");
+!     vim_snprintf((char *)buff, DIALOG_MSG_SIZE, format, fname);
+  }
+  #endif
+  
+*** ../vim-7.3.160/src/fileio.c        2011-02-25 16:52:13.000000000 +0100
+--- src/fileio.c       2011-04-11 18:35:10.000000000 +0200
+***************
+*** 6023,6037 ****
+  shorten_fname1(full_path)
+      char_u   *full_path;
+  {
+!     char_u   dirname[MAXPATHL];
+      char_u   *p = full_path;
+  
+      if (mch_dirname(dirname, MAXPATHL) == OK)
+      {
+       p = shorten_fname(full_path, dirname);
+       if (p == NULL || *p == NUL)
+           p = full_path;
+      }
+      return p;
+  }
+  #endif
+--- 6023,6041 ----
+  shorten_fname1(full_path)
+      char_u   *full_path;
+  {
+!     char_u   *dirname;
+      char_u   *p = full_path;
+  
++     dirname = alloc(MAXPATHL);
++     if (dirname == NULL)
++      return full_path;
+      if (mch_dirname(dirname, MAXPATHL) == OK)
+      {
+       p = shorten_fname(full_path, dirname);
+       if (p == NULL || *p == NUL)
+           p = full_path;
+      }
++     vim_free(dirname);
+      return p;
+  }
+  #endif
+*** ../vim-7.3.160/src/hardcopy.c      2011-04-11 16:56:29.000000000 +0200
+--- src/hardcopy.c     2011-04-11 18:23:38.000000000 +0200
+***************
+*** 1759,1765 ****
+      char     *name;
+      struct prt_ps_resource_S *resource;
+  {
+!     char_u   buffer[MAXPATHL + 1];
+  
+      vim_strncpy(resource->name, (char_u *)name, 63);
+      /* Look for named resource file in runtimepath */
+--- 1759,1770 ----
+      char     *name;
+      struct prt_ps_resource_S *resource;
+  {
+!     char_u   *buffer;
+!     int              retval;
+! 
+!     buffer = alloc(MAXPATHL + 1);
+!     if (buffer == NULL)
+!      return FALSE;
+  
+      vim_strncpy(resource->name, (char_u *)name, 63);
+      /* Look for named resource file in runtimepath */
+***************
+*** 1768,1776 ****
+      vim_strcat(buffer, (char_u *)name, MAXPATHL);
+      vim_strcat(buffer, (char_u *)".ps", MAXPATHL);
+      resource->filename[0] = NUL;
+!     return (do_in_runtimepath(buffer, FALSE, prt_resource_name,
+                                                          resource->filename)
+           && resource->filename[0] != NUL);
+  }
+  
+  /* PS CR and LF characters have platform independent values */
+--- 1773,1783 ----
+      vim_strcat(buffer, (char_u *)name, MAXPATHL);
+      vim_strcat(buffer, (char_u *)".ps", MAXPATHL);
+      resource->filename[0] = NUL;
+!     retval = (do_in_runtimepath(buffer, FALSE, prt_resource_name,
+                                                          resource->filename)
+           && resource->filename[0] != NUL);
++     vim_free(buffer);
++     return retval;
+  }
+  
+  /* PS CR and LF characters have platform independent values */
+***************
+*** 2848,2862 ****
+      double      right;
+      double      top;
+      double      bottom;
+!     struct prt_ps_resource_S res_prolog;
+!     struct prt_ps_resource_S res_encoding;
+      char     buffer[256];
+      char_u      *p_encoding;
+      char_u   *p;
+  #ifdef FEAT_MBYTE
+!     struct prt_ps_resource_S res_cidfont;
+!     struct prt_ps_resource_S res_cmap;
+  #endif
+  
+      /*
+       * PS DSC Header comments - no PS code!
+--- 2855,2887 ----
+      double      right;
+      double      top;
+      double      bottom;
+!     struct prt_ps_resource_S *res_prolog;
+!     struct prt_ps_resource_S *res_encoding;
+      char     buffer[256];
+      char_u      *p_encoding;
+      char_u   *p;
+  #ifdef FEAT_MBYTE
+!     struct prt_ps_resource_S *res_cidfont;
+!     struct prt_ps_resource_S *res_cmap;
+  #endif
++     int              retval = FALSE;
++ 
++     res_prolog = (struct prt_ps_resource_S *)
++                                    alloc(sizeof(struct prt_ps_resource_S));
++     res_encoding = (struct prt_ps_resource_S *)
++                                    alloc(sizeof(struct prt_ps_resource_S));
++ #ifdef FEAT_MBYTE
++     res_cidfont = (struct prt_ps_resource_S *)
++                                    alloc(sizeof(struct prt_ps_resource_S));
++     res_cmap = (struct prt_ps_resource_S *)
++                                    alloc(sizeof(struct prt_ps_resource_S));
++ #endif
++     if (res_prolog == NULL || res_encoding == NULL
++ #ifdef FEAT_MBYTE
++          || res_cidfont == NULL || res_cmap == NULL
++ #endif
++        )
++      goto theend;
+  
+      /*
+       * PS DSC Header comments - no PS code!
+***************
+*** 2932,2958 ****
+  #endif
+  
+      /* Search for external resources VIM supplies */
+!     if (!prt_find_resource("prolog", &res_prolog))
+      {
+       EMSG(_("E456: Can't find PostScript resource file \"prolog.ps\""));
+       return FALSE;
+      }
+!     if (!prt_open_resource(&res_prolog))
+       return FALSE;
+!     if (!prt_check_resource(&res_prolog, PRT_PROLOG_VERSION))
+       return FALSE;
+  #ifdef FEAT_MBYTE
+      if (prt_out_mbyte)
+      {
+       /* Look for required version of multi-byte printing procset */
+!      if (!prt_find_resource("cidfont", &res_cidfont))
+       {
+           EMSG(_("E456: Can't find PostScript resource file \"cidfont.ps\""));
+           return FALSE;
+       }
+!      if (!prt_open_resource(&res_cidfont))
+           return FALSE;
+!      if (!prt_check_resource(&res_cidfont, PRT_CID_PROLOG_VERSION))
+           return FALSE;
+      }
+  #endif
+--- 2957,2983 ----
+  #endif
+  
+      /* Search for external resources VIM supplies */
+!     if (!prt_find_resource("prolog", res_prolog))
+      {
+       EMSG(_("E456: Can't find PostScript resource file \"prolog.ps\""));
+       return FALSE;
+      }
+!     if (!prt_open_resource(res_prolog))
+       return FALSE;
+!     if (!prt_check_resource(res_prolog, PRT_PROLOG_VERSION))
+       return FALSE;
+  #ifdef FEAT_MBYTE
+      if (prt_out_mbyte)
+      {
+       /* Look for required version of multi-byte printing procset */
+!      if (!prt_find_resource("cidfont", res_cidfont))
+       {
+           EMSG(_("E456: Can't find PostScript resource file \"cidfont.ps\""));
+           return FALSE;
+       }
+!      if (!prt_open_resource(res_cidfont))
+           return FALSE;
+!      if (!prt_check_resource(res_cidfont, PRT_CID_PROLOG_VERSION))
+           return FALSE;
+      }
+  #endif
+***************
+*** 2968,2974 ****
+  #endif
+       p_encoding = enc_skip(p_penc);
+       if (*p_encoding == NUL
+!              || !prt_find_resource((char *)p_encoding, &res_encoding))
+       {
+           /* 'printencoding' not set or not supported - find alternate */
+  #ifdef FEAT_MBYTE
+--- 2993,2999 ----
+  #endif
+       p_encoding = enc_skip(p_penc);
+       if (*p_encoding == NUL
+!              || !prt_find_resource((char *)p_encoding, res_encoding))
+       {
+           /* 'printencoding' not set or not supported - find alternate */
+  #ifdef FEAT_MBYTE
+***************
+*** 2977,2989 ****
+           p_encoding = enc_skip(p_enc);
+           props = enc_canon_props(p_encoding);
+           if (!(props & ENC_8BIT)
+!                  || !prt_find_resource((char *)p_encoding, &res_encoding))
+               /* 8-bit 'encoding' is not supported */
+  #endif
+               {
+               /* Use latin1 as default printing encoding */
+               p_encoding = (char_u *)"latin1";
+!              if (!prt_find_resource((char *)p_encoding, &res_encoding))
+               {
+                   EMSG2(_("E456: Can't find PostScript resource file \"%s.ps\""),
+                           p_encoding);
+--- 3002,3014 ----
+           p_encoding = enc_skip(p_enc);
+           props = enc_canon_props(p_encoding);
+           if (!(props & ENC_8BIT)
+!                  || !prt_find_resource((char *)p_encoding, res_encoding))
+               /* 8-bit 'encoding' is not supported */
+  #endif
+               {
+               /* Use latin1 as default printing encoding */
+               p_encoding = (char_u *)"latin1";
+!              if (!prt_find_resource((char *)p_encoding, res_encoding))
+               {
+                   EMSG2(_("E456: Can't find PostScript resource file \"%s.ps\""),
+                           p_encoding);
+***************
+*** 2991,2997 ****
+               }
+           }
+       }
+!      if (!prt_open_resource(&res_encoding))
+           return FALSE;
+       /* For the moment there are no checks on encoding resource files to
+        * perform */
+--- 3016,3022 ----
+               }
+           }
+       }
+!      if (!prt_open_resource(res_encoding))
+           return FALSE;
+       /* For the moment there are no checks on encoding resource files to
+        * perform */
+***************
+*** 3005,3017 ****
+       if (prt_use_courier)
+       {
+           /* Include ASCII range encoding vector */
+!          if (!prt_find_resource(prt_ascii_encoding, &res_encoding))
+           {
+               EMSG2(_("E456: Can't find PostScript resource file \"%s.ps\""),
+                                                         prt_ascii_encoding);
+               return FALSE;
+           }
+!          if (!prt_open_resource(&res_encoding))
+               return FALSE;
+           /* For the moment there are no checks on encoding resource files to
+            * perform */
+--- 3030,3042 ----
+       if (prt_use_courier)
+       {
+           /* Include ASCII range encoding vector */
+!          if (!prt_find_resource(prt_ascii_encoding, res_encoding))
+           {
+               EMSG2(_("E456: Can't find PostScript resource file \"%s.ps\""),
+                                                         prt_ascii_encoding);
+               return FALSE;
+           }
+!          if (!prt_open_resource(res_encoding))
+               return FALSE;
+           /* For the moment there are no checks on encoding resource files to
+            * perform */
+***************
+*** 3034,3077 ****
+      if (prt_out_mbyte && prt_custom_cmap)
+      {
+       /* Find user supplied CMap */
+!      if (!prt_find_resource(prt_cmap, &res_cmap))
+       {
+           EMSG2(_("E456: Can't find PostScript resource file \"%s.ps\""),
+                                                                   prt_cmap);
+           return FALSE;
+       }
+!      if (!prt_open_resource(&res_cmap))
+           return FALSE;
+      }
+  #endif
+  
+      /* List resources supplied */
+!     STRCPY(buffer, res_prolog.title);
+      STRCAT(buffer, " ");
+!     STRCAT(buffer, res_prolog.version);
+      prt_dsc_resources("DocumentSuppliedResources", "procset", buffer);
+  #ifdef FEAT_MBYTE
+      if (prt_out_mbyte)
+      {
+!      STRCPY(buffer, res_cidfont.title);
+       STRCAT(buffer, " ");
+!      STRCAT(buffer, res_cidfont.version);
+       prt_dsc_resources(NULL, "procset", buffer);
+  
+       if (prt_custom_cmap)
+       {
+!          STRCPY(buffer, res_cmap.title);
+           STRCAT(buffer, " ");
+!          STRCAT(buffer, res_cmap.version);
+           prt_dsc_resources(NULL, "cmap", buffer);
+       }
+      }
+      if (!prt_out_mbyte || prt_use_courier)
+  #endif
+      {
+!      STRCPY(buffer, res_encoding.title);
+       STRCAT(buffer, " ");
+!      STRCAT(buffer, res_encoding.version);
+       prt_dsc_resources(NULL, "encoding", buffer);
+      }
+      prt_dsc_requirements(prt_duplex, prt_tumble, prt_collate,
+--- 3059,3102 ----
+      if (prt_out_mbyte && prt_custom_cmap)
+      {
+       /* Find user supplied CMap */
+!      if (!prt_find_resource(prt_cmap, res_cmap))
+       {
+           EMSG2(_("E456: Can't find PostScript resource file \"%s.ps\""),
+                                                                   prt_cmap);
+           return FALSE;
+       }
+!      if (!prt_open_resource(res_cmap))
+           return FALSE;
+      }
+  #endif
+  
+      /* List resources supplied */
+!     STRCPY(buffer, res_prolog->title);
+      STRCAT(buffer, " ");
+!     STRCAT(buffer, res_prolog->version);
+      prt_dsc_resources("DocumentSuppliedResources", "procset", buffer);
+  #ifdef FEAT_MBYTE
+      if (prt_out_mbyte)
+      {
+!      STRCPY(buffer, res_cidfont->title);
+       STRCAT(buffer, " ");
+!      STRCAT(buffer, res_cidfont->version);
+       prt_dsc_resources(NULL, "procset", buffer);
+  
+       if (prt_custom_cmap)
+       {
+!          STRCPY(buffer, res_cmap->title);
+           STRCAT(buffer, " ");
+!          STRCAT(buffer, res_cmap->version);
+           prt_dsc_resources(NULL, "cmap", buffer);
+       }
+      }
+      if (!prt_out_mbyte || prt_use_courier)
+  #endif
+      {
+!      STRCPY(buffer, res_encoding->title);
+       STRCAT(buffer, " ");
+!      STRCAT(buffer, res_encoding->version);
+       prt_dsc_resources(NULL, "encoding", buffer);
+      }
+      prt_dsc_requirements(prt_duplex, prt_tumble, prt_collate,
+***************
+*** 3114,3128 ****
+      prt_dsc_noarg("BeginProlog");
+  
+      /* Add required procsets - NOTE: order is important! */
+!     if (!prt_add_resource(&res_prolog))
+       return FALSE;
+  #ifdef FEAT_MBYTE
+      if (prt_out_mbyte)
+      {
+       /* Add CID font procset, and any user supplied CMap */
+!      if (!prt_add_resource(&res_cidfont))
+           return FALSE;
+!      if (prt_custom_cmap && !prt_add_resource(&res_cmap))
+           return FALSE;
+      }
+  #endif
+--- 3139,3153 ----
+      prt_dsc_noarg("BeginProlog");
+  
+      /* Add required procsets - NOTE: order is important! */
+!     if (!prt_add_resource(res_prolog))
+       return FALSE;
+  #ifdef FEAT_MBYTE
+      if (prt_out_mbyte)
+      {
+       /* Add CID font procset, and any user supplied CMap */
+!      if (!prt_add_resource(res_cidfont))
+           return FALSE;
+!      if (prt_custom_cmap && !prt_add_resource(res_cmap))
+           return FALSE;
+      }
+  #endif
+***************
+*** 3132,3138 ****
+  #endif
+       /* There will be only one Roman font encoding to be included in the PS
+        * file. */
+!      if (!prt_add_resource(&res_encoding))
+           return FALSE;
+  
+      prt_dsc_noarg("EndProlog");
+--- 3157,3163 ----
+  #endif
+       /* There will be only one Roman font encoding to be included in the PS
+        * file. */
+!      if (!prt_add_resource(res_encoding))
+           return FALSE;
+  
+      prt_dsc_noarg("EndProlog");
+***************
+*** 3248,3254 ****
+      prt_dsc_noarg("EndSetup");
+  
+      /* Fail if any problems writing out to the PS file */
+!     return !prt_file_error;
+  }
+  
+      void
+--- 3273,3289 ----
+      prt_dsc_noarg("EndSetup");
+  
+      /* Fail if any problems writing out to the PS file */
+!     retval = !prt_file_error;
+! 
+! theend:
+!     vim_free(res_prolog);
+!     vim_free(res_encoding);
+! #ifdef FEAT_MBYTE
+!     vim_free(res_cidfont);
+!     vim_free(res_cmap);
+! #endif
+! 
+!     return retval;
+  }
+  
+      void
+*** ../vim-7.3.160/src/quickfix.c      2010-12-02 15:33:10.000000000 +0100
+--- src/quickfix.c     2011-04-11 17:54:07.000000000 +0200
+***************
+*** 3049,3056 ****
+      int              flags = 0;
+      colnr_T  col;
+      long     tomatch;
+!     char_u   dirname_start[MAXPATHL];
+!     char_u   dirname_now[MAXPATHL];
+      char_u   *target_dir = NULL;
+  #ifdef FEAT_AUTOCMD
+      char_u   *au_name =  NULL;
+--- 3049,3056 ----
+      int              flags = 0;
+      colnr_T  col;
+      long     tomatch;
+!     char_u   *dirname_start = NULL;
+!     char_u   *dirname_now = NULL;
+      char_u   *target_dir = NULL;
+  #ifdef FEAT_AUTOCMD
+      char_u   *au_name =  NULL;
+***************
+*** 3128,3133 ****
+--- 3128,3138 ----
+       goto theend;
+      }
+  
++     dirname_start = alloc(MAXPATHL);
++     dirname_now = alloc(MAXPATHL);
++     if (dirname_start == NULL || dirname_now == NULL)
++      goto theend;
++ 
+      /* Remember the current directory, because a BufRead autocommand that does
+       * ":lcd %:p:h" changes the meaning of short path names. */
+      mch_dirname(dirname_start, MAXPATHL);
+***************
+*** 3364,3369 ****
+--- 3369,3376 ----
+      }
+  
+  theend:
++     vim_free(dirname_now);
++     vim_free(dirname_start);
+      vim_free(target_dir);
+      vim_free(regmatch.regprog);
+  }
+*** ../vim-7.3.160/src/main.c  2011-03-22 18:10:34.000000000 +0100
+--- src/main.c 2011-04-11 18:06:06.000000000 +0200
+***************
+*** 3814,3820 ****
+      int              i;
+      char_u   *inicmd = NULL;
+      char_u   *p;
+!     char_u   cwd[MAXPATHL];
+  
+      if (filec > 0 && filev[0][0] == '+')
+      {
+--- 3814,3820 ----
+      int              i;
+      char_u   *inicmd = NULL;
+      char_u   *p;
+!     char_u   *cwd;
+  
+      if (filec > 0 && filev[0][0] == '+')
+      {
+***************
+*** 3827,3841 ****
+       mainerr_arg_missing((char_u *)filev[-1]);
+  
+      /* Temporarily cd to the current directory to handle relative file names. */
+      if (mch_dirname(cwd, MAXPATHL) != OK)
+       return NULL;
+!     if ((p = vim_strsave_escaped_ext(cwd,
+  #ifdef BACKSLASH_IN_FILENAME
+                   "",  /* rem_backslash() will tell what chars to escape */
+  #else
+                   PATH_ESC_CHARS,
+  #endif
+!                  '\\', TRUE)) == NULL)
+       return NULL;
+      ga_init2(&ga, 1, 100);
+      ga_concat(&ga, (char_u *)"<C-\\><C-N>:cd ");
+--- 3827,3849 ----
+       mainerr_arg_missing((char_u *)filev[-1]);
+  
+      /* Temporarily cd to the current directory to handle relative file names. */
++     cwd = alloc(MAXPATHL);
++     if (cwd == NULL)
++      return NULL;
+      if (mch_dirname(cwd, MAXPATHL) != OK)
++     {
++      vim_free(cwd);
+       return NULL;
+!     }
+!     p = vim_strsave_escaped_ext(cwd,
+  #ifdef BACKSLASH_IN_FILENAME
+                   "",  /* rem_backslash() will tell what chars to escape */
+  #else
+                   PATH_ESC_CHARS,
+  #endif
+!                  '\\', TRUE);
+!     vim_free(cwd);
+!     if (p == NULL)
+       return NULL;
+      ga_init2(&ga, 1, 100);
+      ga_concat(&ga, (char_u *)"<C-\\><C-N>:cd ");
+*** ../vim-7.3.160/src/netbeans.c      2011-04-11 16:56:29.000000000 +0200
+--- src/netbeans.c     2011-04-11 18:27:08.000000000 +0200
+***************
+*** 2891,2897 ****
+      char_u   *text;
+      linenr_T lnum;
+      int              col;
+!     char     buf[MAXPATHL * 2 + 25];
+      char_u   *p;
+  
+      /* Don't do anything when 'ballooneval' is off, messages scrolled the
+--- 2891,2897 ----
+      char_u   *text;
+      linenr_T lnum;
+      int              col;
+!     char     *buf;
+      char_u   *p;
+  
+      /* Don't do anything when 'ballooneval' is off, messages scrolled the
+***************
+*** 2905,2919 ****
+        * length. */
+       if (text != NULL && text[0] != NUL && STRLEN(text) < MAXPATHL)
+       {
+!          p = nb_quote(text);
+!          if (p != NULL)
+           {
+!              vim_snprintf(buf, sizeof(buf),
+!                                     "0:balloonText=%d \"%s\"\n", r_cmdno, p);
+!              vim_free(p);
+           }
+-          nbdebug(("EVT: %s", buf));
+-          nb_send(buf, "netbeans_beval_cb");
+       }
+       vim_free(text);
+      }
+--- 2905,2924 ----
+        * length. */
+       if (text != NULL && text[0] != NUL && STRLEN(text) < MAXPATHL)
+       {
+!          buf = (char *)alloc(MAXPATHL * 2 + 25);
+!          if (buf != NULL)
+           {
+!              p = nb_quote(text);
+!              if (p != NULL)
+!              {
+!                  vim_snprintf(buf, MAXPATHL * 2 + 25,
+!                                   "0:balloonText=%d \"%s\"\n", r_cmdno, p);
+!                  vim_free(p);
+!              }
+!              nbdebug(("EVT: %s", buf));
+!              nb_send(buf, "netbeans_beval_cb");
+!              vim_free(buf);
+           }
+       }
+       vim_free(text);
+      }
+*** ../vim-7.3.160/src/spell.c 2011-04-11 16:56:29.000000000 +0200
+--- src/spell.c        2011-04-11 18:00:49.000000000 +0200
+***************
+*** 8590,8596 ****
+      spellinfo_T      *spin;
+      char_u   *wfname;
+  {
+!     char_u   fname[MAXPATHL];
+      int              len;
+      slang_T  *slang;
+      int              free_slang = FALSE;
+--- 8590,8596 ----
+      spellinfo_T      *spin;
+      char_u   *wfname;
+  {
+!     char_u   *fname = NULL;
+      int              len;
+      slang_T  *slang;
+      int              free_slang = FALSE;
+***************
+*** 8654,8659 ****
+--- 8654,8662 ----
+       * Write the .sug file.
+       * Make the file name by changing ".spl" to ".sug".
+       */
++     fname = alloc(MAXPATHL);
++     if (fname == NULL)
++      goto theend;
+      vim_strncpy(fname, wfname, MAXPATHL - 1);
+      len = (int)STRLEN(fname);
+      fname[len - 2] = 'u';
+***************
+*** 8661,8666 ****
+--- 8664,8670 ----
+      sug_write(spin, fname);
+  
+  theend:
++     vim_free(fname);
+      if (free_slang)
+       slang_free(slang);
+      free_blocks(spin->si_blocks);
+***************
+*** 9106,9113 ****
+      int              overwrite;          /* overwrite existing output file */
+      int              added_word;         /* invoked through "zg" */
+  {
+!     char_u   fname[MAXPATHL];
+!     char_u   wfname[MAXPATHL];
+      char_u   **innames;
+      int              incount;
+      afffile_T        *(afile[8]);
+--- 9110,9117 ----
+      int              overwrite;          /* overwrite existing output file */
+      int              added_word;         /* invoked through "zg" */
+  {
+!     char_u   *fname = NULL;
+!     char_u   *wfname;
+      char_u   **innames;
+      int              incount;
+      afffile_T        *(afile[8]);
+***************
+*** 9135,9140 ****
+--- 9139,9148 ----
+      innames = &fnames[1];
+      incount = fcount - 1;
+  
++     wfname = alloc(MAXPATHL);
++     if (wfname == NULL)
++      return;
++ 
+      if (fcount >= 1)
+      {
+       len = (int)STRLEN(fnames[0]);
+***************
+*** 9144,9167 ****
+            * "path/en.latin1.add.spl". */
+           innames = &fnames[0];
+           incount = 1;
+!          vim_snprintf((char *)wfname, sizeof(wfname), "%s.spl", fnames[0]);
+       }
+       else if (fcount == 1)
+       {
+           /* For ":mkspell path/vim" output file is "path/vim.latin1.spl". */
+           innames = &fnames[0];
+           incount = 1;
+!          vim_snprintf((char *)wfname, sizeof(wfname), SPL_FNAME_TMPL,
+                 fnames[0], spin.si_ascii ? (char_u *)"ascii" : spell_enc());
+       }
+       else if (len > 4 && STRCMP(fnames[0] + len - 4, ".spl") == 0)
+       {
+           /* Name ends in ".spl", use as the file name. */
+!          vim_strncpy(wfname, fnames[0], sizeof(wfname) - 1);
+       }
+       else
+           /* Name should be language, make the file name from it. */
+!          vim_snprintf((char *)wfname, sizeof(wfname), SPL_FNAME_TMPL,
+                 fnames[0], spin.si_ascii ? (char_u *)"ascii" : spell_enc());
+  
+       /* Check for .ascii.spl. */
+--- 9152,9175 ----
+            * "path/en.latin1.add.spl". */
+           innames = &fnames[0];
+           incount = 1;
+!          vim_snprintf((char *)wfname, MAXPATHL, "%s.spl", fnames[0]);
+       }
+       else if (fcount == 1)
+       {
+           /* For ":mkspell path/vim" output file is "path/vim.latin1.spl". */
+           innames = &fnames[0];
+           incount = 1;
+!          vim_snprintf((char *)wfname, MAXPATHL, SPL_FNAME_TMPL,
+                 fnames[0], spin.si_ascii ? (char_u *)"ascii" : spell_enc());
+       }
+       else if (len > 4 && STRCMP(fnames[0] + len - 4, ".spl") == 0)
+       {
+           /* Name ends in ".spl", use as the file name. */
+!          vim_strncpy(wfname, fnames[0], MAXPATHL - 1);
+       }
+       else
+           /* Name should be language, make the file name from it. */
+!          vim_snprintf((char *)wfname, MAXPATHL, SPL_FNAME_TMPL,
+                 fnames[0], spin.si_ascii ? (char_u *)"ascii" : spell_enc());
+  
+       /* Check for .ascii.spl. */
+***************
+*** 9186,9199 ****
+       if (!overwrite && mch_stat((char *)wfname, &st) >= 0)
+       {
+           EMSG(_(e_exists));
+!          return;
+       }
+       if (mch_isdir(wfname))
+       {
+           EMSG2(_(e_isadir2), wfname);
+!          return;
+       }
+  
+       /*
+        * Init the aff and dic pointers.
+        * Get the region names if there are more than 2 arguments.
+--- 9194,9211 ----
+       if (!overwrite && mch_stat((char *)wfname, &st) >= 0)
+       {
+           EMSG(_(e_exists));
+!          goto theend;
+       }
+       if (mch_isdir(wfname))
+       {
+           EMSG2(_(e_isadir2), wfname);
+!          goto theend;
+       }
+  
++      fname = alloc(MAXPATHL);
++      if (fname == NULL)
++          goto theend;
++ 
+       /*
+        * Init the aff and dic pointers.
+        * Get the region names if there are more than 2 arguments.
+***************
+*** 9209,9215 ****
+                                               || innames[i][len - 3] != '_')
+               {
+                   EMSG2(_("E755: Invalid region in %s"), innames[i]);
+!                  return;
+               }
+               spin.si_region_name[i * 2] = TOLOWER_ASC(innames[i][len - 2]);
+               spin.si_region_name[i * 2 + 1] =
+--- 9221,9227 ----
+                                               || innames[i][len - 3] != '_')
+               {
+                   EMSG2(_("E755: Invalid region in %s"), innames[i]);
+!                  goto theend;
+               }
+               spin.si_region_name[i * 2] = TOLOWER_ASC(innames[i][len - 2]);
+               spin.si_region_name[i * 2 + 1] =
+***************
+*** 9226,9232 ****
+               || spin.si_prefroot == NULL)
+       {
+           free_blocks(spin.si_blocks);
+!          return;
+       }
+  
+       /* When not producing a .add.spl file clear the character table when
+--- 9238,9244 ----
+               || spin.si_prefroot == NULL)
+       {
+           free_blocks(spin.si_blocks);
+!          goto theend;
+       }
+  
+       /* When not producing a .add.spl file clear the character table when
+***************
+*** 9247,9253 ****
+           spin.si_conv.vc_type = CONV_NONE;
+           spin.si_region = 1 << i;
+  
+!          vim_snprintf((char *)fname, sizeof(fname), "%s.aff", innames[i]);
+           if (mch_stat((char *)fname, &st) >= 0)
+           {
+               /* Read the .aff file.  Will init "spin->si_conv" based on the
+--- 9259,9265 ----
+           spin.si_conv.vc_type = CONV_NONE;
+           spin.si_region = 1 << i;
+  
+!          vim_snprintf((char *)fname, MAXPATHL, "%s.aff", innames[i]);
+           if (mch_stat((char *)fname, &st) >= 0)
+           {
+               /* Read the .aff file.  Will init "spin->si_conv" based on the
+***************
+*** 9258,9264 ****
+               else
+               {
+                   /* Read the .dic file and store the words in the trees. */
+!                  vim_snprintf((char *)fname, sizeof(fname), "%s.dic",
+                                                                 innames[i]);
+                   if (spell_read_dic(&spin, fname, afile[i]) == FAIL)
+                       error = TRUE;
+--- 9270,9276 ----
+               else
+               {
+                   /* Read the .dic file and store the words in the trees. */
+!                  vim_snprintf((char *)fname, MAXPATHL, "%s.dic",
+                                                                 innames[i]);
+                   if (spell_read_dic(&spin, fname, afile[i]) == FAIL)
+                       error = TRUE;
+***************
+*** 9340,9345 ****
+--- 9352,9361 ----
+           spell_make_sugfile(&spin, wfname);
+  
+      }
++ 
++ theend:
++     vim_free(fname);
++     vim_free(wfname);
+  }
+  
+  /*
+***************
+*** 9392,9398 ****
+      buf_T    *buf = NULL;
+      int              new_spf = FALSE;
+      char_u   *fname;
+!     char_u   fnamebuf[MAXPATHL];
+      char_u   line[MAXWLEN * 2];
+      long     fpos, fpos_next = 0;
+      int              i;
+--- 9408,9414 ----
+      buf_T    *buf = NULL;
+      int              new_spf = FALSE;
+      char_u   *fname;
+!     char_u   *fnamebuf = NULL;
+      char_u   line[MAXWLEN * 2];
+      long     fpos, fpos_next = 0;
+      int              i;
+***************
+*** 9422,9427 ****
+--- 9438,9446 ----
+           EMSG2(_(e_notset), "spellfile");
+           return;
+       }
++      fnamebuf = alloc(MAXPATHL);
++      if (fnamebuf == NULL)
++          return;
+  
+       for (spf = curwin->w_s->b_p_spf, i = 1; *spf != NUL; ++i)
+       {
+***************
+*** 9431,9436 ****
+--- 9450,9456 ----
+           if (*spf == NUL)
+           {
+               EMSGN(_("E765: 'spellfile' does not have %ld entries"), idx);
++              vim_free(fnamebuf);
+               return;
+           }
+       }
+***************
+*** 9442,9447 ****
+--- 9462,9468 ----
+       if (buf != NULL && bufIsChanged(buf))
+       {
+           EMSG(_(e_bufloaded));
++          vim_free(fnamebuf);
+           return;
+       }
+  
+***************
+*** 9536,9541 ****
+--- 9557,9563 ----
+  
+       redraw_all_later(SOME_VALID);
+      }
++     vim_free(fnamebuf);
+  }
+  
+  /*
+***************
+*** 9544,9550 ****
+      static void
+  init_spellfile()
+  {
+!     char_u   buf[MAXPATHL];
+      int              l;
+      char_u   *fname;
+      char_u   *rtp;
+--- 9566,9572 ----
+      static void
+  init_spellfile()
+  {
+!     char_u   *buf;
+      int              l;
+      char_u   *fname;
+      char_u   *rtp;
+***************
+*** 9554,9559 ****
+--- 9576,9585 ----
+  
+      if (*curwin->w_s->b_p_spl != NUL && curwin->w_s->b_langp.ga_len > 0)
+      {
++      buf = alloc(MAXPATHL);
++      if (buf == NULL)
++          return;
++ 
+       /* Find the end of the language name.  Exclude the region.  If there
+        * is a path separator remember the start of the tail. */
+       for (lend = curwin->w_s->b_p_spl; *lend != NUL
+***************
+*** 9597,9603 ****
+                                "/%.*s", (int)(lend - lstart), lstart);
+               }
+               l = (int)STRLEN(buf);
+!              fname = LANGP_ENTRY(curwin->w_s->b_langp, 0)->lp_slang->sl_fname;
+               vim_snprintf((char *)buf + l, MAXPATHL - l, ".%s.add",
+                       fname != NULL
+                         && strstr((char *)gettail(fname), ".ascii.") != NULL
+--- 9623,9630 ----
+                                "/%.*s", (int)(lend - lstart), lstart);
+               }
+               l = (int)STRLEN(buf);
+!              fname = LANGP_ENTRY(curwin->w_s->b_langp, 0)
+!                                                       ->lp_slang->sl_fname;
+               vim_snprintf((char *)buf + l, MAXPATHL - l, ".%s.add",
+                       fname != NULL
+                         && strstr((char *)gettail(fname), ".ascii.") != NULL
+***************
+*** 9607,9612 ****
+--- 9634,9641 ----
+           }
+           aspath = FALSE;
+       }
++ 
++      vim_free(buf);
+      }
+  }
+  
+*** ../vim-7.3.160/src/tag.c   2011-04-11 16:56:29.000000000 +0200
+--- src/tag.c  2011-04-11 20:54:36.000000000 +0200
+***************
+*** 775,791 ****
+           {
+               list_T  *list;
+               char_u  tag_name[128 + 1];
+!              char_u  fname[MAXPATHL + 1];
+!              char_u  cmd[CMDBUFFSIZE + 1];
+  
+               /*
+                * Add the matching tags to the location list for the current
+                * window.
+                */
+  
+               list = list_alloc();
+!              if (list == NULL)
+                   goto end_do_tag;
+  
+               for (i = 0; i < num_matches; ++i)
+               {
+--- 775,799 ----
+           {
+               list_T  *list;
+               char_u  tag_name[128 + 1];
+!              char_u  *fname;
+!              char_u  *cmd;
+  
+               /*
+                * Add the matching tags to the location list for the current
+                * window.
+                */
+  
++              fname = alloc(MAXPATHL + 1);
++              cmd = alloc(CMDBUFFSIZE + 1);
+               list = list_alloc();
+!              if (list == NULL || fname == NULL || cmd == NULL)
+!              {
+!                  vim_free(cmd);
+!                  vim_free(fname);
+!                  if (list != NULL)
+!                      list_free(list, TRUE);
+                   goto end_do_tag;
++              }
+  
+               for (i = 0; i < num_matches; ++i)
+               {
+***************
+*** 911,916 ****
+--- 919,926 ----
+               set_errorlist(curwin, list, ' ', IObuff);
+  
+               list_free(list, TRUE);
++              vim_free(fname);
++              vim_free(cmd);
+  
+               cur_match = 0;          /* Jump to the first tag */
+           }
+***************
+*** 3777,3784 ****
+      char_u  *start;          /* start of the value */
+      char_u  *end;            /* after the value; can be NULL */
+  {
+!     char_u   buf[MAXPATHL];
+      int              len = 0;
+  
+      /* check that the field name doesn't exist yet */
+      if (dict_find(dict, (char_u *)field_name, -1) != NULL)
+--- 3787,3795 ----
+      char_u  *start;          /* start of the value */
+      char_u  *end;            /* after the value; can be NULL */
+  {
+!     char_u   *buf;
+      int              len = 0;
++     int              retval;
+  
+      /* check that the field name doesn't exist yet */
+      if (dict_find(dict, (char_u *)field_name, -1) != NULL)
+***************
+*** 3791,3796 ****
+--- 3802,3810 ----
+       }
+       return FAIL;
+      }
++     buf = alloc(MAXPATHL);
++     if (buf == NULL)
++      return FAIL;
+      if (start != NULL)
+      {
+       if (end == NULL)
+***************
+*** 3800,3811 ****
+               --end;
+       }
+       len = (int)(end - start);
+!      if (len > (int)sizeof(buf) - 1)
+!          len = sizeof(buf) - 1;
+       vim_strncpy(buf, start, len);
+      }
+      buf[len] = NUL;
+!     return dict_add_nr_str(dict, field_name, 0L, buf);
+  }
+  
+  /*
+--- 3814,3827 ----
+               --end;
+       }
+       len = (int)(end - start);
+!      if (len > MAXPATHL - 1)
+!          len = MAXPATHL - 1;
+       vim_strncpy(buf, start, len);
+      }
+      buf[len] = NUL;
+!     retval = dict_add_nr_str(dict, field_name, 0L, buf);
+!     vim_free(buf);
+!     return retval;
+  }
+  
+  /*
+*** ../vim-7.3.160/src/vim.h   2010-12-30 12:30:26.000000000 +0100
+--- src/vim.h  2011-04-11 20:50:54.000000000 +0200
+***************
+*** 1435,1440 ****
+--- 1435,1442 ----
+  
+  #define IOSIZE          (1024+1)     /* file i/o and sprintf buffer size */
+  
++ #define DIALOG_MSG_SIZE 1000 /* buffer size for dialog_msg() */
++ 
+  #ifdef FEAT_MBYTE
+  # define MSG_BUF_LEN 480     /* length of buffer for small messages */
+  # define MSG_BUF_CLEN  (MSG_BUF_LEN / 6)    /* cell length (worst case: utf-8
+*** ../vim-7.3.160/src/xxd/xxd.c       2011-04-02 14:44:50.000000000 +0200
+--- src/xxd/xxd.c      2011-04-11 16:40:48.000000000 +0200
+***************
+*** 476,482 ****
+    int octspergrp = -1;       /* number of octets grouped in output */
+    int grplen;                /* total chars per octet group */
+    long length = -1, n = 0, seekoff = 0;
+!   char l[LLEN+1];
+    char *pp;
+  
+  #ifdef AMIGA
+--- 476,482 ----
+    int octspergrp = -1;       /* number of octets grouped in output */
+    int grplen;                /* total chars per octet group */
+    long length = -1, n = 0, seekoff = 0;
+!   static char l[LLEN+1];  /* static because it may be too big for stack */
+    char *pp;
+  
+  #ifdef AMIGA
+*** ../vim-7.3.160/src/version.c       2011-04-11 16:56:29.000000000 +0200
+--- src/version.c      2011-04-11 21:15:33.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     161,
+  /**/
+
+-- 
+The process for understanding customers primarily involves sitting around with
+other marketing people and talking about what you would to if you were dumb
+enough to be a customer.
+                               (Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.162.patch0 b/vim/patches/vim-7.3.162.patch0
new file mode 100644 (file)
index 0000000..3f0173a
--- /dev/null
@@ -0,0 +1,83 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.162
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.162
+Problem:    No error message when assigning to a list with an index out of
+           range. (Yukihiro Nakadaira)
+Solution:   Add the error message.
+Files:     src/eval.c
+
+
+*** ../vim-7.3.161/src/eval.c  2011-04-11 21:35:03.000000000 +0200
+--- src/eval.c 2011-04-21 13:40:38.000000000 +0200
+***************
+*** 2794,2799 ****
+--- 2794,2801 ----
+           {
+               if (lp->ll_range && !lp->ll_empty2)
+                   clear_tv(&var2);
++              if (!quiet)
++                  EMSGN(_(e_listidx), lp->ll_n1);
+               return NULL;
+           }
+  
+***************
+*** 2811,2817 ****
+--- 2813,2823 ----
+               {
+                   ni = list_find(lp->ll_list, lp->ll_n2);
+                   if (ni == NULL)
++                  {
++                      if (!quiet)
++                          EMSGN(_(e_listidx), lp->ll_n2);
+                       return NULL;
++                  }
+                   lp->ll_n2 = list_idx_of_item(lp->ll_list, ni);
+               }
+  
+***************
+*** 2819,2825 ****
+--- 2825,2835 ----
+               if (lp->ll_n1 < 0)
+                   lp->ll_n1 = list_idx_of_item(lp->ll_list, lp->ll_li);
+               if (lp->ll_n2 < lp->ll_n1)
++              {
++                  if (!quiet)
++                      EMSGN(_(e_listidx), lp->ll_n2);
+                   return NULL;
++              }
+           }
+  
+           lp->ll_tv = &lp->ll_li->li_tv;
+*** ../vim-7.3.161/src/version.c       2011-04-11 21:35:03.000000000 +0200
+--- src/version.c      2011-04-21 13:44:46.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     162,
+  /**/
+
+-- 
+Far back in the mists of ancient time, in the great and glorious days of the
+former Galactic Empire, life was wild, rich and largely tax free.
+Mighty starships plied their way between exotic suns, seeking adventure and
+reward among the furthest reaches of Galactic space.  In those days, spirits
+were brave, the stakes were high, men were real men, women were real women
+and small furry creatures from Alpha Centauri were real small furry creatures
+from Alpha Centauri.  And all dared to brave unknown terrors, to do mighty
+deeds, to boldly split infinitives that no man had split before -- and thus
+was the Empire forged.
+               -- Douglas Adams, "The Hitchhiker's Guide to the Galaxy"
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.163.patch0 b/vim/patches/vim-7.3.163.patch0
new file mode 100644 (file)
index 0000000..b5f1cb4
--- /dev/null
@@ -0,0 +1,59 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.163
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.163
+Problem:    For the default of 'shellpipe' "mksh" and "pdksh" are not
+           recognized.
+Solution:   Recognize these shell names.
+Files:     src/option.c
+
+
+*** ../vim-7.3.162/src/option.c        2011-03-22 14:35:01.000000000 +0100
+--- src/option.c       2011-04-15 20:49:54.000000000 +0200
+***************
+*** 3846,3851 ****
+--- 3846,3853 ----
+  # ifndef OS2 /* Always use bourne shell style redirection if we reach this */
+           if (       fnamecmp(p, "sh") == 0
+                   || fnamecmp(p, "ksh") == 0
++                  || fnamecmp(p, "mksh") == 0
++                  || fnamecmp(p, "pdksh") == 0
+                   || fnamecmp(p, "zsh") == 0
+                   || fnamecmp(p, "zsh-beta") == 0
+                   || fnamecmp(p, "bash") == 0
+***************
+*** 3853,3858 ****
+--- 3855,3862 ----
+                   || fnamecmp(p, "cmd") == 0
+                   || fnamecmp(p, "sh.exe") == 0
+                   || fnamecmp(p, "ksh.exe") == 0
++                  || fnamecmp(p, "mksh.exe") == 0
++                  || fnamecmp(p, "pdksh.exe") == 0
+                   || fnamecmp(p, "zsh.exe") == 0
+                   || fnamecmp(p, "zsh-beta.exe") == 0
+                   || fnamecmp(p, "bash.exe") == 0
+*** ../vim-7.3.162/src/version.c       2011-04-21 14:27:21.000000000 +0200
+--- src/version.c      2011-04-28 12:56:03.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     163,
+  /**/
+
+-- 
+If you put 7 of the most talented OSS developers in a room for a week
+and asked them to fix a bug in a spreadsheet program, in 1 week
+you'd have 2 new mail readers and a text-based web browser.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.164.patch0 b/vim/patches/vim-7.3.164.patch0
new file mode 100644 (file)
index 0000000..9049f1b
--- /dev/null
@@ -0,0 +1,181 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.164
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.164
+Problem:    C-indenting: a preprocessor statement confuses detection of a
+           function delcaration.
+Solution:   Ignore preprocessor lines. (Lech Lorens)  Also recognize the style
+           to put a comma before the argument name.
+Files:     src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok
+
+
+*** ../vim-7.3.163/src/misc1.c 2011-04-11 16:56:29.000000000 +0200
+--- src/misc1.c        2011-04-28 12:49:55.000000000 +0200
+***************
+*** 5396,5403 ****
+  cin_ispreproc(s)
+      char_u *s;
+  {
+!     s = skipwhite(s);
+!     if (*s == '#')
+       return TRUE;
+      return FALSE;
+  }
+--- 5396,5402 ----
+  cin_ispreproc(s)
+      char_u *s;
+  {
+!     if (*skipwhite(s) == '#')
+       return TRUE;
+      return FALSE;
+  }
+***************
+*** 5513,5518 ****
+--- 5512,5521 ----
+      else
+       s = *sp;
+  
++     /* Ignore line starting with #. */
++     if (cin_ispreproc(s))
++      return FALSE;
++ 
+      while (*s && *s != '(' && *s != ';' && *s != '\'' && *s != '"')
+      {
+       if (cin_iscomment(s))   /* ignore comments */
+***************
+*** 5538,5550 ****
+               retval = TRUE;
+           goto done;
+       }
+!      if (*s == ',' && cin_nocode(s + 1))
+       {
+!          /* ',' at the end: continue looking in the next line */
+           if (lnum >= curbuf->b_ml.ml_line_count)
+               break;
+! 
+!          s = ml_get(++lnum);
+       }
+       else if (cin_iscomment(s))      /* ignore comments */
+           s = cin_skipcomment(s);
+--- 5541,5569 ----
+               retval = TRUE;
+           goto done;
+       }
+!      if ((*s == ',' && cin_nocode(s + 1)) || s[1] == NUL || cin_nocode(s))
+       {
+!          int comma = (*s == ',');
+! 
+!          /* ',' at the end: continue looking in the next line.
+!           * At the end: check for ',' in the next line, for this style:
+!           * func(arg1
+!           *       , arg2) */
+!          for (;;)
+!          {
+!              if (lnum >= curbuf->b_ml.ml_line_count)
+!                  break;
+!              s = ml_get(++lnum);
+!              if (!cin_ispreproc(s))
+!                  break;
+!          }
+           if (lnum >= curbuf->b_ml.ml_line_count)
+               break;
+!          /* Require a comma at end of the line or a comma or ')' at the
+!           * start of next line. */
+!          s = skipwhite(s);
+!          if (!comma && *s != ',' && *s != ')')
+!              break;
+       }
+       else if (cin_iscomment(s))      /* ignore comments */
+           s = cin_skipcomment(s);
+*** ../vim-7.3.163/src/testdir/test3.in        2010-08-15 21:57:29.000000000 +0200
+--- src/testdir/test3.in       2011-04-28 12:15:12.000000000 +0200
+***************
+*** 1315,1320 ****
+--- 1315,1349 ----
+  }
+  
+  STARTTEST
++ :set cino=(0,ts
++ 2kdd=][
++ ENDTEST
++ 
++ void func(int a
++ #if defined(FOO)
++                , int b
++                , int c
++ #endif
++               )
++ {
++ }
++ 
++ STARTTEST
++ :set cino=(0
++ 2kdd=][
++ ENDTEST
++ 
++ void
++ func(int a
++ #if defined(FOO)
++                , int b
++                , int c
++ #endif
++               )
++ {
++ }
++ 
++ STARTTEST
+  :g/^STARTTEST/.,/^ENDTEST/d
+  :1;/start of AUTO/,$wq! test.out
+  ENDTEST
+*** ../vim-7.3.163/src/testdir/test3.ok        2010-08-15 21:57:29.000000000 +0200
+--- src/testdir/test3.ok       2011-04-28 12:54:04.000000000 +0200
+***************
+*** 1183,1185 ****
+--- 1183,1206 ----
+               foo;
+  }
+  
++ 
++ void func(int a
++ #if defined(FOO)
++                , int b
++                , int c
++ #endif
++               )
++ {
++ }
++ 
++ 
++      void
++ func(int a
++ #if defined(FOO)
++       , int b
++       , int c
++ #endif
++      )
++ {
++ }
++ 
+*** ../vim-7.3.163/src/version.c       2011-04-28 12:56:57.000000000 +0200
+--- src/version.c      2011-04-28 12:59:55.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     164,
+  /**/
+
+-- 
+Due knot trussed yore spell chequer two fined awl miss steaks.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.165.patch0 b/vim/patches/vim-7.3.165.patch0
new file mode 100644 (file)
index 0000000..2725259
--- /dev/null
@@ -0,0 +1,47 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.165
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.165
+Problem:    ":find" completion does not escape spaces in a directory name.
+           (Isz)
+Solution:   Add backslashes for EXPAND_FILES_IN_PATH. (Carlo Teubner)
+Files:     src/ex_getln.c
+
+
+*** ../vim-7.3.164/src/ex_getln.c      2010-12-02 16:01:23.000000000 +0100
+--- src/ex_getln.c     2011-04-28 12:52:12.000000000 +0200
+***************
+*** 3702,3707 ****
+--- 3702,3708 ----
+      if (options & WILD_ESCAPE)
+      {
+       if (xp->xp_context == EXPAND_FILES
++              || xp->xp_context == EXPAND_FILES_IN_PATH
+               || xp->xp_context == EXPAND_SHELLCMD
+               || xp->xp_context == EXPAND_BUFFERS
+               || xp->xp_context == EXPAND_DIRECTORIES)
+*** ../vim-7.3.164/src/version.c       2011-04-28 13:01:59.000000000 +0200
+--- src/version.c      2011-04-28 17:17:53.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     165,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+38. You wake up at 3 a.m. to go to the bathroom and stop and check your e-mail
+    on the way back to bed.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.166.patch0 b/vim/patches/vim-7.3.166.patch0
new file mode 100644 (file)
index 0000000..93c6ed3
--- /dev/null
@@ -0,0 +1,70 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.166
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.166
+Problem:    Buffer on the stack may be too big
+Solution:   Allocate the space.
+Files:     src/option.c
+
+
+*** ../vim-7.3.165/src/option.c        2011-04-28 12:56:57.000000000 +0200
+--- src/option.c       2011-04-15 20:49:54.000000000 +0200
+***************
+*** 9185,9191 ****
+      int              expand;
+  {
+      char_u   *s;
+!     char_u   buf[MAXPATHL];
+  
+      if (fprintf(fd, "%s %s=", cmd, name) < 0)
+       return FAIL;
+--- 9185,9191 ----
+      int              expand;
+  {
+      char_u   *s;
+!     char_u   *buf;
+  
+      if (fprintf(fd, "%s %s=", cmd, name) < 0)
+       return FAIL;
+***************
+*** 9203,9211 ****
+--- 9203,9218 ----
+       }
+       else if (expand)
+       {
++          buf = alloc(MAXPATHL);
++          if (buf == NULL)
++              return FAIL;
+           home_replace(NULL, *valuep, buf, MAXPATHL, FALSE);
+           if (put_escstr(fd, buf, 2) == FAIL)
++          {
++              vim_free(buf);
+               return FAIL;
++          }
++          vim_free(buf);
+       }
+       else if (put_escstr(fd, *valuep, 2) == FAIL)
+           return FAIL;
+*** ../vim-7.3.165/src/version.c       2011-04-28 17:21:49.000000000 +0200
+--- src/version.c      2011-04-28 17:23:24.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     166,
+  /**/
+
+-- 
+He who laughs last, thinks slowest.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.167.patch0 b/vim/patches/vim-7.3.167.patch0
new file mode 100644 (file)
index 0000000..4a6de89
--- /dev/null
@@ -0,0 +1,96 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.167
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.167
+Problem:    When using the internal grep QuickFixCmdPost is not triggered.
+           (Yukihiro Nakadaira)
+Solution:   Change the place where autocommands are triggered.
+Files:     src/quickfix.c
+
+
+*** ../vim-7.3.166/src/quickfix.c      2011-04-11 21:35:03.000000000 +0200
+--- src/quickfix.c     2011-04-28 13:28:03.000000000 +0200
+***************
+*** 2742,2747 ****
+--- 2742,2754 ----
+  #ifdef FEAT_AUTOCMD
+      char_u   *au_name = NULL;
+  
++     /* Redirect ":grep" to ":vimgrep" if 'grepprg' is "internal". */
++     if (grep_internal(eap->cmdidx))
++     {
++      ex_vimgrep(eap);
++      return;
++     }
++ 
+      switch (eap->cmdidx)
+      {
+       case CMD_make:      au_name = (char_u *)"make"; break;
+***************
+*** 2763,2775 ****
+      }
+  #endif
+  
+-     /* Redirect ":grep" to ":vimgrep" if 'grepprg' is "internal". */
+-     if (grep_internal(eap->cmdidx))
+-     {
+-      ex_vimgrep(eap);
+-      return;
+-     }
+- 
+      if (eap->cmdidx == CMD_lmake || eap->cmdidx == CMD_lgrep
+       || eap->cmdidx == CMD_lgrepadd)
+       wp = curwin;
+--- 2770,2775 ----
+***************
+*** 3057,3066 ****
+  
+      switch (eap->cmdidx)
+      {
+!      case CMD_vimgrep: au_name = (char_u *)"vimgrep"; break;
+!      case CMD_lvimgrep: au_name = (char_u *)"lvimgrep"; break;
+!      case CMD_vimgrepadd: au_name = (char_u *)"vimgrepadd"; break;
+       case CMD_lvimgrepadd: au_name = (char_u *)"lvimgrepadd"; break;
+       default: break;
+      }
+      if (au_name != NULL)
+--- 3057,3070 ----
+  
+      switch (eap->cmdidx)
+      {
+!      case CMD_vimgrep:     au_name = (char_u *)"vimgrep"; break;
+!      case CMD_lvimgrep:    au_name = (char_u *)"lvimgrep"; break;
+!      case CMD_vimgrepadd:  au_name = (char_u *)"vimgrepadd"; break;
+       case CMD_lvimgrepadd: au_name = (char_u *)"lvimgrepadd"; break;
++      case CMD_grep:        au_name = (char_u *)"grep"; break;
++      case CMD_lgrep:       au_name = (char_u *)"lgrep"; break;
++      case CMD_grepadd:     au_name = (char_u *)"grepadd"; break;
++      case CMD_lgrepadd:    au_name = (char_u *)"lgrepadd"; break;
+       default: break;
+      }
+      if (au_name != NULL)
+*** ../vim-7.3.166/src/version.c       2011-04-28 17:24:54.000000000 +0200
+--- src/version.c      2011-04-28 17:26:17.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     167,
+  /**/
+
+-- 
+Micro$oft: where do you want to go today?
+    Linux: where do you want to go tomorrow?
+  FreeBSD: are you guys coming, or what?
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.168.patch0 b/vim/patches/vim-7.3.168.patch0
new file mode 100644 (file)
index 0000000..3d6fe94
--- /dev/null
@@ -0,0 +1,82 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.168
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.168
+Problem:    When the second argument of input() contains a CR the text up to
+           that is used without asking the user. (Yasuhiro Matsumoto)
+Solution:   Change CR, NL and ESC in the text to a space.
+Files:     src/getchar.c
+
+
+*** ../vim-7.3.167/src/getchar.c       2011-03-22 13:07:19.000000000 +0100
+--- src/getchar.c      2011-04-28 14:50:26.000000000 +0200
+***************
+*** 635,645 ****
+--- 635,648 ----
+  /*
+   * Stuff "s" into the stuff buffer, leaving special key codes unmodified and
+   * escaping other K_SPECIAL and CSI bytes.
++  * Change CR, LF and ESC into a space.
+   */
+      void
+  stuffReadbuffSpec(s)
+      char_u   *s;
+  {
++     int c;
++ 
+      while (*s != NUL)
+      {
+       if (*s == K_SPECIAL && s[1] != NUL && s[2] != NUL)
+***************
+*** 649,659 ****
+           s += 3;
+       }
+       else
+  #ifdef FEAT_MBYTE
+!          stuffcharReadbuff(mb_ptr2char_adv(&s));
+  #else
+!          stuffcharReadbuff(*s++);
+  #endif
+      }
+  }
+  #endif
+--- 652,667 ----
+           s += 3;
+       }
+       else
++      {
+  #ifdef FEAT_MBYTE
+!          c = mb_ptr2char_adv(&s);
+  #else
+!          c = *s++;
+  #endif
++          if (c == CAR || c == NL || c == ESC)
++              c = ' ';
++          stuffcharReadbuff(c);
++      }
+      }
+  }
+  #endif
+*** ../vim-7.3.167/src/version.c       2011-04-28 17:27:05.000000000 +0200
+--- src/version.c      2011-04-28 17:28:36.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     168,
+  /**/
+
+-- 
+Everyone has a photographic memory. Some don't have film.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.169.patch0 b/vim/patches/vim-7.3.169.patch0
new file mode 100644 (file)
index 0000000..056ca99
--- /dev/null
@@ -0,0 +1,130 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.169
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.169
+Problem:    Freeing memory already freed, warning from static code analyzer.
+Solution:   Initialize pointers to NULL, correct use of "mustfree". (partly by
+           Dominique Pelle)
+Files:     src/mis1.c
+
+
+*** ../vim-7.3.168/src/misc1.c 2011-04-28 13:01:59.000000000 +0200
+--- src/misc1.c        2011-04-28 17:42:00.000000000 +0200
+***************
+*** 3505,3511 ****
+      if (enc_utf8 && var != NULL)
+      {
+       int     len;
+!      char_u  *pp;
+  
+       /* Convert from active codepage to UTF-8.  Other conversions are
+        * not done, because they would fail for non-ASCII characters. */
+--- 3505,3511 ----
+      if (enc_utf8 && var != NULL)
+      {
+       int     len;
+!      char_u  *pp = NULL;
+  
+       /* Convert from active codepage to UTF-8.  Other conversions are
+        * not done, because they would fail for non-ASCII characters. */
+***************
+*** 3872,3882 ****
+   * Vim's version of getenv().
+   * Special handling of $HOME, $VIM and $VIMRUNTIME.
+   * Also does ACP to 'enc' conversion for Win32.
+   */
+      char_u *
+  vim_getenv(name, mustfree)
+      char_u   *name;
+!     int              *mustfree;      /* set to TRUE when returned is allocated */
+  {
+      char_u   *p;
+      char_u   *pend;
+--- 3872,3884 ----
+   * Vim's version of getenv().
+   * Special handling of $HOME, $VIM and $VIMRUNTIME.
+   * Also does ACP to 'enc' conversion for Win32.
++  * "mustfree" is set to TRUE when returned is allocated, it must be
++  * initialized to FALSE by the caller.
+   */
+      char_u *
+  vim_getenv(name, mustfree)
+      char_u   *name;
+!     int              *mustfree;
+  {
+      char_u   *p;
+      char_u   *pend;
+***************
+*** 3898,3904 ****
+       if (enc_utf8)
+       {
+           int     len;
+!          char_u  *pp;
+  
+           /* Convert from active codepage to UTF-8.  Other conversions are
+            * not done, because they would fail for non-ASCII characters. */
+--- 3900,3906 ----
+       if (enc_utf8)
+       {
+           int     len;
+!          char_u  *pp = NULL;
+  
+           /* Convert from active codepage to UTF-8.  Other conversions are
+            * not done, because they would fail for non-ASCII characters. */
+***************
+*** 3942,3948 ****
+           if (enc_utf8)
+           {
+               int     len;
+!              char_u  *pp;
+  
+               /* Convert from active codepage to UTF-8.  Other conversions
+                * are not done, because they would fail for non-ASCII
+--- 3944,3950 ----
+           if (enc_utf8)
+           {
+               int     len;
+!              char_u  *pp = NULL;
+  
+               /* Convert from active codepage to UTF-8.  Other conversions
+                * are not done, because they would fail for non-ASCII
+***************
+*** 3950,3956 ****
+               acp_to_enc(p, (int)STRLEN(p), &pp, &len);
+               if (pp != NULL)
+               {
+!                  if (mustfree)
+                       vim_free(p);
+                   p = pp;
+                   *mustfree = TRUE;
+--- 3952,3958 ----
+               acp_to_enc(p, (int)STRLEN(p), &pp, &len);
+               if (pp != NULL)
+               {
+!                  if (*mustfree)
+                       vim_free(p);
+                   p = pp;
+                   *mustfree = TRUE;
+*** ../vim-7.3.168/src/version.c       2011-04-28 17:30:05.000000000 +0200
+--- src/version.c      2011-04-28 17:48:04.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     169,
+  /**/
+
+-- 
+A day without sunshine is like, well, night.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.170.patch0 b/vim/patches/vim-7.3.170.patch0
new file mode 100644 (file)
index 0000000..933173e
--- /dev/null
@@ -0,0 +1,70 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.170
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.170
+Problem:    VMS Makefile for testing was not updated for test77.
+Solution:   Add test77 to the Makefile.
+Files:     src/testdir/Make_vms.mms
+
+
+*** ../vim-7.3.169/src/testdir/Make_vms.mms    2010-11-10 16:54:16.000000000 +0100
+--- src/testdir/Make_vms.mms   2011-03-03 17:04:56.000000000 +0100
+***************
+*** 4,10 ****
+  # Authors:   Zoltan Arpadffy, <arpadffy@polarhome.com>
+  #            Sandor Kopanyi,  <sandor.kopanyi@mailbox.hu>
+  #
+! # Last change:  2010 Nov 10
+  #
+  # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64.
+  # Edit the lines in the Configuration section below to select.
+--- 4,10 ----
+  # Authors:   Zoltan Arpadffy, <arpadffy@polarhome.com>
+  #            Sandor Kopanyi,  <sandor.kopanyi@mailbox.hu>
+  #
+! # Last change:  2011 Mar 03
+  #
+  # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64.
+  # Edit the lines in the Configuration section below to select.
+***************
+*** 74,80 ****
+        test56.out test57.out test60.out \
+        test61.out test62.out test63.out test64.out test65.out \
+        test66.out test67.out test68.out test69.out \
+!       test71.out test72.out test74.out test75.out test76.out
+  
+  # Known problems:
+  # Test 30: a problem around mac format - unknown reason
+--- 74,81 ----
+        test56.out test57.out test60.out \
+        test61.out test62.out test63.out test64.out test65.out \
+        test66.out test67.out test68.out test69.out \
+!       test71.out test72.out test74.out test75.out test76.out \
+!       test77.out
+  
+  # Known problems:
+  # Test 30: a problem around mac format - unknown reason
+*** ../vim-7.3.169/src/version.c       2011-04-28 17:48:39.000000000 +0200
+--- src/version.c      2011-04-28 19:04:33.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     170,
+  /**/
+
+-- 
+The users that I support would double-click on a landmine to find out
+what happens.                          -- A system administrator
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.171.patch0 b/vim/patches/vim-7.3.171.patch0
new file mode 100644 (file)
index 0000000..f965e0a
--- /dev/null
@@ -0,0 +1,142 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.171
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.171
+Problem:    When the clipboard isn't supported: ":yank*" gives a confusing
+           error message.
+Solution:   Specifically mention that the register name is invalid.
+           (Jean-Rene David)
+Files:     runtime/doc/change.txt, src/ex_docmd.c, src/globals.h
+
+
+*** ../vim-7.3.170/runtime/doc/change.txt      2010-08-15 21:57:18.000000000 +0200
+--- runtime/doc/change.txt     2011-05-05 13:48:00.000000000 +0200
+***************
+*** 916,923 ****
+  {Visual}["x]Y                Yank the highlighted lines [into register x] (for
+                       {Visual} see |Visual-mode|).  {not in Vi}
+  
+!                                                      *:y* *:yank*
+! :[range]y[ank] [x]   Yank [range] lines [into register x].
+  
+  :[range]y[ank] [x] {count}
+                       Yank {count} lines, starting with last line number
+--- 917,926 ----
+  {Visual}["x]Y                Yank the highlighted lines [into register x] (for
+                       {Visual} see |Visual-mode|).  {not in Vi}
+  
+!                                                      *:y* *:yank* *E850*
+! :[range]y[ank] [x]   Yank [range] lines [into register x]. Yanking to the
+!                      "* or "+ registers is possible only in GUI versions or
+!                      when the |+xterm_clipboard| feature is included.
+  
+  :[range]y[ank] [x] {count}
+                       Yank {count} lines, starting with last line number
+*** ../vim-7.3.170/src/ex_docmd.c      2011-04-11 21:35:03.000000000 +0200
+--- src/ex_docmd.c     2011-05-05 13:48:57.000000000 +0200
+***************
+*** 2424,2448 ****
+      if (       (ea.argt & REGSTR)
+           && *ea.arg != NUL
+  #ifdef FEAT_USR_CMDS
+-          && valid_yank_reg(*ea.arg, (ea.cmdidx != CMD_put
+-                                                 && USER_CMDIDX(ea.cmdidx)))
+           /* Do not allow register = for user commands */
+           && (!USER_CMDIDX(ea.cmdidx) || *ea.arg != '=')
+- #else
+-          && valid_yank_reg(*ea.arg, ea.cmdidx != CMD_put)
+  #endif
+           && !((ea.argt & COUNT) && VIM_ISDIGIT(*ea.arg)))
+      {
+!      ea.regname = *ea.arg++;
+! #ifdef FEAT_EVAL
+!      /* for '=' register: accept the rest of the line as an expression */
+!      if (ea.arg[-1] == '=' && ea.arg[0] != NUL)
+       {
+!          set_expr_line(vim_strsave(ea.arg));
+!          ea.arg += STRLEN(ea.arg);
+       }
+  #endif
+!      ea.arg = skipwhite(ea.arg);
+      }
+  
+      /*
+--- 2424,2462 ----
+      if (       (ea.argt & REGSTR)
+           && *ea.arg != NUL
+  #ifdef FEAT_USR_CMDS
+           /* Do not allow register = for user commands */
+           && (!USER_CMDIDX(ea.cmdidx) || *ea.arg != '=')
+  #endif
+           && !((ea.argt & COUNT) && VIM_ISDIGIT(*ea.arg)))
+      {
+! #ifndef FEAT_CLIPBOARD
+!      /* check these explicitly for a more specific error message */
+!      if (*ea.arg == '*' || *ea.arg == '+')
+       {
+!          errormsg = (char_u *)_(e_invalidreg);
+!          goto doend;
+       }
+  #endif
+!      if (
+! #ifdef FEAT_USR_CMDS
+!          valid_yank_reg(*ea.arg, (ea.cmdidx != CMD_put
+!                                                 && USER_CMDIDX(ea.cmdidx)))
+! #else
+!          valid_yank_reg(*ea.arg, ea.cmdidx != CMD_put)
+! #endif
+!         )
+!      {
+!          ea.regname = *ea.arg++;
+! #ifdef FEAT_EVAL
+!          /* for '=' register: accept the rest of the line as an expression */
+!          if (ea.arg[-1] == '=' && ea.arg[0] != NUL)
+!          {
+!              set_expr_line(vim_strsave(ea.arg));
+!              ea.arg += STRLEN(ea.arg);
+!          }
+! #endif
+!          ea.arg = skipwhite(ea.arg);
+!      }
+      }
+  
+      /*
+*** ../vim-7.3.170/src/globals.h       2011-02-15 17:39:14.000000000 +0100
+--- src/globals.h      2011-05-05 13:47:44.000000000 +0200
+***************
+*** 1561,1566 ****
+--- 1561,1569 ----
+       (defined(FEAT_INS_EXPAND) && defined(FEAT_COMPL_FUNC))
+  EXTERN char_u e_notset[]     INIT(= N_("E764: Option '%s' is not set"));
+  #endif
++ #ifndef FEAT_CLIPBOARD
++ EXTERN char_u e_invalidreg[]    INIT(= N_("E850: Invalid register name"));
++ #endif
+  
+  #ifdef MACOS_X_UNIX
+  EXTERN short disallow_gui    INIT(= FALSE);
+*** ../vim-7.3.170/src/version.c       2011-04-28 19:05:01.000000000 +0200
+--- src/version.c      2011-05-05 14:24:39.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     171,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+53. To find out what time it is, you send yourself an e-mail and check the
+    "Date:" field.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.172.patch0 b/vim/patches/vim-7.3.172.patch0
new file mode 100644 (file)
index 0000000..66a7852
--- /dev/null
@@ -0,0 +1,268 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.172
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.172
+Problem:    MS-Windows: rename() might delete the file if the name differs but
+           it's actually the same file.
+Solution:   Use the file handle to check if it's the same file. (Yukihiro
+           Nakadaira)
+Files:     src/if_cscope.c, src/fileio.c, src/os_win32.c,
+           src/proto/os_win32.pro, src/vim.h
+
+
+*** ../vim-7.3.171/src/if_cscope.c     2011-03-03 15:01:25.000000000 +0100
+--- src/if_cscope.c    2011-05-05 16:16:38.000000000 +0200
+***************
+*** 1412,1428 ****
+  {
+      short    i, j;
+  #ifndef UNIX
+-     HANDLE   hFile;
+      BY_HANDLE_FILE_INFORMATION bhfi;
+  
+-     vim_memset(&bhfi, 0, sizeof(bhfi));
+      /* On windows 9x GetFileInformationByHandle doesn't work, so skip it */
+      if (!mch_windows95())
+      {
+!      hFile = CreateFile(fname, FILE_READ_ATTRIBUTES, 0, NULL, OPEN_EXISTING,
+!                                               FILE_ATTRIBUTE_NORMAL, NULL);
+!      if (hFile == INVALID_HANDLE_VALUE)
+       {
+           if (p_csverbose)
+           {
+               char *cant_msg = _("E625: cannot open cscope database: %s");
+--- 1412,1426 ----
+  {
+      short    i, j;
+  #ifndef UNIX
+      BY_HANDLE_FILE_INFORMATION bhfi;
+  
+      /* On windows 9x GetFileInformationByHandle doesn't work, so skip it */
+      if (!mch_windows95())
+      {
+!      switch (win32_fileinfo(fname, &bhfi))
+       {
++      case FILEINFO_ENC_FAIL:         /* enc_to_utf16() failed */
++      case FILEINFO_READ_FAIL:        /* CreateFile() failed */
+           if (p_csverbose)
+           {
+               char *cant_msg = _("E625: cannot open cscope database: %s");
+***************
+*** 1438,1452 ****
+                   (void)EMSG2(cant_msg, fname);
+           }
+           return -1;
+!      }
+!      if (!GetFileInformationByHandle(hFile, &bhfi))
+!      {
+!          CloseHandle(hFile);
+           if (p_csverbose)
+               (void)EMSG(_("E626: cannot get cscope database information"));
+           return -1;
+       }
+-      CloseHandle(hFile);
+      }
+  #endif
+  
+--- 1436,1447 ----
+                   (void)EMSG2(cant_msg, fname);
+           }
+           return -1;
+! 
+!      case FILEINFO_INFO_FAIL:    /* GetFileInformationByHandle() failed */
+           if (p_csverbose)
+               (void)EMSG(_("E626: cannot get cscope database information"));
+           return -1;
+       }
+      }
+  #endif
+  
+*** ../vim-7.3.171/src/fileio.c        2011-04-11 21:35:03.000000000 +0200
+--- src/fileio.c       2011-05-05 16:22:22.000000000 +0200
+***************
+*** 6555,6560 ****
+--- 6555,6575 ----
+           use_tmp_file = TRUE;
+      }
+  #endif
++ #ifdef WIN3264
++     {
++      BY_HANDLE_FILE_INFORMATION info1, info2;
++ 
++      /* It's possible for the source and destination to be the same file.
++       * In that case go through a temp file name.  This makes rename("foo",
++       * "./foo") a no-op (in a complicated way). */
++      if (win32_fileinfo(from, &info1) == FILEINFO_OK
++              && win32_fileinfo(to, &info2) == FILEINFO_OK
++              && info1.dwVolumeSerialNumber == info2.dwVolumeSerialNumber
++              && info1.nFileIndexHigh == info2.nFileIndexHigh
++              && info1.nFileIndexLow == info2.nFileIndexLow)
++          use_tmp_file = TRUE;
++     }
++ #endif
+  
+  #if defined(UNIX) || defined(CASE_INSENSITIVE_FILENAME)
+      if (use_tmp_file)
+*** ../vim-7.3.171/src/os_win32.c      2011-02-01 13:48:47.000000000 +0100
+--- src/os_win32.c     2011-05-05 16:24:17.000000000 +0200
+***************
+*** 2645,2669 ****
+      int
+  mch_is_linked(char_u *fname)
+  {
+      HANDLE   hFile;
+!     int              res = 0;
+!     BY_HANDLE_FILE_INFORMATION inf;
+  #ifdef FEAT_MBYTE
+      WCHAR    *wn = NULL;
+  
+      if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
+       wn = enc_to_utf16(fname, NULL);
+      if (wn != NULL)
+      {
+       hFile = CreateFileW(wn,         /* file name */
+                   GENERIC_READ,       /* access mode */
+!                  0,                  /* share mode */
+                   NULL,               /* security descriptor */
+                   OPEN_EXISTING,      /* creation disposition */
+!                  0,                  /* file attributes */
+                   NULL);              /* handle to template file */
+       if (hFile == INVALID_HANDLE_VALUE
+!              && GetLastError() == ERROR_CALL_NOT_IMPLEMENTED)
+       {
+           /* Retry with non-wide function (for Windows 98). */
+           vim_free(wn);
+--- 2645,2688 ----
+      int
+  mch_is_linked(char_u *fname)
+  {
++     BY_HANDLE_FILE_INFORMATION info;
++ 
++     return win32_fileinfo(fname, &info) == FILEINFO_OK
++                                                 && info.nNumberOfLinks > 1;
++ }
++ 
++ /*
++  * Get the by-handle-file-information for "fname".
++  * Returns FILEINFO_OK when OK.
++  * returns FILEINFO_ENC_FAIL when enc_to_utf16() failed.
++  * Returns FILEINFO_READ_FAIL when CreateFile() failed.
++  * Returns FILEINFO_INFO_FAIL when GetFileInformationByHandle() failed.
++  */
++     int
++ win32_fileinfo(char_u *fname, BY_HANDLE_FILE_INFORMATION *info)
++ {
+      HANDLE   hFile;
+!     int              res = FILEINFO_READ_FAIL;
+  #ifdef FEAT_MBYTE
+      WCHAR    *wn = NULL;
+  
+      if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
++     {
+       wn = enc_to_utf16(fname, NULL);
++      if (wn == NULL)
++          res = FILEINFO_ENC_FAIL;
++     }
+      if (wn != NULL)
+      {
+       hFile = CreateFileW(wn,         /* file name */
+                   GENERIC_READ,       /* access mode */
+!                  FILE_SHARE_READ | FILE_SHARE_WRITE, /* share mode */
+                   NULL,               /* security descriptor */
+                   OPEN_EXISTING,      /* creation disposition */
+!                  FILE_FLAG_BACKUP_SEMANTICS, /* file attributes */
+                   NULL);              /* handle to template file */
+       if (hFile == INVALID_HANDLE_VALUE
+!                            && GetLastError() == ERROR_CALL_NOT_IMPLEMENTED)
+       {
+           /* Retry with non-wide function (for Windows 98). */
+           vim_free(wn);
+***************
+*** 2674,2690 ****
+  #endif
+       hFile = CreateFile(fname,       /* file name */
+                   GENERIC_READ,       /* access mode */
+!                  0,                  /* share mode */
+                   NULL,               /* security descriptor */
+                   OPEN_EXISTING,      /* creation disposition */
+!                  0,                  /* file attributes */
+                   NULL);              /* handle to template file */
+  
+      if (hFile != INVALID_HANDLE_VALUE)
+      {
+!      if (GetFileInformationByHandle(hFile, &inf) != 0
+!              && inf.nNumberOfLinks > 1)
+!          res = 1;
+       CloseHandle(hFile);
+      }
+  
+--- 2693,2710 ----
+  #endif
+       hFile = CreateFile(fname,       /* file name */
+                   GENERIC_READ,       /* access mode */
+!                  FILE_SHARE_READ | FILE_SHARE_WRITE, /* share mode */
+                   NULL,               /* security descriptor */
+                   OPEN_EXISTING,      /* creation disposition */
+!                  FILE_FLAG_BACKUP_SEMANTICS, /* file attributes */
+                   NULL);              /* handle to template file */
+  
+      if (hFile != INVALID_HANDLE_VALUE)
+      {
+!      if (GetFileInformationByHandle(hFile, info) != 0)
+!          res = FILEINFO_OK;
+!      else
+!          res = FILEINFO_INFO_FAIL;
+       CloseHandle(hFile);
+      }
+  
+*** ../vim-7.3.171/src/proto/os_win32.pro      2010-10-23 14:02:48.000000000 +0200
+--- src/proto/os_win32.pro     2011-05-05 16:17:42.000000000 +0200
+***************
+*** 21,26 ****
+--- 21,27 ----
+  void mch_hide __ARGS((char_u *name));
+  int mch_isdir __ARGS((char_u *name));
+  int mch_is_linked __ARGS((char_u *fname));
++ int win32_fileinfo __ARGS((char_u *name, BY_HANDLE_FILE_INFORMATION *lpFileInfo));
+  int mch_writable __ARGS((char_u *name));
+  int mch_can_exe __ARGS((char_u *name));
+  int mch_nodetype __ARGS((char_u *name));
+*** ../vim-7.3.171/src/vim.h   2011-04-11 21:35:03.000000000 +0200
+--- src/vim.h  2011-05-05 16:16:57.000000000 +0200
+***************
+*** 2217,2220 ****
+--- 2217,2226 ----
+  #define KEYLEN_PART_MAP -2   /* keylen value for incomplete mapping */
+  #define KEYLEN_REMOVED  9999 /* keylen value for removed sequence */
+  
++ /* Return values from win32_fileinfo(). */
++ #define FILEINFO_OK       0
++ #define FILEINFO_ENC_FAIL    1       /* enc_to_utf16() failed */
++ #define FILEINFO_READ_FAIL   2       /* CreateFile() failed */
++ #define FILEINFO_INFO_FAIL   3       /* GetFileInformationByHandle() failed */
++ 
+  #endif /* VIM__H */
+*** ../vim-7.3.171/src/version.c       2011-05-05 14:26:37.000000000 +0200
+--- src/version.c      2011-05-05 16:39:35.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     172,
+  /**/
+
+-- 
+Q: What is a patch 22?
+A: A patch you need to include to make it possible to include patches.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.173.patch0 b/vim/patches/vim-7.3.173.patch0
new file mode 100644 (file)
index 0000000..ac8cffb
--- /dev/null
@@ -0,0 +1,79 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.173
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.173
+Problem:    After using setqflist() to make the quickfix list empty ":cwindow"
+           may open the window anyway.  Also after ":vimgrep".
+Solution:   Correctly check whether the list is empty. (Ingo Karkat)
+Files:     src/quickfix.c
+
+
+*** ../vim-7.3.172/src/quickfix.c      2011-04-28 17:27:05.000000000 +0200
+--- src/quickfix.c     2011-05-05 16:55:47.000000000 +0200
+***************
+*** 1164,1170 ****
+  
+       /* When no valid entries are present in the list, qf_ptr points to
+        * the first item in the list */
+!      if (to_qfl->qf_nonevalid == TRUE)
+           to_qfl->qf_ptr = to_qfl->qf_start;
+      }
+  
+--- 1164,1170 ----
+  
+       /* When no valid entries are present in the list, qf_ptr points to
+        * the first item in the list */
+!      if (to_qfl->qf_nonevalid)
+           to_qfl->qf_ptr = to_qfl->qf_start;
+      }
+  
+***************
+*** 2243,2248 ****
+--- 2243,2249 ----
+       * it if we have errors; otherwise, leave it closed.
+       */
+      if (qi->qf_lists[qi->qf_curlist].qf_nonevalid
++          || qi->qf_lists[qi->qf_curlist].qf_count == 0
+           || qi->qf_curlist >= qi->qf_listcount)
+      {
+       if (win != NULL)
+***************
+*** 3711,3717 ****
+      }
+  
+      if (qi->qf_lists[qi->qf_curlist].qf_index == 0)
+!      /* empty list or no valid entry */
+       qi->qf_lists[qi->qf_curlist].qf_nonevalid = TRUE;
+      else
+       qi->qf_lists[qi->qf_curlist].qf_nonevalid = FALSE;
+--- 3712,3718 ----
+      }
+  
+      if (qi->qf_lists[qi->qf_curlist].qf_index == 0)
+!      /* no valid entry */
+       qi->qf_lists[qi->qf_curlist].qf_nonevalid = TRUE;
+      else
+       qi->qf_lists[qi->qf_curlist].qf_nonevalid = FALSE;
+*** ../vim-7.3.172/src/version.c       2011-05-05 16:41:19.000000000 +0200
+--- src/version.c      2011-05-05 17:11:57.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     173,
+  /**/
+
+-- 
+"I can't complain, but sometimes I still do."   (Joe Walsh)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.174.patch0 b/vim/patches/vim-7.3.174.patch0
new file mode 100644 (file)
index 0000000..33d6003
--- /dev/null
@@ -0,0 +1,109 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.174
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.174
+Problem:    When Exuberant ctags binary is exctags it's not found.
+Solution:   Add configure check for exctags. (Hong Xu)
+Files:     src/configure.in, src/auto/configure
+
+
+*** ../vim-7.3.173/src/configure.in    2011-02-09 17:42:53.000000000 +0100
+--- src/configure.in   2011-05-05 17:18:21.000000000 +0200
+***************
+*** 2619,2625 ****
+    dnl  On HP-UX 10.10 termcap or termlib should be used instead of
+    dnl  curses, because curses is much slower.
+    dnl  Newer versions of ncurses are preferred over anything, except
+!   dnl  when tinfo has been split off, it conains all we need.
+    dnl  Older versions of ncurses have bugs, get a new one!
+    dnl  Digital Unix (OSF1) should use curses (Ronald Schild).
+    dnl  On SCO Openserver should prefer termlib (Roger Cornelius).
+--- 2619,2625 ----
+    dnl  On HP-UX 10.10 termcap or termlib should be used instead of
+    dnl  curses, because curses is much slower.
+    dnl  Newer versions of ncurses are preferred over anything, except
+!   dnl  when tinfo has been split off, it contains all we need.
+    dnl  Older versions of ncurses have bugs, get a new one!
+    dnl  Digital Unix (OSF1) should use curses (Ronald Schild).
+    dnl  On SCO Openserver should prefer termlib (Roger Cornelius).
+***************
+*** 3370,3376 ****
+  AC_CHECK_LIB(xpg4, _xpg4_setrunelocale, [LIBS="$LIBS -lxpg4"],,)
+  
+  dnl Check how we can run ctags.  Default to "ctags" when nothing works.
+! dnl --version for Exuberant ctags (preferred)
+  dnl       Add --fields=+S to get function signatures for omni completion.
+  dnl -t for typedefs (many ctags have this)
+  dnl -s for static functions (Elvis ctags only?)
+--- 3370,3376 ----
+  AC_CHECK_LIB(xpg4, _xpg4_setrunelocale, [LIBS="$LIBS -lxpg4"],,)
+  
+  dnl Check how we can run ctags.  Default to "ctags" when nothing works.
+! dnl Use --version to detect Exuberant ctags (preferred)
+  dnl       Add --fields=+S to get function signatures for omni completion.
+  dnl -t for typedefs (many ctags have this)
+  dnl -s for static functions (Elvis ctags only?)
+***************
+*** 3378,3384 ****
+  dnl -i+m to test for older Exuberant ctags
+  AC_MSG_CHECKING(how to create tags)
+  test -f tags && mv tags tags.save
+! if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
+    TAGPRG="ctags -I INIT+ --fields=+S"
+  else
+    TAGPRG="ctags"
+--- 3378,3386 ----
+  dnl -i+m to test for older Exuberant ctags
+  AC_MSG_CHECKING(how to create tags)
+  test -f tags && mv tags tags.save
+! if (eval exctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
+!   TAGPRG="exctags -I INIT+ --fields=+S"
+! elif (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
+    TAGPRG="ctags -I INIT+ --fields=+S"
+  else
+    TAGPRG="ctags"
+*** ../vim-7.3.173/src/auto/configure  2011-02-09 17:42:53.000000000 +0100
+--- src/auto/configure 2011-05-05 17:19:26.000000000 +0200
+***************
+*** 12031,12037 ****
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to create tags" >&5
+  $as_echo_n "checking how to create tags... " >&6; }
+  test -f tags && mv tags tags.save
+! if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&5 2>&1; then
+    TAGPRG="ctags -I INIT+ --fields=+S"
+  else
+    TAGPRG="ctags"
+--- 12031,12039 ----
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to create tags" >&5
+  $as_echo_n "checking how to create tags... " >&6; }
+  test -f tags && mv tags tags.save
+! if (eval exctags --version /dev/null | grep Exuberant) < /dev/null 1>&5 2>&1; then
+!   TAGPRG="exctags -I INIT+ --fields=+S"
+! elif (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&5 2>&1; then
+    TAGPRG="ctags -I INIT+ --fields=+S"
+  else
+    TAGPRG="ctags"
+*** ../vim-7.3.173/src/version.c       2011-05-05 17:14:07.000000000 +0200
+--- src/version.c      2011-05-05 17:19:37.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     174,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+54. You start tilting your head sideways to smile. :-)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.175.patch0 b/vim/patches/vim-7.3.175.patch0
new file mode 100644 (file)
index 0000000..57fbc4a
--- /dev/null
@@ -0,0 +1,50 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.175
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.175
+Problem:    When 'colorcolumn' is set locally to a window, ":new" opens a
+           window with the same highlighting but 'colorcolumn' is empty.
+           (Tyru)
+Solution:   Call check_colorcolumn() after clearing and copying options.
+           (Christian Brabandt)
+Files:     src/buffer.c
+
+
+*** ../vim-7.3.174/src/buffer.c        2011-04-11 16:56:29.000000000 +0200
+--- src/buffer.c       2011-05-05 17:28:24.000000000 +0200
+***************
+*** 2527,2532 ****
+--- 2527,2535 ----
+      if (p_fdls >= 0)
+       curwin->w_p_fdl = p_fdls;
+  #endif
++ #ifdef FEAT_SYN_HL
++     check_colorcolumn(curwin);
++ #endif
+  }
+  
+  /*
+*** ../vim-7.3.174/src/version.c       2011-05-05 17:23:58.000000000 +0200
+--- src/version.c      2011-05-05 17:30:32.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     175,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+55. You ask your doctor to implant a gig in your brain.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.176.patch0 b/vim/patches/vim-7.3.176.patch0
new file mode 100644 (file)
index 0000000..fcf4880
--- /dev/null
@@ -0,0 +1,165 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.176
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.176
+Problem:    Ruby linking doesn't work properly on Mac OS X.
+Solution:   Fix the configure check for Ruby. (Bjorn Winckler)
+Files:     src/configure.in, src/auto/configure
+
+
+*** ../vim-7.3.175/src/configure.in    2011-05-05 17:23:58.000000000 +0200
+--- src/configure.in   2011-05-05 18:03:38.000000000 +0200
+***************
+*** 1387,1396 ****
+  AC_MSG_RESULT($enable_rubyinterp)
+  if test "$enable_rubyinterp" = "yes" -o "$enable_rubyinterp" = "dynamic"; then
+    AC_MSG_CHECKING(--with-ruby-command argument)
+    AC_ARG_WITH(ruby-command, [  --with-ruby-command=RUBY  name of the Ruby command (default: ruby)],
+!      RUBY_CMD="$withval"; AC_MSG_RESULT($RUBY_CMD),
+       RUBY_CMD="ruby"; AC_MSG_RESULT(defaulting to $RUBY_CMD))
+-   AC_SUBST(vi_cv_path_ruby)
+    AC_PATH_PROG(vi_cv_path_ruby, $RUBY_CMD)
+    if test "X$vi_cv_path_ruby" != "X"; then
+      AC_MSG_CHECKING(Ruby version)
+--- 1387,1396 ----
+  AC_MSG_RESULT($enable_rubyinterp)
+  if test "$enable_rubyinterp" = "yes" -o "$enable_rubyinterp" = "dynamic"; then
+    AC_MSG_CHECKING(--with-ruby-command argument)
++   AC_SUBST(vi_cv_path_ruby)
+    AC_ARG_WITH(ruby-command, [  --with-ruby-command=RUBY  name of the Ruby command (default: ruby)],
+!      RUBY_CMD="$withval"; vi_cv_path_ruby="$withval"; AC_MSG_RESULT($RUBY_CMD),
+       RUBY_CMD="ruby"; AC_MSG_RESULT(defaulting to $RUBY_CMD))
+    AC_PATH_PROG(vi_cv_path_ruby, $RUBY_CMD)
+    if test "X$vi_cv_path_ruby" != "X"; then
+      AC_MSG_CHECKING(Ruby version)
+***************
+*** 1412,1429 ****
+         RUBY_LIBS="$rubylibs"
+       fi
+       librubyarg=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["LIBRUBYARG"]])'`
+!      if test -f "$rubyhdrdir/$librubyarg"; then
+!        librubyarg="$rubyhdrdir/$librubyarg"
+!      else
+!        rubylibdir=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["libdir"]])'`
+!        if test -f "$rubylibdir/$librubyarg"; then
+!          librubyarg="$rubylibdir/$librubyarg"
+!        elif test "$librubyarg" = "libruby.a"; then
+!          dnl required on Mac OS 10.3 where libruby.a doesn't exist
+!          librubyarg="-lruby"
+!        else
+!          librubyarg=`$vi_cv_path_ruby -r rbconfig -e "print '$librubyarg'.gsub(/-L\./, %'-L#{Config.expand(Config::CONFIG[\"libdir\"])}')"`
+!        fi
+       fi
+  
+       if test "X$librubyarg" != "X"; then
+--- 1412,1426 ----
+         RUBY_LIBS="$rubylibs"
+       fi
+       librubyarg=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["LIBRUBYARG"]])'`
+!      librubya=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["LIBRUBY_A"]])'`
+!   rubylibdir=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["libdir"]])'`
+!      if test -f "$rubylibdir/$librubya"; then
+!        librubyarg="$librubyarg"
+!     RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
+!   elif test "$librubyarg" = "libruby.a"; then
+!     dnl required on Mac OS 10.3 where libruby.a doesn't exist
+!     librubyarg="-lruby"
+!     RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
+       fi
+  
+       if test "X$librubyarg" != "X"; then
+*** ../vim-7.3.175/src/auto/configure  2011-05-05 17:23:58.000000000 +0200
+--- src/auto/configure 2011-05-05 18:06:47.000000000 +0200
+***************
+*** 6218,6233 ****
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking --with-ruby-command argument" >&5
+  $as_echo_n "checking --with-ruby-command argument... " >&6; }
+  
+  # Check whether --with-ruby-command was given.
+  if test "${with_ruby_command+set}" = set; then :
+!   withval=$with_ruby_command; RUBY_CMD="$withval"; { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RUBY_CMD" >&5
+  $as_echo "$RUBY_CMD" >&6; }
+  else
+    RUBY_CMD="ruby"; { $as_echo "$as_me:${as_lineno-$LINENO}: result: defaulting to $RUBY_CMD" >&5
+  $as_echo "defaulting to $RUBY_CMD" >&6; }
+  fi
+  
+- 
+    # Extract the first word of "$RUBY_CMD", so it can be a program name with args.
+  set dummy $RUBY_CMD; ac_word=$2
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+--- 6218,6233 ----
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking --with-ruby-command argument" >&5
+  $as_echo_n "checking --with-ruby-command argument... " >&6; }
+  
++ 
+  # Check whether --with-ruby-command was given.
+  if test "${with_ruby_command+set}" = set; then :
+!   withval=$with_ruby_command; RUBY_CMD="$withval"; vi_cv_path_ruby="$withval"; { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RUBY_CMD" >&5
+  $as_echo "$RUBY_CMD" >&6; }
+  else
+    RUBY_CMD="ruby"; { $as_echo "$as_me:${as_lineno-$LINENO}: result: defaulting to $RUBY_CMD" >&5
+  $as_echo "defaulting to $RUBY_CMD" >&6; }
+  fi
+  
+    # Extract the first word of "$RUBY_CMD", so it can be a program name with args.
+  set dummy $RUBY_CMD; ac_word=$2
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+***************
+*** 6292,6308 ****
+         RUBY_LIBS="$rubylibs"
+       fi
+       librubyarg=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG["LIBRUBYARG"])'`
+!      if test -f "$rubyhdrdir/$librubyarg"; then
+!        librubyarg="$rubyhdrdir/$librubyarg"
+!      else
+!        rubylibdir=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG["libdir"])'`
+!        if test -f "$rubylibdir/$librubyarg"; then
+!          librubyarg="$rubylibdir/$librubyarg"
+!        elif test "$librubyarg" = "libruby.a"; then
+!                  librubyarg="-lruby"
+!        else
+!          librubyarg=`$vi_cv_path_ruby -r rbconfig -e "print '$librubyarg'.gsub(/-L\./, %'-L#{Config.expand(Config::CONFIG[\"libdir\"])}')"`
+!        fi
+       fi
+  
+       if test "X$librubyarg" != "X"; then
+--- 6292,6305 ----
+         RUBY_LIBS="$rubylibs"
+       fi
+       librubyarg=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG["LIBRUBYARG"])'`
+!      librubya=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG["LIBRUBY_A"])'`
+!   rubylibdir=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG["libdir"])'`
+!      if test -f "$rubylibdir/$librubya"; then
+!        librubyarg="$librubyarg"
+!     RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
+!   elif test "$librubyarg" = "libruby.a"; then
+!         librubyarg="-lruby"
+!     RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
+       fi
+  
+       if test "X$librubyarg" != "X"; then
+*** ../vim-7.3.175/src/version.c       2011-05-05 17:32:40.000000000 +0200
+--- src/version.c      2011-05-05 18:08:52.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     176,
+  /**/
+
+-- 
+"I simultaneously try to keep my head in the clouds and my feet on the
+ground.  Sometimes it's a stretch, though."              -- Larry Wall
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.177.patch0 b/vim/patches/vim-7.3.177.patch0
new file mode 100644 (file)
index 0000000..895b3b1
--- /dev/null
@@ -0,0 +1,97 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.177
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.177
+Problem:    MS-Windows: mkdir() doesn't work properly when 'encoding' is
+           "utf-8".
+Solution:   Convert to utf-16. (Yukihiro Nakadaira)
+Files:     src/os_win32.c, src/os_win32.h, src/proto/os_win32.pro
+
+
+*** ../vim-7.3.176/src/os_win32.c      2011-05-05 16:41:19.000000000 +0200
+--- src/os_win32.c     2011-05-05 18:24:36.000000000 +0200
+***************
+*** 2640,2645 ****
+--- 2640,2669 ----
+  }
+  
+  /*
++  * Create directory "name".
++  * Return 0 on success, -1 on error.
++  */
++     int
++ mch_mkdir(char_u *name)
++ {
++ #ifdef FEAT_MBYTE
++     if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
++     {
++      WCHAR   *p;
++      int     retval;
++ 
++      p = enc_to_utf16(name, NULL);
++      if (p == NULL)
++          return -1;
++      retval = _wmkdir(p);
++      vim_free(p);
++      return retval;
++     }
++ #endif
++     return _mkdir(name);
++ }
++ 
++ /*
+   * Return TRUE if file "fname" has more than one link.
+   */
+      int
+*** ../vim-7.3.176/src/os_win32.h      2010-08-15 21:57:30.000000000 +0200
+--- src/os_win32.h     2011-05-05 18:25:44.000000000 +0200
+***************
+*** 191,195 ****
+  #ifdef __BORLANDC__
+  # define vim_mkdir(x, y) mkdir(x)
+  #else
+! # define vim_mkdir(x, y) _mkdir(x)
+  #endif
+--- 191,195 ----
+  #ifdef __BORLANDC__
+  # define vim_mkdir(x, y) mkdir(x)
+  #else
+! # define vim_mkdir(x, y) mch_mkdir(x)
+  #endif
+*** ../vim-7.3.176/src/proto/os_win32.pro      2011-05-05 16:41:19.000000000 +0200
+--- src/proto/os_win32.pro     2011-05-05 18:26:20.000000000 +0200
+***************
+*** 20,25 ****
+--- 20,26 ----
+  int mch_setperm __ARGS((char_u *name, long perm));
+  void mch_hide __ARGS((char_u *name));
+  int mch_isdir __ARGS((char_u *name));
++ int mch_mkdir __ARGS((char_u *name));
+  int mch_is_linked __ARGS((char_u *fname));
+  int win32_fileinfo __ARGS((char_u *name, BY_HANDLE_FILE_INFORMATION *lpFileInfo));
+  int mch_writable __ARGS((char_u *name));
+*** ../vim-7.3.176/src/version.c       2011-05-05 18:10:11.000000000 +0200
+--- src/version.c      2011-05-05 18:27:56.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     177,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+56. You leave the modem speaker on after connecting because you think it
+    sounds like the ocean wind...the perfect soundtrack for "surfing the net".
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.178.patch0 b/vim/patches/vim-7.3.178.patch0
new file mode 100644 (file)
index 0000000..9b6ca7c
--- /dev/null
@@ -0,0 +1,163 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.178
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.178
+Problem:    C-indent doesn't handle code right after { correctly.
+Solution:   Fix detecting unterminated line. (Lech Lorens)
+Files:      src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok
+    
+
+*** ../vim-7.3.177/src/misc1.c 2011-04-28 17:48:39.000000000 +0200
+--- src/misc1.c        2011-05-10 11:35:09.000000000 +0200
+***************
+*** 4983,4989 ****
+  }
+  
+  /*
+!  * Return TRUE if there there is no code at *s.  White space and comments are
+   * not considered code.
+   */
+      static int
+--- 4983,4989 ----
+  }
+  
+  /*
+!  * Return TRUE if there is no code at *s.  White space and comments are
+   * not considered code.
+   */
+      static int
+***************
+*** 5458,5465 ****
+  }
+  
+  /*
+!  * Recognize a line that starts with '{' or '}', or ends with ';', '{' or '}'.
+   * Don't consider "} else" a terminated line.
+   * Return the character terminating the line (ending char's have precedence if
+   * both apply in order to determine initializations).
+   */
+--- 5458,5468 ----
+  }
+  
+  /*
+!  * Recognize a line that starts with '{' or '}', or ends with ';', ',', '{' or
+!  * '}'.
+   * Don't consider "} else" a terminated line.
++  * Don't consider a line where there are unmatched opening braces before '}',
++  * ';' or ',' a terminated line.
+   * Return the character terminating the line (ending char's have precedence if
+   * both apply in order to determine initializations).
+   */
+***************
+*** 5470,5475 ****
+--- 5473,5479 ----
+      int              incl_comma;     /* recognize a trailing comma */
+  {
+      char_u found_start = 0;
++     unsigned n_open = 0;
+  
+      s = cin_skipcomment(s);
+  
+***************
+*** 5480,5489 ****
+      {
+       /* skip over comments, "" strings and 'c'haracters */
+       s = skip_string(cin_skipcomment(s));
+!      if ((*s == ';' || (incl_open && *s == '{') || *s == '}'
+!                                               || (incl_comma && *s == ','))
+               && cin_nocode(s + 1))
+           return *s;
+  
+       if (*s)
+           s++;
+--- 5484,5502 ----
+      {
+       /* skip over comments, "" strings and 'c'haracters */
+       s = skip_string(cin_skipcomment(s));
+!      if (*s == '}' && n_open > 0)
+!          --n_open;
+!      if (n_open == 0
+!              && (*s == ';' || *s == '}' || (incl_comma && *s == ','))
+               && cin_nocode(s + 1))
+           return *s;
++      else if (*s == '{')
++      {
++          if (incl_open && cin_nocode(s + 1))
++              return *s;
++          else
++              ++n_open;
++      }
+  
+       if (*s)
+           s++;
+*** ../vim-7.3.177/src/testdir/test3.in        2011-04-28 13:01:59.000000000 +0200
+--- src/testdir/test3.in       2011-05-10 11:34:13.000000000 +0200
+***************
+*** 1344,1349 ****
+--- 1344,1365 ----
+  }
+  
+  STARTTEST
++ :set cino&
++ 2kdd=][
++ ENDTEST
++ 
++ void func(void)
++ {
++      if(x==y)
++              if(y==z)
++                      foo=1;
++              else { bar=1;
++                      baz=2;
++              }
++      printf("Foo!\n");
++ }
++ 
++ STARTTEST
+  :g/^STARTTEST/.,/^ENDTEST/d
+  :1;/start of AUTO/,$wq! test.out
+  ENDTEST
+*** ../vim-7.3.177/src/testdir/test3.ok        2011-04-28 13:01:59.000000000 +0200
+--- src/testdir/test3.ok       2011-05-10 11:34:13.000000000 +0200
+***************
+*** 1204,1206 ****
+--- 1204,1218 ----
+  {
+  }
+  
++ 
++ void func(void)
++ {
++      if(x==y)
++              if(y==z)
++                      foo=1;
++              else { bar=1;
++                      baz=2;
++              }
++      printf("Foo!\n");
++ }
++ 
+*** ../vim-7.3.177/src/version.c       2011-05-05 18:31:54.000000000 +0200
+--- src/version.c      2011-05-10 11:37:43.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     178,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+69. Yahoo welcomes you with your own start page
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.179.patch0 b/vim/patches/vim-7.3.179.patch0
new file mode 100644 (file)
index 0000000..f175b26
--- /dev/null
@@ -0,0 +1,95 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.179
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.179
+Problem:    C-indent doesn't handle colon in string correctly.
+Solution:   Skip the string. (Lech Lorens)
+Files:     src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok
+
+
+*** ../vim-7.3.178/src/misc1.c 2011-05-10 11:39:13.000000000 +0200
+--- src/misc1.c        2011-05-10 11:50:14.000000000 +0200
+***************
+*** 5801,5807 ****
+               continue;
+       }
+  
+!      if (s[0] == ':')
+       {
+           if (s[1] == ':')
+           {
+--- 5801,5809 ----
+               continue;
+       }
+  
+!      if (s[0] == '"')
+!          s = skip_string(s) + 1;
+!      else if (s[0] == ':')
+       {
+           if (s[1] == ':')
+           {
+*** ../vim-7.3.178/src/testdir/test3.in        2011-05-10 11:39:13.000000000 +0200
+--- src/testdir/test3.in       2011-05-10 11:53:02.000000000 +0200
+***************
+*** 1360,1365 ****
+--- 1360,1378 ----
+  }
+  
+  STARTTEST
++ :set cino&
++ 2kdd=][
++ ENDTEST
++ 
++ void func(void)
++ {
++      cout << "a"
++      << "b"
++      << ") :"
++      << "c";
++ }
++ 
++ STARTTEST
+  :g/^STARTTEST/.,/^ENDTEST/d
+  :1;/start of AUTO/,$wq! test.out
+  ENDTEST
+*** ../vim-7.3.178/src/testdir/test3.ok        2011-05-10 11:39:13.000000000 +0200
+--- src/testdir/test3.ok       2011-05-10 11:50:14.000000000 +0200
+***************
+*** 1216,1218 ****
+--- 1216,1227 ----
+       printf("Foo!\n");
+  }
+  
++ 
++ void func(void)
++ {
++      cout << "a"
++              << "b"
++              << ") :"
++              << "c";
++ }
++ 
+*** ../vim-7.3.178/src/version.c       2011-05-10 11:39:13.000000000 +0200
+--- src/version.c      2011-05-10 11:53:36.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     179,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+71. You wonder how people walk
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.180.patch0 b/vim/patches/vim-7.3.180.patch0
new file mode 100644 (file)
index 0000000..5997bfb
--- /dev/null
@@ -0,0 +1,295 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.180
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.180
+Problem:    When both a middle part of 'comments' matches and an end part, the
+           middle part was used errornously.
+Solution:   After finding the middle part match continue looking for a better
+           end part match. (partly by Lech Lorens)
+Files:     src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok
+
+
+*** ../vim-7.3.179/src/misc1.c 2011-05-10 11:56:26.000000000 +0200
+--- src/misc1.c        2011-05-10 13:24:38.000000000 +0200
+***************
+*** 1561,1566 ****
+--- 1561,1569 ----
+      char_u   part_buf[COM_MAX_LEN];  /* buffer for one option part */
+      char_u   *string;                /* pointer to comment string */
+      char_u   *list;
++     int              middle_match_len = 0;
++     char_u   *prev_list;
++     char_u   *saved_flags;
+  
+      i = 0;
+      while (vim_iswhite(line[i]))    /* leading white space is ignored */
+***************
+*** 1569,1575 ****
+      /*
+       * Repeat to match several nested comment strings.
+       */
+!     while (line[i])
+      {
+       /*
+        * scan through the 'comments' option for a match
+--- 1572,1578 ----
+      /*
+       * Repeat to match several nested comment strings.
+       */
+!     while (line[i] != NUL)
+      {
+       /*
+        * scan through the 'comments' option for a match
+***************
+*** 1577,1658 ****
+       found_one = FALSE;
+       for (list = curbuf->b_p_com; *list; )
+       {
+!          /*
+!           * Get one option part into part_buf[].  Advance list to next one.
+!           * put string at start of string.
+!           */
+!          if (!got_com && flags != NULL)  /* remember where flags started */
+!              *flags = list;
+           (void)copy_option_part(&list, part_buf, COM_MAX_LEN, ",");
+           string = vim_strchr(part_buf, ':');
+           if (string == NULL)     /* missing ':', ignore this part */
+               continue;
+           *string++ = NUL;        /* isolate flags from string */
+  
+!          /*
+!           * When already found a nested comment, only accept further
+!           * nested comments.
+!           */
+           if (got_com && vim_strchr(part_buf, COM_NEST) == NULL)
+               continue;
+  
+!          /* When 'O' flag used don't use for "O" command */
+           if (backward && vim_strchr(part_buf, COM_NOBACK) != NULL)
+               continue;
+  
+!          /*
+!           * Line contents and string must match.
+            * When string starts with white space, must have some white space
+            * (but the amount does not need to match, there might be a mix of
+!           * TABs and spaces).
+!           */
+           if (vim_iswhite(string[0]))
+           {
+               if (i == 0 || !vim_iswhite(line[i - 1]))
+!                  continue;
+               while (vim_iswhite(string[0]))
+                   ++string;
+           }
+           for (j = 0; string[j] != NUL && string[j] == line[i + j]; ++j)
+               ;
+           if (string[j] != NUL)
+!              continue;
+  
+!          /*
+!           * When 'b' flag used, there must be white space or an
+!           * end-of-line after the string in the line.
+!           */
+           if (vim_strchr(part_buf, COM_BLANK) != NULL
+                          && !vim_iswhite(line[i + j]) && line[i + j] != NUL)
+               continue;
+  
+!          /*
+!           * We have found a match, stop searching.
+!           */
+!          i += j;
+!          got_com = TRUE;
+           found_one = TRUE;
+           break;
+       }
+  
+!      /*
+!       * No match found, stop scanning.
+!       */
+       if (!found_one)
+           break;
+  
+!      /*
+!       * Include any trailing white space.
+!       */
+       while (vim_iswhite(line[i]))
+           ++i;
+  
+!      /*
+!       * If this comment doesn't nest, stop here.
+!       */
+       if (vim_strchr(part_buf, COM_NEST) == NULL)
+           break;
+      }
+      return (got_com ? i : 0);
+  }
+  #endif
+--- 1580,1683 ----
+       found_one = FALSE;
+       for (list = curbuf->b_p_com; *list; )
+       {
+!          /* Get one option part into part_buf[].  Advance "list" to next
+!           * one.  Put "string" at start of string.  */
+!          if (!got_com && flags != NULL)
+!              *flags = list;      /* remember where flags started */
+!          prev_list = list;
+           (void)copy_option_part(&list, part_buf, COM_MAX_LEN, ",");
+           string = vim_strchr(part_buf, ':');
+           if (string == NULL)     /* missing ':', ignore this part */
+               continue;
+           *string++ = NUL;        /* isolate flags from string */
+  
+!          /* If we found a middle match previously, use that match when this
+!           * is not a middle or end. */
+!          if (middle_match_len != 0
+!                  && vim_strchr(part_buf, COM_MIDDLE) == NULL
+!                  && vim_strchr(part_buf, COM_END) == NULL)
+!              break;
+! 
+!          /* When we already found a nested comment, only accept further
+!           * nested comments. */
+           if (got_com && vim_strchr(part_buf, COM_NEST) == NULL)
+               continue;
+  
+!          /* When 'O' flag present and using "O" command skip this one. */
+           if (backward && vim_strchr(part_buf, COM_NOBACK) != NULL)
+               continue;
+  
+!          /* Line contents and string must match.
+            * When string starts with white space, must have some white space
+            * (but the amount does not need to match, there might be a mix of
+!           * TABs and spaces). */
+           if (vim_iswhite(string[0]))
+           {
+               if (i == 0 || !vim_iswhite(line[i - 1]))
+!                  continue;  /* missing shite space */
+               while (vim_iswhite(string[0]))
+                   ++string;
+           }
+           for (j = 0; string[j] != NUL && string[j] == line[i + j]; ++j)
+               ;
+           if (string[j] != NUL)
+!              continue;  /* string doesn't match */
+  
+!          /* When 'b' flag used, there must be white space or an
+!           * end-of-line after the string in the line. */
+           if (vim_strchr(part_buf, COM_BLANK) != NULL
+                          && !vim_iswhite(line[i + j]) && line[i + j] != NUL)
+               continue;
+  
+!          /* We have found a match, stop searching unless this is a middle
+!           * comment. The middle comment can be a substring of the end
+!           * comment in which case it's better to return the length of the
+!           * end comment and its flags.  Thus we keep searching with middle
+!           * and end matches and use an end match if it matches better. */
+!          if (vim_strchr(part_buf, COM_MIDDLE) != NULL)
+!          {
+!              if (middle_match_len == 0)
+!              {
+!                  middle_match_len = j;
+!                  saved_flags = prev_list;
+!              }
+!              continue;
+!          }
+!          if (middle_match_len != 0 && j > middle_match_len)
+!              /* Use this match instead of the middle match, since it's a
+!               * longer thus better match. */
+!              middle_match_len = 0;
+! 
+!          if (middle_match_len == 0)
+!              i += j;
+           found_one = TRUE;
+           break;
+       }
+  
+!      if (middle_match_len != 0)
+!      {
+!          /* Use the previously found middle match after failing to find a
+!           * match with an end. */
+!          if (!got_com && flags != NULL)
+!              *flags = saved_flags;
+!          i += middle_match_len;
+!          found_one = TRUE;
+!      }
+! 
+!      /* No match found, stop scanning. */
+       if (!found_one)
+           break;
+  
+!      /* Include any trailing white space. */
+       while (vim_iswhite(line[i]))
+           ++i;
+  
+!      /* If this comment doesn't nest, stop here. */
+!      got_com = TRUE;
+       if (vim_strchr(part_buf, COM_NEST) == NULL)
+           break;
+      }
++ 
+      return (got_com ? i : 0);
+  }
+  #endif
+*** ../vim-7.3.179/src/testdir/test3.in        2011-05-10 11:56:26.000000000 +0200
+--- src/testdir/test3.in       2011-05-10 12:05:50.000000000 +0200
+***************
+*** 1373,1378 ****
+--- 1373,1390 ----
+  }
+  
+  STARTTEST
++ :set com=s1:/*,m:*,ex:*/
++ ]]3jofoo();\e
++ ENDTEST
++ 
++ void func(void)
++ {
++      /*
++       * This is a comment.
++       */
++ }
++ 
++ STARTTEST
+  :g/^STARTTEST/.,/^ENDTEST/d
+  :1;/start of AUTO/,$wq! test.out
+  ENDTEST
+*** ../vim-7.3.179/src/testdir/test3.ok        2011-05-10 11:56:26.000000000 +0200
+--- src/testdir/test3.ok       2011-05-10 12:05:50.000000000 +0200
+***************
+*** 1225,1227 ****
+--- 1225,1236 ----
+               << "c";
+  }
+  
++ 
++ void func(void)
++ {
++      /*
++       * This is a comment.
++       */
++      foo();
++ }
++ 
+*** ../vim-7.3.179/src/version.c       2011-05-10 11:56:26.000000000 +0200
+--- src/version.c      2011-05-10 13:37:28.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     180,
+  /**/
+
+-- 
+"Thou shalt not follow the Null Pointer, for at its end Chaos and
+Madness lie."
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.181.patch0 b/vim/patches/vim-7.3.181.patch0
new file mode 100644 (file)
index 0000000..3151d44
--- /dev/null
@@ -0,0 +1,171 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.181
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.181
+Problem:    When repeating the insert of CTRL-V or a digraph the display may
+           not be updated correctly.
+Solution:   Only call edit_unputchar() after edit_putchar(). (Lech Lorens)
+Files:     src/edit.c
+
+
+*** ../vim-7.3.180/src/edit.c  2010-11-10 17:11:29.000000000 +0100
+--- src/edit.c 2011-05-10 14:16:41.000000000 +0200
+***************
+*** 1553,1564 ****
+--- 1553,1568 ----
+  ins_ctrl_v()
+  {
+      int              c;
++     int              did_putchar = FALSE;
+  
+      /* may need to redraw when no more chars available now */
+      ins_redraw(FALSE);
+  
+      if (redrawing() && !char_avail())
++     {
+       edit_putchar('^', TRUE);
++      did_putchar = TRUE;
++     }
+      AppendToRedobuff((char_u *)CTRL_V_STR);  /* CTRL-V */
+  
+  #ifdef FEAT_CMDL_INFO
+***************
+*** 1566,1573 ****
+  #endif
+  
+      c = get_literal();
+!     edit_unputchar();  /* when line fits in 'columns' the '^' is at the start
+!                        of the next line and will not be redrawn */
+  #ifdef FEAT_CMDL_INFO
+      clear_showcmd();
+  #endif
+--- 1570,1579 ----
+  #endif
+  
+      c = get_literal();
+!     if (did_putchar)
+!      /* when the line fits in 'columns' the '^' is at the start of the next
+!       * line and will not removed by the redraw */
+!      edit_unputchar();
+  #ifdef FEAT_CMDL_INFO
+      clear_showcmd();
+  #endif
+***************
+*** 9637,9642 ****
+--- 9643,9649 ----
+  {
+      int          c;
+      int          cc;
++     int          did_putchar = FALSE;
+  
+      pc_status = PC_STATUS_UNSET;
+      if (redrawing() && !char_avail())
+***************
+*** 9645,9650 ****
+--- 9652,9658 ----
+       ins_redraw(FALSE);
+  
+       edit_putchar('?', TRUE);
++      did_putchar = TRUE;
+  #ifdef FEAT_CMDL_INFO
+       add_to_showcmd_c(Ctrl_K);
+  #endif
+***************
+*** 9661,9668 ****
+      c = plain_vgetc();
+      --no_mapping;
+      --allow_keys;
+!     edit_unputchar();  /* when line fits in 'columns' the '?' is at the start
+!                        of the next line and will not be redrawn */
+  
+      if (IS_SPECIAL(c) || mod_mask)       /* special key */
+      {
+--- 9669,9678 ----
+      c = plain_vgetc();
+      --no_mapping;
+      --allow_keys;
+!     if (did_putchar)
+!      /* when the line fits in 'columns' the '?' is at the start of the next
+!       * line and will not be removed by the redraw */
+!      edit_unputchar();
+  
+      if (IS_SPECIAL(c) || mod_mask)       /* special key */
+      {
+***************
+*** 9674,9679 ****
+--- 9684,9690 ----
+      }
+      if (c != ESC)
+      {
++      did_putchar = FALSE;
+       if (redrawing() && !char_avail())
+       {
+           /* may need to redraw when no more chars available now */
+***************
+*** 9681,9691 ****
+  
+           if (char2cells(c) == 1)
+           {
+-              /* first remove the '?', otherwise it's restored when typing
+-               * an ESC next */
+-              edit_unputchar();
+               ins_redraw(FALSE);
+               edit_putchar(c, TRUE);
+           }
+  #ifdef FEAT_CMDL_INFO
+           add_to_showcmd_c(c);
+--- 9692,9700 ----
+  
+           if (char2cells(c) == 1)
+           {
+               ins_redraw(FALSE);
+               edit_putchar(c, TRUE);
++              did_putchar = TRUE;
+           }
+  #ifdef FEAT_CMDL_INFO
+           add_to_showcmd_c(c);
+***************
+*** 9696,9703 ****
+       cc = plain_vgetc();
+       --no_mapping;
+       --allow_keys;
+!      edit_unputchar();  /* when line fits in 'columns' the '?' is at the
+!                            start of the next line and will not be redrawn */
+       if (cc != ESC)
+       {
+           AppendToRedobuff((char_u *)CTRL_V_STR);
+--- 9705,9714 ----
+       cc = plain_vgetc();
+       --no_mapping;
+       --allow_keys;
+!      if (did_putchar)
+!          /* when the line fits in 'columns' the '?' is at the start of the
+!           * next line and will not be removed by a redraw */
+!          edit_unputchar();
+       if (cc != ESC)
+       {
+           AppendToRedobuff((char_u *)CTRL_V_STR);
+*** ../vim-7.3.180/src/version.c       2011-05-10 13:38:23.000000000 +0200
+--- src/version.c      2011-05-10 14:20:40.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     181,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+74. Your most erotic dreams are about cybersex
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.182.patch0 b/vim/patches/vim-7.3.182.patch0
new file mode 100644 (file)
index 0000000..509b68b
--- /dev/null
@@ -0,0 +1,53 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.182
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.182 (after 7.3.180)
+Problem:    Compiler warning for uninitialized variable.
+Solution:   Add dummy initializer.
+Files:     src/misc1.c
+
+
+*** ../vim-7.3.181/src/misc1.c 2011-05-10 13:38:23.000000000 +0200
+--- src/misc1.c        2011-05-10 14:37:39.000000000 +0200
+***************
+*** 1563,1569 ****
+      char_u   *list;
+      int              middle_match_len = 0;
+      char_u   *prev_list;
+!     char_u   *saved_flags;
+  
+      i = 0;
+      while (vim_iswhite(line[i]))    /* leading white space is ignored */
+--- 1563,1569 ----
+      char_u   *list;
+      int              middle_match_len = 0;
+      char_u   *prev_list;
+!     char_u   *saved_flags = NULL;
+  
+      i = 0;
+      while (vim_iswhite(line[i]))    /* leading white space is ignored */
+*** ../vim-7.3.181/src/version.c       2011-05-10 14:22:10.000000000 +0200
+--- src/version.c      2011-05-10 14:38:39.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     182,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+75. You start wondering whether you could actually upgrade your brain
+    with a Pentium Pro microprocessor 80.  The upgrade works just fine.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.183.patch0 b/vim/patches/vim-7.3.183.patch0
new file mode 100644 (file)
index 0000000..23178c0
--- /dev/null
@@ -0,0 +1,87 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.183
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.183 (after 7.3.174)
+Problem:    When Exuberant ctags binary is exuberant-ctags it's not found.
+Solution:   Add configure check for exuberant-ctags.
+Files:     src/configure.in, src/auto/configure
+
+
+*** ../vim-7.3.182/src/configure.in    2011-05-05 18:10:11.000000000 +0200
+--- src/configure.in   2011-05-10 15:39:38.000000000 +0200
+***************
+*** 3375,3384 ****
+  dnl -i+m to test for older Exuberant ctags
+  AC_MSG_CHECKING(how to create tags)
+  test -f tags && mv tags tags.save
+! if (eval exctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
+!   TAGPRG="exctags -I INIT+ --fields=+S"
+! elif (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
+    TAGPRG="ctags -I INIT+ --fields=+S"
+  else
+    TAGPRG="ctags"
+    (eval etags           /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags"
+--- 3375,3386 ----
+  dnl -i+m to test for older Exuberant ctags
+  AC_MSG_CHECKING(how to create tags)
+  test -f tags && mv tags tags.save
+! if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
+    TAGPRG="ctags -I INIT+ --fields=+S"
++ elif (eval exctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
++   TAGPRG="exctags -I INIT+ --fields=+S"
++ elif (eval exuberant-ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
++   TAGPRG="exuberant-ctags -I INIT+ --fields=+S"
+  else
+    TAGPRG="ctags"
+    (eval etags           /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags"
+*** ../vim-7.3.182/src/auto/configure  2011-05-05 18:10:11.000000000 +0200
+--- src/auto/configure 2011-05-10 15:39:41.000000000 +0200
+***************
+*** 12028,12037 ****
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to create tags" >&5
+  $as_echo_n "checking how to create tags... " >&6; }
+  test -f tags && mv tags tags.save
+! if (eval exctags --version /dev/null | grep Exuberant) < /dev/null 1>&5 2>&1; then
+!   TAGPRG="exctags -I INIT+ --fields=+S"
+! elif (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&5 2>&1; then
+    TAGPRG="ctags -I INIT+ --fields=+S"
+  else
+    TAGPRG="ctags"
+    (eval etags           /dev/null) < /dev/null 1>&5 2>&1 && TAGPRG="etags"
+--- 12028,12039 ----
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to create tags" >&5
+  $as_echo_n "checking how to create tags... " >&6; }
+  test -f tags && mv tags tags.save
+! if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&5 2>&1; then
+    TAGPRG="ctags -I INIT+ --fields=+S"
++ elif (eval exctags --version /dev/null | grep Exuberant) < /dev/null 1>&5 2>&1; then
++   TAGPRG="exctags -I INIT+ --fields=+S"
++ elif (eval exuberant-ctags --version /dev/null | grep Exuberant) < /dev/null 1>&5 2>&1; then
++   TAGPRG="exuberant-ctags -I INIT+ --fields=+S"
+  else
+    TAGPRG="ctags"
+    (eval etags           /dev/null) < /dev/null 1>&5 2>&1 && TAGPRG="etags"
+*** ../vim-7.3.182/src/version.c       2011-05-10 14:44:07.000000000 +0200
+--- src/version.c      2011-05-10 15:40:48.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     183,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+78. You find yourself dialing IP numbers on the phone.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.184.patch0 b/vim/patches/vim-7.3.184.patch0
new file mode 100644 (file)
index 0000000..3b0cfc6
--- /dev/null
@@ -0,0 +1,86 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.184
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.184
+Problem:    Static code analysis errors in riscOS.
+Solution:   Make buffer size bigger. (Dominique Pelle)
+Files:     src/gui_riscos.c
+
+
+*** ../vim-7.3.183/src/gui_riscos.c    2010-08-15 21:57:28.000000000 +0200
+--- src/gui_riscos.c   2011-05-10 15:49:56.000000000 +0200
+***************
+*** 1756,1762 ****
+  
+       if (button & 0x444)
+       {
+!          int     front_block[10];
+           /* Dragging with Select - bring window to front first */
+           front_block[0] = gui.window_handle;
+           swi(Wimp_GetWindowState, 0, front_block);
+--- 1756,1762 ----
+  
+       if (button & 0x444)
+       {
+!          int     front_block[64];
+           /* Dragging with Select - bring window to front first */
+           front_block[0] = gui.window_handle;
+           swi(Wimp_GetWindowState, 0, front_block);
+***************
+*** 1874,1880 ****
+  
+      if (ro_dragging == DRAG_RESIZE_WINDOW)
+      {
+!      /* Resizeing the main window. */
+       block[2] = y;
+       block[3] = x;
+       ro_open_main(block);
+--- 1874,1880 ----
+  
+      if (ro_dragging == DRAG_RESIZE_WINDOW)
+      {
+!      /* Resizing the main window. */
+       block[2] = y;
+       block[3] = x;
+       ro_open_main(block);
+***************
+*** 2651,2657 ****
+      long_u   length;
+  
+      block[0] = 48;                   /* Size of block. */
+!     block[3] = 0;                    /* Orinial message. */
+      block[4] = 0x10;                 /* Data request. */
+      block[5] = gui.window_handle;
+      block[6] = RO_LOAD_CLIPBOARD;    /* Internal handle. */
+--- 2651,2657 ----
+      long_u   length;
+  
+      block[0] = 48;                   /* Size of block. */
+!     block[3] = 0;                    /* Original message. */
+      block[4] = 0x10;                 /* Data request. */
+      block[5] = gui.window_handle;
+      block[6] = RO_LOAD_CLIPBOARD;    /* Internal handle. */
+*** ../vim-7.3.183/src/version.c       2011-05-10 15:41:59.000000000 +0200
+--- src/version.c      2011-05-10 15:51:29.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     184,
+  /**/
+
+-- 
+If bankers can count, how come they have eight windows and
+only four tellers?
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.185.patch0 b/vim/patches/vim-7.3.185.patch0
new file mode 100644 (file)
index 0000000..7b3ed18
--- /dev/null
@@ -0,0 +1,77 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.185
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.185
+Problem:    ":windo g/pattern/q" closes windows and reports "N more lines".
+           (Tim Chase)
+Solution:   Remember what buffer ":global" started in. (Jean-Rene David)
+Files:     src/ex_cmds.c
+
+
+*** ../vim-7.3.184/src/ex_cmds.c       2011-04-11 21:35:03.000000000 +0200
+--- src/ex_cmds.c      2011-05-10 15:58:48.000000000 +0200
+***************
+*** 5365,5372 ****
+  global_exe(cmd)
+      char_u   *cmd;
+  {
+!     linenr_T old_lcount;     /* b_ml.ml_line_count before the command */
+!     linenr_T lnum;           /* line number according to old situation */
+  
+      /*
+       * Set current position only once for a global command.
+--- 5365,5373 ----
+  global_exe(cmd)
+      char_u   *cmd;
+  {
+!     linenr_T old_lcount;     /* b_ml.ml_line_count before the command */
+!     buf_T    *old_buf = curbuf;      /* remember what buffer we started in */
+!     linenr_T lnum;           /* line number according to old situation */
+  
+      /*
+       * Set current position only once for a global command.
+***************
+*** 5410,5417 ****
+       msg_didout = FALSE;
+  
+      /* If substitutes done, report number of substitutes, otherwise report
+!      * number of extra or deleted lines. */
+!     if (!do_sub_msg(FALSE))
+       msgmore(curbuf->b_ml.ml_line_count - old_lcount);
+  }
+  
+--- 5411,5420 ----
+       msg_didout = FALSE;
+  
+      /* If substitutes done, report number of substitutes, otherwise report
+!      * number of extra or deleted lines.
+!      * Don't report extra or deleted lines in the edge case where the buffer
+!      * we are in after execution is different from the buffer we started in. */
+!     if (!do_sub_msg(FALSE) && curbuf == old_buf)
+       msgmore(curbuf->b_ml.ml_line_count - old_lcount);
+  }
+  
+*** ../vim-7.3.184/src/version.c       2011-05-10 15:52:10.000000000 +0200
+--- src/version.c      2011-05-10 15:57:40.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     185,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+79. All of your most erotic dreams have a scrollbar at the right side.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.186.patch0 b/vim/patches/vim-7.3.186.patch0
new file mode 100644 (file)
index 0000000..d834c37
--- /dev/null
@@ -0,0 +1,59 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.186
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.186
+Problem:    When 'clipboard' contains "unnamed" or "unnamedplus" the value of
+           v:register is wrong for operators without a specific register.
+Solution:   Adjust the register according to 'clipboard'. (Ingo Karkat)
+Files:     src/normal.c
+
+
+*** ../vim-7.3.185/src/normal.c        2010-12-17 18:52:56.000000000 +0100
+--- src/normal.c       2011-05-10 16:07:49.000000000 +0200
+***************
+*** 1202,1208 ****
+      {
+       clearop(oap);
+  #ifdef FEAT_EVAL
+!      set_reg_var('"');
+  #endif
+      }
+  
+--- 1202,1214 ----
+      {
+       clearop(oap);
+  #ifdef FEAT_EVAL
+!      {
+!          int regname = 0;
+!          /* Adjust the register according to 'clipboard', so that when
+!           * "unnamed" is present it becomes '*' or '+' instead of '"'. */
+!          adjust_clip_reg(&regname);
+!          set_reg_var(regname);
+!      }
+  #endif
+      }
+  
+*** ../vim-7.3.185/src/version.c       2011-05-10 16:00:43.000000000 +0200
+--- src/version.c      2011-05-10 16:10:10.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     186,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+80. At parties, you introduce your spouse as your "service provider."
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.187.patch0 b/vim/patches/vim-7.3.187.patch0
new file mode 100644 (file)
index 0000000..7bf82ce
--- /dev/null
@@ -0,0 +1,6621 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.187
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.187
+Problem:    The RISC OS port has obvious errors and is not being maintained.
+Solution:   Remove the RISC OS files and code.
+Files:     src/ascii.h, src/eval.c, src/ex_cmds.c, src/ex_cmds2.c,
+           src/ex_docmd.c, src/fileio.c, src/globals.h, src/gui.c, src/gui.h,
+           src/main.c, src/memfile.c, src/memline.c, src/misc1.c,
+           src/proto.h, src/quickfix.c, src/search.c, src/structs.h,
+           src/term.c, src/termlib.c, src/version.c, src/vim.h,
+           src/gui_riscos.h, src/os_riscos.h, src/gui_riscos.c,
+           src/os_riscos.c, runtime/doc/os_risc.txt
+
+
+*** ../vim-7.3.186/src/ascii.h 2010-08-15 21:57:25.000000000 +0200
+--- src/ascii.h        2011-05-10 16:22:08.000000000 +0200
+***************
+*** 183,193 ****
+  # define PATHSEP     psepc
+  # define PATHSEPSTR  pseps
+  #else
+! # ifdef RISCOS
+! #  define PATHSEP    '.'
+! #  define PATHSEPSTR "."
+! # else
+! #  define PATHSEP    '/'
+! #  define PATHSEPSTR "/"
+! # endif
+  #endif
+--- 183,188 ----
+  # define PATHSEP     psepc
+  # define PATHSEPSTR  pseps
+  #else
+! # define PATHSEP     '/'
+! # define PATHSEPSTR  "/"
+  #endif
+*** ../vim-7.3.186/src/eval.c  2011-04-21 14:27:21.000000000 +0200
+--- src/eval.c 2011-05-10 16:22:21.000000000 +0200
+***************
+*** 11818,11826 ****
+  #ifdef __QNX__
+       "qnx",
+  #endif
+- #ifdef RISCOS
+-      "riscos",
+- #endif
+  #ifdef UNIX
+       "unix",
+  #endif
+--- 11818,11823 ----
+*** ../vim-7.3.186/src/ex_cmds.c       2011-05-10 16:00:43.000000000 +0200
+--- src/ex_cmds.c      2011-05-10 16:23:22.000000000 +0200
+***************
+*** 899,907 ****
+   * Handle the ":!cmd" command.       Also for ":r !cmd" and ":w !cmd"
+   * Bangs in the argument are replaced with the previously entered command.
+   * Remember the argument.
+-  *
+-  * RISCOS: Bangs only replaced when followed by a space, since many
+-  * pathnames contain one.
+   */
+      void
+  do_bang(addr_count, eap, forceit, do_in, do_out)
+--- 899,904 ----
+***************
+*** 980,990 ****
+       trailarg = NULL;
+       while (*p)
+       {
+!          if (*p == '!'
+! #ifdef RISCOS
+!                      && (p[1] == ' ' || p[1] == NUL)
+! #endif
+!                                      )
+           {
+               if (p > newcmd && p[-1] == '\\')
+                   STRMOVE(p - 1, p);
+--- 977,983 ----
+       trailarg = NULL;
+       while (*p)
+       {
+!          if (*p == '!')
+           {
+               if (p > newcmd && p[-1] == '\\')
+                   STRMOVE(p - 1, p);
+***************
+*** 1578,1591 ****
+           if (p != NULL)
+               *p = NUL;
+       }
+- # ifdef RISCOS
+-      STRCAT(buf, " { < ");   /* Use RISC OS notation for input. */
+-      STRCAT(buf, itmp);
+-      STRCAT(buf, " } ");
+- # else
+       STRCAT(buf, " <");      /* " < " causes problems on Amiga */
+       STRCAT(buf, itmp);
+- # endif
+       if (*p_shq == NUL)
+       {
+           p = vim_strchr(cmd, '|');
+--- 1571,1578 ----
+***************
+*** 1634,1649 ****
+      else
+       vim_snprintf((char *)end, (size_t)(buflen - (end - buf)),
+  #ifdef FEAT_QUICKFIX
+- # ifndef RISCOS
+-              opt != p_sp ? " %s%s" :
+- # endif
+               " %s %s",
+  #else
+- # ifndef RISCOS
+               " %s%s",        /* " > %s" causes problems on Amiga */
+- # else
+-              " %s %s",       /* But is needed for 'shellpipe' and RISC OS */
+- # endif
+  #endif
+               (char *)opt, (char *)fname);
+  }
+--- 1621,1629 ----
+***************
+*** 1844,1854 ****
+  #ifdef VMS
+                                   (char_u *)"-tmp",
+  #else
+- # ifdef RISCOS
+-                                  (char_u *)"/tmp",
+- # else
+                                   (char_u *)".tmp",
+- # endif
+  #endif
+                                   FALSE);
+           if (tempname == NULL)               /* out of memory */
+--- 1824,1830 ----
+*** ../vim-7.3.186/src/ex_cmds2.c      2011-04-11 21:35:03.000000000 +0200
+--- src/ex_cmds2.c     2011-05-10 16:23:47.000000000 +0200
+***************
+*** 500,517 ****
+       /* Expand the file name in the same way as do_source().  This means
+        * doing it twice, so that $DIR/file gets expanded when $DIR is
+        * "~/dir". */
+- #ifdef RISCOS
+-      q = mch_munge_fname(p);
+- #else
+       q = expand_env_save(p);
+- #endif
+       if (q == NULL)
+           return FAIL;
+- #ifdef RISCOS
+-      p = mch_munge_fname(q);
+- #else
+       p = expand_env_save(q);
+- #endif
+       vim_free(q);
+       if (p == NULL)
+           return FAIL;
+--- 500,509 ----
+***************
+*** 2940,2950 ****
+      proftime_T                   wait_start;
+  #endif
+  
+- #ifdef RISCOS
+-     p = mch_munge_fname(fname);
+- #else
+      p = expand_env_save(fname);
+- #endif
+      if (p == NULL)
+       return retval;
+      fname_exp = fix_fname(p);
+--- 2932,2938 ----
+*** ../vim-7.3.186/src/ex_docmd.c      2011-05-05 14:26:37.000000000 +0200
+--- src/ex_docmd.c     2011-05-10 16:24:18.000000000 +0200
+***************
+*** 9702,9715 ****
+                   valid = 0;      /* Must have ":p:h" to be valid */
+               }
+               else
+- #ifdef RISCOS
+-                  /* Always use the full path for RISC OS if possible. */
+-                  result = curbuf->b_ffname;
+-                  if (result == NULL)
+-                      result = curbuf->b_fname;
+- #else
+                   result = curbuf->b_fname;
+- #endif
+               break;
+  
+       case SPEC_HASH:         /* '#' or "#99": alternate file */
+--- 9702,9708 ----
+***************
+*** 9854,9864 ****
+       if (src[*usedlen] == '<')       /* remove the file name extension */
+       {
+           ++*usedlen;
+- #ifdef RISCOS
+-          if ((s = vim_strrchr(result, '/')) != NULL && s >= gettail(result))
+- #else
+           if ((s = vim_strrchr(result, '.')) != NULL && s >= gettail(result))
+- #endif
+               resultlen = (int)(s - result);
+       }
+  #ifdef FEAT_MODIFY_FNAME
+--- 9847,9853 ----
+***************
+*** 10875,10882 ****
+           else if (vim_ispathsep(*p))
+           {
+               *s++ = '=';
+! #if defined(BACKSLASH_IN_FILENAME) || defined(AMIGA) || defined(RISCOS) \
+!      || defined(VMS)
+               if (*p == ':')
+                   *s++ = '-';
+               else
+--- 10864,10870 ----
+           else if (vim_ispathsep(*p))
+           {
+               *s++ = '=';
+! #if defined(BACKSLASH_IN_FILENAME) || defined(AMIGA) || defined(VMS)
+               if (*p == ':')
+                   *s++ = '-';
+               else
+*** ../vim-7.3.186/src/fileio.c        2011-05-05 16:41:19.000000000 +0200
+--- src/fileio.c       2011-05-10 16:26:06.000000000 +0200
+***************
+*** 504,521 ****
+  
+      if (newfile && !read_stdin && !read_buffer)
+      {
+!      /* Remember time of file.
+!       * For RISCOS, also remember the filetype.
+!       */
+       if (mch_stat((char *)fname, &st) >= 0)
+       {
+           buf_store_time(curbuf, &st, fname);
+           curbuf->b_mtime_read = curbuf->b_mtime;
+- 
+- #if defined(RISCOS) && defined(FEAT_OSFILETYPE)
+-          /* Read the filetype into the buffer local filetype option. */
+-          mch_read_filetype(fname);
+- #endif
+  #ifdef UNIX
+           /*
+            * Use the protection bits of the original file for the swap file.
+--- 504,514 ----
+  
+      if (newfile && !read_stdin && !read_buffer)
+      {
+!      /* Remember time of file. */
+       if (mch_stat((char *)fname, &st) >= 0)
+       {
+           buf_store_time(curbuf, &st, fname);
+           curbuf->b_mtime_read = curbuf->b_mtime;
+  #ifdef UNIX
+           /*
+            * Use the protection bits of the original file for the swap file.
+***************
+*** 557,563 ****
+  
+  /*
+   * for UNIX: check readonly with perm and mch_access()
+-  * for RISCOS: same as Unix, otherwise file gets re-datestamped!
+   * for MSDOS and Amiga: check readonly by trying to open the file for writing
+   */
+      file_readonly = FALSE;
+--- 550,555 ----
+***************
+*** 3804,3816 ****
+  
+       /* make sure we have a valid backup extension to use */
+       if (*p_bex == NUL)
+-      {
+- #ifdef RISCOS
+-          backup_ext = (char_u *)"/bak";
+- #else
+           backup_ext = (char_u *)".bak";
+- #endif
+-      }
+       else
+           backup_ext = p_bex;
+  
+--- 3796,3802 ----
+***************
+*** 4724,4734 ****
+  #endif
+      if (perm >= 0)           /* set perm. of new file same as old file */
+       (void)mch_setperm(wfname, perm);
+- #ifdef RISCOS
+-     if (!append && !filtering)
+-      /* Set the filetype after writing the file. */
+-      mch_set_filetype(wfname, buf->b_p_oft);
+- #endif
+  #ifdef HAVE_ACL
+      /* Probably need to set the ACL before changing the user (can't set the
+       * ACL on a file the user doesn't own). */
+--- 4710,4715 ----
+***************
+*** 6262,6280 ****
+       */
+      for (ptr = retval + fnamelen; ptr > retval; mb_ptr_back(retval, ptr))
+      {
+- #ifndef RISCOS
+       if (*ext == '.'
+! # ifdef USE_LONG_FNAME
+                   && (!USE_LONG_FNAME || shortname)
+! # else
+! #  ifndef SHORT_FNAME
+                   && shortname
+- #  endif
+  # endif
+                                                               )
+           if (*ptr == '.')    /* replace '.' by '_' */
+               *ptr = '_';
+- #endif
+       if (vim_ispathsep(*ptr))
+       {
+           ++ptr;
+--- 6243,6259 ----
+       */
+      for (ptr = retval + fnamelen; ptr > retval; mb_ptr_back(retval, ptr))
+      {
+       if (*ext == '.'
+! #ifdef USE_LONG_FNAME
+                   && (!USE_LONG_FNAME || shortname)
+! #else
+! # ifndef SHORT_FNAME
+                   && shortname
+  # endif
++ #endif
+                                                               )
+           if (*ptr == '.')    /* replace '.' by '_' */
+               *ptr = '_';
+       if (vim_ispathsep(*ptr))
+       {
+           ++ptr;
+***************
+*** 6309,6331 ****
+       if (fname == NULL || *fname == NUL
+                                  || vim_ispathsep(fname[STRLEN(fname) - 1]))
+       {
+- #ifdef RISCOS
+-          if (*ext == '/')
+- #else
+           if (*ext == '.')
+- #endif
+               *s++ = '_';
+       }
+       /*
+        * If the extension starts with '.', truncate the base name at 8
+        * characters
+        */
+- #ifdef RISCOS
+-      /* We normally use '/', but swap files are '_' */
+-      else if (*ext == '/' || *ext == '_')
+- #else
+       else if (*ext == '.')
+- #endif
+       {
+           if ((size_t)(s - ptr) > (size_t)8)
+           {
+--- 6288,6301 ----
+***************
+*** 6337,6349 ****
+        * If the extension doesn't start with '.', and the file name
+        * doesn't have an extension yet, append a '.'
+        */
+- #ifdef RISCOS
+-      else if ((e = vim_strchr(ptr, '/')) == NULL)
+-          *s++ = '/';
+- #else
+       else if ((e = vim_strchr(ptr, '.')) == NULL)
+           *s++ = '.';
+- #endif
+       /*
+        * If the extension doesn't start with '.', and there already is an
+        * extension, it may need to be truncated
+--- 6307,6314 ----
+***************
+*** 6371,6393 ****
+      /*
+       * Prepend the dot.
+       */
+!     if (prepend_dot && !shortname && *(e = gettail(retval)) !=
+! #ifdef RISCOS
+!          '/'
+! #else
+!          '.'
+! #endif
+  #ifdef USE_LONG_FNAME
+           && USE_LONG_FNAME
+  #endif
+                               )
+      {
+       STRMOVE(e + 1, e);
+- #ifdef RISCOS
+-      *e = '/';
+- #else
+       *e = '.';
+- #endif
+      }
+  #endif
+  
+--- 6336,6349 ----
+      /*
+       * Prepend the dot.
+       */
+!     if (prepend_dot && !shortname && *(e = gettail(retval)) != '.'
+  #ifdef USE_LONG_FNAME
+           && USE_LONG_FNAME
+  #endif
+                               )
+      {
+       STRMOVE(e + 1, e);
+       *e = '.';
+      }
+  #endif
+  
+***************
+*** 10205,10223 ****
+                   ++p;
+               break;
+           case '.':
+- #ifdef RISCOS
+-              if (allow_dirs != NULL)
+-                   *allow_dirs = TRUE;
+-              /* FALLTHROUGH */
+- #endif
+           case '~':
+               reg_pat[i++] = '\\';
+               reg_pat[i++] = *p;
+               break;
+           case '?':
+- #ifdef RISCOS
+-          case '#':
+- #endif
+               reg_pat[i++] = '.';
+               break;
+           case '\\':
+--- 10161,10171 ----
+*** ../vim-7.3.186/src/globals.h       2011-05-05 14:26:37.000000000 +0200
+--- src/globals.h      2011-05-10 16:26:13.000000000 +0200
+***************
+*** 1513,1519 ****
+  EXTERN char_u e_sandbox[]    INIT(= N_("E48: Not allowed in sandbox"));
+  #endif
+  EXTERN char_u e_secure[]     INIT(= N_("E523: Not allowed here"));
+! #if defined(AMIGA) || defined(MACOS) || defined(MSWIN) || defined(RISCOS) \
+       || defined(UNIX) || defined(VMS) || defined(OS2)
+  EXTERN char_u e_screenmode[] INIT(= N_("E359: Screen mode setting not supported"));
+  #endif
+--- 1513,1519 ----
+  EXTERN char_u e_sandbox[]    INIT(= N_("E48: Not allowed in sandbox"));
+  #endif
+  EXTERN char_u e_secure[]     INIT(= N_("E523: Not allowed here"));
+! #if defined(AMIGA) || defined(MACOS) || defined(MSWIN)  \
+       || defined(UNIX) || defined(VMS) || defined(OS2)
+  EXTERN char_u e_screenmode[] INIT(= N_("E359: Screen mode setting not supported"));
+  #endif
+*** ../vim-7.3.186/src/gui.c   2011-01-17 20:08:03.000000000 +0100
+--- src/gui.c  2011-05-10 16:26:53.000000000 +0200
+***************
+*** 2156,2162 ****
+  
+      if (highlight_mask & (HL_INVERSE | HL_STANDOUT))
+      {
+! #if defined(AMIGA) || defined(RISCOS)
+       gui_mch_set_colors(bg_color, fg_color);
+  #else
+       gui_mch_set_fg_color(bg_color);
+--- 2156,2162 ----
+  
+      if (highlight_mask & (HL_INVERSE | HL_STANDOUT))
+      {
+! #if defined(AMIGA)
+       gui_mch_set_colors(bg_color, fg_color);
+  #else
+       gui_mch_set_fg_color(bg_color);
+***************
+*** 2165,2171 ****
+      }
+      else
+      {
+! #if defined(AMIGA) || defined(RISCOS)
+       gui_mch_set_colors(fg_color, bg_color);
+  #else
+       gui_mch_set_fg_color(fg_color);
+--- 2165,2171 ----
+      }
+      else
+      {
+! #if defined(AMIGA)
+       gui_mch_set_colors(fg_color, bg_color);
+  #else
+       gui_mch_set_fg_color(fg_color);
+***************
+*** 2193,2199 ****
+      if (back != 0 && ((draw_flags & DRAW_BOLD) || (highlight_mask & HL_ITALIC)))
+       return FAIL;
+  
+! #if defined(RISCOS) || defined(FEAT_GUI_GTK)
+      /* If there's no italic font, then fake it.
+       * For GTK2, we don't need a different font for italic style. */
+      if (hl_mask_todo & HL_ITALIC)
+--- 2193,2199 ----
+      if (back != 0 && ((draw_flags & DRAW_BOLD) || (highlight_mask & HL_ITALIC)))
+       return FAIL;
+  
+! #if defined(FEAT_GUI_GTK)
+      /* If there's no italic font, then fake it.
+       * For GTK2, we don't need a different font for italic style. */
+      if (hl_mask_todo & HL_ITALIC)
+***************
+*** 2985,3010 ****
+           did_clip = TRUE;
+       }
+       /* Allow the left button to start the selection */
+-      else if (button ==
+- # ifdef RISCOS
+-              /* Only start a drag on a drag event. Otherwise
+-               * we don't get a release event. */
+-                  MOUSE_DRAG
+- # else
+-                  MOUSE_LEFT
+- # endif
+-                              )
+-      {
+-          clip_start_selection(X_2_COL(x), Y_2_ROW(y), repeated_click);
+-          did_clip = TRUE;
+-      }
+- # ifdef RISCOS
+       else if (button == MOUSE_LEFT)
+       {
+!          clip_clear_selection();
+           did_clip = TRUE;
+       }
+- # endif
+  
+       /* Always allow pasting */
+       if (button != MOUSE_MIDDLE)
+--- 2985,2995 ----
+           did_clip = TRUE;
+       }
+       /* Allow the left button to start the selection */
+       else if (button == MOUSE_LEFT)
+       {
+!          clip_start_selection(X_2_COL(x), Y_2_ROW(y), repeated_click);
+           did_clip = TRUE;
+       }
+  
+       /* Always allow pasting */
+       if (button != MOUSE_MIDDLE)
+*** ../vim-7.3.186/src/gui.h   2010-08-15 21:57:25.000000000 +0200
+--- src/gui.h  2011-05-10 16:27:19.000000000 +0200
+***************
+*** 52,61 ****
+  # include <SegLoad.h>*/
+  #endif
+  
+- #ifdef RISCOS
+- # include "gui_riscos.h"
+- #endif
+- 
+  #ifdef FEAT_GUI_PHOTON
+  # include <Ph.h>
+  # include <Pt.h>
+--- 52,57 ----
+***************
+*** 151,157 ****
+  #define DRAW_BOLD            0x02    /* draw bold text */
+  #define DRAW_UNDERL          0x04    /* draw underline text */
+  #define DRAW_UNDERC          0x08    /* draw undercurl text */
+! #if defined(RISCOS) || defined(FEAT_GUI_GTK)
+  # define DRAW_ITALIC         0x10    /* draw italic text */
+  #endif
+  #define DRAW_CURSOR          0x20    /* drawing block cursor (win32) */
+--- 147,153 ----
+  #define DRAW_BOLD            0x02    /* draw bold text */
+  #define DRAW_UNDERL          0x04    /* draw underline text */
+  #define DRAW_UNDERC          0x08    /* draw undercurl text */
+! #if defined(FEAT_GUI_GTK)
+  # define DRAW_ITALIC         0x10    /* draw italic text */
+  #endif
+  #define DRAW_CURSOR          0x20    /* drawing block cursor (win32) */
+***************
+*** 219,227 ****
+  #ifdef FEAT_GUI_MAC
+      ControlHandle id;                /* A handle to the scrollbar */
+  #endif
+- #ifdef RISCOS
+-     int              id;             /* Window handle of scrollbar window */
+- #endif
+  #ifdef FEAT_GUI_PHOTON
+      PtWidget_t       *id;
+  #endif
+--- 215,220 ----
+***************
+*** 450,463 ****
+      int              visibility;         /* Is window partially/fully obscured? */
+  #endif
+  
+- #ifdef RISCOS
+-     int              window_handle;
+-     char_u   *window_title;
+-     int              window_title_size;
+-     int              fg_colour;              /* in 0xBBGGRR format */
+-     int              bg_colour;
+- #endif
+- 
+  #ifdef FEAT_GUI_PHOTON
+      PtWidget_t       *vimWindow;             /* PtWindow */
+      PtWidget_t       *vimTextArea;           /* PtRaw */
+--- 443,448 ----
+*** ../vim-7.3.186/src/main.c  2011-04-11 21:35:03.000000000 +0200
+--- src/main.c 2011-05-10 16:27:33.000000000 +0200
+***************
+*** 3276,3286 ****
+      main_msg(_("+reverse\t\tDon't use reverse video (also: +rv)"));
+      main_msg(_("-xrm <resource>\tSet the specified resource"));
+  #endif /* FEAT_GUI_X11 */
+- #if defined(FEAT_GUI) && defined(RISCOS)
+-     mch_msg(_("\nArguments recognised by gvim (RISC OS version):\n"));
+-     main_msg(_("--columns <number>\tInitial width of window in columns"));
+-     main_msg(_("--rows <number>\tInitial height of window in rows"));
+- #endif
+  #ifdef FEAT_GUI_GTK
+      mch_msg(_("\nArguments recognised by gvim (GTK+ version):\n"));
+      main_msg(_("-font <font>\t\tUse <font> for normal text (also: -fn)"));
+--- 3276,3281 ----
+*** ../vim-7.3.186/src/memfile.c       2011-03-22 18:10:34.000000000 +0100
+--- src/memfile.c      2011-05-10 16:27:38.000000000 +0200
+***************
+*** 1307,1313 ****
+       * fname cannot be NameBuff, because it must have been allocated.
+       */
+      mf_set_ffname(mfp);
+! #if defined(MSDOS) || defined(MSWIN) || defined(RISCOS)
+      /*
+       * A ":!cd e:xxx" may change the directory without us knowning, use the
+       * full pathname always.  Careful: This frees fname!
+--- 1307,1313 ----
+       * fname cannot be NameBuff, because it must have been allocated.
+       */
+      mf_set_ffname(mfp);
+! #if defined(MSDOS) || defined(MSWIN)
+      /*
+       * A ":!cd e:xxx" may change the directory without us knowning, use the
+       * full pathname always.  Careful: This frees fname!
+*** ../vim-7.3.186/src/memline.c       2011-02-15 11:56:56.000000000 +0100
+--- src/memline.c      2011-05-10 16:28:40.000000000 +0200
+***************
+*** 748,754 ****
+           continue;
+       if (mf_open_file(mfp, fname) == OK)     /* consumes fname! */
+       {
+! #if defined(MSDOS) || defined(MSWIN) || defined(RISCOS)
+           /*
+            * set full pathname for swap file now, because a ":!cd dir" may
+            * change directory without us knowing it.
+--- 748,754 ----
+           continue;
+       if (mf_open_file(mfp, fname) == OK)     /* consumes fname! */
+       {
+! #if defined(MSDOS) || defined(MSWIN)
+           /*
+            * set full pathname for swap file now, because a ":!cd dir" may
+            * change directory without us knowing it.
+***************
+*** 933,939 ****
+       b0p->b0_fname[0] = NUL;
+      else
+      {
+! #if defined(MSDOS) || defined(MSWIN) || defined(AMIGA) || defined(RISCOS)
+       /* Systems that cannot translate "~user" back into a path: copy the
+        * file name unmodified.  Do use slashes instead of backslashes for
+        * portability. */
+--- 933,939 ----
+       b0p->b0_fname[0] = NUL;
+      else
+      {
+! #if defined(MSDOS) || defined(MSWIN) || defined(AMIGA)
+       /* Systems that cannot translate "~user" back into a path: copy the
+        * file name unmodified.  Do use slashes instead of backslashes for
+        * portability. */
+***************
+*** 1103,1109 ****
+       fname = (char_u *)"";
+      len = (int)STRLEN(fname);
+      if (len >= 4 &&
+! #if defined(VMS) || defined(RISCOS)
+           STRNICMP(fname + len - 4, "_s" , 2)
+  #else
+           STRNICMP(fname + len - 4, ".s" , 2)
+--- 1103,1109 ----
+       fname = (char_u *)"";
+      len = (int)STRLEN(fname);
+      if (len >= 4 &&
+! #if defined(VMS)
+           STRNICMP(fname + len - 4, "_s" , 2)
+  #else
+           STRNICMP(fname + len - 4, ".s" , 2)
+***************
+*** 1773,1783 ****
+  #ifdef VMS
+               names[0] = vim_strsave((char_u *)"*_sw%");
+  #else
+- # ifdef RISCOS
+-              names[0] = vim_strsave((char_u *)"*_sw#");
+- # else
+               names[0] = vim_strsave((char_u *)"*.sw?");
+- # endif
+  #endif
+  #if defined(UNIX) || defined(WIN3264)
+               /* For Unix names starting with a dot are special.  MS-Windows
+--- 1773,1779 ----
+***************
+*** 1804,1814 ****
+  #ifdef VMS
+               names[0] = concat_fnames(dir_name, (char_u *)"*_sw%", TRUE);
+  #else
+- # ifdef RISCOS
+-              names[0] = concat_fnames(dir_name, (char_u *)"*_sw#", TRUE);
+- # else
+               names[0] = concat_fnames(dir_name, (char_u *)"*.sw?", TRUE);
+- # endif
+  #endif
+  #if defined(UNIX) || defined(WIN3264)
+               /* For Unix names starting with a dot are special.  MS-Windows
+--- 1800,1806 ----
+***************
+*** 1877,1883 ****
+           char_u          *swapname;
+  
+           swapname = modname(fname_res,
+! #if defined(VMS) || defined(RISCOS)
+                              (char_u *)"_swp", FALSE
+  #else
+                              (char_u *)".swp", TRUE
+--- 1869,1875 ----
+           char_u          *swapname;
+  
+           swapname = modname(fname_res,
+! #if defined(VMS)
+                              (char_u *)"_swp", FALSE
+  #else
+                              (char_u *)".swp", TRUE
+***************
+*** 2176,2186 ****
+  #ifdef VMS
+      names[num_names] = concat_fnames(path, (char_u *)"_sw%", FALSE);
+  #else
+- # ifdef RISCOS
+-     names[num_names] = concat_fnames(path, (char_u *)"_sw#", FALSE);
+- # else
+      names[num_names] = concat_fnames(path, (char_u *)".sw?", FALSE);
+- # endif
+  #endif
+      if (names[num_names] == NULL)
+       goto end;
+--- 2168,2174 ----
+***************
+*** 2207,2217 ****
+  #ifdef VMS
+      names[num_names] = modname(path, (char_u *)"_sw%", FALSE);
+  #else
+- # ifdef RISCOS
+-     names[num_names] = modname(path, (char_u *)"_sw#", FALSE);
+- # else
+      names[num_names] = modname(path, (char_u *)".sw?", FALSE);
+- # endif
+  #endif
+      if (names[num_names] == NULL)
+       goto end;
+--- 2195,2201 ----
+***************
+*** 3205,3211 ****
+       mf_free(mfp, hp);       /* free the data block */
+       buf->b_ml.ml_locked = NULL;
+  
+!      for (stack_idx = buf->b_ml.ml_stack_top - 1; stack_idx >= 0; --stack_idx)
+       {
+           buf->b_ml.ml_stack_top = 0;     /* stack is invalid when failing */
+           ip = &(buf->b_ml.ml_stack[stack_idx]);
+--- 3189,3196 ----
+       mf_free(mfp, hp);       /* free the data block */
+       buf->b_ml.ml_locked = NULL;
+  
+!      for (stack_idx = buf->b_ml.ml_stack_top - 1; stack_idx >= 0;
+!                                                                --stack_idx)
+       {
+           buf->b_ml.ml_stack_top = 0;     /* stack is invalid when failing */
+           ip = &(buf->b_ml.ml_stack[stack_idx]);
+***************
+*** 3956,3969 ****
+  #else
+           (buf->b_p_sn || buf->b_shortname),
+  #endif
+- #ifdef RISCOS
+-          /* Avoid problems if fname has special chars, eg <Wimp$Scrap> */
+-          ffname,
+- #else
+           fname_res,
+- #endif
+           (char_u *)
+! #if defined(VMS) || defined(RISCOS)
+           "_swp",
+  #else
+           ".swp",
+--- 3941,3949 ----
+  #else
+           (buf->b_p_sn || buf->b_shortname),
+  #endif
+           fname_res,
+           (char_u *)
+! #if defined(VMS)
+           "_swp",
+  #else
+           ".swp",
+***************
+*** 4427,4440 ****
+                   }
+                   close(fd);
+               }
+- #ifdef RISCOS
+-              else
+-                  /* Can't open swap file, though it does exist.
+-                   * Assume that the user is editing two files with
+-                   * the same name in different directories. No error.
+-                   */
+-                  differ = TRUE;
+- #endif
+  
+               /* give the ATTENTION message when there is an old swap file
+                * for the current file, and the buffer was not recovered. */
+--- 4407,4412 ----
+*** ../vim-7.3.186/src/misc1.c 2011-05-10 14:44:07.000000000 +0200
+--- src/misc1.c        2011-05-10 16:29:29.000000000 +0200
+***************
+*** 4589,4613 ****
+  vim_ispathsep(c)
+      int c;
+  {
+! #ifdef RISCOS
+!     return (c == '.' || c == ':');
+! #else
+! # ifdef UNIX
+      return (c == '/');           /* UNIX has ':' inside file names */
+! # else
+! #  ifdef BACKSLASH_IN_FILENAME
+      return (c == ':' || c == '/' || c == '\\');
+! #  else
+! #   ifdef VMS
+      /* server"user passwd"::device:[full.path.name]fname.extension;version" */
+      return (c == ':' || c == '[' || c == ']' || c == '/'
+           || c == '<' || c == '>' || c == '"' );
+! #   else             /* Amiga */
+      return (c == ':' || c == '/');
+! #   endif /* VMS */
+! #  endif
+  # endif
+! #endif /* RISC OS */
+  }
+  
+  #if defined(FEAT_SEARCHPATH) || defined(PROTO)
+--- 4589,4609 ----
+  vim_ispathsep(c)
+      int c;
+  {
+! #ifdef UNIX
+      return (c == '/');           /* UNIX has ':' inside file names */
+! #else
+! # ifdef BACKSLASH_IN_FILENAME
+      return (c == ':' || c == '/' || c == '\\');
+! # else
+! #  ifdef VMS
+      /* server"user passwd"::device:[full.path.name]fname.extension;version" */
+      return (c == ':' || c == '[' || c == ']' || c == '/'
+           || c == '<' || c == '>' || c == '"' );
+! #  else
+      return (c == ':' || c == '/');
+! #  endif /* VMS */
+  # endif
+! #endif
+  }
+  
+  #if defined(FEAT_SEARCHPATH) || defined(PROTO)
+*** ../vim-7.3.186/src/proto.h 2010-08-15 21:57:29.000000000 +0200
+--- src/proto.h        2011-05-10 16:29:45.000000000 +0200
+***************
+*** 62,70 ****
+  # ifdef __BEOS__
+  #  include "os_beos.pro"
+  # endif
+- # ifdef RISCOS
+- #  include "os_riscos.pro"
+- # endif
+  # ifdef __QNX__
+  #  include "os_qnx.pro"
+  # endif
+--- 62,67 ----
+***************
+*** 245,253 ****
+  #  ifdef FEAT_GUI_X11
+  #   include "gui_x11.pro"
+  #  endif
+- #  ifdef RISCOS
+- #   include "gui_riscos.pro"
+- #  endif
+  #  ifdef FEAT_GUI_PHOTON
+  #   include "gui_photon.pro"
+  #  endif
+--- 242,247 ----
+*** ../vim-7.3.186/src/quickfix.c      2011-05-05 17:14:07.000000000 +0200
+--- src/quickfix.c     2011-05-10 16:30:18.000000000 +0200
+***************
+*** 1182,1202 ****
+      if (fname == NULL || *fname == NUL)              /* no file name */
+       return 0;
+      {
+- #ifdef RISCOS
+-      /* Name is reported as `main.c', but file is `c.main' */
+-      return ro_buflist_add(fname);
+- #else
+       char_u      *ptr;
+       int         fnum;
+  
+! # ifdef VMS
+       vms_remove_version(fname);
+! # endif
+! # ifdef BACKSLASH_IN_FILENAME
+       if (directory != NULL)
+           slash_adjust(directory);
+       slash_adjust(fname);
+! # endif
+       if (directory != NULL && !vim_isAbsName(fname)
+               && (ptr = concat_fnames(directory, fname, TRUE)) != NULL)
+       {
+--- 1182,1198 ----
+      if (fname == NULL || *fname == NUL)              /* no file name */
+       return 0;
+      {
+       char_u      *ptr;
+       int         fnum;
+  
+! #ifdef VMS
+       vms_remove_version(fname);
+! #endif
+! #ifdef BACKSLASH_IN_FILENAME
+       if (directory != NULL)
+           slash_adjust(directory);
+       slash_adjust(fname);
+! #endif
+       if (directory != NULL && !vim_isAbsName(fname)
+               && (ptr = concat_fnames(directory, fname, TRUE)) != NULL)
+       {
+***************
+*** 1221,1227 ****
+           return fnum;
+       }
+       return buflist_add(fname, 0);
+- #endif
+      }
+  }
+  
+--- 1217,1222 ----
+*** ../vim-7.3.186/src/search.c        2011-02-25 18:38:29.000000000 +0100
+--- src/search.c       2011-05-10 16:30:38.000000000 +0200
+***************
+*** 4581,4589 ****
+      char_u   *already = NULL;
+      char_u   *startp = NULL;
+      char_u   *inc_opt = NULL;
+- #ifdef RISCOS
+-     int              previous_munging = __riscosify_control;
+- #endif
+  #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX)
+      win_T    *curwin_save = NULL;
+  #endif
+--- 4581,4586 ----
+***************
+*** 4596,4606 ****
+      if (file_line == NULL)
+       return;
+  
+- #ifdef RISCOS
+-     /* UnixLib knows best how to munge c file names - turn munging back on. */
+-     int __riscosify_control = 0;
+- #endif
+- 
+      if (type != CHECK_PATH && type != FIND_DEFINE
+  #ifdef FEAT_INS_EXPAND
+       /* when CONT_SOL is set compare "ptr" with the beginning of the line
+--- 4593,4598 ----
+***************
+*** 5228,5238 ****
+      vim_free(regmatch.regprog);
+      vim_free(incl_regmatch.regprog);
+      vim_free(def_regmatch.regprog);
+- 
+- #ifdef RISCOS
+-    /* Restore previous file munging state. */
+-     __riscosify_control = previous_munging;
+- #endif
+  }
+  
+      static void
+--- 5220,5225 ----
+*** ../vim-7.3.186/src/structs.h       2011-03-22 18:10:34.000000000 +0100
+--- src/structs.h      2011-05-10 16:30:49.000000000 +0200
+***************
+*** 2366,2376 ****
+      MenuHandle       menu_handle;
+      MenuHandle       submenu_handle;
+  #endif
+- #ifdef RISCOS
+-     int              *id;                /* Not used, but gui.c needs it */
+-     int              greyed_out;         /* Flag */
+-     int              hidden;
+- #endif
+  #ifdef FEAT_GUI_PHOTON
+      PtWidget_t       *id;
+      PtWidget_t       *submenu_id;
+--- 2366,2371 ----
+*** ../vim-7.3.186/src/term.c  2010-12-30 14:47:32.000000000 +0100
+--- src/term.c 2011-05-10 16:31:41.000000000 +0200
+***************
+*** 52,58 ****
+  
+  /*
+   * Here are the builtin termcap entries.  They are not stored as complete
+!  * Tcarr structures, as such a structure is too big.
+   *
+   * The entries are compact, therefore they normally are included even when
+   * HAVE_TGETENT is defined. When HAVE_TGETENT is defined, the builtin entries
+--- 52,58 ----
+  
+  /*
+   * Here are the builtin termcap entries.  They are not stored as complete
+!  * structures with all entries, as such a structure is too big.
+   *
+   * The entries are compact, therefore they normally are included even when
+   * HAVE_TGETENT is defined. When HAVE_TGETENT is defined, the builtin entries
+***************
+*** 199,269 ****
+  #endif
+  
+  #ifndef NO_BUILTIN_TCAPS
+- # if defined(RISCOS) || defined(ALL_BUILTIN_TCAPS)
+- /*
+-  * Default for the Acorn.
+-  */
+-     {(int)KS_NAME,   "riscos"},
+-     {(int)KS_CL,     "\014"},                /* Cls and Home Cursor */
+-     {(int)KS_CM,     "\001%d\001%d\002"},    /* Position cursor */
+- 
+-     {(int)KS_CCO,    "16"},                  /* Allow 16 colors */
+- 
+-     {(int)KS_CAF,    "\001%d\021"},          /* Set foreground colour */
+-     {(int)KS_CAB,    "\001%d\022"},          /* Set background colour */
+- 
+- 
+-     {(int)KS_ME,     "\004"},                /* Normal mode */
+-     {(int)KS_MR,     "\005"},                /* Reverse */
+- 
+-     {(int)KS_VI,     "\016"},                /* Cursor invisible */
+-     {(int)KS_VE,     "\017"},                /* Cursor visible */
+-     {(int)KS_VS,     "\020"},                /* Cursor very visible */
+- 
+-     {(int)KS_CS,     "\001%d\001%d\003"},    /* Set scroll region */
+-     {(int)KS_SR,     "\023"},                /* Scroll text down */
+-     {K_UP,           "\217"},
+-     {K_DOWN,         "\216"},
+-     {K_LEFT,         "\214"},
+-     {K_RIGHT,                "\215"},
+-     {K_S_UP,         "\237"},
+-     {K_S_DOWN,               "\236"},
+-     {K_S_LEFT,               "\234"},
+-     {K_S_RIGHT,              "\235"},
+- 
+-     {K_F1,           "\201"},
+-     {K_F2,           "\202"},
+-     {K_F3,           "\203"},
+-     {K_F4,           "\204"},
+-     {K_F5,           "\205"},
+-     {K_F6,           "\206"},
+-     {K_F7,           "\207"},
+-     {K_F8,           "\210"},
+-     {K_F9,           "\211"},
+-     {K_F10,          "\312"},
+-     {K_F11,          "\313"},
+-     {K_F12,          "\314"},
+-     {K_S_F1,         "\221"},
+-     {K_S_F2,         "\222"},
+-     {K_S_F3,         "\223"},
+-     {K_S_F4,         "\224"},
+-     {K_S_F5,         "\225"},
+-     {K_S_F6,         "\226"},
+-     {K_S_F7,         "\227"},
+-     {K_S_F8,         "\230"},
+-     {K_S_F9,         "\231"},
+-     {K_S_F10,                "\332"},
+-     {K_S_F11,                "\333"},
+-     {K_S_F12,                "\334"},
+-     {K_BS,           "\010"},
+-     {K_INS,          "\315"},
+-     {K_DEL,          "\177"},
+-     {K_HOME,         "\036"},
+-     {K_END,          "\213"},
+-     {K_PAGEUP,               "\237"},
+-     {K_PAGEDOWN,     "\236"},
+- # endif      /* Acorn terminal */
+- 
+  
+  # if defined(AMIGA) || defined(ALL_BUILTIN_TCAPS)
+  /*
+--- 199,204 ----
+***************
+*** 1399,1408 ****
+  /*
+   * DEFAULT_TERM is used, when no terminal is specified with -T option or $TERM.
+   */
+- #ifdef RISCOS
+- # define DEFAULT_TERM        (char_u *)"riscos"
+- #endif
+- 
+  #ifdef AMIGA
+  # define DEFAULT_TERM        (char_u *)"amiga"
+  #endif
+--- 1334,1339 ----
+*** ../vim-7.3.186/src/termlib.c       2010-08-15 21:57:30.000000000 +0200
+--- src/termlib.c      2011-05-10 16:31:58.000000000 +0200
+***************
+*** 13,19 ****
+  #include "vim.h"
+  #include "termlib.pro"
+  
+! #if !defined(AMIGA) && !defined(VMS) && !defined(MACOS) && !defined(RISCOS)
+  # include <sgtty.h>
+  #endif
+  
+--- 13,19 ----
+  #include "vim.h"
+  #include "termlib.pro"
+  
+! #if !defined(AMIGA) && !defined(VMS) && !defined(MACOS)
+  # include <sgtty.h>
+  #endif
+  
+*** ../vim-7.3.186/src/version.c       2011-05-10 16:12:40.000000000 +0200
+--- src/version.c      2011-05-10 16:37:20.000000000 +0200
+***************
+*** 1205,1213 ****
+  # endif
+  #endif
+  
+- #ifdef RISCOS
+-     MSG_PUTS(_("\nRISC OS version"));
+- #endif
+  #ifdef VMS
+      MSG_PUTS(_("\nOpenVMS version"));
+  # ifdef HAVE_PATHDEF
+--- 1207,1212 ----
+*** ../vim-7.3.186/src/vim.h   2011-05-05 16:41:19.000000000 +0200
+--- src/vim.h  2011-05-10 16:32:40.000000000 +0200
+***************
+*** 184,192 ****
+  #  define SIZEOF_INT 2
+  # endif
+  #endif
+- #ifdef RISCOS
+- # define SIZEOF_INT 4
+- #endif
+  
+  
+  #include "feature.h" /* #defines for optionals and features */
+--- 184,189 ----
+***************
+*** 340,349 ****
+  # include "os_mac.h"
+  #endif
+  
+- #ifdef RISCOS
+- # include "os_riscos.h"
+- #endif
+- 
+  #ifdef __QNX__
+  # include "os_qnx.h"
+  #endif
+--- 337,342 ----
+*** ../vim-7.3.186/src/gui_riscos.h    2010-08-15 21:57:28.000000000 +0200
+--- src/gui_riscos.h   1970-01-01 01:00:00.000000000 +0100
+***************
+*** 1,32 ****
+- /* vi:set ts=8 sts=4 sw=4:
+-  *
+-  * VIM - Vi IMproved by Bram Moolenaar
+-  *
+-  * Do ":help uganda"  in Vim to read copying and usage conditions.
+-  * Do ":help credits" in Vim to see a list of people who contributed.
+-  */
+- 
+- #define FEAT_BROWSE
+- 
+- #define TASK 0x4b534154
+- 
+- /* Nested wimp flags: */
+- #define CHILD_FIX_TO_WORKAREA        0
+- #define CHILD_FIX_TO_LEFT    1
+- #define CHILD_FIX_TO_BOTTOM  1
+- #define CHILD_FIX_TO_RIGHT   2
+- #define CHILD_FIX_TO_TOP     2
+- 
+- #define CHILD_SELF_SCROLL    0
+- #define CHILD_PARENT_SCROLL  1
+- 
+- #define CHILD_LEFT           16
+- #define CHILD_BOTTOM         18
+- #define CHILD_RIGHT          20
+- #define CHILD_TOP            22
+- #define CHILD_SCROLL_X               24
+- #define CHILD_SCROLL_Y               26
+- 
+- int wimp_poll(int mask, int *block);
+- int wimp_poll_idle(int mask, int *block, int end_time);
+- void ro_open_main(int *block);
+--- 0 ----
+*** ../vim-7.3.186/src/os_riscos.h     2010-08-15 21:57:30.000000000 +0200
+--- src/os_riscos.h    1970-01-01 01:00:00.000000000 +0100
+***************
+*** 1,166 ****
+- /* vi:set ts=8 sts=4 sw=4:
+-  *
+-  * VIM - Vi IMproved by Bram Moolenaar
+-  *
+-  * Do ":help uganda"  in Vim to read copying and usage conditions.
+-  * Do ":help credits" in Vim to see a list of people who contributed.
+-  */
+- 
+- #include <sys/types.h>
+- #include <sys/stat.h>
+- #include <sys/ioctl.h>
+- #include <termios.h>
+- #include <stdlib.h>
+- #include <unixlib/local.h>
+- #include <errno.h>
+- #include <fcntl.h>
+- 
+- #define CASE_INSENSITIVE_FILENAME
+- #define FEAT_MODIFY_FNAME
+- #define FEAT_OSFILETYPE
+- #define DFLT_OFT     "Text"
+- #define USE_TERM_CONSOLE
+- #define HAVE_AVAIL_MEM
+- 
+- /* Longer filenames now accessible to all */
+- #ifndef BASENAMELEN
+- # define BASENAMELEN 64 /* Same length as unzip */
+- #endif
+- 
+- #ifndef TEMNAME
+- # define TEMPNAME    "<Wimp$ScrapDir>.v?XXXXXX"
+- # define TEMPNAMELEN 25
+- #endif
+- 
+- #ifndef DFLT_HELPFILE
+- # define DFLT_HELPFILE "Vim:doc.help"
+- #endif
+- 
+- #ifndef DFLT_BDIR
+- # define DFLT_BDIR   ".,<Wimp$ScrapDir>."    /* default for 'backupdir' */
+- #endif
+- 
+- /* Paths to try putting swap file in. */
+- #ifndef DFLT_DIR
+- # define DFLT_DIR    "<Wimp$ScrapDir>.,."    /* default for 'directory' */
+- #endif
+- 
+- #ifndef DFLT_VDIR
+- # define DFLT_VDIR   "Choices:Vim.view"      /* default for 'viewdir' */
+- #endif
+- 
+- #ifndef TERMCAPFILE
+- # define TERMCAPFILE "Vim:TermCap"
+- #endif
+- #define HAVE_TGETENT
+- 
+- #ifndef SYNTAX_FNAME
+- # define SYNTAX_FNAME        "Vim:Syntax.%s"
+- #endif
+- 
+- #ifndef EVIM_FILE
+- # define EVIM_FILE   "Vim:Evim"
+- #endif
+- 
+- #define FEAT_VIMINFO
+- 
+- #ifndef VIMINFO_FILE
+- # define VIMINFO_FILE        "<Choices$Write>.Vim.VimInfo"
+- #endif
+- #ifndef VIMINFO_FILE2
+- # define VIMINFO_FILE2       "Choices:Vim.VimInfo"
+- #endif
+- 
+- #ifndef VIMRC_FILE
+- # define VIMRC_FILE  "/vimrc"
+- #endif
+- #ifndef EXRC_FILE
+- # define EXRC_FILE   "/exrc"
+- #endif
+- #ifndef GVIMRC_FILE
+- # define GVIMRC_FILE "/gvimrc"
+- #endif
+- #ifndef USR_VIMRC_FILE
+- # define USR_VIMRC_FILE      "Vim:Evim"
+- #endif
+- #ifndef SESSION_FILE
+- # define SESSION_FILE        "/Session.vim"
+- #endif
+- #ifndef USR_VIMRC_FILE
+- # define USR_VIMRC_FILE      "Choices:Vim.VimRC"
+- #endif
+- #ifndef USR_GVIMRC_FILE
+- # define USR_GVIMRC_FILE    "Choices:Vim.GVimRC"
+- #endif
+- #ifndef USR_EXRC_FILE
+- # define USR_EXRC_FILE    "Choices:Vim.ExRC"
+- #endif
+- #ifndef SYS_VIMRC_FILE
+- # define SYS_VIMRC_FILE          "Vim:VimRC"
+- #endif
+- #ifndef SYS_GVIMRC_FILE
+- # define SYS_GVIMRC_FILE    "Vim:GVimRC"
+- #endif
+- #ifndef SYS_MENU_FILE
+- # define SYS_MENU_FILE           "Vim:Menu"
+- #endif
+- #ifndef SYS_OPTWIN_FILE
+- # define SYS_OPTWIN_FILE    "Vim:Optwin"
+- #endif
+- #ifndef FILETYPE_FILE
+- # define FILETYPE_FILE           "Vim:Filetype"
+- #endif
+- #ifndef FTPLUGIN_FILE
+- # define FTPLUGIN_FILE           "Vim:Ftplugin/vim"
+- #endif
+- #ifndef INDENT_FILE
+- # define INDENT_FILE     "Vim:Indent/vim"
+- #endif
+- #ifndef FTOFF_FILE
+- # define FTOFF_FILE      "Vim:Ftoff"
+- #endif
+- #ifndef FTPLUGOF_FILE
+- # define FTPLUGOF_FILE           "Vim:Ftplugof"
+- #endif
+- #ifndef INDOFF_FILE
+- # define INDOFF_FILE     "Vim:Indoff"
+- #endif
+- 
+- #define DFLT_ERRORFILE               "errors/vim"
+- #define DFLT_RUNTIMEPATH     "Choices:Vim,Vim:,Choices:Vim.after"
+- 
+- /*
+-  * RISC PCs have plenty of memory, use large buffers
+-  */
+- #define CMDBUFFSIZE 1024     /* size of the command processing buffer */
+- #define MAXPATHL    256              /* paths are always quite short though */
+- 
+- #ifndef DFLT_MAXMEM
+- # define DFLT_MAXMEM (5*1024)    /* use up to 5 Mbyte for a buffer */
+- #endif
+- 
+- #ifndef DFLT_MAXMEMTOT
+- # define DFLT_MAXMEMTOT      (10*1024)    /* use up to 10 Mbyte for Vim */
+- #endif
+- 
+- #ifdef HAVE_SIGSET
+- # define signal sigset
+- #endif
+- 
+- #define n_flag (1<<31)
+- #define z_flag (1<<30)
+- #define c_flag (1<<29)
+- #define v_flag (1<<28)
+- 
+- /* These take r0-r7 as inputs, returns r0-r7 in global variables. */
+- void swi(int swinum, ...);      /* Handles errors itself */
+- int xswi(int swinum, ...);      /* Returns errors using v flag */
+- extern int r0, r1, r2, r3, r4, r5, r6, r7;  /* For return values */
+- 
+- #include <kernel.h>
+- #include <swis.h>
+- 
+- #define mch_memmove(to, from, len) memmove((char *)(to), (char *)(from), len)
+- #define mch_rename(src, dst) rename(src, dst)
+- #define mch_getenv(x) (char_u *)getenv((char *)x)
+- #define mch_setenv(name, val, x) setenv(name, val, x)
+--- 0 ----
+*** ../vim-7.3.186/src/gui_riscos.c    2011-05-10 15:52:10.000000000 +0200
+--- src/gui_riscos.c   1970-01-01 01:00:00.000000000 +0100
+***************
+*** 1,3558 ****
+- /* vi:set ts=8 sts=4 sw=4:
+-  *
+-  * VIM - Vi IMproved by Bram Moolenaar
+-  *
+-  * Do ":help uganda"  in Vim to read copying and usage conditions.
+-  * Do ":help credits" in Vim to see a list of people who contributed.
+-  * See README.txt for an overview of the Vim source code.
+-  */
+- 
+- #include "vim.h"
+- #include <string.h>
+- 
+- /*
+-  * gui_riscos.c
+-  *
+-  * Thomas Leonard <tal197@ecs.soton.ac.uk>
+-  * Updated by Andy Wingate <andy@sparse.net>
+-  */
+- 
+- extern int time_of_last_poll;
+- 
+- int task_handle = 0;         /* Zero means we are not yet a Wimp task */
+- int child_handle = 0;                /* Task handle of our child process (zero if none). */
+- int *wimp_menu = (int *) -1; /* Pointer to a Wimp menu structure (or -1) */
+- int save_window = -1;                /* Save As window handle */
+- 
+- int *redraw_block = NULL;    /* NULL means not in a redraw loop. */
+- int ro_return_early = FALSE; /* Break out of gui_mch_wait_for_chars() */
+- 
+- int leaf_ref = 0;            /* Wimp message number - send via Wimp$Scrap */
+- char_u *leaf_name = NULL;    /* Leaf name from DataSave */
+- 
+- int default_columns = 120;   /* These values are used if the --rows and --columns */
+- int default_rows = 32;               /* options aren't used on startup. */
+- 
+- #define DRAG_FALSE       0
+- #define DRAG_SELECTION           1
+- #define DRAG_RESIZE_WINDOW  2
+- int ro_dragging = DRAG_FALSE;
+- int drag_button;
+- int drag_modifiers;
+- int drag_x_offset;
+- int drag_y_offset;
+- 
+- int nested_wimp = FALSE;     /* Bool - can we use the new wimp? */
+- 
+- int changed_mode = FALSE;
+- int x_eigen_factor;
+- int y_eigen_factor;
+- 
+- /* If ro_current_font is non-zero then use the outline font with that handle,
+-  * otherwise, if zap_redraw is TRUE then use ZapRedraw, otherwise use the
+-  * system font.
+-  *
+-  * If zap_redraw is TRUE then zap_file[] contains valid Zap font file
+-  * pointers (or NULLs).
+-  */
+- int ro_current_font = 0;     /* 0 is system font, or ZapRedraw */
+- int font_x_offset   = 0;     /* Where to position each char in its box */
+- int font_y_offset   = 0;
+- 
+- int zap_redraw           = FALSE;
+- int double_height   = FALSE; /* Plot each line twice? */
+- 
+- #define grgb(r,g,b) ((b<<16) + (g<<8) + (r))
+- #define UNUSED_COLOUR (gui.back_pixel)
+- 
+- #define RO_LOAD_CLIPBOARD -2 /* Internal handle for DataSave message. */
+- 
+- /* Changes by John Kortink, 22-23 July 1998
+-  *
+-  * Stuff to make redraw a lot faster. Almost all of it is right here below,
+-  * elsewhere changes are marked with 'JK230798'. Apart from a small change in
+-  * 'gui.c' all changes are limited to this file, 'gui_riscos.c'. The change in
+-  * 'gui.c' is to make Vim stop being 'smart' not redrawing characters that are
+-  * 'already there' (i.e. from the previous line, by coincidence). This caused a
+-  * lot more calls to the redraw code, which we want to avoid because a few nice
+-  * big strings at a time is a lot faster than a truckload of small ones. ('Dear
+-  * Bram ...').
+-  */
+- 
+- /* The ZapRedraw structure */
+- 
+- static struct
+- {
+-     int              r_flags;
+-     int              r_minx;
+-     int              r_miny;
+-     int              r_maxx;
+-     int              r_maxy;
+-     int              r_screen;
+-     int              r_bpl;
+-     int              r_bpp;
+-     int              r_charw;
+-     int              r_charh;
+-     char     *r_caddr;
+-     int              r_cbpl;
+-     int              r_cbpc;
+-     int              r_linesp;
+-     int              r_data;
+-     int              r_scrollx;
+-     int              r_scrolly;
+-     int              *r_palette;
+-     int              r_for;
+-     int              r_bac;
+-     char     *r_workarea;
+-     int              r_magx;
+-     int              r_magy;
+-     int              r_xsize;
+-     int              r_ysize;
+-     int              r_mode;
+- }
+- zap_redraw_block;
+- 
+- /* Other globals */
+- 
+- static int   zap_redraw_initialised = FALSE;
+- static int   zap_redraw_update_colours;
+- static int   zap_redraw_colours[2];
+- static int   zap_redraw_palette[16];
+- 
+- /* Holds the current Zap font file(s).
+-  * The font is recreated from this block on a mode change.
+-  * When using zap, element ZAP_NORMAL is always valid, but
+-  * the others can be NULL.
+-  */
+- 
+- #define ZAP_NORMAL  0
+- #define ZAP_BOLD    1
+- #define ZAP_ITALIC  2
+- #define ZAP_BITALIC 3
+- #define ZAP_STYLES  4
+- 
+- /* Zap font file format data */
+- static char  *zap_file[ZAP_STYLES] = {NULL, NULL, NULL, NULL};
+- 
+- /* r_caddr format for current mode */
+- static char  *zap_caddr[ZAP_STYLES] = {NULL, NULL, NULL, NULL};
+- 
+- static void ro_remove_menu(int *menu);
+- 
+- /*
+-  * Initialise all the ZapRedraw stuff.
+-  * Call this when changing font and after each mode change.
+-  * zap_redraw_bitmap must contain a valid Zap font file (possibly
+-  * created from the system font).
+-  *
+-  * Return FAIL to revert to system font (if we can't use ZapRedraw).
+-  */
+-     int
+- ro_zap_redraw_initialise()
+- {
+-     int          bytes_per_bitmap_char;
+-     int          first, last;
+-     int          i;
+- 
+-     /* Can't have initialisers for struct members :-(, ok, this way then ... */
+-     if (!zap_redraw_initialised)
+-     {
+-      zap_redraw_block.r_workarea = NULL;
+-      zap_redraw_initialised = TRUE;
+-     }
+- 
+-     /* We redraw in DSA mode */
+-     zap_redraw_block.r_flags = 0x0;
+- 
+-     /* Let ZapRedraw get the screen address for us */
+-     zap_redraw_block.r_screen = 0;
+- 
+-     /* Read the font width and height from the font file header.
+-      * Assume that all styles are the same size.
+-      * ZAP_NORMAL is always present.
+-      */
+-     zap_redraw_block.r_charw = ((int *) zap_file[ZAP_NORMAL])[2];
+-     zap_redraw_block.r_charh = ((int *) zap_file[ZAP_NORMAL])[3];
+- 
+-     /* We have no linespacing */
+-     zap_redraw_block.r_linesp = 0;
+- 
+-     /* Fix foreground = colour 1 */
+-     zap_redraw_block.r_for = 1;
+- 
+-     /* Fix background = colour 0 */
+-     zap_redraw_block.r_bac = 0;
+- 
+-     /* Colour mask buffer */
+-     zap_redraw_block.r_palette = zap_redraw_palette;
+- 
+-     /* Allocate local workspace (for the few calls following here) */
+-     if (zap_redraw_block.r_workarea != NULL)
+-      free(zap_redraw_block.r_workarea);
+-     zap_redraw_block.r_workarea = (char*) malloc(128);
+-     if (!zap_redraw_block.r_workarea)
+-      return FAIL;    /* Out of memory */
+- 
+-     /* Fill in VDU variables */
+-     if (xswi(ZapRedraw_ReadVduVars, 0, &zap_redraw_block) & v_flag)
+-      return FAIL;        /* Can't find ZapRedraw module - use VDU instead */
+- 
+-     /* Determine cbpl and cbpc */
+-     swi(ZapRedraw_CachedCharSize, zap_redraw_block.r_bpp, 0,
+-      zap_redraw_block.r_charw, zap_redraw_block.r_charh);
+-     zap_redraw_block.r_cbpl = r2;
+-     zap_redraw_block.r_cbpc = r3;
+- 
+-     /* Allocate general workspace (for the calls outside) */
+-     if (zap_redraw_block.r_workarea != NULL)
+-      free(zap_redraw_block.r_workarea);
+-     zap_redraw_block.r_workarea = (char*) malloc(128 + zap_redraw_block.r_cbpl);
+-     if (!zap_redraw_block.r_workarea)
+-      return FAIL;    /* Out of memory */
+- 
+-     /* Now convert the 1 bpp character data ready for the current mode */
+- 
+-     bytes_per_bitmap_char = (zap_redraw_block.r_charw * zap_redraw_block.r_charh + 7) / 8;
+- 
+-     /* Convert the fonts from 1bpp to a format suitable for the
+-      * current mode.
+-      */
+-     for (i = 0; i < ZAP_STYLES; i++)
+-     {
+-      first = ((int *) zap_file[i])[4];
+-      last  = ((int *) zap_file[i])[5];
+- 
+-      if (last > 255)
+-          last = 255; /* Don't convert cursors (overwrites memory!) */
+- 
+-      /* Allocate the font cache */
+-      vim_free(zap_caddr[i]);
+-      if (zap_file[i])
+-          zap_caddr[i] = (char*) malloc(zap_redraw_block.r_cbpc * 256);
+-      else
+-          zap_caddr[i] = NULL;    /* No file for this style */
+- 
+-      if (zap_caddr[i])
+-      {
+-          zap_redraw_block.r_caddr = zap_caddr[i];
+- 
+-          swi(ZapRedraw_ConvertBitmap, 0, &zap_redraw_block,
+-                  first, last,                /* Range of characters to convert */
+-                  zap_file[i] + 0x20  /* Addr of first char provided by font */
+-                  - first * bytes_per_bitmap_char);
+-      }
+-     }
+- 
+-     if (!zap_caddr[ZAP_NORMAL])
+-     {
+-      zap_redraw = FALSE;     /* Out of memory */
+-      return FAIL;
+-     }
+- 
+-     /* Next time we need them, we have to update the colour masks */
+-     zap_redraw_update_colours = TRUE;
+- 
+-     return OK;
+- }
+- 
+- /*
+-  * Redraw a string at OS coordinates <x,y> (top-left, x inclusive, y exclusive).
+-  * Graphics clip window is window[0..3] as in R1+28..40 of Wimp_RedrawWindow.
+-  * Returns (possibly modified) flags.
+-  */
+-     int
+- ro_zap_redraw_draw_string(x, y, string, length, flags, clip)
+-     int          x;
+-     int          y;
+-     char    *string;
+-     int          length;
+-     int          flags;      /* DRAW_TRANSP, DRAW_BOLD, DRAW_UNDERL, DRAW_ITALIC */
+-     int          *clip;
+- {
+-     char redraw_data[1024];
+-     int clip_minx;
+-     int clip_miny;
+-     int clip_maxx;
+-     int clip_maxy;
+-     int os_xshift = zap_redraw_block.r_magx;
+-     int os_yshift = zap_redraw_block.r_magy;
+- 
+-     if (flags & DRAW_TRANSP)
+-      return flags;   /* We don't do transparent plotting yet. */
+- 
+-     if (flags & DRAW_BOLD)
+-     {
+-      if (flags & DRAW_ITALIC && zap_caddr[ZAP_BITALIC])
+-          zap_redraw_block.r_caddr = zap_caddr[ZAP_BITALIC];
+-      else
+-          zap_redraw_block.r_caddr = zap_caddr[ZAP_BOLD];
+-     }
+-     else
+-     {
+-      if (flags & DRAW_ITALIC)
+-          zap_redraw_block.r_caddr = zap_caddr[ZAP_ITALIC];
+-      else
+-          zap_redraw_block.r_caddr = zap_caddr[ZAP_NORMAL];
+-     }
+-     if (!zap_redraw_block.r_caddr)
+-     {
+-      zap_redraw_block.r_caddr = zap_caddr[ZAP_NORMAL];
+-      flags |= DRAW_UNDERL;       /* Style missing - we can always underline */
+-     }
+- 
+-     /* Set the vertical scaling flag */
+-     if (double_height)
+-      zap_redraw_block.r_flags = 1 << 1;
+-     else
+-      zap_redraw_block.r_flags = 0;
+- 
+-     /* Update the colour masks (if needed) */
+-     if (zap_redraw_update_colours)
+-     {
+-      swi(ZapRedraw_CreatePalette, 2,
+-              &zap_redraw_block,
+-              zap_redraw_colours,
+-              zap_redraw_block.r_palette, 2);
+-      zap_redraw_update_colours = FALSE;
+-     }
+- 
+-     /* Target rectangle in ZapRedraw rectangle coordinates (pixels, Y-min/max reversed !!!) */
+-     zap_redraw_block.r_minx = x >> os_xshift;                                        /* inclusive */
+-     zap_redraw_block.r_miny = zap_redraw_block.r_ysize - (y >> os_yshift);   /* inclusive */
+-     zap_redraw_block.r_maxx = (x + length * gui.char_width) >> os_xshift;    /* exclusive */
+-     zap_redraw_block.r_maxy = zap_redraw_block.r_ysize - ((y - gui.char_height) >> os_yshift);
+-                                                                              /* exclusive */
+- 
+-     /* Clip rectangle in ZapRedraw rectangle coordinates (pixels, Y-min/max reversed !!!) */
+-     clip_minx = clip[0] >> os_xshift;                                        /* inclusive */
+-     clip_miny = zap_redraw_block.r_ysize - (clip[3] >> os_yshift);   /* inclusive */
+-     clip_maxx = clip[2] >> os_xshift;                                        /* exclusive */
+-     clip_maxy = zap_redraw_block.r_ysize - (clip[1] >> os_yshift);   /* exclusive */
+- 
+-     /* Clip target rectangle against the current graphics window */
+-     if (zap_redraw_block.r_minx < clip_minx)
+-     {
+-      zap_redraw_block.r_scrollx = clip_minx - zap_redraw_block.r_minx;
+-      zap_redraw_block.r_minx = clip_minx;
+-     }
+-     else
+-      zap_redraw_block.r_scrollx = 0;
+-     if (zap_redraw_block.r_miny < clip_miny)
+-     {
+-      zap_redraw_block.r_scrolly = clip_miny - zap_redraw_block.r_miny;
+-      zap_redraw_block.r_miny = clip_miny;
+-     }
+-     else
+-      zap_redraw_block.r_scrolly = 0;
+-     if (zap_redraw_block.r_maxx > clip_maxx)
+-      zap_redraw_block.r_maxx = clip_maxx;
+-     if (zap_redraw_block.r_maxy > clip_maxy)
+-      zap_redraw_block.r_maxy = clip_maxy;
+- 
+-     /* Fill in the character data structure */
+-     if (length > (sizeof(redraw_data) - 2 * 4 - 2))
+-      length = sizeof(redraw_data) - 2 * 4 - 2;
+-     ((int*) redraw_data)[0] = 2 * 4;
+-     ((int*) redraw_data)[1] = 0;
+-     strncpy(redraw_data + 2 * 4, string, length);
+-     redraw_data[2 * 4 + length + 0] = '\0';
+-     redraw_data[2 * 4 + length + 1] = '\x2';
+-     zap_redraw_block.r_data = (int) redraw_data;
+- 
+-     /* Perform the draw */
+-     swi(ZapRedraw_RedrawArea, 0, &zap_redraw_block);
+- 
+-     return flags;
+- }
+- 
+- /*
+-  * Okay that was it from me, back to Thomas ...
+-  */
+- 
+- /*
+-  * Parse the GUI related command-line arguments.  Any arguments used are
+-  * deleted from argv, and *argc is decremented accordingly.  This is called
+-  * when vim is started, whether or not the GUI has been started.
+-  */
+-     void
+- gui_mch_prepare(int *argc, char **argv)
+- {
+-     int          arg = 1;
+- 
+-     while (arg < *argc - 1)
+-     {
+-      if (strcmp(argv[arg], "--rows") == 0 || strcmp(argv[arg], "--columns") == 0)
+-      {
+-          int     value;
+- 
+-          value = atoi(argv[arg + 1]);
+- 
+-          if (argv[arg][2] == 'r')
+-              default_rows = value;
+-          else
+-              default_columns = value;
+- 
+-          /* Delete argument from argv[]. (hope this is read/write!) */
+- 
+-          *argc -= 2;
+-          if (*argc > arg)
+-          mch_memmove(&argv[arg], &argv[arg + 2], (*argc - arg)
+-                  * sizeof(char *));
+-      }
+-      else
+-          arg++;
+-     }
+- }
+- 
+- /* Fatal error on initialisation - report it and die. */
+-     void
+- ro_die(error)
+-     char_u *error;   /* RISC OS error block */
+- {
+-     swi(Wimp_ReportError, error, 5, "GVim");
+-     exit(EXIT_FAILURE);
+- }
+- 
+- /* Find the sizes of the window tools:
+-  *
+-  * Create a test window.
+-  * Find inner and outer sizes.
+-  * Find the difference.
+-  * Delete window.
+-  *
+-  * While we're here, find the eigen values too.
+-  */
+-     void
+- ro_measure_tools()
+- {
+-     int block[10];
+-     int vdu[] = { 4, 5, -1};
+-     int test_window[] =
+-      {
+-          -100, -100,         /* Visible area : min X,Y */
+-          -50, -50,           /*                max X,Y */
+-          0,   0,             /* Scroll offsets */
+-          -1,                 /* Window in front */
+-          0xd0800150,         /* Window flags */
+-          0xff070207,         /* Colours */
+-          0x000c0103,         /* More colours */
+-          0, -0x4000,         /* Workarea extent */
+-          0x4000, 0,          /* max X,Y */
+-          0x00000000,         /* No title */
+-          0 << 12,            /* No workarea button type */
+-          1,                  /* Wimp sprite area */
+-          0x00010001,         /* Minimum width, height */
+-          0, 0, 0,            /* Title data (none) */
+-          0                   /* No icons */
+-      };
+-     int inner_max_x, inner_min_y;
+- 
+-     swi(Wimp_CreateWindow, 0, test_window);
+- 
+-     block[0] = r0;
+-     /* Open the window (and read state).
+-      * GetWindowOutline needs it too if the wimp isn't nested.
+-      */
+-     swi(Wimp_OpenWindow, 0, block);
+-     inner_max_x = block[3];
+-     inner_min_y = block[2];
+- 
+-     swi(Wimp_GetWindowOutline, 0, block);
+- 
+-     gui.scrollbar_width = block[3] - inner_max_x;
+-     gui.scrollbar_height = inner_min_y - block[2];
+- 
+-     swi(Wimp_DeleteWindow, 0, block);
+- 
+-     /* Read the size of one pixel. */
+-     swi(OS_ReadVduVariables, vdu, vdu);
+-     x_eigen_factor = vdu[0];
+-     y_eigen_factor = vdu[1];
+- }
+- 
+- /* Load a template from the current templates file.
+-  * Create the window and return its handle.
+-  */
+-     int
+- ro_load_template(str_name, title, title_size)
+-     char_u  *str_name;      /* Identifier of window in file (max 12 chars)   */
+-     char_u  **title;     /* If not NULL then return pointer to title here */
+-     int     *title_size;    /* If not NULL then return the title length here */
+- {
+-     int     *window;
+-     char    *data;
+-     int     name[4];
+- 
+-     strcpy( (char *) name, str_name);
+- 
+-     /* Find how big we must make the buffers */
+- 
+-     if (xswi(Wimp_LoadTemplate, 0, 0, 0, 0, -1, name, 0) & v_flag)
+-      ro_die( (char *) r0);
+- 
+-     window = malloc(r1);     /* Don't print text messages from alloc() */
+-     data = malloc(r2);
+-     if (window == NULL || data == NULL)
+-      ro_die("\0\0\0\0Out of memory - Can't load templates");
+- 
+-     /* Load the template into the buffers */
+- 
+-     swi(Wimp_LoadTemplate, 0,
+-                              window,         /* Temp block */
+-                              data,           /* Icon data */
+-                              data + r2 + 1,  /* End of icon data */
+-                              -1,             /* No fonts */
+-                              name, 0);       /* First match */
+-     if (r6 == 0)
+-      ro_die("\0\0\0\0Can't find window in Templates file");
+- 
+-     /* Create the window */
+- 
+-     if (xswi(Wimp_CreateWindow, 0, window) & v_flag)
+-      ro_die( (char *) r0);
+- 
+-     if (title)
+-      *title = (char_u *) window[18];
+-     if (title_size)
+-      *title_size = window[20];
+- 
+-     free(window);    /* Free temp block */
+-     return r0;               /* Return the window handle */
+- }
+- 
+- /*
+-  * Check if the GUI can be started.  Called before gvimrc is sourced.
+-  * Return OK or FAIL.
+-  */
+-     int
+- gui_mch_init_check()
+- {
+-     return OK;               /* TODO: GUI can always be started? */
+- }
+- 
+- /*
+-  * Initialise the RISC OS GUI.
+-  * Create all the windows.
+-  * Returns OK for success, FAIL when the GUI can't be started.
+-  */
+-     int
+- gui_mch_init()
+- {
+-     int     messages[] = {
+-          1, 2, 3, 4, /* DataSave, DataSaveAck, DataLoad, DataLoadAck */
+-          8,          /* PreQuit */
+-          0xf,        /* ClaimEntity (for clipboard) */
+-          0x10,       /* DataRequest (for clipboard) */
+-          0x400c1,    /* Mode change */
+-          0x400c3,    /* TaskCloseDown */
+-          0x400c9,    /* MenusDeleted */
+-          0x808c1,    /* TW_Output */
+-          0x808c2,    /* TW_Ego */
+-          0x808c3,    /* TW_Morio */
+-          0x808c4,    /* TW_Morite */
+-          0};         /* End-of-list. */
+- 
+- 
+-     /* There may have been some errors reported in the
+-      * command window before we get here. Wait if so.
+-      */
+-     swi(Wimp_ReadSysInfo, 3);
+-     if (r0 == 0)
+-      swi(Wimp_CommandWindow, 0);     /* Window opened - close with prompt */
+- 
+-     if (xswi(Wimp_Initialise, 310, 0x4b534154, "GVim", messages) & v_flag)
+-      return FAIL;
+-     nested_wimp = r0 >= 397;
+-     task_handle = r1;
+- 
+-     /* Load the templates. */
+- 
+-     if (xswi(Wimp_OpenTemplate, 0, "Vim:Templates") & v_flag)
+-      ro_die( (char *) r0);
+- 
+-     gui.window_handle = ro_load_template("editor",
+-          &gui.window_title,
+-          &gui.window_title_size);
+- 
+-     save_window = ro_load_template("save", NULL, NULL);
+- 
+-     swi(Wimp_CloseTemplate);
+- 
+-     /* Set default foreground and background colours. */
+- 
+-     gui.norm_pixel = gui.def_norm_pixel;
+-     gui.back_pixel = gui.def_back_pixel;
+- 
+-     /* Get the colours from the "Normal" and "Menu" group (set in syntax.c or
+-      * in a vimrc file) */
+- 
+-     set_normal_colors();
+- 
+-     /*
+-      * Check that none of the colors are the same as the background color
+-      */
+- 
+-     gui_check_colors();
+- 
+-     /* Get the colours for the highlight groups (gui_check_colors() might have
+-      * changed them) */
+- 
+-     highlight_gui_started();         /* re-init colours and fonts */
+- 
+-     /* Set geometry based on values read on initialisation. */
+- 
+-     gui.num_cols = Columns = default_columns;
+-     gui.num_rows = Rows    = default_rows;
+- 
+-     /* Get some information about our environment. */
+- 
+-     ro_measure_tools();
+- 
+-     return OK;
+- }
+- 
+- /*
+-  * Called when the foreground or background colour has been changed.
+-  */
+-     void
+- gui_mch_new_colors()
+- {
+- }
+- 
+- /*
+-  * Open the GUI window which was created by a call to gui_mch_init().
+-  */
+-     int
+- gui_mch_open(void)
+- {
+-     int block[10];
+- 
+-     block[0] = gui.window_handle;
+-     swi(Wimp_GetWindowState, 0, block);
+-     block[7] = -1;               /* Open at the top of the stack */
+-     swi(Wimp_OpenWindow, 0, block);
+- 
+-     /* Give the new window the input focus */
+-     swi(Wimp_SetCaretPosition, gui.window_handle, -1, 0, 0, -1, -1);
+- 
+-     if (gui_win_x != -1 && gui_win_y != -1)
+-      gui_mch_set_winpos(gui_win_x, gui_win_y);
+- 
+-     return OK;
+- }
+- 
+-     void
+- gui_mch_exit(int rc)
+- {
+-     int          block[64];
+- 
+-     /* Close window. Stops us from getting troublesome events
+-      * if we take a while to die.
+-      */
+-     block[0] = gui.window_handle;
+-     swi(Wimp_CloseWindow, 0, block);
+- 
+-     if (child_handle)
+-     {
+-      /* We still have a sub-task running - kill it */
+-      block[0] = 20;
+-      block[3] = 0;
+-      block[4] = 0;       /* Quit */
+-      if ((xswi(Wimp_SendMessage, 17, block, child_handle) & v_flag) == 0)
+-      {
+-          /* Idle until child dies. */
+-          while (child_handle)
+-          {
+-              process_event(wimp_poll(1, block), block);
+-          }
+-      }
+-     }
+- 
+-     exit(rc);
+- }
+- 
+- /*
+-  * Get the position of the top left corner of the window.
+-  */
+-     int
+- gui_mch_get_winpos(int *x, int *y)
+- {
+-     /* TODO */
+-     return FAIL;
+- }
+- 
+- /*
+-  * Set the position of the top left corner of the window to the given
+-  * coordinates.
+-  */
+-     void
+- gui_mch_set_winpos(int x, int y)
+- {
+-     /* TODO */
+- }
+- 
+-     void
+- gui_mch_set_shellsize(width, height, min_width, min_height, base_width, base_height, direction)
+-     int width;               /* In OS units */
+-     int height;
+-     int min_width;   /* Smallest permissible window size (ignored) */
+-     int min_height;
+-     int base_width;  /* Space for scroll bars, etc */
+-     int base_height;
+-     int direction;
+- {
+-     int s_width, s_height;
+-     int block[] = {
+-      gui.window_handle,
+-      0,
+-      -height + 1,
+-      width,
+-      1};
+- 
+-     gui_mch_get_screen_dimensions(&s_width, &s_height);
+-     s_width -= base_width;
+-     s_height -= base_height;             /* Underestimate - ignores titlebar */
+- 
+-     swi(Wimp_GetWindowState, 0, block);
+-     block[3]  = block[1] + width;
+-     block[2]  = block[4] - height;
+-     if (block[3] > s_width)
+-     {
+-      block[3] = s_width;
+-      block[1] = block[3] - width;
+-     }
+-     if (block[2] < gui.scrollbar_height)
+-     {
+-      block[2] = gui.scrollbar_height;
+-      block[4] = block[2] + height;
+-     }
+-     swi(Wimp_OpenWindow, 0, block);
+-     swi(Wimp_ForceRedraw, gui.window_handle, 0, -height, width, 0);
+- }
+- 
+-     void
+- gui_mch_get_screen_dimensions(int *screen_w, int *screen_h)
+- {
+-     int block[] = {4, 5, 11, 12, -1};
+- 
+-     swi(OS_ReadVduVariables, block, block);
+-     *screen_w = (block[2] + 1) << block[0];
+-     *screen_h = (block[3] + 1) << block[1];
+- }
+- 
+- /* Take a font name with options and return a font handle, or
+-  * zero for failure.
+-  * Replace extension with 'Bold' or 'Italic' depending on modifiers.
+-  */
+-     int
+- ro_get_font(fullname, weight)
+-     char_u   *fullname;
+-     int              weight;         /* Initial weights:
+-                               * BIT      MEANING
+-                               * 0        bold
+-                               * 1        italic
+-                               */
+- {
+-     char_u   *arg;
+-     char_u   font[41];
+-     int              width = -1;
+-     int              height = -1;
+-     int              name_len;
+-     int              i;
+-     char_u   c;
+- 
+-     for (i = 0; i < 39;)
+-     {
+-      c = fullname[i];
+-      if (c == ':' || c == NUL || c == '.')
+-          break;
+-      font[i++] = c;
+-     }
+- 
+-     /* find the first modifier, NULL if none */
+-     arg = strchr(fullname + i, ':');
+- 
+-     while (arg)
+-     {
+-      switch (*++arg)
+-      {
+-          case 'h':
+-              height = strtol(arg + 1, (char **) &arg, 10);
+-              break;
+-          case 'w':
+-              width = strtol(arg + 1, (char **) &arg, 10);
+-              break;
+-          case 'b':
+-              weight |= 1;
+-              break;
+-          case 'i':
+-              weight |= 2;
+-              break;
+-          default:
+-              return 0;
+-      }
+-      arg = strchr(arg, ':');
+-     }
+- 
+-     if ((weight & 1) && i < 35)
+-     {
+-      /* Bold goes instead of given suffix */
+-      strncpy(font + i, ".Bold", 5);
+-      i += 5;
+-     }
+-     else
+-     {
+-      /* Copy rest of name unless we are using Bold */
+-      while (i < 39)
+-      {
+-          c = fullname[i];
+-          if (c == ':' || c == NUL)
+-              break;
+-          font[i++] = c;
+-      }
+-     }
+-     if ((weight & 2) && i < 32)
+-     {
+-      strncpy(font + i, ".Oblique", 8);
+-      i += 8;
+-     }
+- 
+-     font[i] = 0;
+- 
+-     if (height < 1 && width < 1)
+-      height = width = 10;    /* Default to 10pt */
+-     else if (height < 1)
+-      height = width;
+-     else if (width < 1)
+-      width = height;
+- 
+-     if (xswi(Font_FindFont, 0, font, width << 4, height << 4, 0, 0) & v_flag)
+-      return NOFONT;          /* Can't find font */
+- 
+-     return r0;
+- }
+- 
+- /* Load a file into allocated memory and check it is valid.
+-  * Return a pointer to the allocated block on success.
+-  */
+-     char    *
+- zap_load_file(name, style)
+-     char_u  *name;       /* Name of directory containing styles */
+-     char_u  *style;      /* Name of style within directory */
+- {
+-     char_u  fname[256];
+-     char_u  *file;
+- 
+-     if (strlen(name) + strlen(style) > 254)
+-      return NULL;        /* Names too long */
+- 
+-     sprintf(fname, "%s.%s", name, style);
+- 
+-     /* Load the named font in 1bpp format. */
+-     if (xswi(OS_File, 13, fname, 0, 0, "VimFonts:") & v_flag || r0 != 1)
+-      return NULL;        /* Error reading file info, or not a file */
+- 
+-     /* Allocate enough memory to load the whole file */
+-     file = (char *) alloc(r4);
+-     if (!file)
+-      return NULL;    /* Out of memory */
+- 
+-     if (xswi(OS_File, 12, fname, file, 0, "VimFonts:") & v_flag)
+-      return NULL;    /* Unable to load file */
+- 
+-     if (strncmp(file, "ZapFont\015", 8) == 0)
+-      return file;    /* Loaded OK! */
+- 
+-     vim_free(file);
+-     return NULL;     /* Not a valid font file */
+- }
+- 
+- /* Load and convert the named font.
+-  * If name is NULL or a null string then convert the system font.
+-  * Return OK on success; FAIL and we revert to using the VDU drivers.
+-  *
+-  * 'name' is the name of a directory.
+-  * Tries to load 'name.0', 'name.B', 'name.I' and 'name.IB'.
+-  */
+-     int
+- zap_load_font(name)
+-     char_u  *name;
+- {
+-     int          i;
+- 
+-     /* Free the existing font files, if any */
+-     for (i = 0; i < ZAP_STYLES; i++)
+-     {
+-      vim_free(zap_file[i]);
+-      zap_file[i] = NULL;
+-     }
+- 
+-     if (name && *name == '!')
+-     {
+-      name++;
+-      double_height = TRUE;
+-     }
+-     else
+-      double_height = FALSE;
+- 
+-     if (name && *name)
+-     {
+-      zap_file[ZAP_NORMAL]    = zap_load_file(name, "0");
+-      if (!zap_file[ZAP_NORMAL])
+-          return FAIL;        /* Can't load the 'normal' style - error */
+- 
+-      zap_file[ZAP_BOLD]      = zap_load_file(name, "B");
+-      zap_file[ZAP_ITALIC]    = zap_load_file(name, "I");
+-      zap_file[ZAP_BITALIC]   = zap_load_file(name, "IB");
+-     }
+-     else
+-     {
+-      int     *header;
+-      char    workarea[16];
+-      char    *old_wa;
+- 
+-      /* Allocate memory for system font (8 x 8 x 256 bits, plus header) */
+-      header = (int *) alloc(0x20 + 8 * 256);
+-      if (header == NULL)
+-          return FAIL;
+-      zap_file[ZAP_NORMAL] = (char *) header;
+- 
+-      /* Store details about the system font */
+-      header[2] = 8;      /* Width */
+-      header[3] = 8;      /* Height */
+-      header[4] = 0;      /* First char */
+-      header[5] = 255;    /* Last char */
+-      header[6] = header[7] = 0;  /* Reserved */
+- 
+-      /* Get system font bitmap */
+-      old_wa = zap_redraw_block.r_workarea;
+-      zap_redraw_block.r_workarea = workarea;
+-      swi(ZapRedraw_ReadSystemChars, zap_file[ZAP_NORMAL] + 0x20, &zap_redraw_block);
+-      zap_redraw_block.r_workarea = old_wa;
+-     }
+- 
+-     return ro_zap_redraw_initialise();
+- }
+- 
+- /*
+-  * Initialise vim to use the font with the given name.
+-  * Return FAIL if the font could not be loaded, OK otherwise.
+-  */
+-     int
+- gui_mch_init_font(char_u *font_name, int fontset)
+- {
+-     int          new_handle  = 0;        /* Use the system font by default */
+- 
+-     if (font_name[0] == '!')
+-     {
+-      /* Select a ZapRedraw font */
+-      if (zap_load_font(font_name + 1))
+-          zap_redraw = TRUE;
+-      else
+-      {
+-          EMSG2(_("E610: Can't load Zap font '%s'"), font_name);
+-          font_name = "System";   /* Error - use system font */
+-          zap_redraw = FALSE;
+-      }
+-     }
+-     else
+-     {
+-      zap_redraw = FALSE;
+- 
+-      if (font_name)
+-      {
+-          /* Extract any extra details about the font */
+-          new_handle = ro_get_font(font_name, 0);
+-          if (!new_handle)
+-              return FAIL;
+-      }
+-      else
+-          font_name = "System";
+-     }
+- 
+-     /* Free the previous font, if any */
+-     gui_mch_free_font(gui.norm_font);
+-     gui.norm_font = new_handle;
+-     gui.char_ascent = 0;
+- 
+-     if (new_handle)
+-     {
+-      /* Read details about the chosen font */
+-      swi(Font_ReadInfo, new_handle);
+- 
+-      gui.char_width  = r3 - r1;
+-      gui.char_height = r4 - r2;
+- 
+-      font_x_offset = -r1;    /* Where to position each char in its box */
+-      font_y_offset = -r4;
+- 
+-      /* Try to load other fonts for bold, italic, and bold-italic */
+-      gui_mch_free_font(gui.bold_font);
+-      gui.bold_font = ro_get_font(font_name, 1);
+-      gui_mch_free_font(gui.ital_font);
+-      gui.ital_font = ro_get_font(font_name, 2);
+-      gui_mch_free_font(gui.boldital_font);
+-      gui.boldital_font = ro_get_font(font_name, 3);
+-     }
+-     else
+-     {
+-      /* Use the system font or ZapRedraw. */
+-      if (zap_redraw)
+-      {
+-          gui.char_width      = zap_redraw_block.r_charw << zap_redraw_block.r_magx;
+-          gui.char_height     = zap_redraw_block.r_charh << zap_redraw_block.r_magy;
+-          if (double_height)
+-              gui.char_height <<= 1;
+-      }
+-      else
+-      {
+-          gui.char_width      = 16;
+-          gui.char_height     = 32;
+-      }
+- 
+-      gui_mch_free_font(gui.bold_font);
+-      gui.bold_font = 0;
+-      gui_mch_free_font(gui.ital_font);
+-      gui.ital_font = 0;
+-      gui_mch_free_font(gui.boldital_font);
+-      gui.boldital_font = 0;
+-     }
+-     hl_set_font_name(font_name);
+- 
+-     must_redraw = CLEAR;
+-     return OK;
+- }
+- 
+- /*
+-  * Adjust gui.char_height (after 'linespace' was changed).
+-  */
+-     int
+- gui_mch_adjust_charheight()
+- {
+-     return FAIL;
+- }
+- 
+- /*
+-  * Get a font structure for highlighting.
+-  */
+-     GuiFont
+- gui_mch_get_font(name, giveErrorIfMissing)
+-     char_u   *name;
+-     int              giveErrorIfMissing;
+- {
+-     int              handle;
+- 
+-     if (!name)
+-      return NOFONT;          /* System font if no name */
+- 
+-     handle = ro_get_font(name, 0);
+-     if (!handle)
+-     {
+-      if (giveErrorIfMissing)
+-          EMSG2(_("E611: Can't use font %s"), name);
+-      return NOFONT;
+-     }
+- 
+-     return handle;
+- }
+- 
+- #if defined(FEAT_EVAL) || defined(PROTO)
+- /*
+-  * Return the name of font "font" in allocated memory.
+-  * Don't know how to get the actual name, thus use the provided name.
+-  */
+-     char_u *
+- gui_mch_get_fontname(font, name)
+-     GuiFont font;
+-     char_u  *name;
+- {
+-     if (name == NULL)
+-      return NULL;
+-     return vim_strsave(name);
+- }
+- #endif
+- 
+- /*
+-  * Set the current text font.
+-  */
+-     void
+- gui_mch_set_font(GuiFont font)
+- {
+-     ro_current_font = font;
+- 
+-     if (font)
+-     {
+-      /* Not the system font or ZapRedraw font - select it */
+-      swi(Font_SetFont, font);
+-     }
+- }
+- 
+- /*
+-  * If a font is not going to be used, free its structure.
+-  */
+-     void
+- gui_mch_free_font(GuiFont font)
+- {
+-     if (font)
+-      swi(Font_LoseFont, font);
+- }
+- 
+- /*
+-  * Return the Pixel value (colour) for the given colour name.
+-  * Return INVALCOLOR for error.
+-  * NB: I've changed Green for now, since it looked really sick
+-  */
+-     guicolor_T
+- gui_mch_get_color(char_u *name)
+- {
+-     int              i;
+-     struct colour
+-     {
+-      char_u          *name;
+-      guicolor_T      value;
+-     } colours[] =
+-     {
+-      { "Red",                grgb(255,       0,      0)      },
+-      { "LightRed",           grgb(255,       0,      0)      },
+-      { "DarkRed",            grgb(139,       0,      0)      },
+- 
+-      { "Green",              grgb(50,        200,    50)     },
+-      { "LightGreen",         grgb(144,       238,    144)    },
+-      { "DarkGreen",          grgb(0,         100,    0)      },
+-      { "SeaGreen",           grgb(46,        139,    87)     },
+- 
+-      { "Blue",               grgb(0,         0,      255)    },
+-      { "LightBlue",          grgb(173,       216,    230)    },
+-      { "DarkBlue",           grgb(0,         0,      139)    },
+-      { "SlateBlue",          grgb(160,       90,     205)    },
+- 
+-      { "Cyan",               grgb(0,         255,    255)    },
+-      { "LightCyan",          grgb(224,       255,    255)    },
+-      { "DarkCyan",           grgb(0,         139,    139)    },
+- 
+-      { "Magenta",            grgb(255,       0,      255)    },
+-      { "LightMagenta",       grgb(255,       224,    255)    },
+-      { "DarkMagenta",        grgb(139,       0,      139)    },
+- 
+-      { "Yellow",             grgb(255,       255,    0)      },
+-      { "LightYellow",        grgb(255,       255,    224)    },
+-      { "DarkYellow",         grgb(139,       139,    0)      },
+-      { "Brown",              grgb(165,       42,     42)     },
+- 
+-      { "Gray",               grgb(190,       190,    190)    },
+-      { "Grey",               grgb(190,       190,    190)    },
+-      { "LightGray",          grgb(211,       211,    211)    },
+-      { "LightGrey",          grgb(211,       211,    211)    },
+-      { "DarkGray",           grgb(169,       169,    169)    },
+-      { "DarkGrey",           grgb(169,       169,    169)    },
+-      { "Gray10",             grgb(26,        26,     26)     },
+-      { "Grey10",             grgb(26,        26,     26)     },
+-      { "Gray20",             grgb(51,        51,     51)     },
+-      { "Grey20",             grgb(51,        51,     51)     },
+-      { "Gray30",             grgb(77,        77,     77)     },
+-      { "Grey30",             grgb(77,        77,     77)     },
+-      { "Gray40",             grgb(102,       102,    102)    },
+-      { "Grey40",             grgb(102,       102,    102)    },
+-      { "Gray50",             grgb(127,       127,    127)    },
+-      { "Grey50",             grgb(127,       127,    127)    },
+-      { "Gray60",             grgb(153,       153,    153)    },
+-      { "Grey60",             grgb(153,       153,    153)    },
+-      { "Gray70",             grgb(179,       179,    179)    },
+-      { "Grey70",             grgb(179,       179,    179)    },
+-      { "Gray80",             grgb(204,       204,    204)    },
+-      { "Grey80",             grgb(204,       204,    204)    },
+-      { "Gray90",             grgb(229,       229,    229)    },
+-      { "Grey90",             grgb(229,       229,    229)    },
+- 
+-      { "Black",              grgb(0,         0,      0)      },
+-      { "White",              grgb(255,       255,    255)    },
+- 
+-      { "Orange",             grgb(255,       165,    0)      },
+-      { "Purple",             grgb(160,       32,     240)    },
+-      { "Violet",             grgb(238,       130,    238)    },
+-      {NULL, 0}
+-     };
+- 
+-     if (name[0] == '#')
+-     {
+-      char        *end;
+-      int         c;
+- 
+-      c = strtol(name + 1, &end, 16);
+-      return (guicolor_T) ((c >> 16) & 0xff) | (c & 0xff00) | ((c & 0xff) << 16);
+-     }
+- 
+-     for (i = 0; colours[i].name != NULL; i++)
+-     {
+-      if (STRICMP(name, colours[i].name) == 0)
+-          return colours[i].value;
+-     }
+-     if (strnicmp(name, "grey", 4) == 0 || strnicmp(name, "gray", 4) == 0)
+-     {
+-      int level = (255 * atoi(name + 4)) / 100;
+-      return (guicolor_T) grgb(level, level, level);
+-     }
+-     return INVALCOLOR;
+- }
+- 
+- /*
+-  * Set the current text colours.
+-  * If we are using fonts then set the antialiasing colours too.
+-  */
+-     void
+- gui_mch_set_colors(guicolor_T fg, guicolor_T bg)
+- {
+-     zap_redraw_colours[0] = bg << 8; /* JK230798, register new background colour */
+-     zap_redraw_colours[1] = fg << 8; /* JK230798, register new foreground colour */
+-     zap_redraw_update_colours = TRUE;        /* JK230798, need update of colour masks */
+- 
+-     swi(ColourTrans_ReturnGCOL, fg << 8);
+-     gui.fg_colour = r0;
+-     swi(ColourTrans_ReturnGCOL, bg << 8);
+-     gui.bg_colour = r0;
+- 
+-     if (ro_current_font)
+-      swi(ColourTrans_SetFontColours, 0, bg << 8, fg << 8, 14);
+- }
+- 
+-     void
+- ro_draw_string(x, y, s, len, flags, clip)
+-     int          x;          /* Top-left coord to plot at (x incl, y excl) */
+-     int          y;          /* (screen coords) */
+-     char_u  *s;              /* String to plot */
+-     int          len;        /* Length of string */
+-     int          flags;      /* DRAW_TRANSP, DRAW_BOLD, DRAW_UNDERL */
+-     int*    clip;    /* JK230798, added clip window */
+- {
+-     if (ro_current_font)
+-     {
+-      int     fx;
+-      int     flen = len;     /* Preserve for underline */
+- 
+-      /* Use the Font manager to paint the string.
+-       * Must do one char at a time to get monospacing.
+-       */
+- 
+-      if (flags & DRAW_ITALIC && !gui.ital_font)
+-          flags |= DRAW_UNDERL;       /* No italic - underline instead */
+- 
+-      if ((flags & DRAW_TRANSP) == 0)
+-      {
+-          swi(ColourTrans_SetColour, gui.bg_colour, 0, 0, 0, 0);
+-          swi(OS_Plot, 4, x, y - gui.char_height);
+-          swi(OS_Plot, 96 + 5, x + len * gui.char_width - 1, y - 1);
+-      }
+- 
+-      fx = x + font_x_offset;
+-      while (flen--)
+-      {
+-          swi(Font_Paint, 0, s++, 0x90, fx, y + font_y_offset, 0, 0, 1);
+-          fx += gui.char_width;
+-      }
+-     }
+-     else
+-     {
+-      if (zap_redraw)
+-      {
+-          /* Using fast Zap redraw. */
+-          flags = ro_zap_redraw_draw_string(x, y, s, len, flags, clip);
+-      }
+-      else
+-      {
+-          /* Using the system font */
+-          if (flags & DRAW_ITALIC)
+-              flags |= DRAW_UNDERL;
+- 
+-          if ((flags & DRAW_TRANSP) == 0)
+-          {
+-              swi(ColourTrans_SetColour, gui.bg_colour, 0, 0, 0, 0);
+-              swi(OS_Plot, 4, x, y - gui.char_height);
+-              swi(OS_Plot, 96 + 5, x + len * gui.char_width - 1, y - 1);
+-          }
+-          swi(OS_Plot, 4,                     /* Move the drawing cursor */
+-                  x,
+-                  y - 1);
+-          swi(ColourTrans_SetColour, gui.fg_colour, 0, 0, 0, 0);
+-          swi(OS_WriteN, s, len);
+- 
+-          if (flags & DRAW_BOLD)
+-          {
+-              swi(OS_Plot, 4, x + (1 << x_eigen_factor), y - 1);
+-              swi(OS_WriteN, s, len);
+-          }
+-      }
+-     }
+- 
+-     if (flags & DRAW_UNDERL)
+-     {
+-      if (ro_current_font || zap_redraw)
+-          swi(ColourTrans_SetColour, gui.fg_colour, 0, 0, 0, 0);
+-      /* Underlined is the same with all plotting methods */
+-      swi(OS_Plot, 4, x, y - gui.char_height);
+-      swi(OS_Plot, 1, gui.char_width * len, 0);
+-     }
+- }
+- 
+-     void
+- gui_mch_draw_string(int row, int col, char_u *s, int len, int flags)
+- {
+-     int x, y;                /* Workarea x,y */
+-     x = col * gui.char_width;
+-     y = -row * gui.char_height;
+- 
+-     if (redraw_block)
+-     {
+-      ro_draw_string(x + redraw_block[1], y + redraw_block[4],
+-                      s, len, flags, &redraw_block[7]);       /* JK230798, added clip window */
+-     }
+-     else
+-     {
+-      int block[44];
+-      block[0] = gui.window_handle;
+-      block[1] = x;
+-      block[2] = y - gui.char_height;
+-      block[3] = (col + len) * gui.char_width;
+-      block[4] = y;
+-      swi(Wimp_UpdateWindow, 0, block);
+-      while (r0)
+-      {
+-          ro_draw_string(x + block[1], y + block[4],
+-                      s, len, flags, &block[7]);      /* JK230798, added clip window */
+-          swi(Wimp_GetRectangle, 0, block);
+-      }
+-     }
+- }
+- 
+- /*
+-  * Return OK if the key with the termcap name "name" is supported.
+-  */
+-     int
+- gui_mch_haskey(char_u *name)
+- {
+-     return FAIL;
+- }
+- 
+-     void
+- gui_mch_beep(void)
+- {
+-     swi(OS_WriteI + 7);
+- }
+- 
+- /*
+-  * Visual bell.
+-  */
+-     void
+- gui_mch_flash(int msec)
+- {
+-     /* TODO */
+- }
+- 
+- 
+- /*
+-  * Plot a solid rectangle using the given plot action and colour.
+-  * Coordinates are inclusive and window-relative.
+-  */
+-     void
+- plot_rectangle(plot, colour, minx, miny, maxx, maxy)
+-     int plot;                /* OS_Plot action */
+-     int colour;
+-     int minx;
+-     int miny;
+-     int maxx;
+-     int maxy;
+- {
+-     if (redraw_block)
+-     {
+-      swi(ColourTrans_SetColour, colour, 0, 0, 0, 0);
+-      swi(OS_Plot, 4, minx + redraw_block[1], miny + redraw_block[4]);
+-      swi(OS_Plot, plot, maxx + redraw_block[1], maxy + redraw_block[4]);
+-     }
+-     else
+-     {
+-      int block[44];
+-      block[0] = gui.window_handle;
+-      block[1] = minx;
+-      block[2] = miny;
+-      block[3] = maxx + 1;
+-      block[4] = maxy + 1;
+-      swi(Wimp_UpdateWindow, 0, block);
+-      while (r0)
+-      {
+-          swi(ColourTrans_SetColour, colour, 0, 0, 0, 0);
+-          swi(OS_Plot, 4, minx + block[1], miny + block[4]);
+-          swi(OS_Plot, plot, maxx + block[1], maxy + block[4]);
+-          swi(Wimp_GetRectangle, 0, block);
+-      }
+-     }
+- }
+- 
+- /*
+-  * Invert a rectangle from row r, column c, for nr rows and nc columns.
+-  */
+-     void
+- gui_mch_invert_rectangle(int r, int c, int nr, int nc)
+- {
+-     plot_rectangle(96 + 6, 0, FILL_X(c), -FILL_Y(r + nr), FILL_X(c + nc), -FILL_Y(r));
+- }
+- 
+- /*
+-  * Iconify the GUI window.
+-  */
+-     void
+- gui_mch_iconify(void)
+- {
+- }
+- 
+- #if defined(FEAT_EVAL) || defined(PROTO)
+- /*
+-  * Bring the Vim window to the foreground.
+-  */
+-     void
+- gui_mch_set_foreground()
+- {
+-     /* TODO */
+- }
+- #endif
+- 
+- /* Draw a hollow rectangle relative to the current
+-  * graphics cursor position, with the given width
+-  * and height. Start position is top-left.
+-  */
+-     void
+- draw_hollow(w, h)
+-     int      w;
+-     int      h;
+- {
+-     swi(OS_Plot, 1, w - 1, 0);
+-     swi(OS_Plot, 1, 0, 1 - h);
+-     swi(OS_Plot, 1, 1 - w, 0);
+-     swi(OS_Plot, 1, 0, h - 1);
+- }
+- 
+- /*
+-  * Draw a cursor without focus.
+-  */
+-     void
+- gui_mch_draw_hollow_cursor(guicolor_T colour)
+- {
+-     int x = FILL_X(gui.cursor_col);  /* Window relative, top-left */
+-     int y = -FILL_Y(gui.cursor_row);
+-     if (redraw_block == NULL)
+-     {
+-      int block[11];
+- 
+-      block[0] = gui.window_handle;
+-      block[1] = x;
+-      block[2] = y - gui.char_height;
+-      block[3] = x + gui.char_width;
+-      block[4] = y;
+-      swi(Wimp_UpdateWindow, 0, block);
+-      while (r0)
+-      {
+-          swi(ColourTrans_SetGCOL, colour << 8, 0, 0, 0, 0);
+- 
+-          swi(OS_Plot, 4, x + block[1], y + block[4] - 1);
+-          draw_hollow(gui.char_width, gui.char_height);
+- 
+-          swi(Wimp_GetRectangle, 0, block);
+-      }
+-     }
+-     else
+-     {
+-      swi(ColourTrans_SetGCOL, colour << 8, 0, 0, 0, 0);
+- 
+-      swi(OS_Plot, 4, x + redraw_block[1], y + redraw_block[4] - 1);
+-      draw_hollow(gui.char_width, gui.char_height);
+-     }
+- }
+- 
+- /*
+-  * Draw part of a cursor, "w" pixels wide, and "h" pixels high, using
+-  * color "color".
+-  */
+-     void
+- gui_mch_draw_part_cursor(w, h, colour)
+-     int w;
+-     int h;
+-     guicolor_T colour;
+- {
+-     int x = FILL_X(gui.cursor_col);
+-     int y = -FILL_Y(gui.cursor_row);
+-     swi(ColourTrans_ReturnGCOL, colour << 8);
+-     plot_rectangle(96 + 5, r0, x, y - h, x + w - 1, y - 1);
+- }
+- 
+- /*
+-  * Catch up with any queued events.  This may put keyboard input into the
+-  * input buffer, call resize call-backs, trigger timers etc.
+-  * If there is nothing in the event queue(& no timers pending), then we return
+-  * immediately (well, after a Wimp_Poll).
+-  */
+-     void
+- gui_mch_update(void)
+- {
+-     int block[64];
+-     int reason;
+- 
+-     swi(OS_ReadMonotonicTime);
+-     if ((r0 - time_of_last_poll) < 50)
+-      return;                     /* Don't return too often */
+- 
+-     reason = wimp_poll(0, block);
+-     if (reason)
+-      process_event(reason, block);
+-     ro_return_early = FALSE;         /* We're returning anyway. */
+- }
+- 
+-     void
+- redraw_window(block)
+-     int *block;
+- {
+-     int x, y;                        /* Vim workarea coords */
+-     int width, height;
+-     int blank_col;
+- 
+-     swi(ColourTrans_ReturnGCOL, UNUSED_COLOUR << 8, 0, 0, 1<<7, 0);
+-     blank_col = r0;
+- 
+-     swi(Wimp_RedrawWindow, 0, block);
+-     redraw_block = block;
+-     while (r0)
+-     {
+-      x = block[7] - block[1];
+-      y = block[4] - block[10];
+-      width  = block[9]  - block[7];
+-      height = block[10] - block[8];
+- 
+-      if (height + y > Rows * gui.char_height)
+-      {
+-          /* Blank everything off the bottom. */
+-          plot_rectangle(96 + 5, blank_col,
+-                              0, block[8] - block[4],
+-                              block[9] - block[1], -FILL_Y(Rows) - 1);
+-          height = Rows * gui.char_height;
+-      }
+-      if (width + x> Columns * gui.char_width)
+-      {
+-          /* Blank everything off to the right. */
+-          plot_rectangle(96 + 5, blank_col,
+-                              FILL_X(Columns), block[8] - block[4],
+-                              block[9] - block[1], 0);
+-          width = Columns * gui.char_width;
+-      }
+-      gui_redraw(x , y, width, height);
+-      swi(Wimp_GetRectangle, 0, block);
+-     }
+-     redraw_block = NULL;
+- }
+- 
+- /* Check if we have modified data.
+-  * If we do then ack the message to stop the shutdown.
+-  * Otherwise, ignore the message.
+-  */
+-     void
+- ro_prequit(block)
+-     int          *block;
+- {
+-     if (!ro_ok_to_quit())
+-     {
+-      /* Not OK to quit - stop shutdown */
+-      block[3] = block[2];
+-      swi(Wimp_SendMessage, 19, block, block[1]);
+-     }
+-     /* Do nothing. We may get a Message_Quit later. */
+- }
+- 
+- /* If there is unsaved data then ask the user if they mind losing it.
+-  * Return TRUE if we can quit without saving, FALSE to halt the
+-  * shutdown.
+-  */
+-     int
+- ro_ok_to_quit()
+- {
+-     int          old_confirm = cmdmod.confirm;
+- 
+-     cmdmod.confirm = FALSE;      /* Use our own, single tasking, box */
+- 
+-     if (check_changed_any(FALSE))
+-     {
+-      swi(Wimp_ReportError,
+-              "\0\0\0\0Vim contains unsaved data - quit anyway?",
+-              0x17,
+-              "Vim");
+-      cmdmod.confirm = old_confirm;
+-      if (r1 != 1)
+-          return FALSE;
+-     }
+-     cmdmod.confirm = old_confirm;
+-     return TRUE;
+- }
+- 
+- /* Quit without checking for unsaved data. */
+-     void
+- ro_quit()
+- {
+-     exiting = TRUE;
+-     getout(0);
+- 
+-     exiting = FALSE;             /* probably can't get here */
+-     setcursor();                 /* position cursor */
+-     out_flush();
+- }
+- 
+- /* Insent the given vim special code into the input buffer */
+-     void
+- ro_press(a, b, modifier)
+-     char a;
+-     char b;
+-     int modifier;    /* %<Ctrl><Shift> 0000 0000 */
+- {
+-     char_u buf[6];
+-     int          vim_mod;
+-     int          key;
+- 
+- 
+-     /* Convert RISC OS modifier to Vim modifier. */
+-     vim_mod = ((modifier & 0x10) ? MOD_MASK_SHIFT : 0)
+-             | ((modifier & 0x20) ? MOD_MASK_CTRL : 0);
+-     key = simplify_key(TERMCAP2KEY(a, b), &vim_mod);
+- 
+-     buf[3] = CSI;
+-     buf[4] = KEY2TERMCAP0(key);
+-     buf[5] = KEY2TERMCAP1(key);
+-     if (vim_mod)
+-     {
+-      buf[0] = CSI;
+-      buf[1] = KS_MODIFIER;
+-      buf[2] = vim_mod;
+-      add_to_input_buf(buf, 6);
+-     }
+-     else
+-      add_to_input_buf(buf + 3, 3);
+- }
+- 
+- /* Take a wimp key code and insert the vim equivalent
+-  * into vim's input buffer.
+-  * CTRL-C also sets got_int.
+-  */
+-     void
+- ro_insert_key(code)
+-     char_u *code;            /* Wimp_ProcessKey code (4 bytes) */
+- {
+-     char a = code[0];
+-     char b = code[1];
+-     int base, modifier;
+- 
+-     if (a == 3 && ctrl_c_interrupts)
+-      got_int = TRUE;
+- 
+-     /* Is it a normal key? */
+-     if (a > 31 && a < 127)
+-     {
+-      add_to_input_buf(code, 1);
+-      return;
+-     }
+- 
+-     /* We should pass any unrecognised keys on, but
+-      * for now just pass on F12 combinations.
+-      */
+-     switch (b)
+-     {
+-      case 0:
+-          /* Home and Delete are the only special cases */
+-          switch (a)
+-          {
+-              case 0x1e:
+-                  ro_press('k','h', 0);       /* Home */
+-                  return;
+-              case 0x7f:
+-                  ro_press('k','D', 0);       /* Delete */
+-                  return;
+-              case CSI:
+-                  {
+-                      /* Turn CSI into K_CSI.  Untested! */
+-                      char_u string[3] = {CSI, KS_EXTRA, KE_CSI};
+- 
+-                      add_to_input_buf(string, 3);
+-                      return;
+-                  }
+-              default:
+-                  add_to_input_buf(code, 1);
+-                  return;
+-          }
+-      case 1:
+-          if ((a & 0xcf) == 0xcc)
+-          {
+-              /* F12 pressed - pass it on (quick hack) */
+-              swi(Wimp_ProcessKey, a | 0x100);
+-              return;
+-          }
+-          base = a & 0xcf;
+-          modifier = a & 0x30;
+-          switch (base)
+-          {
+-              case 0x8a:      /* Tab */
+-                  add_to_input_buf("\011", 1);
+-                  return;
+-              case 0x8b:      /* Copy (End) */
+-                  return ro_press('@', '7', modifier);
+-              case 0x8c:      /* Left */
+-                  return ro_press('k', 'l', modifier);
+-              case 0x8d:      /* Right */
+-                  return ro_press('k', 'r', modifier);
+-              case 0x8e:      /* Down */
+-                  if (modifier & 0x10)
+-                      return ro_press('k', 'N', modifier ^ 0x10);
+-                  else
+-                      return ro_press('k', 'd', modifier);
+-              case 0x8f:      /* Up */
+-                  if (modifier & 0x10)
+-                      return ro_press('k', 'P', modifier ^ 0x10);
+-                  else
+-                      return ro_press('k', 'u', modifier);
+-              case 0xca:      /* F10 */
+-                  return ro_press('k', ';', modifier);
+-              case 0xcb:      /* F11 */
+-                  return ro_press('F', '1', modifier);
+-              case 0xcd:      /* Insert */
+-                  return ro_press('k', 'I', modifier);
+-              default:
+-                  if (base > 0x80 && base < 0x18a)
+-                  {
+-                      /* One of the other function keys */
+-                      return ro_press('k', '0' + (base & 15), modifier);
+-                  }
+-          }
+-     }
+- }
+- 
+- /* Process a mouse event. */
+-     void
+- ro_mouse(block)
+-     int *block;
+- {
+-     int x, y, button, vim_button;
+-     int modifiers = 0;
+-     int min_x, min_y;                /* Visible area of editor window */
+-     int max_x, max_y;
+- 
+-     if (block[3] != gui.window_handle || ro_dragging)
+-      return;                 /* Not our window or ignoring clicks*/
+- 
+-     x = block[0];            /* Click position - screen coords */
+-     y = block[1];
+-     button = block[2];
+- 
+-     block[0] = gui.window_handle;
+-     swi(Wimp_GetWindowState, 0, block);
+-     min_x = block[1];
+-     min_y = block[2];
+-     max_x = block[3];
+-     max_y = block[4];
+- 
+-     if (block[3] - x < gui.scrollbar_width)
+-     {
+-      /* Click in that blank area under the scrollbars */
+- 
+-      if (button & 0x444)
+-      {
+-          int     front_block[64];
+-          /* Dragging with Select - bring window to front first */
+-          front_block[0] = gui.window_handle;
+-          swi(Wimp_GetWindowState, 0, front_block);
+-          front_block[7] = -1;
+-          ro_open_main(front_block);
+-      }
+- 
+-      block[0] = gui.window_handle;
+-      block[1] = 7;                   /* Drag point */
+-      block[2] = block[4] = 0;        /* Coords of point. */
+-      block[3] = block[5] = 0;
+-      drag_x_offset = max_x - x;
+-      drag_y_offset = min_y - y;
+- 
+-      /* Parent box. */
+-      block[6] = min_x +
+-                      gui.scrollbar_width * 2 +
+-                      MIN_COLUMNS * gui.char_width;
+-      block[7] = 0;
+-      gui_mch_get_screen_dimensions(&block[8], &block[9]);
+-      block[9] = max_y -
+-                      4 * gui.char_height -
+-                      gui.scrollbar_height;
+- 
+-      swi(Wimp_DragBox, 0, block);
+-      ro_dragging = DRAG_RESIZE_WINDOW;
+-      drag_button = vim_button;
+-      drag_modifiers = modifiers;
+-      return;
+-     }
+- 
+-     if (button & 0x111)
+-      vim_button = MOUSE_RIGHT;
+-     else if (button & 0x222)
+-      vim_button = MOUSE_MIDDLE;
+-     else
+-      vim_button = MOUSE_LEFT;
+- 
+-     swi(OS_Byte, 121, 0x80);
+-     if (r1 == 0xff)
+-      modifiers |= MOUSE_SHIFT;
+-     swi(OS_Byte, 121, 0x81);
+-     if (r1 == 0xff)
+-      modifiers |= MOUSE_CTRL;
+-     swi(OS_Byte, 121, 0x82);
+-     if (r1 == 0xff)
+-      modifiers |= MOUSE_ALT;
+- 
+-     if (button == 2)
+-     {
+-      /* Menu click:
+-       * If shift was pressed then do the paste action.
+-       * If not, then open the pop-up menu.
+-       */
+-      modifiers ^= MOUSE_SHIFT;
+-      if (modifiers && MOUSE_SHIFT)
+-      {
+-          vimmenu_T   main;
+-          /* Shift was NOT pressed - show menu */
+-          main.dname = (char_u *) "Vim";
+-          main.children = root_menu;
+-          gui_mch_show_popupmenu(&main);
+-          return;
+-      }
+-     }
+- 
+-     /* Gain the input focus */
+-     swi(Wimp_SetCaretPosition, gui.window_handle, -1, 0, 0, -1, -1);
+- 
+-     if (button & 0xf0)
+-     {
+-      /* Drag operation:
+-       *
+-       * Tell the Wimp to start a drag.
+-       * Monitor null events.
+-       */
+-      block[1] = 7;                   /* Drag a point. */
+-      block[2] = block[4] = x;        /* Coords of point. */
+-      block[3] = block[5] = y;
+-      block[6] = 0;                   /* Coords of bounding box. */
+-      block[7] = 0;
+-      gui_mch_get_screen_dimensions(&block[8], &block[9]);
+- 
+-      drag_x_offset = drag_y_offset = 0;
+- 
+-      swi(Wimp_DragBox, 0, block);
+-      ro_dragging = DRAG_SELECTION;
+-      drag_button = vim_button;
+-      drag_modifiers = modifiers;
+- 
+-      vim_button |= MOUSE_DRAG;
+-     }
+- 
+-     gui_send_mouse_event(
+-              vim_button,
+-              x - min_x,
+-              max_y - y,
+-              button & 0xf ? TRUE : FALSE,    /* dclick */
+-              modifiers);
+- }
+- 
+-     void
+- ro_continue_drag(block)
+-     int *block;                      /* Just used as scrap. */
+- {
+-     int x, y;
+- 
+-     /* Get screen coords of pointer. */
+-     swi(Wimp_GetPointerInfo, 0, block);
+-     x = block[0] + drag_x_offset;
+-     y = block[1] + drag_y_offset;
+- 
+-     block[0] = gui.window_handle;
+-     swi(Wimp_GetWindowState, 0, block);
+- 
+-     if (ro_dragging == DRAG_RESIZE_WINDOW)
+-     {
+-      /* Resizing the main window. */
+-      block[2] = y;
+-      block[3] = x;
+-      ro_open_main(block);
+-     }
+-     else
+-     {
+-      /* Selecting some text. */
+-      gui_send_mouse_event(
+-          drag_button | MOUSE_DRAG,   /* Always report the same button */
+-          x - block[1],
+-          block[4] - y,
+-          FALSE,                      /* Not a double click. */
+-          drag_modifiers);
+-     }
+- }
+- 
+- /* User has released all mouse buttons, marking the end of a drag. */
+-     void
+- ro_drag_finished(block)
+-     int *block;
+- {
+-     int x;
+-     int y;
+-     int width, height;
+- 
+-     /* I don't trust the box returned by Wimp_Poll; look at the pointer
+-      * ourselves.
+-      */
+-     swi(Wimp_GetPointerInfo, 0, block);
+-     x = block[0] + drag_x_offset;
+-     y = block[1] + drag_y_offset;
+- 
+-     if (ro_dragging == DRAG_RESIZE_WINDOW)
+-     {
+-      block[0] = gui.window_handle;
+-      swi(Wimp_GetWindowState, 0, block);
+-      block[2] = y;
+-      block[3] = x;
+-      ro_open_main(block);
+- 
+-      width = (block[3] - block[1]);
+-      height = (block[4] - block[2]);
+- 
+-      swi(Wimp_ForceRedraw, gui.window_handle, 0, -height, width, 0);
+-      gui_resize_shell(width, height);
+-     }
+-     else
+-     {
+-      block[0] = gui.window_handle;
+-      swi(Wimp_GetWindowState, 0, block);
+-      gui_send_mouse_event(
+-              MOUSE_RELEASE,
+-              x - block[1],
+-              block[4] - y,
+-              FALSE,                  /* not a double click */
+-              drag_modifiers);
+-     }
+-     ro_dragging = DRAG_FALSE;
+- }
+- 
+- /* Load the file/pathname given in block into a [new] buffer.
+-  *
+-  * Modifier  Action
+-  *
+-  * None              :confirm e <file>
+-  * Ctrl              :sp <file>
+-  * Shift     <file>
+-  *
+-  * Insert into typebuf, at the start.
+-  * If loading from !Scrap then use saved leafname instead, and
+-  * delete the scrap file. Also, ignore shift key.
+-  *
+-  * NB: Doesn't send DataLoadAck (other app might delete temp file?).
+-  */
+-     void
+- ro_dataload(block)
+-     int          *block;
+- {
+-     char_u  new_path[MAXPATHL];
+-     char_u  *path = ((char_u *) block) + 44;
+-     int          scrap = FALSE;
+- 
+-     if (block[3] == leaf_ref && leaf_name)
+-      scrap = TRUE;
+- 
+-     switch (get_real_state() & 0xff)
+-     {
+-      case INSERT:
+-      case CMDLINE:
+-      case CMDLINE+LANGMAP:
+-          /* For insert mode we can only insert the pathname (currently)
+-           * Make sure Shift is pressed.
+-           */
+-          swi(OS_Byte, 121, 0x80);        /* Is Shift pressed? */
+-          if (r1 == 0xff)
+-          {
+-              ins_typebuf(" ", REMAP_NONE, 0, TRUE, FALSE);
+-              ins_typebuf(path, REMAP_NONE, 0, TRUE, FALSE);
+-              ro_return_early = TRUE;             /* Return even though nothing was typed. */
+-          }
+-          else
+-              swi(Wimp_ReportError,
+-                      "\0\0\0\0Sorry, you can only load text in normal mode", 5, "Vim");
+-          break;
+- 
+-      case NORMAL:
+-          ro_return_early = TRUE;         /* Return even though nothing was typed. */
+- 
+-          if (scrap)                      /* Remove <Wimp$Scrap>. Later. */
+-              ins_typebuf(":!~remove <Wimp$Scrap>\r", REMAP_NONE, 0, TRUE, FALSE);
+- 
+-          /* Insert {:sp ,:confirm e }[+f\ <leaf> ]<file><CR> */
+-          ins_typebuf("\r", REMAP_NONE, 0, TRUE, FALSE);
+-          ins_typebuf(path, REMAP_NONE, 0, TRUE, FALSE);
+-          ins_typebuf(" ", REMAP_NONE, 0, TRUE, FALSE);
+- 
+-          if (scrap)
+-          {
+-              /* Loading via !Scrap - change pathname to stored leafname */
+-              ins_typebuf(leaf_name, REMAP_NONE, 0, TRUE, FALSE);
+-              ins_typebuf(" +f\\ ", REMAP_NONE, 0, TRUE, FALSE);
+-              leaf_ref = 0;
+-              vim_free(leaf_name);
+-              leaf_name = NULL;
+-          }
+- 
+-          swi(OS_Byte, 121, 0x81);        /* Is Ctrl pressed? */
+-          if (r1 == 0xff)
+-              /* Yes, split window */
+-              ins_typebuf(":sp", REMAP_NONE, 0, TRUE, FALSE);
+-          else
+-              ins_typebuf(":confirm e", REMAP_NONE, 0, TRUE, FALSE);
+-          break;
+- 
+-      default:
+-          swi(Wimp_ReportError, "\0\0\0\0You can only load text in normal mode.", 5, "Vim");
+-     }
+-     /* Send DataSaveAck so other program doesn't think we died
+-      * and delete <Wimp$Scrap>.
+-      */
+-     block[3] = block[2];
+-     block[4] = 4;
+-     swi(Wimp_SendMessage, 17, block, block[1]);
+- }
+- 
+-     void
+- ro_datasave(block)
+-     int          *block;
+- {
+-     char_u *path = ((char_u *) block) + 44;
+- 
+-     /* Preserve the name given so we can use it, not <Wimp$Scrap> */
+-     if (leaf_name)
+-      vim_free(leaf_name);
+-     leaf_name = vim_strsave(path);
+- 
+-     block[9] = -1;       /* File is unsafe. */
+-     strcpy(path, "<Wimp$Scrap>");
+-     block[0] = 60;
+-     block[3] = block[2];
+-     block[4] = 2;
+-     swi(Wimp_SendMessage, 17, block, block[1]);
+- 
+-     leaf_ref = block[2];
+- }
+- 
+-     void
+- ro_message(block)
+-     int *block;
+- {
+-     char_u   *buffer;
+-     long_u   len;
+- 
+-     if (block[1] == task_handle)
+-      return;                     /* Don't talk to ourself! */
+-     switch (block[4])
+-     {
+-      case 0:         /* Quit. */
+-          if (block[4] == 0)
+-              ro_quit();
+-          break;
+-      case 1: /* DataSave */
+-          ro_datasave(block);
+-          break;
+-      case 2:         /* DataSaveAck. */
+-          if (clip_convert_selection(&buffer, &len, &clip_star) == -1)
+-              return;
+- 
+-          /* Save the clipboard contents to a file. */
+-          swi(OS_File, 10, ((char_u *) block) + 44, 0xfff, 0, buffer, buffer + len);
+- 
+-          /* Ack with DataLoad message. */
+-          block[3] = block[2];
+-          block[4] = 3;
+-          block[9] = len;
+-          swi(Wimp_SendMessage, 17, block, block[1]);
+- 
+-          vim_free(buffer);
+-          break;
+-      case 3:         /* DataLoad */
+-          ro_dataload(block);
+-          break;
+-      case 8:         /* PreQuit */
+-          ro_prequit(block);
+-          break;
+-      case 0xf:       /* Lose clipboard. */
+-          if (block[5] & 4)
+-          {
+-              clip_free_selection(&clip_star);
+-              clip_star.owned = FALSE;
+-          }
+-          break;
+-      case 0x10:      /* DataRequest (clip_star) */
+-          if (clip_star.owned)
+-          {
+-              int rows;
+- 
+-              /* Tell other program that we have the clipboard. */
+-              block[0] = 52;
+-              block[3] = block[2];        /* Copy myref to yourref. */
+-              block[4] = 1;               /* DataSave message. */
+-              /* Create an estimate for the size (larger or same as true
+-               * value) */
+-              rows = clip_star.end.lnum - clip_star.start.lnum;
+-              if (rows < 0)
+-                  rows = -rows;
+-              block[9] = (rows + 1) * Columns + 1; /* Add one for possible
+-                                                      final newline. */
+-              block[10] = 0xfff;          /* Clipboard is text. */
+-              strcpy( ((char_u *) block) + 44, "VimClip");
+-              swi(Wimp_SendMessage, 17, block, block[1]);
+-          }
+-          break;
+-      case 0x400c1:   /* Mode change */
+-          changed_mode = TRUE;                /* Flag - update on next OpenWindow */
+-          if (zap_redraw)
+-          {
+-              /* JK230798, re-initialise ZapRedraw stuff */
+-              if (ro_zap_redraw_initialise() == FAIL)
+-                  zap_redraw = FALSE;
+-          }
+-          break;
+-      case 0x400c3:   /* TaskCloseDown */
+-          if (block[1] == child_handle)
+-              child_handle = 0;
+-          break;
+-     }
+- }
+- 
+- /*
+-  * Converts a scrollbar's window handle into a scrollbar pointer.
+-  * NULL on failure.
+-  */
+-     scrollbar_T *
+- ro_find_sbar(id)
+-     int              id;
+- {
+-     win_T    *wp;
+- 
+-     if (gui.bottom_sbar.id == id)
+-      return &gui.bottom_sbar;
+-     FOR_ALL_WINDOWS(wp)
+-     {
+-      if (wp->w_scrollbars[SBAR_LEFT].id == id)
+-          return &wp->w_scrollbars[SBAR_LEFT];
+-      if (wp->w_scrollbars[SBAR_RIGHT].id == id)
+-          return &wp->w_scrollbars[SBAR_RIGHT];
+-     }
+-     return NULL;
+- }
+- 
+-     void
+- scroll_to(line, sb)
+-     int sb;  /* Scrollbar number */
+-     int line;
+- {
+-     char_u code[8];
+- 
+-     /* Don't put events in the input queue now. */
+-     if (hold_gui_events)
+-      return;
+- 
+-     /* Send a scroll event:
+-      *
+-      * A scrollbar event is CSI (NOT K_SPECIAL), KS_VER_SCROLLBAR,
+-      * KE_FILLER followed by:
+-      * one byte representing the scrollbar number, and then four bytes
+-      * representing a long_u which is the new value of the scrollbar.
+-      */
+-     code[0] = CSI;
+-     code[1] = KS_VER_SCROLLBAR;
+-     code[2] = KE_FILLER;
+-     code[3] = sb;
+-     code[4] = line >> 24;
+-     code[5] = line >> 16;
+-     code[6] = line >> 8;
+-     code[7] = line;
+-     add_to_input_buf(code, 8);
+- }
+- 
+-     void
+- h_scroll_to(col)
+-     int col;
+- {
+-     char_u code[8];
+- 
+-     /* Don't put events in the input queue now. */
+-     if (hold_gui_events)
+-      return;
+- 
+-     /* Send a scroll event:
+-      *
+-      * A scrollbar event is CSI (NOT K_SPECIAL)
+-      *
+-      * A horizontal scrollbar event is K_SPECIAL, KS_HOR_SCROLLBAR,
+-      * KE_FILLER followed by four bytes representing a long_u which is the
+-      * new value of the scrollbar.
+-      */
+-     code[0] = CSI;
+-     code[1] = KS_HOR_SCROLLBAR;
+-     code[2] = KE_FILLER;
+-     code[4] = col >> 24;
+-     code[5] = col >> 16;
+-     code[6] = col >> 8;
+-     code[7] = col;
+-     add_to_input_buf(code, 8);
+- }
+- 
+-     void
+- ro_scroll(block)
+-     int              *block;
+- {
+-     scrollbar_T      *sb;
+-     int              offset;
+-     win_T    *wp;
+- 
+-     /* Block is ready for Wimp_OpenWindow, and also contains:
+-      *
+-      * +32 = scroll X direction (-2 .. +2)
+-      * +36 = scroll Y direction (-2 .. +2)
+-      */
+- 
+-     sb = ro_find_sbar(block[0]);
+-     if (!sb)
+-      return;         /* Window not found (error). */
+- 
+-     wp = sb-> wp;
+- 
+-     if (wp == NULL)
+-     {
+-      /* Horizontal bar. */
+-      offset = block[8];
+-      if (offset == -2)
+-          offset = (block[1] - block[3]) / gui.char_width;
+-      else if (offset == 2)
+-          offset = (block[3] - block[1]) / gui.char_width;
+- 
+-      block[5] += offset * gui.char_width;
+- 
+-      gui_drag_scrollbar(sb, block[5] / gui.char_width, FALSE);
+- 
+-      swi(Wimp_OpenWindow, 0, block);
+-     }
+-     else
+-     {
+-      offset = -block[9];
+-      if (offset == -2)
+-          offset = -(wp -> w_height - 1);
+-      else if (offset == 2)
+-          offset = wp -> w_height - 1;
+- 
+-      /* Possibly we should reposition the scrollbar?
+-       * Vim seems to update the bar anyway...
+-       */
+-      gui_drag_scrollbar(sb, offset - (block[6] / gui.char_height), FALSE);
+-     }
+- }
+- 
+- /* Move a window by a given offset. Used to simulate the function of the
+-  * nested wimp.
+-  */
+-     void
+- ro_move_child(window, x, y, pos_wanted, pos_got)
+-     int      window;
+-     int x,y;         /* offset to move by */
+-     int      pos_wanted, pos_got;
+- {
+-     int      block[10];
+- 
+-     block[0] = window;
+-     swi(Wimp_GetWindowState, 0, block);
+-     block[1] += x;
+-     block[2] += y;
+-     block[3] += x;
+-     block[4] += y;
+-     if (pos_wanted == -1)
+-      block[7] = -1;
+-     else if (pos_wanted == -2)
+-      block[7] = pos_got;
+-     swi(Wimp_OpenWindow, 0, block);
+- }
+- 
+- /* Open the main window. Also updates scrollbars if we are not
+-  * using the nested Wimp.
+-  * If we have just changed mode then re-read all values.
+-  */
+-     void
+- ro_open_main(block)
+-     int          *block;
+- {
+-     int          toggle_size;
+- 
+-     /* Find out if the user clicked on the toggle size icon. */
+-     block[20] = block[0];
+-     swi(Wimp_GetWindowState, 0, block + 20);
+-     toggle_size = block[28] & (1 << 19);
+- 
+-     if (nested_wimp)
+-     {
+-      swi(Wimp_OpenWindow, 0, block);
+-     }
+-     else
+-     {
+-      int     old[10];
+-      int     x_offset, y_offset;         /* Move children same as parent. */
+-      int     pos_wanted, pos_got;
+-      int     left_bar  = gui.which_scrollbars[SBAR_LEFT];
+-      int     right_bar = gui.which_scrollbars[SBAR_RIGHT];
+-      win_T   *wp;
+- 
+-      /* Three cases to think about:
+-       * 1) Move to top. Open each window at the top.
+-       * 2) Same stack position. Open each with same position.
+-       * 3) Open at bottom. Open children with parent's new position.
+-       */
+- 
+-      old[0] = block[0];
+-      swi(Wimp_GetWindowState, 0, old);
+-      pos_wanted = block[7];
+-      swi(Wimp_OpenWindow, 0, block);
+-      /* Block updated by OpenWindow? I don't think so! */
+-      swi(Wimp_GetWindowState, 0, block);
+-      pos_got = block[7];
+- 
+-      x_offset = block[1] - old[1];
+-      y_offset = block[4] - old[4];
+-      if (x_offset || y_offset || pos_wanted == -1 || pos_wanted == -2)
+-      {
+-          /* If parent has moved, re-open all the child windows. */
+-          FOR_ALL_WINDOWS(wp)
+-          {
+-              /* Reopen scrollbars for this window. */
+-              if (left_bar)
+-                  ro_move_child(wp -> w_scrollbars[SBAR_LEFT].id,
+-                              x_offset, y_offset,
+-                              pos_wanted, pos_got);
+-              if (right_bar)
+-                  ro_move_child(wp -> w_scrollbars[SBAR_RIGHT].id,
+-                              x_offset, y_offset,
+-                              pos_wanted, pos_got);
+-          }
+-      }
+-     }
+-     if (changed_mode || toggle_size)
+-     {
+-      int     width, height;
+- 
+-      if (changed_mode)
+-          ro_measure_tools();
+-      block[0] = gui.window_handle;
+-      swi(Wimp_GetWindowState, 0, block);
+- 
+-      width = block[3] - block[1];
+-      height = block[4] - block[2];
+-      swi(Wimp_ForceRedraw, gui.window_handle, 0, -height, width, 0);
+-      gui_resize_shell(width, height);
+-      changed_mode = FALSE;
+-     }
+- }
+- 
+-     void
+- ro_open_window(block)
+-     int              *block;
+- {
+-     int              pos;
+-     scrollbar_T *sb;
+- 
+-     if (block[0] == gui.window_handle)
+-      ro_open_main(block);
+-     else
+-     {
+-      swi(Wimp_OpenWindow, 0, block);
+-      if (block[0] != gui.window_handle)
+-      {
+-          sb = ro_find_sbar(block[0]);
+-          if (sb)
+-          {
+-              if (sb-> wp != NULL)
+-                  gui_drag_scrollbar(sb, -block[6] / gui.char_height, FALSE);
+-              else
+-                  gui_drag_scrollbar(sb, block[5] / gui.char_width, FALSE);
+-          }
+-      }
+-     }
+- }
+- 
+-     void
+- ro_menu_selection(block)
+-     int              *block;
+- {
+-     int              *item = wimp_menu + 7;
+-     vimmenu_T        *menu;
+-     /* wimp_menu points to a wimp menu structure */
+- 
+-     for (;;)
+-     {
+-      while (block[0]--)
+-          item += 6;
+-      if (block[1] == -1)
+-          break;
+-      item = ((int *) item[1]) + 7;
+-      block++;
+-     }
+-     /* item points to the wimp menu item structure chosen */
+-     menu = (vimmenu_T *) item[5];
+- 
+-     swi(Wimp_GetPointerInfo, 0, block);
+-     if (block[2] == 1)
+-      /* Adjust used - keep menu open */
+-      swi(Wimp_CreateMenu, 0, wimp_menu);
+- 
+-     if (menu-> cb)
+-      menu-> cb(menu);
+- }
+- 
+-     void
+- ro_open_parent()
+- {
+-     int head;
+-     char_u *i = curbuf-> b_ffname;
+-     char_u  buffer[256];
+- 
+-     head = 0;
+-     for (; *i; i++)
+-     {
+-      if (*i == '.')
+-          head = i - curbuf-> b_ffname;
+-     }
+- 
+-     /* Append head chars to buffer */
+-     if (head < 240 && curbuf-> b_ffname && head)
+-     {
+-      strcpy(buffer, "%filer_opendir ");
+-      strncpy(buffer + 15, curbuf-> b_ffname, head);
+-      buffer[15 + head] = '\0';
+-      swi(OS_CLI, buffer);
+-     }
+- }
+- 
+-     void
+- process_event(event, block)
+-     int event;
+-     int *block;
+- {
+-     switch (event)
+-     {
+-      case 0:         /* Nothing - update drag state. */
+-          if (ro_dragging)
+-              ro_continue_drag(block);
+-          break;
+-      case 1:         /* Redraw window. */
+-          redraw_window(block);
+-          break;
+-      case 2:         /* Open window. */
+-          ro_open_window(block);
+-          break;
+-      case 3:         /* Close window. */
+-          swi(Wimp_GetPointerInfo, 0, block + 1);
+-          if (block[3] == 1)
+-              ro_open_parent();
+-          else
+-              if (ro_ok_to_quit())
+-                  ro_quit();
+-          break;
+-      case 6:         /* Mouse click. */
+-          ro_mouse(block);
+-          break;
+-      case 7:         /* Finished drag. */
+-          ro_drag_finished(block);
+-          break;
+-      case 8:         /* Key pressed. */
+-          ro_insert_key((char_u *) &block[6]);
+-          break;
+-      case 9:
+-          ro_menu_selection(block);
+-          break;
+-      case 10:        /* Scroll request. */
+-          ro_scroll(block);
+-          break;
+-      case 11:        /* Lose caret. */
+-          if (block[0] == gui.window_handle)
+-              gui_focus_change(FALSE);
+-          break;
+-      case 12:        /* Gain caret. */
+-          if (block[0] == gui.window_handle)
+-              gui_focus_change(TRUE);
+-          break;
+-      case 17:        /* User message. */
+-      case 18:        /* User message recorded. */
+-          ro_message(block);
+-          break;
+-     }
+- }
+- 
+- /*
+-  * GUI input routine called by gui_wait_for_chars().  Waits for a character
+-  * from the keyboard.
+-  *  wtime == -1          Wait forever.
+-  *  wtime == 0           This should never happen.
+-  *  wtime > 0            Wait wtime milliseconds for a character.
+-  * Returns OK if a character was found to be available within the given time,
+-  * or FAIL otherwise.
+-  */
+-     int
+- gui_mch_wait_for_chars(long wtime)
+- {
+-     int block[64];
+-     int      reason;
+-     int start_time = -1;
+-     int ctime = wtime / 10;  /* delay in cs */
+- 
+-     if (wtime != -1)
+-     {
+-      swi(OS_ReadMonotonicTime);
+-      start_time = r0;
+-     }
+- 
+-     for (;;)
+-     {
+-      if (ro_dragging)
+-          reason = wimp_poll(0, block);       /* Always return immediately */
+-      else if (wtime == -1)
+-          reason = wimp_poll(1, block);
+-      else
+-          reason = wimp_pollidle(0, block, start_time + ctime);
+- 
+-      process_event(reason, block);
+- 
+-      if (input_available() || ro_return_early)
+-      {
+-          ro_return_early = FALSE;
+-          return OK;      /* There is something to process (key / menu event) */
+-      }
+- 
+-      if (wtime != -1)
+-      {
+-          swi(OS_ReadMonotonicTime);
+-          if (r0 - start_time > ctime)
+-              return FAIL;    /* We've been waiting too long - return failure */
+-      }
+-     }
+- }
+- 
+- /* Flush any output to the screen */
+-     void
+- gui_mch_flush(void)
+- {
+- }
+- 
+- /*
+-  * Clear a rectangular region of the screen from text pos(row1, col1) to
+-  * (row2, col2) inclusive.
+-  */
+-     void
+- gui_mch_clear_block(int row1, int col1, int row2, int col2)
+- {
+-     swi(ColourTrans_ReturnGCOL, gui.back_pixel << 8, 0, 0, 1<<7, 0);
+-     plot_rectangle(96 + 5, r0,
+-                      FILL_X(col1), -FILL_Y(row2 + 1),
+-                      FILL_X(col2 + 1), -FILL_Y(row1));
+- }
+- 
+-     void
+- gui_mch_clear_all(void)
+- {
+-     if (redraw_block)
+-     {
+-      swi(ColourTrans_SetGCOL, gui.back_pixel << 8, 0, 0, 1<<7, 0);
+-      swi(OS_WriteI + 16);
+-     }
+-     else
+-     {
+-      int block[44];
+-      block[0] = gui.window_handle;
+-      block[1] = 0;
+-      block[2] = -gui.num_rows * gui.char_height;
+-      block[3] = gui.num_cols * gui.char_width;
+-      block[4] = 0;
+-      swi(Wimp_UpdateWindow, 0, block);
+-      while (r0)
+-      {
+-          swi(ColourTrans_SetGCOL, gui.back_pixel << 8, 0, 0, 1<<7, 0);
+-          swi(OS_WriteI + 16);
+-          swi(Wimp_GetRectangle, 0, block);
+-      }
+-     }
+- }
+- 
+- /*
+-  * Delete the given number of lines from the given row, scrolling up any
+-  * text further down within the scroll region.
+-  */
+-     void
+- gui_mch_delete_lines(int row, int num_lines)
+- {
+-     int top_from = -row - num_lines;
+-     int bot_from = -gui.scroll_region_bot - 1;
+-     int bot_to   = bot_from + num_lines;
+- 
+-     swi(ColourTrans_SetGCOL, gui.back_pixel << 8, 0, 0, 0x80, 0);
+- 
+-     /* Changed without checking! */
+-     swi(Wimp_BlockCopy, gui.window_handle,
+-                          gui.scroll_region_left * gui.char_width,
+-                          bot_from * gui.char_height,
+-                          (gui.scroll_region_right - gui.scroll_region_left
+-                                                      + 1) * gui.char_width,
+-                          top_from * gui.char_height,
+- 
+-                          gui.scroll_region_left * gui.char_width,
+-                          bot_to * gui.char_height);
+- 
+-     gui_clear_block(gui.scroll_region_bot - num_lines + 1,
+-                                                     gui.scroll_region_left,
+-      gui.scroll_region_bot, gui.scroll_region_right);
+- }
+- 
+- /*
+-  * Insert the given number of lines before the given row, scrolling down any
+-  * following text within the scroll region.
+-  */
+-     void
+- gui_mch_insert_lines(int row, int num_lines)
+- {
+-     int top_from = -row;
+-     int bot_to   = -gui.scroll_region_bot - 1;
+-     int bot_from = bot_to + num_lines;
+- 
+-     swi(ColourTrans_SetGCOL, gui.back_pixel << 8, 0, 0, 0x80, 0);
+- 
+-     swi(Wimp_BlockCopy, gui.window_handle,
+-                          gui.scroll_region_left * gui.char_width,
+-                          bot_from * gui.char_height,
+-                          (gui.scroll_region_right - gui.scroll_region_left
+-                                                      + 1) * gui.char_width,
+-                          top_from * gui.char_height,
+- 
+-                          gui.scroll_region_left * gui.char_width,
+-                          bot_to * gui.char_height);
+- 
+-     gui_clear_block(row, gui.scroll_region_left,
+-                              row + num_lines - 1, gui.scroll_region_right);
+- }
+- 
+- /* Put selection in clipboard buffer.
+-  * Should we become the new owner?
+-  */
+-     void
+- clip_mch_request_selection(VimClipboard *cbd)
+- {
+-     int              block[64];      /* Will be used in Wimp_Poll. */
+-     int              reason;
+-     char_u   *buffer;
+-     long_u   length;
+- 
+-     block[0] = 48;                   /* Size of block. */
+-     block[3] = 0;                    /* Original message. */
+-     block[4] = 0x10;                 /* Data request. */
+-     block[5] = gui.window_handle;
+-     block[6] = RO_LOAD_CLIPBOARD;    /* Internal handle. */
+-     block[7] = block[8] = 0;         /* (x,y) not used. */
+-     block[9] = 4;
+-     block[10] = 0xfff;           /* We want text files if possible, I think. */
+-     block[11] = -1;      /* End of list. */
+-     swi(Wimp_SendMessage, 17, block, 0);    /* Broadcast request. */
+- 
+-     /* OK, we've sent the request. Poll until we get a null poll (failure) or
+-      * we load the clipboard.
+-      * If we receive a DataSave event with icon handle = -2 then put it on the
+-      * clipboard. RISC OS should ensure that key events will not be delivered
+-      * until the clipboard operation completes (unless the owner starts idling
+-      * - we can't wait forever!).
+-      */
+-     for (;;)
+-     {
+-      reason = wimp_poll(0, block);
+-      if (reason == 0)
+-          return;         /* Failed to get clipboard. */
+-      if ((reason == 17 || reason == 18) &&
+-              block[4] == 1 && block[6] == RO_LOAD_CLIPBOARD)
+-          break;          /* Got it - stop waiting. */
+-      process_event(reason, block);
+-      if (ro_return_early)
+-          return;
+-     }
+-     /* Tell owner to save data in <Wimp$Scrap>. */
+-     block[0] = 60;
+-     block[3] = block[2];   /* Copy myref -> yourref */
+-     block[4] = 2;        /* DataSaveAck. */
+-     block[9] = -1;       /* Data is unsafe. */
+-     strcpy( ((char_u *) block) + 44, "<Wimp$Scrap>");
+-     swi(Wimp_SendMessage, 17, block, block[1]);
+- 
+-     /* Wait again for reply. */
+-     for (;;)
+-     {
+-      reason = wimp_poll(0, block);
+-      if (reason == 0)
+-          return;     /* Other program has given up! */
+-      if ((reason == 17 || reason == 18) && block[4] == 3 && block[6] == RO_LOAD_CLIPBOARD)
+-          break;      /* Clipboard data saved to <Wimp$Scrap> */
+-      process_event(reason, block);
+-      if (ro_return_early)
+-          return;
+-     }
+- 
+-     /* <Wimp$Scrap> contains clipboard - load it. */
+-     if (xswi(OS_File, 17, "<Wimp$Scrap>") & v_flag)
+-      return;         /* Error! */
+-     if (r0 != 1 && r0 != 3)
+-      return;
+-     length = r4;
+- 
+-     buffer = lalloc(length, TRUE);  /* Claim memory (and report errors). */
+-     if (buffer == NULL)
+-      return;
+- 
+-     if (xswi(OS_File, 16, "<Wimp$Scrap>", buffer, 0) & v_flag)
+-      return;
+- 
+-     clip_yank_selection(MCHAR, buffer, length, cbd);
+- 
+-     vim_free(buffer);
+- 
+-     swi(OS_FSControl, 27, "<Wimp$Scrap>", 0, 0);    /* Delete temp file. */
+- 
+-     block[4] = 4;                /* Send DataLoadAck. */
+-     block[3] = block[2];         /* Copy myref -> yourref. */
+-     swi(Wimp_SendMessage, 17, block, block[1]);
+- }
+- 
+- /* Not sure what this means under RISC OS. */
+-     void
+- clip_mch_lose_selection(VimClipboard *cbd)
+- {
+- }
+- 
+- /* Tell everyone that we now own the clipboard.
+-  * Return OK if our claim is accepted (always, under RISC OS)
+-  */
+-     int
+- clip_mch_own_selection(VimClipboard *cbd)
+- {
+-     int block[6];
+-     block[0] = 24;   /* Length of block.  */
+-     block[3] = 0;    /* Original message. */
+-     block[4] = 0xf;  /* ClaimEntity. */
+-     block[5] = 0x4;  /* Claim clipboard only. */
+-     swi(Wimp_SendMessage, 17, block, 0);
+-     return OK;
+- }
+- 
+- /*
+-  * Send the current selection to the clipboard.  Do nothing for X because we
+-  * will fill in the selection only when requested by another app. Sounds good
+-  * for RISC OS too.
+-  */
+-     void
+- clip_mch_set_selection(VimClipboard *cbd)
+- {
+-     clip_get_selection(cbd);
+- }
+- 
+- /*
+-  * Make a menu either grey or not grey.
+-  */
+-     void
+- gui_mch_menu_grey(vimmenu_T *menu, int grey)
+- {
+-     menu-> greyed_out = grey;
+- }
+- 
+- /*
+-  * Make menu item hidden or not hidden
+-  */
+-     void
+- gui_mch_menu_hidden(vimmenu_T *menu, int hidden)
+- {
+-     menu-> hidden = hidden;
+- }
+- 
+- /*
+-  * This is called after setting all the menus to grey/hidden or not.
+-  */
+-     void
+- gui_mch_draw_menubar(void)
+- {
+-     swi(Wimp_CreateMenu, 0, -1);
+-     if (wimp_menu != (int *) -1)
+-     {
+-      ro_remove_menu(wimp_menu);
+-      wimp_menu = (int *) -1;
+-     }
+- }
+- 
+- /* Add or remove a scrollbar. Note that this is only called when
+-  * the scrollbar state is changing.
+-  * The scroll bar window has already been created.
+-  * We can't do anything except remove the scroll bar
+-  * until we know what size to use.
+-  */
+-     void
+- gui_mch_enable_scrollbar(sb, flag)
+-     scrollbar_T      *sb;
+-     int              flag;
+- {
+-     if (!flag)
+-      swi(Wimp_CloseWindow, 0, & (sb->id) );
+-     return;
+- }
+- 
+-     void
+- gui_mch_set_blinking(long waittime, long on, long off)
+- {
+- }
+- 
+- /*
+-  * Stop the cursor blinking.  Show the cursor if it wasn't shown.
+-  */
+-     void
+- gui_mch_stop_blink(void)
+- {
+- }
+- 
+- /*
+-  * Start the cursor blinking.  If it was already blinking, this restarts the
+-  * waiting time and shows the cursor.
+-  */
+-     void
+- gui_mch_start_blink(void)
+- {
+- }
+- 
+- /*
+-  * Return the RGB value of a pixel as a long.
+-  */
+-     long_u
+- gui_mch_get_rgb(guicolor_T pixel)
+- {
+-     return (long_u)pixel;
+- }
+- 
+-     void
+- gui_mch_set_text_area_pos(int x, int y, int w, int h)
+- {
+- }
+- 
+-     void
+- gui_mch_enable_menu(int flag)
+- {
+- }
+- 
+-     void
+- gui_mch_set_menu_pos(int x, int y, int w, int h)
+- {
+- }
+- 
+-     void
+- gui_mch_add_menu(vimmenu_T *menu, int idx)
+- {
+- }
+- 
+-     void
+- gui_mch_add_menu_item(vimmenu_T *menu, int idx)
+- {
+- }
+- 
+-     void
+- gui_mch_new_menu_colors(void)
+- {
+- }
+- 
+-     void
+- gui_mch_destroy_menu(vimmenu_T *menu)
+- {
+- }
+- 
+- /* Size of buffer has changed.
+-  * Add one to max since gui.c subtracts one more than it should!
+-  */
+-     void
+- gui_mch_set_scrollbar_thumb(sb, val, size, max)
+-     scrollbar_T      *sb;
+-     long     val;
+-     long     size;
+-     long     max;
+- {
+-     int              block[10], width, height;
+- 
+-     width = (max + 1) * gui.char_width;
+-     height = (max + 1 + W_STATUS_HEIGHT(sb->wp)) * gui.char_height;
+- 
+-     block[0] = block[3] = 0;
+-     block[1] = -height + (1 << y_eigen_factor);
+-     block[2] = width;
+- 
+-     swi(Wimp_SetExtent, sb -> id, block);
+- 
+-     block[0] = sb -> id;
+-     swi(Wimp_GetWindowState, 0, block);
+-     block[5] = val * gui.char_width;
+-     block[6] = -val * gui.char_height;
+-     swi(Wimp_OpenWindow, 0, block, 0x4b534154,
+-                      gui.window_handle,      /* Parent window handle. */
+-                      (CHILD_FIX_TO_RIGHT  << CHILD_LEFT  )   |
+-                      (CHILD_FIX_TO_RIGHT  << CHILD_RIGHT )   |
+-                      (CHILD_FIX_TO_BOTTOM << CHILD_TOP   )   |
+-                      (CHILD_FIX_TO_BOTTOM << CHILD_BOTTOM)   |
+-                      (CHILD_SELF_SCROLL   << CHILD_SCROLL_X) |
+-                      (CHILD_SELF_SCROLL   << CHILD_SCROLL_Y)
+-                      );
+- }
+- 
+- /* Set the position of the scrollbar within the editor
+-  * window. Note that, for vertical scrollbars, x and w
+-  * are ignored. For horizontal bars y and h are ignored.
+-  */
+-     void
+- gui_mch_set_scrollbar_pos(sb, x, y, w, h)
+-     scrollbar_T *sb;
+-     int              x;              /* Horizontal sb position */
+-     int              y;              /* Top of scroll bar */
+-     int              w;              /* Width */
+-     int              h;              /* Height */
+- {
+-     int              block[24];
+-     int              px1, py1;       /* Parent window min coords */
+-     int              px2, py2;       /* Parent window max coords */
+- 
+-     /* Find where the parent window is. */
+-     block[0] = gui.window_handle;
+-     swi(Wimp_GetWindowState, 0, block);
+-     px1 = block[1];
+-     py1 = block[2];
+-     px2 = block[3];
+-     py2 = block[4];
+- 
+-     block[0] = sb -> id;
+- 
+-     /* Find out how big the scroll window is at the moment. */
+-     swi(Wimp_GetWindowInfo, 0, ((char_u *)block) + 1);
+- 
+-     if (block[13] < w || block[12] > -h)
+-     {
+-      /* Current window is too small! */
+-      if (block[12] > -h)
+-          block[12] = -h;
+-      if (block[13] < w)
+-          block[13] = w;
+-      swi(Wimp_SetExtent, block[0], block + 11);
+-     }
+- 
+-     /* This works better on the nested_wimp. */
+-     if (sb-> wp)
+-     {
+-      /* This is a vertical scrollbar. */
+-      block[1] = block[3] = px2 - gui.scrollbar_width + (1 << x_eigen_factor);
+-      block[2] = 1 + py2 - (y + h) + (1 << y_eigen_factor);
+-      block[4] = 1 + py2 - y;
+-     }
+-     else
+-     {
+-      /* This is a horizontal scrollbar. */
+-      block[2] = block[4] = py1 + gui.scrollbar_height;
+-      block[1] = px1;
+-      block[3] = px2 - gui.scrollbar_width;
+-     }
+- 
+-     block[5] = 0;
+-     block[6] = 0;
+-     block[7] = -1;
+- 
+-     swi(Wimp_OpenWindow, 0, block, 0x4b534154,
+-          gui.window_handle,  /* Parent window handle. */
+-          (CHILD_FIX_TO_RIGHT  << CHILD_LEFT  )   |
+-          (CHILD_FIX_TO_RIGHT  << CHILD_RIGHT )   |
+-          (CHILD_FIX_TO_BOTTOM << CHILD_TOP   )   |
+-          (CHILD_FIX_TO_BOTTOM << CHILD_BOTTOM)   |
+-          (CHILD_SELF_SCROLL   << CHILD_SCROLL_X) |
+-          (CHILD_SELF_SCROLL   << CHILD_SCROLL_Y)
+-        );
+- }
+- 
+- /* Create a window with no workarea to place inside editor window.
+-  * (what happens without the nested wimp?)
+-  * Data for scrollbar is invalid.
+-  */
+-     void
+- gui_mch_create_scrollbar(sb, orient)
+-     scrollbar_T *sb;
+-     int              orient; /* orient is SBAR_HORIZ or SBAR_VERT */
+- {
+-     int bar[] =
+-      {
+-          0,   0,             /* Visible area : min X,Y */
+-          100, 100,           /*                max X,Y */
+-          0,   0,             /* Scroll offsets */
+-          -1,                 /* Window in front */
+-          0x80800150 | (orient == SBAR_HORIZ ? (1 << 30) : (1 << 28)),
+-          0xff070207,         /* Colours */
+-          0x000c0103,         /* More colours */
+-          0, -0x4000,         /* Workarea extent */
+-          0x4000, 0,          /* max X,Y */
+-          0x00000000,         /* No title */
+-          0 << 12,            /* No workarea button type */
+-          1,                  /* Wimp sprite area */
+-          0x00010001,         /* Minimum width, height */
+-          0, 0, 0,            /* Title data (none) */
+-          0                   /* No icons */
+-      };
+-     swi(Wimp_CreateWindow, 0, bar);
+-     sb -> id = r0;
+- }
+- 
+- #if defined(FEAT_WINDOWS) || defined(PROTO)
+-     void
+- gui_mch_destroy_scrollbar(scrollbar_T *sb)
+- {
+-     swi(Wimp_DeleteWindow, 0, & (sb->id));
+-     sb -> id = -1;
+- }
+- #endif
+- 
+-     void
+- gui_mch_set_scrollbar_colors(scrollbar_T *sb)
+- {
+-     /* Always use default RO colour scheme. */
+- }
+- 
+- /*
+-  * Get current mouse coordinates in text window.
+-  * Note: (0,0) is the bottom left corner, positive y is UP.
+-  */
+-     void
+- gui_mch_getmouse(x, y)
+-     int *x;
+-     int *y;
+- {
+-     int left;
+-     int top;
+-     int block[10];
+- 
+-     block[0] = gui.window_handle;
+-     swi(Wimp_GetWindowState, 0, block);
+-     left = block[1];
+-     top = block[4];
+- 
+-     swi(Wimp_GetPointerInfo, 0, block);
+-     *x = block[0] - left;
+-     *y = top - block[1];
+- }
+- 
+- /* MouseTo(x, y) */
+-     void
+- gui_mch_setmouse(x, y)
+-     int              x;
+-     int              y;
+- {
+- }
+- 
+-     void
+- gui_mch_toggle_tearoffs(enable)
+-     int              enable;
+- {
+-     /* no tearoff menus */
+- }
+- 
+- /* Redraw a window's title.
+-  * For the nested wimp we use the new 'redraw-title-bar' reason code.
+-  * For older wimps we mark the area of the screen where the title bar
+-  * is as invalid.
+-  */
+-     void
+- ro_redraw_title(window)
+-     int window;
+- {
+-     if (nested_wimp)
+-     {
+-      swi(Wimp_ForceRedraw, window, 0x4b534154, 3);
+-     }
+-     else
+-     {
+-      int block[10];
+-      int miny;
+- 
+-      block[0] = window;
+-      swi(Wimp_GetWindowState, 0, block);
+-      miny = block[4];
+-      swi(Wimp_GetWindowOutline, 0, block);
+-      swi(Wimp_ForceRedraw, -1,
+-                      block[1], miny,
+-                      block[3], block[4]);
+-     }
+- }
+- 
+- /* Turn a vimmenu_T structure into a wimp menu structure.
+-  * -1 if resulting menu is empty.
+-  * Only the children and dname items in the root menu are used.
+-  */
+-     int *
+- ro_build_menu(menu)
+-     vimmenu_T        *menu;
+- {
+-     int              *wimp_menu;
+-     int              width = 4;
+-     int              w;
+-     int              size = 28;
+-     vimmenu_T        *item;
+-     int              *wimp_item;
+- 
+-     /* Find out how big the menu is so we can allocate memory for it */
+-     for (item = menu-> children; item; item = item-> next)
+-     {
+-      if (item-> hidden == FALSE && !menu_is_separator(item->name))
+-          size += 24;
+-     }
+- 
+-     if (size <= 28)
+-      return (int *) -1;              /* No children - shouldn't happen */
+- 
+-     wimp_menu = (int *) alloc(size);
+- 
+-     wimp_menu[0] = (int) menu-> dname;
+-     wimp_menu[1] = -1;
+-     wimp_menu[2] = 0;
+-     wimp_menu[3] = 0x00070207;
+-     wimp_menu[5] = 44;
+-     wimp_menu[6] = 0;
+- 
+-     wimp_item = wimp_menu + 7;
+- 
+-     for (item = menu-> children; item; item = item-> next)
+-     {
+-      if (menu_is_separator(item-> name))
+-      {
+-          /* This menu entry is actually a separator. If it is not the first
+-           * menu entry then mark the previous menu item as needing a dotted
+-           * line after it.
+-           */
+-          if (wimp_item > wimp_menu + 7)
+-              wimp_item[-6] |= 0x2;
+-      }
+-      else if (item-> hidden == FALSE)
+-      {
+-          wimp_item[0] = 0;
+-          wimp_item[1] = item-> children ? (int) ro_build_menu(item) : -1;
+-          wimp_item[2] = 0x07009131 | (item-> greyed_out << 22);
+-          wimp_item[3] = (int) item-> dname;
+-          wimp_item[4] = -1;
+-          wimp_item[5] = (int) item;  /* Stuff the menu address in this unused space */
+- 
+-          w = strlen(item-> dname) + 1;
+-          if (w > width)
+-              width = w;
+-          wimp_item += 6;
+-      }
+-     }
+- 
+-     wimp_menu[4] = (width + 2) * 16;
+-     wimp_menu[7]  |= 0x100;      /* Menu title is indirected */
+-     wimp_item[-6] |= 0x080;      /* Last entry in menu */
+-     return wimp_menu;
+- }
+- 
+-     static void
+- ro_remove_menu(menu)
+-     int          *menu;
+- {
+-     int          *item = menu + 7;
+- 
+-     if (menu == NULL || menu == (int *) -1)
+-      return;
+- 
+-     for (;;)
+-     {
+-      if (item[1] != -1)
+-          ro_remove_menu((int *) item[1]);    /* Remove sub-menu */
+-      if (item[0] & 0x80)
+-          break;                      /* This was the last entry */
+-      item += 6;
+-     }
+-     vim_free(menu);
+- }
+- 
+-     void
+- gui_mch_show_popupmenu(menu)
+-     vimmenu_T        *menu;
+- {
+-     int              block[10];
+- 
+-     /* Remove the existing menu, if any */
+-     if (wimp_menu != (int *) -1)
+-     {
+-      swi(Wimp_CreateMenu, 0, -1);
+-      ro_remove_menu(wimp_menu);
+-      wimp_menu = (int *) -1;
+-     }
+- 
+-     wimp_menu = ro_build_menu(menu);
+-     if (wimp_menu != (int *) -1)
+-     {
+-      swi(Wimp_GetPointerInfo, 0, block);
+-      swi(Wimp_CreateMenu, 0, wimp_menu, block[0] - 64, block[1] + 64);
+-     }
+- }
+- 
+- /* Run a command using the TaskWindow module.
+-  * If SHELL_FILTER is set then output is not echoed to the screen,
+-  * If it is not set, then \r is not sent to the output file.
+-  */
+-     int
+- gui_mch_call_shell(cmd, options)
+-     char_u  *cmd;
+-     int          options;    /* SHELL_FILTER if called by do_filter() */
+-                      /* SHELL_COOKED if term needs cooked mode */
+- {
+-     char_u  task_cmd[256];   /* Contains *TaskWindow command. */
+-     int          block[64];
+-     int          reason;
+-     char_u  *out;
+-     char_u  c;
+-     int          old_msg_col;
+-     char_u  *out_redir;
+-     int          length;
+-     FILE    *out_file = NULL;
+- 
+-     out_redir = strstr(cmd, " > ");
+-     if (out_redir == NULL)
+-      length = strlen(cmd);   /* No redirection. */
+-     else
+-     {
+-      length = out_redir - cmd;
+-      out_file = fopen(out_redir + 3, "wb");
+-      if (out_file == NULL)
+-          smsg("WARNING : Can't open file %s for writing\n", out_redir + 3);
+-     }
+- 
+-     if (length > 180)
+-     {
+-      if (out_file)
+-          fclose(out_file);
+-      return FAIL;            /* Command too long. */
+-     }
+- 
+-     strcpy(task_cmd, "TaskWindow \"");
+-     strncpy(task_cmd + 12, cmd, length);
+-     sprintf(task_cmd + 12 + length,
+-          "\" -task &%08x -ctrl -quit -name \"Vim command\"",
+-          task_handle);
+- 
+-     if (options & SHELL_COOKED)
+-      settmode(TMODE_COOK);
+- 
+-     if (xswi(Wimp_StartTask, task_cmd) & v_flag)
+-     {
+-      /* Failed to even start a new task (out of memory?) */
+-      settmode(TMODE_RAW);
+-      if (out_file)
+-          fclose(out_file);
+-      return FAIL;
+-     }
+- 
+-     /* Wait for the child process to initialise. */
+-     child_handle = 0;
+-     while (!child_handle)
+-     {
+-      reason = wimp_poll(0, block);
+-      if ((reason == 17 || reason == 18) && block[4] == 0x808c2)
+-          child_handle = block[1];
+-      else
+-          process_event(reason, block);
+-     }
+- 
+-     /* Block until finished */
+-     while (child_handle)
+-     {
+-      reason = wimp_poll(1, block);
+-      if (reason == 3 || (reason == 8 && block[6] == 3))
+-      {
+-          /* Close window request or CTRL-C - kill child task. */
+-          block[0] = 20;
+-          block[3] = 0;
+-          block[4] = 0x808c4;     /* Morite */
+-          swi(Wimp_SendMessage, 17, block, child_handle);
+-          MSG_PUTS(_("\nSending message to terminate child process.\n"));
+-          continue;
+-      }
+-      else if (reason == 8)
+-      {
+-          block[0] = 28;
+-          block[3] = 0;
+-          block[4] = 0x808c0;     /* Input */
+-          block[5] = 1;
+-          /* Block[6] is OK as it is! */
+-          swi(Wimp_SendMessage, 17, block, child_handle);
+-          continue;
+-      }
+-      else if (reason == 17 || reason == 18)
+-      {
+-          if (block[4] == 0x808c1)
+-          {
+-              /* Ack message. */
+-              block[3] = block[2];
+-              swi(Wimp_SendMessage, 19, block, block[1]);
+-              out = (char_u *)block + 24;
+-              old_msg_col = msg_col;
+-              while (block[5]--)
+-              {
+-                  c = *out++;
+-                  if (out_file && (c != '\r' || (options & SHELL_FILTER)))
+-                      fputc(c, out_file);
+-                  if ((options & SHELL_FILTER) == 0)
+-                  {
+-                      if (c == 127)
+-                          msg_puts("\b \b");
+-                      else if (c > 31)
+-                          msg_putchar(c);
+-                      else if (c == 10)
+-                      {
+-                          lines_left = 8;     /* Don't do More prompt! */
+-                          msg_putchar(10);
+-                      }
+-                  }
+-              }
+-              /* Flush output to the screen. */
+-              windgoto(msg_row, msg_col);
+-              out_flush();
+-              continue;
+-          }
+-      }
+-      process_event(reason, block);
+-     }
+-     msg_putchar('\n');
+-     settmode(TMODE_RAW);
+-     if (out_file)
+-      fclose(out_file);
+-     return OK;
+- }
+- 
+- /* Like strsave(), but stops at any control char */
+-     char_u *
+- wimp_strsave(str)
+-     char    *str;
+- {
+-     int          strlen = 0;
+-     char_u  *retval;
+-     while (str[strlen] > 31)
+-      strlen++;
+-     retval = alloc(strlen + 1);
+-     if (retval)
+-     {
+-      memcpy(retval, str, strlen);
+-      retval[strlen] = '\0';
+-     }
+-     return retval;
+- }
+- 
+- /* If we are saving then pop up a standard RISC OS save box.
+-  * Otherwise, open a directory viewer on the given directory (and return NULL)
+-  * The string we return will be freed later.
+-  */
+-     char_u *
+- gui_mch_browse(saving, title, dflt, ext, initdir, filter)
+-     int              saving;         /* write action */
+-     char_u   *title;         /* title for the window */
+-     char_u   *dflt;          /* default file name */
+-     char_u   *ext;           /* extension added */
+-     char_u   *initdir;       /* initial directory, NULL for current dir */
+-     char_u   *filter;        /* file name filter */
+- {
+-     char command[256];
+-     int length;
+- 
+-     if (saving)
+-     {
+-      int     block[64];
+-      int     reason;
+-      int     done_save = FALSE;
+-      char_u  *retval = NULL;
+-      char_u  *sprname;
+-      char_u  *fname;
+-      int     dragging_icon = FALSE;
+-      int     filetype;
+- 
+-      if (!dflt)
+-          dflt = "TextFile";
+- 
+-      block[0] = save_window;
+-      block[1] = 0;
+-      swi(Wimp_GetIconState, 0, block);
+-      sprname = ((char_u *) block[7]);
+-      block[1] = 1;
+-      swi(Wimp_GetIconState, 0, block);
+-      fname = ((char *) block[7]);
+-      strncpy(fname, dflt, 255);
+- 
+-      if (xswi(OS_FSControl, 31, curbuf->b_p_oft) & v_flag)
+-      {
+-          filetype = 0xfff;
+-          strcpy(sprname + 5, "xxx");
+-      }
+-      else
+-      {
+-          filetype = r2;
+-          sprintf(sprname + 5, "%03x", filetype);
+-      }
+- 
+-      /* Open the save box */
+- 
+-      swi(Wimp_GetPointerInfo, 0, block);
+-      swi(Wimp_CreateMenu, 0, save_window, block[0] - 64, block[1] + 64);
+-      swi(Wimp_SetCaretPosition, save_window, 1, 0, 0, -1, -1);
+- 
+-      while (!done_save)
+-      {
+-          reason = wimp_poll(1, block);
+-          switch (reason)
+-          {
+-              case 1:
+-                  redraw_window(block);
+-                  break;
+-              case 2:
+-                  if (block[0] == save_window)
+-                      swi(Wimp_OpenWindow, 0, block);
+-                  else
+-                      ro_open_window(block);
+-                  break;
+-              case 3:
+-                  done_save = TRUE;
+-                  break;
+-              case 6:
+-                  if (block[3] != save_window)
+-                      done_save = TRUE;
+-                  else
+-                  {
+-                      int drag_box[4];
+-                      int min_x, max_y;
+- 
+-                      switch (block[4])
+-                      {
+-                          case    0: /* Start drag */
+-                              block[0] = save_window;
+-                              swi(Wimp_GetWindowState, 0, block);
+-                              min_x = block[1];
+-                              max_y = block[4];
+-                              block[1] = 0;
+-                              swi(Wimp_GetIconState, 0, block);
+-                              drag_box[0] = block[2] + min_x;
+-                              drag_box[1] = block[3] + max_y;
+-                              drag_box[2] = block[4] + min_x;
+-                              drag_box[3] = block[5] + max_y;
+- 
+-                              swi(DragASprite_Start,
+-                                      0x45,
+-                                      1,
+-                                      sprname,
+-                                      drag_box);
+-                              dragging_icon = TRUE;
+-                              break;
+-                          case    2: /* OK */
+-                              retval = wimp_strsave(fname);
+-                              done_save = TRUE;
+-                              break;
+-                          case    3: /* Cancel */
+-                              done_save = TRUE;
+-                              break;
+-                      }
+-                  }
+-                  break;
+-              case 7:
+-                  if (dragging_icon)
+-                  {
+-                      int len = 0;
+- 
+-                      dragging_icon = FALSE;
+-                      swi(Wimp_GetPointerInfo, 0, block);
+-                      block[5] = block[3];
+-                      block[6] = block[4];
+-                      block[7] = block[0];
+-                      block[8] = block[1];
+-                      block[9] = 0;           /* Don't know the size */
+-                      block[10] = filetype;
+- 
+-                      while (fname[len] > 31)
+-                      {
+-                          if (fname[len] == '.')
+-                          {
+-                              fname += len + 1;
+-                              len = 0;
+-                          }
+-                          else
+-                              len++;
+-                      }
+-                      if (len > 211)
+-                          len = 211;
+- 
+-                      memcpy(((char_u *) block) + 44, fname, len);
+-                      ((char_u *)block)[44 + len] = '\0';
+- 
+-                      block[0] = (len + 48) & 0xfc;
+-                      block[3] = 0;
+-                      block[4] = 1;       /* DataSave */
+- 
+-                      swi(Wimp_SendMessage, 17, block, block[5], block[6]);
+-                  }
+-                  else
+-                      ro_drag_finished(block);
+-                  break;
+-              case 8:
+-                  if (block[6] == 13)
+-                  {
+-                      retval = wimp_strsave(fname);
+-                      done_save = TRUE;
+-                  }
+-                  else if (block[6] == 0x1b)
+-                      done_save = TRUE;
+-                  else
+-                      swi(Wimp_ProcessKey, block[6]);
+-                  break;
+-              case 17:
+-              case 18:
+-                  if (block[4] == 2 && block[9] != -1)
+-                  {
+-                      /* DataSaveAck from dragging icon. */
+-                      retval = wimp_strsave(((char_u *) block) + 44);
+-                      done_save = TRUE;
+-                  }
+-                  else if (block[4] == 0x400c9)
+-                  {
+-                      /* MenusDeleted */
+-                      done_save = TRUE;
+-                  }
+-                  else
+-                      ro_message(block);
+-                  break;
+-          }
+-      }
+-      block[0] = save_window;
+-      swi(Wimp_CloseWindow, 0, block);
+-      swi(Wimp_GetCaretPosition, 0, block);
+-      if (block[0] == -1)
+-          swi(Wimp_SetCaretPosition, gui.window_handle, -1, 0, 0, -1, -1);
+- 
+-      return retval;
+-     }
+-     else if (initdir)
+-     {
+-      /* Open a directory viewer */
+-      length = strlen(initdir);
+- 
+-      if (length > 240)
+-          return NULL;        /* Path too long! */
+- 
+-      length = sprintf(command, "Filer_OpenDir %s", initdir);
+-      while (command[length - 1] == '.')
+-          length--;
+-      command[length] = '\0';
+-      swi(OS_CLI, command);
+-     }
+-     return NULL;
+- }
+--- 0 ----
+*** ../vim-7.3.186/src/os_riscos.c     2010-08-15 21:57:27.000000000 +0200
+--- src/os_riscos.c    1970-01-01 01:00:00.000000000 +0100
+***************
+*** 1,1292 ****
+- /* vi:set ts=8 sts=4 sw=4:
+-  *
+-  * VIM - Vi IMproved by Bram Moolenaar
+-  *
+-  * Do ":help uganda"  in Vim to read copying and usage conditions.
+-  * Do ":help credits" in Vim to see a list of people who contributed.
+-  * See README.txt for an overview of the Vim source code.
+-  */
+- 
+- #include "vim.h"
+- 
+- /*
+-  * os_riscos.c
+-  *
+-  * Thomas Leonard <tal197@ecs.soton.ac.uk>
+-  */
+- 
+- const char *__dynamic_da_name = "Vim heap"; /* Enable and name our dynamic area */
+- int ro_line_mode = TRUE;  /* For Ex mode we much echo chars to the screen ourselves */
+- int windowed;                /* Flag - are we running inside a text window? */
+- int WinLeft, WinTop; /* We might be started inside a text window */
+- int ScrollTop;               /* Make cursor movements relative to ScrollTop. */
+- 
+- int old_escape_state = -1;
+- int old_cursor_state = -1;
+- 
+- #define rgb(r,g,b) ((b<<24) + (g<<16) + (r<<8))
+- #define NORMAL_FG 0x00000000
+- #define NORMAL_BG 0xffffffff
+- 
+- /* Convert a DOS colour number to an RGB palette entry.
+-  * Mappings from X11 rgb/txt file.
+-  */
+-     static int
+- map_colour(dos)
+-     int dos;         /* Standard DOS colour number. */
+- {
+-     switch (dos)
+-     {
+-      case 0: return 0;                       /* Black */
+-      case 1: return rgb(0,0,139);            /* DarkBlue */
+-      case 2: return rgb(0,100,0);            /* DarkGreen */
+-      case 3: return rgb(0,139,139);          /* DarkCyan */
+-      case 4: return rgb(139,0,0);            /* DarkRed */
+-      case 5: return rgb(139,0,139);          /* DarkMagenta */
+-      case 6: return rgb(165,42,42);          /* Brown, DarkYellow */
+-      case 7: return rgb(211,211,211);        /* LightGray, LightGrey, Gray, Grey */
+-      case 8: return rgb(169,169,169);        /* DarkGray, DarkGrey */
+-      case 9: return rgb(173,216,230);        /* Blue, LightBlue */
+-      case 10: return rgb(144,238,144);       /* Green, LightGreen */
+-      case 11: return rgb(224,255,255);       /* Cyan, LightCyan */
+-      case 12: return rgb(255,0,0);           /* Red, LightRed */
+-      case 13: return rgb(255,0,255);         /* Magenta, LightMagenta */
+-      case 14: return rgb(255,255,0);         /* Yellow, LightYellow */
+-      case 15: return rgb(255,255,255);       /* White */
+-     }
+-     return rgb(100,100,100);
+- }
+- 
+-     static void
+- text_fg(fg)
+-     int fg;          /* Foregound colour in the form &BBGGRR00 */
+- {
+-     xswi(ColourTrans_SetTextColour, fg, 0, 0, 0);
+- }
+- 
+-     static void
+- text_bg(bg)
+-     int              bg;     /* Backgound colour in the form &BBGGRR00 */
+- {
+-     xswi(ColourTrans_SetTextColour, bg, 0, 0, 1 << 7);
+- }
+- 
+- #define OUT_NORMAL 0
+- #define OUT_NUMBER 1         /* Reading in a number */
+- 
+-     void
+- mch_write(s, len)
+-     char_u  *s;
+-     int          len;
+- {
+-     static int mode = OUT_NORMAL;
+-     static int x, y;                 /* For reading numbers in. */
+- 
+-     if (!term_console)
+-     {
+-      /* Maybe we are running Vim remotely - don't interpret chars */
+-      while (len--)
+-      {
+-          char_u c = *s++;
+-          swi(OS_WriteC, c);
+-          /* We might need to send a CR too. This shouldn't
+-           * hurt if we don't need it, should it?
+-           */
+-          if (c == 10)
+-              swi(OS_WriteI + 13);
+-      }
+-      return;
+-     }
+- 
+-     while (len--)
+-     {
+-      char_u c = *s++;
+-      switch (mode)
+-      {
+-          case OUT_NUMBER:
+-              if (c < '0' || c > '9')
+-              {
+-                  mode = OUT_NORMAL;
+-              }
+-              else
+-              {
+-                  x = (x * 10) + c - '0';
+-                  continue;
+-              }
+-          /* note: no break here! */
+- 
+-          case OUT_NORMAL:
+-              switch (c)
+-              {
+-                  case 1:
+-                      /* Number (in decimal) follows. */
+-                      mode = OUT_NUMBER;
+-                      y = x;
+-                      x = 0;
+-                      break;
+-                  case 2:
+-                      /* Position cursor. */
+-                      swi(OS_WriteI + 31);
+-                      swi(OS_WriteC, x);
+-                      swi(OS_WriteC, y - ScrollTop);
+-                      break;
+-                  case 3:
+-                      /* Set scroll region. */
+-                      if (x == Rows -1 && y == 0 && !windowed)
+-                      {
+-                          /* Whole screen - remove text window.
+-                           * This is MUCH faster.
+-                           */
+-                          swi(OS_WriteI + 26);
+-                      }
+-                      else
+-                      {
+-                          /* Create a text window. */
+-                          swi(OS_WriteI + 28);
+-                          swi(OS_WriteC, WinLeft);
+-                          swi(OS_WriteC, WinTop + x);
+-                          swi(OS_WriteC, WinLeft + Columns - 1);
+-                          swi(OS_WriteC, WinTop + y);
+-                      }
+-                      ScrollTop = y;
+-                      break;
+-                  case 4:
+-                      /* Normal mode. */
+-                      text_fg(NORMAL_FG);
+-                      text_bg(NORMAL_BG);
+-                      break;
+-                  case 5:
+-                      /* Reverse mode. */
+-                      text_fg(NORMAL_BG);
+-                      text_bg(NORMAL_FG);
+-                      break;
+-                  case 10:
+-                      swi(OS_NewLine);
+-                      break;
+-                  case 14:
+-                      /* Cursor invisible. */
+-                      swi(OS_WriteN,
+-                           "\027\001\000\000\000\000\000\000\000\000",
+-                           10);
+-                      break;
+-                  case 15:
+-                      /* Cursor visible. */
+-                      swi(OS_WriteN,
+-                           "\027\001\002\000\000\000\000\000\000\000",
+-                           10);
+-                      break;
+-                  case 16:
+-                      /* Cursor very visible (flash) */
+-                      swi(OS_WriteN,
+-                           "\027\001\003\000\000\000\000\000\000\000",
+-                           10);
+-                  case 17:
+-                      /* Set foreground colour. */
+-                      text_fg(map_colour(x));
+-                      break;
+-                  case 18:
+-                      /* Set background colour. */
+-                      text_bg(map_colour(x));
+-                      break;
+-                  case 19:
+-                      /* Scroll text down. */
+-                      swi(OS_WriteN,
+-                           "\027\007\000\002\000\000\000\000\000\000",
+-                           10);
+-                      break;
+-                  default:
+-                      swi(OS_WriteC, c);
+-              }
+-              continue;
+- 
+-          default:
+-              printf("[output error]");
+-              mode = OUT_NORMAL;
+-      }
+-     }
+- }
+- 
+- /*
+-  * mch_inchar(): low level input funcion.
+-  * Get a characters from the keyboard.
+-  * Return the number of characters that are available.
+-  * If wtime == 0 do not wait for characters.
+-  * If wtime == n wait n msecs for characters.
+-  * If wtime == -1 wait forever for characters.
+-  *
+-  * TODO: call convert_input() for 'fileencoding' to 'encoding' conversion.
+-  */
+-     int
+- mch_inchar(buf, maxlen, wtime, tb_change_cnt)
+-     char_u  *buf;
+-     int          maxlen;
+-     long    wtime;
+-     int          tb_change_cnt;
+- {
+-     int got=0;
+-     unsigned int start_time = clock();
+- 
+-     if (ro_line_mode)
+-     {
+-      /* We're probably in Ex mode - get whole lines at a time. */
+- 
+-      static char_u   line_buffer[256];
+-      static int      remaining_chars = 0;
+-      static int      buf_pos = 0;
+- 
+-      /* Do we need to fetch another line? */
+-      if (remaining_chars == 0)
+-      {
+-          int         old_esc_state;
+-          swi(OS_Byte, 200, 1, 0xfe);
+-          old_esc_state = r1;
+- 
+-          buf_pos = 0;
+-          if (xswi(OS_ReadLine, line_buffer, 255, 0, 255) & (c_flag | v_flag))
+-          {
+-              got_int = TRUE;     /* ESC pressed */
+-              r1 = 0;
+-          }
+-          line_buffer[r1] = 13;
+-          remaining_chars = r1 + 1;   /* Count CR as part of input */
+- 
+-          swi(OS_Byte, 200, old_esc_state, 0);
+-      }
+- 
+-      /* Can we send the rest of the buffer back in one go? */
+-      if (remaining_chars <= maxlen)
+-      {
+-          int     got = remaining_chars;
+- 
+-          memcpy(buf, line_buffer + buf_pos, got);
+-          remaining_chars = 0;
+-          return  got;
+-      }
+- 
+-      /* Send as much as we can */
+-      memcpy(buf, line_buffer + buf_pos, maxlen);
+-      buf_pos += maxlen;
+-      remaining_chars -= maxlen;
+- 
+-      return maxlen;
+-     }
+- 
+-     if (!term_console)
+-     {
+-      /* Use OS_ReadC for all input.
+-       * Avoids problems with remote access getting interference from
+-       * the keyboard.
+-       */
+-      if (wtime == 0)
+-          return 0;       /* Ignore quick key checks */
+- 
+-      if (xswi(OS_ReadC) & c_flag)
+-      {
+-          got_int = TRUE;     /* ESC pressed - can this happen? */
+-          swi(OS_Byte, 124);  /* Clear Escape state */
+-          r0 = 0x1b;          /* It *might* not have been Escape! */
+-      }
+-      buf[0] = r0;
+-      return 1;
+-     }
+- 
+-     /*
+-      * OK, here's the plan:
+-      *
+-      * 1) Wait until wtime expires or we get a key
+-      * 2) Get keys until the keyboard buffer is empty or buf is full
+-      */
+- 
+-     while (xswi(OS_Byte,145,0) & c_flag)
+-     {
+-      /* Nothing at all in the keyboard buffer.
+-       * Has our time expired yet?
+-       */
+-      if ( (wtime != -1) && (clock() - start_time) >= wtime )
+-          return 0;           /* Nothing read - giving up */
+-     }
+- 
+-     /* We've got one char (in r2) - are there any more? */
+- 
+-     while (got < maxlen)
+-     {
+-      buf[got++] = r2;
+- 
+-      if (xswi(OS_Byte,145,0) & c_flag)
+-          return got;         /* Keyboard buffer empty */
+-     }
+-     return got;                      /* buf is full */
+- }
+- 
+- /*
+-  * return non-zero if a character is available
+-  */
+-     int
+- mch_char_avail()
+- {
+-     if (!term_console)
+-      return 0;           /* Can't tell */
+-     if (xswi(OS_Byte, 152, 0) & c_flag)
+-      return 0;
+-     return 1;
+- }
+- 
+- /* Find out how much free memory we have.
+-  * I don't know how to work this out exactly but, since we can claim
+-  * more memory from the OS, let's just report the free pool size.
+-  * Dynamic area 6 doesn't exist pre 3.6 according to StrongHelp, so
+-  * we'll use Wimp_SlotSize. If that fails (outside the desktop?)
+-  * then just return a big number and hope.
+-  */
+-     long_u
+- mch_avail_mem(special)
+-     int special;
+- {
+-     if (xswi(Wimp_SlotSize, -1, -1) & v_flag)
+-      return 0x7fffffff;
+-     return r2;
+- }
+- 
+-     void
+- mch_delay(msec, ignoreinput)
+-     long     msec;
+-     int              ignoreinput;
+- {
+-     int              start_time, time_now;
+-     int              csec = msec / 10;
+- 
+-     swi(OS_ReadMonotonicTime);
+-     start_time = r0;
+- 
+-     for (;;)
+-     {
+-      swi(OS_ReadMonotonicTime);
+-      time_now = r0;
+-      if (time_now - start_time > csec)
+-          return;
+- #ifdef FEAT_GUI
+-      /* In the GUI, allow other programs to run while waiting. */
+-      if (gui.in_use)
+-          gui_mch_wait_for_chars(start_time + csec);
+- #endif
+-     }
+- }
+- 
+- /*
+-  * If the machine has job control, use it to suspend the program,
+-  * otherwise fake it by starting a new shell.
+-  */
+-     void
+- mch_suspend()
+- {
+-     suspend_shell();
+- }
+- 
+-     void
+- mch_init()
+- {
+-     /*
+-      * Read window size first. Calls to mch_get_shellsize() will
+-      * simply return these values in future so that setting the
+-      * text window (used for scrolling) won't give strange results.
+-      */
+- 
+-     int buf[7] = {132, 135, 256, 257, 1, 2, -1};
+- 
+-     /* Command windows are no longer forced open, since if we are
+-      * in the desktop then we'll use the GUI version.
+-      * Opening a command window here messes up the GUI version startup
+-      */
+- #ifndef FEAT_GUI
+-     swi(OS_WriteI);
+- #endif
+-     swi(OS_ReadVduVariables, buf, buf);
+-     WinLeft = buf[0];
+-     WinTop  = buf[1];
+-     Columns = buf[2];
+-     Rows    = buf[3] + 1;    /* Seems to be one off (VduVars wrong?) */
+-     ScrollTop = 0;
+- 
+-     /* Are we running in a textwindow? */
+-     if (Rows == buf[5] + 1 && Columns == buf[4] + 1)
+-      windowed = 0;
+-     else
+-      windowed = 1;
+- 
+-     /* Choose a nice colour scheme. */
+-     text_fg(NORMAL_FG);
+-     text_bg(NORMAL_BG);
+- }
+- 
+- /*
+-  * Check_win checks whether we have an interactive stdout.
+-  */
+- /* ARGSUSED */
+-     int
+- mch_check_win(argc, argv)
+-     int          argc;
+-     char    **argv;
+- {
+-     return OK;
+- }
+- 
+- /*
+-  * Return TRUE if the input comes from a terminal, FALSE otherwise.
+-  */
+-     int
+- mch_input_isatty()
+- {
+-     if (xswi(OS_ChangeRedirection, -1, -1) & v_flag)
+-      return TRUE;            /* Error - TRUE is probably correct though */
+-     if (r0 == 0)
+-      return TRUE;
+-     return FALSE;
+- }
+- 
+- #ifdef FEAT_TITLE
+-     int
+- mch_can_restore_title()
+- {
+-     return FALSE;
+- }
+- 
+-     int
+- mch_can_restore_icon()
+- {
+-     return FALSE;
+- }
+- 
+- 
+- /*
+-  * Set the window title and icon.
+-  */
+-     void
+- mch_settitle(title, icon)
+-     char_u *title;
+-     char_u *icon;
+- {
+-     if (title == NULL)
+-      title = (char_u *) "<untitled>";
+- #ifdef FEAT_GUI
+-     if (gui.in_use && strcmp(title, gui.window_title))
+-     {
+-      int length;
+-      length = strlen(title);
+-      if (length >= gui.window_title_size)
+-          length = gui.window_title_size - 1;
+-      strncpy(gui.window_title, title, length);
+-      gui.window_title[length] = 0;
+-      ro_redraw_title(gui.window_handle);
+-     }
+- #endif
+-     return;
+- }
+- 
+- /*
+-  * Restore the window/icon title.
+-  * "which" is one of:
+-  *  1  only restore title
+-  *  2  only restore icon
+-  *  3  restore title and icon
+-  */
+-     void
+- mch_restore_title(which)
+-     int which;
+- {
+-     return;
+- }
+- #endif
+- 
+- /*
+-  * Insert user name in s[len].
+-  * Return OK if a name found.
+-  */
+-     int
+- mch_get_user_name(s, len)
+-     char_u  *s;
+-     int          len;
+- {
+-     /* RISC OS doesn't support user names. */
+-     *s = NUL;
+-     return FAIL;
+- }
+- 
+- /*
+-  * Insert host name in s[len].
+-  */
+- 
+-     void
+- mch_get_host_name(s, len)
+-     char_u  *s;
+-     int          len;
+- {
+-     if (xswi(OS_ReadVarVal, "Machine$Name", s, len, 0, 3) & v_flag)
+-     {
+-      /* Variable does not exist (normal operation) */
+-      vim_strncpy(s, "(unknown)", len - 1);
+-     }
+- }
+- 
+- /*
+-  * return process ID
+-  */
+-     long
+- mch_get_pid()
+- {
+-     if (xswi(Wimp_ReadSysInfo, 5) & v_flag)
+-      return 0;
+-     return r0;
+- }
+- 
+- /*
+-  * Get name of current directory into buffer 'buf' of length 'len' bytes.
+-  * Return OK for success, FAIL for failure.
+-  */
+-     int
+- mch_dirname(buf, len)
+-     char_u  *buf;
+-     int          len;
+- {
+-     if (xswi(OS_FSControl, 37, "@", buf, 0, 0, len) & v_flag)
+-      return FAIL;
+-     return OK;
+- }
+- 
+- /*
+-  * Get absolute file name into buffer 'buf' of length 'len' bytes.
+-  *
+-  * return FAIL for failure, OK for success
+-  */
+-     int
+- mch_FullName(fname, buf, len, force)
+-     char_u *fname, *buf;
+-     int len;
+-     int      force;          /* Also expand when already absolute path name.
+-                       * Not used under RISC OS.
+-                       */
+- {
+-     if (xswi(OS_FSControl, 37, fname, buf, 0, 0, len) & v_flag)
+-      return FAIL;
+-     return OK;
+- }
+- 
+- /*
+-  * Return TRUE if "fname" does not depend on the current directory.
+-  */
+-     int
+- mch_isFullName(fname)
+-     char_u   *fname;
+- {
+-     if (strstr(fname, "::") && strstr(fname,".$."))
+-      return TRUE;
+-     return FALSE;
+- }
+- 
+- /*
+-  * Get file permissions for 'name'.
+-  * Returns -1 when it doesn't exist.
+-  */
+-     long
+- mch_getperm(name)
+-     char_u *name;
+- {
+-     struct stat statb;
+- 
+-     if (stat((char *)name, &statb))
+-      return -1;
+-     return statb.st_mode;
+- }
+- 
+- /*
+-  * set file permission for 'name' to 'perm'
+-  *
+-  * return FAIL for failure, OK otherwise
+-  */
+-     int
+- mch_setperm(name, perm)
+-     char_u  *name;
+-     long    perm;
+- {
+-     return (chmod((char *)name, (mode_t)perm) == 0 ? OK : FAIL);
+- }
+- 
+- /*
+-  * Set hidden flag for "name".
+-  */
+- /* ARGSUSED */
+-     void
+- mch_hide(name)
+-     char_u   *name;
+- {
+-     /* can't hide a file */
+- }
+- 
+- /*
+-  * return TRUE if "name" is a directory
+-  * return FALSE if "name" is not a directory
+-  * return FALSE for error
+-  */
+-     int
+- mch_isdir(name)
+-     char_u *name;
+- {
+-     if (xswi(OS_File, 17, name) & v_flag)
+-      return FALSE;
+-     if (r0 == 2 || r0 == 3)
+-      return TRUE;            /* Count image files as directories. */
+-     return FALSE;
+- }
+- 
+- /*
+-  * Return 1 if "name" can be executed, 0 if not.
+-  * Return -1 if unknown. Requires which to work.
+-  */
+-     int
+- mch_can_exe(name)
+-     char_u   *name;
+- {
+-     char_u   *buf;
+-     char_u   *p;
+-     int              retval;
+- 
+-     buf = alloc((unsigned)STRLEN(name) + 7);
+-     if (buf == NULL)
+-      return -1;
+-     sprintf((char *)buf, "which %s", name);
+-     p = get_cmd_output(buf, NULL, SHELL_SILENT);
+-     vim_free(buf);
+-     if (p == NULL)
+-      return -1;
+-     /* result can be: "name: Command not found" */
+-     retval = (*p != NUL && strstr((char *)p, "not found") == NULL);
+-     vim_free(p);
+-     return retval;
+- }
+- 
+- /*
+-  * Check what "name" is:
+-  * NODE_NORMAL: file or directory (or doesn't exist)
+-  * NODE_WRITABLE: writable device, socket, fifo, etc.
+-  * NODE_OTHER: non-writable things
+-  */
+-     int
+- mch_nodetype(name)
+-     char_u   *name;
+- {
+-     /* TODO */
+-     return NODE_NORMAL;
+- }
+- 
+-     void
+- mch_early_init()
+- {
+-     /* Turn off all the horrible filename munging in UnixLib. */
+-     int __riscosify_control = __RISCOSIFY_NO_PROCESS;
+- }
+- 
+-     void
+- mch_exit(r)
+-     int r;
+- {
+-     settmode(TMODE_COOK);
+-     exiting = TRUE;
+-     out_flush();
+-     ml_close_all(TRUE);              /* remove all memfiles */
+- 
+- #ifdef FEAT_GUI
+-     if (gui.in_use)
+-      gui_exit(r);
+- #endif
+-     swi(OS_NewLine);
+-     if (old_escape_state != -1)
+-      swi(OS_Byte, 229, old_escape_state, 0);
+-     if (old_cursor_state != -1)
+-      swi(OS_Byte, 4, old_cursor_state);
+-     exit(r);
+- }
+- 
+-     void
+- mch_settmode(tmode)
+-     int              tmode;      /* TMODE_RAW or TMODE_COOK */
+- {
+-     if (tmode == TMODE_COOK)
+-     {
+-      ro_line_mode = TRUE;
+-      return;
+-     }
+- 
+-     ro_line_mode = FALSE;
+- 
+-     if (term_console)
+-     {
+-      /* Block cursor. */
+-      swi(OS_WriteN,
+-              "\027\000\012\000\000\000\000\000\000\000",
+-              10);
+- 
+-      /* Disable the standard cursor key actions. */
+-      swi(OS_Byte, 4, 1);
+-      if (old_cursor_state == -1)
+-          old_cursor_state = r1;
+-     }
+- 
+-     /* Stop Escape from quitting Vim! */
+-     swi(OS_Byte, 229, 1, 0);
+-     if (old_escape_state == -1)
+-      old_escape_state = r1;
+- }
+- 
+- /*
+-  * set mouse clicks on or off (only works for xterms)
+-  */
+-     void
+- mch_setmouse(on)
+-     int          on;
+- {
+- }
+- 
+- /*
+-  * set screen mode, always fails.
+-  */
+- /* ARGSUSED */
+-     int
+- mch_screenmode(arg)
+-     char_u   *arg;
+- {
+-     EMSG(_(e_screenmode));
+-     return FAIL;
+- }
+- 
+- /*
+-  * Try to get the current window size.
+-  * Return OK when size could be determined, FAIL otherwise.
+-  * Simply return results stored by mch_init() if we are the
+-  * machine's console. If not, we don't know how big the screen is.
+-  */
+-     int
+- mch_get_shellsize()
+- {
+-     /* if size changed: screenalloc will allocate new screen buffers */
+-     return term_console ? OK : FAIL;
+- }
+- 
+- /*
+-  * Can't change the size.
+-  * Assume the user knows what he's doing and use the new values.
+-  */
+-     void
+- mch_set_shellsize()
+- {
+-     /* Assume the user knows what he's doing and use the new values. */
+- }
+- 
+- /*
+-  * Rows and/or Columns has changed.
+-  */
+-     void
+- mch_new_shellsize()
+- {
+-     /* Nothing to do. */
+- }
+- 
+-     int
+- mch_call_shell(cmd, options)
+-     char_u   *cmd;
+-     int              options;        /* SHELL_*, see vim.h */
+- {
+-     int              retval;
+-     int              tmode = cur_tmode;
+- 
+-     if (cmd == NULL)
+-      cmd = (char_u *) "GOS";
+- 
+- #ifdef FEAT_GUI
+-     if (gui.in_use)
+-      return gui_mch_call_shell(cmd, options);
+- #endif
+-     if (options & SHELL_COOKED)
+-      settmode(TMODE_COOK);           /* set to normal mode */
+-     MSG_PUTS("\n");
+- 
+-    /* I don't even want to think about what UnixLib must
+-     * be doing to allow this to work...
+-     */
+-     retval = system(cmd);
+-     if (retval && !(options & SHELL_SILENT))
+-      EMSG(strerror(EOPSYS));         /* Doesn't seem to set errno? */
+- 
+-     swi(OS_Byte, 229, 1, 0);         /* Re-disable escape */
+-     if (tmode == TMODE_RAW)
+-      settmode(TMODE_RAW);            /* set to raw mode */
+-     return retval ? FAIL : OK;
+- }
+- 
+- /*
+-  * Check for Escape being pressed right now.
+-  * [ different if !term_console? ]
+-  */
+-     void
+- mch_breakcheck()
+- {
+-     if (xswi(OS_Byte, 121, 0xf0) & v_flag)
+-      return;
+-     if (r1 == 0xff)
+-     {
+-      got_int = TRUE;
+-      swi(OS_Byte, 15, 1);    /* Flush input buffer */
+-     }
+- }
+- 
+- /*
+-  * Recursively expand one path component into all matching files and/or
+-  * directories.
+-  * "path" has backslashes before chars that are not to be expanded.
+-  * Return the number of matches found.
+-  */
+-     int
+- mch_expandpath(gap, path, flags)
+-     garray_T *gap;   /* Grow array for results. */
+-     char_u   *path;
+-     int              flags;  /* EW_* flags */
+- {
+-     int              got;    /* Number of matches. */
+-     char_u   *pattern;
+- 
+-    /* Plan:
+-     *
+-     * 1) Get first part of path - no wildcards
+-     * 2) Get next path element (wildcarded)
+-     * 3) Get rest of path
+-     *
+-     * If (3) is nothing then only the leaf is wildcarded - add to gap
+-     * Otherwise call recursively for each path in (2), passing (3)
+-     *
+-     * This is just the header function.
+-     */
+- 
+-     /* We must be able to modifiy path, so make a copy */
+-     pattern = vim_strsave(path);
+-     if (pattern == NULL)
+-      return 0;
+-     got = expand_section(gap, (char_u *)"", pattern, flags);
+-     vim_free(pattern);
+-     return got;
+- }
+- 
+- /*
+-  * expand_section(gap, "$.Dir1.Dir2", "ABBA*.myleaf##")
+-  *
+-  * calls expand_section(gap, "$.Dir1.Dir2.ABBA_Gold", "myleaf##")
+-  *   and expand_section(gap, "$.Dir1.Dir2.ABBA_Live", "myleaf##")
+-  *
+-  * If rest is just a leaf then all matches are added to gap.
+-  *
+-  * Returns number of items added to gap.
+-  */
+-     int
+- expand_section(gap, root, rest, flags)
+-     garray_T *gap;
+-     char_u   *root;  /* Non-wildcarded path to search */
+-     char_u   *rest;  /* Wildcarded remainder of path */
+-     int              flags;  /* Add dirs/files/missing objects. */
+- {
+-     static char_u buf[MAXPATHL];     /* Temporary buffer. */
+-     char_u dir[MAXPATHL];
+-     int start_element = -1;          /* Start of wildcarded element */
+-     char_u c;
+-     int i;
+-     int got, dir_pos;
+-     int buflen;                      /* Chars used in buf[] */
+-     int colon = 0;           /* Dir ends in ':' */
+- 
+-     buflen = strlen(root);
+-     STRNCPY(buf, root, buflen);      /* Copy root into buffer. */
+- 
+-    /*
+-     * Find end of nonwildcarded section.
+-     * Count ':' as a path sep since Vim:Bug* is a valid pathname.
+-     */
+- 
+-     for (i = 0; c = rest[i]; i++)
+-     {
+-      if (c == PATHSEP)
+-      {
+-          start_element = i;
+-          colon = 0;
+-      }
+-      if (c == ':')
+-      {
+-          start_element = i + 1;
+-          colon = 1;
+-      }
+-      if (c == '#' || c == '*')
+-          break;
+-     }
+-     if (c == 0)
+-      start_element = i;
+- 
+-    /*
+-     * start_element +> terminator for non-wildcarded section.
+-     * Transfer this bit into buf.
+-     */
+-     if (buflen + start_element + 4 >= MAXPATHL)
+-        return 0;                     /* Buffer full */
+-     if (start_element >= 0)
+-     {
+-      if (*root && !colon)
+-          buf[buflen++] = PATHSEP;
+-      strncpy(buf + buflen, rest, start_element);
+-      buflen += start_element;
+-     }
+-     buf[buflen] = 0;
+- 
+-    /*
+-     * Did we reach the end of the string without hitting any wildcards?
+-     */
+-     if (c == 0)
+-     {
+-      /* Yes - add combined path to grow array and return. */
+-      addfile(gap, buf, flags);
+-      return 1;
+-     }
+- 
+-     if (start_element < 0 || !colon)
+-      start_element++;
+-     rest += start_element;
+- 
+-    /*
+-     * rest does contain wildcards if we get here.
+-     *
+-     * Now : have we reached the leaf names part yet?
+-     * If so, add all matches (files and dirs) to gap.
+-     * If not, get next path element and scan all matching directories.
+-     */
+- 
+-     start_element = -1;
+-     for (i = 0; rest[i]; i++)
+-     {
+-      if (rest[i] == '.')
+-      {
+-          start_element = i;
+-          rest[i] = 0;                /* Break string here. */
+-          break;
+-      }
+-     }
+- 
+-     /* If start_element is -1 then we are matching leaf names */
+- 
+-     r3 = 0;                  /* Number of objs read. */
+-     dir_pos = 0;             /* Position through directory. */
+-     got = 0;                 /* Files added so far. */
+-     while (dir_pos != -1)
+-     {
+-      buf[buflen] = 0;
+-      if (xswi(OS_GBPB, 9,
+-              buf,                            /* Directory to scan. */
+-              buf + buflen + (1 - colon),     /* Buffer for result. */
+-              1,                      /* Number of objects to read. */
+-              dir_pos,                /* Search position. */
+-              MAXPATHL - 2 - buflen,  /* Size of result buffer. */
+-              rest)                   /* Wildcarded leafname. */
+-                      & v_flag)
+-      {
+-          EMSG(r0 + 4);
+-          r4 = -1;
+-      }
+-      dir_pos = r4;           /* r4 corrupted by addfile() */
+-      if (r3 > 0)
+-      {
+-          char_u *path = buf;
+-          if (buflen == 0)
+-              path++;                 /* Don't do '.File' */
+-          else if (!colon)
+-              buf[buflen] = '.';              /* Join path and leaf */
+- 
+-         /* Path -> full path of object found */
+-          if (start_element == -1)
+-          {
+-              addfile(gap, path, flags);
+-              got++;
+-          }
+-          else
+-          {
+-             /* Scan into subdirectories and images; ignore files */
+-              swi(OS_File, 17, path);
+-              if (r0 == 2 || r0 == 3)
+-                  got += expand_section(gap,
+-                                              path,
+-                                              rest + start_element + 1,
+-                                              flags);
+-          }
+-      }
+-     }
+- 
+-     /* Restore the dot if we removed it. */
+-     if (start_element >= 0)
+-      rest[start_element] = '.';
+-     return got;
+- }
+- 
+- /*
+-  * mch_expand_wildcards() - this code does wild-card pattern matching using
+-  * the shell. It isn't used under RISC OS.
+-  *
+-  * return OK for success, FAIL for error (you may lose some memory) and put
+-  * an error message in *file.
+-  *
+-  * num_pat is number of input patterns
+-  * pat is array of pointers to input patterns
+-  * num_file is pointer to number of matched file names
+-  * file is pointer to array of pointers to matched file names
+-  */
+-     int
+- mch_expand_wildcards(num_pat, pat, num_file, file, flags)
+-     int                  num_pat;
+-     char_u     **pat;
+-     int                 *num_file;
+-     char_u    ***file;
+-     int                  flags;              /* EW_* flags */
+- {
+-     /* This doesn't get called unless SPECIAL_WILDCHAR is defined. */
+-     return FAIL;
+- }
+- 
+- /*
+-  * Return TRUE if "p" contains wildcards which can be expanded by
+-  * mch_expandpath().
+-  */
+-     int
+- mch_has_exp_wildcard(p)
+-     char_u   *p;
+- {
+-     if (vim_strpbrk((char_u *)"*#", p))
+-      return TRUE;
+-     return FALSE;
+- }
+- 
+- /* Return TRUE if "p" contains wildcards. */
+-     int
+- mch_has_wildcard(p)
+-     char_u   *p;
+- {
+-     if (vim_strpbrk((char_u *)"*#`", p))
+-      return TRUE;
+-     return FALSE;
+- }
+- 
+-     int                      /* see Unix unlink(2) */
+- mch_remove(file)
+-     char_u *file;    /* Name of file to delete. */
+- {
+-     if (xswi(OS_FSControl, 27, file, 0, 0) & v_flag)
+-      return EXIT_FAILURE;
+-     return EXIT_SUCCESS;
+- }
+- 
+- /* Try to make existing scripts work without modification.
+-  * Return a pointer to the new string (freed by caller), or NULL
+-  *
+-  * Two main cases:
+-  * - Absolute : $VIM/syntax/help.vim
+-  * - Relative : Adfs::4.$.!Vim.Resources.Syntax/help.vim
+-  */
+-     char_u *
+- mch_munge_fname(fname)
+-     char_u *fname;
+- {
+-     char_u c;
+-     int len;
+-     char_u *retval;
+- 
+-     retval = fname = vim_strsave(fname);
+-     if (fname == NULL)
+-      return NULL;
+- 
+-     if (strncmp(fname, "$VIM/", 5) == 0)
+-     {
+-      strncpy(fname, "Vim:", 4);
+-      for (fname += 5; c = *fname; fname++)
+-      {
+-          if (c == '.')
+-              break;
+-          if (c == '/')
+-              fname[-1] = '.';
+-          else
+-              fname[-1] = c;
+-      }
+-      fname[-1] = '\0';
+-     }
+-     else
+-     {
+-      /* Check to see if the file exists without modification. */
+-      if (xswi(OS_File, 17, fname) & v_flag)
+-          r0 == 0;            /* Invalid filename? */
+-      if (r0)
+-          return retval;
+- 
+-      len = strlen(fname);
+-      if (strcmp(fname + len - 4, ".vim") == 0)
+-      {
+-          fname[len - 4] = '\0';
+-          for (; c = *fname; fname++)
+-          {
+-              if (c == '/')
+-                  *fname = '.';
+-          }
+-      }
+-     }
+-     return retval;
+- }
+- 
+- /* QuickFix reads munged names from the error file.
+-  * Correct them.
+-  */
+-     int
+- ro_buflist_add(old_name)
+-     char_u  *old_name;       /* Name of file found by quickfix */
+- {
+-     char_u  *fname;
+-     char_u  *leaf;   /* Pointer to start of leaf in old_name */
+-     char_u  *ptr;
+-     char_u  c;
+-     int          retval;
+- 
+-     if (old_name == NULL)
+-      return buflist_add(NULL, 0);
+- 
+-     /* Copy the name so we can mess around with it. */
+-     fname = vim_strsave(old_name);
+-     if (fname == NULL)
+-      /* Out of memory - can't modify name */
+-      return buflist_add(old_name, 0);
+- 
+-     /* Change `dir/main.c' into `dir.c.main' */
+-     leaf = fname;
+-     for (ptr = fname; c = *ptr; ptr++)
+-     {
+-      if (c == '/')
+-      {
+-          leaf = ptr + 1;
+-          *ptr = '.';
+-      }
+-      else if (c == '.')
+-          break;
+-     }
+-     if (c == '.')
+-     {
+-      /* Change `main.c' into `c.main'
+-       *        |    |
+-       *      leaf  ptr
+-       */
+-      ptr += old_name - fname;
+-      *ptr = '\0';
+-      sprintf(leaf,
+-              "%s.%s",
+-              ptr + 1,
+-              leaf - fname + old_name);
+-     }
+- 
+-     retval = buflist_add(fname, 0);
+-     free(fname);
+-     return retval;
+- }
+- 
+- /* Change the current directory.
+-  * Strip trailing dots to make it easier to use with filename completion.
+-  * Return 0 for success, -1 for failure.
+-  */
+-     int
+- mch_chdir(dir)
+-     char_u  *dir;
+- {
+-     int          length;
+-     int          retval;
+-     char_u  *new_dir;
+- 
+-     if (p_verbose >= 5)
+-     {
+-      verbose_enter();
+-      smsg((char_u *)"chdir(%s)", dir);
+-      verbose_leave();
+-     }
+-     length = strlen(dir);
+-     if (dir[length - 1] != '.')
+-      return chdir(dir);          /* No trailing dots - nothing to do. */
+-     new_dir = vim_strsave(dir);
+-     if (new_dir == NULL)
+-      return chdir(dir);          /* Can't allocate memory. */
+- 
+-     while (new_dir[--length] == '.')
+-      new_dir[length] = '\0';
+- 
+-     retval = chdir(new_dir);
+-     vim_free(new_dir);
+-     return retval;
+- }
+- 
+- /* Examine the named file, and set the 'osfiletype' option
+-  * (in curbuf) to the file's type.
+-  */
+-     void
+- mch_read_filetype(file)
+-     char_u  *file;
+- {
+-     int          type;
+-     char_u  type_string[9];
+-     int          i;
+- 
+-     if (xswi(OS_File, 23, file) & v_flag)
+-      type = 0xfff;           /* Default to Text */
+-     else
+-      type = r6;
+- 
+-     /* Type is the numerical value - see if we have a textual equivalent */
+-     swi(OS_FSControl, 18, 0, type);
+-     ((int *) type_string)[0] = r2;
+-     ((int *) type_string)[1] = r3;
+-     type_string[8] = 0;
+-     for (i = 0; type_string[i] > ' '; i++)
+-      ;
+-     type_string[i] = 0;
+- 
+-     set_string_option_direct("osfiletype", -1, type_string, OPT_FREE, 0);
+-     return;
+- }
+- 
+-     void
+- mch_set_filetype(file, type)
+-     char_u  *file;
+-     char_u  *type;
+- {
+-     if (xswi(OS_FSControl, 31, type) & v_flag)
+-     {
+-      EMSG(_("E366: Invalid 'osfiletype' option - using Text"));
+-      r2 = 0xfff;
+-     }
+- 
+-     swi(OS_File, 18, file, r2);
+- }
+- 
+- /* Return TRUE if the file's type matches 'type'
+-  * RISC OS types always start with '&'
+-  */
+-     int
+- mch_check_filetype(fname, type)
+-     char_u  *fname;
+-     char_u  *type;
+- {
+-     int          value;
+-     char    *end;
+- 
+-     if (*type != '&')
+-      return FALSE;
+- 
+-     value = strtol(type + 1, &end, 16);
+-     if (*end)
+-      return FALSE;           /* Invalid type (report error?) */
+- 
+-     if (xswi(OS_File, 23, fname) & v_flag)
+-      return FALSE;           /* Invalid filename? */
+- 
+-     return (r0 && r6 == value);
+- }
+--- 0 ----
+*** ../vim-7.3.186/runtime/doc/os_risc.txt     2010-08-15 21:57:16.000000000 +0200
+--- runtime/doc/os_risc.txt    2011-05-10 16:19:25.000000000 +0200
+***************
+*** 1,322 ****
+! *os_risc.txt*   For Vim version 7.3.  Last change: 2010 Aug 07
+  
+  
+                 VIM REFERENCE MANUAL    by Thomas Leonard
+  
+  
+                                               *riscos* *RISCOS* *RISC-OS*
+! This file contains the particularities for the RISC OS version of Vim.
+  
+- The RISC OS port is a completely new port and is not based on the old "archi"
+- port.
+  
+- 1.  File locations           |riscos-locations|
+- 2.  Filename munging         |riscos-munging|
+- 3.  Command-line use         |riscos-commandline|
+- 4.  Desktop (GUI) use                |riscos-gui|
+- 5.  Remote use (telnet)              |riscos-remote|
+- 6.  Temporary files          |riscos-temp-files|
+- 7.  Interrupting             |riscos-interrupt|
+- 8.  Memory usage             |riscos-memory|
+- 9.  Filetypes                        |riscos-filetypes|
+- 10. The shell                        |riscos-shell|
+- 11. Porting new releases     |riscos-porting|
+- 
+- If I've missed anything, email me and I'll try to fix it.  In fact, even if I
+- haven't missed anything then email me anyway to give me some confidence that it
+- actually works!
+- 
+- Thomas Leonard <tal197@ecs.soton.ac.uk>
+- 
+-      [these URLs no longer work...]
+-  Port homepage:      http://www.ecs.soton.ac.uk/~tal197/
+-      or try: http://www.soton.ac.uk/~tal197/
+- 
+- ==============================================================================
+-                                                      *riscos-locations*
+- 1. File locations
+- 
+- The Vim executable and shared resource files are all stored inside the !Vim
+- application directory.
+- 
+- When !Vim is first seen by the filer, it aliases the *vi and *ex commands to
+- run the command-line versions of Vim (see |riscos-commandline|).
+- 
+- !Vim.Resources and !Vim.Resources2 contain the files from the standard Vim
+- distribution, but modified slightly to work within the limits of ADFS, plus
+- some extra files such as the window templates.
+- 
+- User choices are read from "Choices:*" and are saved to "<Choices$Write>.*".
+- If you have the new !Boot structure then these should be set up already.  If
+- not, set Choices$Path to a list of directories to search when looking for
+- user configuration files.  Set Choices$Write to the directory you want files
+- to be saved into (so your search patterns and marks can be remembered between
+- sessions).
+- 
+- ==============================================================================
+-                                                      *riscos-munging*
+- 2. Filename munging
+- 
+- All pathname munging is disabled by default, so Vim should behave like a
+- normal RISC OS application now.  So, if you want to edit "doc/html" then you
+- actually type "*vi doc/html".
+- 
+- The only times munging is done is when:
+- 
+- - Searching included files from C programs, since these are always munged.
+-   See |[I|.
+-   Note: make sure you are in the right directory when you use this
+-      command (i.e. the one with subdirectories "c" and "h").
+- 
+- - Sourcing files using |:so|.
+-   Paths starting "$VIM/" are munged like this:
+- 
+-   $VIM/syntax/help.vim  ->  Vim:syntax.help
+- 
+-   Also, files ending in ".vim" have their extensions removed, and slashes
+-   replaced with dots.
+- 
+- Some tag files and script files may have to be edited to work under this port.
+- 
+- ==============================================================================
+-                                                      *riscos-commandline*
+- 3. Command-line use
+- 
+- To use Vim from the command-line use the "*vi" command (or "*ex" for
+- |Ex-mode|).
+- 
+- Type "*vi -h" for a list of options.
+- 
+- Running the command-line version of Vim in a large high-color mode may cause
+- the scrolling to be very slow.  Either change to a mode with fewer colors or
+- use the GUI version.
+- 
+- Also, holding down Ctrl will slow it down even more, and Ctrl-Shift will
+- freeze it, as usual for text programs.
+- 
+- ==============================================================================
+-                                                      *riscos-gui*
+- 4. Desktop use
+- 
+- Limitations:
+- 
+- - Left scrollbars don't work properly (right and bottom are fine).
+- - Doesn't increase scroll speed if it gets behind.
+- 
+- You can resize the window by dragging the lower-right corner, even though
+- there is no icon shown there.
+- 
+- You can use the --rows and --columns arguments to specify the initial size of
+- the Vim window, like this: >
+- 
+-   *Vi -g --rows 20 --columns 80
+- 
+- The global clipboard is supported, so you can select some text and then
+- paste it directly into another application (provided it supports the
+- clipboard too).
+- 
+- Clicking Menu now opens a menu like a normal RISC OS program.  Hold down Shift
+- when clicking Menu to paste (from the global clipboard).
+- 
+- Dragging a file to the window replaces the CURRENT buffer (the one with the
+- cursor, NOT the one you dragged to) with the file.
+- 
+- Dragging with Ctrl held down causes a new Vim window to be opened for the
+- file (see |:sp|).
+- 
+- Dragging a file in with Shift held down in insert mode inserts the pathname of
+- the file.
+- 
+- :browse :w opens a standard RISC OS save box.
+- :browse :e opens a directory viewer.
+- 
+- For fonts, you have the choice of the system font, an outline font, the system
+- font via ZapRedraw and any of the Zap fonts via ZapRedraw: >
+- 
+-   :set guifont=
+- <                    To use the system font via the VDU drivers.  Supports
+-                      bold and underline.
+- >
+-   :set guifont=Corpus.Medium
+- <                    Use the named outline font.  You can use any font, but
+-                      only monospaced ones like Corpus look right.
+- >
+-   :set guifont=Corpus.Medium:w8:h12:b:i
+- <                    As before, but with size of 8 point by 12 point, and
+-                      in bold italic.
+-                      If only one of width and height is given then that
+-                      value is used for both.  If neither is given then 10
+-                      point is used.
+- 
+- Thanks to John Kortink, Vim can use the ZapRedraw module.  Start the font name
+- with "!" (or "!!" for double height), like this: >
+- 
+-   :set guifont=!!
+- <                    Use the system font, but via ZapRedraw.  This gives a
+-                      faster redraw on StrongARM processors, but you can't
+-                      get bold or italic text.  Double height.
+- >
+-   :set guifont=!script
+- <                    Uses the named Zap font (a directory in VimFont$Path).
+-                      The redraw is the same speed as for "!!", but you get
+-                      a nicer looking font.
+-                      Only the "man+" and "script" fonts are supplied
+-                      currently, but you can use any of the Zap fonts if
+-                      they are in VimFont$Path.
+-                      Vim will try to load font files "0", "B", "I" and "IB"
+-                      from the named directory.  Only "0" (normal style) MUST
+-                      be present.  Link files are not currently supported.
+- 
+- Note that when using ZapRedraw the edit bar is drawn in front of the character
+- you are on rather than behind it.  Also redraw is incorrect for screen modes
+- with eigen values of 0.  If the font includes control characters then you can
+- get Vim to display them by changing the 'isprint' option.
+- 
+- If you find the scrolling is too slow on your machine, try experimenting
+- with the 'scrolljump' and 'ttyscroll' options.
+- 
+- In particular, StrongARM users may find that: >
+- 
+-   :set ttyscroll=0
+- 
+- makes scrolling faster in high-color modes.
+- 
+- =============================================================================
+-                                                      *riscos-remote*
+- 5. Remote use (telnet)
+- 
+- I have included a built-in termcap entry, but you can edit the termcap file to
+- allow other codes to be used if you want to use Vim from a remote terminal.
+- 
+- Although I do not have an internet connection to my Acorn, I have managed to
+- run Vim in a FreeTerm window using the loopback connection.
+- 
+- It seems to work pretty well now, using "*vi -T ansi".
+- 
+- ==============================================================================
+-                                                      *riscos-temp-files*
+- 6. Temporary files
+- 
+- If Vim crashes then the swap and backup files (if any) will be in the
+- directories set with the 'directory' and 'bdir' options.  By default the swap
+- files are in <Wimp$ScrapDir> (i.e. inside !Scrap) and backups are in the
+- directory you were saving to.  Vim will allow you to try and recover the file
+- when you next try to edit it.
+- 
+- To see a list of swap files, press <F12> and type "*vi -r".
+- 
+- Vim no longer brings up ATTENTION warnings if you try to edit two files with
+- the same name in different directories.
+- 
+- However, it also no longer warns if you try to edit the same file twice (with
+- two copies of Vim), though you will still be warned when you save that the
+- datestamp has changed.
+- 
+- ==============================================================================
+-                                                      *riscos-interrupt*
+- 7. Interrupting
+- 
+- To break out of a looping macro, or similar, hold down Escape in the
+- command-line version, or press CTRL-C in the GUI version.
+- 
+- ==============================================================================
+-                                                      *riscos-memory*
+- 8. Memory usage
+- 
+- Vim will use dynamic areas on RISC OS 3.5 or later.  If you can use them on
+- older machines then edit the !RunTxt and GVim files.  I don't know what UnixLib
+- does by default on these machines so I'm playing safe.
+- 
+- It doesn't work at all well without dynamic areas, since it can't change its
+- memory allocation once running.  Hence you should edit "!Vim.GVim" and
+- "!Vim.!RunTxt" to choose the best size for you.  You probably need at least
+- about 1400K.
+- 
+- ==============================================================================
+-                                                      *riscos-filetypes*
+- 9. Filetypes
+- 
+- You can now specify that autocommands are only executed for files of certain
+- types.  The filetype is given in the form &xxx, when xxx is the filetype.
+- 
+- Filetypes must be specified by number (e.g. &fff for Text).
+- 
+- The system has changed from version 5.3.  The new sequence of events is:
+- 
+- - A file is loaded. |'osfiletype'| is set to the RISC OS filetype.
+- - Based on the filetype and pathname, Vim will try to set |'filetype'| to the
+-   Vim-type of the file.
+- - Setting this option may load syntax files and perform other actions.
+- - Saving the file will give it a filetype of |'osfiletype'|.
+- 
+- Some examples may make this clearer:
+- 
+-   Kind of file loaded        osfiletype      filetype ~
+-   C code "c.hellow"  Text (&fff)     C
+-   LaTeX document     LaTeX (&2a8)    TeX
+-   Draw document              DrawFile (&aff) (not changed)
+- 
+- ==============================================================================
+-                                                      *riscos-shell*
+- 10. The shell
+- 
+- - Bangs (!s) are only replaced if they are followed by a space or end-of-line,
+-   since many pathnames contain them.
+- 
+- - You can prefix the command with "~", which stops any output from being
+-   displayed.  This also means that you don't have to press <Enter> afterwards,
+-   and stops the screen from being redrawn. {only in the GUI version}
+- 
+- ==============================================================================
+-                                                      *riscos-porting*
+- 11. Porting new releases to RISC OS
+- 
+- Downloading everything you need:
+- 
+- - Get the latest source distribution (see www.vim.org)
+- - Get the runtime environment files (e.g. these help files)
+- - Get the RISC OS binary distribution (if possible)
+- 
+- 
+- Unarchiving:
+- 
+- - Create a raFS disk and put the archives on it
+- - Un-gzip them
+- - Un-tar them   (*tar xELf 50 archive/tar)
+- 
+- 
+- Recompiling the sources:
+- 
+- - Create c, s, and h directories.
+- - Put all the header files in "h".        \
+- - Put all the C files in "c".                     | And lose the extensions
+- - Put the assembler file ("swis/s") in "s".  /
+- - Rename all the files in "proto" to "h", like this:
+-     raFS::VimSrc.source.proto.file/pro
+-        becomes
+-     raFS::VimSrc.source.h.file_pro
+- - In the files "h.proto" and "c.termlib", search and replace
+-     .pro"
+-        with
+-     _pro.h"
+- - Create a simple Makefile if desired and do "*make -k".
+-   Use "CC = gcc -DRISCOS -DUSE_GUI -O2 -x c" in the Makefile.
+- - Save the binary as !Vim.Vim in the binary distribution.
+- 
+- 
+- Updating the run-time environment:
+- 
+- - Replace old or missing files inside !Vim.Resources with the
+-   new files.
+- - Remove files in "doc" not ending in "/txt", except for "tags".
+- - Lose the extensions from the files in "doc".
+- - Edit the "doc.tags" file.  Remove extensions from the second column: >
+-      :%s/^\(.[^\t]*\t.*\)\.txt\t/\1\t/
+- - Remove extensions from the syntax files.  Split them into two directories
+-   to avoid the 77 entry limit on old ADFS filesystems.
+- - Edit "Vim:FileType" to match "*.c.*" as well as "*/c" and so on.
+-   Add filetype checking too.
+- - Edit "Vim:Menu" and remove all the keys from the menus: >
+-      :%s/<Tab>[^ \t]*//
+- <
+   vim:tw=78:ts=8:ft=help:norl:
+--- 1,12 ----
+! *os_risc.txt*   For Vim version 7.3.  Last change: 2011 May 10
+  
+  
+                 VIM REFERENCE MANUAL    by Thomas Leonard
+  
+  
+                                               *riscos* *RISCOS* *RISC-OS*
+! The RISC OS support has been removed from Vim with patch 7.3.187.
+! If you would like to use Vim on RISC OS get the files from before that patch.
+  
+  
+   vim:tw=78:ts=8:ft=help:norl:
+*** ../vim-7.3.186/src/version.c       2011-05-10 16:12:40.000000000 +0200
+--- src/version.c      2011-05-10 16:37:20.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     187,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+81. At social functions you introduce your husband as "my domain server."
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.188.patch0 b/vim/patches/vim-7.3.188.patch0
new file mode 100644 (file)
index 0000000..f584543
--- /dev/null
@@ -0,0 +1,184 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.188
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.188
+Problem:    More RISC OS files to remove.
+Solution:   Remove them.  Update the file list.
+Files:     src/proto/gui_riscos.pro, src/proto/os_riscos.pro, Filelist
+
+
+*** ../vim-7.3.187/src/proto/gui_riscos.pro    2010-08-15 21:57:28.000000000 +0200
+--- src/proto/gui_riscos.pro   1970-01-01 01:00:00.000000000 +0100
+***************
+*** 1,66 ****
+- /* Prototypes for gui_riscos.c
+-  * Based on gui_x11_pro.h (10 March 2002 version)
+-  */
+- void gui_mch_prepare __ARGS((int *argc, char **argv));
+- int gui_mch_init_check __ARGS((void));
+- int gui_mch_init __ARGS((void));
+- void gui_mch_uninit __ARGS((void));
+- void gui_mch_new_colors __ARGS((void));
+- int gui_mch_open __ARGS((void));
+- void gui_init_tooltip_font __ARGS((void));
+- void gui_init_menu_font __ARGS((void));void gui_mch_exit __ARGS((int rc));
+- int gui_mch_get_winpos __ARGS((int *x, int *y));
+- void gui_mch_set_winpos __ARGS((int x, int y));
+- void gui_mch_set_shellsize __ARGS((int width, int height, int min_width, int min_height, int base_width, int base_height));
+- void gui_mch_get_screen_dimensions __ARGS((int *screen_w, int *screen_h));
+- int gui_mch_init_font __ARGS((char_u *font_name, int do_fontset));
+- GuiFont gui_mch_get_font __ARGS((char_u *name, int giveErrorIfMissing));
+- int gui_mch_adjust_charheight __ARGS((void));
+- void gui_mch_set_font __ARGS((GuiFont font));
+- void gui_mch_set_fontset __ARGS((GuiFontset fontset));
+- void gui_mch_free_font __ARGS((GuiFont font));
+- void gui_mch_free_fontset __ARGS((GuiFontset fontset));
+- GuiFontset gui_mch_get_fontset __ARGS((char_u *name, int giveErrorIfMissing, int fixed_width));
+- guicolor_T gui_mch_get_color __ARGS((char_u *reqname));
+- void gui_mch_set_fg_color __ARGS((guicolor_T color));
+- void gui_mch_set_bg_color __ARGS((guicolor_T color));
+- void gui_mch_draw_string __ARGS((int row, int col, char_u *s, int len, int flags));
+- int gui_mch_haskey __ARGS((char_u *name));
+- void gui_mch_beep __ARGS((void));
+- void gui_mch_flash __ARGS((int msec));
+- void gui_mch_invert_rectangle __ARGS((int r, int c, int nr, int nc));
+- void gui_mch_iconify __ARGS((void));
+- void gui_mch_set_foreground __ARGS((void));
+- void gui_mch_draw_hollow_cursor __ARGS((guicolor_T color));
+- void gui_mch_draw_part_cursor __ARGS((int w, int h, guicolor_T color));
+- void gui_mch_update __ARGS((void));
+- int gui_mch_wait_for_chars __ARGS((long wtime));
+- void gui_mch_flush __ARGS((void));
+- void gui_mch_clear_block __ARGS((int row1, int col1, int row2, int col2));
+- void gui_mch_clear_all __ARGS((void));
+- void gui_mch_delete_lines __ARGS((int row, int num_lines));
+- void gui_mch_insert_lines __ARGS((int row, int num_lines));
+- void clip_mch_lose_selection __ARGS((VimClipboard *cbd));
+- int clip_mch_own_selection __ARGS((VimClipboard *cbd));
+- void clip_mch_request_selection __ARGS((VimClipboard *cbd));
+- void clip_mch_set_selection __ARGS((VimClipboard *cbd));
+- void gui_mch_menu_grey __ARGS((vimmenu_T *menu, int grey));
+- void gui_mch_menu_hidden __ARGS((vimmenu_T *menu, int hidden));
+- void gui_mch_draw_menubar __ARGS((void));
+- void gui_mch_set_blinking __ARGS((long waittime, long on, long off));
+- void gui_mch_stop_blink __ARGS((void));
+- void gui_mch_start_blink __ARGS((void));
+- void process_event __ARGS((int event, int *block));
+- void gui_mch_show_popupmenu __ARGS((vimmenu_T *menu));
+- long_u gui_mch_get_rgb __ARGS((guicolor_T pixel));
+- void gui_mch_getmouse __ARGS((int *x, int *y));
+- void gui_mch_setmouse __ARGS((int x, int y));
+- void gui_mch_drawsign __ARGS((int row, int col, int typenr));
+- void gui_mch_destroy_sign __ARGS((XImage *sign));
+- void gui_mch_mousehide __ARGS((int hide));
+- void mch_set_mouse_shape __ARGS((int shape));
+- void gui_mch_menu_set_tip __ARGS((vimmenu_T *menu));
+- 
+- void ro_redraw_title __ARGS((int window));
+- int ro_ok_to_quit __ARGS((void));
+- /* vim: set ft=c : */
+--- 0 ----
+*** ../vim-7.3.187/src/proto/os_riscos.pro     2010-08-15 21:57:28.000000000 +0200
+--- src/proto/os_riscos.pro    1970-01-01 01:00:00.000000000 +0100
+***************
+*** 1,49 ****
+- /* os_riscos.c */
+- void mch_write __ARGS((char_u *s, int len));
+- int mch_inchar __ARGS((char_u *buf, int maxlen, long wtime, int tb_change_cnt));
+- int mch_char_avail __ARGS((void));
+- long_u mch_avail_mem __ARGS((int special));
+- void mch_delay __ARGS((long msec, int ignoreinput));
+- void mch_suspend __ARGS((void));
+- void mch_init __ARGS((void));
+- int mch_check_win __ARGS((int argc, char **argv));
+- int mch_input_isatty __ARGS((void));
+- int mch_can_restore_title __ARGS((void));
+- int mch_can_restore_icon __ARGS((void));
+- void mch_settitle __ARGS((char_u *title, char_u *icon));
+- void mch_restore_title __ARGS((int which));
+- int mch_get_user_name __ARGS((char_u *s, int len));
+- void mch_get_host_name __ARGS((char_u *s, int len));
+- long mch_get_pid __ARGS((void));
+- int mch_dirname __ARGS((char_u *buf, int len));
+- int mch_FullName __ARGS((char_u *fname, char_u *buf, int len, int force));
+- int mch_isFullName __ARGS((char_u *fname));
+- long mch_getperm __ARGS((char_u *name));
+- int mch_setperm __ARGS((char_u *name, long perm));
+- void mch_hide __ARGS((char_u *name));
+- int mch_isdir __ARGS((char_u *name));
+- int mch_can_exe __ARGS((char_u *name));
+- int mch_nodetype __ARGS((char_u *name));
+- void mch_early_init __ARGS((void));
+- void mch_exit __ARGS((int r));
+- void mch_settmode __ARGS((int tmode));
+- void mch_setmouse __ARGS((int on));
+- int mch_screenmode __ARGS((char_u *arg));
+- int mch_get_shellsize __ARGS((void));
+- void mch_set_shellsize __ARGS((void));
+- void mch_new_shellsize __ARGS((void));
+- int mch_call_shell __ARGS((char_u *cmd, int options));
+- void mch_breakcheck __ARGS((void));
+- int mch_expandpath __ARGS((garray_T *gap, char_u *path, int flags));
+- int expand_section __ARGS((garray_T *gap, char_u *root, char_u *rest, int flags));
+- int mch_expand_wildcards __ARGS((int num_pat, char_u **pat, int *num_file, char_u ***file, int flags));
+- int mch_has_exp_wildcard __ARGS((char_u *p));
+- int mch_has_wildcard __ARGS((char_u *p));
+- int mch_remove __ARGS((char_u *file));
+- char_u *mch_munge_fname __ARGS((char_u *fname));
+- int ro_buflist_add __ARGS((char_u *old_name));
+- int mch_chdir __ARGS((char_u *dir));
+- void mch_read_filetype __ARGS((char_u *file));
+- void mch_set_filetype __ARGS((char_u *file, char_u *type));
+- int mch_check_filetype __ARGS((char_u *fname, char_u *type));
+- /* vim: set ft=c : */
+--- 0 ----
+*** ../vim-7.3.187/Filelist    2011-03-22 18:10:34.000000000 +0100
+--- Filelist   2011-05-10 17:19:21.000000000 +0200
+***************
+*** 428,435 ****
+               README_os390.txt \
+               src/Make_mint.mak \
+               src/Make_ro.mak \
+-              src/gui_riscos.c \
+-              src/gui_riscos.h \
+               src/if_sniff.c \
+               src/infplist.xml \
+               src/link.390 \
+--- 428,433 ----
+***************
+*** 437,446 ****
+               src/os_beos.h \
+               src/os_beos.rsrc \
+               src/os_mint.h \
+-              src/os_riscos.c \
+-              src/os_riscos.h \
+-              src/proto/gui_riscos.pro \
+-              src/proto/os_riscos.pro \
+               src/os_vms_fix.com \
+               src/toolbar.phi \
+  
+--- 435,440 ----
+*** ../vim-7.3.187/src/version.c       2011-05-10 16:41:13.000000000 +0200
+--- src/version.c      2011-05-10 17:20:50.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     188,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+83. Batteries in the TV remote now last for months.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.189.patch0 b/vim/patches/vim-7.3.189.patch0
new file mode 100644 (file)
index 0000000..f7a9667
--- /dev/null
@@ -0,0 +1,49 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.189
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.189 (after 7.3.186)
+Problem:    Can't build without +clipboard feature. (Christian Ebert)
+Solution:   Add the missing #ifdef.
+Files:     src/normal.c
+
+
+*** ../vim-7.3.188/src/normal.c        2011-05-10 16:12:40.000000000 +0200
+--- src/normal.c       2011-05-10 17:25:26.000000000 +0200
+***************
+*** 1204,1212 ****
+--- 1204,1215 ----
+  #ifdef FEAT_EVAL
+       {
+           int regname = 0;
++ 
+           /* Adjust the register according to 'clipboard', so that when
+            * "unnamed" is present it becomes '*' or '+' instead of '"'. */
++ # ifdef FEAT_CLIPBOARD
+           adjust_clip_reg(&regname);
++ # endif
+           set_reg_var(regname);
+       }
+  #endif
+*** ../vim-7.3.188/src/version.c       2011-05-10 17:21:34.000000000 +0200
+--- src/version.c      2011-05-10 17:29:21.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     189,
+  /**/
+
+-- 
+If your nose runs, and your feet smell, you might be upside down.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.190.patch0 b/vim/patches/vim-7.3.190.patch0
new file mode 100644 (file)
index 0000000..4adef8a
--- /dev/null
@@ -0,0 +1,48 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.190
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.190
+Problem:    When there is a "containedin" syntax argument highlighting may be
+           wrong. (Radek)
+Solution:   Reset current_next_list. (Ben Schmidt)
+Files:     src/syntax.c
+
+
+*** ../vim-7.3.189/src/syntax.c        2011-04-11 16:56:29.000000000 +0200
+--- src/syntax.c       2011-05-19 12:02:43.000000000 +0200
+***************
+*** 2566,2571 ****
+--- 2566,2574 ----
+  #endif
+               update_si_attr(current_state.ga_len - 1);
+  
++              /* nextgroup= should not match in the end pattern */
++              current_next_list = NULL;
++ 
+               /* what matches next may be different now, clear it */
+               next_match_idx = 0;
+               next_match_col = MAXCOL;
+*** ../vim-7.3.189/src/version.c       2011-05-10 17:29:28.000000000 +0200
+--- src/version.c      2011-05-19 12:13:28.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     190,
+  /**/
+
+-- 
+From "know your smileys":
+ :'-D  Laughing so much that they're crying
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.191.patch0 b/vim/patches/vim-7.3.191.patch0
new file mode 100644 (file)
index 0000000..14b63ce
--- /dev/null
@@ -0,0 +1,526 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.191
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.191
+Problem:    Still some RISC OS stuff to remove.
+Solution:   Remove files and lines. (Hong Xu)
+           Remove the 'osfiletype' option code.
+Files:     README_extra.txt, src/Make_ro.mak, src/INSTALL, src/Makefile,
+           src/buffer.c, src/eval.c, src/feature.h, src/option.c,
+           src/option.h, src/structs.h, src/version.c, src/pty.c, Filelist
+
+
+*** ../vim-7.3.190/README_extra.txt    2010-08-15 21:57:32.000000000 +0200
+--- README_extra.txt   2011-05-19 12:35:16.000000000 +0200
+***************
+*** 13,21 ****
+  
+  src/os_amiga.*               Files for the Amiga port.
+  
+- src/gui_riscos.*
+- src/os_riscos.*              Files for the RISC OS port.
+- 
+  src/gui_beos.*
+  src/os_beos.*                Files for the BeOS port.
+  
+--- 13,18 ----
+*** ../vim-7.3.190/src/Make_ro.mak     2010-08-15 21:57:27.000000000 +0200
+--- src/Make_ro.mak    1970-01-01 01:00:00.000000000 +0100
+***************
+*** 1,135 ****
+- #
+- # Makefile for Vim on RISC OS - Andy Wingate
+- #
+- 
+- GCC         = gcc -mthrowback
+- CFLAGS     = -DRISCOS -DFEAT_GUI
+- CC         = $(GCC) $(CFLAGS) -O2
+- # -DUP_BC_PC_EXTERN for term.c needed as BC defined in termlib.c and term.c
+- 
+- TERMFLAG   = -DUP_BC_PC_EXTERN
+- 
+- ASMFLAGS   = -throwback -objasm -gcc
+- 
+- OBJS =  o.buffer o.charset o.diff o.digraph o.edit o.eval o.ex_cmds o.ex_cmds2  \
+-      o.ex_docmd o.ex_eval o.ex_getln o.fileio o.fold o.getchar \
+-      o.hardcopy o.hashtab o.main o.mark o.mbyte  \
+-      o.memfile o.memline o.menu o.message o.misc1 o.misc2 o.move     \
+-      o.normal o.ops o.option o.popupmnu o.quickfix o.regexp o.screen \
+-      o.search   \
+-      o.spell o.syntax o.tag o.term o.termlib o.ui o.undo o.version   \
+-      o.window o.os_riscos o.swis o.gui o.gui_riscos
+- 
+- Vim: $(OBJS)
+-      $(GCC) -o Vim $(OBJS)
+- 
+- install: Vim
+-      squeeze -v Vim @.!Vim.Vim
+- 
+- clean:       
+-      create o.!fake! 0
+-      wipe o.* ~cf
+-      remove Vim
+- 
+- o.swis: s.swis
+-      as $(ASMFLAGS) -o o.swis s.swis
+- 
+- # Rules for object files
+- 
+- o.%: c.%
+-      $(CC) -c $< -o $@
+- 
+- o.buffer:    c.buffer
+- 
+- o.charset:   c.charset
+- 
+- o.digraph:   c.digraph
+- 
+- o.diff:              c.diff
+- 
+- o.edit:              c.edit
+- 
+- o.eval:              c.eval
+- 
+- o.ex_cmds:   c.ex_cmds
+- 
+- o.ex_cmds2:  c.ex_cmds2
+- 
+- o.ex_docmd:  c.ex_docmd
+- 
+- o.ex_eval:   c.ex_eval
+- 
+- o.ex_getln:  c.ex_getln
+- 
+- o.fileio:    c.fileio
+- 
+- o.fold:              c.fold
+- 
+- o.getchar:   c.getchar
+- 
+- o.hardcopy:  c.hardcopy
+- 
+- o.hashtab:   c.hashtab
+- 
+- o.gui:               c.gui
+- 
+- o.gui_riscos:        c.gui_riscos
+- 
+- o.main:              c.main
+- 
+- o.mark:              c.mark
+- 
+- o.mbyte:     c.mbyte
+- 
+- o.memfile:   c.memfile
+- 
+- o.memline:   c.memline
+- 
+- o.menu:              c.menu
+- 
+- o.message:   c.message
+- 
+- o.misc1:     c.misc1
+- 
+- o.misc2:     c.misc2
+- 
+- o.move:              c.move
+- 
+- o.normal:    c.normal
+- 
+- o.ops:               c.ops
+- 
+- o.option:    c.option
+- 
+- o.os_riscos: c.os_riscos
+- 
+- o.pty:               c.pty
+- 
+- o.popupmnu:  c.popupmnu
+- 
+- o.quickfix:  c.quickfix
+- 
+- o.regexp:    c.regexp
+- 
+- o.screen:    c.screen
+- 
+- o.search:    c.search
+- 
+- o.spell:     c.spell
+- 
+- o.syntax:    c.syntax
+- 
+- o.tag:               c.tag
+- 
+- o.term:              c.term
+-      $(CC) $(TERMFLAG) -c c.term -o o.term
+- 
+- o.termlib:   c.termlib
+- 
+- o.ui:                c.ui
+- 
+- o.undo:              c.undo
+- 
+- o.version:   c.version
+- 
+- o.window:    c.window
+--- 0 ----
+*** ../vim-7.3.190/src/INSTALL 2010-08-15 21:57:28.000000000 +0200
+--- src/INSTALL        2011-05-19 12:36:17.000000000 +0200
+***************
+*** 6,14 ****
+  Contents:
+  1. Generic
+  2. Unix
+! 3. RISC OS
+! 4. OS/2 (with EMX 0.9b)
+! 5. Atari MiNT
+  
+  See INSTALLami.txt              for Amiga
+  See INSTALLmac.txt              for Macintosh
+--- 6,13 ----
+  Contents:
+  1. Generic
+  2. Unix
+! 3. OS/2 (with EMX 0.9b)
+! 4. Atari MiNT
+  
+  See INSTALLami.txt              for Amiga
+  See INSTALLmac.txt              for Macintosh
+***************
+*** 174,198 ****
+       ./configure --without-local-dir
+  
+  
+! 3. RISC OS
+! =============
+! 
+! Much file renaming is needed before you can compile anything.
+! You'll need UnixLib to link against, GCC and GNU make.
+! 
+! I suggest you get the RISC OS binary distribution, which includes the
+! Templates file and the loader.
+! 
+! Try here: http://www.ecs.soton.ac.uk/~tal197
+! 
+! Do
+!     :help riscos
+! 
+! within the editor for more information, or read the
+! ../runtime/doc/os_risc.txt help file.
+! 
+! 
+! 4. OS/2
+  =======
+  
+  Summary:
+--- 173,179 ----
+       ./configure --without-local-dir
+  
+  
+! 3. OS/2
+  =======
+  
+  Summary:
+***************
+*** 237,243 ****
+  Check ../runtime/doc/os_os2.txt for additional info on running Vim.
+  
+  
+! 5. Atari MiNT
+  =============
+  
+  [NOTE: this is quite old, it might not work anymore]
+--- 218,224 ----
+  Check ../runtime/doc/os_os2.txt for additional info on running Vim.
+  
+  
+! 4. Atari MiNT
+  =============
+  
+  [NOTE: this is quite old, it might not work anymore]
+*** ../vim-7.3.190/src/Makefile        2011-04-01 13:05:37.000000000 +0200
+--- src/Makefile       2011-05-19 12:37:52.000000000 +0200
+***************
+*** 29,35 ****
+  #    - Uncomment the line "CONF_OPT_X = --without-x" if you have X11 but
+  #      want to disable using X11 libraries.  This speeds up starting Vim,
+  #      but the window title will not be set and the X11 selection can not
+! #      used.
+  #    - Uncomment the line "CONF_OPT_XSMP = --disable-xsmp" if you have the
+  #      X11 Session Management Protocol (XSMP) library (libSM) but do not
+  #      want to use it.
+--- 29,35 ----
+  #    - Uncomment the line "CONF_OPT_X = --without-x" if you have X11 but
+  #      want to disable using X11 libraries.  This speeds up starting Vim,
+  #      but the window title will not be set and the X11 selection can not
+! #      be used.
+  #    - Uncomment the line "CONF_OPT_XSMP = --disable-xsmp" if you have the
+  #      X11 Session Management Protocol (XSMP) library (libSM) but do not
+  #      want to use it.
+***************
+*** 730,741 ****
+  ### USL for Unix Systems Laboratories (SYSV 4.2)
+  #EXTRA_DEFS = -DUSL
+  
+- ### RISCos on MIPS without X11
+- #EXTRA_DEFS = -DMIPS
+- 
+- ### RISCos on MIPS with X11
+- #EXTRA_LIBS = -lsun
+- 
+  ### (6)  A/UX 3.1.1 with gcc (Jim Jagielski)
+  #CC= gcc -D_POSIX_SOURCE
+  #CFLAGS= -O2
+--- 730,735 ----
+***************
+*** 1633,1639 ****
+  RSRC_DIR = os_mac_rsrc
+  
+  PRO_MANUAL = os_amiga.pro os_msdos.pro os_win16.pro os_win32.pro \
+!      os_mswin.pro os_beos.pro os_vms.pro os_riscos.pro $(PERL_PRO)
+  
+  # Default target is making the executable and tools
+  all: $(VIMTARGET) $(TOOLS) languages $(GUI_BUNDLE)
+--- 1627,1633 ----
+  RSRC_DIR = os_mac_rsrc
+  
+  PRO_MANUAL = os_amiga.pro os_msdos.pro os_win16.pro os_win32.pro \
+!      os_mswin.pro os_beos.pro os_vms.pro $(PERL_PRO)
+  
+  # Default target is making the executable and tools
+  all: $(VIMTARGET) $(TOOLS) languages $(GUI_BUNDLE)
+*** ../vim-7.3.190/src/buffer.c        2011-05-05 17:32:40.000000000 +0200
+--- src/buffer.c       2011-05-19 13:09:25.000000000 +0200
+***************
+*** 1808,1816 ****
+  #ifdef FEAT_AUTOCMD
+      clear_string_option(&buf->b_p_ft);
+  #endif
+- #ifdef FEAT_OSFILETYPE
+-     clear_string_option(&buf->b_p_oft);
+- #endif
+  #ifdef FEAT_CINDENT
+      clear_string_option(&buf->b_p_cink);
+      clear_string_option(&buf->b_p_cino);
+--- 1808,1813 ----
+*** ../vim-7.3.190/src/eval.c  2011-05-10 16:41:13.000000000 +0200
+--- src/eval.c 2011-05-19 13:09:43.000000000 +0200
+***************
+*** 12076,12084 ****
+  #ifdef FEAT_OLE
+       "ole",
+  #endif
+- #ifdef FEAT_OSFILETYPE
+-      "osfiletype",
+- #endif
+  #ifdef FEAT_PATH_EXTRA
+       "path_extra",
+  #endif
+--- 12076,12081 ----
+*** ../vim-7.3.190/src/feature.h       2010-08-15 21:57:31.000000000 +0200
+--- src/feature.h      2011-05-19 13:09:56.000000000 +0200
+***************
+*** 506,520 ****
+  #endif
+  
+  /*
+-  * +osfiletype               filetype checking in autocommand patterns.
+-  *                   Only on systems that support filetypes (RISC OS).
+-  */
+- #if 0
+- # define FEAT_OSFILETYPE
+- # define DFLT_OFT "Text"
+- #endif
+- 
+- /*
+   * +viminfo          reading/writing the viminfo file. Takes about 8Kbyte
+   *                   of code.
+   * VIMINFO_FILE              Location of user .viminfo file (should start with $).
+--- 506,511 ----
+*** ../vim-7.3.190/src/option.c        2011-04-28 17:24:54.000000000 +0200
+--- src/option.c       2011-05-19 13:11:42.000000000 +0200
+***************
+*** 140,148 ****
+  #define PV_MOD               OPT_BUF(BV_MOD)
+  #define PV_MPS               OPT_BUF(BV_MPS)
+  #define PV_NF                OPT_BUF(BV_NF)
+- #ifdef FEAT_OSFILETYPE
+- # define PV_OFT              OPT_BUF(BV_OFT)
+- #endif
+  #ifdef FEAT_COMPL_FUNC
+  # define PV_OFU              OPT_BUF(BV_OFU)
+  #endif
+--- 140,145 ----
+***************
+*** 337,345 ****
+  static int   p_mod;
+  static char_u        *p_mps;
+  static char_u        *p_nf;
+- #ifdef FEAT_OSFILETYPE
+- static char_u        *p_oft;
+- #endif
+  static int   p_pi;
+  #ifdef FEAT_TEXTOBJ
+  static char_u        *p_qe;
+--- 334,339 ----
+***************
+*** 1901,1914 ****
+                           (char_u *)NULL, PV_NONE,
+                           {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+      {"osfiletype",  "oft",  P_STRING|P_ALLOCED|P_VI_DEF,
+- #ifdef FEAT_OSFILETYPE
+-                          (char_u *)&p_oft, PV_OFT,
+-                          {(char_u *)DFLT_OFT, (char_u *)0L}
+- #else
+                           (char_u *)NULL, PV_NONE,
+!                          {(char_u *)0L, (char_u *)0L}
+! #endif
+!                          SCRIPTID_INIT},
+      {"paragraphs",  "para", P_STRING|P_VI_DEF,
+                           (char_u *)&p_para, PV_NONE,
+                           {(char_u *)"IPLPPPQPP TPHPLIPpLpItpplpipbp",
+--- 1895,1902 ----
+                           (char_u *)NULL, PV_NONE,
+                           {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+      {"osfiletype",  "oft",  P_STRING|P_ALLOCED|P_VI_DEF,
+                           (char_u *)NULL, PV_NONE,
+!                          {(char_u *)0L, (char_u *)0L} SCRIPTID_INIT},
+      {"paragraphs",  "para", P_STRING|P_VI_DEF,
+                           (char_u *)&p_para, PV_NONE,
+                           {(char_u *)"IPLPPPQPP TPHPLIPpLpItpplpipbp",
+***************
+*** 5282,5290 ****
+  #ifdef FEAT_AUTOCMD
+      check_string_option(&buf->b_p_ft);
+  #endif
+- #ifdef FEAT_OSFILETYPE
+-     check_string_option(&buf->b_p_oft);
+- #endif
+  #if defined(FEAT_SMARTINDENT) || defined(FEAT_CINDENT)
+      check_string_option(&buf->b_p_cinw);
+  #endif
+--- 5270,5275 ----
+***************
+*** 9665,9673 ****
+       case PV_MA:     return (char_u *)&(curbuf->b_p_ma);
+       case PV_MOD:    return (char_u *)&(curbuf->b_changed);
+       case PV_NF:     return (char_u *)&(curbuf->b_p_nf);
+- #ifdef FEAT_OSFILETYPE
+-      case PV_OFT:    return (char_u *)&(curbuf->b_p_oft);
+- #endif
+       case PV_PI:     return (char_u *)&(curbuf->b_p_pi);
+  #ifdef FEAT_TEXTOBJ
+       case PV_QE:     return (char_u *)&(curbuf->b_p_qe);
+--- 9650,9655 ----
+***************
+*** 10018,10026 ****
+           /* Don't copy 'filetype', it must be detected */
+           buf->b_p_ft = empty_option;
+  #endif
+- #ifdef FEAT_OSFILETYPE
+-          buf->b_p_oft = vim_strsave(p_oft);
+- #endif
+           buf->b_p_pi = p_pi;
+  #if defined(FEAT_SMARTINDENT) || defined(FEAT_CINDENT)
+           buf->b_p_cinw = vim_strsave(p_cinw);
+--- 10000,10005 ----
+*** ../vim-7.3.190/src/option.h        2011-02-12 13:59:55.000000000 +0100
+--- src/option.h       2011-05-19 13:11:46.000000000 +0200
+***************
+*** 984,992 ****
+      , BV_MOD
+      , BV_MPS
+      , BV_NF
+- #ifdef FEAT_OSFILETYPE
+-     , BV_OFT
+- #endif
+  #ifdef FEAT_COMPL_FUNC
+      , BV_OFU
+  #endif
+--- 984,989 ----
+*** ../vim-7.3.190/src/structs.h       2011-05-10 16:41:13.000000000 +0200
+--- src/structs.h      2011-05-19 13:11:58.000000000 +0200
+***************
+*** 1530,1538 ****
+      int              b_p_ml_nobin;   /* b_p_ml saved for binary mode */
+      int              b_p_ma;         /* 'modifiable' */
+      char_u   *b_p_nf;        /* 'nrformats' */
+- #ifdef FEAT_OSFILETYPE
+-     char_u   *b_p_oft;       /* 'osfiletype' */
+- #endif
+      int              b_p_pi;         /* 'preserveindent' */
+  #ifdef FEAT_TEXTOBJ
+      char_u   *b_p_qe;        /* 'quoteescape' */
+--- 1530,1535 ----
+*** ../vim-7.3.190/src/version.c       2011-05-19 12:14:03.000000000 +0200
+--- src/version.c      2011-05-19 13:26:42.000000000 +0200
+***************
+*** 426,436 ****
+       "-ole",
+  # endif
+  #endif
+- #ifdef FEAT_OSFILETYPE
+-      "+osfiletype",
+- #else
+-      "-osfiletype",
+- #endif
+  #ifdef FEAT_PATH_EXTRA
+       "+path_extra",
+  #else
+--- 426,431 ----
+*** ../vim-7.3.190/src/pty.c   2011-04-11 14:24:33.000000000 +0200
+--- src/pty.c  2011-05-19 12:43:26.000000000 +0200
+***************
+*** 123,130 ****
+  static void initmaster __ARGS((int));
+  
+  /*
+!  *  Open all ptys with O_NOCTTY, just to be on the safe side
+!  *  (RISCos mips breaks otherwise)
+   */
+  #ifndef O_NOCTTY
+  # define O_NOCTTY 0
+--- 123,129 ----
+  static void initmaster __ARGS((int));
+  
+  /*
+!  *  Open all ptys with O_NOCTTY, just to be on the safe side.
+   */
+  #ifndef O_NOCTTY
+  # define O_NOCTTY 0
+*** ../vim-7.3.190/Filelist    2011-05-10 17:21:34.000000000 +0200
+--- Filelist   2011-05-19 13:37:25.000000000 +0200
+***************
+*** 427,433 ****
+               $(SRC_VMS) \
+               README_os390.txt \
+               src/Make_mint.mak \
+-              src/Make_ro.mak \
+               src/if_sniff.c \
+               src/infplist.xml \
+               src/link.390 \
+--- 427,432 ----
+*** ../vim-7.3.190/src/version.c       2011-05-19 12:14:03.000000000 +0200
+--- src/version.c      2011-05-19 13:26:42.000000000 +0200
+***************
+*** 716,717 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     191,
+  /**/
+
+-- 
+From "know your smileys":
+ :-&   Eating spaghetti
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.192.patch0 b/vim/patches/vim-7.3.192.patch0
new file mode 100644 (file)
index 0000000..5dab19b
--- /dev/null
@@ -0,0 +1,61 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.192
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.192
+Problem:    Ex command ":s/ \?/ /g" splits multi-byte characters into bytes.
+           (Dominique Pelle)
+Solution:   Advance over whole character instead of one byte.
+Files:     src/ex_cmds.c
+
+
+*** ../vim-7.3.191/src/ex_cmds.c       2011-05-10 16:41:13.000000000 +0200
+--- src/ex_cmds.c      2011-05-19 14:23:33.000000000 +0200
+***************
+*** 4625,4631 ****
+                        * for a match in this line again. */
+                       skip_match = TRUE;
+                   else
+!                      ++matchcol; /* search for a match at next column */
+                   goto skip;
+               }
+  
+--- 4625,4639 ----
+                        * for a match in this line again. */
+                       skip_match = TRUE;
+                   else
+!                  {
+!                       /* search for a match at next column */
+! #ifdef FEAT_MBYTE
+!                      if (has_mbyte)
+!                          matchcol += mb_ptr2len(sub_firstline + matchcol);
+!                      else
+! #endif
+!                          ++matchcol;
+!                  }
+                   goto skip;
+               }
+  
+*** ../vim-7.3.191/src/version.c       2011-05-19 13:40:47.000000000 +0200
+--- src/version.c      2011-05-19 14:28:44.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     192,
+  /**/
+
+-- 
+From "know your smileys":
+ :-F   Bucktoothed vampire with one tooth missing
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.193.patch0 b/vim/patches/vim-7.3.193.patch0
new file mode 100644 (file)
index 0000000..acee9ec
--- /dev/null
@@ -0,0 +1,70 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.193
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.193
+Problem:    In the command line window ":close" doesn't work properly. (Tony
+           Mechelynck)
+Solution:   Use Ctrl_C instead of K_IGNORE for cmdwin_result. (Jean-Rene
+           David)
+Files:     src/ex_docmd.c, src/ex_getln.c
+
+
+*** ../vim-7.3.192/src/ex_docmd.c      2011-05-10 16:41:13.000000000 +0200
+--- src/ex_docmd.c     2011-05-19 14:42:56.000000000 +0200
+***************
+*** 6472,6478 ****
+  {
+  # ifdef FEAT_CMDWIN
+      if (cmdwin_type != 0)
+!      cmdwin_result = K_IGNORE;
+      else
+  # endif
+       if (!text_locked()
+--- 6472,6478 ----
+  {
+  # ifdef FEAT_CMDWIN
+      if (cmdwin_type != 0)
+!      cmdwin_result = Ctrl_C;
+      else
+  # endif
+       if (!text_locked()
+*** ../vim-7.3.192/src/ex_getln.c      2011-04-28 17:21:49.000000000 +0200
+--- src/ex_getln.c     2011-05-19 14:42:56.000000000 +0200
+***************
+*** 6324,6329 ****
+--- 6324,6335 ----
+           ccline.cmdbuff = vim_strsave((char_u *)"qa");
+           cmdwin_result = CAR;
+       }
++      else if (cmdwin_result == Ctrl_C)
++      {
++          /* :q or :close, don't execute any command
++           * and don't modify the cmd window. */
++          ccline.cmdbuff = NULL;
++      }
+       else
+           ccline.cmdbuff = vim_strsave(ml_get_curline());
+       if (ccline.cmdbuff == NULL)
+*** ../vim-7.3.192/src/version.c       2011-05-19 14:30:07.000000000 +0200
+--- src/version.c      2011-05-19 14:48:12.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     193,
+  /**/
+
+-- 
+There's no place like $(HOME)!
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.194.patch0 b/vim/patches/vim-7.3.194.patch0
new file mode 100644 (file)
index 0000000..5a73c00
--- /dev/null
@@ -0,0 +1,48 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.194
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.194
+Problem:    When "b" is a symlink to directory "a", resolve("b/") doesn't
+           result in "a/".  (ZyX)
+Solution:   Remove the trailing slash. (Jean-Rene David)
+Files:     src/eval.c
+
+
+*** ../vim-7.3.193/src/eval.c  2011-05-19 13:40:47.000000000 +0200
+--- src/eval.c 2011-05-19 14:55:27.000000000 +0200
+***************
+*** 14980,14986 ****
+--- 14980,14989 ----
+  
+       len = STRLEN(p);
+       if (len > 0 && after_pathsep(p, p + len))
++      {
+           has_trailing_pathsep = TRUE;
++          p[len - 1] = NUL; /* the trailing slash breaks readlink() */
++      }
+  
+       q = getnextcomp(p);
+       if (*q != NUL)
+*** ../vim-7.3.193/src/version.c       2011-05-19 14:50:49.000000000 +0200
+--- src/version.c      2011-05-19 14:54:40.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     194,
+  /**/
+
+-- 
+Momento mori, ergo carpe diem
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.195.patch0 b/vim/patches/vim-7.3.195.patch0
new file mode 100644 (file)
index 0000000..ba1fc21
--- /dev/null
@@ -0,0 +1,199 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.195
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.195
+Problem:    "} else" causes following lines to be indented too much. (Rouben
+           Rostamian)
+Solution:   Better detection for the "else". (Lech Lorens)
+Files:     src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok
+
+
+*** ../vim-7.3.194/src/misc1.c 2011-05-10 16:41:13.000000000 +0200
+--- src/misc1.c        2011-05-19 16:30:28.000000000 +0200
+***************
+*** 5482,5489 ****
+   * Recognize a line that starts with '{' or '}', or ends with ';', ',', '{' or
+   * '}'.
+   * Don't consider "} else" a terminated line.
+!  * Don't consider a line where there are unmatched opening braces before '}',
+!  * ';' or ',' a terminated line.
+   * Return the character terminating the line (ending char's have precedence if
+   * both apply in order to determine initializations).
+   */
+--- 5482,5489 ----
+   * Recognize a line that starts with '{' or '}', or ends with ';', ',', '{' or
+   * '}'.
+   * Don't consider "} else" a terminated line.
+!  * If a line begins with an "else", only consider it terminated if no unmatched
+!  * opening braces follow (handle "else { foo();" correctly).
+   * Return the character terminating the line (ending char's have precedence if
+   * both apply in order to determine initializations).
+   */
+***************
+*** 5493,5513 ****
+      int              incl_open;      /* include '{' at the end as terminator */
+      int              incl_comma;     /* recognize a trailing comma */
+  {
+!     char_u found_start = 0;
+!     unsigned n_open = 0;
+  
+      s = cin_skipcomment(s);
+  
+      if (*s == '{' || (*s == '}' && !cin_iselse(s)))
+       found_start = *s;
+  
+      while (*s)
+      {
+       /* skip over comments, "" strings and 'c'haracters */
+       s = skip_string(cin_skipcomment(s));
+       if (*s == '}' && n_open > 0)
+           --n_open;
+!      if (n_open == 0
+               && (*s == ';' || *s == '}' || (incl_comma && *s == ','))
+               && cin_nocode(s + 1))
+           return *s;
+--- 5493,5517 ----
+      int              incl_open;      /* include '{' at the end as terminator */
+      int              incl_comma;     /* recognize a trailing comma */
+  {
+!     char_u   found_start = 0;
+!     unsigned n_open = 0;
+!     int              is_else = FALSE;
+  
+      s = cin_skipcomment(s);
+  
+      if (*s == '{' || (*s == '}' && !cin_iselse(s)))
+       found_start = *s;
+  
++     if (!found_start)
++      is_else = cin_iselse(s);
++ 
+      while (*s)
+      {
+       /* skip over comments, "" strings and 'c'haracters */
+       s = skip_string(cin_skipcomment(s));
+       if (*s == '}' && n_open > 0)
+           --n_open;
+!      if ((!is_else || n_open == 0)
+               && (*s == ';' || *s == '}' || (incl_comma && *s == ','))
+               && cin_nocode(s + 1))
+           return *s;
+*** ../vim-7.3.194/src/testdir/test3.in        2011-05-10 13:38:23.000000000 +0200
+--- src/testdir/test3.in       2011-05-19 16:29:01.000000000 +0200
+***************
+*** 1345,1351 ****
+  
+  STARTTEST
+  :set cino&
+! 2kdd=][
+  ENDTEST
+  
+  void func(void)
+--- 1345,1351 ----
+  
+  STARTTEST
+  :set cino&
+! 2kdd=4][
+  ENDTEST
+  
+  void func(void)
+***************
+*** 1359,1364 ****
+--- 1359,1392 ----
+       printf("Foo!\n");
+  }
+  
++ void func1(void)
++ {
++      char* tab[] = {"foo", "bar",
++              "baz", "quux",
++                      "this line used", "to be indented incorrectly"};
++      foo();
++ }
++ 
++ void func2(void)
++ {
++      int tab[] =
++      {1, 2,
++              3, 4,
++              5, 6};
++ 
++              printf("This line used to be indented incorrectly.\n");
++ }
++ 
++ void func3(void)
++ {
++      int tab[] = {
++      1, 2,
++      3, 4,
++      5, 6};
++ 
++ printf("Don't you dare indent this line incorrectly!\n);
++ }
++ 
+  STARTTEST
+  :set cino&
+  2kdd=][
+*** ../vim-7.3.194/src/testdir/test3.ok        2011-05-10 13:38:23.000000000 +0200
+--- src/testdir/test3.ok       2011-05-19 16:29:01.000000000 +0200
+***************
+*** 1216,1221 ****
+--- 1216,1249 ----
+       printf("Foo!\n");
+  }
+  
++ void func1(void)
++ {
++      char* tab[] = {"foo", "bar",
++              "baz", "quux",
++              "this line used", "to be indented incorrectly"};
++      foo();
++ }
++ 
++ void func2(void)
++ {
++      int tab[] =
++      {1, 2,
++              3, 4,
++              5, 6};
++ 
++      printf("This line used to be indented incorrectly.\n");
++ }
++ 
++ void func3(void)
++ {
++      int tab[] = {
++              1, 2,
++              3, 4,
++              5, 6};
++ 
++      printf("Don't you dare indent this line incorrectly!\n);
++ }
++ 
+  
+  void func(void)
+  {
+*** ../vim-7.3.194/src/version.c       2011-05-19 14:59:07.000000000 +0200
+--- src/version.c      2011-05-19 16:34:16.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     195,
+  /**/
+
+-- 
+I AM THANKFUL...
+...for the taxes that I pay because it means that I am employed.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.196.patch0 b/vim/patches/vim-7.3.196.patch0
new file mode 100644 (file)
index 0000000..0d6be8c
--- /dev/null
@@ -0,0 +1,224 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.196
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.196
+Problem:    Can't intercept a character that is going to be inserted.
+Solution:   Add the InsertCharPre autocommand event. (Jakson A. Aquino)
+Files:     runtime/doc/autocmd.txt, runtime/doc/eval.txt,
+           runtime/doc/map.txt, src/edit.c, src/eval.c, src/fileio.c,
+           src/vim.h
+
+
+*** ../mercurial/vim73/runtime/doc/autocmd.txt 2011-04-28 19:01:26.000000000 +0200
+--- runtime/doc/autocmd.txt    2011-05-19 17:12:17.000000000 +0200
+***************
+*** 299,304 ****
+--- 299,306 ----
+  |InsertEnter|                starting Insert mode
+  |InsertChange|               when typing <Insert> while in Insert or Replace mode
+  |InsertLeave|                when leaving Insert mode
++ |InsertCharPre|              when a character was typed in Insert mode, before
++                      inserting it
+  
+  |ColorScheme|                after loading a color scheme
+  
+***************
+*** 657,662 ****
+--- 659,675 ----
+                               indicates the new mode.
+                               Be careful not to move the cursor or do
+                               anything else that the user does not expect.
++                                                      *InsertCharPre*
++ InsertCharPre                        When a character is typed in Insert mode,
++                              before inserting the char.
++                              The |v:char| variable indicates the char typed
++                              and can be changed during the event to insert
++                              a different character.  When |v:char| is set
++                              to more than one character this text is
++                              inserted literally.
++                              It is not allowed to change the text |textlock|.
++                              The event is not triggered when 'paste' is
++                              set.
+                                                       *InsertEnter*
+  InsertEnter                  Just before starting Insert mode.  Also for
+                               Replace mode and Virtual Replace mode.  The
+*** ../mercurial/vim73/runtime/doc/eval.txt    2011-05-19 12:22:41.000000000 +0200
+--- runtime/doc/eval.txt       2011-05-19 16:55:58.000000000 +0200
+***************
+*** 1293,1298 ****
+--- 1293,1299 ----
+                                       *v:char* *char-variable*
+  v:char               Argument for evaluating 'formatexpr' and used for the typed
+               character when using <expr> in an abbreviation |:map-<expr>|.
++              It is also used by the |InsertPreChar| event.
+  
+                       *v:charconvert_from* *charconvert_from-variable*
+  v:charconvert_from
+*** ../mercurial/vim73/runtime/doc/map.txt     2011-05-10 17:17:38.000000000 +0200
+--- runtime/doc/map.txt        2011-05-19 16:40:34.000000000 +0200
+***************
+*** 226,232 ****
+  
+  For abbreviations |v:char| is set to the character that was typed to trigger
+  the abbreviation.  You can use this to decide how to expand the {lhs}.  You
+! can't change v:char and you should not insert it.
+  
+  Be very careful about side effects!  The expression is evaluated while
+  obtaining characters, you may very well make the command dysfunctional.
+--- 226,232 ----
+  
+  For abbreviations |v:char| is set to the character that was typed to trigger
+  the abbreviation.  You can use this to decide how to expand the {lhs}.  You
+! you should not either insert or change the v:char.
+  
+  Be very careful about side effects!  The expression is evaluated while
+  obtaining characters, you may very well make the command dysfunctional.
+*** ../mercurial/vim73/src/edit.c      2011-05-10 14:22:10.000000000 +0200
+--- src/edit.c 2011-05-19 17:20:53.000000000 +0200
+***************
+*** 1381,1390 ****
+               goto do_intr;
+  #endif
+  
+           /*
+            * Insert a nomal character.
+            */
+! normalchar:
+  #ifdef FEAT_SMARTINDENT
+           /* Try to perform smart-indenting. */
+           ins_try_si(c);
+--- 1381,1425 ----
+               goto do_intr;
+  #endif
+  
++ normalchar:
+           /*
+            * Insert a nomal character.
+            */
+! #ifdef FEAT_AUTOCMD
+!          if (!p_paste)
+!          {
+!              /* Trigger the InsertCharPre event.  Lock the text to avoid
+!               * weird things from happening. */
+!              set_vim_var_char(c);
+!              ++textlock;
+!              if (apply_autocmds(EVENT_INSERTCHARPRE, NULL, NULL,
+!                                                             FALSE, curbuf))
+!              {
+!                  /* Get the new value of v:char.  If it is more than one
+!                   * character insert it literally. */
+!                  char_u *s = get_vim_var_str(VV_CHAR);
+!                  if (MB_CHARLEN(s) > 1)
+!                  {
+!                      if (stop_arrow() != FAIL)
+!                      {
+!                          ins_str(s);
+!                          AppendToRedobuffLit(s, -1);
+!                      }
+!                      c = NUL;
+!                  }
+!                  else
+!                      c = PTR2CHAR(s);
+!              }
+! 
+!              set_vim_var_string(VV_CHAR, NULL, -1);
+!              --textlock;
+! 
+!              /* If the new value is an empty string then don't insert a
+!               * char. */
+!              if (c == NUL)
+!                  break;
+!          }
+! #endif
+  #ifdef FEAT_SMARTINDENT
+           /* Try to perform smart-indenting. */
+           ins_try_si(c);
+***************
+*** 3491,3501 ****
+           return;
+      }
+      p += len;
+! #ifdef FEAT_MBYTE
+!     c = mb_ptr2char(p);
+! #else
+!     c = *p;
+! #endif
+      ins_compl_addleader(c);
+  }
+  
+--- 3526,3532 ----
+           return;
+      }
+      p += len;
+!     c = PTR2CHAR(p);
+      ins_compl_addleader(c);
+  }
+  
+*** ../mercurial/vim73/src/eval.c      2011-05-19 14:59:07.000000000 +0200
+--- src/eval.c 2011-05-19 16:40:39.000000000 +0200
+***************
+*** 352,358 ****
+      {VV_NAME("swapname",      VAR_STRING), VV_RO},
+      {VV_NAME("swapchoice",    VAR_STRING), 0},
+      {VV_NAME("swapcommand",   VAR_STRING), VV_RO},
+!     {VV_NAME("char",          VAR_STRING), VV_RO},
+      {VV_NAME("mouse_win",     VAR_NUMBER), 0},
+      {VV_NAME("mouse_lnum",    VAR_NUMBER), 0},
+      {VV_NAME("mouse_col",     VAR_NUMBER), 0},
+--- 352,358 ----
+      {VV_NAME("swapname",      VAR_STRING), VV_RO},
+      {VV_NAME("swapchoice",    VAR_STRING), 0},
+      {VV_NAME("swapcommand",   VAR_STRING), VV_RO},
+!     {VV_NAME("char",          VAR_STRING), 0},
+      {VV_NAME("mouse_win",     VAR_NUMBER), 0},
+      {VV_NAME("mouse_lnum",    VAR_NUMBER), 0},
+      {VV_NAME("mouse_col",     VAR_NUMBER), 0},
+*** ../mercurial/vim73/src/fileio.c    2011-05-10 16:41:13.000000000 +0200
+--- src/fileio.c       2011-05-19 16:40:39.000000000 +0200
+***************
+*** 7662,7667 ****
+--- 7662,7668 ----
+      {"InsertChange", EVENT_INSERTCHANGE},
+      {"InsertEnter",  EVENT_INSERTENTER},
+      {"InsertLeave",  EVENT_INSERTLEAVE},
++     {"InsertCharPre",        EVENT_INSERTCHARPRE},
+      {"MenuPopup",    EVENT_MENUPOPUP},
+      {"QuickFixCmdPost",      EVENT_QUICKFIXCMDPOST},
+      {"QuickFixCmdPre",       EVENT_QUICKFIXCMDPRE},
+*** ../mercurial/vim73/src/vim.h       2011-05-10 16:41:13.000000000 +0200
+--- src/vim.h  2011-05-19 16:40:39.000000000 +0200
+***************
+*** 1274,1279 ****
+--- 1274,1280 ----
+      EVENT_WINENTER,          /* after entering a window */
+      EVENT_WINLEAVE,          /* before leaving a window */
+      EVENT_ENCODINGCHANGED,   /* after changing the 'encoding' option */
++     EVENT_INSERTCHARPRE,     /* before inserting a char */
+      EVENT_CURSORHOLD,                /* cursor in same position for a while */
+      EVENT_CURSORHOLDI,               /* idem, in Insert mode */
+      EVENT_FUNCUNDEFINED,     /* if calling a function which doesn't exist */
+*** ../vim-7.3.195/src/version.c       2011-05-19 16:35:05.000000000 +0200
+--- src/version.c      2011-05-19 17:15:41.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     196,
+  /**/
+
+-- 
+I AM THANKFUL...
+...for the mess to clean after a party because it means I have
+been surrounded by friends.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.197.patch0 b/vim/patches/vim-7.3.197.patch0
new file mode 100644 (file)
index 0000000..c33a2cb
--- /dev/null
@@ -0,0 +1,78 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.197
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.197
+Problem:    When a QuickfixCmdPost event removes all errors, Vim still tries
+           to jump to the first error, resulting in E42.
+Solution:   Get the number of error after the autocmd event. (Mike Lundy)
+Files:     src/quickfix.c
+
+
+*** ../mercurial/vim73/src/quickfix.c  2011-05-10 16:41:13.000000000 +0200
+--- src/quickfix.c     2011-05-19 17:34:11.000000000 +0200
+***************
+*** 2813,2829 ****
+                                          (eap->cmdidx != CMD_grepadd
+                                           && eap->cmdidx != CMD_lgrepadd),
+                                          *eap->cmdlinep);
+  #ifdef FEAT_AUTOCMD
+      if (au_name != NULL)
+       apply_autocmds(EVENT_QUICKFIXCMDPOST, au_name,
+                                              curbuf->b_fname, TRUE, curbuf);
+  #endif
+      if (res > 0 && !eap->forceit)
+-     {
+-      if (wp != NULL)
+-          qi = GET_LOC_LIST(wp);
+       qf_jump(qi, 0, 0, FALSE);               /* display first error */
+-     }
+  
+      mch_remove(fname);
+      vim_free(fname);
+--- 2813,2833 ----
+                                          (eap->cmdidx != CMD_grepadd
+                                           && eap->cmdidx != CMD_lgrepadd),
+                                          *eap->cmdlinep);
++     if (wp != NULL)
++      qi = GET_LOC_LIST(wp);
+  #ifdef FEAT_AUTOCMD
+      if (au_name != NULL)
++     {
+       apply_autocmds(EVENT_QUICKFIXCMDPOST, au_name,
+                                              curbuf->b_fname, TRUE, curbuf);
++      if (qi->qf_curlist < qi->qf_listcount)
++          res = qi->qf_lists[qi->qf_curlist].qf_count;
++      else
++          res = 0;
++     }
+  #endif
+      if (res > 0 && !eap->forceit)
+       qf_jump(qi, 0, 0, FALSE);               /* display first error */
+  
+      mch_remove(fname);
+      vim_free(fname);
+*** ../vim-7.3.196/src/version.c       2011-05-19 17:25:36.000000000 +0200
+--- src/version.c      2011-05-19 17:41:50.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     197,
+  /**/
+
+-- 
+I AM THANKFUL...
+...for the clothes that fit a little too snug because it
+means I have more than enough to eat.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.198.patch0 b/vim/patches/vim-7.3.198.patch0
new file mode 100644 (file)
index 0000000..5ef4a8a
--- /dev/null
@@ -0,0 +1,403 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.198
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.198
+Problem:    No completion for ":lang".
+Solution:   Get locales to complete from. (Dominique Pelle)
+Files:     src/eval.c, src/ex_cmds2.c, src/ex_getln.c,
+           src/proto/ex_cmds2.pro, src/proto/ex_getln.pro, src/vim.h
+
+
+*** ../mercurial/vim73/src/eval.c      2011-05-19 17:25:36.000000000 +0200
+--- src/eval.c 2011-05-19 17:52:02.000000000 +0200
+***************
+*** 911,916 ****
+--- 911,917 ----
+      hash_clear(&compat_hashtab);
+  
+      free_scriptnames();
++     free_locales();
+  
+      /* global variables */
+      vars_clear(&globvarht);
+*** ../mercurial/vim73/src/ex_cmds2.c  2011-05-10 16:41:13.000000000 +0200
+--- src/ex_cmds2.c     2011-05-19 18:16:54.000000000 +0200
+***************
+*** 1476,1482 ****
+  #endif
+  
+  /*
+!  * Ask the user what to do when abondoning a changed buffer.
+   * Must check 'write' option first!
+   */
+      void
+--- 1476,1482 ----
+  #endif
+  
+  /*
+!  * Ask the user what to do when abandoning a changed buffer.
+   * Must check 'write' option first!
+   */
+      void
+***************
+*** 4153,4158 ****
+--- 4153,4234 ----
+  }
+  
+  # if defined(FEAT_CMDL_COMPL) || defined(PROTO)
++ 
++ static char_u        **locales = NULL;       /* Array of all available locales */
++ static int   did_init_locales = FALSE;
++ 
++ static void init_locales __ARGS((void));
++ static char_u **find_locales __ARGS((void));
++ 
++ /*
++  * Lazy initialization of all available locales.
++  */
++     static void
++ init_locales()
++ {
++     if (!did_init_locales)
++     {
++      did_init_locales = TRUE;
++      locales = find_locales();
++     }
++ }
++ 
++ /* Return an array of strings for all available locales + NULL for the
++  * last element.  Return NULL in case of error. */
++     static char_u **
++ find_locales()
++ {
++     garray_T locales_ga;
++     char_u   *loc;
++ 
++     /* Find all available locales by running command "locale -a".  If this
++      * doesn't work we won't have completion. */
++     char_u *locale_a = get_cmd_output((char_u *)"locale -a",
++                                                      NULL, SHELL_SILENT);
++     if (locale_a == NULL)
++      return NULL;
++     ga_init2(&locales_ga, sizeof(char_u *), 20);
++ 
++     /* Transform locale_a string where each locale is separated by "\n"
++      * into an array of locale strings. */
++     loc = (char_u *)strtok((char *)locale_a, "\n");
++ 
++     while (loc != NULL)
++     {
++      if (ga_grow(&locales_ga, 1) == FAIL)
++          break;
++      loc = vim_strsave(loc);
++      if (loc == NULL)
++          break;
++ 
++      ((char_u **)locales_ga.ga_data)[locales_ga.ga_len++] = loc;
++      loc = (char_u *)strtok(NULL, "\n");
++     }
++     vim_free(locale_a);
++     if (ga_grow(&locales_ga, 1) == FAIL)
++     {
++      ga_clear(&locales_ga);
++      return NULL;
++     }
++     ((char_u **)locales_ga.ga_data)[locales_ga.ga_len] = NULL;
++     return (char_u **)locales_ga.ga_data;
++ }
++ 
++ #  if defined(EXITFREE) || defined(PROTO)
++     void
++ free_locales()
++ {
++     int                      i;
++     if (locales != NULL)
++     {
++      for (i = 0; locales[i] != NULL; i++)
++          vim_free(locales[i]);
++      vim_free(locales);
++      locales = NULL;
++     }
++ }
++ #  endif
++ 
+  /*
+   * Function given to ExpandGeneric() to obtain the possible arguments of the
+   * ":language" command.
+***************
+*** 4168,4174 ****
+       return (char_u *)"ctype";
+      if (idx == 2)
+       return (char_u *)"time";
+!     return NULL;
+  }
+  # endif
+  
+--- 4244,4268 ----
+       return (char_u *)"ctype";
+      if (idx == 2)
+       return (char_u *)"time";
+! 
+!     init_locales();
+!     if (locales == NULL)
+!      return NULL;
+!     return locales[idx - 3];
+! }
+! 
+! /*
+!  * Function given to ExpandGeneric() to obtain the available locales.
+!  */
+!     char_u *
+! get_locales(xp, idx)
+!     expand_T *xp UNUSED;
+!     int              idx;
+! {
+!     init_locales();
+!     if (locales == NULL)
+!      return NULL;
+!     return locales[idx];
+  }
+  # endif
+  
+*** ../mercurial/vim73/src/ex_getln.c  2011-05-19 14:50:49.000000000 +0200
+--- src/ex_getln.c     2011-05-19 18:18:49.000000000 +0200
+***************
+*** 4571,4618 ****
+           int         context;
+           char_u      *((*func)__ARGS((expand_T *, int)));
+           int         ic;
+       } tab[] =
+       {
+!          {EXPAND_COMMANDS, get_command_name, FALSE},
+!          {EXPAND_BEHAVE, get_behave_arg, TRUE},
+  #ifdef FEAT_USR_CMDS
+!          {EXPAND_USER_COMMANDS, get_user_commands, FALSE},
+!          {EXPAND_USER_CMD_FLAGS, get_user_cmd_flags, FALSE},
+!          {EXPAND_USER_NARGS, get_user_cmd_nargs, FALSE},
+!          {EXPAND_USER_COMPLETE, get_user_cmd_complete, FALSE},
+  #endif
+  #ifdef FEAT_EVAL
+!          {EXPAND_USER_VARS, get_user_var_name, FALSE},
+!          {EXPAND_FUNCTIONS, get_function_name, FALSE},
+!          {EXPAND_USER_FUNC, get_user_func_name, FALSE},
+!          {EXPAND_EXPRESSION, get_expr_name, FALSE},
+  #endif
+  #ifdef FEAT_MENU
+!          {EXPAND_MENUS, get_menu_name, FALSE},
+!          {EXPAND_MENUNAMES, get_menu_names, FALSE},
+  #endif
+  #ifdef FEAT_SYN_HL
+!          {EXPAND_SYNTAX, get_syntax_name, TRUE},
+  #endif
+!          {EXPAND_HIGHLIGHT, get_highlight_name, TRUE},
+  #ifdef FEAT_AUTOCMD
+!          {EXPAND_EVENTS, get_event_name, TRUE},
+!          {EXPAND_AUGROUP, get_augroup_name, TRUE},
+  #endif
+  #ifdef FEAT_CSCOPE
+!          {EXPAND_CSCOPE, get_cscope_name, TRUE},
+  #endif
+  #ifdef FEAT_SIGNS
+!          {EXPAND_SIGN, get_sign_name, TRUE},
+  #endif
+  #ifdef FEAT_PROFILE
+!          {EXPAND_PROFILE, get_profile_name, TRUE},
+  #endif
+  #if (defined(HAVE_LOCALE_H) || defined(X_LOCALE)) \
+       && (defined(FEAT_GETTEXT) || defined(FEAT_MBYTE))
+!          {EXPAND_LANGUAGE, get_lang_arg, TRUE},
+  #endif
+!          {EXPAND_ENV_VARS, get_env_name, TRUE},
+       };
+       int     i;
+  
+--- 4571,4620 ----
+           int         context;
+           char_u      *((*func)__ARGS((expand_T *, int)));
+           int         ic;
++          int         escaped;
+       } tab[] =
+       {
+!          {EXPAND_COMMANDS, get_command_name, FALSE, TRUE},
+!          {EXPAND_BEHAVE, get_behave_arg, TRUE, TRUE},
+  #ifdef FEAT_USR_CMDS
+!          {EXPAND_USER_COMMANDS, get_user_commands, FALSE, TRUE},
+!          {EXPAND_USER_CMD_FLAGS, get_user_cmd_flags, FALSE, TRUE},
+!          {EXPAND_USER_NARGS, get_user_cmd_nargs, FALSE, TRUE},
+!          {EXPAND_USER_COMPLETE, get_user_cmd_complete, FALSE, TRUE},
+  #endif
+  #ifdef FEAT_EVAL
+!          {EXPAND_USER_VARS, get_user_var_name, FALSE, TRUE},
+!          {EXPAND_FUNCTIONS, get_function_name, FALSE, TRUE},
+!          {EXPAND_USER_FUNC, get_user_func_name, FALSE, TRUE},
+!          {EXPAND_EXPRESSION, get_expr_name, FALSE, TRUE},
+  #endif
+  #ifdef FEAT_MENU
+!          {EXPAND_MENUS, get_menu_name, FALSE, TRUE},
+!          {EXPAND_MENUNAMES, get_menu_names, FALSE, TRUE},
+  #endif
+  #ifdef FEAT_SYN_HL
+!          {EXPAND_SYNTAX, get_syntax_name, TRUE, TRUE},
+  #endif
+!          {EXPAND_HIGHLIGHT, get_highlight_name, TRUE, TRUE},
+  #ifdef FEAT_AUTOCMD
+!          {EXPAND_EVENTS, get_event_name, TRUE, TRUE},
+!          {EXPAND_AUGROUP, get_augroup_name, TRUE, TRUE},
+  #endif
+  #ifdef FEAT_CSCOPE
+!          {EXPAND_CSCOPE, get_cscope_name, TRUE, TRUE},
+  #endif
+  #ifdef FEAT_SIGNS
+!          {EXPAND_SIGN, get_sign_name, TRUE, TRUE},
+  #endif
+  #ifdef FEAT_PROFILE
+!          {EXPAND_PROFILE, get_profile_name, TRUE, TRUE},
+  #endif
+  #if (defined(HAVE_LOCALE_H) || defined(X_LOCALE)) \
+       && (defined(FEAT_GETTEXT) || defined(FEAT_MBYTE))
+!          {EXPAND_LANGUAGE, get_lang_arg, TRUE, FALSE},
+!          {EXPAND_LOCALES, get_locales, TRUE, FALSE},
+  #endif
+!          {EXPAND_ENV_VARS, get_env_name, TRUE, TRUE},
+       };
+       int     i;
+  
+***************
+*** 4626,4632 ****
+           {
+               if (tab[i].ic)
+                   regmatch.rm_ic = TRUE;
+!              ret = ExpandGeneric(xp, &regmatch, num_file, file, tab[i].func);
+               break;
+           }
+      }
+--- 4628,4635 ----
+           {
+               if (tab[i].ic)
+                   regmatch.rm_ic = TRUE;
+!              ret = ExpandGeneric(xp, &regmatch, num_file, file,
+!                                                 tab[i].func, tab[i].escaped);
+               break;
+           }
+      }
+***************
+*** 4648,4660 ****
+   * Returns OK when no problems encountered, FAIL for error (out of memory).
+   */
+      int
+! ExpandGeneric(xp, regmatch, num_file, file, func)
+      expand_T *xp;
+      regmatch_T       *regmatch;
+      int              *num_file;
+      char_u   ***file;
+      char_u   *((*func)__ARGS((expand_T *, int)));
+                                         /* returns a string from the list */
+  {
+      int              i;
+      int              count = 0;
+--- 4651,4664 ----
+   * Returns OK when no problems encountered, FAIL for error (out of memory).
+   */
+      int
+! ExpandGeneric(xp, regmatch, num_file, file, func, escaped)
+      expand_T *xp;
+      regmatch_T       *regmatch;
+      int              *num_file;
+      char_u   ***file;
+      char_u   *((*func)__ARGS((expand_T *, int)));
+                                         /* returns a string from the list */
++     int              escaped;
+  {
+      int              i;
+      int              count = 0;
+***************
+*** 4679,4685 ****
+           {
+               if (round)
+               {
+!                  str = vim_strsave_escaped(str, (char_u *)" \t\\.");
+                   (*file)[count] = str;
+  #ifdef FEAT_MENU
+                   if (func == get_menu_names && str != NULL)
+--- 4683,4692 ----
+           {
+               if (round)
+               {
+!                  if (escaped)
+!                      str = vim_strsave_escaped(str, (char_u *)" \t\\.");
+!                  else
+!                      str = vim_strsave(str);
+                   (*file)[count] = str;
+  #ifdef FEAT_MENU
+                   if (func == get_menu_names && str != NULL)
+*** ../mercurial/vim73/src/proto/ex_cmds2.pro  2010-05-15 21:22:11.000000000 +0200
+--- src/proto/ex_cmds2.pro     2011-05-19 17:53:52.000000000 +0200
+***************
+*** 83,87 ****
+--- 83,89 ----
+  char_u *get_mess_lang __ARGS((void));
+  void set_lang_var __ARGS((void));
+  void ex_language __ARGS((exarg_T *eap));
++ void free_locales __ARGS((void));
+  char_u *get_lang_arg __ARGS((expand_T *xp, int idx));
++ char_u *get_locales __ARGS((expand_T *xp, int idx));
+  /* vim: set ft=c : */
+*** ../mercurial/vim73/src/proto/ex_getln.pro  2010-08-16 21:23:30.000000000 +0200
+--- src/proto/ex_getln.pro     2011-05-19 17:54:00.000000000 +0200
+***************
+*** 31,37 ****
+  char_u *addstar __ARGS((char_u *fname, int len, int context));
+  void set_cmd_context __ARGS((expand_T *xp, char_u *str, int len, int col));
+  int expand_cmdline __ARGS((expand_T *xp, char_u *str, int col, int *matchcount, char_u ***matches));
+! int ExpandGeneric __ARGS((expand_T *xp, regmatch_T *regmatch, int *num_file, char_u ***file, char_u *((*func)(expand_T *, int))));
+  char_u *globpath __ARGS((char_u *path, char_u *file, int expand_options));
+  void init_history __ARGS((void));
+  int get_histtype __ARGS((char_u *name));
+--- 31,37 ----
+  char_u *addstar __ARGS((char_u *fname, int len, int context));
+  void set_cmd_context __ARGS((expand_T *xp, char_u *str, int len, int col));
+  int expand_cmdline __ARGS((expand_T *xp, char_u *str, int col, int *matchcount, char_u ***matches));
+! int ExpandGeneric __ARGS((expand_T *xp, regmatch_T *regmatch, int *num_file, char_u ***file, char_u *((*func)(expand_T *, int)), int escaped));
+  char_u *globpath __ARGS((char_u *path, char_u *file, int expand_options));
+  void init_history __ARGS((void));
+  int get_histtype __ARGS((char_u *name));
+*** ../mercurial/vim73/src/vim.h       2011-05-19 17:25:36.000000000 +0200
+--- src/vim.h  2011-05-19 17:52:02.000000000 +0200
+***************
+*** 779,784 ****
+--- 779,785 ----
+  #define EXPAND_FILETYPE              37
+  #define EXPAND_FILES_IN_PATH 38
+  #define EXPAND_OWNSYNTAX     39
++ #define EXPAND_LOCALES               40
+  
+  /* Values for exmode_active (0 is no exmode) */
+  #define EXMODE_NORMAL                1
+*** ../vim-7.3.197/src/version.c       2011-05-19 17:42:54.000000000 +0200
+--- src/version.c      2011-05-19 18:24:58.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     198,
+  /**/
+
+-- 
+The primary purpose of the DATA statement is to give names to constants;
+instead of referring to pi as 3.141592653589793 at every appearance, the
+variable PI can be given that value with a DATA statement and used instead
+of the longer form of the constant.  This also simplifies modifying the
+program, should the value of pi change.
+       -- FORTRAN manual for Xerox Computers
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.199.patch0 b/vim/patches/vim-7.3.199.patch0
new file mode 100644 (file)
index 0000000..8bdd97a
--- /dev/null
@@ -0,0 +1,57 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.199
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.199
+Problem:    MS-Windows: Compilation problem of OLE with MingW compiler.
+Solution:   Put #ifdef around declarations. (Guopeng Wen)
+Files:     src/if_ole.h
+
+
+*** ../mercurial/vim73/src/if_ole.h    2010-05-15 21:22:11.000000000 +0200
+--- src/if_ole.h       2011-05-25 12:05:50.000000000 +0200
+***************
+*** 46,53 ****
+  /* header files for imported files */
+  #include "oaidl.h"
+  
+! void __RPC_FAR * __RPC_USER MIDL_user_allocate(size_t);
+! void __RPC_USER MIDL_user_free( void __RPC_FAR * );
+  
+  #ifndef __IVim_INTERFACE_DEFINED__
+  #define __IVim_INTERFACE_DEFINED__
+--- 46,56 ----
+  /* header files for imported files */
+  #include "oaidl.h"
+  
+! #ifndef __MIDL_user_allocate_free_DEFINED__
+! #define __MIDL_user_allocate_free_DEFINED__
+!     void __RPC_FAR * __RPC_USER MIDL_user_allocate(size_t);
+!     void __RPC_USER MIDL_user_free( void __RPC_FAR * );
+! #endif
+  
+  #ifndef __IVim_INTERFACE_DEFINED__
+  #define __IVim_INTERFACE_DEFINED__
+*** ../vim-7.3.198/src/version.c       2011-05-19 18:26:34.000000000 +0200
+--- src/version.c      2011-05-25 12:08:54.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     199,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+104. When people ask about the Presidential Election you ask "Which country?"
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.200.patch0 b/vim/patches/vim-7.3.200.patch0
new file mode 100644 (file)
index 0000000..6019471
--- /dev/null
@@ -0,0 +1,75 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.200
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.200 (after 7.3.198)
+Problem:    CTRL-D doesn't complete :lang.
+Solution:   Add the missing part of the change. (Dominique Pelle)
+Files:     src/ex_docmd.c
+
+
+*** ../mercurial/vim73/src/ex_docmd.c  2011-05-19 14:50:49.000000000 +0200
+--- src/ex_docmd.c     2011-05-25 12:45:02.000000000 +0200
+***************
+*** 3861,3873 ****
+  #if (defined(HAVE_LOCALE_H) || defined(X_LOCALE)) \
+       && (defined(FEAT_GETTEXT) || defined(FEAT_MBYTE))
+       case CMD_language:
+!          if (*skiptowhite(arg) == NUL)
+           {
+               xp->xp_context = EXPAND_LANGUAGE;
+               xp->xp_pattern = arg;
+           }
+           else
+!              xp->xp_context = EXPAND_NOTHING;
+           break;
+  #endif
+  #if defined(FEAT_PROFILE)
+--- 3861,3884 ----
+  #if (defined(HAVE_LOCALE_H) || defined(X_LOCALE)) \
+       && (defined(FEAT_GETTEXT) || defined(FEAT_MBYTE))
+       case CMD_language:
+!          p = skiptowhite(arg);
+!          if (*p == NUL)
+           {
+               xp->xp_context = EXPAND_LANGUAGE;
+               xp->xp_pattern = arg;
+           }
+           else
+!          {
+!              if ( STRNCMP(arg, "messages", p - arg) == 0
+!                || STRNCMP(arg, "ctype", p - arg) == 0
+!                || STRNCMP(arg, "time", p - arg) == 0)
+!              {
+!                  xp->xp_context = EXPAND_LOCALES;
+!                  xp->xp_pattern = skipwhite(p);
+!              }
+!              else
+!                  xp->xp_context = EXPAND_NOTHING;
+!          }
+           break;
+  #endif
+  #if defined(FEAT_PROFILE)
+*** ../vim-7.3.199/src/version.c       2011-05-25 12:09:46.000000000 +0200
+--- src/version.c      2011-05-25 12:49:49.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     200,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+105. When someone asks you for your address, you tell them your URL.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.201.patch0 b/vim/patches/vim-7.3.201.patch0
new file mode 100644 (file)
index 0000000..0481afd
--- /dev/null
@@ -0,0 +1,124 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.201
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.201 (after 7.3.195)
+Problem:    "} else" still causes following lines to be indented too much.
+Solution:   Better detection for the "else" block. (Lech Lorens)
+Files:     src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok
+
+
+*** ../mercurial/vim73/src/misc1.c     2011-05-19 16:35:05.000000000 +0200
+--- src/misc1.c        2011-05-25 13:29:45.000000000 +0200
+***************
+*** 7541,7557 ****
+  
+                       /*
+                        * When searching for a terminated line, don't use the
+!                       * one between the "if" and the "else".
+                        * Need to use the scope of this "else".  XXX
+                        * If whilelevel != 0 continue looking for a "do {".
+                        */
+!                      if (cin_iselse(l)
+!                              && whilelevel == 0
+!                              && ((trypos = find_start_brace(ind_maxcomment))
+!                                                                  == NULL
+                                   || find_match(LOOKFOR_IF, trypos->lnum,
+!                                      ind_maxparen, ind_maxcomment) == FAIL))
+!                          break;
+                   }
+  
+                   /*
+--- 7541,7565 ----
+  
+                       /*
+                        * When searching for a terminated line, don't use the
+!                       * one between the "if" and the matching "else".
+                        * Need to use the scope of this "else".  XXX
+                        * If whilelevel != 0 continue looking for a "do {".
+                        */
+!                      if (cin_iselse(l) && whilelevel == 0)
+!                      {
+!                          /* If we're looking at "} else", let's make sure we
+!                           * find the opening brace of the enclosing scope,
+!                           * not the one from "if () {". */
+!                          if (*l == '}')
+!                              curwin->w_cursor.col =
+!                                                 (l - ml_get_curline()) + 1;
+! 
+!                          if ((trypos = find_start_brace(ind_maxcomment))
+!                                                                     == NULL
+                                   || find_match(LOOKFOR_IF, trypos->lnum,
+!                                      ind_maxparen, ind_maxcomment) == FAIL)
+!                              break;
+!                      }
+                   }
+  
+                   /*
+*** ../mercurial/vim73/src/testdir/test3.in    2011-05-19 16:35:05.000000000 +0200
+--- src/testdir/test3.in       2011-05-25 13:23:51.000000000 +0200
+***************
+*** 1413,1418 ****
+--- 1413,1433 ----
+  }
+  
+  STARTTEST
++ :set cino&
++ 2kdd=][
++ ENDTEST
++ 
++ void func(void)
++ {
++      for (int i = 0; i < 10; ++i)
++              if (i & 1) {
++                      foo(1);
++              } else
++                      foo(0);
++ baz();
++ }
++ 
++ STARTTEST
+  :g/^STARTTEST/.,/^ENDTEST/d
+  :1;/start of AUTO/,$wq! test.out
+  ENDTEST
+*** ../mercurial/vim73/src/testdir/test3.ok    2011-05-19 16:35:05.000000000 +0200
+--- src/testdir/test3.ok       2011-05-25 13:23:51.000000000 +0200
+***************
+*** 1262,1264 ****
+--- 1262,1275 ----
+       foo();
+  }
+  
++ 
++ void func(void)
++ {
++      for (int i = 0; i < 10; ++i)
++              if (i & 1) {
++                      foo(1);
++              } else
++                      foo(0);
++      baz();
++ }
++ 
+*** ../vim-7.3.200/src/version.c       2011-05-25 12:51:17.000000000 +0200
+--- src/version.c      2011-05-25 13:33:16.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     201,
+  /**/
+
+-- 
+Laughing helps. It's like jogging on the inside.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.202.patch0 b/vim/patches/vim-7.3.202.patch0
new file mode 100644 (file)
index 0000000..1289e08
--- /dev/null
@@ -0,0 +1,868 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.202
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.202
+Problem:    Cannot influence the indent inside a namespace.
+Solution:   Add the "N" 'cino' parameter. (Konstantin Lepa)
+Files:      runtime/doc/indent.txt, src/misc1.c, src/testdir/test3.in,
+            src/testdir/test3.ok
+
+
+*** ../mercurial/vim73/runtime/doc/indent.txt  2011-04-28 19:01:26.000000000 +0200
+--- runtime/doc/indent.txt     2011-05-25 14:35:37.000000000 +0200
+***************
+*** 128,140 ****
+  used CTRL-T or CTRL-D.
+  
+                                               *cinoptions-values*
+! The 'cinoptions' option sets how Vim performs indentation.  In the list below,
+  "N" represents a number of your choice (the number can be negative).  When
+  there is an 's' after the number, Vim multiplies the number by 'shiftwidth':
+  "1s" is 'shiftwidth', "2s" is two times 'shiftwidth', etc.  You can use a
+! decimal point, too: "-0.5s" is minus half a 'shiftwidth'.  The examples below
+! assume a 'shiftwidth' of 4.
+! 
+       >N    Amount added for "normal" indent.  Used after a line that should
+             increase the indent (lines starting with "if", an opening brace,
+             etc.).  (default 'shiftwidth').
+--- 128,147 ----
+  used CTRL-T or CTRL-D.
+  
+                                               *cinoptions-values*
+! The 'cinoptions' option sets how Vim performs indentation.  The value after
+! the option character can be one of these (N is any number):
+!      N       indent N spaces
+!      -N      indent N spaces to the left
+!      Ns      N times 'shiftwidth spaces
+!      -Ns     N times 'shiftwidth spaces to the left
+! 
+! In the list below,
+  "N" represents a number of your choice (the number can be negative).  When
+  there is an 's' after the number, Vim multiplies the number by 'shiftwidth':
+  "1s" is 'shiftwidth', "2s" is two times 'shiftwidth', etc.  You can use a
+! decimal point, too: "-0.5s" is minus half a 'shiftwidth'.
+! The examples below assume a 'shiftwidth' of 4.
+!                                                      *cino->*
+       >N    Amount added for "normal" indent.  Used after a line that should
+             increase the indent (lines starting with "if", an opening brace,
+             etc.).  (default 'shiftwidth').
+***************
+*** 145,150 ****
+--- 152,158 ----
+                     foo;              foo;                      foo;
+                 }                   }                   }
+  <
++                                                      *cino-e*
+       eN    Add N to the prevailing indent inside a set of braces if the
+             opening brace at the End of the line (more precise: is not the
+             first character in a line).  This is useful if you want a
+***************
+*** 160,165 ****
+--- 168,174 ----
+                     bar;                bar;                bar;
+                 }                   }                   }
+  <
++                                                      *cino-n*
+       nN    Add N to the prevailing indent for a statement after an "if",
+             "while", etc., if it is NOT inside a set of braces.  This is
+             useful if you want a different indent when there is no '{'
+***************
+*** 174,179 ****
+--- 183,189 ----
+                     bar;                bar;                bar;
+                 }                   }                   }
+  <
++                                                      *cino-f*
+       fN    Place the first opening brace of a function or other block in
+             column N.  This applies only for an opening brace that is not
+             inside other braces and is at the start of the line.  What comes
+***************
+*** 184,189 ****
+--- 194,200 ----
+                 {                     {                     {
+                     int foo;              int foo;              int foo;
+  <
++                                                      *cino-{*
+       {N    Place opening braces N characters from the prevailing indent.
+             This applies only for opening braces that are inside other
+             braces.  (default 0).
+***************
+*** 193,198 ****
+--- 204,210 ----
+                 {                     {                     {
+                     foo;                foo;                foo;
+  <
++                                                      *cino-}*
+       }N    Place closing braces N characters from the matching opening
+             brace.  (default 0).
+  
+***************
+*** 202,207 ****
+--- 214,220 ----
+                     foo;                foo;                foo;
+                 }                   }                     }
+  <
++                                                      *cino-^*
+       ^N    Add N to the prevailing indent inside a set of braces if the
+             opening brace is in column 0.  This can specify a different
+             indent for whole of a function (some may like to set it to a
+***************
+*** 216,221 ****
+--- 229,235 ----
+                     }                 }                 }
+                 }                   }                   }
+  <
++                                                      *cino-L*
+       LN    Controls placement of jump labels. If N is negative, the label
+             will be placed at column 1. If N is non-negative, the indent of
+             the label will be the prevailing indent minus N.  (default -1).
+***************
+*** 229,234 ****
+--- 243,249 ----
+                     }                   }                   }
+                 }                   }                   }
+  <
++                                                      *cino-:*
+       :N    Place case labels N characters from the indent of the switch().
+             (default 'shiftwidth').
+  
+***************
+*** 240,245 ****
+--- 255,261 ----
+                     default:        default:
+                 }                   }
+  <
++                                                      *cino-=*
+       =N    Place statements occurring after a case label N characters from
+             the indent of the label.  (default 'shiftwidth').
+  
+***************
+*** 247,252 ****
+--- 263,269 ----
+                  case 11:             case 11:  a = a + 1;
+                      a = a + 1;                 b = b + 1;
+  <
++                                                      *cino-l*
+       lN    If N != 0 Vim will align with a case label instead of the
+             statement after it in the same line.
+  
+***************
+*** 256,261 ****
+--- 273,279 ----
+                                   break;            break;
+                               }                 }
+  <
++                                                      *cino-b*
+       bN    If N != 0 Vim will align a final "break" with the case label,
+             so that case..break looks like a sort of block.  (default: 0).
+             When using 1, consider adding "0=break" to 'cinkeys'.
+***************
+*** 272,277 ****
+--- 290,296 ----
+                         break;          break;
+                 }                   }
+  <
++                                                      *cino-g*
+       gN    Place C++ scope declarations N characters from the indent of the
+             block they are in.  (default 'shiftwidth').  A scope declaration
+             can be "public:", "protected:" or "private:".
+***************
+*** 283,288 ****
+--- 302,308 ----
+                     private:        private:
+                 }                   }
+  <
++                                                      *cino-h*
+       hN    Place statements occurring after a C++ scope declaration N
+             characters from the indent of the label.  (default
+             'shiftwidth').
+***************
+*** 291,296 ****
+--- 311,331 ----
+                  public:              public:   a = a + 1;
+                      a = a + 1;                 b = b + 1;
+  <
++                                                      *cino-N*
++      NN    Indent inside C++ namespace N characters extra compared to a
++            normal block.  (default 0).
++ 
++              cino=                      cino=N-s >
++                namespace {                namespace {
++                    void function();       void function();
++                }                          }
++ 
++                namespace my               namespace my
++                {                          {
++                    void function();       void function();
++                }                          }
++ <
++                                                      *cino-p*
+       pN    Parameter declarations for K&R-style function declarations will
+             be indented N characters from the margin.  (default
+             'shiftwidth').
+***************
+*** 300,305 ****
+--- 335,341 ----
+                     int a;          int a;                      int a;
+                     char b;         char b;                     char b;
+  <
++                                                      *cino-t*
+       tN    Indent a function return type declaration N characters from the
+             margin.  (default 'shiftwidth').
+  
+***************
+*** 307,312 ****
+--- 343,349 ----
+                     int             int                        int
+                 func()              func()              func()
+  <
++                                                      *cino-i*
+       iN    Indent C++ base class declarations and constructor
+             initializations, if they start in a new line (otherwise they
+             are aligned at the right side of the ':').
+***************
+*** 330,335 ****
+--- 368,374 ----
+                 a = b + 9 *               a = b + 9 *
+                     c;                              c;
+  <
++                                                      *cino-c*
+       cN    Indent comment lines after the comment opener, when there is no
+             other text with which to align, N characters from the comment
+             opener.  (default 3).  See also |format-comments|.
+***************
+*** 339,344 ****
+--- 378,384 ----
+                    text.                       text.
+                  */                        */
+  <
++                                                      *cino-C*
+       CN    When N is non-zero, indent comment lines by the amount specified
+             with the c flag above even if there is other text behind the
+             comment opener.  (default 0).
+***************
+*** 349,360 ****
+--- 389,402 ----
+                 ********/                 ********/
+  <          (Example uses ":set comments& comments-=s1:/* comments^=s0:/*")
+  
++                                                      *cino-/*
+       /N    Indent comment lines N characters extra.  (default 0).
+               cino=                     cino=/4 >
+                 a = b;                    a = b;
+                 /* comment */                 /* comment */
+                 c = d;                    c = d;
+  <
++                                                      *cino-(*
+       (N    When in unclosed parentheses, indent N characters from the line
+             with the unclosed parentheses.  Add a 'shiftwidth' for every
+             unclosed parentheses.  When N is 0 or the unclosed parentheses
+***************
+*** 370,375 ****
+--- 412,418 ----
+                         (c2 || c3))           (c2 || c3))
+                    {                         {
+  <
++                                                      *cino-u*
+       uN    Same as (N, but for one level deeper.  (default 'shiftwidth').
+  
+               cino=                     cino=u2 >
+***************
+*** 377,382 ****
+--- 420,426 ----
+                         && (c22345                && (c22345
+                             || c3))                 || c3))
+  <
++                                                      *cino-U*
+       UN    When N is non-zero, do not ignore the indenting specified by
+             ( or u in case that the unclosed parentheses is the first
+             non-white character in its line.  (default 0).
+***************
+*** 388,393 ****
+--- 432,438 ----
+                      c3                           c3
+                     ) && c4;                  ) && c4;
+  <
++                                                      *cino-2*
+       wN    When in unclosed parentheses and N is non-zero and either
+             using "(0" or "u0", respectively, or using "U0" and the unclosed
+             parentheses is the first non-white character in its line, line
+***************
+*** 400,405 ****
+--- 445,451 ----
+                               || c3))             || c3))
+                     foo;                      foo;
+  <
++                                                      *cino-W*
+       WN    When in unclosed parentheses and N is non-zero and either
+             using "(0" or "u0", respectively and the unclosed parentheses is
+             the last non-white character in its line and it is not the
+***************
+*** 414,419 ****
+--- 460,466 ----
+                 a_short_line(argument,    a_short_line(argument,
+                              argument);                argument);
+  <
++                                                      *cino-m*
+       mN    When N is non-zero, line up a line starting with a closing
+             parentheses with the first character of the line with the
+             matching opening parentheses.  (default 0).
+***************
+*** 428,433 ****
+--- 475,481 ----
+                    )                      )
+                     foo;                      foo;
+  <
++                                                      *cino-M*
+       MN    When N is non-zero, line up a line starting with a closing
+             parentheses with the first character of the previous line.
+             (default 0).
+***************
+*** 437,443 ****
+                        cond2                     cond2
+                    )                             )
+  <
+!                                      *java-cinoptions* *java-indenting*
+       jN    Indent java anonymous classes correctly.  The value 'N' is
+             currently unused but must be non-zero (e.g. 'j1').  'j1' will
+             indent for example the following code snippet correctly: >
+--- 485,491 ----
+                        cond2                     cond2
+                    )                             )
+  <
+!                              *java-cinoptions* *java-indenting* *cino-j*
+       jN    Indent java anonymous classes correctly.  The value 'N' is
+             currently unused but must be non-zero (e.g. 'j1').  'j1' will
+             indent for example the following code snippet correctly: >
+***************
+*** 448,454 ****
+                   }
+               });
+  <
+!                              *javascript-cinoptions* *javascript-indenting*
+       JN    Indent JavaScript object declarations correctly by not confusing
+             them with labels.  The value 'N' is currently unused but must be 
+             non-zero (e.g. 'J1'). >
+--- 496,502 ----
+                   }
+               });
+  <
+!                      *javascript-cinoptions* *javascript-indenting* *cino-J*
+       JN    Indent JavaScript object declarations correctly by not confusing
+             them with labels.  The value 'N' is currently unused but must be 
+             non-zero (e.g. 'J1'). >
+***************
+*** 483,489 ****
+  
+  
+  The defaults, spelled out in full, are:
+!      cinoptions=>s,e0,n0,f0,{0,}0,^0,L-1,:s,=s,l0,b0,gs,hs,ps,ts,is,+s,
+                       c3,C0,/0,(2s,us,U0,w0,W0,m0,j0,J0,)20,*70,#0
+  
+  Vim puts a line in column 1 if:
+--- 534,540 ----
+  
+  
+  The defaults, spelled out in full, are:
+!      cinoptions=>s,e0,n0,f0,{0,}0,^0,L-1,:s,=s,l0,b0,gs,hs,N0,ps,ts,is,+s,
+                       c3,C0,/0,(2s,us,U0,w0,W0,m0,j0,J0,)20,*70,#0
+  
+  Vim puts a line in column 1 if:
+*** ../mercurial/vim73/src/misc1.c     2011-05-25 13:33:59.000000000 +0200
+--- src/misc1.c        2011-05-25 14:57:31.000000000 +0200
+***************
+*** 4959,4964 ****
+--- 4959,4965 ----
+  static int   corr_ind_maxparen __ARGS((int ind_maxparen, pos_T *startpos));
+  static int   find_last_paren __ARGS((char_u *l, int start, int end));
+  static int   find_match __ARGS((int lookfor, linenr_T ourscope, int ind_maxparen, int ind_maxcomment));
++ static int   cin_is_cpp_namespace __ARGS((char_u *));
+  
+  static int   ind_hash_comment = 0;   /* # starts a comment */
+  
+***************
+*** 5221,5226 ****
+--- 5222,5271 ----
+      return (*(s = cin_skipcomment(s + i)) == ':' && s[1] != ':');
+  }
+  
++ /* Maximum number of lines to search back for a "namespace" line. */
++ #define FIND_NAMESPACE_LIM 20
++ 
++ /*
++  * Recognize a "namespace" scope declaration.
++  */
++     static int
++ cin_is_cpp_namespace(s)
++     char_u   *s;
++ {
++     char_u   *p;
++     int              has_name = FALSE;
++ 
++     s = cin_skipcomment(s);
++     if (STRNCMP(s, "namespace", 9) == 0 && (s[9] == NUL || !vim_iswordc(s[9])))
++     {
++      p = cin_skipcomment(skipwhite(s + 9));
++      while (*p != NUL)
++      {
++          if (vim_iswhite(*p))
++          {
++              has_name = TRUE; /* found end of a name */
++              p = cin_skipcomment(skipwhite(p));
++          }
++          else if (*p == '{')
++          {
++              break;
++          }
++          else if (vim_iswordc(*p))
++          {
++              if (has_name)
++                  return FALSE; /* word character after skipping past name */
++              ++p;
++          }
++          else
++          {
++              return FALSE;
++          }
++      }
++      return TRUE;
++     }
++     return FALSE;
++ }
++ 
+  /*
+   * Return a pointer to the first non-empty non-comment character after a ':'.
+   * Return NULL if not found.
+***************
+*** 6296,6301 ****
+--- 6341,6351 ----
+       */
+      int ind_keep_case_label = 0;
+  
++     /*
++      * handle C++ namespace
++      */
++     int ind_cpp_namespace = 0;
++ 
+      pos_T    cur_curpos;
+      int              amount;
+      int              scope_amount;
+***************
+*** 6336,6341 ****
+--- 6386,6392 ----
+      int              n;
+      int              iscase;
+      int              lookfor_break;
++     int              lookfor_cpp_namespace = FALSE;
+      int              cont_amount = 0;    /* amount for continuation line */
+      int              original_line_islabel;
+  
+***************
+*** 6409,6414 ****
+--- 6460,6466 ----
+           case 'J': ind_js = n; break;
+           case 'l': ind_keep_case_label = n; break;
+           case '#': ind_hash_comment = n; break;
++          case 'N': ind_cpp_namespace = n; break;
+       }
+       if (*options == ',')
+           ++options;
+***************
+*** 6976,6986 ****
+--- 7028,7051 ----
+           if (start_brace == BRACE_IN_COL0)       /* '{' is in column 0 */
+           {
+               amount = ind_open_left_imag;
++              lookfor_cpp_namespace = TRUE;
++          }
++          else if (start_brace == BRACE_AT_START &&
++                  lookfor_cpp_namespace)        /* '{' is at start */
++          {
++ 
++              lookfor_cpp_namespace = TRUE;
+           }
+           else
+           {
+               if (start_brace == BRACE_AT_END)    /* '{' is at end of line */
++              {
+                   amount += ind_open_imag;
++ 
++                  l = skipwhite(ml_get_curline());
++                  if (cin_is_cpp_namespace(l))
++                      amount += ind_cpp_namespace;
++              }
+               else
+               {
+                   /* Compensate for adding ind_open_extra later. */
+***************
+*** 7151,7156 ****
+--- 7216,7261 ----
+                       else
+                           amount += ind_continuation;
+                   }
++                  else if (lookfor_cpp_namespace)
++                  {
++                      if (curwin->w_cursor.lnum == ourscope)
++                          continue;
++ 
++                      if (curwin->w_cursor.lnum == 0
++                              || curwin->w_cursor.lnum
++                                            < ourscope - FIND_NAMESPACE_LIM)
++                          break;
++ 
++                      l = ml_get_curline();
++ 
++                      /*
++                       * If we're in a comment now, skip to the start of the
++                       * comment.
++                       */
++                      trypos = find_start_comment(ind_maxcomment);
++                      if (trypos != NULL)
++                      {
++                          curwin->w_cursor.lnum = trypos->lnum + 1;
++                          curwin->w_cursor.col = 0;
++                          continue;
++                      }
++ 
++                      /*
++                       * Skip preprocessor directives and blank lines.
++                       */
++                      if (cin_ispreproc_cont(&l, &curwin->w_cursor.lnum))
++                          continue;
++ 
++                      if (cin_is_cpp_namespace(l))
++                      {
++                          amount += ind_cpp_namespace;
++                          break;
++                      }
++ 
++                      if (cin_nocode(l))
++                          continue;
++ 
++                  }
+                   else if (lookfor != LOOKFOR_TERM
+                                         && lookfor != LOOKFOR_CPP_BASECLASS)
+                   {
+*** ../mercurial/vim73/src/testdir/test3.in    2011-05-25 13:33:59.000000000 +0200
+--- src/testdir/test3.in       2011-05-25 14:47:31.000000000 +0200
+***************
+*** 799,804 ****
+--- 799,867 ----
+       df */
+               hello
+  }
++ 
++ /* valid namespaces with normal indent */
++ namespace
++ {
++ {
++   111111111111;
++ }
++ }
++ namespace /* test */
++ {
++   11111111111111111;
++ }
++ namespace // test
++ {
++   111111111111111111;
++ }
++ namespace
++ {
++   111111111111111111;
++ }
++ namespace test
++ {
++   111111111111111111;
++ }
++ namespace{
++   111111111111111111;
++ }
++ namespace test{
++   111111111111111111;
++ }
++ namespace {
++   111111111111111111;
++ }
++ namespace test {
++   111111111111111111;
++ namespace test2 {
++   22222222222222222;
++ }
++ }
++ 
++ /* invalid namespaces use block indent */
++ namespace test test2 {
++   111111111111111111111;
++ }
++ namespace11111111111 {
++   111111111111;
++ }
++ namespace() {
++   1111111111111;
++ }
++ namespace()
++ {
++   111111111111111111;
++ }
++ namespace test test2
++ {
++   1111111111111111111;
++ }
++ namespace111111111
++ {
++   111111111111111111;
++ }
++ 
+  /* end of AUTO */
+  
+  STARTTEST
+***************
+*** 1428,1433 ****
+--- 1491,1566 ----
+  }
+  
+  STARTTEST
++ :set cino=N-s
++ /namespaces
++ =/^NAMESPACEEND
++ ENDTEST
++ 
++ /* valid namespaces with normal indent */
++ namespace
++ {
++    {
++      111111111111;
++ }
++ }
++ namespace /* test */
++ {
++   11111111111111111;
++ }
++ namespace // test
++ {
++   111111111111111111;
++ }
++ namespace
++ {
++   111111111111111111;
++ }
++ namespace test
++ {
++   111111111111111111;
++ }
++ namespace{
++   111111111111111111;
++ }
++ namespace test{
++   111111111111111111;
++ }
++ namespace {
++   111111111111111111;
++ }
++ namespace test {
++   111111111111111111;
++ namespace test2 {
++   22222222222222222;
++ }
++ }
++ 
++ /* invalid namespaces use block indent */
++ namespace test test2 {
++   111111111111111111111;
++ }
++ namespace11111111111 {
++   111111111111;
++ }
++ namespace() {
++   1111111111111;
++ }
++ namespace()
++ {
++   111111111111111111;
++ }
++ namespace test test2
++ {
++   1111111111111111111;
++ }
++ namespace111111111
++ {
++   111111111111111111;
++ }
++ NAMESPACEEND
++ 
++ 
++ STARTTEST
+  :g/^STARTTEST/.,/^ENDTEST/d
+  :1;/start of AUTO/,$wq! test.out
+  ENDTEST
+*** ../mercurial/vim73/src/testdir/test3.ok    2011-05-25 13:33:59.000000000 +0200
+--- src/testdir/test3.ok       2011-05-25 14:48:02.000000000 +0200
+***************
+*** 787,792 ****
+--- 787,855 ----
+          df */
+       hello
+  }
++ 
++ /* valid namespaces with normal indent */
++ namespace
++ {
++      {
++              111111111111;
++      }
++ }
++ namespace /* test */
++ {
++      11111111111111111;
++ }
++ namespace // test
++ {
++      111111111111111111;
++ }
++ namespace
++ {
++      111111111111111111;
++ }
++ namespace test
++ {
++      111111111111111111;
++ }
++ namespace{
++      111111111111111111;
++ }
++ namespace test{
++      111111111111111111;
++ }
++ namespace {
++      111111111111111111;
++ }
++ namespace test {
++      111111111111111111;
++      namespace test2 {
++              22222222222222222;
++      }
++ }
++ 
++ /* invalid namespaces use block indent */
++ namespace test test2 {
++      111111111111111111111;
++ }
++ namespace11111111111 {
++      111111111111;
++ }
++ namespace() {
++      1111111111111;
++ }
++ namespace()
++ {
++      111111111111111111;
++ }
++ namespace test test2
++ {
++      1111111111111111111;
++ }
++ namespace111111111
++ {
++      111111111111111111;
++ }
++ 
+  /* end of AUTO */
+  
+  
+***************
+*** 1273,1275 ****
+--- 1336,1403 ----
+       baz();
+  }
+  
++ 
++ /* valid namespaces with normal indent */
++ namespace
++ {
++ {
++      111111111111;
++ }
++ }
++ namespace /* test */
++ {
++ 11111111111111111;
++ }
++ namespace // test
++ {
++ 111111111111111111;
++ }
++ namespace
++ {
++ 111111111111111111;
++ }
++ namespace test
++ {
++ 111111111111111111;
++ }
++ namespace{
++ 111111111111111111;
++ }
++ namespace test{
++ 111111111111111111;
++ }
++ namespace {
++ 111111111111111111;
++ }
++ namespace test {
++ 111111111111111111;
++ namespace test2 {
++ 22222222222222222;
++ }
++ }
++ 
++ /* invalid namespaces use block indent */
++ namespace test test2 {
++      111111111111111111111;
++ }
++ namespace11111111111 {
++      111111111111;
++ }
++ namespace() {
++      1111111111111;
++ }
++ namespace()
++ {
++      111111111111111111;
++ }
++ namespace test test2
++ {
++      1111111111111111111;
++ }
++ namespace111111111
++ {
++      111111111111111111;
++ }
++ NAMESPACEEND
++ 
++ 
+*** ../vim-7.3.201/src/version.c       2011-05-25 13:33:59.000000000 +0200
+--- src/version.c      2011-05-25 15:14:20.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     202,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+107. When using your phone you forget that you don't have to use your
+     keyboard.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.203.patch0 b/vim/patches/vim-7.3.203.patch0
new file mode 100644 (file)
index 0000000..62c2989
--- /dev/null
@@ -0,0 +1,102 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.203
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.203
+Problem:    MS-Windows: Can't run an external command without a console window.
+Solution:   Support ":!start /b cmd". (Xaizek)
+Files:     runtime/doc/os_win32.txt, src/os_win32.c
+
+
+*** ../mercurial/vim73/src/os_win32.c  2011-05-05 18:31:54.000000000 +0200
+--- src/os_win32.c     2011-05-25 16:45:31.000000000 +0200
+***************
+*** 3401,3406 ****
+--- 3401,3407 ----
+           {
+               STARTUPINFO             si;
+               PROCESS_INFORMATION     pi;
++              DWORD                   flags = CREATE_NEW_CONSOLE;
+  
+               si.cb = sizeof(si);
+               si.lpReserved = NULL;
+***************
+*** 3418,3423 ****
+--- 3419,3440 ----
+                   si.dwFlags = STARTF_USESHOWWINDOW;
+                   si.wShowWindow = SW_SHOWMINNOACTIVE;
+               }
++              else if ((STRNICMP(cmdbase, "/b", 2) == 0)
++                      && vim_iswhite(cmdbase[2]))
++              {
++                  cmdbase = skipwhite(cmdbase + 2);
++                  flags = CREATE_NO_WINDOW;
++                  si.dwFlags = STARTF_USESTDHANDLES;
++                  si.hStdInput = CreateFile("\\\\.\\NUL",     // File name
++                      GENERIC_READ,                           // Access flags
++                      0,                                      // Share flags
++                      NULL,                                   // Security att.
++                      OPEN_EXISTING,                          // Open flags
++                      FILE_ATTRIBUTE_NORMAL,                  // File att.
++                      NULL);                                  // Temp file
++                  si.hStdOutput = si.hStdInput;
++                  si.hStdError = si.hStdInput;
++              }
+  
+               /* When the command is in double quotes, but 'shellxquote' is
+                * empty, keep the double quotes around the command.
+***************
+*** 3445,3451 ****
+                       NULL,                   // Process security attributes
+                       NULL,                   // Thread security attributes
+                       FALSE,                  // Inherit handles
+!                      CREATE_NEW_CONSOLE,     // Creation flags
+                       NULL,                   // Environment
+                       NULL,                   // Current directory
+                       &si,                    // Startup information
+--- 3462,3468 ----
+                       NULL,                   // Process security attributes
+                       NULL,                   // Thread security attributes
+                       FALSE,                  // Inherit handles
+!                      flags,                  // Creation flags
+                       NULL,                   // Environment
+                       NULL,                   // Current directory
+                       &si,                    // Startup information
+***************
+*** 3458,3463 ****
+--- 3475,3485 ----
+                   EMSG(_("E371: Command not found"));
+  #endif
+               }
++              if (si.hStdInput != NULL)
++              {
++                  /* Close the handle to \\.\NUL */
++                  CloseHandle(si.hStdInput);
++              }
+               /* Close the handles to the subprocess, so that it goes away */
+               CloseHandle(pi.hThread);
+               CloseHandle(pi.hProcess);
+*** ../vim-7.3.202/src/version.c       2011-05-25 15:16:06.000000000 +0200
+--- src/version.c      2011-05-25 17:05:59.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     203,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+108. While reading a magazine, you look for the Zoom icon for a better
+     look at a photograph.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.204.patch0 b/vim/patches/vim-7.3.204.patch0
new file mode 100644 (file)
index 0000000..b2b6360
--- /dev/null
@@ -0,0 +1,51 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.204
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.204 (after 7.3.201)
+Problem:    Compiler warning.
+Solution:   Add type cast. (Mike Williams)
+Files:     src/misc1.c
+
+
+*** ../mercurial/vim73/src/misc1.c     2011-05-25 15:16:06.000000000 +0200
+--- src/misc1.c        2011-05-25 17:25:10.000000000 +0200
+***************
+*** 7657,7663 ****
+                            * not the one from "if () {". */
+                           if (*l == '}')
+                               curwin->w_cursor.col =
+!                                                 (l - ml_get_curline()) + 1;
+  
+                           if ((trypos = find_start_brace(ind_maxcomment))
+                                                                      == NULL
+--- 7657,7663 ----
+                            * not the one from "if () {". */
+                           if (*l == '}')
+                               curwin->w_cursor.col =
+!                                        (colnr_T)(l - ml_get_curline()) + 1;
+  
+                           if ((trypos = find_start_brace(ind_maxcomment))
+                                                                      == NULL
+*** ../vim-7.3.203/src/version.c       2011-05-25 17:06:16.000000000 +0200
+--- src/version.c      2011-05-25 17:29:32.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     204,
+  /**/
+
+-- 
+In a world without walls and borders, who needs windows and gates?
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.205.patch0 b/vim/patches/vim-7.3.205.patch0
new file mode 100644 (file)
index 0000000..b49a040
--- /dev/null
@@ -0,0 +1,93 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.205
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.205
+Problem:    Syntax "extend" doesn't work correctly.
+Solution:   Avoid calling check_state_ends() recursively (Ben Schmidt)
+Files:     src/syntax.c
+
+
+*** ../mercurial/vim73/src/syntax.c    2011-05-19 12:14:03.000000000 +0200
+--- src/syntax.c       2011-05-25 17:47:46.000000000 +0200
+***************
+*** 990,996 ****
+--- 990,999 ----
+       * previous line and regions that have "keepend".
+       */
+      if (current_state.ga_len > 0)
++     {
+       syn_update_ends(TRUE);
++      check_state_ends();
++     }
+  
+      next_match_idx = -1;
+      ++current_line_id;
+***************
+*** 1064,1070 ****
+       }
+      }
+      check_keepend();
+-     check_state_ends();
+  }
+  
+  /****************************************
+--- 1067,1072 ----
+***************
+*** 2533,2539 ****
+  check_state_ends()
+  {
+      stateitem_T      *cur_si;
+!     int              had_extend = FALSE;
+  
+      cur_si = &CUR_STATE(current_state.ga_len - 1);
+      for (;;)
+--- 2535,2541 ----
+  check_state_ends()
+  {
+      stateitem_T      *cur_si;
+!     int              had_extend;
+  
+      cur_si = &CUR_STATE(current_state.ga_len - 1);
+      for (;;)
+***************
+*** 2586,2593 ****
+  
+               /* When the ended item has "extend", another item with
+                * "keepend" now needs to check for its end. */
+!               if (cur_si->si_flags & HL_EXTEND)
+!                   had_extend = TRUE;
+  
+               pop_current_state();
+  
+--- 2588,2594 ----
+  
+               /* When the ended item has "extend", another item with
+                * "keepend" now needs to check for its end. */
+!               had_extend = (cur_si->si_flags & HL_EXTEND);
+  
+               pop_current_state();
+  
+*** ../vim-7.3.204/src/version.c       2011-05-25 17:29:40.000000000 +0200
+--- src/version.c      2011-05-25 17:52:57.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     205,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+110. You actually volunteer to become your employer's webmaster.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.206.patch0 b/vim/patches/vim-7.3.206.patch0
new file mode 100644 (file)
index 0000000..8a91f0a
--- /dev/null
@@ -0,0 +1,54 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.206
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.206
+Problem:    64bit MS-Windows compiler warning.
+Solution:   Use HandleToLong() instead of type cast. (Mike Williams)
+Files:     src/gui_w32.c
+
+
+*** ../mercurial/vim73/src/gui_w32.c   2011-01-17 20:08:04.000000000 +0100
+--- src/gui_w32.c      2011-05-25 21:14:10.000000000 +0200
+***************
+*** 1575,1581 ****
+  
+  #ifdef FEAT_EVAL
+      /* set the v:windowid variable */
+!     set_vim_var_nr(VV_WINDOWID, (long)s_hwnd);
+  #endif
+  
+  theend:
+--- 1575,1581 ----
+  
+  #ifdef FEAT_EVAL
+      /* set the v:windowid variable */
+!     set_vim_var_nr(VV_WINDOWID, HandleToLong(s_hwnd));
+  #endif
+  
+  theend:
+*** ../vim-7.3.205/src/version.c       2011-05-25 17:56:23.000000000 +0200
+--- src/version.c      2011-05-25 21:16:17.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     206,
+  /**/
+
+-- 
+FIXME and XXX are two common keywords used to mark broken or incomplete code
+not only since XXX as a sex reference would grab everybody's attention but
+simply due to the fact that Vim would highlight these words.
+                                       -- Hendrik Scholz
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.207.patch0 b/vim/patches/vim-7.3.207.patch0
new file mode 100644 (file)
index 0000000..95b335e
--- /dev/null
@@ -0,0 +1,54 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.207
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.207
+Problem:    Can't compile with MSVC with pentium4 and 64 bit.
+Solution:   Only use SSE2 for 32 bit. (Mike Williams)
+Files:      src/Make_mvc.mak
+
+
+*** ../mercurial/vim73/src/Make_mvc.mak        2011-02-15 18:06:11.000000000 +0100
+--- src/Make_mvc.mak   2011-06-04 11:59:38.000000000 +0200
+***************
+*** 409,416 ****
+  CPUARG =
+  !endif
+  !else
+! # VC8/9 only allows specifying SSE architecture
+! !if "$(CPUNR)" == "pentium4"
+  CPUARG = /arch:SSE2
+  !endif
+  !endif
+--- 409,416 ----
+  CPUARG =
+  !endif
+  !else
+! # VC8/9/10 only allows specifying SSE architecture but only for 32bit
+! !if "$(ASSEMBLY_ARCHITECTURE)" == "x86" && "$(CPUNR)" == "pentium4"
+  CPUARG = /arch:SSE2
+  !endif
+  !endif
+*** ../vim-7.3.206/src/version.c       2011-05-25 21:18:02.000000000 +0200
+--- src/version.c      2011-06-12 20:30:30.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     207,
+  /**/
+
+-- 
+"The question of whether computers can think is just like the question
+of whether submarines can swim."      -- Edsger W. Dijkstra
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.208.patch0 b/vim/patches/vim-7.3.208.patch0
new file mode 100644 (file)
index 0000000..c5a7929
--- /dev/null
@@ -0,0 +1,51 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.208
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.208
+Problem:    Early terminated if statement.
+Solution:   Remove the semicolon. (Lech Lorens)
+Files:      src/gui_mac.c
+
+
+*** ../mercurial/vim73/src/gui_mac.c   2011-01-17 20:08:04.000000000 +0100
+--- src/gui_mac.c      2011-06-06 05:35:46.000000000 +0200
+***************
+*** 1840,1846 ****
+       p.v -= gui.scrollbar_height;
+      p.v -= p.v % gui.char_height;
+      p.v += 2 * gui.border_width;
+!     if (gui.which_scrollbars[SBAR_BOTTOM]);
+       p.v += gui.scrollbar_height;
+  
+      ZoomWindowIdeal(whichWindow, thePart, &p);
+--- 1840,1846 ----
+       p.v -= gui.scrollbar_height;
+      p.v -= p.v % gui.char_height;
+      p.v += 2 * gui.border_width;
+!     if (gui.which_scrollbars[SBAR_BOTTOM])
+       p.v += gui.scrollbar_height;
+  
+      ZoomWindowIdeal(whichWindow, thePart, &p);
+*** ../vim-7.3.207/src/version.c       2011-06-12 20:31:25.000000000 +0200
+--- src/version.c      2011-06-12 20:33:00.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     208,
+  /**/
+
+-- 
+Keep America beautiful.  Swallow your beer cans.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.209.patch0 b/vim/patches/vim-7.3.209.patch0
new file mode 100644 (file)
index 0000000..afd4ab8
--- /dev/null
@@ -0,0 +1,95 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.209
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.209
+Problem:    MSVC Install instructions point to wrong batch file.
+Solution:   Add a batch file for use with MSVC 10.
+Files:      src/msvc2010.bat, src/INSTALLpc.txt, Filelist
+
+
+*** ../mercurial/vim73/src/msvc2010.bat        2011-06-12 20:35:31.000000000 +0200
+--- src/msvc2010.bat   2011-06-09 05:08:35.000000000 +0200
+***************
+*** 0 ****
+--- 1,7 ----
++ @echo off
++ rem To be used on MS-Windows for Visual C++ 2010 Express Edition
++ rem   aka Microsoft Visual Studio 10.0.
++ rem See INSTALLpc.txt for information.
++ @echo on
++ 
++ call "%VS100COMNTOOLS%%vsvars32.bat"
+*** ../mercurial/vim73/src/INSTALLpc.txt       2010-08-16 21:23:30.000000000 +0200
+--- src/INSTALLpc.txt  2011-06-08 06:47:46.000000000 +0200
+***************
+*** 28,35 ****
+  9. MS-DOS
+  
+  The currently preferred method is using the free Visual C++ Toolkit 2008
+! |msvc-2008-express|.  If you need the executable to run on Windows 98 or ME,
+! use the 2003 one |msvc-2003-toolkit|.
+  
+  
+  1. Microsoft Visual C++
+--- 28,36 ----
+  9. MS-DOS
+  
+  The currently preferred method is using the free Visual C++ Toolkit 2008
+! |msvc-2008-express|, the produced binary runs on most MS-Windows systems.  If
+! you need the executable to run on Windows 98 or ME, use the 2003 one
+! |msvc-2003-toolkit|.
+  
+  
+  1. Microsoft Visual C++
+***************
+*** 176,182 ****
+      http://www.microsoft.com/express/vc/Default.aspx
+  This includes the IDE and the debugger.
+  
+! To set the environment execute the msvc2008.bat script.  You can then build
+  Vim with Make_mvc.mak.
+  
+  
+--- 177,183 ----
+      http://www.microsoft.com/express/vc/Default.aspx
+  This includes the IDE and the debugger.
+  
+! To set the environment execute the msvc2010.bat script.  You can then build
+  Vim with Make_mvc.mak.
+  
+  
+*** ../mercurial/vim73/Filelist        2011-05-19 13:40:47.000000000 +0200
+--- Filelist   2011-06-09 05:17:25.000000000 +0200
+***************
+*** 262,267 ****
+--- 262,268 ----
+               src/bigvim.bat \
+               src/msvcsetup.bat \
+               src/msvc2008.bat \
++              src/msvc2010.bat \
+               src/dimm.idl \
+               src/dlldata.c \
+               src/dosinst.c \
+*** ../vim-7.3.208/src/version.c       2011-06-12 20:33:30.000000000 +0200
+--- src/version.c      2011-06-12 20:34:44.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     209,
+  /**/
+
+-- 
+"Hit any key to continue" is a lie.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.210.patch0 b/vim/patches/vim-7.3.210.patch0
new file mode 100644 (file)
index 0000000..f02fe6f
--- /dev/null
@@ -0,0 +1,182 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.210
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.210
+Problem:    Can't always find the file when using cscope.
+Solution:   Add the 'cscoperelative' option. (Raghavendra D Prabhu)
+Files:      runtime/doc/if_cscop.txt, runtime/doc/options.txt,
+            src/if_cscope.c, src/options.c, src/options.h
+
+
+*** ../mercurial/vim73/runtime/doc/if_cscop.txt        2010-09-30 21:38:08.000000000 +0200
+--- runtime/doc/if_cscop.txt   2011-06-12 19:54:26.000000000 +0200
+***************
+*** 271,276 ****
+--- 271,285 ----
+       :set cst
+       :set nocst
+  <
++                                                      *cscoperelative* *csre*
++ If 'cscoperelative' set, then in absence of a prefix given to cscope (prefx
++ is the argument to -P option of cscope), basename of cscope.out location
++ (usually the project root directory) will be used as the prefix to construt
++ absolute path.The default is off. Note: This option is only effective when
++ cscope (cscopeprg) is initialized without a prefix path (-P). Examples: >
++      :set csre
++      :set nocsre
++ <
+                                                       *cscopetagorder* *csto*
+  The value of 'csto' determines the order in which |:cstag| performs a search.
+  If 'csto' is set to zero, cscope database(s) are searched first, followed
+*** ../mercurial/vim73/runtime/doc/options.txt 2011-05-19 12:22:41.000000000 +0200
+--- runtime/doc/options.txt    2011-06-12 20:00:10.000000000 +0200
+***************
+*** 2209,2214 ****
+--- 2209,2224 ----
+       Specifies whether to use quickfix window to show cscope results.
+       See |cscopequickfix|.
+  
++                                              *'cscoperelative'* *'csre'*
++ 'cscoperelative' 'csre' boolean (default off)
++                      global
++                      {not available when compiled without the |+cscope|
++                      feature}
++                      {not in Vi}
++      In the absence of a prefix (-P) for cscope. setting this option enables
++      to use the basename of cscope.out path as the prefix.
++      See |cscoperelative|.
++ 
+                               *'cscopetag'* *'cst'* *'nocscopetag'* *'nocst'*
+  'cscopetag' 'cst'    boolean (default off)
+                       global
+*** ../mercurial/vim73/src/if_cscope.c 2011-05-05 16:41:19.000000000 +0200
+--- src/if_cscope.c    2011-06-12 20:25:17.000000000 +0200
+***************
+*** 2471,2512 ****
+   */
+      static char *
+  cs_resolve_file(i, name)
+!     int i;
+      char *name;
+  {
+!     char *fullname;
+!     int len;
+  
+      /*
+!      * ppath is freed when we destroy the cscope connection.
+!      * fullname is freed after cs_make_vim_style_matches, after it's been
+!      * copied into the tag buffer used by vim
+       */
+      len = (int)(strlen(name) + 2);
+      if (csinfo[i].ppath != NULL)
+       len += (int)strlen(csinfo[i].ppath);
+  
+      if ((fullname = (char *)alloc(len)) == NULL)
+       return NULL;
+  
+!     /*
+!      * note/example: this won't work if the cscope output already starts
+       * "../.." and the prefix path is also "../..".  if something like this
+!      * happens, you are screwed up and need to fix how you're using cscope.
+!      */
+!     if (csinfo[i].ppath != NULL &&
+!      (strncmp(name, csinfo[i].ppath, strlen(csinfo[i].ppath)) != 0) &&
+!      (name[0] != '/')
+  #ifdef WIN32
+!      && name[0] != '\\' && name[1] != ':'
+  #endif
+!      )
+       (void)sprintf(fullname, "%s/%s", csinfo[i].ppath, name);
+      else
+       (void)sprintf(fullname, "%s", name);
+  
+      return fullname;
+! } /* cs_resolve_file */
+  
+  
+  /*
+--- 2471,2531 ----
+   */
+      static char *
+  cs_resolve_file(i, name)
+!     int  i;
+      char *name;
+  {
+!     char     *fullname;
+!     int              len;
+!     char_u   *csdir = NULL;
+  
+      /*
+!      * Ppath is freed when we destroy the cscope connection.
+!      * Fullname is freed after cs_make_vim_style_matches, after it's been
+!      * copied into the tag buffer used by Vim.
+       */
+      len = (int)(strlen(name) + 2);
+      if (csinfo[i].ppath != NULL)
+       len += (int)strlen(csinfo[i].ppath);
++     else if (p_csre && csinfo[i].fname != NULL)
++     {
++      /* If 'cscoperelative' is set and ppath is not set, use cscope.out
++       * path in path resolution. */
++      csdir = alloc(MAXPATHL);
++      if (csdir != NULL)
++      {
++          vim_strncpy(csdir, (char_u *)csinfo[i].fname,
++                  gettail((char_u *)csinfo[i].fname) - 1 - (char_u *)csinfo[i].fname);
++          len += (int)STRLEN(csdir);
++      }
++     }
+  
+      if ((fullname = (char *)alloc(len)) == NULL)
+       return NULL;
+  
+!     /* Note/example: this won't work if the cscope output already starts
+       * "../.." and the prefix path is also "../..".  if something like this
+!      * happens, you are screwed up and need to fix how you're using cscope. */
+!     if (csinfo[i].ppath != NULL
+!          && (strncmp(name, csinfo[i].ppath, strlen(csinfo[i].ppath)) != 0)
+!          && (name[0] != '/')
+  #ifdef WIN32
+!          && name[0] != '\\' && name[1] != ':'
+  #endif
+!        )
+       (void)sprintf(fullname, "%s/%s", csinfo[i].ppath, name);
++     else if (csdir != NULL && csinfo[i].fname != NULL && STRLEN(csdir) > 0)
++     {
++      /* Check for csdir to be non empty to avoid empty path concatenated to
++       * cscope output. TODO: avoid the unnecessary alloc/free of fullname. */
++      vim_free(fullname);
++      fullname = concat_fnames(csdir, (char_u *)name, TRUE);
++     }
+      else
+       (void)sprintf(fullname, "%s", name);
+  
++     vim_free(csdir);
+      return fullname;
+! }
+  
+  
+  /*
+*** ../vim-7.3.209/src/version.c       2011-06-12 20:36:00.000000000 +0200
+--- src/version.c      2011-06-12 20:37:48.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     210,
+  /**/
+
+-- 
+Apathy Error: Don't bother striking any key.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.211.patch0 b/vim/patches/vim-7.3.211.patch0
new file mode 100644 (file)
index 0000000..4760c10
--- /dev/null
@@ -0,0 +1,51 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.211
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.211 (after 7.3.210)
+Problem:    Compiler warning.
+Solution:   Add type cast.
+Files:      src/if_cscope.c
+
+
+*** ../mercurial/vim73/src/if_cscope.c 2011-06-12 20:42:17.000000000 +0200
+--- src/if_cscope.c    2011-06-12 21:22:53.000000000 +0200
+***************
+*** 2518,2524 ****
+       /* Check for csdir to be non empty to avoid empty path concatenated to
+        * cscope output. TODO: avoid the unnecessary alloc/free of fullname. */
+       vim_free(fullname);
+!      fullname = concat_fnames(csdir, (char_u *)name, TRUE);
+      }
+      else
+       (void)sprintf(fullname, "%s", name);
+--- 2518,2524 ----
+       /* Check for csdir to be non empty to avoid empty path concatenated to
+        * cscope output. TODO: avoid the unnecessary alloc/free of fullname. */
+       vim_free(fullname);
+!      fullname = (char *)concat_fnames(csdir, (char_u *)name, TRUE);
+      }
+      else
+       (void)sprintf(fullname, "%s", name);
+*** ../vim-7.3.210/src/version.c       2011-06-12 20:42:17.000000000 +0200
+--- src/version.c      2011-06-12 21:24:03.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     211,
+  /**/
+
+-- 
+Did you ever see a "Hit any key to continue" message in a music piece?
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.212.patch0 b/vim/patches/vim-7.3.212.patch0
new file mode 100644 (file)
index 0000000..d5086db
--- /dev/null
@@ -0,0 +1,243 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.212
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.212
+Problem:    With Python 3.2 ":py3" fails.
+Solution:   Move PyEval_InitThreads() to after Py_Initialize(). (Roland
+            Puntaier)  Check abiflags in configure. (Andreas Behr)
+Files:      src/if_python3.c, src/auto/configure, src/configure.in
+
+
+*** ../mercurial/vim73/src/if_python3.c        2011-02-25 15:18:46.000000000 +0100
+--- src/if_python3.c   2011-06-11 04:24:49.000000000 +0200
+***************
+*** 547,560 ****
+       Py_SetPythonHome(PYTHON3_HOME);
+  #endif
+  
+-      /* initialise threads */
+-      PyEval_InitThreads();
+- 
+  #if !defined(MACOS) || defined(MACOS_X_UNIX)
+       Py_Initialize();
+  #else
+       PyMac_Initialize();
+  #endif
+  
+  #ifdef DYNAMIC_PYTHON3
+       get_py3_exceptions();
+--- 547,559 ----
+       Py_SetPythonHome(PYTHON3_HOME);
+  #endif
+  
+  #if !defined(MACOS) || defined(MACOS_X_UNIX)
+       Py_Initialize();
+  #else
+       PyMac_Initialize();
+  #endif
++      /* initialise threads, must be after Py_Initialize() */
++      PyEval_InitThreads();
+  
+  #ifdef DYNAMIC_PYTHON3
+       get_py3_exceptions();
+*** ../mercurial/vim73/src/auto/configure      2011-05-10 15:41:59.000000000 +0200
+--- src/auto/configure 2011-06-12 21:33:16.000000000 +0200
+***************
+*** 5505,5510 ****
+--- 5505,5527 ----
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $vi_cv_var_python3_version" >&5
+  $as_echo "$vi_cv_var_python3_version" >&6; }
+  
++         { $as_echo "$as_me:${as_lineno-$LINENO}: checking Python's abiflags" >&5
++ $as_echo_n "checking Python's abiflags... " >&6; }
++ if test "${vi_cv_var_python3_abiflags+set}" = set; then :
++   $as_echo_n "(cached) " >&6
++ else
++ 
++      vi_cv_var_python3_abiflags=
++      if ${vi_cv_path_python3} -c \
++          "import sys; sys.exit(${vi_cv_var_python3_version} < 3.2)"
++      then
++        vi_cv_var_python3_abiflags=`${vi_cv_path_python3} -c \
++          "import sys; print(sys.abiflags)"`
++      fi
++ fi
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $vi_cv_var_python3_abiflags" >&5
++ $as_echo "$vi_cv_var_python3_abiflags" >&6; }
++ 
+          { $as_echo "$as_me:${as_lineno-$LINENO}: checking Python's install prefix" >&5
+  $as_echo_n "checking Python's install prefix... " >&6; }
+  if test "${vi_cv_path_python3_pfx+set}" = set; then :
+***************
+*** 5555,5563 ****
+  else
+  
+       vi_cv_path_python3_conf=
+       for path in "${vi_cv_path_python3_pfx}" "${vi_cv_path_python3_epfx}"; do
+         for subdir in lib64 lib share; do
+!          d="${path}/${subdir}/python${vi_cv_var_python3_version}/config"
+           if test -d "$d" && test -f "$d/config.c"; then
+             vi_cv_path_python3_conf="$d"
+           fi
+--- 5572,5584 ----
+  else
+  
+       vi_cv_path_python3_conf=
++      config_dir="config"
++      if test "${vi_cv_var_python3_abiflags}" != ""; then
++        config_dir="${config_dir}-${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags}"
++      fi
+       for path in "${vi_cv_path_python3_pfx}" "${vi_cv_path_python3_epfx}"; do
+         for subdir in lib64 lib share; do
+!          d="${path}/${subdir}/python${vi_cv_var_python3_version}/${config_dir}"
+           if test -d "$d" && test -f "$d/config.c"; then
+             vi_cv_path_python3_conf="$d"
+           fi
+***************
+*** 5592,5598 ****
+                      eval "`cd ${PYTHON3_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
+            rm -f -- "${tmp_mkf}"
+            vi_cv_path_python3_plibs="-L${PYTHON3_CONFDIR} -lpython${vi_cv_var_python3_version}"
+!           vi_cv_path_python3_plibs="${vi_cv_path_python3_plibs} ${python3_BASEMODLIBS} ${python3_LIBS} ${python3_SYSLIBS} ${python3_LINKFORSHARED}"
+                      vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-ltermcap//`
+            vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-lffi//`
+  
+--- 5613,5619 ----
+                      eval "`cd ${PYTHON3_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
+            rm -f -- "${tmp_mkf}"
+            vi_cv_path_python3_plibs="-L${PYTHON3_CONFDIR} -lpython${vi_cv_var_python3_version}"
+!           vi_cv_path_python3_plibs="${vi_cv_path_python3_plibs} ${python3_BASEMODLIBS} ${python3_LIBS} ${python3_SYSLIBS}"
+                      vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-ltermcap//`
+            vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-lffi//`
+  
+***************
+*** 5601,5609 ****
+  
+        PYTHON3_LIBS="${vi_cv_path_python3_plibs}"
+        if test "${vi_cv_path_python3_pfx}" = "${vi_cv_path_python3_epfx}"; then
+!         PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\""
+        else
+!         PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version} -I${vi_cv_path_python3_epfx}/include/python${vi_cv_var_python3_version} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\""
+        fi
+        PYTHON3_SRC="if_python3.c"
+              if test "x$MACOSX" = "xyes"; then
+--- 5622,5630 ----
+  
+        PYTHON3_LIBS="${vi_cv_path_python3_plibs}"
+        if test "${vi_cv_path_python3_pfx}" = "${vi_cv_path_python3_epfx}"; then
+!         PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\""
+        else
+!         PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -I${vi_cv_path_python3_epfx}/include/python${vi_cv_var_python3_version} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\""
+        fi
+        PYTHON3_SRC="if_python3.c"
+              if test "x$MACOSX" = "xyes"; then
+*** ../mercurial/vim73/src/configure.in        2011-05-10 15:41:59.000000000 +0200
+--- src/configure.in   2011-06-12 21:31:18.000000000 +0200
+***************
+*** 992,997 ****
+--- 992,1008 ----
+            ${vi_cv_path_python3} -c 'import sys; print(sys.version[:3])'`
+      ]])
+  
++     dnl -- get abiflags for python 3.2 or higher (PEP 3149)
++     AC_CACHE_CHECK(Python's abiflags,vi_cv_var_python3_abiflags,
++     [
++      vi_cv_var_python3_abiflags=
++      if ${vi_cv_path_python3} -c \
++          "import sys; sys.exit(${vi_cv_var_python3_version} < 3.2)"
++      then
++        vi_cv_var_python3_abiflags=`${vi_cv_path_python3} -c \    
++          "import sys; print(sys.abiflags)"`
++      fi ])
++ 
+      dnl -- find where python3 thinks it was installed
+      AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python3_pfx,
+      [ vi_cv_path_python3_pfx=`
+***************
+*** 1021,1029 ****
+      AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python3_conf,
+      [
+       vi_cv_path_python3_conf=
+       for path in "${vi_cv_path_python3_pfx}" "${vi_cv_path_python3_epfx}"; do
+         for subdir in lib64 lib share; do
+!          d="${path}/${subdir}/python${vi_cv_var_python3_version}/config"
+           if test -d "$d" && test -f "$d/config.c"; then
+             vi_cv_path_python3_conf="$d"
+           fi
+--- 1032,1044 ----
+      AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python3_conf,
+      [
+       vi_cv_path_python3_conf=
++      config_dir="config"
++      if test "${vi_cv_var_python3_abiflags}" != ""; then
++        config_dir="${config_dir}-${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags}"
++      fi
+       for path in "${vi_cv_path_python3_pfx}" "${vi_cv_path_python3_epfx}"; do
+         for subdir in lib64 lib share; do
+!          d="${path}/${subdir}/python${vi_cv_var_python3_version}/${config_dir}"
+           if test -d "$d" && test -f "$d/config.c"; then
+             vi_cv_path_python3_conf="$d"
+           fi
+***************
+*** 1055,1061 ****
+            eval "`cd ${PYTHON3_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
+            rm -f -- "${tmp_mkf}"
+            vi_cv_path_python3_plibs="-L${PYTHON3_CONFDIR} -lpython${vi_cv_var_python3_version}"
+!           vi_cv_path_python3_plibs="${vi_cv_path_python3_plibs} ${python3_BASEMODLIBS} ${python3_LIBS} ${python3_SYSLIBS} ${python3_LINKFORSHARED}"
+            dnl remove -ltermcap, it can conflict with an earlier -lncurses
+            vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-ltermcap//`
+            vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-lffi//`
+--- 1070,1076 ----
+            eval "`cd ${PYTHON3_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
+            rm -f -- "${tmp_mkf}"
+            vi_cv_path_python3_plibs="-L${PYTHON3_CONFDIR} -lpython${vi_cv_var_python3_version}"
+!           vi_cv_path_python3_plibs="${vi_cv_path_python3_plibs} ${python3_BASEMODLIBS} ${python3_LIBS} ${python3_SYSLIBS}"
+            dnl remove -ltermcap, it can conflict with an earlier -lncurses
+            vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-ltermcap//`
+            vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-lffi//`
+***************
+*** 1063,1071 ****
+  
+        PYTHON3_LIBS="${vi_cv_path_python3_plibs}"
+        if test "${vi_cv_path_python3_pfx}" = "${vi_cv_path_python3_epfx}"; then
+!         PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\""
+        else
+!         PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version} -I${vi_cv_path_python3_epfx}/include/python${vi_cv_var_python3_version} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\""
+        fi
+        PYTHON3_SRC="if_python3.c"
+        dnl For Mac OSX 10.2 config.o is included in the Python library.
+--- 1078,1086 ----
+  
+        PYTHON3_LIBS="${vi_cv_path_python3_plibs}"
+        if test "${vi_cv_path_python3_pfx}" = "${vi_cv_path_python3_epfx}"; then
+!         PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\""
+        else
+!         PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -I${vi_cv_path_python3_epfx}/include/python${vi_cv_var_python3_version} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\""
+        fi
+        PYTHON3_SRC="if_python3.c"
+        dnl For Mac OSX 10.2 config.o is included in the Python library.
+*** ../vim-7.3.211/src/version.c       2011-06-12 21:24:56.000000000 +0200
+--- src/version.c      2011-06-12 21:35:31.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     212,
+  /**/
+
+-- 
+In Joseph Heller's novel "Catch-22", the main character tries to get out of a
+war by proving he is crazy.  But the mere fact he wants to get out of the war
+only shows he isn't crazy -- creating the original "Catch-22".
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.213.patch0 b/vim/patches/vim-7.3.213.patch0
new file mode 100644 (file)
index 0000000..d3ef325
--- /dev/null
@@ -0,0 +1,142 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.213
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.213
+Problem:    Javascript object literal is not indented correctly.
+Solution:   Make a special case for when "J1" is in 'cino'. (Luc Deschenaux)
+Files:      src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok
+
+
+*** ../mercurial/vim73/src/misc1.c     2011-05-25 17:29:40.000000000 +0200
+--- src/misc1.c        2011-06-10 04:58:10.000000000 +0200
+***************
+*** 6965,6971 ****
+            *                  ldfd) {
+            *              }
+            */
+!          if ((ind_keep_case_label
+                          && cin_iscase(skipwhite(ml_get_curline()), FALSE)))
+               amount = get_indent();
+           else
+--- 6965,6971 ----
+            *                  ldfd) {
+            *              }
+            */
+!          if (ind_js || (ind_keep_case_label
+                          && cin_iscase(skipwhite(ml_get_curline()), FALSE)))
+               amount = get_indent();
+           else
+*** ../mercurial/vim73/src/testdir/test3.in    2011-05-25 15:16:06.000000000 +0200
+--- src/testdir/test3.in       2011-06-12 21:44:12.000000000 +0200
+***************
+*** 1492,1501 ****
+  
+  STARTTEST
+  :set cino=N-s
+! /namespaces
+  =/^NAMESPACEEND
+  ENDTEST
+  
+  /* valid namespaces with normal indent */
+  namespace
+  {
+--- 1492,1502 ----
+  
+  STARTTEST
+  :set cino=N-s
+! /^NAMESPACESTART
+  =/^NAMESPACEEND
+  ENDTEST
+  
++ NAMESPACESTART
+  /* valid namespaces with normal indent */
+  namespace
+  {
+***************
+*** 1561,1566 ****
+--- 1562,1588 ----
+  
+  
+  STARTTEST
++ :set cino=J1
++ /^JSSTART
++ =/^JSEND
++ ENDTEST
++ 
++ JSSTART
++ var bar = {
++ foo: {
++ that: this,
++ some: ok,
++ },
++ "bar":{
++ a : 2,
++ b: "123abc",
++ x: 4,
++ "y": 5
++ }
++ }
++ JSEND
++ 
++ STARTTEST
+  :g/^STARTTEST/.,/^ENDTEST/d
+  :1;/start of AUTO/,$wq! test.out
+  ENDTEST
+*** ../mercurial/vim73/src/testdir/test3.ok    2011-05-25 15:16:06.000000000 +0200
+--- src/testdir/test3.ok       2011-06-12 21:44:26.000000000 +0200
+***************
+*** 1337,1342 ****
+--- 1337,1343 ----
+  }
+  
+  
++ NAMESPACESTART
+  /* valid namespaces with normal indent */
+  namespace
+  {
+***************
+*** 1401,1403 ****
+--- 1402,1420 ----
+  NAMESPACEEND
+  
+  
++ 
++ JSSTART
++ var bar = {
++      foo: {
++              that: this,
++              some: ok,
++      },
++      "bar":{
++              a : 2,
++              b: "123abc",
++              x: 4,
++              "y": 5
++      }
++ }
++ JSEND
++ 
+*** ../vim-7.3.212/src/version.c       2011-06-12 21:37:06.000000000 +0200
+--- src/version.c      2011-06-12 21:48:34.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     213,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+169. You hire a housekeeper for your home page.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.214.patch0 b/vim/patches/vim-7.3.214.patch0
new file mode 100644 (file)
index 0000000..a095bbc
--- /dev/null
@@ -0,0 +1,55 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.214
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.214
+Problem:    The text displayed by ":z-" isn't exactly like old Vi.
+Solution:   Add one to the start line number. (ChangZhuo Chen)
+Files:      src/ex_cmds.c
+
+
+*** ../mercurial/vim73/src/ex_cmds.c   2011-05-19 14:30:07.000000000 +0200
+--- src/ex_cmds.c      2011-05-19 14:23:33.000000000 +0200
+***************
+*** 4097,4104 ****
+      switch (*kind)
+      {
+       case '-':
+!          start = lnum - bigness * (linenr_T)(x - kind);
+!          end = start + bigness;
+           curs = end;
+           break;
+  
+--- 4097,4104 ----
+      switch (*kind)
+      {
+       case '-':
+!          start = lnum - bigness * (linenr_T)(x - kind) + 1;
+!          end = start + bigness - 1;
+           curs = end;
+           break;
+  
+*** ../vim-7.3.213/src/version.c       2011-06-12 21:51:01.000000000 +0200
+--- src/version.c      2011-06-12 22:02:20.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     214,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+170. You introduce your wife as "my_lady@home.wife" and refer to your
+     children as "forked processes."
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.215.patch0 b/vim/patches/vim-7.3.215.patch0
new file mode 100644 (file)
index 0000000..24d37fb
--- /dev/null
@@ -0,0 +1,63 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.215
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.215 (after 7.3.210)
+Problem:    Wrong file names in previous patch. (Toothpik)
+Solution:   Include the option changes.
+Files:      src/option.c, src/option.h
+
+
+*** ../mercurial/vim73/src/option.c    2011-05-19 13:40:47.000000000 +0200
+--- src/option.c       2011-06-12 19:58:17.000000000 +0200
+***************
+*** 901,906 ****
+--- 901,913 ----
+                           {(char_u *)0L, (char_u *)0L}
+  #endif
+                           SCRIPTID_INIT},
++     {"cscoperelative", "csre", P_BOOL|P_VI_DEF|P_VIM,
++ #ifdef FEAT_CSCOPE
++                          (char_u *)&p_csre, PV_NONE,
++ #else
++                          (char_u *)NULL, PV_NONE,
++ #endif
++                          {(char_u *)0L, (char_u *)0L} SCRIPTID_INIT},
+      {"cscopetag",   "cst",  P_BOOL|P_VI_DEF|P_VIM,
+  #ifdef FEAT_CSCOPE
+                           (char_u *)&p_cst, PV_NONE,
+*** ../mercurial/vim73/src/option.h    2011-05-19 13:40:47.000000000 +0200
+--- src/option.h       2011-06-12 19:58:49.000000000 +0200
+***************
+*** 391,396 ****
+--- 391,397 ----
+  EXTERN char_u        *p_cpo;         /* 'cpoptions' */
+  #ifdef FEAT_CSCOPE
+  EXTERN char_u        *p_csprg;       /* 'cscopeprg' */
++ EXTERN int   p_csre;         /* 'cscoperelative' */
+  # ifdef FEAT_QUICKFIX
+  EXTERN char_u        *p_csqf;        /* 'cscopequickfix' */
+  #  define    CSQF_CMDS   "sgdctefi"
+*** ../vim-7.3.214/src/version.c       2011-06-12 22:03:15.000000000 +0200
+--- src/version.c      2011-06-12 22:12:34.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     215,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+171. You invent another person and chat with yourself in empty chat rooms.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.216.patch0 b/vim/patches/vim-7.3.216.patch0
new file mode 100644 (file)
index 0000000..a52bc93
--- /dev/null
@@ -0,0 +1,263 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.216
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.216
+Problem:    When recovering a file a range of lines is missing. (Charles Jie)
+Solution:   Reset the index when advancing to the next pointer block.  Add a
+            test to verify recovery works.
+Files:      src/memline.c, src/testdir/test78.in, src/testdir/test78.ok,
+            src/testdir/Makefile, src/testdir/Make_amiga.mak,
+            src/testdir/Make_dos.mak, src/testdir/Make_ming.mak,
+            src/testdir/Make_os2.mak, src/testdir/Make_vms.mms
+
+
+*** ../mercurial/vim73/src/memline.c   2011-05-10 16:41:13.000000000 +0200
+--- src/memline.c      2011-06-13 00:56:09.000000000 +0200
+***************
+*** 1507,1512 ****
+--- 1507,1513 ----
+                   bnum = pp->pb_pointer[idx].pe_bnum;
+                   line_count = pp->pb_pointer[idx].pe_line_count;
+                   page_count = pp->pb_pointer[idx].pe_page_count;
++                  idx = 0;
+                   continue;
+               }
+           }
+*** ../mercurial/vim73/src/testdir/test78.in   2011-06-13 01:05:54.000000000 +0200
+--- src/testdir/test78.in      2011-06-13 00:54:48.000000000 +0200
+***************
+*** 0 ****
+--- 1,46 ----
++ Inserts 10000 lines with text to fill the swap file with two levels of pointer
++ blocks.  Then recovers from the swap file and checks all text is restored.
++ 
++ We need about 10000 lines of 100 characters to get two levels of pointer
++ blocks.
++ 
++ STARTTEST
++ :so small.vim
++ :set nocp fileformat=unix undolevels=-1
++ :e! Xtest
++ ggdG
++ :let text = "\tabcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnoparstuvwxyz0123456789"
++ :let i = 1
++ :let linecount = 10000
++ :while i <= linecount | call append(i - 1, i . text) | let i += 1 | endwhile
++ :preserve
++ :" get the name of the swap file
++ :redir => swapname
++ :swapname
++ :redir END
++ :let swapname = substitute(swapname, '[[:blank:][:cntrl:]]*\(.\{-}\)[[:blank:][:cntrl:]]*$', '\1', '')
++ :" make a copy of the swap file in Xswap
++ :set bin
++ :exe 'sp ' . swapname
++ :w! Xswap
++ :echo swapname
++ :set nobin
++ :new
++ :only!
++ :bwipe! Xtest
++ :call rename('Xswap', swapname)
++ :recover Xtest
++ :call delete(swapname)
++ :new
++ :call append(0, 'recovery start')
++ :wincmd w
++ :let linedollar = line('$')
++ :if linedollar < linecount | exe 'wincmd w' | call append(line('$'), "expected " . linecount . " lines but found only " . linedollar) | exe 'wincmd w' | let linecount = linedollar | endif
++ :let i = 1
++ :while i <= linecount | if getline(i) != i . text | exe 'wincmd w' | call append(line('$'), i . ' differs') | exe 'wincmd w' | endif | let i += 1 | endwhile
++ :q!
++ :call append(line('$'), 'recovery end')
++ :w! test.out
++ :qa!
++ ENDTEST
++ 
+*** ../mercurial/vim73/src/testdir/test78.ok   2011-06-13 01:05:54.000000000 +0200
+--- src/testdir/test78.ok      2011-06-13 00:25:05.000000000 +0200
+***************
+*** 0 ****
+--- 1,3 ----
++ recovery start
++ 
++ recovery end
+*** ../mercurial/vim73/src/testdir/Makefile    2011-03-22 18:10:34.000000000 +0100
+--- src/testdir/Makefile       2011-06-13 00:35:46.000000000 +0200
+***************
+*** 25,31 ****
+               test59.out test60.out test61.out test62.out test63.out \
+               test64.out test65.out test66.out test67.out test68.out \
+               test69.out test70.out test71.out test72.out test73.out \
+!              test74.out test75.out test76.out test77.out
+  
+  SCRIPTS_GUI = test16.out
+  
+--- 25,31 ----
+               test59.out test60.out test61.out test62.out test63.out \
+               test64.out test65.out test66.out test67.out test68.out \
+               test69.out test70.out test71.out test72.out test73.out \
+!              test74.out test75.out test76.out test77.out test78.out
+  
+  SCRIPTS_GUI = test16.out
+  
+***************
+*** 71,77 ****
+                 fi \
+               else echo $* NO OUTPUT >>test.log; \
+               fi"
+! #    -rm -rf X* test.ok viminfo
+  
+  test49.out: test49.vim
+  
+--- 71,77 ----
+                 fi \
+               else echo $* NO OUTPUT >>test.log; \
+               fi"
+!      -rm -rf X* test.ok viminfo
+  
+  test49.out: test49.vim
+  
+*** ../mercurial/vim73/src/testdir/Make_amiga.mak      2011-03-22 18:10:34.000000000 +0100
+--- src/testdir/Make_amiga.mak 2011-06-13 01:00:42.000000000 +0200
+***************
+*** 28,34 ****
+               test61.out test62.out test63.out test64.out test65.out \
+               test66.out test67.out test68.out test69.out test70.out \
+               test71.out test72.out test73.out test74.out test75.out \
+!              test76.out test77.out
+  
+  .SUFFIXES: .in .out
+  
+--- 28,34 ----
+               test61.out test62.out test63.out test64.out test65.out \
+               test66.out test67.out test68.out test69.out test70.out \
+               test71.out test72.out test73.out test74.out test75.out \
+!              test76.out test77.out test78.out
+  
+  .SUFFIXES: .in .out
+  
+***************
+*** 125,127 ****
+--- 125,128 ----
+  test75.out: test75.in
+  test76.out: test76.in
+  test77.out: test77.in
++ test78.out: test78.in
+*** ../mercurial/vim73/src/testdir/Make_dos.mak        2011-03-22 18:10:34.000000000 +0100
+--- src/testdir/Make_dos.mak   2011-06-13 01:00:55.000000000 +0200
+***************
+*** 28,34 ****
+               test37.out test38.out test39.out test40.out test41.out \
+               test42.out test52.out test65.out test66.out test67.out \
+               test68.out test69.out test71.out test72.out test73.out \
+!              test74.out test75.out test76.out test77.out
+  
+  SCRIPTS32 =  test50.out test70.out
+  
+--- 28,34 ----
+               test37.out test38.out test39.out test40.out test41.out \
+               test42.out test52.out test65.out test66.out test67.out \
+               test68.out test69.out test71.out test72.out test73.out \
+!              test74.out test75.out test76.out test77.out test78.out
+  
+  SCRIPTS32 =  test50.out test70.out
+  
+*** ../mercurial/vim73/src/testdir/Make_ming.mak       2011-03-22 18:10:34.000000000 +0100
+--- src/testdir/Make_ming.mak  2011-06-13 01:01:02.000000000 +0200
+***************
+*** 48,54 ****
+               test37.out test38.out test39.out test40.out test41.out \
+               test42.out test52.out test65.out test66.out test67.out \
+               test68.out test69.out test71.out test72.out test73.out \
+!              test74.out test75.out test76.out test77.out
+  
+  SCRIPTS32 =  test50.out test70.out
+  
+--- 48,54 ----
+               test37.out test38.out test39.out test40.out test41.out \
+               test42.out test52.out test65.out test66.out test67.out \
+               test68.out test69.out test71.out test72.out test73.out \
+!              test74.out test75.out test76.out test77.out test78.out
+  
+  SCRIPTS32 =  test50.out test70.out
+  
+*** ../mercurial/vim73/src/testdir/Make_os2.mak        2011-03-22 18:10:34.000000000 +0100
+--- src/testdir/Make_os2.mak   2011-06-13 01:01:08.000000000 +0200
+***************
+*** 28,34 ****
+               test61.out test62.out test63.out test64.out test65.out \
+               test66.out test67.out test68.out test69.out test70.out \
+               test71.out test72.out test73.out test74.out test75.out \
+!              test76.out test77.out
+  
+  .SUFFIXES: .in .out
+  
+--- 28,34 ----
+               test61.out test62.out test63.out test64.out test65.out \
+               test66.out test67.out test68.out test69.out test70.out \
+               test71.out test72.out test73.out test74.out test75.out \
+!              test76.out test77.out test78.out
+  
+  .SUFFIXES: .in .out
+  
+*** ../mercurial/vim73/src/testdir/Make_vms.mms        2011-04-28 19:05:01.000000000 +0200
+--- src/testdir/Make_vms.mms   2011-06-13 01:01:29.000000000 +0200
+***************
+*** 4,10 ****
+  # Authors:   Zoltan Arpadffy, <arpadffy@polarhome.com>
+  #            Sandor Kopanyi,  <sandor.kopanyi@mailbox.hu>
+  #
+! # Last change:  2011 Mar 03
+  #
+  # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64.
+  # Edit the lines in the Configuration section below to select.
+--- 4,10 ----
+  # Authors:   Zoltan Arpadffy, <arpadffy@polarhome.com>
+  #            Sandor Kopanyi,  <sandor.kopanyi@mailbox.hu>
+  #
+! # Last change:  2011 Jun 13
+  #
+  # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64.
+  # Edit the lines in the Configuration section below to select.
+***************
+*** 75,81 ****
+        test61.out test62.out test63.out test64.out test65.out \
+        test66.out test67.out test68.out test69.out \
+        test71.out test72.out test74.out test75.out test76.out \
+!       test77.out
+  
+  # Known problems:
+  # Test 30: a problem around mac format - unknown reason
+--- 75,81 ----
+        test61.out test62.out test63.out test64.out test65.out \
+        test66.out test67.out test68.out test69.out \
+        test71.out test72.out test74.out test75.out test76.out \
+!       test77.out test78.out
+  
+  # Known problems:
+  # Test 30: a problem around mac format - unknown reason
+*** ../vim-7.3.215/src/version.c       2011-06-12 22:13:37.000000000 +0200
+--- src/version.c      2011-06-13 00:59:02.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     216,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+172. You join listservers just for the extra e-mail.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.217.patch0 b/vim/patches/vim-7.3.217.patch0
new file mode 100644 (file)
index 0000000..be04b86
--- /dev/null
@@ -0,0 +1,63 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.217
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.217
+Problem:    Inside an "if" a ":wincmd" causes problems.
+Solution:   When skipping commands let ":wincmd" skip over its argument.
+Files:      src/ex_docmd.c
+
+
+*** ../mercurial/vim73/src/ex_docmd.c  2011-05-25 12:51:17.000000000 +0200
+--- src/ex_docmd.c     2011-06-13 01:15:17.000000000 +0200
+***************
+*** 2595,2600 ****
+--- 2595,2601 ----
+           case CMD_unlet:
+           case CMD_verbose:
+           case CMD_vertical:
++          case CMD_wincmd:
+                               break;
+  
+           default:            goto doend;
+***************
+*** 8237,8243 ****
+      p = skipwhite(p);
+      if (*p != NUL && *p != '"' && eap->nextcmd == NULL)
+       EMSG(_(e_invarg));
+!     else
+      {
+       /* Pass flags on for ":vertical wincmd ]". */
+       postponed_split_flags = cmdmod.split;
+--- 8238,8244 ----
+      p = skipwhite(p);
+      if (*p != NUL && *p != '"' && eap->nextcmd == NULL)
+       EMSG(_(e_invarg));
+!     else if (!eap->skip)
+      {
+       /* Pass flags on for ":vertical wincmd ]". */
+       postponed_split_flags = cmdmod.split;
+*** ../vim-7.3.216/src/version.c       2011-06-13 01:07:22.000000000 +0200
+--- src/version.c      2011-06-13 01:18:48.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     217,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+173. You keep tracking down the email addresses of all your friends
+     (even childhood friends).
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.218.patch0 b/vim/patches/vim-7.3.218.patch0
new file mode 100644 (file)
index 0000000..1da18d8
--- /dev/null
@@ -0,0 +1,91 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.218
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.218 (after 7.3.212)
+Problem:    Tiny configuration problem with Python 3.
+Solution:   Add abiflags in one more place. (Andreas Behr)
+Files:      src/auto/configure, src/configure.in
+
+
+*** ../mercurial/vim73/src/auto/configure      2011-06-12 21:37:06.000000000 +0200
+--- src/auto/configure 2011-06-13 01:26:50.000000000 +0200
+***************
+*** 5607,5613 ****
+       @echo "python3_BASEMODLIBS='$(BASEMODLIBS)'"
+       @echo "python3_LIBS='$(LIBS)'"
+       @echo "python3_SYSLIBS='$(SYSLIBS)'"
+-      @echo "python3_LINKFORSHARED='$(LINKFORSHARED)'"
+       @echo "python3_INSTSONAME='$(INSTSONAME)'"
+  eof
+                      eval "`cd ${PYTHON3_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
+--- 5607,5612 ----
+***************
+*** 5624,5630 ****
+        if test "${vi_cv_path_python3_pfx}" = "${vi_cv_path_python3_epfx}"; then
+          PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\""
+        else
+!         PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -I${vi_cv_path_python3_epfx}/include/python${vi_cv_var_python3_version} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\""
+        fi
+        PYTHON3_SRC="if_python3.c"
+              if test "x$MACOSX" = "xyes"; then
+--- 5623,5629 ----
+        if test "${vi_cv_path_python3_pfx}" = "${vi_cv_path_python3_epfx}"; then
+          PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\""
+        else
+!         PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -I${vi_cv_path_python3_epfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\""
+        fi
+        PYTHON3_SRC="if_python3.c"
+              if test "x$MACOSX" = "xyes"; then
+*** ../mercurial/vim73/src/configure.in        2011-06-12 21:37:06.000000000 +0200
+--- src/configure.in   2011-06-13 01:26:35.000000000 +0200
+***************
+*** 1063,1069 ****
+       @echo "python3_BASEMODLIBS='$(BASEMODLIBS)'"
+       @echo "python3_LIBS='$(LIBS)'"
+       @echo "python3_SYSLIBS='$(SYSLIBS)'"
+-      @echo "python3_LINKFORSHARED='$(LINKFORSHARED)'"
+       @echo "python3_INSTSONAME='$(INSTSONAME)'"
+  eof
+            dnl -- delete the lines from make about Entering/Leaving directory
+--- 1063,1068 ----
+***************
+*** 1080,1086 ****
+        if test "${vi_cv_path_python3_pfx}" = "${vi_cv_path_python3_epfx}"; then
+          PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\""
+        else
+!         PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -I${vi_cv_path_python3_epfx}/include/python${vi_cv_var_python3_version} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\""
+        fi
+        PYTHON3_SRC="if_python3.c"
+        dnl For Mac OSX 10.2 config.o is included in the Python library.
+--- 1079,1085 ----
+        if test "${vi_cv_path_python3_pfx}" = "${vi_cv_path_python3_epfx}"; then
+          PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\""
+        else
+!         PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -I${vi_cv_path_python3_epfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\""
+        fi
+        PYTHON3_SRC="if_python3.c"
+        dnl For Mac OSX 10.2 config.o is included in the Python library.
+*** ../vim-7.3.217/src/version.c       2011-06-13 01:19:48.000000000 +0200
+--- src/version.c      2011-06-13 01:29:42.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     218,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+174. You know what a listserv is.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.219.patch0 b/vim/patches/vim-7.3.219.patch0
new file mode 100644 (file)
index 0000000..2ec1117
--- /dev/null
@@ -0,0 +1,92 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.219
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.219
+Problem:    Can't compile with GTK on Mac.
+Solution:   Add some #ifdef trickery. (Ben Schmidt)
+Files:      src/os_mac_conv.c, src/os_macosx.m, src/vim.h
+
+*** ../mercurial/vim73/src/os_mac_conv.c       2010-08-16 21:23:30.000000000 +0200
+--- src/os_mac_conv.c  2011-06-13 01:55:17.000000000 +0200
+***************
+*** 14,19 ****
+--- 14,21 ----
+   */
+  
+  #define NO_X11_INCLUDES
++ #define BalloonEval int   /* used in header files */
++ 
+  #include "vim.h"
+  #ifndef FEAT_GUI_MAC
+  # include <CoreServices/CoreServices.h>
+*** ../mercurial/vim73/src/os_macosx.m 2010-10-10 17:08:28.000000000 +0200
+--- src/os_macosx.m    2011-06-13 01:58:47.000000000 +0200
+***************
+*** 18,23 ****
+--- 18,24 ----
+  /* Avoid a conflict for the definition of Boolean between Mac header files and
+   * X11 header files. */
+  #define NO_X11_INCLUDES
++ #define BalloonEval int   /* used in header files */
+  
+  #include "vim.h"
+  #import <Cocoa/Cocoa.h>
+***************
+*** 27,35 ****
+   * Clipboard support for the console.
+   * Don't include this when building the GUI version, the functions in
+   * gui_mac.c are used then.  TODO: remove those instead?
+!  * But for MacVim we need these ones.
+   */
+! #if defined(FEAT_CLIPBOARD) && (!defined(FEAT_GUI) || defined(FEAT_GUI_MACVIM))
+  
+  /* Used to identify clipboard data copied from Vim. */
+  
+--- 28,36 ----
+   * Clipboard support for the console.
+   * Don't include this when building the GUI version, the functions in
+   * gui_mac.c are used then.  TODO: remove those instead?
+!  * But for MacVim we do need these ones.
+   */
+! #if defined(FEAT_CLIPBOARD) && (!defined(FEAT_GUI_ENABLED) || defined(FEAT_GUI_MACVIM))
+  
+  /* Used to identify clipboard data copied from Vim. */
+  
+*** ../mercurial/vim73/src/vim.h       2011-05-19 18:26:34.000000000 +0200
+--- src/vim.h  2011-06-13 01:57:17.000000000 +0200
+***************
+*** 121,126 ****
+--- 121,127 ----
+      || defined(FEAT_GUI_W32) \
+      || defined(FEAT_GUI_W16) \
+      || defined(FEAT_GUI_PHOTON)
++ # define FEAT_GUI_ENABLED  /* also defined with NO_X11_INCLUDES */
+  # if !defined(FEAT_GUI) && !defined(NO_X11_INCLUDES)
+  #  define FEAT_GUI
+  # endif
+*** ../vim-7.3.218/src/version.c       2011-06-13 01:32:42.000000000 +0200
+--- src/version.c      2011-06-13 02:03:02.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     219,
+  /**/
+
+-- 
+If Microsoft would build a car...
+... the oil, water temperature, and alternator warning lights would
+all be replaced by a single "General Protection Fault" warning light.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.220.patch0 b/vim/patches/vim-7.3.220.patch0
new file mode 100644 (file)
index 0000000..0122e7f
--- /dev/null
@@ -0,0 +1,1230 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.220
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.220
+Problem:    Python 3: vim.error is a 'str' instead of an 'Exception' object,
+            so 'except' or 'raise' it causes a 'SystemError' exception.
+            Buffer objects do not support slice assignment.
+            When exchanging text between Vim and Python, multibyte texts become
+            gabage or cause Unicode Expceptions, etc.
+            'py3file' tries to read in the file as Unicode, sometimes causes
+            UnicodeDecodeException
+Solution:   Fix the problems. (lilydjwg)
+Files:      src/if_py_both.h, src/if_python.c, src/if_python3.c
+    
+
+*** ../mercurial/vim73/src/if_py_both.h        2011-03-22 15:47:18.000000000 +0100
+--- src/if_py_both.h   2011-06-18 23:54:25.000000000 +0200
+***************
+*** 65,74 ****
+  OutputWrite(PyObject *self, PyObject *args)
+  {
+      int len;
+!     char *str;
+      int error = ((OutputObject *)(self))->error;
+  
+!     if (!PyArg_ParseTuple(args, "s#", &str, &len))
+       return NULL;
+  
+      Py_BEGIN_ALLOW_THREADS
+--- 65,74 ----
+  OutputWrite(PyObject *self, PyObject *args)
+  {
+      int len;
+!     char *str = NULL;
+      int error = ((OutputObject *)(self))->error;
+  
+!     if (!PyArg_ParseTuple(args, "es#", p_enc, &str, &len))
+       return NULL;
+  
+      Py_BEGIN_ALLOW_THREADS
+***************
+*** 76,81 ****
+--- 76,82 ----
+      writer((writefn)(error ? emsg : msg), (char_u *)str, len);
+      Python_Release_Vim();
+      Py_END_ALLOW_THREADS
++     PyMem_Free(str);
+  
+      Py_INCREF(Py_None);
+      return Py_None;
+***************
+*** 104,113 ****
+      for (i = 0; i < n; ++i)
+      {
+       PyObject *line = PyList_GetItem(list, i);
+!      char *str;
+       PyInt len;
+  
+!      if (!PyArg_Parse(line, "s#", &str, &len)) {
+           PyErr_SetString(PyExc_TypeError, _("writelines() requires list of strings"));
+           Py_DECREF(list);
+           return NULL;
+--- 105,114 ----
+      for (i = 0; i < n; ++i)
+      {
+       PyObject *line = PyList_GetItem(list, i);
+!      char *str = NULL;
+       PyInt len;
+  
+!      if (!PyArg_Parse(line, "es#", p_enc, &str, &len)) {
+           PyErr_SetString(PyExc_TypeError, _("writelines() requires list of strings"));
+           Py_DECREF(list);
+           return NULL;
+***************
+*** 118,123 ****
+--- 119,125 ----
+       writer((writefn)(error ? emsg : msg), (char_u *)str, len);
+       Python_Release_Vim();
+       Py_END_ALLOW_THREADS
++      PyMem_Free(str);
+      }
+  
+      Py_DECREF(list);
+***************
+*** 681,686 ****
+--- 683,689 ----
+  {
+      const char *str;
+      char *save;
++     PyObject *bytes;
+      PyInt len;
+      PyInt i;
+      char *p;
+***************
+*** 691,698 ****
+       return NULL;
+      }
+  
+!     str = PyString_AsString(obj);
+!     len = PyString_Size(obj);
+  
+      /*
+       * Error checking: String must not contain newlines, as we
+--- 694,702 ----
+       return NULL;
+      }
+  
+!     bytes = PyString_AsBytes(obj);  /* for Python 2 this does nothing */
+!     str = PyString_AsString(bytes);
+!     len = PyString_Size(bytes);
+  
+      /*
+       * Error checking: String must not contain newlines, as we
+***************
+*** 731,736 ****
+--- 735,741 ----
+      }
+  
+      save[i] = '\0';
++     PyString_FreeBytes(bytes);  /* Python 2 does nothing here */
+  
+      return save;
+  }
+***************
+*** 817,823 ****
+      invalidate_botline();
+  }
+  
+! /* Replace a line in the specified buffer. The line number is
+   * in Vim format (1-based). The replacement line is given as
+   * a Python string object. The object is checked for validity
+   * and correct format. Errors are returned as a value of FAIL.
+--- 822,829 ----
+      invalidate_botline();
+  }
+  
+! /*
+!  * Replace a line in the specified buffer. The line number is
+   * in Vim format (1-based). The replacement line is given as
+   * a Python string object. The object is checked for validity
+   * and correct format. Errors are returned as a value of FAIL.
+***************
+*** 908,913 ****
+--- 914,1106 ----
+      }
+  }
+  
++ /* Replace a range of lines in the specified buffer. The line numbers are in
++  * Vim format (1-based). The range is from lo up to, but not including, hi.
++  * The replacement lines are given as a Python list of string objects. The
++  * list is checked for validity and correct format. Errors are returned as a
++  * value of FAIL.  The return value is OK on success.
++  * If OK is returned and len_change is not NULL, *len_change
++  * is set to the change in the buffer length.
++  */
++     static int
++ SetBufferLineList(buf_T *buf, PyInt lo, PyInt hi, PyObject *list, PyInt *len_change)
++ {
++     /* First of all, we check the thpe of the supplied Python object.
++      * There are three cases:
++      *         1. NULL, or None - this is a deletion.
++      *         2. A list        - this is a replacement.
++      *         3. Anything else - this is an error.
++      */
++     if (list == Py_None || list == NULL)
++     {
++      PyInt   i;
++      PyInt   n = (int)(hi - lo);
++      buf_T   *savebuf = curbuf;
++ 
++      PyErr_Clear();
++      curbuf = buf;
++ 
++      if (u_savedel((linenr_T)lo, (long)n) == FAIL)
++          PyErr_SetVim(_("cannot save undo information"));
++      else
++      {
++          for (i = 0; i < n; ++i)
++          {
++              if (ml_delete((linenr_T)lo, FALSE) == FAIL)
++              {
++                  PyErr_SetVim(_("cannot delete line"));
++                  break;
++              }
++          }
++          if (buf == curwin->w_buffer)
++              py_fix_cursor((linenr_T)lo, (linenr_T)hi, (linenr_T)-n);
++          deleted_lines_mark((linenr_T)lo, (long)i);
++      }
++ 
++      curbuf = savebuf;
++ 
++      if (PyErr_Occurred() || VimErrorCheck())
++          return FAIL;
++ 
++      if (len_change)
++          *len_change = -n;
++ 
++      return OK;
++     }
++     else if (PyList_Check(list))
++     {
++      PyInt   i;
++      PyInt   new_len = PyList_Size(list);
++      PyInt   old_len = hi - lo;
++      PyInt   extra = 0;      /* lines added to text, can be negative */
++      char    **array;
++      buf_T   *savebuf;
++ 
++      if (new_len == 0)       /* avoid allocating zero bytes */
++          array = NULL;
++      else
++      {
++          array = (char **)alloc((unsigned)(new_len * sizeof(char *)));
++          if (array == NULL)
++          {
++              PyErr_NoMemory();
++              return FAIL;
++          }
++      }
++ 
++      for (i = 0; i < new_len; ++i)
++      {
++          PyObject *line = PyList_GetItem(list, i);
++ 
++          array[i] = StringToLine(line);
++          if (array[i] == NULL)
++          {
++              while (i)
++                  vim_free(array[--i]);
++              vim_free(array);
++              return FAIL;
++          }
++      }
++ 
++      savebuf = curbuf;
++ 
++      PyErr_Clear();
++      curbuf = buf;
++ 
++      if (u_save((linenr_T)(lo-1), (linenr_T)hi) == FAIL)
++          PyErr_SetVim(_("cannot save undo information"));
++ 
++      /* If the size of the range is reducing (ie, new_len < old_len) we
++       * need to delete some old_len. We do this at the start, by
++       * repeatedly deleting line "lo".
++       */
++      if (!PyErr_Occurred())
++      {
++          for (i = 0; i < old_len - new_len; ++i)
++              if (ml_delete((linenr_T)lo, FALSE) == FAIL)
++              {
++                  PyErr_SetVim(_("cannot delete line"));
++                  break;
++              }
++          extra -= i;
++      }
++ 
++      /* For as long as possible, replace the existing old_len with the
++       * new old_len. This is a more efficient operation, as it requires
++       * less memory allocation and freeing.
++       */
++      if (!PyErr_Occurred())
++      {
++          for (i = 0; i < old_len && i < new_len; ++i)
++              if (ml_replace((linenr_T)(lo+i), (char_u *)array[i], FALSE)
++                                                                    == FAIL)
++              {
++                  PyErr_SetVim(_("cannot replace line"));
++                  break;
++              }
++      }
++      else
++          i = 0;
++ 
++      /* Now we may need to insert the remaining new old_len. If we do, we
++       * must free the strings as we finish with them (we can't pass the
++       * responsibility to vim in this case).
++       */
++      if (!PyErr_Occurred())
++      {
++          while (i < new_len)
++          {
++              if (ml_append((linenr_T)(lo + i - 1),
++                                      (char_u *)array[i], 0, FALSE) == FAIL)
++              {
++                  PyErr_SetVim(_("cannot insert line"));
++                  break;
++              }
++              vim_free(array[i]);
++              ++i;
++              ++extra;
++          }
++      }
++ 
++      /* Free any left-over old_len, as a result of an error */
++      while (i < new_len)
++      {
++          vim_free(array[i]);
++          ++i;
++      }
++ 
++      /* Free the array of old_len. All of its contents have now
++       * been dealt with (either freed, or the responsibility passed
++       * to vim.
++       */
++      vim_free(array);
++ 
++      /* Adjust marks. Invalidate any which lie in the
++       * changed range, and move any in the remainder of the buffer.
++       */
++      mark_adjust((linenr_T)lo, (linenr_T)(hi - 1),
++                                                (long)MAXLNUM, (long)extra);
++      changed_lines((linenr_T)lo, 0, (linenr_T)hi, (long)extra);
++ 
++      if (buf == curwin->w_buffer)
++          py_fix_cursor((linenr_T)lo, (linenr_T)hi, (linenr_T)extra);
++ 
++      curbuf = savebuf;
++ 
++      if (PyErr_Occurred() || VimErrorCheck())
++          return FAIL;
++ 
++      if (len_change)
++          *len_change = new_len - old_len;
++ 
++      return OK;
++     }
++     else
++     {
++      PyErr_BadArgument();
++      return FAIL;
++     }
++ }
+  
+  /* Insert a number of lines into the specified buffer after the specifed line.
+   * The line number is in Vim format (1-based). The lines to be inserted are
+***************
+*** 1108,1113 ****
+--- 1301,1340 ----
+       return -1;
+  
+      if (new_end)
++      *new_end = end + len_change;
++ 
++     return 0;
++ }
++ 
++     static PyInt
++ RBAsSlice(BufferObject *self, PyInt lo, PyInt hi, PyObject *val, PyInt start, PyInt end, PyInt *new_end)
++ {
++     PyInt size;
++     PyInt len_change;
++ 
++     /* Self must be a valid buffer */
++     if (CheckBuffer(self))
++      return -1;
++ 
++     /* Sort out the slice range */
++     size = end - start + 1;
++ 
++     if (lo < 0)
++      lo = 0;
++     else if (lo > size)
++      lo = size;
++     if (hi < 0)
++      hi = 0;
++     if (hi < lo)
++      hi = lo;
++     else if (hi > size)
++      hi = size;
++ 
++     if (SetBufferLineList(self->buf, lo + start, hi + start,
++                                                  val, &len_change) == FAIL)
++      return -1;
++ 
++     if (new_end)
+       *new_end = end + len_change;
+  
+      return 0;
+*** ../mercurial/vim73/src/if_python.c 2011-03-26 18:32:00.000000000 +0100
+--- src/if_python.c    2011-06-19 00:02:15.000000000 +0200
+***************
+*** 56,61 ****
+--- 56,65 ----
+  
+  static void init_structs(void);
+  
++ /* No-op conversion functions, use with care! */
++ #define PyString_AsBytes(obj) (obj)
++ #define PyString_FreeBytes(obj)
++ 
+  #if !defined(FEAT_PYTHON) && defined(PROTO)
+  /* Use this to be able to generate prototypes without python being used. */
+  # define PyObject Py_ssize_t
+***************
+*** 129,134 ****
+--- 133,139 ----
+   */
+  # define PyArg_Parse dll_PyArg_Parse
+  # define PyArg_ParseTuple dll_PyArg_ParseTuple
++ # define PyMem_Free dll_PyMem_Free
+  # define PyDict_SetItemString dll_PyDict_SetItemString
+  # define PyErr_BadArgument dll_PyErr_BadArgument
+  # define PyErr_Clear dll_PyErr_Clear
+***************
+*** 189,194 ****
+--- 194,200 ----
+   */
+  static int(*dll_PyArg_Parse)(PyObject *, char *, ...);
+  static int(*dll_PyArg_ParseTuple)(PyObject *, char *, ...);
++ static int(*dll_PyMem_Free)(void *);
+  static int(*dll_PyDict_SetItemString)(PyObject *dp, char *key, PyObject *item);
+  static int(*dll_PyErr_BadArgument)(void);
+  static void(*dll_PyErr_Clear)(void);
+***************
+*** 271,276 ****
+--- 277,283 ----
+  {
+      {"PyArg_Parse", (PYTHON_PROC*)&dll_PyArg_Parse},
+      {"PyArg_ParseTuple", (PYTHON_PROC*)&dll_PyArg_ParseTuple},
++     {"PyMem_Free", (PYTHON_PROC*)&dll_PyMem_Free},
+      {"PyDict_SetItemString", (PYTHON_PROC*)&dll_PyDict_SetItemString},
+      {"PyErr_BadArgument", (PYTHON_PROC*)&dll_PyErr_BadArgument},
+      {"PyErr_Clear", (PYTHON_PROC*)&dll_PyErr_Clear},
+***************
+*** 833,876 ****
+  static PyObject *CurrentGetattr(PyObject *, char *);
+  static int CurrentSetattr(PyObject *, char *, PyObject *);
+  
+- /* Common routines for buffers and line ranges
+-  * -------------------------------------------
+-  */
+- 
+-     static PyInt
+- RBAssSlice(BufferObject *self, PyInt lo, PyInt hi, PyObject *val, PyInt start, PyInt end, PyInt *new_end)
+- {
+-     PyInt size;
+-     PyInt len_change;
+- 
+-     /* Self must be a valid buffer */
+-     if (CheckBuffer(self))
+-      return -1;
+- 
+-     /* Sort out the slice range */
+-     size = end - start + 1;
+- 
+-     if (lo < 0)
+-      lo = 0;
+-     else if (lo > size)
+-      lo = size;
+-     if (hi < 0)
+-      hi = 0;
+-     if (hi < lo)
+-      hi = lo;
+-     else if (hi > size)
+-      hi = size;
+- 
+-     if (SetBufferLineList(self->buf, lo + start, hi + start,
+-                                                  val, &len_change) == FAIL)
+-      return -1;
+- 
+-     if (new_end)
+-      *new_end = end + len_change;
+- 
+-     return 0;
+- }
+- 
+  static PySequenceMethods BufferAsSeq = {
+      (PyInquiry)              BufferLength,       /* sq_length,    len(x)   */
+      (binaryfunc)     0, /* BufferConcat, */       /* sq_concat,    x+y      */
+--- 840,845 ----
+***************
+*** 1038,1044 ****
+      static PyInt
+  BufferAssSlice(PyObject *self, PyInt lo, PyInt hi, PyObject *val)
+  {
+!     return RBAssSlice((BufferObject *)(self), lo, hi, val, 1,
+                     (PyInt)((BufferObject *)(self))->buf->b_ml.ml_line_count,
+                     NULL);
+  }
+--- 1007,1013 ----
+      static PyInt
+  BufferAssSlice(PyObject *self, PyInt lo, PyInt hi, PyObject *val)
+  {
+!     return RBAsSlice((BufferObject *)(self), lo, hi, val, 1,
+                     (PyInt)((BufferObject *)(self))->buf->b_ml.ml_line_count,
+                     NULL);
+  }
+***************
+*** 1088,1094 ****
+      static PyInt
+  RangeAssSlice(PyObject *self, PyInt lo, PyInt hi, PyObject *val)
+  {
+!     return RBAssSlice(((RangeObject *)(self))->buf, lo, hi, val,
+                     ((RangeObject *)(self))->start,
+                     ((RangeObject *)(self))->end,
+                     &((RangeObject *)(self))->end);
+--- 1057,1063 ----
+      static PyInt
+  RangeAssSlice(PyObject *self, PyInt lo, PyInt hi, PyObject *val)
+  {
+!     return RBAsSlice(((RangeObject *)(self))->buf, lo, hi, val,
+                     ((RangeObject *)(self))->start,
+                     ((RangeObject *)(self))->end,
+                     &((RangeObject *)(self))->end);
+***************
+*** 1435,1628 ****
+   * 4. Utility functions for handling the interface between Vim and Python.
+   */
+  
+- /* Replace a range of lines in the specified buffer. The line numbers are in
+-  * Vim format (1-based). The range is from lo up to, but not including, hi.
+-  * The replacement lines are given as a Python list of string objects. The
+-  * list is checked for validity and correct format. Errors are returned as a
+-  * value of FAIL.  The return value is OK on success.
+-  * If OK is returned and len_change is not NULL, *len_change
+-  * is set to the change in the buffer length.
+-  */
+-     static int
+- SetBufferLineList(buf_T *buf, PyInt lo, PyInt hi, PyObject *list, PyInt *len_change)
+- {
+-     /* First of all, we check the thpe of the supplied Python object.
+-      * There are three cases:
+-      *         1. NULL, or None - this is a deletion.
+-      *         2. A list        - this is a replacement.
+-      *         3. Anything else - this is an error.
+-      */
+-     if (list == Py_None || list == NULL)
+-     {
+-      PyInt   i;
+-      PyInt   n = (int)(hi - lo);
+-      buf_T   *savebuf = curbuf;
+- 
+-      PyErr_Clear();
+-      curbuf = buf;
+- 
+-      if (u_savedel((linenr_T)lo, (long)n) == FAIL)
+-          PyErr_SetVim(_("cannot save undo information"));
+-      else
+-      {
+-          for (i = 0; i < n; ++i)
+-          {
+-              if (ml_delete((linenr_T)lo, FALSE) == FAIL)
+-              {
+-                  PyErr_SetVim(_("cannot delete line"));
+-                  break;
+-              }
+-          }
+-          if (buf == curwin->w_buffer)
+-              py_fix_cursor((linenr_T)lo, (linenr_T)hi, (linenr_T)-n);
+-          deleted_lines_mark((linenr_T)lo, (long)i);
+-      }
+- 
+-      curbuf = savebuf;
+- 
+-      if (PyErr_Occurred() || VimErrorCheck())
+-          return FAIL;
+- 
+-      if (len_change)
+-          *len_change = -n;
+- 
+-      return OK;
+-     }
+-     else if (PyList_Check(list))
+-     {
+-      PyInt   i;
+-      PyInt   new_len = PyList_Size(list);
+-      PyInt   old_len = hi - lo;
+-      PyInt   extra = 0;      /* lines added to text, can be negative */
+-      char    **array;
+-      buf_T   *savebuf;
+- 
+-      if (new_len == 0)       /* avoid allocating zero bytes */
+-          array = NULL;
+-      else
+-      {
+-          array = (char **)alloc((unsigned)(new_len * sizeof(char *)));
+-          if (array == NULL)
+-          {
+-              PyErr_NoMemory();
+-              return FAIL;
+-          }
+-      }
+- 
+-      for (i = 0; i < new_len; ++i)
+-      {
+-          PyObject *line = PyList_GetItem(list, i);
+- 
+-          array[i] = StringToLine(line);
+-          if (array[i] == NULL)
+-          {
+-              while (i)
+-                  vim_free(array[--i]);
+-              vim_free(array);
+-              return FAIL;
+-          }
+-      }
+- 
+-      savebuf = curbuf;
+- 
+-      PyErr_Clear();
+-      curbuf = buf;
+- 
+-      if (u_save((linenr_T)(lo-1), (linenr_T)hi) == FAIL)
+-          PyErr_SetVim(_("cannot save undo information"));
+- 
+-      /* If the size of the range is reducing (ie, new_len < old_len) we
+-       * need to delete some old_len. We do this at the start, by
+-       * repeatedly deleting line "lo".
+-       */
+-      if (!PyErr_Occurred())
+-      {
+-          for (i = 0; i < old_len - new_len; ++i)
+-              if (ml_delete((linenr_T)lo, FALSE) == FAIL)
+-              {
+-                  PyErr_SetVim(_("cannot delete line"));
+-                  break;
+-              }
+-          extra -= i;
+-      }
+- 
+-      /* For as long as possible, replace the existing old_len with the
+-       * new old_len. This is a more efficient operation, as it requires
+-       * less memory allocation and freeing.
+-       */
+-      if (!PyErr_Occurred())
+-      {
+-          for (i = 0; i < old_len && i < new_len; ++i)
+-              if (ml_replace((linenr_T)(lo+i), (char_u *)array[i], FALSE)
+-                                                                    == FAIL)
+-              {
+-                  PyErr_SetVim(_("cannot replace line"));
+-                  break;
+-              }
+-      }
+-      else
+-          i = 0;
+- 
+-      /* Now we may need to insert the remaining new old_len. If we do, we
+-       * must free the strings as we finish with them (we can't pass the
+-       * responsibility to vim in this case).
+-       */
+-      if (!PyErr_Occurred())
+-      {
+-          while (i < new_len)
+-          {
+-              if (ml_append((linenr_T)(lo + i - 1),
+-                                      (char_u *)array[i], 0, FALSE) == FAIL)
+-              {
+-                  PyErr_SetVim(_("cannot insert line"));
+-                  break;
+-              }
+-              vim_free(array[i]);
+-              ++i;
+-              ++extra;
+-          }
+-      }
+- 
+-      /* Free any left-over old_len, as a result of an error */
+-      while (i < new_len)
+-      {
+-          vim_free(array[i]);
+-          ++i;
+-      }
+- 
+-      /* Free the array of old_len. All of its contents have now
+-       * been dealt with (either freed, or the responsibility passed
+-       * to vim.
+-       */
+-      vim_free(array);
+- 
+-      /* Adjust marks. Invalidate any which lie in the
+-       * changed range, and move any in the remainder of the buffer.
+-       */
+-      mark_adjust((linenr_T)lo, (linenr_T)(hi - 1),
+-                                                (long)MAXLNUM, (long)extra);
+-      changed_lines((linenr_T)lo, 0, (linenr_T)hi, (long)extra);
+- 
+-      if (buf == curwin->w_buffer)
+-          py_fix_cursor((linenr_T)lo, (linenr_T)hi, (linenr_T)extra);
+- 
+-      curbuf = savebuf;
+- 
+-      if (PyErr_Occurred() || VimErrorCheck())
+-          return FAIL;
+- 
+-      if (len_change)
+-          *len_change = new_len - old_len;
+- 
+-      return OK;
+-     }
+-     else
+-     {
+-      PyErr_BadArgument();
+-      return FAIL;
+-     }
+- }
+- 
+  /* Convert a Vim line into a Python string.
+   * All internal newlines are replaced by null characters.
+   *
+--- 1404,1409 ----
+*** ../mercurial/vim73/src/if_python3.c        2011-06-12 21:37:06.000000000 +0200
+--- src/if_python3.c   2011-06-19 00:10:42.000000000 +0200
+***************
+*** 70,77 ****
+  
+  #define PyInt Py_ssize_t
+  #define PyString_Check(obj) PyUnicode_Check(obj)
+! #define PyString_AsString(obj) _PyUnicode_AsString(obj)
+! #define PyString_Size(obj) PyUnicode_GET_SIZE(obj)
+  #define PyString_FromString(repr) PyUnicode_FromString(repr)
+  
+  #if defined(DYNAMIC_PYTHON3) || defined(PROTO)
+--- 70,79 ----
+  
+  #define PyInt Py_ssize_t
+  #define PyString_Check(obj) PyUnicode_Check(obj)
+! #define PyString_AsBytes(obj) PyUnicode_AsEncodedString(obj, (char *)p_enc, NULL);
+! #define PyString_FreeBytes(obj) Py_XDECREF(bytes)
+! #define PyString_AsString(obj) PyBytes_AsString(obj)
+! #define PyString_Size(obj) PyBytes_GET_SIZE(bytes)
+  #define PyString_FromString(repr) PyUnicode_FromString(repr)
+  
+  #if defined(DYNAMIC_PYTHON3) || defined(PROTO)
+***************
+*** 99,104 ****
+--- 101,107 ----
+  # define PyArg_Parse py3_PyArg_Parse
+  # undef PyArg_ParseTuple
+  # define PyArg_ParseTuple py3_PyArg_ParseTuple
++ # define PyMem_Free py3_PyMem_Free
+  # define PyDict_SetItemString py3_PyDict_SetItemString
+  # define PyErr_BadArgument py3_PyErr_BadArgument
+  # define PyErr_Clear py3_PyErr_Clear
+***************
+*** 140,147 ****
+--- 143,155 ----
+  # define PyModule_AddObject py3_PyModule_AddObject
+  # define PyImport_AppendInittab py3_PyImport_AppendInittab
+  # define _PyUnicode_AsString py3__PyUnicode_AsString
++ # undef PyUnicode_AsEncodedString
++ # define PyUnicode_AsEncodedString py3_PyUnicode_AsEncodedString
++ # undef PyBytes_AsString
++ # define PyBytes_AsString py3_PyBytes_AsString
+  # define PyObject_GenericGetAttr py3_PyObject_GenericGetAttr
+  # define PySlice_Type (*py3_PySlice_Type)
++ # define PyErr_NewException py3_PyErr_NewException
+  # ifdef Py_DEBUG
+  #  define _Py_NegativeRefcount py3__Py_NegativeRefcount
+  #  define _Py_RefTotal (*py3__Py_RefTotal)
+***************
+*** 157,164 ****
+  # define PyModule_Create2 py3_PyModule_Create2
+  # undef PyUnicode_FromString
+  # define PyUnicode_FromString py3_PyUnicode_FromString
+! # undef PyUnicode_FromStringAndSize
+! # define PyUnicode_FromStringAndSize py3_PyUnicode_FromStringAndSize
+  
+  # ifdef Py_DEBUG
+  #  undef PyObject_NEW
+--- 165,172 ----
+  # define PyModule_Create2 py3_PyModule_Create2
+  # undef PyUnicode_FromString
+  # define PyUnicode_FromString py3_PyUnicode_FromString
+! # undef PyUnicode_Decode
+! # define PyUnicode_Decode py3_PyUnicode_Decode
+  
+  # ifdef Py_DEBUG
+  #  undef PyObject_NEW
+***************
+*** 199,205 ****
+  static int (*py3_PyType_Ready)(PyTypeObject *type);
+  static int (*py3_PyDict_SetItemString)(PyObject *dp, char *key, PyObject *item);
+  static PyObject* (*py3_PyUnicode_FromString)(const char *u);
+! static PyObject* (*py3_PyUnicode_FromStringAndSize)(const char *u, Py_ssize_t size);
+  static long (*py3_PyLong_AsLong)(PyObject *);
+  static void (*py3_PyErr_SetNone)(PyObject *);
+  static void (*py3_PyEval_InitThreads)(void);
+--- 207,214 ----
+  static int (*py3_PyType_Ready)(PyTypeObject *type);
+  static int (*py3_PyDict_SetItemString)(PyObject *dp, char *key, PyObject *item);
+  static PyObject* (*py3_PyUnicode_FromString)(const char *u);
+! static PyObject* (*py3_PyUnicode_Decode)(const char *u, Py_ssize_t size,
+!      const char *encoding, const char *errors);
+  static long (*py3_PyLong_AsLong)(PyObject *);
+  static void (*py3_PyErr_SetNone)(PyObject *);
+  static void (*py3_PyEval_InitThreads)(void);
+***************
+*** 207,212 ****
+--- 216,222 ----
+  static PyThreadState*(*py3_PyEval_SaveThread)(void);
+  static int (*py3_PyArg_Parse)(PyObject *, char *, ...);
+  static int (*py3_PyArg_ParseTuple)(PyObject *, char *, ...);
++ static int (*py3_PyMem_Free)(void *);
+  static int (*py3_Py_IsInitialized)(void);
+  static void (*py3_PyErr_Clear)(void);
+  static PyObject*(*py3__PyObject_Init)(PyObject *, PyTypeObject *);
+***************
+*** 214,224 ****
+--- 224,237 ----
+  static int (*py3_PyModule_AddObject)(PyObject *m, const char *name, PyObject *o);
+  static int (*py3_PyImport_AppendInittab)(const char *name, PyObject* (*initfunc)(void));
+  static char* (*py3__PyUnicode_AsString)(PyObject *unicode);
++ static PyObject* (*py3_PyUnicode_AsEncodedString)(PyObject *unicode, const char* encoding, const char* errors);
++ static char* (*py3_PyBytes_AsString)(PyObject *bytes);
+  static PyObject* (*py3_PyObject_GenericGetAttr)(PyObject *obj, PyObject *name);
+  static PyObject* (*py3_PyModule_Create2)(struct PyModuleDef* module, int module_api_version);
+  static PyObject* (*py3_PyType_GenericAlloc)(PyTypeObject *type, Py_ssize_t nitems);
+  static PyObject* (*py3_PyType_GenericNew)(PyTypeObject *type, PyObject *args, PyObject *kwds);
+  static PyTypeObject* py3_PySlice_Type;
++ static PyObject* (*py3_PyErr_NewException)(char *name, PyObject *base, PyObject *dict);
+  # ifdef Py_DEBUG
+      static void (*py3__Py_NegativeRefcount)(const char *fname, int lineno, PyObject *op);
+      static Py_ssize_t* py3__Py_RefTotal;
+***************
+*** 259,264 ****
+--- 272,278 ----
+      {"Py_SetPythonHome", (PYTHON_PROC*)&py3_Py_SetPythonHome},
+      {"Py_Initialize", (PYTHON_PROC*)&py3_Py_Initialize},
+      {"PyArg_ParseTuple", (PYTHON_PROC*)&py3_PyArg_ParseTuple},
++     {"PyMem_Free", (PYTHON_PROC*)&py3_PyMem_Free},
+      {"PyList_New", (PYTHON_PROC*)&py3_PyList_New},
+      {"PyGILState_Ensure", (PYTHON_PROC*)&py3_PyGILState_Ensure},
+      {"PyGILState_Release", (PYTHON_PROC*)&py3_PyGILState_Release},
+***************
+*** 289,295 ****
+      {"PyEval_RestoreThread", (PYTHON_PROC*)&py3_PyEval_RestoreThread},
+      {"PyEval_SaveThread", (PYTHON_PROC*)&py3_PyEval_SaveThread},
+      {"PyArg_Parse", (PYTHON_PROC*)&py3_PyArg_Parse},
+-     {"PyArg_ParseTuple", (PYTHON_PROC*)&py3_PyArg_ParseTuple},
+      {"Py_IsInitialized", (PYTHON_PROC*)&py3_Py_IsInitialized},
+      {"_Py_NoneStruct", (PYTHON_PROC*)&py3__Py_NoneStruct},
+      {"PyErr_Clear", (PYTHON_PROC*)&py3_PyErr_Clear},
+--- 303,308 ----
+***************
+*** 297,307 ****
+--- 310,322 ----
+      {"PyModule_AddObject", (PYTHON_PROC*)&py3_PyModule_AddObject},
+      {"PyImport_AppendInittab", (PYTHON_PROC*)&py3_PyImport_AppendInittab},
+      {"_PyUnicode_AsString", (PYTHON_PROC*)&py3__PyUnicode_AsString},
++     {"PyBytes_AsString", (PYTHON_PROC*)&py3_PyBytes_AsString},
+      {"PyObject_GenericGetAttr", (PYTHON_PROC*)&py3_PyObject_GenericGetAttr},
+      {"PyModule_Create2", (PYTHON_PROC*)&py3_PyModule_Create2},
+      {"PyType_GenericAlloc", (PYTHON_PROC*)&py3_PyType_GenericAlloc},
+      {"PyType_GenericNew", (PYTHON_PROC*)&py3_PyType_GenericNew},
+      {"PySlice_Type", (PYTHON_PROC*)&py3_PySlice_Type},
++     {"PyErr_NewException", (PYTHON_PROC*)&py3_PyErr_NewException},
+  # ifdef Py_DEBUG
+      {"_Py_NegativeRefcount", (PYTHON_PROC*)&py3__Py_NegativeRefcount},
+      {"_Py_RefTotal", (PYTHON_PROC*)&py3__Py_RefTotal},
+***************
+*** 337,343 ****
+  py3_runtime_link_init(char *libname, int verbose)
+  {
+      int i;
+!     void *ucs_from_string, *ucs_from_string_and_size;
+  
+  # if !(defined(PY_NO_RTLD_GLOBAL) && defined(PY3_NO_RTLD_GLOBAL)) && defined(UNIX) && defined(FEAT_PYTHON)
+      /* Can't have Python and Python3 loaded at the same time.
+--- 352,358 ----
+  py3_runtime_link_init(char *libname, int verbose)
+  {
+      int i;
+!     void *ucs_from_string, *ucs_decode, *ucs_as_encoded_string;
+  
+  # if !(defined(PY_NO_RTLD_GLOBAL) && defined(PY3_NO_RTLD_GLOBAL)) && defined(UNIX) && defined(FEAT_PYTHON)
+      /* Can't have Python and Python3 loaded at the same time.
+***************
+*** 377,395 ****
+      /* Load unicode functions separately as only the ucs2 or the ucs4 functions
+       * will be present in the library. */
+      ucs_from_string = symbol_from_dll(hinstPy3, "PyUnicodeUCS2_FromString");
+!     ucs_from_string_and_size = symbol_from_dll(hinstPy3,
+!          "PyUnicodeUCS2_FromStringAndSize");
+!     if (!ucs_from_string || !ucs_from_string_and_size)
+      {
+       ucs_from_string = symbol_from_dll(hinstPy3,
+               "PyUnicodeUCS4_FromString");
+!      ucs_from_string_and_size = symbol_from_dll(hinstPy3,
+!              "PyUnicodeUCS4_FromStringAndSize");
+      }
+!     if (ucs_from_string && ucs_from_string_and_size)
+      {
+       py3_PyUnicode_FromString = ucs_from_string;
+!      py3_PyUnicode_FromStringAndSize = ucs_from_string_and_size;
+      }
+      else
+      {
+--- 392,415 ----
+      /* Load unicode functions separately as only the ucs2 or the ucs4 functions
+       * will be present in the library. */
+      ucs_from_string = symbol_from_dll(hinstPy3, "PyUnicodeUCS2_FromString");
+!     ucs_decode = symbol_from_dll(hinstPy3,
+!          "PyUnicodeUCS2_Decode");
+!     ucs_as_encoded_string = symbol_from_dll(hinstPy3,
+!          "PyUnicodeUCS2_AsEncodedString");
+!     if (!ucs_from_string || !ucs_decode || !ucs_as_encoded_string)
+      {
+       ucs_from_string = symbol_from_dll(hinstPy3,
+               "PyUnicodeUCS4_FromString");
+!      ucs_decode = symbol_from_dll(hinstPy3,
+!              "PyUnicodeUCS4_Decode");
+!      ucs_as_encoded_string = symbol_from_dll(hinstPy3,
+!              "PyUnicodeUCS4_AsEncodedString");
+      }
+!     if (ucs_from_string && ucs_decode && ucs_as_encoded_string)
+      {
+       py3_PyUnicode_FromString = ucs_from_string;
+!      py3_PyUnicode_Decode = ucs_decode;
+!      py3_PyUnicode_AsEncodedString = ucs_as_encoded_string;
+      }
+      else
+      {
+***************
+*** 567,574 ****
+       /* Remove the element from sys.path that was added because of our
+        * argv[0] value in Py3Init_vim().  Previously we used an empty
+        * string, but dependinding on the OS we then get an empty entry or
+!       * the current directory in sys.path. */
+!      PyRun_SimpleString("import sys; sys.path = list(filter(lambda x: x != '/must>not&exist', sys.path))");
+  
+       // lock is created and acquired in PyEval_InitThreads() and thread
+       // state is created in Py_Initialize()
+--- 587,597 ----
+       /* Remove the element from sys.path that was added because of our
+        * argv[0] value in Py3Init_vim().  Previously we used an empty
+        * string, but dependinding on the OS we then get an empty entry or
+!       * the current directory in sys.path.
+!       * Only after vim has been imported, the element does exist in
+!       * sys.path.
+!       */
+!      PyRun_SimpleString("import vim; import sys; sys.path = list(filter(lambda x: not x.endswith('must>not&exist'), sys.path))");
+  
+       // lock is created and acquired in PyEval_InitThreads() and thread
+       // state is created in Py_Initialize()
+***************
+*** 605,610 ****
+--- 628,635 ----
+  #if defined(HAVE_LOCALE_H) || defined(X_LOCALE)
+      char             *saved_locale;
+  #endif
++     PyObject         *cmdstr;
++     PyObject         *cmdbytes;
+  
+  #if defined(MACOS) && !defined(MACOS_X_UNIX)
+      GetPort(&oldPort);
+***************
+*** 634,640 ****
+  
+      pygilstate = PyGILState_Ensure();
+  
+!     PyRun_SimpleString((char *)(cmd));
+  
+      PyGILState_Release(pygilstate);
+  
+--- 659,671 ----
+  
+      pygilstate = PyGILState_Ensure();
+  
+!     /* PyRun_SimpleString expects a UTF-8 string. Wrong encoding may cause
+!      * SyntaxError (unicode error). */
+!     cmdstr = PyUnicode_Decode(cmd, strlen(cmd), (char *)p_enc, NULL);
+!     cmdbytes = PyUnicode_AsEncodedString(cmdstr, "utf-8", NULL);
+!     Py_XDECREF(cmdstr);
+!     PyRun_SimpleString(PyBytes_AsString(cmdbytes));
+!     Py_XDECREF(cmdbytes);
+  
+      PyGILState_Release(pygilstate);
+  
+***************
+*** 693,699 ****
+       * different options under Windows, meaning that stdio pointers aren't
+       * compatible between the two. Yuk.
+       *
+!      * construct: exec(compile(open('a_filename').read(), 'a_filename', 'exec'))
+       *
+       * We need to escape any backslashes or single quotes in the file name, so that
+       * Python won't mangle the file name.
+--- 724,733 ----
+       * different options under Windows, meaning that stdio pointers aren't
+       * compatible between the two. Yuk.
+       *
+!      * construct: exec(compile(open('a_filename', 'rb').read(), 'a_filename', 'exec'))
+!      *
+!      * Using bytes so that Python can detect the source encoding as it normally
+!      * does. The doc does not say "compile" accept bytes, though.
+       *
+       * We need to escape any backslashes or single quotes in the file name, so that
+       * Python won't mangle the file name.
+***************
+*** 716,723 ****
+           return;
+       if (i==0)
+       {
+!          strcpy(p,"').read(),'");
+!          p += 11;
+       }
+       else
+       {
+--- 750,757 ----
+           return;
+       if (i==0)
+       {
+!          strcpy(p,"','rb').read(),'");
+!          p += 16;
+       }
+       else
+       {
+***************
+*** 812,819 ****
+  
+  static Py_ssize_t BufferLength(PyObject *);
+  static PyObject *BufferItem(PyObject *, Py_ssize_t);
+- static Py_ssize_t BufferAsItem(PyObject *, Py_ssize_t, PyObject *);
+  static PyObject* BufferSubscript(PyObject *self, PyObject* idx);
+  
+  
+  /* Line range type - Implementation functions
+--- 846,853 ----
+  
+  static Py_ssize_t BufferLength(PyObject *);
+  static PyObject *BufferItem(PyObject *, Py_ssize_t);
+  static PyObject* BufferSubscript(PyObject *self, PyObject* idx);
++ static Py_ssize_t BufferAsSubscript(PyObject *self, PyObject* idx, PyObject* val);
+  
+  
+  /* Line range type - Implementation functions
+***************
+*** 835,841 ****
+      (ssizeargfunc)   0,                  /* sq_repeat,    x*n      */
+      (ssizeargfunc)   BufferItem,         /* sq_item,      x[i]     */
+      0,                                           /* was_sq_slice,     x[i:j]   */
+!     (ssizeobjargproc)        BufferAsItem,       /* sq_ass_item,  x[i]=v   */
+      0,                                           /* sq_ass_slice, x[i:j]=v */
+      0,                                           /* sq_contains */
+      0,                                           /* sq_inplace_concat */
+--- 869,875 ----
+      (ssizeargfunc)   0,                  /* sq_repeat,    x*n      */
+      (ssizeargfunc)   BufferItem,         /* sq_item,      x[i]     */
+      0,                                           /* was_sq_slice,     x[i:j]   */
+!     0,                                           /* sq_ass_item,  x[i]=v   */
+      0,                                           /* sq_ass_slice, x[i:j]=v */
+      0,                                           /* sq_contains */
+      0,                                           /* sq_inplace_concat */
+***************
+*** 845,851 ****
+  PyMappingMethods BufferAsMapping = {
+      /* mp_length     */ (lenfunc)BufferLength,
+      /* mp_subscript     */ (binaryfunc)BufferSubscript,
+!     /* mp_ass_subscript */ (objobjargproc)0,
+  };
+  
+  
+--- 879,885 ----
+  PyMappingMethods BufferAsMapping = {
+      /* mp_length     */ (lenfunc)BufferLength,
+      /* mp_subscript     */ (binaryfunc)BufferSubscript,
+!     /* mp_ass_subscript */ (objobjargproc)BufferAsSubscript,
+  };
+  
+  
+***************
+*** 897,902 ****
+--- 931,938 ----
+  
+      if (this->buf && this->buf != INVALID_BUFFER_VALUE)
+       this->buf->b_python3_ref = NULL;
++ 
++     Py_TYPE(self)->tp_free((PyObject*)self);
+  }
+  
+      static PyObject *
+***************
+*** 975,989 ****
+              (Py_ssize_t)((BufferObject *)(self))->buf->b_ml.ml_line_count);
+  }
+  
+-     static Py_ssize_t
+- BufferAsItem(PyObject *self, Py_ssize_t n, PyObject *val)
+- {
+-     return RBAsItem((BufferObject *)(self), n, val, 1,
+-              (Py_ssize_t)((BufferObject *)(self))->buf->b_ml.ml_line_count,
+-              NULL);
+- }
+- 
+- 
+      static PyObject *
+  BufferSubscript(PyObject *self, PyObject* idx)
+  {
+--- 1011,1016 ----
+***************
+*** 999,1011 ****
+             &step, &slicelen) < 0) {
+           return NULL;
+       }
+!      return BufferSlice(self,start,stop+1);
+      } else {
+       PyErr_SetString(PyExc_IndexError, "Index must be int or slice");
+       return NULL;
+      }
+  }
+  
+  static PySequenceMethods RangeAsSeq = {
+      (lenfunc)                RangeLength,     /* sq_length,    len(x)   */
+      (binaryfunc)     0,               /* RangeConcat, sq_concat,  x+y   */
+--- 1026,1064 ----
+             &step, &slicelen) < 0) {
+           return NULL;
+       }
+!      return BufferSlice(self,start,stop);
+      } else {
+       PyErr_SetString(PyExc_IndexError, "Index must be int or slice");
+       return NULL;
+      }
+  }
+  
++     static Py_ssize_t
++ BufferAsSubscript(PyObject *self, PyObject* idx, PyObject* val)
++ {
++     if (PyLong_Check(idx)) {
++      long n = PyLong_AsLong(idx);
++      return RBAsItem((BufferObject *)(self), n, val, 1,
++                  (Py_ssize_t)((BufferObject *)(self))->buf->b_ml.ml_line_count,
++                  NULL);
++     } else if (PySlice_Check(idx)) {
++      Py_ssize_t start, stop, step, slicelen;
++ 
++      if (PySlice_GetIndicesEx((PySliceObject *)idx,
++            (Py_ssize_t)((BufferObject *)(self))->buf->b_ml.ml_line_count+1,
++            &start, &stop,
++            &step, &slicelen) < 0) {
++          return -1;
++      }
++      return RBAsSlice((BufferObject *)(self), start, stop, val, 1,
++                        (PyInt)((BufferObject *)(self))->buf->b_ml.ml_line_count,
++                        NULL);
++     } else {
++      PyErr_SetString(PyExc_IndexError, "Index must be int or slice");
++      return -1;
++     }
++ }
++ 
+  static PySequenceMethods RangeAsSeq = {
+      (lenfunc)                RangeLength,     /* sq_length,    len(x)   */
+      (binaryfunc)     0,               /* RangeConcat, sq_concat,  x+y   */
+***************
+*** 1032,1037 ****
+--- 1085,1091 ----
+  RangeDestructor(PyObject *self)
+  {
+      Py_DECREF(((RangeObject *)(self))->buf);
++     Py_TYPE(self)->tp_free((PyObject*)self);
+  }
+  
+      static PyObject *
+***************
+*** 1159,1164 ****
+--- 1213,1220 ----
+  
+      if (this->win && this->win != INVALID_WINDOW_VALUE)
+       this->win->w_python3_ref = NULL;
++ 
++     Py_TYPE(self)->tp_free((PyObject*)self);
+  }
+  
+      static PyObject *
+***************
+*** 1350,1357 ****
+      PySys_SetArgv(1, argv);
+  
+      mod = PyModule_Create(&vimmodule);
+  
+!     VimError = Py_BuildValue("s", "vim.error");
+  
+      PyModule_AddObject(mod, "error", VimError);
+      Py_INCREF((PyObject *)(void *)&TheBufferList);
+--- 1406,1416 ----
+      PySys_SetArgv(1, argv);
+  
+      mod = PyModule_Create(&vimmodule);
++     if (mod == NULL)
++      return NULL;
+  
+!     VimError = PyErr_NewException("vim.error", NULL, NULL);
+!     Py_INCREF(VimError);
+  
+      PyModule_AddObject(mod, "error", VimError);
+      Py_INCREF((PyObject *)(void *)&TheBufferList);
+***************
+*** 1404,1410 ****
+      }
+      *p = '\0';
+  
+!     result = PyUnicode_FromStringAndSize(tmp, len);
+  
+      vim_free(tmp);
+      return result;
+--- 1463,1469 ----
+      }
+      *p = '\0';
+  
+!     result = PyUnicode_Decode(tmp, len, (char *)p_enc, NULL);
+  
+      vim_free(tmp);
+      return result;
+*** ../vim-7.3.219/src/version.c       2011-06-13 02:03:55.000000000 +0200
+--- src/version.c      2011-06-19 00:25:38.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     220,
+  /**/
+
+-- 
+I'm in shape.  Round IS a shape.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.221.patch0 b/vim/patches/vim-7.3.221.patch0
new file mode 100644 (file)
index 0000000..7211a4a
--- /dev/null
@@ -0,0 +1,287 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.221
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.221
+Problem:    Text from the clipboard is sometimes handled as linewise, but not
+            consistently.
+Solution:   Assume the text is linewise when it ends in a CR or NL.
+Files:      src/gui_gtk_x11.c, src/gui_mac.c, src/ops.c, src/os_msdos.c,
+            src/os_mswin.c, src/os_qnx.c, src/ui.c
+
+
+*** ../mercurial/vim73/src/gui_gtk_x11.c       2011-02-25 17:10:22.000000000 +0100
+--- src/gui_gtk_x11.c  2011-06-19 00:58:31.000000000 +0200
+***************
+*** 1173,1179 ****
+      char_u       *tmpbuf = NULL;
+      guchar       *tmpbuf_utf8 = NULL;
+      int                  len;
+!     int                  motion_type;
+  
+      if (data->selection == clip_plus.gtk_sel_atom)
+       cbd = &clip_plus;
+--- 1173,1179 ----
+      char_u       *tmpbuf = NULL;
+      guchar       *tmpbuf_utf8 = NULL;
+      int                  len;
+!     int                  motion_type = MAUTO;
+  
+      if (data->selection == clip_plus.gtk_sel_atom)
+       cbd = &clip_plus;
+***************
+*** 1182,1188 ****
+  
+      text = (char_u *)data->data;
+      len  = data->length;
+-     motion_type = MCHAR;
+  
+      if (text == NULL || len <= 0)
+      {
+--- 1182,1187 ----
+*** ../mercurial/vim73/src/gui_mac.c   2011-06-12 20:33:30.000000000 +0200
+--- src/gui_mac.c      2011-06-19 00:59:07.000000000 +0200
+***************
+*** 4671,4677 ****
+      if (flavor)
+       type = **textOfClip;
+      else
+!      type = (strchr(*textOfClip, '\r') != NULL) ? MLINE : MCHAR;
+  
+      tempclip = lalloc(scrapSize + 1, TRUE);
+      mch_memmove(tempclip, *textOfClip + flavor, scrapSize);
+--- 4671,4677 ----
+      if (flavor)
+       type = **textOfClip;
+      else
+!      type = MAUTO;
+  
+      tempclip = lalloc(scrapSize + 1, TRUE);
+      mch_memmove(tempclip, *textOfClip + flavor, scrapSize);
+*** ../mercurial/vim73/src/ops.c       2011-04-01 16:28:33.000000000 +0200
+--- src/ops.c  2011-06-19 00:59:39.000000000 +0200
+***************
+*** 5733,5739 ****
+      }
+  }
+  
+! /* Convert from the GUI selection string into the '*'/'+' register */
+      void
+  clip_yank_selection(type, str, len, cbd)
+      int              type;
+--- 5733,5741 ----
+      }
+  }
+  
+! /*
+!  * Convert from the GUI selection string into the '*'/'+' register.
+!  */
+      void
+  clip_yank_selection(type, str, len, cbd)
+      int              type;
+***************
+*** 6090,6098 ****
+      if (yank_type == MBLOCK)
+       yank_type = MAUTO;
+  #endif
+-     if (yank_type == MAUTO)
+-      yank_type = ((len > 0 && (str[len - 1] == '\n' || str[len - 1] == '\r'))
+-                                                           ? MLINE : MCHAR);
+      str_to_reg(y_current, yank_type, str, len, block_len);
+  
+  # ifdef FEAT_CLIPBOARD
+--- 6092,6097 ----
+***************
+*** 6113,6125 ****
+   * is appended.
+   */
+      static void
+! str_to_reg(y_ptr, type, str, len, blocklen)
+      struct yankreg   *y_ptr;         /* pointer to yank register */
+!     int                      type;           /* MCHAR, MLINE or MBLOCK */
+      char_u           *str;           /* string to put in register */
+      long             len;            /* length of string */
+      long             blocklen;       /* width of Visual block */
+  {
+      int              lnum;
+      long     start;
+      long     i;
+--- 6112,6125 ----
+   * is appended.
+   */
+      static void
+! str_to_reg(y_ptr, yank_type, str, len, blocklen)
+      struct yankreg   *y_ptr;         /* pointer to yank register */
+!     int                      yank_type;      /* MCHAR, MLINE, MBLOCK, MAUTO */
+      char_u           *str;           /* string to put in register */
+      long             len;            /* length of string */
+      long             blocklen;       /* width of Visual block */
+  {
++     int              type;                   /* MCHAR, MLINE or MBLOCK */
+      int              lnum;
+      long     start;
+      long     i;
+***************
+*** 6136,6141 ****
+--- 6136,6147 ----
+      if (y_ptr->y_array == NULL)              /* NULL means empty register */
+       y_ptr->y_size = 0;
+  
++     if (yank_type == MAUTO)
++      type = ((len > 0 && (str[len - 1] == NL || str[len - 1] == CAR))
++                                                           ? MLINE : MCHAR);
++     else
++      type = yank_type;
++ 
+      /*
+       * Count the number of lines within the string
+       */
+*** ../mercurial/vim73/src/os_msdos.c  2010-12-17 18:06:00.000000000 +0100
+--- src/os_msdos.c     2011-06-19 01:00:56.000000000 +0200
+***************
+*** 2232,2238 ****
+      void
+  clip_mch_request_selection(VimClipboard *cbd)
+  {
+!     int              type = MCHAR;
+      char_u   *pAllocated = NULL;
+      char_u   *pClipText = NULL;
+      int              clip_data_format = 0;
+--- 2232,2238 ----
+      void
+  clip_mch_request_selection(VimClipboard *cbd)
+  {
+!     int              type = MAUTO;
+      char_u   *pAllocated = NULL;
+      char_u   *pClipText = NULL;
+      int              clip_data_format = 0;
+***************
+*** 2280,2293 ****
+       {
+           clip_data_format = CF_TEXT;
+           pClipText = pAllocated;
+-          type = (vim_strchr((char*)pClipText, '\r') != NULL) ? MLINE : MCHAR;
+       }
+  
+       else if ((pAllocated = Win16GetClipboardData(CF_OEMTEXT)) != NULL)
+       {
+           clip_data_format = CF_OEMTEXT;
+           pClipText = pAllocated;
+-          type = (vim_strchr((char*)pClipText, '\r') != NULL) ? MLINE : MCHAR;
+       }
+  
+       /* Did we get anything? */
+--- 2280,2291 ----
+*** ../mercurial/vim73/src/os_mswin.c  2011-01-17 20:08:04.000000000 +0100
+--- src/os_mswin.c     2011-06-19 01:01:51.000000000 +0200
+***************
+*** 1410,1418 ****
+      {
+       char_u *temp_clipboard;
+  
+!      /* If the type is not known guess it. */
+       if (metadata.type == -1)
+!          metadata.type = (vim_strchr(str, '\n') == NULL) ? MCHAR : MLINE;
+  
+       /* Translate <CR><NL> into <NL>. */
+       temp_clipboard = crnl_to_nl(str, &str_size);
+--- 1410,1418 ----
+      {
+       char_u *temp_clipboard;
+  
+!      /* If the type is not known detect it. */
+       if (metadata.type == -1)
+!          metadata.type = MAUTO;
+  
+       /* Translate <CR><NL> into <NL>. */
+       temp_clipboard = crnl_to_nl(str, &str_size);
+*** ../mercurial/vim73/src/os_qnx.c    2010-05-15 21:22:11.000000000 +0200
+--- src/os_qnx.c       2011-06-19 01:02:26.000000000 +0200
+***************
+*** 93,99 ****
+           clip_length  = clip_header->length - 1;
+  
+           if( clip_text != NULL && is_type_set == FALSE )
+!              type = (strchr( clip_text, '\r' ) != NULL) ? MLINE : MCHAR;
+       }
+  
+       if( (clip_text != NULL) && (clip_length > 0) )
+--- 93,99 ----
+           clip_length  = clip_header->length - 1;
+  
+           if( clip_text != NULL && is_type_set == FALSE )
+!              type = MAUTO;
+       }
+  
+       if( (clip_text != NULL) && (clip_length > 0) )
+*** ../mercurial/vim73/src/ui.c        2010-09-21 22:09:28.000000000 +0200
+--- src/ui.c   2011-06-19 01:03:31.000000000 +0200
+***************
+*** 1609,1615 ****
+  
+  #if defined(FEAT_HANGULIN) || defined(PROTO)
+      void
+! push_raw_key (s, len)
+      char_u  *s;
+      int          len;
+  {
+--- 1609,1615 ----
+  
+  #if defined(FEAT_HANGULIN) || defined(PROTO)
+      void
+! push_raw_key(s, len)
+      char_u  *s;
+      int          len;
+  {
+***************
+*** 2016,2022 ****
+      long_u   *length;
+      int              *format;
+  {
+!     int              motion_type;
+      long_u   len;
+      char_u   *p;
+      char     **text_list = NULL;
+--- 2016,2022 ----
+      long_u   *length;
+      int              *format;
+  {
+!     int              motion_type = MAUTO;
+      long_u   len;
+      char_u   *p;
+      char     **text_list = NULL;
+***************
+*** 2036,2042 ****
+       *(int *)success = FALSE;
+       return;
+      }
+-     motion_type = MCHAR;
+      p = (char_u *)value;
+      len = *length;
+      if (*type == vim_atom)
+--- 2036,2041 ----
+*** ../vim-7.3.220/src/version.c       2011-06-19 00:27:46.000000000 +0200
+--- src/version.c      2011-06-19 01:03:59.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     221,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+190. You quickly hand over your wallet, leather jacket, and car keys
+     during a mugging, then proceed to beat the crap out of your
+     assailant when he asks for your laptop.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.222.patch0 b/vim/patches/vim-7.3.222.patch0
new file mode 100644 (file)
index 0000000..87151b5
--- /dev/null
@@ -0,0 +1,71 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.22
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.222
+Problem:    Warning for building GvimExt.
+Solution:   Comment-out the DESCRIPTION line. (Mike Williams)
+Files:      src/GvimExt/gvimext.def, src/GvimExt/gvimext_ming.def
+
+
+*** ../mercurial/vim73/src/GvimExt/gvimext.def 2010-05-15 21:22:11.000000000 +0200
+--- src/GvimExt/gvimext.def    2011-06-15 03:50:55.000000000 +0200
+***************
+*** 1,7 ****
+  ;gvimdef.def : Declares the module parameters for the DLL.
+  
+  LIBRARY      gvimext
+! DESCRIPTION  'Vim Shell Extension'
+  
+  EXPORTS
+      DllCanUnloadNow private
+--- 1,7 ----
+  ;gvimdef.def : Declares the module parameters for the DLL.
+  
+  LIBRARY      gvimext
+! ; DESCRIPTION  'Vim Shell Extension'
+  
+  EXPORTS
+      DllCanUnloadNow private
+*** ../mercurial/vim73/src/GvimExt/gvimext_ming.def    2010-05-15 21:22:11.000000000 +0200
+--- src/GvimExt/gvimext_ming.def       2011-06-15 03:51:05.000000000 +0200
+***************
+*** 3,9 ****
+  ;Hence this is the same file as gvimext.def with private removed
+  
+  LIBRARY      gvimext
+! DESCRIPTION  'Vim Shell Extension build with MinGW'
+  
+  EXPORTS
+      DllCanUnloadNow = DllCanUnloadNow@0
+--- 3,9 ----
+  ;Hence this is the same file as gvimext.def with private removed
+  
+  LIBRARY      gvimext
+! ; DESCRIPTION  'Vim Shell Extension build with MinGW'
+  
+  EXPORTS
+      DllCanUnloadNow = DllCanUnloadNow@0
+*** ../vim-7.3.221/src/version.c       2011-06-19 01:14:23.000000000 +0200
+--- src/version.c      2011-06-19 01:26:57.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     222,
+  /**/
+
+-- 
+What is the difference between a professional and an amateur?
+The ark was built by an amateur; professionals gave us the Titanic.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.223.patch0 b/vim/patches/vim-7.3.223.patch0
new file mode 100644 (file)
index 0000000..e151c5b
--- /dev/null
@@ -0,0 +1,387 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.223
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.223
+Problem:    MingW cross compilation doesn't work with tiny features.
+Solution:   Move acp_to_enc(), enc_to_utf16() and utf16_to_enc() outside of
+            "#ifdef CLIPBOARD".  Fix typo in makefile.
+Files:      src/Make_ming.mak, src/os_mswin.c
+
+
+*** ../mercurial/vim73/src/Make_ming.mak       2010-12-30 14:50:46.000000000 +0100
+--- src/Make_ming.mak  2011-06-19 01:20:16.000000000 +0200
+***************
+*** 87,93 ****
+  
+  # If you are using gettext-0.10.35 from http://sourceforge.net/projects/gettext
+  # or gettext-0.10.37 from http://sourceforge.net/projects/mingwrep/
+! # uncomment the following, but I can't build a static versión with them, ?-(|
+  #GETTEXT=c:/gettext-0.10.37-20010430
+  #STATIC_GETTEXT=USE_STATIC_GETTEXT
+  #DYNAMIC_GETTEXT=DYNAMIC_GETTEXT
+--- 87,93 ----
+  
+  # If you are using gettext-0.10.35 from http://sourceforge.net/projects/gettext
+  # or gettext-0.10.37 from http://sourceforge.net/projects/mingwrep/
+! # uncomment the following, but I can't build a static version with them, ?-(|
+  #GETTEXT=c:/gettext-0.10.37-20010430
+  #STATIC_GETTEXT=USE_STATIC_GETTEXT
+  #DYNAMIC_GETTEXT=DYNAMIC_GETTEXT
+*** ../mercurial/vim73/src/os_mswin.c  2011-06-19 01:14:23.000000000 +0200
+--- src/os_mswin.c     2011-06-19 01:25:23.000000000 +0200
+***************
+*** 1105,1236 ****
+      return ret;
+  }
+  
+- #if defined(FEAT_MBYTE) || defined(PROTO)
+- /*
+-  * Note: the following two functions are only guaranteed to work when using
+-  * valid MS-Windows codepages or when iconv() is available.
+-  */
+- 
+- /*
+-  * Convert "str" from 'encoding' to UTF-16.
+-  * Input in "str" with length "*lenp".  When "lenp" is NULL, use strlen().
+-  * Output is returned as an allocated string.  "*lenp" is set to the length of
+-  * the result.  A trailing NUL is always added.
+-  * Returns NULL when out of memory.
+-  */
+-     short_u *
+- enc_to_utf16(char_u *str, int *lenp)
+- {
+-     vimconv_T        conv;
+-     WCHAR    *ret;
+-     char_u   *allocbuf = NULL;
+-     int              len_loc;
+-     int              length;
+- 
+-     if (lenp == NULL)
+-     {
+-      len_loc = (int)STRLEN(str) + 1;
+-      lenp = &len_loc;
+-     }
+- 
+-     if (enc_codepage > 0)
+-     {
+-      /* We can do any CP### -> UTF-16 in one pass, and we can do it
+-       * without iconv() (convert_* may need iconv). */
+-      MultiByteToWideChar_alloc(enc_codepage, 0, str, *lenp, &ret, &length);
+-     }
+-     else
+-     {
+-      /* Use "latin1" by default, we might be called before we have p_enc
+-       * set up.  Convert to utf-8 first, works better with iconv().  Does
+-       * nothing if 'encoding' is "utf-8". */
+-      conv.vc_type = CONV_NONE;
+-      if (convert_setup(&conv, p_enc ? p_enc : (char_u *)"latin1",
+-                                                 (char_u *)"utf-8") == FAIL)
+-          return NULL;
+-      if (conv.vc_type != CONV_NONE)
+-      {
+-          str = allocbuf = string_convert(&conv, str, lenp);
+-          if (str == NULL)
+-              return NULL;
+-      }
+-      convert_setup(&conv, NULL, NULL);
+- 
+-      length = utf8_to_utf16(str, *lenp, NULL, NULL);
+-      ret = (WCHAR *)alloc((unsigned)((length + 1) * sizeof(WCHAR)));
+-      if (ret != NULL)
+-      {
+-          utf8_to_utf16(str, *lenp, (short_u *)ret, NULL);
+-          ret[length] = 0;
+-      }
+- 
+-      vim_free(allocbuf);
+-     }
+- 
+-     *lenp = length;
+-     return (short_u *)ret;
+- }
+- 
+- /*
+-  * Convert an UTF-16 string to 'encoding'.
+-  * Input in "str" with length (counted in wide characters) "*lenp".  When
+-  * "lenp" is NULL, use wcslen().
+-  * Output is returned as an allocated string.  If "*lenp" is not NULL it is
+-  * set to the length of the result.
+-  * Returns NULL when out of memory.
+-  */
+-     char_u *
+- utf16_to_enc(short_u *str, int *lenp)
+- {
+-     vimconv_T        conv;
+-     char_u   *utf8_str = NULL, *enc_str = NULL;
+-     int              len_loc;
+- 
+-     if (lenp == NULL)
+-     {
+-      len_loc = (int)wcslen(str) + 1;
+-      lenp = &len_loc;
+-     }
+- 
+-     if (enc_codepage > 0)
+-     {
+-      /* We can do any UTF-16 -> CP### in one pass. */
+-      int length;
+- 
+-      WideCharToMultiByte_alloc(enc_codepage, 0, str, *lenp,
+-                                          (LPSTR *)&enc_str, &length, 0, 0);
+-      *lenp = length;
+-      return enc_str;
+-     }
+- 
+-     /* Avoid allocating zero bytes, it generates an error message. */
+-     utf8_str = alloc(utf16_to_utf8(str, *lenp == 0 ? 1 : *lenp, NULL));
+-     if (utf8_str != NULL)
+-     {
+-      *lenp = utf16_to_utf8(str, *lenp, utf8_str);
+- 
+-      /* We might be called before we have p_enc set up. */
+-      conv.vc_type = CONV_NONE;
+-      convert_setup(&conv, (char_u *)"utf-8",
+-                                          p_enc? p_enc: (char_u *)"latin1");
+-      if (conv.vc_type == CONV_NONE)
+-      {
+-          /* p_enc is utf-8, so we're done. */
+-          enc_str = utf8_str;
+-      }
+-      else
+-      {
+-          enc_str = string_convert(&conv, utf8_str, lenp);
+-          vim_free(utf8_str);
+-      }
+- 
+-      convert_setup(&conv, NULL, NULL);
+-     }
+- 
+-     return enc_str;
+- }
+- #endif /* FEAT_MBYTE */
+- 
+  /*
+   * Wait for another process to Close the Clipboard.
+   * Returns TRUE for success.
+--- 1105,1110 ----
+***************
+*** 1436,1467 ****
+  #endif
+  }
+  
+- #if (defined(FEAT_MBYTE) && defined(WIN3264)) || defined(PROTO)
+- /*
+-  * Convert from the active codepage to 'encoding'.
+-  * Input is "str[str_size]".
+-  * The result is in allocated memory: "out[outlen]".  With terminating NUL.
+-  */
+-     void
+- acp_to_enc(str, str_size, out, outlen)
+-     char_u   *str;
+-     int              str_size;
+-     char_u   **out;
+-     int              *outlen;
+- 
+- {
+-     LPWSTR   widestr;
+- 
+-     MultiByteToWideChar_alloc(GetACP(), 0, str, str_size, &widestr, outlen);
+-     if (widestr != NULL)
+-     {
+-      ++*outlen;      /* Include the 0 after the string */
+-      *out = utf16_to_enc((short_u *)widestr, outlen);
+-      vim_free(widestr);
+-     }
+- }
+- #endif
+- 
+  /*
+   * Send the current selection to the clipboard.
+   */
+--- 1310,1315 ----
+***************
+*** 1626,1631 ****
+--- 1474,1631 ----
+  
+  #endif /* FEAT_CLIPBOARD */
+  
++ #if defined(FEAT_MBYTE) || defined(PROTO)
++ /*
++  * Note: the following two functions are only guaranteed to work when using
++  * valid MS-Windows codepages or when iconv() is available.
++  */
++ 
++ /*
++  * Convert "str" from 'encoding' to UTF-16.
++  * Input in "str" with length "*lenp".  When "lenp" is NULL, use strlen().
++  * Output is returned as an allocated string.  "*lenp" is set to the length of
++  * the result.  A trailing NUL is always added.
++  * Returns NULL when out of memory.
++  */
++     short_u *
++ enc_to_utf16(char_u *str, int *lenp)
++ {
++     vimconv_T        conv;
++     WCHAR    *ret;
++     char_u   *allocbuf = NULL;
++     int              len_loc;
++     int              length;
++ 
++     if (lenp == NULL)
++     {
++      len_loc = (int)STRLEN(str) + 1;
++      lenp = &len_loc;
++     }
++ 
++     if (enc_codepage > 0)
++     {
++      /* We can do any CP### -> UTF-16 in one pass, and we can do it
++       * without iconv() (convert_* may need iconv). */
++      MultiByteToWideChar_alloc(enc_codepage, 0, str, *lenp, &ret, &length);
++     }
++     else
++     {
++      /* Use "latin1" by default, we might be called before we have p_enc
++       * set up.  Convert to utf-8 first, works better with iconv().  Does
++       * nothing if 'encoding' is "utf-8". */
++      conv.vc_type = CONV_NONE;
++      if (convert_setup(&conv, p_enc ? p_enc : (char_u *)"latin1",
++                                                 (char_u *)"utf-8") == FAIL)
++          return NULL;
++      if (conv.vc_type != CONV_NONE)
++      {
++          str = allocbuf = string_convert(&conv, str, lenp);
++          if (str == NULL)
++              return NULL;
++      }
++      convert_setup(&conv, NULL, NULL);
++ 
++      length = utf8_to_utf16(str, *lenp, NULL, NULL);
++      ret = (WCHAR *)alloc((unsigned)((length + 1) * sizeof(WCHAR)));
++      if (ret != NULL)
++      {
++          utf8_to_utf16(str, *lenp, (short_u *)ret, NULL);
++          ret[length] = 0;
++      }
++ 
++      vim_free(allocbuf);
++     }
++ 
++     *lenp = length;
++     return (short_u *)ret;
++ }
++ 
++ /*
++  * Convert an UTF-16 string to 'encoding'.
++  * Input in "str" with length (counted in wide characters) "*lenp".  When
++  * "lenp" is NULL, use wcslen().
++  * Output is returned as an allocated string.  If "*lenp" is not NULL it is
++  * set to the length of the result.
++  * Returns NULL when out of memory.
++  */
++     char_u *
++ utf16_to_enc(short_u *str, int *lenp)
++ {
++     vimconv_T        conv;
++     char_u   *utf8_str = NULL, *enc_str = NULL;
++     int              len_loc;
++ 
++     if (lenp == NULL)
++     {
++      len_loc = (int)wcslen(str) + 1;
++      lenp = &len_loc;
++     }
++ 
++     if (enc_codepage > 0)
++     {
++      /* We can do any UTF-16 -> CP### in one pass. */
++      int length;
++ 
++      WideCharToMultiByte_alloc(enc_codepage, 0, str, *lenp,
++                                          (LPSTR *)&enc_str, &length, 0, 0);
++      *lenp = length;
++      return enc_str;
++     }
++ 
++     /* Avoid allocating zero bytes, it generates an error message. */
++     utf8_str = alloc(utf16_to_utf8(str, *lenp == 0 ? 1 : *lenp, NULL));
++     if (utf8_str != NULL)
++     {
++      *lenp = utf16_to_utf8(str, *lenp, utf8_str);
++ 
++      /* We might be called before we have p_enc set up. */
++      conv.vc_type = CONV_NONE;
++      convert_setup(&conv, (char_u *)"utf-8",
++                                          p_enc? p_enc: (char_u *)"latin1");
++      if (conv.vc_type == CONV_NONE)
++      {
++          /* p_enc is utf-8, so we're done. */
++          enc_str = utf8_str;
++      }
++      else
++      {
++          enc_str = string_convert(&conv, utf8_str, lenp);
++          vim_free(utf8_str);
++      }
++ 
++      convert_setup(&conv, NULL, NULL);
++     }
++ 
++     return enc_str;
++ }
++ #endif /* FEAT_MBYTE */
++ 
++ #if (defined(FEAT_MBYTE) && defined(WIN3264)) || defined(PROTO)
++ /*
++  * Convert from the active codepage to 'encoding'.
++  * Input is "str[str_size]".
++  * The result is in allocated memory: "out[outlen]".  With terminating NUL.
++  */
++     void
++ acp_to_enc(str, str_size, out, outlen)
++     char_u   *str;
++     int              str_size;
++     char_u   **out;
++     int              *outlen;
++ 
++ {
++     LPWSTR   widestr;
++ 
++     MultiByteToWideChar_alloc(GetACP(), 0, str, str_size, &widestr, outlen);
++     if (widestr != NULL)
++     {
++      ++*outlen;      /* Include the 0 after the string */
++      *out = utf16_to_enc((short_u *)widestr, outlen);
++      vim_free(widestr);
++     }
++ }
++ #endif
++ 
+  
+  /*
+   * Debugging helper: expose the MCH_WRITE_DUMP stuff to other modules
+*** ../vim-7.3.222/src/version.c       2011-06-19 01:27:29.000000000 +0200
+--- src/version.c      2011-06-19 01:28:41.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     223,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+191. You rate eating establishments not by the quality of the food,
+     but by the availability of electrical outlets for your PowerBook.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.224.patch0 b/vim/patches/vim-7.3.224.patch0
new file mode 100644 (file)
index 0000000..1673f47
--- /dev/null
@@ -0,0 +1,162 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.224
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.224
+Problem:    Can't pass dict to sort function.
+Solution:   Add the optional {dict} argument to sort(). (ZyX)
+Files:      runtime/doc/eval.txt, src/eval.c
+
+
+*** ../mercurial/vim73/runtime/doc/eval.txt    2011-05-19 17:25:36.000000000 +0200
+--- runtime/doc/eval.txt       2011-06-19 02:42:52.000000000 +0200
+***************
+*** 1919,1925 ****
+  simplify( {filename})                String  simplify filename as much as possible
+  sin( {expr})                 Float   sine of {expr}
+  sinh( {expr})                        Float   hyperbolic sine of {expr}
+! sort( {list} [, {func}])     List    sort {list}, using {func} to compare
+  soundfold( {word})           String  sound-fold {word}
+  spellbadword()                       String  badly spelled word at cursor
+  spellsuggest( {word} [, {max} [, {capital}]])
+--- 1922,1929 ----
+  simplify( {filename})                String  simplify filename as much as possible
+  sin( {expr})                 Float   sine of {expr}
+  sinh( {expr})                        Float   hyperbolic sine of {expr}
+! sort( {list} [, {func} [, {dict}]])
+!                              List    sort {list}, using {func} to compare
+  soundfold( {word})           String  sound-fold {word}
+  spellbadword()                       String  badly spelled word at cursor
+  spellsuggest( {word} [, {max} [, {capital}]])
+***************
+*** 5275,5281 ****
+               {only available when compiled with the |+float| feature}
+  
+  
+! sort({list} [, {func}])                                      *sort()* *E702*
+               Sort the items in {list} in-place.  Returns {list}.  If you
+               want a list to remain unmodified make a copy first: >
+                       :let sortedlist = sort(copy(mylist))
+--- 5279,5285 ----
+               {only available when compiled with the |+float| feature}
+  
+  
+! sort({list} [, {func} [, {dict}]])                   *sort()* *E702*
+               Sort the items in {list} in-place.  Returns {list}.  If you
+               want a list to remain unmodified make a copy first: >
+                       :let sortedlist = sort(copy(mylist))
+***************
+*** 5283,5288 ****
+--- 5287,5294 ----
+               Numbers sort after Strings, |Lists| after Numbers.
+               For sorting text in the current buffer use |:sort|.
+               When {func} is given and it is one then case is ignored.
++              {dict} is for functions with the "dict" attribute.  It will be
++              used to set the local variable "self". |Dictionary-function|
+               When {func} is a |Funcref| or a function name, this function
+               is called to compare items.  The function is invoked with two
+               items as argument and must return zero if they are equal, 1 or
+*** ../mercurial/vim73/src/eval.c      2011-05-19 18:26:34.000000000 +0200
+--- src/eval.c 2011-06-19 02:51:13.000000000 +0200
+***************
+*** 7930,7936 ****
+      {"sin",          1, 1, f_sin},
+      {"sinh",         1, 1, f_sinh},
+  #endif
+!     {"sort",         1, 2, f_sort},
+      {"soundfold",    1, 1, f_soundfold},
+      {"spellbadword", 0, 1, f_spellbadword},
+      {"spellsuggest", 1, 3, f_spellsuggest},
+--- 7930,7936 ----
+      {"sin",          1, 1, f_sin},
+      {"sinh",         1, 1, f_sinh},
+  #endif
+!     {"sort",         1, 3, f_sort},
+      {"soundfold",    1, 1, f_soundfold},
+      {"spellbadword", 0, 1, f_spellbadword},
+      {"spellsuggest", 1, 3, f_spellsuggest},
+***************
+*** 16366,16371 ****
+--- 16366,16372 ----
+  
+  static int   item_compare_ic;
+  static char_u        *item_compare_func;
++ static dict_T        *item_compare_selfdict;
+  static int   item_compare_func_err;
+  #define ITEM_COMPARE_FAIL 999
+  
+***************
+*** 16425,16431 ****
+  
+      rettv.v_type = VAR_UNKNOWN;              /* clear_tv() uses this */
+      res = call_func(item_compare_func, (int)STRLEN(item_compare_func),
+!                               &rettv, 2, argv, 0L, 0L, &dummy, TRUE, NULL);
+      clear_tv(&argv[0]);
+      clear_tv(&argv[1]);
+  
+--- 16426,16433 ----
+  
+      rettv.v_type = VAR_UNKNOWN;              /* clear_tv() uses this */
+      res = call_func(item_compare_func, (int)STRLEN(item_compare_func),
+!                               &rettv, 2, argv, 0L, 0L, &dummy, TRUE,
+!                               item_compare_selfdict);
+      clear_tv(&argv[0]);
+      clear_tv(&argv[1]);
+  
+***************
+*** 16471,16478 ****
+--- 16473,16482 ----
+  
+       item_compare_ic = FALSE;
+       item_compare_func = NULL;
++      item_compare_selfdict = NULL;
+       if (argvars[1].v_type != VAR_UNKNOWN)
+       {
++          /* optional second argument: {func} */
+           if (argvars[1].v_type == VAR_FUNC)
+               item_compare_func = argvars[1].vval.v_string;
+           else
+***************
+*** 16487,16492 ****
+--- 16491,16507 ----
+               else
+                   item_compare_func = get_tv_string(&argvars[1]);
+           }
++ 
++          if (argvars[2].v_type != VAR_UNKNOWN)
++          {
++              /* optional third argument: {dict} */
++              if (argvars[2].v_type != VAR_DICT)
++              {
++                  EMSG(_(e_dictreq));
++                  return;
++              }
++              item_compare_selfdict = argvars[2].vval.v_dict;
++          }
+       }
+  
+       /* Make an array with each entry pointing to an item in the List. */
+*** ../vim-7.3.223/src/version.c       2011-06-19 01:30:01.000000000 +0200
+--- src/version.c      2011-06-19 02:52:46.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     224,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+193. You ask your girlfriend to drive home so you can sit back with
+     your PDA and download the information to your laptop
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.225.patch0 b/vim/patches/vim-7.3.225.patch0
new file mode 100644 (file)
index 0000000..5a32b9a
Binary files /dev/null and b/vim/patches/vim-7.3.225.patch0 differ
diff --git a/vim/patches/vim-7.3.226.patch0 b/vim/patches/vim-7.3.226.patch0
new file mode 100644 (file)
index 0000000..0002aa7
--- /dev/null
@@ -0,0 +1,58 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.226
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.226
+Problem:    On a 64 bit system "syn sync fromstart" is very slow.  (Bjorn
+            Steinbrink)
+Solution:   Store the state when starting to parse from the first line.
+Files:      src/syntax.c
+
+
+*** ../mercurial/vim73/src/syntax.c    2011-05-25 17:56:23.000000000 +0200
+--- src/syntax.c       2011-06-19 04:47:08.000000000 +0200
+***************
+*** 559,565 ****
+      if (INVALID_STATE(&current_state))
+      {
+       syn_sync(wp, lnum, last_valid);
+!      first_stored = current_lnum + syn_block->b_syn_sync_minlines;
+      }
+      else
+       first_stored = current_lnum;
+--- 559,571 ----
+      if (INVALID_STATE(&current_state))
+      {
+       syn_sync(wp, lnum, last_valid);
+!      if (current_lnum == 1)
+!          /* First line is always valid, no matter "minlines". */
+!          first_stored = 1;
+!      else
+!          /* Need to parse "minlines" lines before state can be considered
+!           * valid to store. */
+!          first_stored = current_lnum + syn_block->b_syn_sync_minlines;
+      }
+      else
+       first_stored = current_lnum;
+*** ../vim-7.3.225/src/version.c       2011-06-19 04:31:54.000000000 +0200
+--- src/version.c      2011-06-19 04:49:53.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     226,
+  /**/
+
+-- 
+Press any key to continue, press any other key to quit.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.227.patch0 b/vim/patches/vim-7.3.227.patch0
new file mode 100644 (file)
index 0000000..55d5a9c
--- /dev/null
@@ -0,0 +1,109 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.227
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.227 (after 7.3.221)
+Problem:    Mac OS doesn't have the linewise clipboard fix.
+Solution:   Also change the Mac OS file. (Bjorn Winckler)
+Files:      src/os_macosx.m
+
+
+*** ../mercurial/vim73/src/os_macosx.m 2011-06-13 02:03:55.000000000 +0200
+--- src/os_macosx.m    2011-06-20 00:23:57.000000000 +0200
+***************
+*** 65,71 ****
+      NSString *bestType = [pb availableTypeFromArray:supportedTypes];
+      if (!bestType) goto releasepool;
+  
+!     int motion_type = MCHAR;
+      NSString *string = nil;
+  
+      if ([bestType isEqual:VimPboardType])
+--- 65,71 ----
+      NSString *bestType = [pb availableTypeFromArray:supportedTypes];
+      if (!bestType) goto releasepool;
+  
+!     int motion_type = MAUTO;
+      NSString *string = nil;
+  
+      if ([bestType isEqual:VimPboardType])
+***************
+*** 89,97 ****
+  
+      if (!string)
+      {
+!      /* Use NSStringPboardType.  The motion type is set to line-wise if the
+!       * string contains at least one EOL character, otherwise it is set to
+!       * character-wise (block-wise is never used).
+        */
+       NSMutableString *mstring =
+               [[pb stringForType:NSStringPboardType] mutableCopy];
+--- 89,95 ----
+  
+      if (!string)
+      {
+!      /* Use NSStringPboardType.  The motion type is detected automatically.
+        */
+       NSMutableString *mstring =
+               [[pb stringForType:NSStringPboardType] mutableCopy];
+***************
+*** 108,126 ****
+                                          options:0 range:range];
+       }
+  
+-      /* Scan for newline character to decide whether the string should be
+-       * pasted line-wise or character-wise.
+-       */
+-      motion_type = MCHAR;
+-      if (0 < n || NSNotFound != [mstring rangeOfString:@"\n"].location)
+-          motion_type = MLINE;
+- 
+       string = mstring;
+      }
+  
+      if (!(MCHAR == motion_type || MLINE == motion_type || MBLOCK == motion_type
+           || MAUTO == motion_type))
+!      motion_type = MCHAR;
+  
+      char_u *str = (char_u*)[string UTF8String];
+      int len = [string lengthOfBytesUsingEncoding:NSUTF8StringEncoding];
+--- 106,118 ----
+                                          options:0 range:range];
+       }
+  
+       string = mstring;
+      }
+  
++     /* Default to MAUTO, uses MCHAR or MLINE depending on trailing NL. */
+      if (!(MCHAR == motion_type || MLINE == motion_type || MBLOCK == motion_type
+           || MAUTO == motion_type))
+!      motion_type = MAUTO;
+  
+      char_u *str = (char_u*)[string UTF8String];
+      int len = [string lengthOfBytesUsingEncoding:NSUTF8StringEncoding];
+*** ../vim-7.3.226/src/version.c       2011-06-19 04:54:17.000000000 +0200
+--- src/version.c      2011-06-20 00:21:53.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     227,
+  /**/
+
+-- 
+Some of the well know MS-Windows errors:
+       EMULTI          Multitasking attempted, system confused
+       EKEYBOARD       Keyboard locked, try getting out of this one!
+       EXPLAIN         Unexplained error, please tell us what happened
+       EFUTURE         Reserved for our future mistakes
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.228.patch0 b/vim/patches/vim-7.3.228.patch0
new file mode 100644 (file)
index 0000000..3edede5
--- /dev/null
@@ -0,0 +1,45 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.228
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.228
+Problem:    "2gj" does not always move to the correct position.
+Solution:   Get length of line after moving to a next line. (James Vega)
+Files:      src/normal.c
+
+
+*** ../mercurial/vim73/src/normal.c    2011-05-10 17:29:28.000000000 +0200
+--- src/normal.c       2011-06-20 00:41:43.000000000 +0200
+***************
+*** 4533,4538 ****
+--- 4533,4539 ----
+               }
+               curwin->w_cursor.lnum++;
+               curwin->w_curswant %= width2;
++              linelen = linetabsize(ml_get_curline());
+           }
+       }
+        }
+*** ../vim-7.3.227/src/version.c       2011-06-20 00:25:37.000000000 +0200
+--- src/version.c      2011-06-20 00:45:15.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     228,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+197. Your desk collapses under the weight of your computer peripherals.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.229.patch0 b/vim/patches/vim-7.3.229.patch0
new file mode 100644 (file)
index 0000000..b133f7a
--- /dev/null
@@ -0,0 +1,55 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.229
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.229
+Problem:    Using fork() makes gvim crash on Mac when build with
+            CoreFoundation.
+Solution:   Disallow fork() when __APPLE__ is defined. (Hisashi T Fujinaka)
+Files:      src/gui.c
+
+
+*** ../mercurial/vim73/src/gui.c       2011-05-10 16:41:13.000000000 +0200
+--- src/gui.c  2011-06-20 00:51:21.000000000 +0200
+***************
+*** 59,65 ****
+  gui_start()
+  {
+      char_u   *old_term;
+! #if defined(UNIX) && !defined(__BEOS__) && !defined(MACOS_X)
+  # define MAY_FORK
+      int              dofork = TRUE;
+  #endif
+--- 59,66 ----
+  gui_start()
+  {
+      char_u   *old_term;
+! #if defined(UNIX) && !defined(__BEOS__) && !defined(MACOS_X) \
+!      && !defined(__APPLE__)
+  # define MAY_FORK
+      int              dofork = TRUE;
+  #endif
+*** ../vim-7.3.228/src/version.c       2011-06-20 00:45:55.000000000 +0200
+--- src/version.c      2011-06-20 00:50:42.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     229,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+198. You read all the quotes at Netaholics Anonymous and keep thinking
+     "What's wrong with that?"
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.230.patch0 b/vim/patches/vim-7.3.230.patch0
new file mode 100644 (file)
index 0000000..80fcdf1
--- /dev/null
@@ -0,0 +1,70 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.230
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.230
+Problem:    ":wundo" and ":rundo" don't unescape their argument.  (Aaron
+            Thoma)
+Solution:   Use FILE1 instead of XFILE.
+Files:      src/ex_cmds.h
+
+
+*** ../mercurial/vim73/src/ex_cmds.h   2010-08-20 11:09:02.000000000 +0200
+--- src/ex_cmds.h      2011-06-20 04:44:13.000000000 +0200
+***************
+*** 788,794 ****
+  EX(CMD_rubyfile,     "rubyfile",     ex_rubyfile,
+                       RANGE|FILE1|NEEDARG|CMDWIN),
+  EX(CMD_rundo,                "rundo",        ex_rundo,
+!                      NEEDARG|EXTRA|XFILE),
+  EX(CMD_rviminfo,     "rviminfo",     ex_viminfo,
+                       BANG|FILE1|TRLBAR|CMDWIN),
+  EX(CMD_substitute,   "substitute",   do_sub,
+--- 788,794 ----
+  EX(CMD_rubyfile,     "rubyfile",     ex_rubyfile,
+                       RANGE|FILE1|NEEDARG|CMDWIN),
+  EX(CMD_rundo,                "rundo",        ex_rundo,
+!                      NEEDARG|FILE1),
+  EX(CMD_rviminfo,     "rviminfo",     ex_viminfo,
+                       BANG|FILE1|TRLBAR|CMDWIN),
+  EX(CMD_substitute,   "substitute",   do_sub,
+***************
+*** 1078,1084 ****
+  EX(CMD_wsverb,               "wsverb",       ex_wsverb,
+                       EXTRA|NOTADR|NEEDARG),
+  EX(CMD_wundo,                "wundo",        ex_wundo,
+!                      BANG|NEEDARG|EXTRA|XFILE),
+  EX(CMD_wviminfo,     "wviminfo",     ex_viminfo,
+                       BANG|FILE1|TRLBAR|CMDWIN),
+  EX(CMD_xit,          "xit",          ex_exit,
+--- 1078,1084 ----
+  EX(CMD_wsverb,               "wsverb",       ex_wsverb,
+                       EXTRA|NOTADR|NEEDARG),
+  EX(CMD_wundo,                "wundo",        ex_wundo,
+!                      BANG|NEEDARG|FILE1),
+  EX(CMD_wviminfo,     "wviminfo",     ex_viminfo,
+                       BANG|FILE1|TRLBAR|CMDWIN),
+  EX(CMD_xit,          "xit",          ex_exit,
+*** ../vim-7.3.229/src/version.c       2011-06-20 00:53:10.000000000 +0200
+--- src/version.c      2011-06-20 05:02:40.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     230,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+201. When somebody asks you where you are, you tell them in which chat room.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.231.patch0 b/vim/patches/vim-7.3.231.patch0
new file mode 100644 (file)
index 0000000..266d0a2
--- /dev/null
@@ -0,0 +1,128 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.231
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Note: this is a weird patch, it redoes patches from 7.3.202 and 7.3.203
+that failed when applied as a patch, but the mercurial repository
+already had this, thus won't change anything there.
+
+
+Patch 7.3.231
+Problem:    Runtime file patches failed.
+Solution:   Redo the patches made against the patched files instead of the
+            files in the mercurial repository.
+Files:      runtime/doc/indent.txt, runtime/doc/os_win32.txt
+
+
+*** ../vim-7.3.230/runtime/doc/indent.txt      2011-05-25 15:16:06.000000000 +0200
+--- runtime/doc/indent.txt     2011-05-31 22:23:39.000000000 +0200
+***************
+*** 356,363 ****
+                     BaseClass(3)          BaseClass(3)
+                 {}                        {}
+  <
+!      +N    Indent a continuation line (a line that spills onto the next) N
+!            additional characters.  (default 'shiftwidth').
+  
+               cino=                     cino=+10 >
+                 a = b + 9 *               a = b + 9 *
+--- 357,368 ----
+                     BaseClass(3)          BaseClass(3)
+                 {}                        {}
+  <
+!                                                      *cino-+*
+!      +N    Indent a continuation line (a line that spills onto the next)
+!               inside a function N additional characters.  (default
+!               'shiftwidth').
+!               Outside of a function, when the previous line ended in a
+!               backslash, the 2 * N is used.
+  
+               cino=                     cino=+10 >
+                 a = b + 9 *               a = b + 9 *
+***************
+*** 509,522 ****
+--- 514,532 ----
+                   }
+               }
+  <
++                                                              *cino-)*
+       )N    Vim searches for unclosed parentheses at most N lines away.
+             This limits the time needed to search for parentheses.  (default
+             20 lines).
+  
++                                                              *cino-star*
+       *N    Vim searches for unclosed comments at most N lines away.  This
+             limits the time needed to search for the start of a comment.
++            If your /* */ comments stop indenting afer N lines this is the
++            value you will want to change.
+             (default 70 lines).
+  
++                                                              *cino-#*
+       #N    When N is non-zero recognize shell/Perl comments, starting with
+             '#'.  Default N is zero: don't recognizes '#' comments.  Note
+             that lines starting with # will still be seen as preprocessor
+*** ../vim-7.3.230/runtime/doc/os_win32.txt    2010-08-15 21:57:16.000000000 +0200
+--- runtime/doc/os_win32.txt   2011-05-28 18:17:58.000000000 +0200
+***************
+*** 313,318 ****
+--- 313,349 ----
+     with :!start do not get passed Vim's open file handles, which means they do
+     not have to be closed before Vim.
+     To avoid this special treatment, use ":! start".
++    There are two optional arguments (see the next Q):
++        /min  the window will be minimized.
++        /b"   no console window will be opened
++    You can only one of these flags at a time.  A second second one will be
++    treated as the start of the command.
++ 
++ Q. How do I avoid getting a window for programs that I run asynchronously?
++ A. You have two possible solutions depending on what exactly do you want:
++    1) You may use the /min flag in order to run program in a minimized state
++       with no other changes. It will work equally for console and GUI
++       applications.
++    2) You can use the /b flag to run console applications without creating a
++       console window for them (GUI applications are not affected). But you
++       should use this flag only if the application you run doesn't require any
++       input.  Otherwise it will get an EOF error because its input stream
++       (stdin) would be redirected to \\.\NUL (stdoud and stderr too).
++ 
++    Example for a console application, run Exuberant ctags: >
++         :!start /min ctags -R .
++ <  When it has finished you should see file named "tags" in your current
++    directory.  You should notice the window title blinking on your taskbar.
++    This is more noticable for commands that take longer.
++    Now delete the "tags" file and run this command: >
++         :!start /b ctags -R .
++ <  You should have the same "tags" file, but this time there will be no
++    blinking on the taskbar.
++    Example for a GUI application: >
++         :!start /min notepad
++         :!start /b notepad
++ <  The first command runs notepad minimized and the second one runs it
++    normally.
+  
+  Q. I'm using Win32s, and when I try to run an external command like "make",
+     Vim doesn't wait for it to finish!  Help!
+*** ../vim-7.3.230/src/version.c       2011-06-20 05:02:53.000000000 +0200
+--- src/version.c      2011-06-26 03:14:03.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     231,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+222. You send more than 20 personal e-mails a day.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.232.patch0 b/vim/patches/vim-7.3.232.patch0
new file mode 100644 (file)
index 0000000..982d747
--- /dev/null
@@ -0,0 +1,84 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.232
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.232
+Problem:    Python doesn't compile without +multi_byte
+Solution:   Use "latin1" when MULTI_BYTE is not defined.
+Files:      src/if_py_both.h
+
+
+*** ../vim-7.3.231/src/if_py_both.h    2011-06-19 00:27:46.000000000 +0200
+--- src/if_py_both.h   2011-06-26 03:58:07.000000000 +0200
+***************
+*** 12,17 ****
+--- 12,23 ----
+   * Common code for if_python.c and if_python3.c.
+   */
+  
++ #ifdef FEAT_MBYTE
++ # define ENC_OPT p_enc
++ #else
++ # define ENC_OPT "latin1"
++ #endif
++ 
+  /*
+   * obtain a lock on the Vim data structures
+   */
+***************
+*** 68,74 ****
+      char *str = NULL;
+      int error = ((OutputObject *)(self))->error;
+  
+!     if (!PyArg_ParseTuple(args, "es#", p_enc, &str, &len))
+       return NULL;
+  
+      Py_BEGIN_ALLOW_THREADS
+--- 74,80 ----
+      char *str = NULL;
+      int error = ((OutputObject *)(self))->error;
+  
+!     if (!PyArg_ParseTuple(args, "es#", ENC_OPT, &str, &len))
+       return NULL;
+  
+      Py_BEGIN_ALLOW_THREADS
+***************
+*** 108,114 ****
+       char *str = NULL;
+       PyInt len;
+  
+!      if (!PyArg_Parse(line, "es#", p_enc, &str, &len)) {
+           PyErr_SetString(PyExc_TypeError, _("writelines() requires list of strings"));
+           Py_DECREF(list);
+           return NULL;
+--- 114,120 ----
+       char *str = NULL;
+       PyInt len;
+  
+!      if (!PyArg_Parse(line, "es#", ENC_OPT, &str, &len)) {
+           PyErr_SetString(PyExc_TypeError, _("writelines() requires list of strings"));
+           Py_DECREF(list);
+           return NULL;
+*** ../vim-7.3.231/src/version.c       2011-06-26 03:16:58.000000000 +0200
+--- src/version.c      2011-06-26 04:00:40.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     232,
+  /**/
+
+-- 
+If evolution theories are correct, humans will soon grow a third
+hand for operating the mouse.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.233.patch0 b/vim/patches/vim-7.3.233.patch0
new file mode 100644 (file)
index 0000000..2dcbf89
--- /dev/null
@@ -0,0 +1,81 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.233
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.233
+Problem:    ":scriptnames" and ":breaklist" show long file names.
+Solution:   Shorten to use "~/" when possible. (Jean-Rene David)
+Files:      src/ex_cmds2.c 
+
+
+*** ../vim-7.3.232/src/ex_cmds2.c      2011-05-19 18:26:34.000000000 +0200
+--- src/ex_cmds2.c     2011-06-26 04:20:24.000000000 +0200
+***************
+*** 682,691 ****
+       for (i = 0; i < dbg_breakp.ga_len; ++i)
+       {
+           bp = &BREAKP(i);
+           smsg((char_u *)_("%3d  %s %s  line %ld"),
+                   bp->dbg_nr,
+                   bp->dbg_type == DBG_FUNC ? "func" : "file",
+!                  bp->dbg_name,
+                   (long)bp->dbg_lnum);
+       }
+  }
+--- 682,693 ----
+       for (i = 0; i < dbg_breakp.ga_len; ++i)
+       {
+           bp = &BREAKP(i);
++          if (bp->dbg_type == DBG_FILE)
++              home_replace(NULL, bp->dbg_name, NameBuff, MAXPATHL, TRUE);
+           smsg((char_u *)_("%3d  %s %s  line %ld"),
+                   bp->dbg_nr,
+                   bp->dbg_type == DBG_FUNC ? "func" : "file",
+!                  bp->dbg_type == DBG_FUNC ? bp->dbg_name : NameBuff,
+                   (long)bp->dbg_lnum);
+       }
+  }
+***************
+*** 3268,3274 ****
+  
+      for (i = 1; i <= script_items.ga_len && !got_int; ++i)
+       if (SCRIPT_ITEM(i).sn_name != NULL)
+!          smsg((char_u *)"%3d: %s", i, SCRIPT_ITEM(i).sn_name);
+  }
+  
+  # if defined(BACKSLASH_IN_FILENAME) || defined(PROTO)
+--- 3270,3280 ----
+  
+      for (i = 1; i <= script_items.ga_len && !got_int; ++i)
+       if (SCRIPT_ITEM(i).sn_name != NULL)
+!      {
+!          home_replace(NULL, SCRIPT_ITEM(i).sn_name,
+!                                                  NameBuff, MAXPATHL, TRUE);
+!          smsg((char_u *)"%3d: %s", i, NameBuff);
+!         }
+  }
+  
+  # if defined(BACKSLASH_IN_FILENAME) || defined(PROTO)
+*** ../vim-7.3.232/src/version.c       2011-06-26 04:01:37.000000000 +0200
+--- src/version.c      2011-06-26 04:23:48.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     233,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+223. You set up a web-cam as your home's security system.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.234.patch0 b/vim/patches/vim-7.3.234.patch0
new file mode 100644 (file)
index 0000000..a60df3d
--- /dev/null
@@ -0,0 +1,178 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.234
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.234
+Problem:    With GTK menu may be popping down.
+Solution:   Use event time instead of GDK_CURRENT_TIME. (Hong Xu)
+Files:      src/gui.c, src/gui.h, src/gui_gtk.c, src/gui_gtk_x11.c
+
+
+*** ../vim-7.3.233/src/gui.c   2011-06-20 00:53:10.000000000 +0200
+--- src/gui.c  2011-06-26 04:38:09.000000000 +0200
+***************
+*** 84,89 ****
+--- 84,93 ----
+      gui.starting = TRUE;
+      full_screen = FALSE;
+  
++ #ifdef FEAT_GUI_GTK
++     gui.event_time = GDK_CURRENT_TIME;
++ #endif
++ 
+  #ifdef MAY_FORK
+      if (!gui.dofork || vim_strchr(p_go, GO_FORG) || recursive)
+       dofork = FALSE;
+*** ../vim-7.3.233/src/gui.h   2011-05-10 16:41:13.000000000 +0200
+--- src/gui.h  2011-06-26 04:41:21.000000000 +0200
+***************
+*** 401,406 ****
+--- 401,408 ----
+      GtkAccelGroup *accel_group;
+      GtkWidget        *filedlg;           /* file selection dialog */
+      char_u   *browse_fname;      /* file name from filedlg */
++ 
++     guint32  event_time;
+  #endif       /* FEAT_GUI_GTK */
+  
+  #if defined(FEAT_GUI_TABLINE) \
+*** ../vim-7.3.233/src/gui_gtk.c       2011-01-17 20:08:03.000000000 +0100
+--- src/gui_gtk.c      2011-06-26 04:38:09.000000000 +0200
+***************
+*** 1391,1397 ****
+      gtk_menu_popup(GTK_MENU(menu->submenu_id),
+                  NULL, NULL,
+                  (GtkMenuPositionFunc)NULL, NULL,
+!                 3U, (guint32)GDK_CURRENT_TIME);
+  }
+  
+  /* Ugly global variable to pass "mouse_pos" flag from gui_make_popup() to
+--- 1391,1397 ----
+      gtk_menu_popup(GTK_MENU(menu->submenu_id),
+                  NULL, NULL,
+                  (GtkMenuPositionFunc)NULL, NULL,
+!                 3U, gui.event_time);
+  }
+  
+  /* Ugly global variable to pass "mouse_pos" flag from gui_make_popup() to
+*** ../vim-7.3.233/src/gui_gtk_x11.c   2011-06-19 01:14:22.000000000 +0200
+--- src/gui_gtk_x11.c  2011-06-26 04:39:57.000000000 +0200
+***************
+*** 88,95 ****
+  # include <X11/Sunkeysym.h>
+  #endif
+  
+- static guint32 clipboard_event_time = CurrentTime;
+- 
+  /*
+   * Easy-to-use macro for multihead support.
+   */
+--- 88,93 ----
+***************
+*** 934,940 ****
+      guint    state;
+      char_u   *s, *d;
+  
+!     clipboard_event_time = event->time;
+      key_sym = event->keyval;
+      state = event->state;
+  
+--- 932,938 ----
+      guint    state;
+      char_u   *s, *d;
+  
+!     gui.event_time = event->time;
+      key_sym = event->keyval;
+      state = event->state;
+  
+***************
+*** 1129,1135 ****
+                 GdkEventKey *event,
+                 gpointer data UNUSED)
+  {
+!     clipboard_event_time = event->time;
+      /*
+       * GTK+ 2 input methods may do fancy stuff on key release events too.
+       * With the default IM for instance, you can enter any UCS code point
+--- 1127,1133 ----
+                 GdkEventKey *event,
+                 gpointer data UNUSED)
+  {
+!     gui.event_time = event->time;
+      /*
+       * GTK+ 2 input methods may do fancy stuff on key release events too.
+       * With the default IM for instance, you can enter any UCS code point
+***************
+*** 1622,1628 ****
+      int x, y;
+      int_u vim_modifiers;
+  
+!     clipboard_event_time = event->time;
+  
+      /* Make sure we have focus now we've been selected */
+      if (gtk_socket_id != 0 && !GTK_WIDGET_HAS_FOCUS(widget))
+--- 1620,1626 ----
+      int x, y;
+      int_u vim_modifiers;
+  
+!     gui.event_time = event->time;
+  
+      /* Make sure we have focus now we've been selected */
+      if (gtk_socket_id != 0 && !GTK_WIDGET_HAS_FOCUS(widget))
+***************
+*** 1733,1739 ****
+      int x, y;
+      int_u vim_modifiers;
+  
+!     clipboard_event_time = event->time;
+  
+      /* Remove any motion "machine gun" timers used for automatic further
+         extension of allocation areas if outside of the applications window
+--- 1731,1737 ----
+      int x, y;
+      int_u vim_modifiers;
+  
+!     gui.event_time = event->time;
+  
+      /* Remove any motion "machine gun" timers used for automatic further
+         extension of allocation areas if outside of the applications window
+***************
+*** 5654,5660 ****
+      int success;
+  
+      success = gtk_selection_owner_set(gui.drawarea, cbd->gtk_sel_atom,
+!                                    clipboard_event_time);
+      gui_mch_update();
+      return (success) ? OK : FAIL;
+  }
+--- 5652,5658 ----
+      int success;
+  
+      success = gtk_selection_owner_set(gui.drawarea, cbd->gtk_sel_atom,
+!                                    gui.event_time);
+      gui_mch_update();
+      return (success) ? OK : FAIL;
+  }
+*** ../vim-7.3.233/src/version.c       2011-06-26 04:25:24.000000000 +0200
+--- src/version.c      2011-06-26 04:47:02.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     234,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+225. You sign up for free subscriptions for all the computer magazines
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.235.patch0 b/vim/patches/vim-7.3.235.patch0
new file mode 100644 (file)
index 0000000..a852c85
--- /dev/null
@@ -0,0 +1,360 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.235
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.235
+Problem:    ";" gets stuck on a "t" command, it's not useful.
+Solution:   Add the ';' flag in 'cpo'. (Christian Brabandt)
+Files:      runtime/doc/motion.txt, runtime/doc/options.txt, src/option.h,
+            src/search.c src/testdir/test81.in, src/testdir/test81.ok,
+            src/testdir/Makefile, src/testdir/Make_amiga.mak,
+            src/testdir/Make_dos.mak, src/testdir/Make_ming.mak,
+            src/testdir/Make_os2.mak, src/testdir/Make_vms.mms
+
+
+*** ../vim-7.3.234/runtime/doc/motion.txt      2010-08-15 21:57:17.000000000 +0200
+--- runtime/doc/motion.txt     2011-06-26 05:15:58.000000000 +0200
+***************
+*** 269,279 ****
+                       {char} can be entered like with the |f| command.
+  
+                                                       *;*
+! ;                    Repeat latest f, t, F or T [count] times.
+  
+                                                       *,*
+  ,                    Repeat latest f, t, F or T in opposite direction
+!                      [count] times.
+  
+  ==============================================================================
+  3. Up-down motions                                   *up-down-motions*
+--- 269,279 ----
+                       {char} can be entered like with the |f| command.
+  
+                                                       *;*
+! ;                    Repeat latest f, t, F or T [count] times. See |cpo-;|
+  
+                                                       *,*
+  ,                    Repeat latest f, t, F or T in opposite direction
+!                      [count] times. See also |cpo-;|
+  
+  ==============================================================================
+  3. Up-down motions                                   *up-down-motions*
+*** ../vim-7.3.234/runtime/doc/options.txt     2011-06-12 20:42:17.000000000 +0200
+--- runtime/doc/options.txt    2011-06-26 05:15:58.000000000 +0200
+***************
+*** 2090,2095 ****
+--- 2117,2128 ----
+                                                               *cpo->*
+               >       When appending to a register, put a line break before
+                       the appended text.
++                                                              *cpo-;*
++              ;       When using |,| or |;| to repeat the last |t| search
++                      and the cursor is right in front of the searched
++                      character, the cursor won't move. When not included,
++                      the cursor would skip over it and jump to the
++                      following occurence.
+  
+       POSIX flags.  These are not included in the Vi default value, except
+       when $VIM_POSIX was set on startup. |posix|
+*** ../vim-7.3.234/src/option.h        2011-06-12 22:13:37.000000000 +0200
+--- src/option.h       2011-06-26 05:17:58.000000000 +0200
+***************
+*** 169,178 ****
+  #define CPO_SUBPERCENT       '/'     /* % in :s string uses previous one */
+  #define CPO_BACKSL   '\\'    /* \ is not special in [] */
+  #define CPO_CHDIR    '.'     /* don't chdir if buffer is modified */
+  /* default values for Vim, Vi and POSIX */
+  #define CPO_VIM              "aABceFs"
+! #define CPO_VI               "aAbBcCdDeEfFgHiIjJkKlLmMnoOpPqrRsStuvwWxXyZ$!%*-+<>"
+! #define CPO_ALL              "aAbBcCdDeEfFgHiIjJkKlLmMnoOpPqrRsStuvwWxXyZ$!%*-+<>#{|&/\\."
+  
+  /* characters for p_ww option: */
+  #define WW_ALL               "bshl<>[],~"
+--- 169,180 ----
+  #define CPO_SUBPERCENT       '/'     /* % in :s string uses previous one */
+  #define CPO_BACKSL   '\\'    /* \ is not special in [] */
+  #define CPO_CHDIR    '.'     /* don't chdir if buffer is modified */
++ #define CPO_SCOLON   ';'     /* using "," and ";" will skip over char if
++                               * cursor would not move */
+  /* default values for Vim, Vi and POSIX */
+  #define CPO_VIM              "aABceFs"
+! #define CPO_VI               "aAbBcCdDeEfFgHiIjJkKlLmMnoOpPqrRsStuvwWxXyZ$!%*-+<>;"
+! #define CPO_ALL              "aAbBcCdDeEfFgHiIjJkKlLmMnoOpPqrRsStuvwWxXyZ$!%*-+<>#{|&/\\.;"
+  
+  /* characters for p_ww option: */
+  #define WW_ALL               "bshl<>[],~"
+*** ../vim-7.3.234/src/search.c        2011-05-10 16:41:13.000000000 +0200
+--- src/search.c       2011-06-26 05:20:45.000000000 +0200
+***************
+*** 1546,1551 ****
+--- 1546,1552 ----
+      int                      col;
+      char_u           *p;
+      int                      len;
++     int                      stop = TRUE;
+  #ifdef FEAT_MBYTE
+      static char_u    bytes[MB_MAXBYTES];
+      static int               bytelen = 1;    /* >1 for multi-byte char */
+***************
+*** 1580,1585 ****
+--- 1581,1592 ----
+       t_cmd = last_t_cmd;
+       c = lastc;
+       /* For multi-byte re-use last bytes[] and bytelen. */
++ 
++      /* Force a move of at least one char, so ";" and "," will move the
++       * cursor, even if the cursor is right in front of char we are looking
++       * at. */
++      if (vim_strchr(p_cpo, CPO_SCOLON) == NULL && count == 1)
++          stop = FALSE;
+      }
+  
+      if (dir == BACKWARD)
+***************
+*** 1612,1625 ****
+               }
+               if (bytelen == 1)
+               {
+!                  if (p[col] == c)
+                       break;
+               }
+               else
+               {
+!                  if (vim_memcmp(p + col, bytes, bytelen) == 0)
+                       break;
+               }
+           }
+       }
+       else
+--- 1619,1633 ----
+               }
+               if (bytelen == 1)
+               {
+!                  if (p[col] == c && stop)
+                       break;
+               }
+               else
+               {
+!                  if (vim_memcmp(p + col, bytes, bytelen) == 0 && stop)
+                       break;
+               }
++              stop = TRUE;
+           }
+       }
+       else
+***************
+*** 1629,1636 ****
+           {
+               if ((col += dir) < 0 || col >= len)
+                   return FAIL;
+!              if (p[col] == c)
+                   break;
+           }
+       }
+      }
+--- 1637,1645 ----
+           {
+               if ((col += dir) < 0 || col >= len)
+                   return FAIL;
+!              if (p[col] == c && stop)
+                   break;
++              stop = TRUE;
+           }
+       }
+      }
+*** ../vim-7.3.234/src/testdir/test81.in       2011-06-26 05:34:33.000000000 +0200
+--- src/testdir/test81.in      2011-06-26 05:30:31.000000000 +0200
+***************
+*** 0 ****
+--- 1,18 ----
++ Test for t movement command and 'cpo-;' setting
++ 
++ STARTTEST
++ :set nocompatible
++ :set cpo-=;
++ /firstline/
++ j0tt;D
++ $Ty;D:set cpo+=;
++ j0tt;;D
++ $Ty;;D:?firstline?+1,$w! test.out
++ :qa!
++ ENDTEST
++ 
++ firstline
++ aaa two three four
++ bbb yee yoo four
++ ccc two three four
++ ddd yee yoo four
+*** ../vim-7.3.234/src/testdir/test81.ok       2011-06-26 05:34:33.000000000 +0200
+--- src/testdir/test81.ok      2011-06-26 05:31:33.000000000 +0200
+***************
+*** 0 ****
+--- 1,4 ----
++ aaa two
++ bbb y
++ ccc
++ ddd yee y
+*** ../vim-7.3.234/src/testdir/Makefile        2011-06-19 04:31:54.000000000 +0200
+--- src/testdir/Makefile       2011-06-26 05:09:56.000000000 +0200
+***************
+*** 26,32 ****
+               test64.out test65.out test66.out test67.out test68.out \
+               test69.out test70.out test71.out test72.out test73.out \
+               test74.out test75.out test76.out test77.out test78.out \
+!              test79.out test80.out
+  
+  SCRIPTS_GUI = test16.out
+  
+--- 26,32 ----
+               test64.out test65.out test66.out test67.out test68.out \
+               test69.out test70.out test71.out test72.out test73.out \
+               test74.out test75.out test76.out test77.out test78.out \
+!              test79.out test80.out test81.out
+  
+  SCRIPTS_GUI = test16.out
+  
+*** ../vim-7.3.234/src/testdir/Make_amiga.mak  2011-06-19 04:31:54.000000000 +0200
+--- src/testdir/Make_amiga.mak 2011-06-26 05:09:07.000000000 +0200
+***************
+*** 28,34 ****
+               test61.out test62.out test63.out test64.out test65.out \
+               test66.out test67.out test68.out test69.out test70.out \
+               test71.out test72.out test73.out test74.out test75.out \
+!              test76.out test77.out test78.out test79.out test80.out
+  
+  .SUFFIXES: .in .out
+  
+--- 28,35 ----
+               test61.out test62.out test63.out test64.out test65.out \
+               test66.out test67.out test68.out test69.out test70.out \
+               test71.out test72.out test73.out test74.out test75.out \
+!              test76.out test77.out test78.out test79.out test80.out \
+!              test81.out
+  
+  .SUFFIXES: .in .out
+  
+***************
+*** 128,130 ****
+--- 129,132 ----
+  test78.out: test78.in
+  test79.out: test79.in
+  test80.out: test80.in
++ test81.out: test81.in
+*** ../vim-7.3.234/src/testdir/Make_dos.mak    2011-06-19 04:31:54.000000000 +0200
+--- src/testdir/Make_dos.mak   2011-06-26 05:09:16.000000000 +0200
+***************
+*** 29,35 ****
+               test42.out test52.out test65.out test66.out test67.out \
+               test68.out test69.out test71.out test72.out test73.out \
+               test74.out test75.out test76.out test77.out test78.out \
+!              test79.out test80.out
+  
+  SCRIPTS32 =  test50.out test70.out
+  
+--- 29,35 ----
+               test42.out test52.out test65.out test66.out test67.out \
+               test68.out test69.out test71.out test72.out test73.out \
+               test74.out test75.out test76.out test77.out test78.out \
+!              test79.out test80.out test81.out
+  
+  SCRIPTS32 =  test50.out test70.out
+  
+*** ../vim-7.3.234/src/testdir/Make_ming.mak   2011-06-19 04:31:54.000000000 +0200
+--- src/testdir/Make_ming.mak  2011-06-26 05:09:24.000000000 +0200
+***************
+*** 49,55 ****
+               test42.out test52.out test65.out test66.out test67.out \
+               test68.out test69.out test71.out test72.out test73.out \
+               test74.out test75.out test76.out test77.out test78.out \
+!              test79.out test80.out
+  
+  SCRIPTS32 =  test50.out test70.out
+  
+--- 49,55 ----
+               test42.out test52.out test65.out test66.out test67.out \
+               test68.out test69.out test71.out test72.out test73.out \
+               test74.out test75.out test76.out test77.out test78.out \
+!              test79.out test80.out test81.out
+  
+  SCRIPTS32 =  test50.out test70.out
+  
+*** ../vim-7.3.234/src/testdir/Make_os2.mak    2011-06-19 04:31:54.000000000 +0200
+--- src/testdir/Make_os2.mak   2011-06-26 05:09:33.000000000 +0200
+***************
+*** 28,34 ****
+               test61.out test62.out test63.out test64.out test65.out \
+               test66.out test67.out test68.out test69.out test70.out \
+               test71.out test72.out test73.out test74.out test75.out \
+!              test76.out test77.out test78.out test79.out test80.out
+  
+  .SUFFIXES: .in .out
+  
+--- 28,35 ----
+               test61.out test62.out test63.out test64.out test65.out \
+               test66.out test67.out test68.out test69.out test70.out \
+               test71.out test72.out test73.out test74.out test75.out \
+!              test76.out test77.out test78.out test79.out test80.out \
+!              test81.out
+  
+  .SUFFIXES: .in .out
+  
+*** ../vim-7.3.234/src/testdir/Make_vms.mms    2011-06-19 04:31:54.000000000 +0200
+--- src/testdir/Make_vms.mms   2011-06-26 05:09:42.000000000 +0200
+***************
+*** 4,10 ****
+  # Authors:   Zoltan Arpadffy, <arpadffy@polarhome.com>
+  #            Sandor Kopanyi,  <sandor.kopanyi@mailbox.hu>
+  #
+! # Last change:  2011 Jun 19
+  #
+  # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64.
+  # Edit the lines in the Configuration section below to select.
+--- 4,10 ----
+  # Authors:   Zoltan Arpadffy, <arpadffy@polarhome.com>
+  #            Sandor Kopanyi,  <sandor.kopanyi@mailbox.hu>
+  #
+! # Last change:  2011 Jun 26
+  #
+  # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64.
+  # Edit the lines in the Configuration section below to select.
+***************
+*** 75,81 ****
+        test61.out test62.out test63.out test64.out test65.out \
+        test66.out test67.out test68.out test69.out \
+        test71.out test72.out test74.out test75.out test76.out \
+!       test77.out test78.out test79.out test80.out
+  
+  # Known problems:
+  # Test 30: a problem around mac format - unknown reason
+--- 75,81 ----
+        test61.out test62.out test63.out test64.out test65.out \
+        test66.out test67.out test68.out test69.out \
+        test71.out test72.out test74.out test75.out test76.out \
+!       test77.out test78.out test79.out test80.out test81.out
+  
+  # Known problems:
+  # Test 30: a problem around mac format - unknown reason
+*** ../vim-7.3.234/src/version.c       2011-06-26 04:48:56.000000000 +0200
+--- src/version.c      2011-06-26 05:33:53.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     235,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+226. You sit down at the computer right after dinner and your spouse
+     says "See you in the morning."
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.236.patch0 b/vim/patches/vim-7.3.236.patch0
new file mode 100644 (file)
index 0000000..3be69e3
--- /dev/null
@@ -0,0 +1,87 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.236
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.236 (after 7.3.232)
+Problem:    Python 3 doesn't compile without +multi_byte 
+Solution:   Use "latin1" when MULTI_BYTE is not defined. (lilydjwg)
+Files:      src/if_python3.c
+
+
+*** ../vim-7.3.235/src/if_python3.c    2011-06-19 00:27:46.000000000 +0200
+--- src/if_python3.c   2011-06-26 19:10:57.000000000 +0200
+***************
+*** 70,76 ****
+  
+  #define PyInt Py_ssize_t
+  #define PyString_Check(obj) PyUnicode_Check(obj)
+! #define PyString_AsBytes(obj) PyUnicode_AsEncodedString(obj, (char *)p_enc, NULL);
+  #define PyString_FreeBytes(obj) Py_XDECREF(bytes)
+  #define PyString_AsString(obj) PyBytes_AsString(obj)
+  #define PyString_Size(obj) PyBytes_GET_SIZE(bytes)
+--- 70,76 ----
+  
+  #define PyInt Py_ssize_t
+  #define PyString_Check(obj) PyUnicode_Check(obj)
+! #define PyString_AsBytes(obj) PyUnicode_AsEncodedString(obj, (char *)ENC_OPT, NULL);
+  #define PyString_FreeBytes(obj) Py_XDECREF(bytes)
+  #define PyString_AsString(obj) PyBytes_AsString(obj)
+  #define PyString_Size(obj) PyBytes_GET_SIZE(bytes)
+***************
+*** 661,667 ****
+  
+      /* PyRun_SimpleString expects a UTF-8 string. Wrong encoding may cause
+       * SyntaxError (unicode error). */
+!     cmdstr = PyUnicode_Decode(cmd, strlen(cmd), (char *)p_enc, NULL);
+      cmdbytes = PyUnicode_AsEncodedString(cmdstr, "utf-8", NULL);
+      Py_XDECREF(cmdstr);
+      PyRun_SimpleString(PyBytes_AsString(cmdbytes));
+--- 661,667 ----
+  
+      /* PyRun_SimpleString expects a UTF-8 string. Wrong encoding may cause
+       * SyntaxError (unicode error). */
+!     cmdstr = PyUnicode_Decode(cmd, strlen(cmd), (char *)ENC_OPT, NULL);
+      cmdbytes = PyUnicode_AsEncodedString(cmdstr, "utf-8", NULL);
+      Py_XDECREF(cmdstr);
+      PyRun_SimpleString(PyBytes_AsString(cmdbytes));
+***************
+*** 1463,1469 ****
+      }
+      *p = '\0';
+  
+!     result = PyUnicode_Decode(tmp, len, (char *)p_enc, NULL);
+  
+      vim_free(tmp);
+      return result;
+--- 1463,1469 ----
+      }
+      *p = '\0';
+  
+!     result = PyUnicode_Decode(tmp, len, (char *)ENC_OPT, NULL);
+  
+      vim_free(tmp);
+      return result;
+*** ../vim-7.3.235/src/version.c       2011-06-26 05:36:07.000000000 +0200
+--- src/version.c      2011-06-26 19:12:12.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     236,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+228. You spend Saturday night making the counter on your home page
+     pass that 2000 mark.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.237.patch0 b/vim/patches/vim-7.3.237.patch0
new file mode 100644 (file)
index 0000000..ead50ca
--- /dev/null
@@ -0,0 +1,222 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.237
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.237
+Problem:    "filetype" completion doesn't work on Windows. (Yue Wu)
+Solution:   Don't use a glob pattern for the directories, use a list of
+            directories. (Dominique Pelle)
+Files:      src/ex_getln.c
+     
+
+*** ../vim-7.3.236/src/ex_getln.c      2011-05-19 18:26:34.000000000 +0200
+--- src/ex_getln.c     2011-06-26 19:36:36.000000000 +0200
+***************
+*** 110,116 ****
+  static int   expand_showtail __ARGS((expand_T *xp));
+  #ifdef FEAT_CMDL_COMPL
+  static int   expand_shellcmd __ARGS((char_u *filepat, int *num_file, char_u ***file, int flagsarg));
+! static int   ExpandRTDir __ARGS((char_u *pat, int *num_file, char_u ***file, char *dirname));
+  # if defined(FEAT_USR_CMDS) && defined(FEAT_EVAL)
+  static int   ExpandUserDefined __ARGS((expand_T *xp, regmatch_T *regmatch, int *num_file, char_u ***file));
+  static int   ExpandUserList __ARGS((expand_T *xp, int *num_file, char_u ***file));
+--- 110,116 ----
+  static int   expand_showtail __ARGS((expand_T *xp));
+  #ifdef FEAT_CMDL_COMPL
+  static int   expand_shellcmd __ARGS((char_u *filepat, int *num_file, char_u ***file, int flagsarg));
+! static int   ExpandRTDir __ARGS((char_u *pat, int *num_file, char_u ***file, char *dirname[]));
+  # if defined(FEAT_USR_CMDS) && defined(FEAT_EVAL)
+  static int   ExpandUserDefined __ARGS((expand_T *xp, regmatch_T *regmatch, int *num_file, char_u ***file));
+  static int   ExpandUserList __ARGS((expand_T *xp, int *num_file, char_u ***file));
+***************
+*** 4536,4548 ****
+           || xp->xp_context == EXPAND_TAGS_LISTFILES)
+       return expand_tags(xp->xp_context == EXPAND_TAGS, pat, num_file, file);
+      if (xp->xp_context == EXPAND_COLORS)
+!      return ExpandRTDir(pat, num_file, file, "colors");
+      if (xp->xp_context == EXPAND_COMPILER)
+!      return ExpandRTDir(pat, num_file, file, "compiler");
+      if (xp->xp_context == EXPAND_OWNSYNTAX)
+!      return ExpandRTDir(pat, num_file, file, "syntax");
+      if (xp->xp_context == EXPAND_FILETYPE)
+!      return ExpandRTDir(pat, num_file, file, "{syntax,indent,ftplugin}");
+  # if defined(FEAT_USR_CMDS) && defined(FEAT_EVAL)
+      if (xp->xp_context == EXPAND_USER_LIST)
+       return ExpandUserList(xp, num_file, file);
+--- 4536,4560 ----
+           || xp->xp_context == EXPAND_TAGS_LISTFILES)
+       return expand_tags(xp->xp_context == EXPAND_TAGS, pat, num_file, file);
+      if (xp->xp_context == EXPAND_COLORS)
+!     {
+!      char *directories[] = {"colors", NULL};
+!      return ExpandRTDir(pat, num_file, file, directories);
+!     }
+      if (xp->xp_context == EXPAND_COMPILER)
+!     {
+!      char *directories[] = {"colors", NULL};
+!      return ExpandRTDir(pat, num_file, file, directories);
+!     }
+      if (xp->xp_context == EXPAND_OWNSYNTAX)
+!     {
+!      char *directories[] = {"syntax", NULL};
+!      return ExpandRTDir(pat, num_file, file, directories);
+!     }
+      if (xp->xp_context == EXPAND_FILETYPE)
+!     {
+!      char *directories[] = {"syntax", "indent", "ftplugin", NULL};
+!      return ExpandRTDir(pat, num_file, file, directories);
+!     }
+  # if defined(FEAT_USR_CMDS) && defined(FEAT_EVAL)
+      if (xp->xp_context == EXPAND_USER_LIST)
+       return ExpandUserList(xp, num_file, file);
+***************
+*** 4995,5051 ****
+  /*
+   * Expand color scheme, compiler or filetype names:
+   * 'runtimepath'/{dirnames}/{pat}.vim
+!  * dirnames may contain one directory (ex: "colorscheme") or can be a glob
+!  * expression matching multiple directories (ex: "{syntax,ftplugin,indent}").
+   */
+      static int
+  ExpandRTDir(pat, num_file, file, dirnames)
+      char_u   *pat;
+      int              *num_file;
+      char_u   ***file;
+!     char     *dirnames;
+  {
+!     char_u   *all;
+      char_u   *s;
+      char_u   *e;
+      garray_T ga;
+  
+      *num_file = 0;
+      *file = NULL;
+!     s = alloc((unsigned)(STRLEN(pat) + STRLEN(dirnames) + 7));
+!     if (s == NULL)
+!      return FAIL;
+!     sprintf((char *)s, "%s/%s*.vim", dirnames, pat);
+!     all = globpath(p_rtp, s, 0);
+!     vim_free(s);
+!     if (all == NULL)
+!      return FAIL;
+  
+!     ga_init2(&ga, (int)sizeof(char *), 3);
+!     for (s = all; *s != NUL; s = e)
+      {
+!      e = vim_strchr(s, '\n');
+!      if (e == NULL)
+!          e = s + STRLEN(s);
+!      if (ga_grow(&ga, 1) == FAIL)
+!          break;
+!      if (e - 4 > s && STRNICMP(e - 4, ".vim", 4) == 0)
+       {
+!          for (s = e - 4; s > all; mb_ptr_back(all, s))
+!              if (*s == '\n' || vim_ispathsep(*s))
+!                  break;
+!          ++s;
+!          ((char_u **)ga.ga_data)[ga.ga_len] =
+                                           vim_strnsave(s, (int)(e - s - 4));
+!          ++ga.ga_len;
+       }
+!      if (*e != NUL)
+!          ++e;
+      }
+!     vim_free(all);
+  
+      /* Sort and remove duplicates which can happen when specifying multiple
+!      * directories in dirnames such as "{syntax,ftplugin,indent}". */
+      remove_duplicates(&ga);
+  
+      *file = ga.ga_data;
+--- 5007,5074 ----
+  /*
+   * Expand color scheme, compiler or filetype names:
+   * 'runtimepath'/{dirnames}/{pat}.vim
+!  * "dirnames" is an array with one or more directory names.
+   */
+      static int
+  ExpandRTDir(pat, num_file, file, dirnames)
+      char_u   *pat;
+      int              *num_file;
+      char_u   ***file;
+!     char     *dirnames[];
+  {
+!     char_u   *matches;
+      char_u   *s;
+      char_u   *e;
+      garray_T ga;
++     int              i;
++     int              pat_len;
+  
+      *num_file = 0;
+      *file = NULL;
+!     pat_len = STRLEN(pat);
+!     ga_init2(&ga, (int)sizeof(char *), 10);
+  
+!     for (i = 0; dirnames[i] != NULL; ++i)
+      {
+!      s = alloc((unsigned)(STRLEN(dirnames[i]) + pat_len + 7));
+!      if (s == NULL)
+       {
+!          ga_clear_strings(&ga);
+!          return FAIL;
+!      }
+!      sprintf((char *)s, "%s/%s*.vim", dirnames[i], pat);
+!      matches = globpath(p_rtp, s, 0);
+!      vim_free(s);
+!      if (matches == NULL)
+!          continue;
+! 
+!      for (s = matches; *s != NUL; s = e)
+!      {
+!          e = vim_strchr(s, '\n');
+!          if (e == NULL)
+!              e = s + STRLEN(s);
+!          if (ga_grow(&ga, 1) == FAIL)
+!              break;
+!          if (e - 4 > s && STRNICMP(e - 4, ".vim", 4) == 0)
+!          {
+!              for (s = e - 4; s > matches; mb_ptr_back(matches, s))
+!                  if (*s == '\n' || vim_ispathsep(*s))
+!                      break;
+!              ++s;
+!              ((char_u **)ga.ga_data)[ga.ga_len] =
+                                           vim_strnsave(s, (int)(e - s - 4));
+!              ++ga.ga_len;
+!          }
+!          if (*e != NUL)
+!              ++e;
+       }
+!      vim_free(matches);
+      }
+!     if (ga.ga_len == 0)
+!         return FAIL;
+  
+      /* Sort and remove duplicates which can happen when specifying multiple
+!      * directories in dirnames. */
+      remove_duplicates(&ga);
+  
+      *file = ga.ga_data;
+*** ../vim-7.3.236/src/version.c       2011-06-26 19:13:33.000000000 +0200
+--- src/version.c      2011-06-26 19:39:39.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     237,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+230. You spend your Friday nights typing away at your keyboard
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.238.patch0 b/vim/patches/vim-7.3.238.patch0
new file mode 100644 (file)
index 0000000..289b1a4
--- /dev/null
@@ -0,0 +1,53 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.238
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.238
+Problem:    Compiler warning for conversion.
+Solution:   Add type cast. (Mike Williams)
+Files:     src/ex_getln.c
+
+
+*** ../vim-7.3.237/src/ex_getln.c      2011-06-26 19:40:14.000000000 +0200
+--- src/ex_getln.c     2011-07-04 14:23:27.000000000 +0200
+***************
+*** 5025,5031 ****
+  
+      *num_file = 0;
+      *file = NULL;
+!     pat_len = STRLEN(pat);
+      ga_init2(&ga, (int)sizeof(char *), 10);
+  
+      for (i = 0; dirnames[i] != NULL; ++i)
+--- 5025,5031 ----
+  
+      *num_file = 0;
+      *file = NULL;
+!     pat_len = (int)STRLEN(pat);
+      ga_init2(&ga, (int)sizeof(char *), 10);
+  
+      for (i = 0; dirnames[i] != NULL; ++i)
+*** ../vim-7.3.237/src/version.c       2011-06-26 19:40:14.000000000 +0200
+--- src/version.c      2011-07-07 15:04:00.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     238,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+255. You work for a newspaper and your editor asks you to write an
+     article about Internet addiction...in the "first person."
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.239.patch0 b/vim/patches/vim-7.3.239.patch0
new file mode 100644 (file)
index 0000000..1c03da3
--- /dev/null
@@ -0,0 +1,321 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.239
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.239
+Problem:    Python corrects the cursor column without taking 'virtualedit'
+           into account. (lilydjwg)
+Solution:   Call check_cursor_col_win().
+Files:     src/if_py_both.h, src/mbyte.c, src/misc2.c, src/normal.c,
+           src/proto/mbyte.pro, src/proto/misc2.pro
+
+
+*** ../vim-7.3.238/src/if_py_both.h    2011-06-26 04:01:37.000000000 +0200
+--- src/if_py_both.h   2011-07-07 14:28:19.000000000 +0200
+***************
+*** 534,540 ****
+      {
+       long lnum;
+       long col;
+-      long len;
+  
+       if (!PyArg_Parse(val, "(ll)", &lnum, &col))
+           return -1;
+--- 534,539 ----
+***************
+*** 549,566 ****
+       if (VimErrorCheck())
+           return -1;
+  
+-      /* When column is out of range silently correct it. */
+-      len = (long)STRLEN(ml_get_buf(this->win->w_buffer, lnum, FALSE));
+-      if (col > len)
+-          col = len;
+- 
+       this->win->w_cursor.lnum = lnum;
+       this->win->w_cursor.col = col;
+  #ifdef FEAT_VIRTUALEDIT
+       this->win->w_cursor.coladd = 0;
+  #endif
+!      update_screen(VALID);
+  
+       return 0;
+      }
+      else if (strcmp(name, "height") == 0)
+--- 548,562 ----
+       if (VimErrorCheck())
+           return -1;
+  
+       this->win->w_cursor.lnum = lnum;
+       this->win->w_cursor.col = col;
+  #ifdef FEAT_VIRTUALEDIT
+       this->win->w_cursor.coladd = 0;
+  #endif
+!      /* When column is out of range silently correct it. */
+!      check_cursor_col_win(this->win);
+  
++      update_screen(VALID);
+       return 0;
+      }
+      else if (strcmp(name, "height") == 0)
+*** ../vim-7.3.238/src/mbyte.c 2011-04-11 14:29:13.000000000 +0200
+--- src/mbyte.c        2011-07-07 14:27:07.000000000 +0200
+***************
+*** 3563,3569 ****
+      void
+  mb_adjust_cursor()
+  {
+!     mb_adjustpos(&curwin->w_cursor);
+  }
+  
+  /*
+--- 3563,3569 ----
+      void
+  mb_adjust_cursor()
+  {
+!     mb_adjustpos(curbuf, &curwin->w_cursor);
+  }
+  
+  /*
+***************
+*** 3571,3577 ****
+   * If it points to a tail byte it's moved backwards to the head byte.
+   */
+      void
+! mb_adjustpos(lp)
+      pos_T    *lp;
+  {
+      char_u   *p;
+--- 3571,3578 ----
+   * If it points to a tail byte it's moved backwards to the head byte.
+   */
+      void
+! mb_adjustpos(buf, lp)
+!     buf_T    *buf;
+      pos_T    *lp;
+  {
+      char_u   *p;
+***************
+*** 3582,3588 ****
+  #endif
+           )
+      {
+!      p = ml_get(lp->lnum);
+       lp->col -= (*mb_head_off)(p, p + lp->col);
+  #ifdef FEAT_VIRTUALEDIT
+       /* Reset "coladd" when the cursor would be on the right half of a
+--- 3583,3589 ----
+  #endif
+           )
+      {
+!      p = ml_get_buf(buf, lp->lnum, FALSE);
+       lp->col -= (*mb_head_off)(p, p + lp->col);
+  #ifdef FEAT_VIRTUALEDIT
+       /* Reset "coladd" when the cursor would be on the right half of a
+*** ../vim-7.3.238/src/misc2.c 2011-04-11 16:56:29.000000000 +0200
+--- src/misc2.c        2011-07-07 14:27:50.000000000 +0200
+***************
+*** 333,339 ****
+  #ifdef FEAT_MBYTE
+      /* prevent from moving onto a trail byte */
+      if (has_mbyte)
+!      mb_adjustpos(pos);
+  #endif
+  
+      if (col < wcol)
+--- 333,339 ----
+  #ifdef FEAT_MBYTE
+      /* prevent from moving onto a trail byte */
+      if (has_mbyte)
+!      mb_adjustpos(curbuf, pos);
+  #endif
+  
+      if (col < wcol)
+***************
+*** 544,559 ****
+      void
+  check_cursor_col()
+  {
+      colnr_T len;
+  #ifdef FEAT_VIRTUALEDIT
+!     colnr_T oldcol = curwin->w_cursor.col;
+!     colnr_T oldcoladd = curwin->w_cursor.col + curwin->w_cursor.coladd;
+  #endif
+  
+!     len = (colnr_T)STRLEN(ml_get_curline());
+      if (len == 0)
+!      curwin->w_cursor.col = 0;
+!     else if (curwin->w_cursor.col >= len)
+      {
+       /* Allow cursor past end-of-line when:
+        * - in Insert mode or restarting Insert mode
+--- 544,569 ----
+      void
+  check_cursor_col()
+  {
++     check_cursor_col_win(curwin);
++ }
++ 
++ /*
++  * Make sure win->w_cursor.col is valid.
++  */
++     void
++ check_cursor_col_win(win)
++     win_T *win;
++ {
+      colnr_T len;
+  #ifdef FEAT_VIRTUALEDIT
+!     colnr_T oldcol = win->w_cursor.col;
+!     colnr_T oldcoladd = win->w_cursor.col + win->w_cursor.coladd;
+  #endif
+  
+!     len = (colnr_T)STRLEN(ml_get_buf(win->w_buffer, win->w_cursor.lnum, FALSE));
+      if (len == 0)
+!      win->w_cursor.col = 0;
+!     else if (win->w_cursor.col >= len)
+      {
+       /* Allow cursor past end-of-line when:
+        * - in Insert mode or restarting Insert mode
+***************
+*** 567,599 ****
+               || (ve_flags & VE_ONEMORE)
+  #endif
+               || virtual_active())
+!          curwin->w_cursor.col = len;
+       else
+       {
+!          curwin->w_cursor.col = len - 1;
+  #ifdef FEAT_MBYTE
+!          /* prevent cursor from moving on the trail byte */
+           if (has_mbyte)
+!              mb_adjust_cursor();
+  #endif
+       }
+      }
+!     else if (curwin->w_cursor.col < 0)
+!      curwin->w_cursor.col = 0;
+  
+  #ifdef FEAT_VIRTUALEDIT
+      /* If virtual editing is on, we can leave the cursor on the old position,
+       * only we must set it to virtual.  But don't do it when at the end of the
+       * line. */
+      if (oldcol == MAXCOL)
+!      curwin->w_cursor.coladd = 0;
+      else if (ve_flags == VE_ALL)
+      {
+!      if (oldcoladd > curwin->w_cursor.col)
+!          curwin->w_cursor.coladd = oldcoladd - curwin->w_cursor.col;
+       else
+           /* avoid weird number when there is a miscalculation or overflow */
+!          curwin->w_cursor.coladd = 0;
+      }
+  #endif
+  }
+--- 577,609 ----
+               || (ve_flags & VE_ONEMORE)
+  #endif
+               || virtual_active())
+!          win->w_cursor.col = len;
+       else
+       {
+!          win->w_cursor.col = len - 1;
+  #ifdef FEAT_MBYTE
+!          /* Move the cursor to the head byte. */
+           if (has_mbyte)
+!              mb_adjustpos(win->w_buffer, &win->w_cursor);
+  #endif
+       }
+      }
+!     else if (win->w_cursor.col < 0)
+!      win->w_cursor.col = 0;
+  
+  #ifdef FEAT_VIRTUALEDIT
+      /* If virtual editing is on, we can leave the cursor on the old position,
+       * only we must set it to virtual.  But don't do it when at the end of the
+       * line. */
+      if (oldcol == MAXCOL)
+!      win->w_cursor.coladd = 0;
+      else if (ve_flags == VE_ALL)
+      {
+!      if (oldcoladd > win->w_cursor.col)
+!          win->w_cursor.coladd = oldcoladd - win->w_cursor.col;
+       else
+           /* avoid weird number when there is a miscalculation or overflow */
+!          win->w_cursor.coladd = 0;
+      }
+  #endif
+  }
+*** ../vim-7.3.238/src/normal.c        2011-06-20 00:45:55.000000000 +0200
+--- src/normal.c       2011-07-07 14:27:57.000000000 +0200
+***************
+*** 8774,8780 ****
+       {
+           --pp->col;
+  #ifdef FEAT_MBYTE
+!          mb_adjustpos(pp);
+  #endif
+       }
+       else if (pp->lnum > 1)
+--- 8774,8780 ----
+       {
+           --pp->col;
+  #ifdef FEAT_MBYTE
+!          mb_adjustpos(curbuf, pp);
+  #endif
+       }
+       else if (pp->lnum > 1)
+*** ../vim-7.3.238/src/proto/mbyte.pro 2010-08-15 21:57:28.000000000 +0200
+--- src/proto/mbyte.pro        2011-07-07 14:27:09.000000000 +0200
+***************
+*** 56,62 ****
+  int utf_valid_string __ARGS((char_u *s, char_u *end));
+  int dbcs_screen_tail_off __ARGS((char_u *base, char_u *p));
+  void mb_adjust_cursor __ARGS((void));
+! void mb_adjustpos __ARGS((pos_T *lp));
+  char_u *mb_prevptr __ARGS((char_u *line, char_u *p));
+  int mb_charlen __ARGS((char_u *str));
+  int mb_charlen_len __ARGS((char_u *str, int len));
+--- 56,62 ----
+  int utf_valid_string __ARGS((char_u *s, char_u *end));
+  int dbcs_screen_tail_off __ARGS((char_u *base, char_u *p));
+  void mb_adjust_cursor __ARGS((void));
+! void mb_adjustpos __ARGS((buf_T *buf, pos_T *lp));
+  char_u *mb_prevptr __ARGS((char_u *line, char_u *p));
+  int mb_charlen __ARGS((char_u *str));
+  int mb_charlen_len __ARGS((char_u *str, int len));
+*** ../vim-7.3.238/src/proto/misc2.pro 2011-04-11 16:56:29.000000000 +0200
+--- src/proto/misc2.pro        2011-07-07 14:26:57.000000000 +0200
+***************
+*** 14,19 ****
+--- 14,20 ----
+  linenr_T get_cursor_rel_lnum __ARGS((win_T *wp, linenr_T lnum));
+  void check_cursor_lnum __ARGS((void));
+  void check_cursor_col __ARGS((void));
++ void check_cursor_col_win __ARGS((win_T *win));
+  void check_cursor __ARGS((void));
+  void adjust_cursor_col __ARGS((void));
+  int leftcol_changed __ARGS((void));
+*** ../vim-7.3.238/src/version.c       2011-07-07 15:04:38.000000000 +0200
+--- src/version.c      2011-07-07 15:05:49.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     239,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+256. You are able to write down over 250 symptoms of being an internet
+     addict, even though they only asked for 101.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.240.patch0 b/vim/patches/vim-7.3.240.patch0
new file mode 100644 (file)
index 0000000..7048ac1
--- /dev/null
@@ -0,0 +1,795 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.240
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Note: I haven't verified this works or even compiles.  Please send me a
+patch if you see a problem and can fix it.
+
+Patch 7.3.240
+Problem:    External commands can't use pipes on MS-Windows.
+Solution:   Implement pipes and use them when 'shelltemp' isn't set. (Vincent
+           Berthoux)
+Files:     src/eval.c, src/ex_cmds.c, src/misc2.c, src/os_unix.c,
+           src/os_win32.c, src/proto/misc2.pro, src/ui.c
+
+
+*** ../vim-7.3.239/src/eval.c  2011-06-19 02:55:32.000000000 +0200
+--- src/eval.c 2011-07-07 15:44:56.000000000 +0200
+***************
+*** 11931,11937 ****
+  #ifdef FEAT_SEARCHPATH
+       "file_in_path",
+  #endif
+! #if defined(UNIX) && !defined(USE_SYSTEM)
+       "filterpipe",
+  #endif
+  #ifdef FEAT_FIND_ID
+--- 11931,11937 ----
+  #ifdef FEAT_SEARCHPATH
+       "file_in_path",
+  #endif
+! #if (defined(UNIX) && !defined(USE_SYSTEM)) || defined(WIN3264)
+       "filterpipe",
+  #endif
+  #ifdef FEAT_FIND_ID
+*** ../vim-7.3.239/src/ex_cmds.c       2011-06-12 22:03:15.000000000 +0200
+--- src/ex_cmds.c      2011-07-07 15:44:56.000000000 +0200
+***************
+*** 1107,1113 ****
+      if (do_out)
+       shell_flags |= SHELL_DOOUT;
+  
+! #if !defined(USE_SYSTEM) && defined(UNIX)
+      if (!do_in && do_out && !p_stmp)
+      {
+       /* Use a pipe to fetch stdout of the command, do not use a temp file. */
+--- 1107,1113 ----
+      if (do_out)
+       shell_flags |= SHELL_DOOUT;
+  
+! #if (!defined(USE_SYSTEM) && defined(UNIX)) || defined(WIN3264)
+      if (!do_in && do_out && !p_stmp)
+      {
+       /* Use a pipe to fetch stdout of the command, do not use a temp file. */
+*** ../vim-7.3.239/src/misc2.c 2011-07-07 15:08:53.000000000 +0200
+--- src/misc2.c        2011-07-07 15:55:42.000000000 +0200
+***************
+*** 2146,2151 ****
+--- 2146,2170 ----
+      }
+  }
+  
++ #if (defined(UNIX) && !defined(USE_SYSTEM)) || defined(WIN3264)
++ /*
++  * Append the text in "gap" below the cursor line and clear "gap".
++  */
++     void
++ append_ga_line(gap)
++     garray_T *gap;
++ {
++     /* Remove trailing CR. */
++     if (gap->ga_len > 0
++          && !curbuf->b_p_bin
++          && ((char_u *)gap->ga_data)[gap->ga_len - 1] == CAR)
++      --gap->ga_len;
++     ga_append(gap, NUL);
++     ml_append(curwin->w_cursor.lnum++, gap->ga_data, 0, FALSE);
++     gap->ga_len = 0;
++ }
++ #endif
++ 
+  /************************************************************************
+   * functions that use lookup tables for various things, generally to do with
+   * special key codes.
+*** ../vim-7.3.239/src/os_unix.c       2011-04-11 16:56:29.000000000 +0200
+--- src/os_unix.c      2011-07-07 15:54:58.000000000 +0200
+***************
+*** 3660,3686 ****
+      /* Nothing to do. */
+  }
+  
+- #ifndef USE_SYSTEM
+- static void append_ga_line __ARGS((garray_T *gap));
+- 
+- /*
+-  * Append the text in "gap" below the cursor line and clear "gap".
+-  */
+-     static void
+- append_ga_line(gap)
+-     garray_T *gap;
+- {
+-     /* Remove trailing CR. */
+-     if (gap->ga_len > 0
+-          && !curbuf->b_p_bin
+-          && ((char_u *)gap->ga_data)[gap->ga_len - 1] == CAR)
+-      --gap->ga_len;
+-     ga_append(gap, NUL);
+-     ml_append(curwin->w_cursor.lnum++, gap->ga_data, 0, FALSE);
+-     gap->ga_len = 0;
+- }
+- #endif
+- 
+      int
+  mch_call_shell(cmd, options)
+      char_u   *cmd;
+--- 3660,3665 ----
+*** ../vim-7.3.239/src/os_win32.c      2011-05-25 17:06:16.000000000 +0200
+--- src/os_win32.c     2011-07-07 16:08:30.000000000 +0200
+***************
+*** 417,422 ****
+--- 417,427 ----
+  static PGNSECINFO pGetNamedSecurityInfo;
+  #endif
+  
++ typedef BOOL (WINAPI *PSETHANDLEINFORMATION)(HANDLE, DWORD, DWORD);
++ 
++ static BOOL allowPiping = FALSE;
++ static PSETHANDLEINFORMATION pSetHandleInformation;
++ 
+  /*
+   * Set g_PlatformId to VER_PLATFORM_WIN32_NT (NT) or
+   * VER_PLATFORM_WIN32_WINDOWS (Win95).
+***************
+*** 467,472 ****
+--- 472,489 ----
+           }
+       }
+  #endif
++      /*
++       * If we are on windows NT, try to load the pipe functions, only
++       * available from Win2K.
++       */
++      if (g_PlatformId == VER_PLATFORM_WIN32_NT)
++      {
++          HANDLE kernel32 = GetModuleHandle("kernel32");
++          pSetHandleInformation = (PSETHANDLEINFORMATION)GetProcAddress(
++                                          kernel32, "SetHandleInformation");
++ 
++          allowPiping = pSetHandleInformation != NULL;
++      }
+       done = TRUE;
+      }
+  }
+***************
+*** 1635,1641 ****
+  }
+  
+  #if ((defined(__MINGW32__) || defined (__CYGWIN32__)) && \
+!         __MSVCRT_VERSION__ >= 0x800) || (defined(_MSC_VER) && _MSC_VER >= 1400)
+  /*
+   * Bad parameter handler.
+   *
+--- 1652,1658 ----
+  }
+  
+  #if ((defined(__MINGW32__) || defined (__CYGWIN32__)) && \
+!        __MSVCRT_VERSION__ >= 0x800) || (defined(_MSC_VER) && _MSC_VER >= 1400)
+  /*
+   * Bad parameter handler.
+   *
+***************
+*** 3210,3216 ****
+   *    4. Prompt the user to press a key to close the console window
+   */
+      static int
+! mch_system(char *cmd, int options)
+  {
+      STARTUPINFO              si;
+      PROCESS_INFORMATION pi;
+--- 3227,3233 ----
+   *    4. Prompt the user to press a key to close the console window
+   */
+      static int
+! mch_system_classic(char *cmd, int options)
+  {
+      STARTUPINFO              si;
+      PROCESS_INFORMATION pi;
+***************
+*** 3315,3320 ****
+--- 3332,3829 ----
+  
+      return ret;
+  }
++ 
++ /*
++  * Thread launched by the gui to send the current buffer data to the
++  * process. This way avoid to hang up vim totally if the children
++  * process take a long time to process the lines.
++  */
++     static DWORD WINAPI
++ sub_process_writer(LPVOID param)
++ {
++     HANDLE       g_hChildStd_IN_Wr = param;
++     linenr_T     lnum = curbuf->b_op_start.lnum;
++     DWORD        len = 0;
++     DWORD        l;
++     char_u       *lp = ml_get(lnum);
++     char_u       *s;
++     int                  written = 0;
++ 
++     for (;;)
++     {
++      l = (DWORD)STRLEN(lp + written);
++      if (l == 0)
++          len = 0;
++      else if (lp[written] == NL)
++      {
++          /* NL -> NUL translation */
++          WriteFile(g_hChildStd_IN_Wr, "", 1, &len, NULL);
++      }
++      else
++      {
++          s = vim_strchr(lp + written, NL);
++          WriteFile(g_hChildStd_IN_Wr, (char *)lp + written,
++                    s == NULL ? l : (DWORD)(s - (lp + written)),
++                    &len, NULL);
++      }
++      if (len == (int)l)
++      {
++          /* Finished a line, add a NL, unless this line should not have
++           * one. */
++          if (lnum != curbuf->b_op_end.lnum
++              || !curbuf->b_p_bin
++              || (lnum != curbuf->b_no_eol_lnum
++                  && (lnum != curbuf->b_ml.ml_line_count
++                      || curbuf->b_p_eol)))
++          {
++              WriteFile(g_hChildStd_IN_Wr, "\n", 1, &ignored, NULL);
++          }
++ 
++          ++lnum;
++          if (lnum > curbuf->b_op_end.lnum)
++              break;
++ 
++          lp = ml_get(lnum);
++          written = 0;
++      }
++      else if (len > 0)
++          written += len;
++     }
++ 
++     /* finished all the lines, close pipe */
++     CloseHandle(g_hChildStd_IN_Wr);
++     ExitThread(0);
++ }
++ 
++ 
++ # define BUFLEN 100  /* length for buffer, stolen from unix version */
++ 
++ /*
++  * This function read from the children's stdout and write the
++  * data on screen or in the buffer accordingly.
++  */
++     static void
++ dump_pipe(int            options,
++        HANDLE    g_hChildStd_OUT_Rd,
++        garray_T  *ga,
++        char_u    buffer[],
++        DWORD     *buffer_off)
++ {
++     DWORD    availableBytes = 0;
++     DWORD    i;
++     int              c;
++     char_u   *p;
++     int              ret;
++     DWORD    len;
++     DWORD    toRead;
++     int              repeatCount;
++ 
++     /* we query the pipe to see if there is any data to read
++      * to avoid to perform a blocking read */
++     ret = PeekNamedPipe(g_hChildStd_OUT_Rd, /* pipe to query */
++                      NULL,               /* optional buffer */
++                      0,                  /* buffe size */
++                      NULL,               /* number of read bytes */
++                      &availableBytes,    /* available bytes total */
++                      NULL);              /* byteLeft */
++ 
++     repeatCount = 0;
++     /* We got real data in the pipe, read it */
++     while (ret != 0 && availableBytes > 0 && availableBytes > 0)
++     {
++      repeatCount++;
++      toRead =
++ # ifdef FEAT_MBYTE
++               (DWORD)(BUFLEN - *buffer_off);
++ # else
++               (DWORD)BUFLEN;
++ # endif
++      toRead = availableBytes < toRead ? availableBytes : toRead;
++      ReadFile(g_hChildStd_OUT_Rd, buffer
++ # ifdef FEAT_MBYTE
++               + *buffer_off, toRead
++ # else
++               , toRead
++ # endif
++               , &len, NULL);
++ 
++      /* If we haven't read anything, there is a problem */
++      if (len == 0)
++          break;
++ 
++      availableBytes -= len;
++ 
++      if (options & SHELL_READ)
++      {
++          /* Do NUL -> NL translation, append NL separated
++           * lines to the current buffer. */
++          for (i = 0; i < len; ++i)
++          {
++              if (buffer[i] == NL)
++                  append_ga_line(ga);
++              else if (buffer[i] == NUL)
++                  ga_append(ga, NL);
++              else
++                  ga_append(ga, buffer[i]);
++          }
++      }
++ # ifdef FEAT_MBYTE
++      else if (has_mbyte)
++      {
++          int         l;
++ 
++          len += *buffer_off;
++          buffer[len] = NUL;
++ 
++          /* Check if the last character in buffer[] is
++           * incomplete, keep these bytes for the next
++           * round. */
++          for (p = buffer; p < buffer + len; p += l)
++          {
++              l = mb_cptr2len(p);
++              if (l == 0)
++                  l = 1;  /* NUL byte? */
++              else if (MB_BYTE2LEN(*p) != l)
++                  break;
++          }
++          if (p == buffer)    /* no complete character */
++          {
++              /* avoid getting stuck at an illegal byte */
++              if (len >= 12)
++                  ++p;
++              else
++              {
++                  *buffer_off = len;
++                  return;
++              }
++          }
++          c = *p;
++          *p = NUL;
++          msg_puts(buffer);
++          if (p < buffer + len)
++          {
++              *p = c;
++              *buffer_off = (DWORD)((buffer + len) - p);
++              mch_memmove(buffer, p, *buffer_off);
++              return;
++          }
++          *buffer_off = 0;
++      }
++ # endif /* FEAT_MBYTE */
++      else
++      {
++          buffer[len] = NUL;
++          msg_puts(buffer);
++      }
++ 
++      windgoto(msg_row, msg_col);
++      cursor_on();
++      out_flush();
++     }
++ }
++ 
++ /*
++  * Version of system to use for windows NT > 5.0 (Win2K), use pipe
++  * for communication and doesn't open any new window.
++  */
++     static int
++ mch_system_piped(char *cmd, int options)
++ {
++     STARTUPINFO              si;
++     PROCESS_INFORMATION pi;
++     DWORD            ret = 0;
++ 
++     HANDLE g_hChildStd_IN_Rd = NULL;
++     HANDLE g_hChildStd_IN_Wr = NULL;
++     HANDLE g_hChildStd_OUT_Rd = NULL;
++     HANDLE g_hChildStd_OUT_Wr = NULL;
++ 
++     char_u   buffer[BUFLEN + 1]; /* reading buffer + size */
++     DWORD    len;
++ 
++     /* buffer used to receive keys */
++     char_u   ta_buf[BUFLEN + 1];     /* TypeAHead */
++     int              ta_len = 0;             /* valid bytes in ta_buf[] */
++ 
++     DWORD    i;
++     int              c;
++     int              noread_cnt = 0;
++     garray_T ga;
++     int          delay = 1;
++ # ifdef FEAT_MBYTE
++     DWORD    buffer_off = 0; /* valid bytes in buffer[] */
++ # endif
++ 
++     SECURITY_ATTRIBUTES saAttr;
++ 
++     /* Set the bInheritHandle flag so pipe handles are inherited. */
++     saAttr.nLength = sizeof(SECURITY_ATTRIBUTES);
++     saAttr.bInheritHandle = TRUE;
++     saAttr.lpSecurityDescriptor = NULL;
++ 
++     if ( ! CreatePipe(&g_hChildStd_OUT_Rd, &g_hChildStd_OUT_Wr, &saAttr, 0)
++      /* Ensure the read handle to the pipe for STDOUT is not inherited. */
++        || ! pSetHandleInformation(g_hChildStd_OUT_Rd, HANDLE_FLAG_INHERIT, 0)
++      /* Create a pipe for the child process's STDIN. */
++        || ! CreatePipe(&g_hChildStd_IN_Rd, &g_hChildStd_IN_Wr, &saAttr, 0)
++      /* Ensure the write handle to the pipe for STDIN is not inherited. */
++        || ! pSetHandleInformation(g_hChildStd_IN_Wr, HANDLE_FLAG_INHERIT, 0) )
++     {
++      CloseHandle(g_hChildStd_IN_Rd);
++      CloseHandle(g_hChildStd_IN_Wr);
++      CloseHandle(g_hChildStd_OUT_Rd);
++      CloseHandle(g_hChildStd_OUT_Wr);
++      MSG_PUTS(_("\nCannot create pipes\n"));
++     }
++ 
++     si.cb = sizeof(si);
++     si.lpReserved = NULL;
++     si.lpDesktop = NULL;
++     si.lpTitle = NULL;
++     si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
++ 
++     /* set-up our file redirection */
++     si.hStdError = g_hChildStd_OUT_Wr;
++     si.hStdOutput = g_hChildStd_OUT_Wr;
++     si.hStdInput = g_hChildStd_IN_Rd;
++     si.wShowWindow = SW_HIDE;
++     si.cbReserved2 = 0;
++     si.lpReserved2 = NULL;
++ 
++     if (options & SHELL_READ)
++      ga_init2(&ga, 1, BUFLEN);
++ 
++     /* Now, run the command */
++     CreateProcess(NULL,                      /* Executable name */
++                cmd,                  /* Command to execute */
++                NULL,                 /* Process security attributes */
++                NULL,                 /* Thread security attributes */
++ 
++                // this command can be litigeous, handle inheritence was
++                // deactivated for pending temp file, but, if we deactivate
++                // it, the pipes don't work for some reason.
++                TRUE,                 /* Inherit handles, first deactivated,
++                                       * but needed */
++                CREATE_DEFAULT_ERROR_MODE, /* Creation flags */
++                NULL,                 /* Environment */
++                NULL,                 /* Current directory */
++                &si,                  /* Startup information */
++                &pi);                 /* Process information */
++ 
++ 
++     /* Close our unused side of the pipes */
++     CloseHandle(g_hChildStd_IN_Rd);
++     CloseHandle(g_hChildStd_OUT_Wr);
++ 
++     if (options & SHELL_WRITE)
++     {
++      HANDLE thread =
++         CreateThread(NULL,  /* security attributes */
++                      0,     /* default stack size */
++                      sub_process_writer, /* function to be executed */
++                      g_hChildStd_IN_Wr,  /* parameter */
++                      0,               /* creation flag, start immediately */
++                      NULL);              /* we don't care about thread id */
++      CloseHandle(thread);
++      g_hChildStd_IN_Wr = NULL;
++     }
++ 
++     /* Keep updating the window while waiting for the shell to finish. */
++     for (;;)
++     {
++      MSG     msg;
++ 
++      if (PeekMessage(&msg, (HWND)NULL, 0, 0, PM_REMOVE))
++      {
++          TranslateMessage(&msg);
++          DispatchMessage(&msg);
++      }
++ 
++      /* write pipe information in the window */
++      if ((options & (SHELL_READ|SHELL_WRITE))
++ # ifdef FEAT_GUI
++              || gui.in_use
++ # endif
++          )
++      {
++          len = 0;
++          if (!(options & SHELL_EXPAND)
++              && ((options &
++                      (SHELL_READ|SHELL_WRITE|SHELL_COOKED))
++                  != (SHELL_READ|SHELL_WRITE|SHELL_COOKED)
++ # ifdef FEAT_GUI
++                  || gui.in_use
++ # endif
++                  )
++              && (ta_len > 0 || noread_cnt > 4))
++          {
++              if (ta_len == 0)
++              {
++                  /* Get extra characters when we don't have any.  Reset the
++                   * counter and timer. */
++                  noread_cnt = 0;
++ # if defined(HAVE_GETTIMEOFDAY) && defined(HAVE_SYS_TIME_H)
++                  gettimeofday(&start_tv, NULL);
++ # endif
++                  len = ui_inchar(ta_buf, BUFLEN, 10L, 0);
++              }
++              if (ta_len > 0 || len > 0)
++              {
++                  /*
++                   * For pipes: Check for CTRL-C: send interrupt signal to
++                   * child.  Check for CTRL-D: EOF, close pipe to child.
++                   */
++                  if (len == 1 && cmd != NULL)
++                  {
++                      if (ta_buf[ta_len] == Ctrl_C)
++                      {
++                          /* Learn what exit code is expected, for
++                              * now put 9 as SIGKILL */
++                          TerminateProcess(pi.hProcess, 9);
++                      }
++                      if (ta_buf[ta_len] == Ctrl_D)
++                      {
++                          CloseHandle(g_hChildStd_IN_Wr);
++                          g_hChildStd_IN_Wr = NULL;
++                      }
++                  }
++ 
++                  /* replace K_BS by <BS> and K_DEL by <DEL> */
++                  for (i = ta_len; i < ta_len + len; ++i)
++                  {
++                      if (ta_buf[i] == CSI && len - i > 2)
++                      {
++                          c = TERMCAP2KEY(ta_buf[i + 1], ta_buf[i + 2]);
++                          if (c == K_DEL || c == K_KDEL || c == K_BS)
++                          {
++                              mch_memmove(ta_buf + i + 1, ta_buf + i + 3,
++                                          (size_t)(len - i - 2));
++                              if (c == K_DEL || c == K_KDEL)
++                                  ta_buf[i] = DEL;
++                              else
++                                  ta_buf[i] = Ctrl_H;
++                              len -= 2;
++                          }
++                      }
++                      else if (ta_buf[i] == '\r')
++                          ta_buf[i] = '\n';
++ # ifdef FEAT_MBYTE
++                      if (has_mbyte)
++                          i += (*mb_ptr2len_len)(ta_buf + i,
++                                                  ta_len + len - i) - 1;
++ # endif
++                  }
++ 
++                  /*
++                   * For pipes: echo the typed characters.  For a pty this
++                   * does not seem to work.
++                   */
++                  for (i = ta_len; i < ta_len + len; ++i)
++                  {
++                      if (ta_buf[i] == '\n' || ta_buf[i] == '\b')
++                          msg_putchar(ta_buf[i]);
++ # ifdef FEAT_MBYTE
++                      else if (has_mbyte)
++                      {
++                          int l = (*mb_ptr2len)(ta_buf + i);
++ 
++                          msg_outtrans_len(ta_buf + i, l);
++                          i += l - 1;
++                      }
++ # endif
++                      else
++                          msg_outtrans_len(ta_buf + i, 1);
++                  }
++                  windgoto(msg_row, msg_col);
++                  out_flush();
++ 
++                  ta_len += len;
++ 
++                  /*
++                   * Write the characters to the child, unless EOF has been
++                   * typed for pipes.  Write one character at a time, to
++                   * avoid losing too much typeahead.  When writing buffer
++                   * lines, drop the typed characters (only check for
++                   * CTRL-C).
++                   */
++                  if (options & SHELL_WRITE)
++                      ta_len = 0;
++                  else if (g_hChildStd_IN_Wr != NULL)
++                  {
++                      WriteFile(g_hChildStd_IN_Wr, (char*)ta_buf,
++                                  1, &len, NULL);
++                      // if we are typing in, we want to keep things reactive
++                      delay = 1;
++                      if (len > 0)
++                      {
++                          ta_len -= len;
++                          mch_memmove(ta_buf, ta_buf + len, ta_len);
++                      }
++                  }
++              }
++          }
++      }
++ 
++      if (ta_len)
++          ui_inchar_undo(ta_buf, ta_len);
++ 
++      if (WaitForSingleObject(pi.hProcess, delay) != WAIT_TIMEOUT)
++      {
++          dump_pipe(options, g_hChildStd_OUT_Rd,
++                      &ga, buffer, &buffer_off);
++          break;
++      }
++ 
++      ++noread_cnt;
++      dump_pipe(options, g_hChildStd_OUT_Rd,
++                  &ga, buffer, &buffer_off);
++ 
++      /* We start waiting for a very short time and then increase it, so
++       * that we respond quickly when the process is quick, and don't
++       * consume too much overhead when it's slow. */
++      if (delay < 50)
++          delay += 10;
++     }
++ 
++     /* Close the pipe */
++     CloseHandle(g_hChildStd_OUT_Rd);
++     if (g_hChildStd_IN_Wr != NULL)
++      CloseHandle(g_hChildStd_IN_Wr);
++ 
++     WaitForSingleObject(pi.hProcess, INFINITE);
++ 
++     /* Get the command exit code */
++     GetExitCodeProcess(pi.hProcess, &ret);
++ 
++     if (options & SHELL_READ)
++     {
++      if (ga.ga_len > 0)
++      {
++          append_ga_line(&ga);
++          /* remember that the NL was missing */
++          curbuf->b_no_eol_lnum = curwin->w_cursor.lnum;
++      }
++      else
++          curbuf->b_no_eol_lnum = 0;
++      ga_clear(&ga);
++     }
++ 
++     /* Close the handles to the subprocess, so that it goes away */
++     CloseHandle(pi.hThread);
++     CloseHandle(pi.hProcess);
++ 
++     return ret;
++ }
++ 
++     static int
++ mch_system(char *cmd, int options)
++ {
++     /* if we can pipe and the shelltemp option is off */
++     if (allowPiping && !p_stmp)
++      return mch_system_piped(cmd, options);
++     else
++      return mch_system_classic(cmd, options);
++ }
+  #else
+  
+  # define mch_system(c, o) system(c)
+***************
+*** 3388,3394 ****
+       char_u *newcmd;
+       long_u cmdlen =  (
+  #ifdef FEAT_GUI_W32
+!              STRLEN(vimrun_path) +
+  #endif
+               STRLEN(p_sh) + STRLEN(p_shcf) + STRLEN(cmd) + 10);
+  
+--- 3897,3903 ----
+       char_u *newcmd;
+       long_u cmdlen =  (
+  #ifdef FEAT_GUI_W32
+!              (allowPiping && !p_stmp ? 0 : STRLEN(vimrun_path)) +
+  #endif
+               STRLEN(p_sh) + STRLEN(p_shcf) + STRLEN(cmd) + 10);
+  
+***************
+*** 3497,3503 ****
+                           MB_ICONWARNING);
+                   need_vimrun_warning = FALSE;
+               }
+!              if (!s_dont_use_vimrun)
+                   /* Use vimrun to execute the command.  It opens a console
+                    * window, which can be closed without killing Vim. */
+                   vim_snprintf((char *)newcmd, cmdlen, "%s%s%s %s %s",
+--- 4006,4012 ----
+                           MB_ICONWARNING);
+                   need_vimrun_warning = FALSE;
+               }
+!              if (!s_dont_use_vimrun && (!allowPiping || p_stmp))
+                   /* Use vimrun to execute the command.  It opens a console
+                    * window, which can be closed without killing Vim. */
+                   vim_snprintf((char *)newcmd, cmdlen, "%s%s%s %s %s",
+***************
+*** 3521,3527 ****
+      /* Print the return value, unless "vimrun" was used. */
+      if (x != 0 && !(options & SHELL_SILENT) && !emsg_silent
+  #if defined(FEAT_GUI_W32)
+!              && ((options & SHELL_DOOUT) || s_dont_use_vimrun)
+  #endif
+           )
+      {
+--- 4030,4037 ----
+      /* Print the return value, unless "vimrun" was used. */
+      if (x != 0 && !(options & SHELL_SILENT) && !emsg_silent
+  #if defined(FEAT_GUI_W32)
+!              && ((options & SHELL_DOOUT) || s_dont_use_vimrun
+!                                                || (allowPiping && !p_stmp))
+  #endif
+           )
+      {
+*** ../vim-7.3.239/src/proto/misc2.pro 2011-07-07 15:08:53.000000000 +0200
+--- src/proto/misc2.pro        2011-07-07 15:56:16.000000000 +0200
+***************
+*** 58,63 ****
+--- 58,64 ----
+  char_u *ga_concat_strings __ARGS((garray_T *gap));
+  void ga_concat __ARGS((garray_T *gap, char_u *s));
+  void ga_append __ARGS((garray_T *gap, int c));
++ void append_ga_line __ARGS((garray_T *gap));
+  int name_to_mod_mask __ARGS((int c));
+  int simplify_key __ARGS((int key, int *modifiers));
+  int handle_x_keys __ARGS((int key));
+*** ../vim-7.3.239/src/ui.c    2011-06-19 01:14:23.000000000 +0200
+--- src/ui.c   2011-07-07 15:44:56.000000000 +0200
+***************
+*** 58,64 ****
+  #endif
+  }
+  
+! #if defined(UNIX) || defined(VMS) || defined(PROTO)
+  /*
+   * When executing an external program, there may be some typed characters that
+   * are not consumed by it.  Give them back to ui_inchar() and they are stored
+--- 58,64 ----
+  #endif
+  }
+  
+! #if defined(UNIX) || defined(VMS) || defined(PROTO) || defined(WIN3264)
+  /*
+   * When executing an external program, there may be some typed characters that
+   * are not consumed by it.  Give them back to ui_inchar() and they are stored
+*** ../vim-7.3.239/src/version.c       2011-07-07 15:08:53.000000000 +0200
+--- src/version.c      2011-07-07 16:14:20.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     240,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+257. Your "hundred-and-one" lists include well over 101 items, since you
+     automatically interpret all numbers in hexadecimal notation.
+     (hex 101 = decimal 257)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.241.patch0 b/vim/patches/vim-7.3.241.patch0
new file mode 100644 (file)
index 0000000..3b73c4d
--- /dev/null
@@ -0,0 +1,71 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.241
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.241
+Problem:    Using CTRL-R CTRL-W on the command line may insert only part of
+           the word.
+Solution:   Use the cursor position instead of assuming it is at the end of
+           the command. (Tyru)
+Files:     src/ex_getln.c
+
+
+*** ../vim-7.3.240/src/ex_getln.c      2011-07-07 15:04:38.000000000 +0200
+--- src/ex_getln.c     2011-07-07 16:38:50.000000000 +0200
+***************
+*** 3046,3052 ****
+           int     len;
+  
+           /* Locate start of last word in the cmd buffer. */
+!          for (w = ccline.cmdbuff + ccline.cmdlen; w > ccline.cmdbuff; )
+           {
+  #ifdef FEAT_MBYTE
+               if (has_mbyte)
+--- 3046,3052 ----
+           int     len;
+  
+           /* Locate start of last word in the cmd buffer. */
+!          for (w = ccline.cmdbuff + ccline.cmdpos; w > ccline.cmdbuff; )
+           {
+  #ifdef FEAT_MBYTE
+               if (has_mbyte)
+***************
+*** 3064,3070 ****
+                   --w;
+               }
+           }
+!          len = (int)((ccline.cmdbuff + ccline.cmdlen) - w);
+           if (p_ic ? STRNICMP(w, arg, len) == 0 : STRNCMP(w, arg, len) == 0)
+               p += len;
+       }
+--- 3064,3070 ----
+                   --w;
+               }
+           }
+!          len = (int)((ccline.cmdbuff + ccline.cmdpos) - w);
+           if (p_ic ? STRNICMP(w, arg, len) == 0 : STRNCMP(w, arg, len) == 0)
+               p += len;
+       }
+*** ../vim-7.3.240/src/version.c       2011-07-07 16:20:45.000000000 +0200
+--- src/version.c      2011-07-07 16:41:29.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     241,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+258. When you want to see your girlfriend, you surf to her homepage.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.242.patch0 b/vim/patches/vim-7.3.242.patch0
new file mode 100644 (file)
index 0000000..0cf4db9
--- /dev/null
@@ -0,0 +1,71 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.242
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.242
+Problem:    Illegal memory access in after_pathsep().
+Solution:   Check that the pointer is not at the start of the file name.
+           (Dominique Pelle)
+Files:     src/misc2.c
+
+
+*** ../vim-7.3.241/src/misc2.c 2011-07-07 16:20:45.000000000 +0200
+--- src/misc2.c        2011-07-07 17:05:41.000000000 +0200
+***************
+*** 3247,3253 ****
+  #if defined(FEAT_MBYTE) || defined(PROTO)
+  /*
+   * Return TRUE if "p" points to just after a path separator.
+!  * Take care of multi-byte characters.
+   * "b" must point to the start of the file name
+   */
+      int
+--- 3247,3253 ----
+  #if defined(FEAT_MBYTE) || defined(PROTO)
+  /*
+   * Return TRUE if "p" points to just after a path separator.
+!  * Takes care of multi-byte characters.
+   * "b" must point to the start of the file name
+   */
+      int
+***************
+*** 3255,3261 ****
+      char_u   *b;
+      char_u   *p;
+  {
+!     return vim_ispathsep(p[-1])
+                            && (!has_mbyte || (*mb_head_off)(b, p - 1) == 0);
+  }
+  #endif
+--- 3255,3261 ----
+      char_u   *b;
+      char_u   *p;
+  {
+!     return p > b && vim_ispathsep(p[-1])
+                            && (!has_mbyte || (*mb_head_off)(b, p - 1) == 0);
+  }
+  #endif
+*** ../vim-7.3.241/src/version.c       2011-07-07 16:44:33.000000000 +0200
+--- src/version.c      2011-07-07 17:05:49.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     242,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+260. Co-workers have to E-mail you about the fire alarm to get
+     you out of the building.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.243.patch0 b/vim/patches/vim-7.3.243.patch0
new file mode 100644 (file)
index 0000000..f1f913d
--- /dev/null
@@ -0,0 +1,52 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.243
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.243
+Problem:    Illegal memory access in readline().
+Solution:   Swap the conditions. (Dominique Pelle)
+Files:     src/eval.c
+
+
+*** ../vim-7.3.242/src/eval.c  2011-07-07 16:20:45.000000000 +0200
+--- src/eval.c 2011-07-07 17:32:16.000000000 +0200
+***************
+*** 14318,14324 ****
+       tolist = 0;
+       for ( ; filtd < buflen || readlen <= 0; ++filtd)
+       {
+!          if (buf[filtd] == '\n' || readlen <= 0)
+           {
+               /* In binary mode add an empty list item when the last
+                * non-empty line ends in a '\n'. */
+--- 14318,14324 ----
+       tolist = 0;
+       for ( ; filtd < buflen || readlen <= 0; ++filtd)
+       {
+!          if (readlen <= 0 || buf[filtd] == '\n')
+           {
+               /* In binary mode add an empty list item when the last
+                * non-empty line ends in a '\n'. */
+*** ../vim-7.3.242/src/version.c       2011-07-07 17:15:29.000000000 +0200
+--- src/version.c      2011-07-07 17:32:30.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     243,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+261. You find diskettes in your pockets when doing laundry.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.244.patch0 b/vim/patches/vim-7.3.244.patch0
new file mode 100644 (file)
index 0000000..4cff94f
--- /dev/null
@@ -0,0 +1,48 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.244
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.244
+Problem:    MS-Windows: Build problem with old compiler. (John Beckett)
+Solution:   Only use HandleToLong() when available. (Mike Williams)
+Files:     src/gui_w32.c
+
+
+*** ../vim-7.3.243/src/gui_w32.c       2011-05-25 21:18:02.000000000 +0200
+--- src/gui_w32.c      2011-07-07 17:42:36.000000000 +0200
+***************
+*** 1574,1579 ****
+--- 1574,1583 ----
+  #endif
+  
+  #ifdef FEAT_EVAL
++ # if _MSC_VER < 1400
++ /* HandleToLong() only exists in compilers that can do 64 bit builds */
++ #  define HandleToLong(h) ((long)(h))
++ # endif
+      /* set the v:windowid variable */
+      set_vim_var_nr(VV_WINDOWID, HandleToLong(s_hwnd));
+  #endif
+*** ../vim-7.3.243/src/version.c       2011-07-07 17:36:52.000000000 +0200
+--- src/version.c      2011-07-07 17:43:21.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     244,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+262. Your computer has it's own phone line - but your daughter doesn't.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.245.patch0 b/vim/patches/vim-7.3.245.patch0
new file mode 100644 (file)
index 0000000..b05fe43
--- /dev/null
@@ -0,0 +1,81 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.245
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.245
+Problem:    Python 3.2 libraries not correctly detected.
+Solution:   Add the suffix to the library name. (Niclas Zeising)
+Files:     src/auto/configure, src/configure.in
+
+
+*** ../vim-7.3.244/src/auto/configure  2011-06-13 01:32:42.000000000 +0200
+--- src/auto/configure 2011-07-13 17:57:05.000000000 +0200
+***************
+*** 5611,5617 ****
+  eof
+                      eval "`cd ${PYTHON3_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
+            rm -f -- "${tmp_mkf}"
+!           vi_cv_path_python3_plibs="-L${PYTHON3_CONFDIR} -lpython${vi_cv_var_python3_version}"
+            vi_cv_path_python3_plibs="${vi_cv_path_python3_plibs} ${python3_BASEMODLIBS} ${python3_LIBS} ${python3_SYSLIBS}"
+                      vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-ltermcap//`
+            vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-lffi//`
+--- 5611,5617 ----
+  eof
+                      eval "`cd ${PYTHON3_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
+            rm -f -- "${tmp_mkf}"
+!        vi_cv_path_python3_plibs="-L${PYTHON3_CONFDIR} -lpython${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags}"
+            vi_cv_path_python3_plibs="${vi_cv_path_python3_plibs} ${python3_BASEMODLIBS} ${python3_LIBS} ${python3_SYSLIBS}"
+                      vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-ltermcap//`
+            vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-lffi//`
+*** ../vim-7.3.244/src/configure.in    2011-06-13 01:32:42.000000000 +0200
+--- src/configure.in   2011-07-13 17:57:01.000000000 +0200
+***************
+*** 1068,1074 ****
+            dnl -- delete the lines from make about Entering/Leaving directory
+            eval "`cd ${PYTHON3_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
+            rm -f -- "${tmp_mkf}"
+!           vi_cv_path_python3_plibs="-L${PYTHON3_CONFDIR} -lpython${vi_cv_var_python3_version}"
+            vi_cv_path_python3_plibs="${vi_cv_path_python3_plibs} ${python3_BASEMODLIBS} ${python3_LIBS} ${python3_SYSLIBS}"
+            dnl remove -ltermcap, it can conflict with an earlier -lncurses
+            vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-ltermcap//`
+--- 1068,1074 ----
+            dnl -- delete the lines from make about Entering/Leaving directory
+            eval "`cd ${PYTHON3_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
+            rm -f -- "${tmp_mkf}"
+!        vi_cv_path_python3_plibs="-L${PYTHON3_CONFDIR} -lpython${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags}"
+            vi_cv_path_python3_plibs="${vi_cv_path_python3_plibs} ${python3_BASEMODLIBS} ${python3_LIBS} ${python3_SYSLIBS}"
+            dnl remove -ltermcap, it can conflict with an earlier -lncurses
+            vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-ltermcap//`
+*** ../vim-7.3.244/src/version.c       2011-07-07 17:43:37.000000000 +0200
+--- src/version.c      2011-07-15 13:09:17.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     245,
+  /**/
+
+
+-- 
+       When danger reared its ugly head,
+       He bravely turned his tail and fled
+       Yes, Brave Sir Robin turned about
+       And gallantly he chickened out
+       Bravely taking to his feet
+       He beat a very brave retreat
+       Bravest of the brave Sir Robin
+       Petrified of being dead
+       Soiled his pants then brave Sir Robin
+       Turned away and fled.
+                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.246.patch0 b/vim/patches/vim-7.3.246.patch0
new file mode 100644 (file)
index 0000000..d9982ea
--- /dev/null
@@ -0,0 +1,55 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.246
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.246 (after 7.3.235)
+Problem:    Repeating "f4" in "4444" skips one 4.
+Solution:   Check the t_cmd flag. (Christian Brabandt)
+Files:     src/search.c
+
+
+*** ../vim-7.3.245/src/search.c        2011-06-26 05:36:07.000000000 +0200
+--- src/search.c       2011-07-15 13:16:49.000000000 +0200
+***************
+*** 1585,1591 ****
+       /* Force a move of at least one char, so ";" and "," will move the
+        * cursor, even if the cursor is right in front of char we are looking
+        * at. */
+!      if (vim_strchr(p_cpo, CPO_SCOLON) == NULL && count == 1)
+           stop = FALSE;
+      }
+  
+--- 1585,1591 ----
+       /* Force a move of at least one char, so ";" and "," will move the
+        * cursor, even if the cursor is right in front of char we are looking
+        * at. */
+!      if (vim_strchr(p_cpo, CPO_SCOLON) == NULL && count == 1 && t_cmd)
+           stop = FALSE;
+      }
+  
+*** ../vim-7.3.245/src/version.c       2011-07-15 13:09:46.000000000 +0200
+--- src/version.c      2011-07-15 13:20:40.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     246,
+  /**/
+
+-- 
+   GALAHAD turns back.  We see from his POV the lovely ZOOT standing by him
+   smiling enchantingly and a number of equally delectable GIRLIES draped
+   around in the seductively poulticed room.  They look at him smilingly and
+   wave.
+                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.247.patch0 b/vim/patches/vim-7.3.247.patch0
new file mode 100644 (file)
index 0000000..a0cb566
--- /dev/null
@@ -0,0 +1,95 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.247
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.247
+Problem:    Running tests changes the users viminfo file.  Test for patch 
+            7.3.246 missing.
+Solution:   Add "nviminfo" to the 'viminfo' option.  Include the test.
+Files:      src/testdir/test78.in, src/testdir/test81.in
+
+
+*** ../vim-7.3.246/src/testdir/test78.in       2011-06-13 01:07:22.000000000 +0200
+--- src/testdir/test78.in      2011-07-15 13:26:22.000000000 +0200
+***************
+*** 6,12 ****
+  
+  STARTTEST
+  :so small.vim
+! :set nocp fileformat=unix undolevels=-1
+  :e! Xtest
+  ggdG
+  :let text = "\tabcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnoparstuvwxyz0123456789"
+--- 6,12 ----
+  
+  STARTTEST
+  :so small.vim
+! :set nocp fileformat=unix undolevels=-1 viminfo+=nviminfo
+  :e! Xtest
+  ggdG
+  :let text = "\tabcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnoparstuvwxyz0123456789"
+*** ../vim-7.3.246/src/testdir/test81.in       2011-06-26 05:36:07.000000000 +0200
+--- src/testdir/test81.in      2011-07-15 13:25:00.000000000 +0200
+***************
+*** 1,10 ****
+  Test for t movement command and 'cpo-;' setting
+  
+  STARTTEST
+! :set nocompatible
+  :set cpo-=;
+  /firstline/
+  j0tt;D
+  $Ty;D:set cpo+=;
+  j0tt;;D
+  $Ty;;D:?firstline?+1,$w! test.out
+--- 1,12 ----
+  Test for t movement command and 'cpo-;' setting
+  
+  STARTTEST
+! :set nocompatible viminfo+=nviminfo
+  :set cpo-=;
+  /firstline/
+  j0tt;D
++ 0fz;D
++ $Fy;D
+  $Ty;D:set cpo+=;
+  j0tt;;D
+  $Ty;;D:?firstline?+1,$w! test.out
+***************
+*** 13,18 ****
+--- 15,22 ----
+  
+  firstline
+  aaa two three four
++     zzz
++ yyy   
+  bbb yee yoo four
+  ccc two three four
+  ddd yee yoo four
+*** ../vim-7.3.246/src/version.c       2011-07-15 13:21:24.000000000 +0200
+--- src/version.c      2011-07-15 13:31:14.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     247,
+  /**/
+
+-- 
+ZOOT:  I'm afraid our life must seem very dull and quiet compared to yours.
+       We are but eightscore young blondes, all between sixteen and
+       nineteen-and-a-half, cut off in this castle, with no one to protect us.
+       Oooh.  It is a lonely life ... bathing ...  dressing ... undressing ...
+       making exciting underwear....
+                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.248.patch0 b/vim/patches/vim-7.3.248.patch0
new file mode 100644 (file)
index 0000000..6fbf3f6
--- /dev/null
@@ -0,0 +1,129 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.248
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.248
+Problem:    PC Install instructions missing install instructions.
+Solution:   Step-by-step explanation. (Michael Soyka)
+Files:     src/INSTALLpc.txt
+
+
+*** ../vim-7.3.247/src/INSTALLpc.txt   2011-06-12 20:36:00.000000000 +0200
+--- src/INSTALLpc.txt  2011-07-15 13:49:46.000000000 +0200
+***************
+*** 11,19 ****
+  this, then you will get the default behavior as is documented, which should
+  be fine for most people.
+  
+! With the exception of the last two sections (Windows 3.1 and MS-DOS),
+! this document assumes that you are building Vim for Win32
+! (Windows NT/2000/XP/2003/Vista and Windows 95/98/Me)
+  
+  
+  Contents:
+--- 11,19 ----
+  this, then you will get the default behavior as is documented, which should
+  be fine for most people.
+  
+! With the exception of two sections (Windows 3.1 and MS-DOS), this document
+! assumes that you are building Vim for Win32 or later.
+! (Windows 95/98/Me/NT/2000/XP/2003/Vista/7)
+  
+  
+  Contents:
+***************
+*** 27,32 ****
+--- 27,35 ----
+  8. Windows 3.1
+  9. MS-DOS
+  
++ 10. Installing after building from sources
++ 
++ 
+  The currently preferred method is using the free Visual C++ Toolkit 2008
+  |msvc-2008-express|, the produced binary runs on most MS-Windows systems.  If
+  you need the executable to run on Windows 98 or ME, use the 2003 one
+***************
+*** 409,411 ****
+--- 412,470 ----
+  
+  If you get all kinds of strange error messages when compiling, try adding
+  changing the file format from "unix" to "dos".
++ 
++ 
++ 10. Installing after building from sources
++ ==========================================
++ 
++ [provided by Michael Soyka]
++ 
++ After you've built the Vim binaries as described above, you're ready to
++ install Vim on your system.  However, if you've obtained the Vim sources
++ using Mercurial or by downloading them as a unix tar file, you must first 
++ create a "vim73" directory.  If you instead downloaded the sources as
++ zip files, you can skip this setup as the zip archives already have the
++ correct directory structure.  
++ 
++   A.  Create a Vim "runtime" subdirectory named "vim73"
++   -----------------------------------------------------
++   If you obtained your Vim sources as zip files, you can skip this step.  
++   Otherwise, continue reading.
++ 
++   Go to the directory that contains the Vim "src" and "runtime"
++   directories and create a new subdirectory named "vim73".  
++   
++   Copy the "runtime" files into "vim73":
++      copy runtime\* vim73
++ 
++   B.  Copy the new binaries into the "vim73" directory
++   ----------------------------------------------------
++   Regardless of how you installed the Vim sources, you need to copy the
++   new binaries you created above into "vim73":
++ 
++      copy src\*.exe vim73
++      copy src\GvimExt\gvimext.dll vim73
++      copy src\xxd\xxd.exe vim73
++ 
++   C.  Move the "vim73" directory into the Vim installation subdirectory
++   ---------------------------------------------------------------------
++   Move the "vim73" subdirectory into the subdirectory where you want Vim
++   to be installed.  Typically, this subdirectory will be named "vim".  
++   If you already have a "vim73" subdirectory in "vim", delete it first
++   by running its unstal.exe program.  
++ 
++   D.  Install Vim
++   ---------------
++   "cd" to your Vim installation subdirectory "vim\vim73" and run the
++   "install.exe" program.  It will ask you a number of questions about
++   how you would like to have your Vim setup.  Among these are:
++   - You can tell it to write a "_vimrc" file with your preferences in the
++     parent directory.
++   - It can also install an "Edit with Vim" entry in the Windows Explorer
++     popup menu.
++   - You can have it create batch files, so that you can run Vim from the
++     console or in a shell.  You can select one of the directories in your
++     PATH or add the directory to PATH using the Windows Control Panel.  
++   - Create entries for Vim on the desktop and in the Start menu.
++ 
++ Happy Vimming!
+*** ../vim-7.3.247/src/version.c       2011-07-15 13:33:17.000000000 +0200
+--- src/version.c      2011-07-15 13:51:03.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     248,
+  /**/
+
+-- 
+Linux is just like a wigwam: no Windows, no Gates and an Apache inside.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.249.patch0 b/vim/patches/vim-7.3.249.patch0
new file mode 100644 (file)
index 0000000..661f979
--- /dev/null
@@ -0,0 +1,134 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.249
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.249
+Problem:    Wrong indenting for array initializer.
+Solution:   Detect '}' in a better way. (Lech Lorens)
+Files:     src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok
+
+
+*** ../vim-7.3.248/src/misc1.c 2011-06-12 21:51:01.000000000 +0200
+--- src/misc1.c        2011-07-15 14:06:44.000000000 +0200
+***************
+*** 7945,7952 ****
+                        * If we're at the end of a block, skip to the start of
+                        * that block.
+                        */
+!                      curwin->w_cursor.col = 0;
+!                      if (*cin_skipcomment(l) == '}'
+                               && (trypos = find_start_brace(ind_maxcomment))
+                                                           != NULL) /* XXX */
+                       {
+--- 7945,7951 ----
+                        * If we're at the end of a block, skip to the start of
+                        * that block.
+                        */
+!                      if (find_last_paren(l, '{', '}')
+                               && (trypos = find_start_brace(ind_maxcomment))
+                                                           != NULL) /* XXX */
+                       {
+*** ../vim-7.3.248/src/testdir/test3.in        2011-06-12 21:51:01.000000000 +0200
+--- src/testdir/test3.in       2011-07-15 14:03:41.000000000 +0200
+***************
+*** 1452,1457 ****
+--- 1452,1487 ----
+  
+  STARTTEST
+  :set cino&
++ :set cino+=l1
++ 2kdd=][
++ ENDTEST
++ 
++ void func(void)
++ {
++      int tab[] =
++      {
++              1, 2, 3,
++              4, 5, 6};
++ 
++      printf("Indent this line correctly!\n");
++ 
++      switch (foo)
++      {
++              case bar:
++                      printf("bar");
++                      break;
++              case baz: {
++                      printf("baz");
++                      break;
++              }
++              case quux:
++ printf("But don't break the indentation of this instruction\n");
++ break;
++      }
++ }
++ 
++ STARTTEST
++ :set cino&
+  2kdd=][
+  ENDTEST
+  
+*** ../vim-7.3.248/src/testdir/test3.ok        2011-06-12 21:51:01.000000000 +0200
+--- src/testdir/test3.ok       2011-07-15 14:03:41.000000000 +0200
+***************
+*** 1310,1315 ****
+--- 1310,1340 ----
+  
+  void func(void)
+  {
++      int tab[] =
++      {
++              1, 2, 3,
++              4, 5, 6};
++ 
++      printf("Indent this line correctly!\n");
++ 
++      switch (foo)
++      {
++              case bar:
++                      printf("bar");
++                      break;
++              case baz: {
++                      printf("baz");
++                      break;
++              }
++              case quux:
++                      printf("But don't break the indentation of this instruction\n");
++                      break;
++      }
++ }
++ 
++ 
++ void func(void)
++ {
+       cout << "a"
+               << "b"
+               << ") :"
+*** ../vim-7.3.248/src/version.c       2011-07-15 13:51:57.000000000 +0200
+--- src/version.c      2011-07-15 14:12:05.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     249,
+  /**/
+
+-- 
+   GALAHAD hurries to the door and pushes through it.  As he leaves the room
+   we CUT TO the reverse to show that he is now in a room full of bathing
+   and romping GIRLIES, all innocent, wide-eyed and beautiful.  They smile
+   enchantingly at him as he tries to keep walking without being diverted by
+   the lovely sights assaulting his eyeballs.
+                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.250.patch0 b/vim/patches/vim-7.3.250.patch0
new file mode 100644 (file)
index 0000000..fc33328
--- /dev/null
@@ -0,0 +1,104 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.250
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.250
+Problem:    Python: Errors in Unicode characters not handled nicely.
+Solution:   Add the surrogateescape error handler. (lilydjwg)
+Files:     src/if_python3.c
+
+
+*** ../vim-7.3.249/src/if_python3.c    2011-06-26 19:13:33.000000000 +0200
+--- src/if_python3.c   2011-07-15 15:50:01.000000000 +0200
+***************
+*** 68,76 ****
+  
+  static void init_structs(void);
+  
+  #define PyInt Py_ssize_t
+  #define PyString_Check(obj) PyUnicode_Check(obj)
+! #define PyString_AsBytes(obj) PyUnicode_AsEncodedString(obj, (char *)ENC_OPT, NULL);
+  #define PyString_FreeBytes(obj) Py_XDECREF(bytes)
+  #define PyString_AsString(obj) PyBytes_AsString(obj)
+  #define PyString_Size(obj) PyBytes_GET_SIZE(bytes)
+--- 68,83 ----
+  
+  static void init_structs(void);
+  
++ /* The "surrogateescape" error handler is new in Python 3.1 */
++ #if PY_VERSION_HEX >= 0x030100f0
++ # define CODEC_ERROR_HANDLER "surrogateescape"
++ #else
++ # define CODEC_ERROR_HANDLER NULL
++ #endif
++ 
+  #define PyInt Py_ssize_t
+  #define PyString_Check(obj) PyUnicode_Check(obj)
+! #define PyString_AsBytes(obj) PyUnicode_AsEncodedString(obj, (char *)ENC_OPT, CODEC_ERROR_HANDLER);
+  #define PyString_FreeBytes(obj) Py_XDECREF(bytes)
+  #define PyString_AsString(obj) PyBytes_AsString(obj)
+  #define PyString_Size(obj) PyBytes_GET_SIZE(bytes)
+***************
+*** 661,668 ****
+  
+      /* PyRun_SimpleString expects a UTF-8 string. Wrong encoding may cause
+       * SyntaxError (unicode error). */
+!     cmdstr = PyUnicode_Decode(cmd, strlen(cmd), (char *)ENC_OPT, NULL);
+!     cmdbytes = PyUnicode_AsEncodedString(cmdstr, "utf-8", NULL);
+      Py_XDECREF(cmdstr);
+      PyRun_SimpleString(PyBytes_AsString(cmdbytes));
+      Py_XDECREF(cmdbytes);
+--- 668,676 ----
+  
+      /* PyRun_SimpleString expects a UTF-8 string. Wrong encoding may cause
+       * SyntaxError (unicode error). */
+!     cmdstr = PyUnicode_Decode(cmd, strlen(cmd),
+!                                      (char *)ENC_OPT, CODEC_ERROR_HANDLER);
+!     cmdbytes = PyUnicode_AsEncodedString(cmdstr, "utf-8", CODEC_ERROR_HANDLER);
+      Py_XDECREF(cmdstr);
+      PyRun_SimpleString(PyBytes_AsString(cmdbytes));
+      Py_XDECREF(cmdbytes);
+***************
+*** 1463,1469 ****
+      }
+      *p = '\0';
+  
+!     result = PyUnicode_Decode(tmp, len, (char *)ENC_OPT, NULL);
+  
+      vim_free(tmp);
+      return result;
+--- 1471,1477 ----
+      }
+      *p = '\0';
+  
+!     result = PyUnicode_Decode(tmp, len, (char *)ENC_OPT, CODEC_ERROR_HANDLER);
+  
+      vim_free(tmp);
+      return result;
+*** ../vim-7.3.249/src/version.c       2011-07-15 14:12:25.000000000 +0200
+--- src/version.c      2011-07-15 15:46:19.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     250,
+  /**/
+
+-- 
+DINGO:   You must spank her well and after you have spanked her you
+         may deal with her as you like and then ... spank me.
+AMAZING: And spank me!
+STUNNER: And me.
+LOVELY:  And me.
+                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.251.patch0 b/vim/patches/vim-7.3.251.patch0
new file mode 100644 (file)
index 0000000..43aa414
--- /dev/null
@@ -0,0 +1,184 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.251
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.251
+Problem:    "gH<Del>" deletes the current line, except when it's the last
+           line.
+Solution:   Set the "include" flag to indicate the last line is to be deleted.
+Files:     src/normal.c, src/ops.c
+
+
+*** ../vim-7.3.250/src/normal.c        2011-07-07 15:08:53.000000000 +0200
+--- src/normal.c       2011-07-15 16:53:12.000000000 +0200
+***************
+*** 1795,1811 ****
+               {
+                   oap->inclusive = FALSE;
+                   /* Try to include the newline, unless it's an operator
+!                   * that works on lines only */
+!                  if (*p_sel != 'o'
+!                          && !op_on_lines(oap->op_type)
+!                          && oap->end.lnum < curbuf->b_ml.ml_line_count)
+                   {
+!                      ++oap->end.lnum;
+!                      oap->end.col = 0;
+  # ifdef FEAT_VIRTUALEDIT
+!                      oap->end.coladd = 0;
+  # endif
+!                      ++oap->line_count;
+                   }
+               }
+           }
+--- 1795,1819 ----
+               {
+                   oap->inclusive = FALSE;
+                   /* Try to include the newline, unless it's an operator
+!                   * that works on lines only. */
+!                  if (*p_sel != 'o' && !op_on_lines(oap->op_type))
+                   {
+!                      if (oap->end.lnum < curbuf->b_ml.ml_line_count)
+!                      {
+!                          ++oap->end.lnum;
+!                          oap->end.col = 0;
+  # ifdef FEAT_VIRTUALEDIT
+!                          oap->end.coladd = 0;
+  # endif
+!                          ++oap->line_count;
+!                      }
+!                      else
+!                      {
+!                          /* Cannot move below the last line, make the op
+!                           * inclusive to tell the operation to include the
+!                           * line break. */
+!                          oap->inclusive = TRUE;
+!                      }
+                   }
+               }
+           }
+*** ../vim-7.3.250/src/ops.c   2011-06-19 01:14:22.000000000 +0200
+--- src/ops.c  2011-07-15 17:28:28.000000000 +0200
+***************
+*** 1650,1656 ****
+           && oap->line_count > 1
+           && oap->op_type == OP_DELETE)
+      {
+!      ptr = ml_get(oap->end.lnum) + oap->end.col + oap->inclusive;
+       ptr = skipwhite(ptr);
+       if (*ptr == NUL && inindent(0))
+           oap->motion_type = MLINE;
+--- 1650,1658 ----
+           && oap->line_count > 1
+           && oap->op_type == OP_DELETE)
+      {
+!      ptr = ml_get(oap->end.lnum) + oap->end.col;
+!      if (*ptr != NUL)
+!          ptr += oap->inclusive;
+       ptr = skipwhite(ptr);
+       if (*ptr == NUL && inindent(0))
+           oap->motion_type = MLINE;
+***************
+*** 1920,1930 ****
+                   curwin->w_cursor.coladd = 0;
+           }
+  #endif
+!          (void)del_bytes((long)n, !virtual_op, oap->op_type == OP_DELETE
+  #ifdef FEAT_VISUAL
+                                   && !oap->is_VIsual
+  #endif
+                                                       );
+       }
+       else                            /* delete characters between lines */
+       {
+--- 1922,1941 ----
+                   curwin->w_cursor.coladd = 0;
+           }
+  #endif
+!          if (oap->inclusive && oap->end.lnum == curbuf->b_ml.ml_line_count
+!                  && n > (int)STRLEN(ml_get(oap->end.lnum)))
+!          {
+!              /* Special case: gH<Del> deletes the last line. */
+!              del_lines(1L, FALSE);
+!          }
+!          else
+!          {
+!              (void)del_bytes((long)n, !virtual_op, oap->op_type == OP_DELETE
+  #ifdef FEAT_VISUAL
+                                   && !oap->is_VIsual
+  #endif
+                                                       );
++          }
+       }
+       else                            /* delete characters between lines */
+       {
+***************
+*** 1941,1957 ****
+           ++curwin->w_cursor.lnum;
+           del_lines((long)(oap->line_count - 2), FALSE);
+  
+!          /* delete from start of line until op_end */
+!          curwin->w_cursor.col = 0;
+!          (void)del_bytes((long)(oap->end.col + 1 - !oap->inclusive),
+!                                      !virtual_op, oap->op_type == OP_DELETE
+  #ifdef FEAT_VISUAL
+                                       && !oap->is_VIsual
+  #endif
+                                                           );
+!          curwin->w_cursor = curpos;          /* restore curwin->w_cursor */
+! 
+!          (void)do_join(2, FALSE, FALSE);
+       }
+      }
+  
+--- 1952,1980 ----
+           ++curwin->w_cursor.lnum;
+           del_lines((long)(oap->line_count - 2), FALSE);
+  
+!          n = (oap->end.col + 1 - !oap->inclusive);
+!          if (oap->inclusive && oap->end.lnum == curbuf->b_ml.ml_line_count
+!                  && n > (int)STRLEN(ml_get(oap->end.lnum)))
+!          {
+!              /* Special case: gH<Del> deletes the last line. */
+!              del_lines(1L, FALSE);
+!              curwin->w_cursor = curpos;      /* restore curwin->w_cursor */
+!              if (curwin->w_cursor.lnum > 1)
+!                  --curwin->w_cursor.lnum;
+!          }
+!          else
+!          {
+!              /* delete from start of line until op_end */
+!              curwin->w_cursor.col = 0;
+!              (void)del_bytes((long)n, !virtual_op, oap->op_type == OP_DELETE
+  #ifdef FEAT_VISUAL
+                                       && !oap->is_VIsual
+  #endif
+                                                           );
+!              curwin->w_cursor = curpos;      /* restore curwin->w_cursor */
+!          }
+!          if (curwin->w_cursor.lnum < curbuf->b_ml.ml_line_count)
+!              (void)do_join(2, FALSE, FALSE);
+       }
+      }
+  
+*** ../vim-7.3.250/src/version.c       2011-07-15 15:54:39.000000000 +0200
+--- src/version.c      2011-07-15 17:35:18.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     251,
+  /**/
+
+-- 
+            ### Hiroshima 45, Chernobyl 86, Windows 95 ###
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.252.patch0 b/vim/patches/vim-7.3.252.patch0
new file mode 100644 (file)
index 0000000..e24b73b
--- /dev/null
@@ -0,0 +1,43 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.252
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.252 (after 7.3.247)
+Problem:    Tests fail. (David Northfield)
+Solution:   Add missing update for .ok file.
+Files:      src/testdir/test81.ok
+
+
+*** ../vim-7.3.251/src/testdir/test81.ok       2011-06-26 05:36:07.000000000 +0200
+--- src/testdir/test81.ok      2011-07-15 13:14:27.000000000 +0200
+***************
+*** 1,4 ****
+--- 1,6 ----
+  aaa two
++     z
++ y
+  bbb y
+  ccc
+  ddd yee y
+*** ../vim-7.3.251/src/version.c       2011-07-15 17:51:30.000000000 +0200
+--- src/version.c      2011-07-15 17:55:25.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     252,
+  /**/
+
+-- 
+You cannot propel yourself forward by patting yourself on the back.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.253.patch0 b/vim/patches/vim-7.3.253.patch0
new file mode 100644 (file)
index 0000000..70e415b
--- /dev/null
@@ -0,0 +1,539 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.253
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.253
+Problem:    "echo 'abc' > ''" returns 0 or 1, depending on 'ignorecase'.
+           Checks in mb_strnicmp() for illegal and truncated bytes are
+           wrong.  Should not assume that byte length is equal before case
+           folding.
+Solution:   Add utf_safe_read_char_adv() and utf_strnicmp(). Add a test for
+           this. (Ivan Krasilnikov)
+Files:     src/mbyte.c src/testdir/test82.in, src/testdir/test82.ok,
+           src/testdir/Makefile, src/testdir/Make_amiga.mak,
+           src/testdir/Make_dos.mak, src/testdir/Make_ming.mak,
+           src/testdir/Make_os2.mak, src/testdir/Make_vms.mms
+
+
+*** ../vim-7.3.252/src/mbyte.c 2011-07-07 15:08:53.000000000 +0200
+--- src/mbyte.c        2011-07-15 20:13:52.000000000 +0200
+***************
+*** 132,137 ****
+--- 132,138 ----
+  static int dbcs_char2cells __ARGS((int c));
+  static int dbcs_ptr2cells_len __ARGS((char_u *p, int size));
+  static int dbcs_ptr2char __ARGS((char_u *p));
++ static int utf_safe_read_char_adv __ARGS((char_u **s, size_t *n));
+  
+  /*
+   * Lookup table to quickly get the length in bytes of a UTF-8 character from
+***************
+*** 1701,1706 ****
+--- 1702,1767 ----
+  }
+  
+  /*
++  * Convert a UTF-8 byte sequence to a wide character.
++  * String is assumed to be terminated by NUL or after "n" bytes, whichever
++  * comes first.
++  * The function is safe in the sense that it never accesses memory beyond the
++  * first "n" bytes of "s".
++  *
++  * On success, returns decoded codepoint, advances "s" to the beginning of
++  * next character and decreases "n" accordingly.
++  *
++  * If end of string was reached, returns 0 and, if "n" > 0, advances "s" past
++  * NUL byte.
++  *
++  * If byte sequence is illegal or incomplete, returns -1 and does not advance
++  * "s".
++  */
++     static int
++ utf_safe_read_char_adv(s, n)
++     char_u      **s;
++     size_t      *n;
++ {
++     int              c, k;
++ 
++     if (*n == 0) /* end of buffer */
++      return 0;
++ 
++     k = utf8len_tab_zero[**s];
++ 
++     if (k == 1)
++     {
++      /* ASCII character or NUL */
++      (*n)--;
++      return *(*s)++;
++     }
++ 
++     if ((size_t)k <= *n)
++     {
++      /* We have a multibyte sequence and it isn't truncated by buffer
++       * limits so utf_ptr2char() is safe to use. Or the first byte is
++       * illegal (k=0), and it's also safe to use utf_ptr2char(). */
++      c = utf_ptr2char(*s);
++ 
++      /* On failure, utf_ptr2char() returns the first byte, so here we
++       * check equality with the first byte. The only non-ASCII character
++       * which equals the first byte of its own UTF-8 representation is
++       * U+00C3 (UTF-8: 0xC3 0x83), so need to check that special case too.
++       * It's safe even if n=1, else we would have k=2 > n. */
++      if (c != (int)(**s) || (c == 0xC3 && (*s)[1] == 0x83))
++      {
++          /* byte sequence was successfully decoded */
++          *s += k;
++          *n -= k;
++          return c;
++      }
++     }
++ 
++     /* byte sequence is incomplete or illegal */
++     return -1;
++ }
++ 
++ /*
+   * Get character at **pp and advance *pp to the next character.
+   * Note: composing characters are skipped!
+   */
+***************
+*** 2667,2673 ****
+       {0x10400,0x10427,1,40}
+  };
+  
+! static int utf_convert(int a, convertStruct table[], int tableSize);
+  
+  /*
+   * Generic conversion function for case operations.
+--- 2728,2735 ----
+       {0x10400,0x10427,1,40}
+  };
+  
+! static int utf_convert __ARGS((int a, convertStruct table[], int tableSize));
+! static int utf_strnicmp __ARGS((char_u *s1, char_u *s2, size_t n1, size_t n2));
+  
+  /*
+   * Generic conversion function for case operations.
+***************
+*** 3079,3084 ****
+--- 3141,3220 ----
+      return (utf_tolower(a) != a);
+  }
+  
++     static int
++ utf_strnicmp(s1, s2, n1, n2)
++     char_u      *s1, *s2;
++     size_t      n1, n2;
++ {
++     int              c1, c2, cdiff;
++     char_u   buffer[6];
++ 
++     for (;;)
++     {
++      c1 = utf_safe_read_char_adv(&s1, &n1);
++      c2 = utf_safe_read_char_adv(&s2, &n2);
++ 
++      if (c1 <= 0 || c2 <= 0)
++          break;
++ 
++      if (c1 == c2)
++          continue;
++ 
++      cdiff = utf_fold(c1) - utf_fold(c2);
++      if (cdiff != 0)
++          return cdiff;
++     }
++ 
++     /* some string ended or has an incomplete/illegal character sequence */
++ 
++     if (c1 == 0 || c2 == 0)
++     {
++      /* some string ended. shorter string is smaller */
++      if (c1 == 0 && c2 == 0)
++          return 0;
++      return c1 == 0 ? -1 : 1;
++     }
++ 
++     /* Continue with bytewise comparison to produce some result that
++      * would make comparison operations involving this function transitive.
++      *
++      * If only one string had an error, comparison should be made with
++      * folded version of the other string. In this case it is enough
++      * to fold just one character to determine the result of comparison. */
++ 
++     if (c1 != -1 && c2 == -1)
++     {
++      n1 = utf_char2bytes(utf_fold(c1), buffer);
++      s1 = buffer;
++     }
++     else if (c2 != -1 && c1 == -1)
++     {
++      n2 = utf_char2bytes(utf_fold(c2), buffer);
++      s2 = buffer;
++     }
++ 
++     while (n1 > 0 && n2 > 0 && *s1 != NUL && *s2 != NUL)
++     {
++      cdiff = (int)(*s1) - (int)(*s2);
++      if (cdiff != 0)
++          return cdiff;
++ 
++      s1++;
++      s2++;
++      n1--;
++      n2--;
++     }
++ 
++     if (n1 > 0 && *s1 == NUL)
++      n1 = 0;
++     if (n2 > 0 && *s2 == NUL)
++      n2 = 0;
++ 
++     if (n1 == 0 && n2 == 0)
++      return 0;
++     return n1 == 0 ? -1 : 1;
++ }
++ 
+  /*
+   * Version of strnicmp() that handles multi-byte characters.
+   * Needed for Big5, Sjift-JIS and UTF-8 encoding.  Other DBCS encodings can
+***************
+*** 3092,3140 ****
+      char_u   *s1, *s2;
+      size_t   nn;
+  {
+!     int              i, j, l;
+      int              cdiff;
+-     int              incomplete = FALSE;
+      int              n = (int)nn;
+  
+!     for (i = 0; i < n; i += l)
+      {
+!      if (s1[i] == NUL && s2[i] == NUL)   /* both strings end */
+!          return 0;
+!      if (enc_utf8)
+!      {
+!          l = utf_byte2len(s1[i]);
+!          if (l > n - i)
+!          {
+!              l = n - i;                  /* incomplete character */
+!              incomplete = TRUE;
+!          }
+!          /* Check directly first, it's faster. */
+!          for (j = 0; j < l; ++j)
+!          {
+!              if (s1[i + j] != s2[i + j])
+!                  break;
+!              if (s1[i + j] == 0)
+!                  /* Both stings have the same bytes but are incomplete or
+!                   * have illegal bytes, accept them as equal. */
+!                  l = j;
+!          }
+!          if (j < l)
+!          {
+!              /* If one of the two characters is incomplete return -1. */
+!              if (incomplete || i + utf_byte2len(s2[i]) > n)
+!                  return -1;
+!              /* Don't case-fold illegal bytes or truncated characters. */
+!              if (utf_ptr2len(s1 + i) < l || utf_ptr2len(s2 + i) < l)
+!                  return -1;
+!              cdiff = utf_fold(utf_ptr2char(s1 + i))
+!                                           - utf_fold(utf_ptr2char(s2 + i));
+!              if (cdiff != 0)
+!                  return cdiff;
+!          }
+!      }
+!      else
+       {
+           l = (*mb_ptr2len)(s1 + i);
+           if (l <= 1)
+           {
+--- 3228,3248 ----
+      char_u   *s1, *s2;
+      size_t   nn;
+  {
+!     int              i, l;
+      int              cdiff;
+      int              n = (int)nn;
+  
+!     if (enc_utf8)
+      {
+!      return utf_strnicmp(s1, s2, nn, nn);
+!     }
+!     else
+!     {
+!      for (i = 0; i < n; i += l)
+       {
++          if (s1[i] == NUL && s2[i] == NUL)   /* both strings end */
++              return 0;
++ 
+           l = (*mb_ptr2len)(s1 + i);
+           if (l <= 1)
+           {
+*** ../vim-7.3.252/src/testdir/test82.in       2011-07-15 21:16:03.000000000 +0200
+--- src/testdir/test82.in      2011-07-15 18:22:46.000000000 +0200
+***************
+*** 0 ****
+--- 1,93 ----
++ Tests for case-insensitive UTF-8 comparisons (utf_strnicmp() in mbyte.c)
++ 
++ STARTTEST
++ :so small.vim
++ :if !has("multi_byte")
++ : e! test.ok
++ : w! test.out
++ : qa!
++ :endif
++ :set enc=utf8
++ ggdG
++ :
++ :function! Ch(a, op, b, expected)
++ :  if eval(printf('"%s" %s "%s"', a:a, a:op, a:b)) != a:expected
++ :    call append(line('$'), printf('"%s" %s "%s" should return %d', a:a, a:op, a:b, a:expected))
++ :  else
++ :    let b:passed += 1
++ :  endif
++ :endfunction
++ :
++ :function! Chk(a, b, result)
++ :  if a:result == 0
++ :    call Ch(a:a, '==?', a:b, 1)
++ :    call Ch(a:a, '!=?', a:b, 0)
++ :    call Ch(a:a, '<=?', a:b, 1)
++ :    call Ch(a:a, '>=?', a:b, 1)
++ :    call Ch(a:a, '<?', a:b, 0)
++ :    call Ch(a:a, '>?', a:b, 0)
++ :  elseif a:result > 0
++ :    call Ch(a:a, '==?', a:b, 0)
++ :    call Ch(a:a, '!=?', a:b, 1)
++ :    call Ch(a:a, '<=?', a:b, 0)
++ :    call Ch(a:a, '>=?', a:b, 1)
++ :    call Ch(a:a, '<?', a:b, 0)
++ :    call Ch(a:a, '>?', a:b, 1)
++ :  else
++ :    call Ch(a:a, '==?', a:b, 0)
++ :    call Ch(a:a, '!=?', a:b, 1)
++ :    call Ch(a:a, '<=?', a:b, 1)
++ :    call Ch(a:a, '>=?', a:b, 0)
++ :    call Ch(a:a, '<?', a:b, 1)
++ :    call Ch(a:a, '>?', a:b, 0)
++ :  endif
++ :endfunction
++ :
++ :function! Check(a, b, result)
++ :  call Chk(a:a, a:b, a:result)
++ :  call Chk(a:b, a:a, -a:result)
++ :endfunction
++ :
++ :function! LT(a, b)
++ :  call Check(a:a, a:b, -1)
++ :endfunction
++ :
++ :function! GT(a, b)
++ :  call Check(a:a, a:b, 1)
++ :endfunction
++ :
++ :function! EQ(a, b)
++ :  call Check(a:a, a:b, 0)
++ :endfunction
++ :
++ :let b:passed=0
++ :call EQ('', '')
++ :call LT('', 'a')
++ :call EQ('abc', 'abc')
++ :call EQ('Abc', 'abC')
++ :call LT('ab', 'abc')
++ :call LT('AB', 'abc')
++ :call LT('ab', 'aBc')
++ :call EQ('\xd0\xb9\xd1\x86\xd1\x83\xd0\xba\xd0\xb5\xd0\xbd', '\xd0\xb9\xd0\xa6\xd0\xa3\xd0\xba\xd0\x95\xd0\xbd')
++ :call LT('\xd0\xb9\xd1\x86\xd1\x83\xd0\xba\xd0\xb5\xd0\xbd', '\xd0\xaf\xd1\x86\xd1\x83\xd0\xba\xd0\xb5\xd0\xbd')
++ :call EQ('\xe2\x84\xaa', 'k')
++ :call LT('\xe2\x84\xaa', 'kkkkkk')
++ :call EQ('\xe2\x84\xaa\xe2\x84\xaa\xe2\x84\xaa', 'kkk')
++ :call LT('kk', '\xe2\x84\xaa\xe2\x84\xaa\xe2\x84\xaa')
++ :call EQ('\xe2\x84\xaa\xe2\x84\xa6k\xe2\x84\xaak\xcf\x89', 'k\xcf\x89\xe2\x84\xaakk\xe2\x84\xa6')
++ :call EQ('Abc\x80', 'AbC\x80')
++ :call LT('Abc\x80', 'AbC\x81')
++ :call LT('Abc', 'AbC\x80')
++ :call LT('abc\x80DEF', 'abc\x80def')  " case folding stops at the first bad character
++ :call LT('\xc3XYZ', '\xc3xyz')
++ :call EQ('\xef\xbc\xba', '\xef\xbd\x9a')  " FF3A (upper), FF5A (lower)
++ :call GT('\xef\xbc\xba', '\xef\xbc\xff')  " first string is ok and equals \xef\xbd\x9a after folding, second string is illegal and was left unchanged, then the strings were bytewise compared
++ :call LT('\xc3', '\xc3\x83')
++ :call EQ('\xc3\xa3xYz', '\xc3\x83XyZ')
++ :for n in range(0x60, 0xFF) | call LT(printf('xYz\x%.2X', n-1), printf('XyZ\x%.2X', n)) | endfor
++ :for n in range(0x80, 0xBF) | call EQ(printf('xYz\xc2\x%.2XUvW', n), printf('XyZ\xc2\x%.2XuVw', n)) | endfor
++ :for n in range(0xC0, 0xFF) | call LT(printf('xYz\xc2\x%.2XUvW', n), printf('XyZ\xc2\x%.2XuVw', n)) | endfor
++ :call append(0, printf('%d checks passed', b:passed))
++ :wq! test.out
++ ENDTEST
++ 
+*** ../vim-7.3.252/src/testdir/test82.ok       2011-07-15 21:16:03.000000000 +0200
+--- src/testdir/test82.ok      2011-07-15 18:37:33.000000000 +0200
+***************
+*** 0 ****
+--- 1,2 ----
++ 3732 checks passed
++ 
+*** ../vim-7.3.252/src/testdir/Makefile        2011-06-26 05:36:07.000000000 +0200
+--- src/testdir/Makefile       2011-07-15 18:30:08.000000000 +0200
+***************
+*** 26,32 ****
+               test64.out test65.out test66.out test67.out test68.out \
+               test69.out test70.out test71.out test72.out test73.out \
+               test74.out test75.out test76.out test77.out test78.out \
+!              test79.out test80.out test81.out
+  
+  SCRIPTS_GUI = test16.out
+  
+--- 26,32 ----
+               test64.out test65.out test66.out test67.out test68.out \
+               test69.out test70.out test71.out test72.out test73.out \
+               test74.out test75.out test76.out test77.out test78.out \
+!              test79.out test80.out test81.out test82.out
+  
+  SCRIPTS_GUI = test16.out
+  
+*** ../vim-7.3.252/src/testdir/Make_amiga.mak  2011-06-26 05:36:07.000000000 +0200
+--- src/testdir/Make_amiga.mak 2011-07-15 18:29:50.000000000 +0200
+***************
+*** 29,35 ****
+               test66.out test67.out test68.out test69.out test70.out \
+               test71.out test72.out test73.out test74.out test75.out \
+               test76.out test77.out test78.out test79.out test80.out \
+!              test81.out
+  
+  .SUFFIXES: .in .out
+  
+--- 29,35 ----
+               test66.out test67.out test68.out test69.out test70.out \
+               test71.out test72.out test73.out test74.out test75.out \
+               test76.out test77.out test78.out test79.out test80.out \
+!              test81.out test82.out
+  
+  .SUFFIXES: .in .out
+  
+***************
+*** 130,132 ****
+--- 130,133 ----
+  test79.out: test79.in
+  test80.out: test80.in
+  test81.out: test81.in
++ test82.out: test82.in
+*** ../vim-7.3.252/src/testdir/Make_dos.mak    2011-06-26 05:36:07.000000000 +0200
+--- src/testdir/Make_dos.mak   2011-07-15 18:30:02.000000000 +0200
+***************
+*** 29,35 ****
+               test42.out test52.out test65.out test66.out test67.out \
+               test68.out test69.out test71.out test72.out test73.out \
+               test74.out test75.out test76.out test77.out test78.out \
+!              test79.out test80.out test81.out
+  
+  SCRIPTS32 =  test50.out test70.out
+  
+--- 29,35 ----
+               test42.out test52.out test65.out test66.out test67.out \
+               test68.out test69.out test71.out test72.out test73.out \
+               test74.out test75.out test76.out test77.out test78.out \
+!              test79.out test80.out test81.out test82.out
+  
+  SCRIPTS32 =  test50.out test70.out
+  
+*** ../vim-7.3.252/src/testdir/Make_ming.mak   2011-06-26 05:36:07.000000000 +0200
+--- src/testdir/Make_ming.mak  2011-07-15 18:30:15.000000000 +0200
+***************
+*** 49,55 ****
+               test42.out test52.out test65.out test66.out test67.out \
+               test68.out test69.out test71.out test72.out test73.out \
+               test74.out test75.out test76.out test77.out test78.out \
+!              test79.out test80.out test81.out
+  
+  SCRIPTS32 =  test50.out test70.out
+  
+--- 49,55 ----
+               test42.out test52.out test65.out test66.out test67.out \
+               test68.out test69.out test71.out test72.out test73.out \
+               test74.out test75.out test76.out test77.out test78.out \
+!              test79.out test80.out test81.out test82.out
+  
+  SCRIPTS32 =  test50.out test70.out
+  
+*** ../vim-7.3.252/src/testdir/Make_os2.mak    2011-06-26 05:36:07.000000000 +0200
+--- src/testdir/Make_os2.mak   2011-07-15 18:30:25.000000000 +0200
+***************
+*** 29,35 ****
+               test66.out test67.out test68.out test69.out test70.out \
+               test71.out test72.out test73.out test74.out test75.out \
+               test76.out test77.out test78.out test79.out test80.out \
+!              test81.out
+  
+  .SUFFIXES: .in .out
+  
+--- 29,35 ----
+               test66.out test67.out test68.out test69.out test70.out \
+               test71.out test72.out test73.out test74.out test75.out \
+               test76.out test77.out test78.out test79.out test80.out \
+!              test81.out test82.out
+  
+  .SUFFIXES: .in .out
+  
+*** ../vim-7.3.252/src/testdir/Make_vms.mms    2011-06-26 05:36:07.000000000 +0200
+--- src/testdir/Make_vms.mms   2011-07-15 18:30:33.000000000 +0200
+***************
+*** 4,10 ****
+  # Authors:   Zoltan Arpadffy, <arpadffy@polarhome.com>
+  #            Sandor Kopanyi,  <sandor.kopanyi@mailbox.hu>
+  #
+! # Last change:  2011 Jun 26
+  #
+  # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64.
+  # Edit the lines in the Configuration section below to select.
+--- 4,10 ----
+  # Authors:   Zoltan Arpadffy, <arpadffy@polarhome.com>
+  #            Sandor Kopanyi,  <sandor.kopanyi@mailbox.hu>
+  #
+! # Last change:  2011 Jul 15
+  #
+  # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64.
+  # Edit the lines in the Configuration section below to select.
+***************
+*** 75,81 ****
+        test61.out test62.out test63.out test64.out test65.out \
+        test66.out test67.out test68.out test69.out \
+        test71.out test72.out test74.out test75.out test76.out \
+!       test77.out test78.out test79.out test80.out test81.out
+  
+  # Known problems:
+  # Test 30: a problem around mac format - unknown reason
+--- 75,82 ----
+        test61.out test62.out test63.out test64.out test65.out \
+        test66.out test67.out test68.out test69.out \
+        test71.out test72.out test74.out test75.out test76.out \
+!       test77.out test78.out test79.out test80.out test81.out \
+!       test82.out
+  
+  # Known problems:
+  # Test 30: a problem around mac format - unknown reason
+*** ../vim-7.3.252/src/version.c       2011-07-15 17:56:11.000000000 +0200
+--- src/version.c      2011-07-15 21:12:26.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     253,
+  /**/
+
+-- 
+"Intelligence has much less practical application than you'd think."
+                 -- Scott Adams, Dilbert.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.254.patch0 b/vim/patches/vim-7.3.254.patch0
new file mode 100644 (file)
index 0000000..85176a7
--- /dev/null
@@ -0,0 +1,47 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.254
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.254
+Problem:    The coladd field is not reset when setting the line number for a
+           ":call" command.
+Solution:   Reset it.
+Files:     src/eval.c
+
+
+*** ../vim-7.3.253/src/eval.c  2011-07-07 17:36:52.000000000 +0200
+--- src/eval.c 2011-07-07 17:51:42.000000000 +0200
+***************
+*** 3430,3435 ****
+--- 3430,3438 ----
+       {
+           curwin->w_cursor.lnum = lnum;
+           curwin->w_cursor.col = 0;
++ #ifdef FEAT_VIRTUALEDIT
++          curwin->w_cursor.coladd = 0;
++ #endif
+       }
+       arg = startarg;
+       if (get_func_tv(name, (int)STRLEN(name), &rettv, &arg,
+*** ../vim-7.3.253/src/version.c       2011-07-15 21:16:54.000000000 +0200
+--- src/version.c      2011-07-15 21:23:16.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     254,
+  /**/
+
+-- 
+Eight Megabytes And Continually Swapping.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.255.patch0 b/vim/patches/vim-7.3.255.patch0
new file mode 100644 (file)
index 0000000..c01a585
--- /dev/null
@@ -0,0 +1,81 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.255
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.255
+Problem:    When editing a file such as "File[2010-08-15].vim" an E16 error is
+           given. (Manuel Stol)
+Solution:   Don't give an error for failing to compile the regexp.
+Files:     src/ex_docmd.c, src/misc1.c, src/vim.h
+
+
+*** ../vim-7.3.254/src/ex_docmd.c      2011-06-13 01:19:48.000000000 +0200
+--- src/ex_docmd.c     2011-07-20 14:48:01.000000000 +0200
+***************
+*** 7069,7075 ****
+       old_arg_count = GARGCOUNT;
+       if (expand_wildcards(old_arg_count, old_arg_files,
+                   &new_arg_file_count, &new_arg_files,
+!                  EW_FILE|EW_NOTFOUND|EW_ADDSLASH) == OK
+               && new_arg_file_count > 0)
+       {
+           alist_set(&global_alist, new_arg_file_count, new_arg_files,
+--- 7069,7075 ----
+       old_arg_count = GARGCOUNT;
+       if (expand_wildcards(old_arg_count, old_arg_files,
+                   &new_arg_file_count, &new_arg_files,
+!                  EW_FILE|EW_NOTFOUND|EW_ADDSLASH|EW_NOERROR) == OK
+               && new_arg_file_count > 0)
+       {
+           alist_set(&global_alist, new_arg_file_count, new_arg_files,
+*** ../vim-7.3.254/src/misc1.c 2011-07-15 14:12:25.000000000 +0200
+--- src/misc1.c        2011-07-20 14:55:09.000000000 +0200
+***************
+*** 9043,9050 ****
+--- 9043,9054 ----
+      }
+  
+      /* compile the regexp into a program */
++     if (flags & EW_NOERROR)
++      ++emsg_silent;
+      regmatch.rm_ic = TRUE;           /* Always ignore case */
+      regmatch.regprog = vim_regcomp(pat, RE_MAGIC);
++     if (flags & EW_NOERROR)
++      --emsg_silent;
+      vim_free(pat);
+  
+      if (regmatch.regprog == NULL)
+*** ../vim-7.3.254/src/vim.h   2011-06-13 02:03:55.000000000 +0200
+--- src/vim.h  2011-07-20 14:50:13.000000000 +0200
+***************
+*** 815,820 ****
+--- 815,821 ----
+  #define EW_EXEC              0x40    /* executable files */
+  #define EW_PATH              0x80    /* search in 'path' too */
+  #define EW_ICASE     0x100   /* ignore case */
++ #define EW_NOERROR   0x200   /* no error for bad regexp */
+  /* Note: mostly EW_NOTFOUND and EW_SILENT are mutually exclusive: EW_NOTFOUND
+   * is used when executing commands and EW_SILENT for interactive expanding. */
+  
+*** ../vim-7.3.254/src/version.c       2011-07-15 21:24:06.000000000 +0200
+--- src/version.c      2011-07-20 15:03:52.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     255,
+  /**/
+
+-- 
+Not too long ago, a program was something you watched on TV...
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.256.patch0 b/vim/patches/vim-7.3.256.patch0
new file mode 100644 (file)
index 0000000..b8c9f00
--- /dev/null
@@ -0,0 +1,322 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.256
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.256
+Problem:    Javascript indenting not sufficiently tested.
+Solution:   Add more tests. (Luc Deschenaux)  Mark the lines that are indented
+           wrong.
+Files:     src/testdir/test3.in, src/testdir/test3.ok
+
+
+*** ../vim-7.3.255/src/testdir/test3.in        2011-07-15 14:12:25.000000000 +0200
+--- src/testdir/test3.in       2011-07-15 21:05:49.000000000 +0200
+***************
+*** 1592,1598 ****
+  
+  
+  STARTTEST
+! :set cino=J1
+  /^JSSTART
+  =/^JSEND
+  ENDTEST
+--- 1592,1598 ----
+  
+  
+  STARTTEST
+! :set cino=j1,J1
+  /^JSSTART
+  =/^JSEND
+  ENDTEST
+***************
+*** 1613,1618 ****
+--- 1613,1757 ----
+  JSEND
+  
+  STARTTEST
++ :set cino=j1,J1
++ /^JSSTART
++ =/^JSEND
++ ENDTEST
++ 
++ JSSTART
++ var foo = [
++ 1,  // indent 8 more
++ 2,
++ 3
++ ];  // indent 8 less
++ JSEND
++ 
++ STARTTEST
++ :set cino=j1,J1
++ /^JSSTART
++ =/^JSEND
++ ENDTEST
++ 
++ JSSTART
++ function bar() {
++ var foo = [
++ 1,
++ 2,
++ 3
++ ];  // indent 16 less
++ }
++ JSEND
++ 
++ STARTTEST
++ :set cino=j1,J1
++ /^JSSTART
++ =/^JSEND
++ ENDTEST
++ 
++ JSSTART
++ (function($){
++ 
++ var class_name='myclass';
++ 
++ function private_method() {
++ }
++ 
++ var public_method={
++ method: function(options,args){
++ private_method();
++ }
++ }
++ 
++ function init(options) {
++ 
++ $(this).data(class_name+'_public',$.extend({},{
++ foo: 'bar',
++ bar: 2,  // indent 8 more
++ foobar: [  // indent 8 more
++ 1,  // indent 8 more
++ 2,  // indent 16 more
++ 3   // indent 16 more
++ ],
++ callback: function(){  // indent 8 more
++ return true;  // indent 8 more
++ }  // indent 8 more
++ }, options||{}));
++ }
++ 
++ $.fn[class_name]=function() {
++ 
++ var _arguments=arguments;
++ return this.each(function(){
++ 
++ var options=$(this).data(class_name+'_public');
++ if (!options) {
++ init.apply(this,_arguments);
++ 
++ } else {
++ var method=public_method[_arguments[0]];
++ 
++ if (typeof(method)!='function') {
++ console.log(class_name+' has no method "'+_arguments[0]+'"');
++ return false;
++ }
++ _arguments[0]=options;
++ method.apply(this,_arguments);
++ }
++ });
++ }
++ 
++ })(jQuery);
++ JSEND
++ 
++ STARTTEST
++ :set cino=j1,J1
++ /^JSSTART
++ =/^JSEND
++ ENDTEST
++ 
++ JSSTART
++ function init(options) {
++ $(this).data(class_name+'_public',$.extend({},{
++ foo: 'bar',
++ bar: 2,
++ foobar: [
++ 1,  // indent 8 more
++ 2,  // indent 8 more
++ 3   // indent 8 more
++ ],
++ callback: function(){
++ return true;
++ }
++ }, options||{}));
++ }
++ JSEND
++ 
++ STARTTEST
++ :set cino=j1,J1
++ /^JSSTART
++ =/^JSEND
++ ENDTEST
++ 
++ JSSTART
++ (function($){
++ function init(options) {
++ $(this).data(class_name+'_public',$.extend({},{
++ foo: 'bar',
++ bar: 2,  // indent 8 more
++ foobar: [  // indent 8 more
++ 1,  // indent 8 more
++ 2,  // indent 16 more
++ 3  // indent 16 more
++ ],
++ callback: function(){  // indent 8 more
++ return true;  // indent 8 more
++ }  // indent 8 more
++ }, options||{}));
++ }
++ })(jQuery);
++ JSEND
++ 
++ STARTTEST
+  :g/^STARTTEST/.,/^ENDTEST/d
+  :1;/start of AUTO/,$wq! test.out
+  ENDTEST
+*** ../vim-7.3.255/src/testdir/test3.ok        2011-07-15 14:12:25.000000000 +0200
+--- src/testdir/test3.ok       2011-07-15 21:06:38.000000000 +0200
+***************
+*** 1443,1445 ****
+--- 1443,1559 ----
+  }
+  JSEND
+  
++ 
++ JSSTART
++ var foo = [
++ 1,  // indent 8 more
++      2,
++      3
++      ];  // indent 8 less
++ JSEND
++ 
++ 
++ JSSTART
++ function bar() {
++      var foo = [
++              1,
++              2,
++              3
++                      ];  // indent 16 less
++ }
++ JSEND
++ 
++ 
++ JSSTART
++ (function($){
++ 
++      var class_name='myclass';
++ 
++      function private_method() {
++      }
++ 
++      var public_method={
++              method: function(options,args){
++                      private_method();
++              }
++      }
++ 
++      function init(options) {
++ 
++              $(this).data(class_name+'_public',$.extend({},{
++                      foo: 'bar',
++              bar: 2,  // indent 8 more
++              foobar: [  // indent 8 more
++                      1,  // indent 8 more
++              2,  // indent 16 more
++              3   // indent 16 more
++                      ],
++              callback: function(){  // indent 8 more
++                      return true;  // indent 8 more
++              }  // indent 8 more
++              }, options||{}));
++      }
++ 
++      $.fn[class_name]=function() {
++ 
++              var _arguments=arguments;
++              return this.each(function(){
++ 
++                      var options=$(this).data(class_name+'_public');
++                      if (!options) {
++                              init.apply(this,_arguments);
++ 
++                      } else {
++                              var method=public_method[_arguments[0]];
++ 
++                              if (typeof(method)!='function') {
++                                      console.log(class_name+' has no method "'+_arguments[0]+'"');
++                                      return false;
++                              }
++                              _arguments[0]=options;
++                              method.apply(this,_arguments);
++                      }
++              });
++      }
++ 
++ })(jQuery);
++ JSEND
++ 
++ 
++ JSSTART
++ function init(options) {
++      $(this).data(class_name+'_public',$.extend({},{
++              foo: 'bar',
++              bar: 2,
++              foobar: [
++              1,  // indent 8 more
++              2,  // indent 8 more
++              3   // indent 8 more
++              ],
++              callback: function(){
++                      return true;
++              }
++      }, options||{}));
++ }
++ JSEND
++ 
++ 
++ JSSTART
++ (function($){
++      function init(options) {
++              $(this).data(class_name+'_public',$.extend({},{
++                      foo: 'bar',
++              bar: 2,  // indent 8 more
++              foobar: [  // indent 8 more
++                      1,  // indent 8 more
++              2,  // indent 16 more
++              3  // indent 16 more
++                      ],
++              callback: function(){  // indent 8 more
++                      return true;  // indent 8 more
++              }  // indent 8 more
++              }, options||{}));
++      }
++ })(jQuery);
++ JSEND
++ 
+*** ../vim-7.3.255/src/version.c       2011-07-20 15:04:52.000000000 +0200
+--- src/version.c      2011-07-20 15:08:13.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     256,
+  /**/
+
+-- 
+Not too long ago, a keyboard was something to make music with...
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.257.patch0 b/vim/patches/vim-7.3.257.patch0
new file mode 100644 (file)
index 0000000..f6292bf
--- /dev/null
@@ -0,0 +1,97 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.257
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.257
+Problem:    Not all completions are available to user commands.
+Solution:   Add "color", "compiler", "file_in_path" and "locale". (Dominique
+           Pelle)
+Files:     src/ex_docmd.c, runtime/doc/map.txt
+
+
+*** ../vim-7.3.256/src/ex_docmd.c      2011-07-20 15:04:52.000000000 +0200
+--- src/ex_docmd.c     2011-07-20 16:10:28.000000000 +0200
+***************
+*** 5297,5303 ****
+--- 5297,5305 ----
+  {
+      {EXPAND_AUGROUP, "augroup"},
+      {EXPAND_BUFFERS, "buffer"},
++     {EXPAND_COLORS, "color"},
+      {EXPAND_COMMANDS, "command"},
++     {EXPAND_COMPILER, "compiler"},
+  #if defined(FEAT_CSCOPE)
+      {EXPAND_CSCOPE, "cscope"},
+  #endif
+***************
+*** 5310,5319 ****
+--- 5312,5326 ----
+      {EXPAND_EVENTS, "event"},
+      {EXPAND_EXPRESSION, "expression"},
+      {EXPAND_FILES, "file"},
++     {EXPAND_FILES_IN_PATH, "file_in_path"},
+      {EXPAND_FILETYPE, "filetype"},
+      {EXPAND_FUNCTIONS, "function"},
+      {EXPAND_HELP, "help"},
+      {EXPAND_HIGHLIGHT, "highlight"},
++ #if (defined(HAVE_LOCALE_H) || defined(X_LOCALE)) \
++         && (defined(FEAT_GETTEXT) || defined(FEAT_MBYTE))
++     {EXPAND_LOCALES, "locale"},
++ #endif
+      {EXPAND_MAPPINGS, "mapping"},
+      {EXPAND_MENUS, "menu"},
+      {EXPAND_OWNSYNTAX, "syntax"},
+*** ../vim-7.3.256/runtime/doc/map.txt 2011-05-19 17:25:36.000000000 +0200
+--- runtime/doc/map.txt        2011-07-20 16:10:28.000000000 +0200
+***************
+*** 1202,1221 ****
+--- 1211,1236 ----
+  
+       -complete=augroup       autocmd groups
+       -complete=buffer        buffer names
++      -complete=color         color schemes
+       -complete=command       Ex command (and arguments)
++      -complete=compiler      compilers
++      -complete=cscope        |:cscope| suboptions
+       -complete=dir           directory names
+       -complete=environment   environment variable names
+       -complete=event         autocommand events
+       -complete=expression    Vim expression
+       -complete=file          file and directory names
++      -complete=file_in_path  file and directory names in |'path'|
+       -complete=filetype      filetype names |'filetype'|
+       -complete=function      function name
+       -complete=help          help subjects
+       -complete=highlight     highlight groups
++      -complete=locale        locale names (as output of locale -a)
+       -complete=mapping       mapping name
+       -complete=menu          menus
+       -complete=option        options
+       -complete=shellcmd      Shell command
++      -complete=sign          |:sign| suboptions
+       -complete=syntax        syntax file names |'syntax'|
+       -complete=tag           tags
+       -complete=tag_listfiles tags, file names are shown when CTRL-D is hit
+*** ../vim-7.3.256/src/version.c       2011-07-20 15:09:38.000000000 +0200
+--- src/version.c      2011-07-20 16:30:31.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     257,
+  /**/
+
+-- 
+I have to exercise early in the morning before my brain
+figures out what I'm doing.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.258.patch0 b/vim/patches/vim-7.3.258.patch0
new file mode 100644 (file)
index 0000000..277cbe7
--- /dev/null
@@ -0,0 +1,70 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.258
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.258
+Problem:    MS-Windows: The edit with existing vim context menu entries can be
+           unwanted.
+Solution:   Let a registry entry disable them. (Jerome Vuarand)
+Files:     src/GvimExt/gvimext.cpp
+
+
+*** ../vim-7.3.257/src/GvimExt/gvimext.cpp     2010-08-15 21:57:29.000000000 +0200
+--- src/GvimExt/gvimext.cpp    2011-07-20 16:48:09.000000000 +0200
+***************
+*** 586,593 ****
+  
+      // Initialize m_cntOfHWnd to 0
+      m_cntOfHWnd = 0;
+!     // Retrieve all the vim instances
+!     EnumWindows(EnumWindowsProc, (LPARAM)this);
+  
+      if (cbFiles > 1)
+      {
+--- 586,608 ----
+  
+      // Initialize m_cntOfHWnd to 0
+      m_cntOfHWnd = 0;
+! 
+!     HKEY keyhandle;
+!     bool showExisting = true;
+! 
+!     // Check whether "Edit with existing Vim" entries are disabled.
+!     if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, "Software\\Vim\\Gvim", 0,
+!                                     KEY_READ, &keyhandle) == ERROR_SUCCESS)
+!     {
+!      if (RegQueryValueEx(keyhandle, "DisableEditWithExisting", 0, NULL,
+!                                               NULL, NULL) == ERROR_SUCCESS)
+!          showExisting = false;
+!      RegCloseKey(keyhandle);
+!     }
+! 
+!     // Retrieve all the vim instances, unless disabled.
+!     if (showExisting)
+!      EnumWindows(EnumWindowsProc, (LPARAM)this);
+  
+      if (cbFiles > 1)
+      {
+*** ../vim-7.3.257/src/version.c       2011-07-20 16:36:35.000000000 +0200
+--- src/version.c      2011-07-20 16:54:34.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     258,
+  /**/
+
+-- 
+What the word 'politics' means: 'Poli' in Latin meaning 'many' and 'tics'
+meaning 'bloodsucking creatures'.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.259.patch0 b/vim/patches/vim-7.3.259.patch0
new file mode 100644 (file)
index 0000000..91f9dfa
--- /dev/null
@@ -0,0 +1,503 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.259
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.259
+Problem:    Equivalence classes only work for latin characters.
+Solution:   Add the Unicode equivalence characters. (Dominique Pelle)
+Files:     runtime/doc/pattern.txt, src/regexp.c, src/testdir/test44.in,
+           src/testdir/test44.ok
+
+
+*** ../vim-7.3.258/runtime/doc/pattern.txt     2010-08-15 21:57:14.000000000 +0200
+--- runtime/doc/pattern.txt    2011-07-20 17:44:03.000000000 +0200
+***************
+*** 1027,1037 ****
+         These items only work for 8-bit characters.
+                                                       */[[=* *[==]*
+       - An equivalence class.  This means that characters are matched that
+!        have almost the same meaning, e.g., when ignoring accents.  The form
+!        is:
+               [=a=]
+-        Currently this is only implemented for latin1.  Also works for the
+-        latin1 characters in utf-8 and latin9.
+                                                       */[[.* *[..]*
+       - A collation element.  This currently simply accepts a single
+         character in the form:
+--- 1036,1044 ----
+         These items only work for 8-bit characters.
+                                                       */[[=* *[==]*
+       - An equivalence class.  This means that characters are matched that
+!        have almost the same meaning, e.g., when ignoring accents.  This
+!        only works for Unicode, latin1 and latin9.  The form is:
+               [=a=]
+                                                       */[[.* *[..]*
+       - A collation element.  This currently simply accepts a single
+         character in the form:
+*** ../vim-7.3.258/src/regexp.c        2011-06-19 04:31:54.000000000 +0200
+--- src/regexp.c       2011-07-20 17:56:52.000000000 +0200
+***************
+*** 666,673 ****
+--- 666,677 ----
+  static void  regc __ARGS((int b));
+  #ifdef FEAT_MBYTE
+  static void  regmbc __ARGS((int c));
++ # define REGMBC(x) regmbc(x);
++ # define CASEMBC(x) case x:
+  #else
+  # define regmbc(c) regc(c)
++ # define REGMBC(x)
++ # define CASEMBC(x)
+  #endif
+  static void  reginsert __ARGS((int, char_u *));
+  static void  reginsert_limits __ARGS((int, long, long, char_u *));
+***************
+*** 787,854 ****
+       switch (c)
+       {
+           case 'A': case '\300': case '\301': case '\302':
+           case '\303': case '\304': case '\305':
+                     regmbc('A'); regmbc('\300'); regmbc('\301');
+                     regmbc('\302'); regmbc('\303'); regmbc('\304');
+                     regmbc('\305');
+                     return;
+           case 'C': case '\307':
+                     regmbc('C'); regmbc('\307');
+                     return;
+           case 'E': case '\310': case '\311': case '\312': case '\313':
+                     regmbc('E'); regmbc('\310'); regmbc('\311');
+                     regmbc('\312'); regmbc('\313');
+                     return;
+           case 'I': case '\314': case '\315': case '\316': case '\317':
+                     regmbc('I'); regmbc('\314'); regmbc('\315');
+                     regmbc('\316'); regmbc('\317');
+                     return;
+           case 'N': case '\321':
+                     regmbc('N'); regmbc('\321');
+                     return;
+           case 'O': case '\322': case '\323': case '\324': case '\325':
+!          case '\326':
+                     regmbc('O'); regmbc('\322'); regmbc('\323');
+                     regmbc('\324'); regmbc('\325'); regmbc('\326');
+                     return;
+           case 'U': case '\331': case '\332': case '\333': case '\334':
+                     regmbc('U'); regmbc('\331'); regmbc('\332');
+                     regmbc('\333'); regmbc('\334');
+                     return;
+           case 'Y': case '\335':
+                     regmbc('Y'); regmbc('\335');
+                     return;
+           case 'a': case '\340': case '\341': case '\342':
+           case '\343': case '\344': case '\345':
+                     regmbc('a'); regmbc('\340'); regmbc('\341');
+                     regmbc('\342'); regmbc('\343'); regmbc('\344');
+                     regmbc('\345');
+                     return;
+           case 'c': case '\347':
+                     regmbc('c'); regmbc('\347');
+                     return;
+           case 'e': case '\350': case '\351': case '\352': case '\353':
+                     regmbc('e'); regmbc('\350'); regmbc('\351');
+                     regmbc('\352'); regmbc('\353');
+                     return;
+           case 'i': case '\354': case '\355': case '\356': case '\357':
+                     regmbc('i'); regmbc('\354'); regmbc('\355');
+                     regmbc('\356'); regmbc('\357');
+                     return;
+           case 'n': case '\361':
+                     regmbc('n'); regmbc('\361');
+                     return;
+           case 'o': case '\362': case '\363': case '\364': case '\365':
+!          case '\366':
+                     regmbc('o'); regmbc('\362'); regmbc('\363');
+                     regmbc('\364'); regmbc('\365'); regmbc('\366');
+                     return;
+           case 'u': case '\371': case '\372': case '\373': case '\374':
+                     regmbc('u'); regmbc('\371'); regmbc('\372');
+                     regmbc('\373'); regmbc('\374');
+                     return;
+           case 'y': case '\375': case '\377':
+                     regmbc('y'); regmbc('\375'); regmbc('\377');
+                     return;
+       }
+  #endif
+--- 791,1085 ----
+       switch (c)
+       {
+           case 'A': case '\300': case '\301': case '\302':
++          CASEMBC(0x100) CASEMBC(0x102) CASEMBC(0x104) CASEMBC(0x1cd)
++          CASEMBC(0x1de) CASEMBC(0x1e0) CASEMBC(0x1ea2)
+           case '\303': case '\304': case '\305':
+                     regmbc('A'); regmbc('\300'); regmbc('\301');
+                     regmbc('\302'); regmbc('\303'); regmbc('\304');
+                     regmbc('\305');
++                    REGMBC(0x100) REGMBC(0x102) REGMBC(0x104)
++                    REGMBC(0x1cd) REGMBC(0x1de) REGMBC(0x1e0)
++                    REGMBC(0x1ea2)
++                    return;
++          case 'B': CASEMBC(0x1e02) CASEMBC(0x1e06)
++                    regmbc('B'); REGMBC(0x1e02) REGMBC(0x1e06)
+                     return;
+           case 'C': case '\307':
++          CASEMBC(0x106) CASEMBC(0x108) CASEMBC(0x10a) CASEMBC(0x10c)
+                     regmbc('C'); regmbc('\307');
++                    REGMBC(0x106) REGMBC(0x108) REGMBC(0x10a)
++                    REGMBC(0x10c)
++                    return;
++          case 'D': CASEMBC(0x10e) CASEMBC(0x110) CASEMBC(0x1e0a)
++          CASEMBC(0x1e0e) CASEMBC(0x1e10)
++                    regmbc('D'); REGMBC(0x10e) REGMBC(0x110)
++                    REGMBC(0x1e0a) REGMBC(0x1e0e) REGMBC(0x1e10)
+                     return;
+           case 'E': case '\310': case '\311': case '\312': case '\313':
++          CASEMBC(0x112) CASEMBC(0x114) CASEMBC(0x116) CASEMBC(0x118)
++          CASEMBC(0x11a) CASEMBC(0x1eba) CASEMBC(0x1ebc)
+                     regmbc('E'); regmbc('\310'); regmbc('\311');
+                     regmbc('\312'); regmbc('\313');
++                    REGMBC(0x112) REGMBC(0x114) REGMBC(0x116)
++                    REGMBC(0x118) REGMBC(0x11a) REGMBC(0x1eba)
++                    REGMBC(0x1ebc)
++                    return;
++          case 'F': CASEMBC(0x1e1e)
++                    regmbc('F'); REGMBC(0x1e1e)
++                    return;
++          case 'G': CASEMBC(0x11c) CASEMBC(0x11e) CASEMBC(0x120)
++          CASEMBC(0x122) CASEMBC(0x1e4) CASEMBC(0x1e6) CASEMBC(0x1f4)
++          CASEMBC(0x1e20)
++                    regmbc('G'); REGMBC(0x11c) REGMBC(0x11e)
++                    REGMBC(0x120) REGMBC(0x122) REGMBC(0x1e4)
++                    REGMBC(0x1e6) REGMBC(0x1f4) REGMBC(0x1e20)
++                    return;
++          case 'H': CASEMBC(0x124) CASEMBC(0x126) CASEMBC(0x1e22)
++          CASEMBC(0x1e26) CASEMBC(0x1e28)
++                    regmbc('H'); REGMBC(0x124) REGMBC(0x126)
++                    REGMBC(0x1e22) REGMBC(0x1e26) REGMBC(0x1e28)
+                     return;
+           case 'I': case '\314': case '\315': case '\316': case '\317':
++          CASEMBC(0x128) CASEMBC(0x12a) CASEMBC(0x12c) CASEMBC(0x12e)
++          CASEMBC(0x130) CASEMBC(0x1cf) CASEMBC(0x1ec8)
+                     regmbc('I'); regmbc('\314'); regmbc('\315');
+                     regmbc('\316'); regmbc('\317');
++                    REGMBC(0x128) REGMBC(0x12a) REGMBC(0x12c)
++                    REGMBC(0x12e) REGMBC(0x130) REGMBC(0x1cf)
++                    REGMBC(0x1ec8)
++                    return;
++          case 'J': CASEMBC(0x134)
++                    regmbc('J'); REGMBC(0x134)
++                    return;
++          case 'K': CASEMBC(0x136) CASEMBC(0x1e8) CASEMBC(0x1e30)
++          CASEMBC(0x1e34)
++                    regmbc('K'); REGMBC(0x136) REGMBC(0x1e8)
++                    REGMBC(0x1e30) REGMBC(0x1e34)
++                    return;
++          case 'L': CASEMBC(0x139) CASEMBC(0x13b) CASEMBC(0x13d)
++          CASEMBC(0x13f) CASEMBC(0x141) CASEMBC(0x1e3a)
++                    regmbc('L'); REGMBC(0x139) REGMBC(0x13b)
++                    REGMBC(0x13d) REGMBC(0x13f) REGMBC(0x141)
++                    REGMBC(0x1e3a)
++                    return;
++          case 'M': CASEMBC(0x1e3e) CASEMBC(0x1e40)
++                    regmbc('M'); REGMBC(0x1e3e) REGMBC(0x1e40)
+                     return;
+           case 'N': case '\321':
++          CASEMBC(0x143) CASEMBC(0x145) CASEMBC(0x147) CASEMBC(0x1e44)
++          CASEMBC(0x1e48)
+                     regmbc('N'); regmbc('\321');
++                    REGMBC(0x143) REGMBC(0x145) REGMBC(0x147)
++                    REGMBC(0x1e44) REGMBC(0x1e48)
+                     return;
+           case 'O': case '\322': case '\323': case '\324': case '\325':
+!          case '\326': case '\330':
+!          CASEMBC(0x14c) CASEMBC(0x14e) CASEMBC(0x150) CASEMBC(0x1a0)
+!          CASEMBC(0x1d1) CASEMBC(0x1ea) CASEMBC(0x1ec) CASEMBC(0x1ece)
+                     regmbc('O'); regmbc('\322'); regmbc('\323');
+                     regmbc('\324'); regmbc('\325'); regmbc('\326');
++                    regmbc('\330');
++                    REGMBC(0x14c) REGMBC(0x14e) REGMBC(0x150)
++                    REGMBC(0x1a0) REGMBC(0x1d1) REGMBC(0x1ea)
++                    REGMBC(0x1ec) REGMBC(0x1ece)
++                    return;
++          case 'P': case 0x1e54: case 0x1e56:
++                    regmbc('P'); REGMBC(0x1e54) REGMBC(0x1e56)
++                    return;
++          case 'R': CASEMBC(0x154) CASEMBC(0x156) CASEMBC(0x158)
++          CASEMBC(0x1e58) CASEMBC(0x1e5e)
++                    regmbc('R'); REGMBC(0x154) REGMBC(0x156) REGMBC(0x158)
++                    REGMBC(0x1e58) REGMBC(0x1e5e)
++                    return;
++          case 'S': CASEMBC(0x15a) CASEMBC(0x15c) CASEMBC(0x15e)
++          CASEMBC(0x160) CASEMBC(0x1e60)
++                    regmbc('S'); REGMBC(0x15a) REGMBC(0x15c)
++                    REGMBC(0x15e) REGMBC(0x160) REGMBC(0x1e60)
++                    return;
++          case 'T': CASEMBC(0x162) CASEMBC(0x164) CASEMBC(0x166)
++          CASEMBC(0x1e6a) CASEMBC(0x1e6e)
++                    regmbc('T'); REGMBC(0x162) REGMBC(0x164)
++                    REGMBC(0x166) REGMBC(0x1e6a) REGMBC(0x1e6e)
+                     return;
+           case 'U': case '\331': case '\332': case '\333': case '\334':
++          CASEMBC(0x168) CASEMBC(0x16a) CASEMBC(0x16c) CASEMBC(0x16e)
++          CASEMBC(0x170) CASEMBC(0x172) CASEMBC(0x1af) CASEMBC(0x1d3)
++          CASEMBC(0x1ee6)
+                     regmbc('U'); regmbc('\331'); regmbc('\332');
+                     regmbc('\333'); regmbc('\334');
++                    REGMBC(0x168) REGMBC(0x16a) REGMBC(0x16c)
++                    REGMBC(0x16e) REGMBC(0x170) REGMBC(0x172)
++                    REGMBC(0x1af) REGMBC(0x1d3) REGMBC(0x1ee6)
++                    return;
++          case 'V': CASEMBC(0x1e7c)
++                    regmbc('V'); REGMBC(0x1e7c)
++                    return;
++          case 'W': CASEMBC(0x174) CASEMBC(0x1e80) CASEMBC(0x1e82)
++          CASEMBC(0x1e84) CASEMBC(0x1e86)
++                    regmbc('W'); REGMBC(0x174) REGMBC(0x1e80)
++                    REGMBC(0x1e82) REGMBC(0x1e84) REGMBC(0x1e86)
++                    return;
++          case 'X': CASEMBC(0x1e8a) CASEMBC(0x1e8c)
++                    regmbc('X'); REGMBC(0x1e8a) REGMBC(0x1e8c)
+                     return;
+           case 'Y': case '\335':
++          CASEMBC(0x176) CASEMBC(0x178) CASEMBC(0x1e8e) CASEMBC(0x1ef2)
++          CASEMBC(0x1ef6) CASEMBC(0x1ef8)
+                     regmbc('Y'); regmbc('\335');
++                    REGMBC(0x176) REGMBC(0x178) REGMBC(0x1e8e)
++                    REGMBC(0x1ef2) REGMBC(0x1ef6) REGMBC(0x1ef8)
++                    return;
++          case 'Z': CASEMBC(0x179) CASEMBC(0x17b) CASEMBC(0x17d)
++          CASEMBC(0x1b5) CASEMBC(0x1e90) CASEMBC(0x1e94)
++                    regmbc('Z'); REGMBC(0x179) REGMBC(0x17b)
++                    REGMBC(0x17d) REGMBC(0x1b5) REGMBC(0x1e90)
++                    REGMBC(0x1e94)
+                     return;
+           case 'a': case '\340': case '\341': case '\342':
+           case '\343': case '\344': case '\345':
++          CASEMBC(0x101) CASEMBC(0x103) CASEMBC(0x105) CASEMBC(0x1ce)
++          CASEMBC(0x1df) CASEMBC(0x1e1) CASEMBC(0x1ea3)
+                     regmbc('a'); regmbc('\340'); regmbc('\341');
+                     regmbc('\342'); regmbc('\343'); regmbc('\344');
+                     regmbc('\345');
++                    REGMBC(0x101) REGMBC(0x103) REGMBC(0x105)
++                    REGMBC(0x1ce) REGMBC(0x1df) REGMBC(0x1e1)
++                    REGMBC(0x1ea3)
++                    return;
++          case 'b': CASEMBC(0x1e03) CASEMBC(0x1e07)
++                    regmbc('b'); REGMBC(0x1e03) REGMBC(0x1e07)
+                     return;
+           case 'c': case '\347':
++          CASEMBC(0x107) CASEMBC(0x109) CASEMBC(0x10b) CASEMBC(0x10d)
+                     regmbc('c'); regmbc('\347');
++                    REGMBC(0x107) REGMBC(0x109) REGMBC(0x10b)
++                    REGMBC(0x10d)
++                    return;
++          case 'd': CASEMBC(0x10f) CASEMBC(0x111) CASEMBC(0x1d0b)
++          CASEMBC(0x1e11)
++                    regmbc('d'); REGMBC(0x10f) REGMBC(0x111)
++                    REGMBC(0x1e0b) REGMBC(0x01e0f) REGMBC(0x1e11)
+                     return;
+           case 'e': case '\350': case '\351': case '\352': case '\353':
++          CASEMBC(0x113) CASEMBC(0x115) CASEMBC(0x117) CASEMBC(0x119)
++          CASEMBC(0x11b) CASEMBC(0x1ebb) CASEMBC(0x1ebd)
+                     regmbc('e'); regmbc('\350'); regmbc('\351');
+                     regmbc('\352'); regmbc('\353');
++                    REGMBC(0x113) REGMBC(0x115) REGMBC(0x117)
++                    REGMBC(0x119) REGMBC(0x11b) REGMBC(0x1ebb)
++                    REGMBC(0x1ebd)
++                    return;
++          case 'f': CASEMBC(0x1e1f)
++                    regmbc('f'); REGMBC(0x1e1f)
++                    return;
++          case 'g': CASEMBC(0x11d) CASEMBC(0x11f) CASEMBC(0x121)
++          CASEMBC(0x123) CASEMBC(0x1e5) CASEMBC(0x1e7) CASEMBC(0x1f5)
++          CASEMBC(0x1e21)
++                    regmbc('g'); REGMBC(0x11d) REGMBC(0x11f)
++                    REGMBC(0x121) REGMBC(0x123) REGMBC(0x1e5)
++                    REGMBC(0x1e7) REGMBC(0x1f5) REGMBC(0x1e21)
++                    return;
++          case 'h': CASEMBC(0x125) CASEMBC(0x127) CASEMBC(0x1e23)
++          CASEMBC(0x1e27) CASEMBC(0x1e29) CASEMBC(0x1e96)
++                    regmbc('h'); REGMBC(0x125) REGMBC(0x127)
++                    REGMBC(0x1e23) REGMBC(0x1e27) REGMBC(0x1e29)
++                    REGMBC(0x1e96)
+                     return;
+           case 'i': case '\354': case '\355': case '\356': case '\357':
++          CASEMBC(0x129) CASEMBC(0x12b) CASEMBC(0x12d) CASEMBC(0x12f)
++          CASEMBC(0x1d0) CASEMBC(0x1ec9)
+                     regmbc('i'); regmbc('\354'); regmbc('\355');
+                     regmbc('\356'); regmbc('\357');
++                    REGMBC(0x129) REGMBC(0x12b) REGMBC(0x12d)
++                    REGMBC(0x12f) REGMBC(0x1d0) REGMBC(0x1ec9)
++                    return;
++          case 'j': CASEMBC(0x135) CASEMBC(0x1f0)
++                    regmbc('j'); REGMBC(0x135) REGMBC(0x1f0)
++                    return;
++          case 'k': CASEMBC(0x137) CASEMBC(0x1e9) CASEMBC(0x1e31)
++          CASEMBC(0x1e35)
++                    regmbc('k'); REGMBC(0x137) REGMBC(0x1e9)
++                    REGMBC(0x1e31) REGMBC(0x1e35)
++                    return;
++          case 'l': CASEMBC(0x13a) CASEMBC(0x13c) CASEMBC(0x13e)
++          CASEMBC(0x140) CASEMBC(0x142) CASEMBC(0x1e3b)
++                    regmbc('l'); REGMBC(0x13a) REGMBC(0x13c)
++                    REGMBC(0x13e) REGMBC(0x140) REGMBC(0x142)
++                    REGMBC(0x1e3b)
++                    return;
++          case 'm': CASEMBC(0x1e3f) CASEMBC(0x1e41)
++                    regmbc('m'); REGMBC(0x1e3f) REGMBC(0x1e41)
+                     return;
+           case 'n': case '\361':
++          CASEMBC(0x144) CASEMBC(0x146) CASEMBC(0x148) CASEMBC(0x149)
++          CASEMBC(0x1e45) CASEMBC(0x1e49)
+                     regmbc('n'); regmbc('\361');
++                    REGMBC(0x144) REGMBC(0x146) REGMBC(0x148)
++                    REGMBC(0x149) REGMBC(0x1e45) REGMBC(0x1e49)
+                     return;
+           case 'o': case '\362': case '\363': case '\364': case '\365':
+!          case '\366': case '\370':
+!          CASEMBC(0x14d) CASEMBC(0x14f) CASEMBC(0x151) CASEMBC(0x1a1)
+!          CASEMBC(0x1d2) CASEMBC(0x1eb) CASEMBC(0x1ed) CASEMBC(0x1ecf)
+                     regmbc('o'); regmbc('\362'); regmbc('\363');
+                     regmbc('\364'); regmbc('\365'); regmbc('\366');
++                    regmbc('\370');
++                    REGMBC(0x14d) REGMBC(0x14f) REGMBC(0x151)
++                    REGMBC(0x1a1) REGMBC(0x1d2) REGMBC(0x1eb)
++                    REGMBC(0x1ed) REGMBC(0x1ecf)
++                    return;
++          case 'p': CASEMBC(0x1e55) CASEMBC(0x1e57)
++                    regmbc('p'); REGMBC(0x1e55) REGMBC(0x1e57)
++                    return;
++          case 'r': CASEMBC(0x155) CASEMBC(0x157) CASEMBC(0x159)
++          CASEMBC(0x1e59) CASEMBC(0x1e5f)
++                    regmbc('r'); REGMBC(0x155) REGMBC(0x157) REGMBC(0x159)
++                    REGMBC(0x1e59) REGMBC(0x1e5f)
++                    return;
++          case 's': CASEMBC(0x15b) CASEMBC(0x15d) CASEMBC(0x15f)
++          CASEMBC(0x161) CASEMBC(0x1e61)
++                    regmbc('s'); REGMBC(0x15b) REGMBC(0x15d)
++                    REGMBC(0x15f) REGMBC(0x161) REGMBC(0x1e61)
++                    return;
++          case 't': CASEMBC(0x163) CASEMBC(0x165) CASEMBC(0x167)
++          CASEMBC(0x1e6b) CASEMBC(0x1e6f) CASEMBC(0x1e97)
++                    regmbc('t'); REGMBC(0x163) REGMBC(0x165) REGMBC(0x167)
++                    REGMBC(0x1e6b) REGMBC(0x1e6f) REGMBC(0x1e97)
+                     return;
+           case 'u': case '\371': case '\372': case '\373': case '\374':
++          CASEMBC(0x169) CASEMBC(0x16b) CASEMBC(0x16d) CASEMBC(0x16f)
++          CASEMBC(0x171) CASEMBC(0x173) CASEMBC(0x1b0) CASEMBC(0x1d4)
++          CASEMBC(0x1ee7)
+                     regmbc('u'); regmbc('\371'); regmbc('\372');
+                     regmbc('\373'); regmbc('\374');
++                    REGMBC(0x169) REGMBC(0x16b) REGMBC(0x16d)
++                    REGMBC(0x16f) REGMBC(0x171) REGMBC(0x173)
++                    REGMBC(0x1b0) REGMBC(0x1d4) REGMBC(0x1ee7)
++                    return;
++          case 'v': CASEMBC(0x1e7d)
++                    regmbc('v'); REGMBC(0x1e7d)
++                    return;
++          case 'w': CASEMBC(0x175) CASEMBC(0x1e81) CASEMBC(0x1e83)
++          CASEMBC(0x1e85) CASEMBC(0x1e87) CASEMBC(0x1e98)
++                    regmbc('w'); REGMBC(0x175) REGMBC(0x1e81)
++                    REGMBC(0x1e83) REGMBC(0x1e85) REGMBC(0x1e87)
++                    REGMBC(0x1e98)
++                    return;
++          case 'x': CASEMBC(0x1e8b) CASEMBC(0x1e8d)
++                    regmbc('x'); REGMBC(0x1e8b) REGMBC(0x1e8d)
+                     return;
+           case 'y': case '\375': case '\377':
++          CASEMBC(0x177) CASEMBC(0x1e8f) CASEMBC(0x1e99)
++          CASEMBC(0x1ef3) CASEMBC(0x1ef7) CASEMBC(0x1ef9)
+                     regmbc('y'); regmbc('\375'); regmbc('\377');
++                    REGMBC(0x177) REGMBC(0x1e8f) REGMBC(0x1e99)
++                    REGMBC(0x1ef3) REGMBC(0x1ef7) REGMBC(0x1ef9)
++                    return;
++          case 'z': CASEMBC(0x17a) CASEMBC(0x17c) CASEMBC(0x17e)
++          CASEMBC(0x1b6) CASEMBC(0x1e91) CASEMBC(0x1e95)
++                    regmbc('z'); REGMBC(0x17a) REGMBC(0x17c)
++                    REGMBC(0x17e) REGMBC(0x1b6) REGMBC(0x1e91)
++                    REGMBC(0x1e95)
+                     return;
+       }
+  #endif
+***************
+*** 2468,2473 ****
+--- 2699,2706 ----
+  regmbc(c)
+      int              c;
+  {
++     if (!has_mbyte && c > 0xff)
++      return;
+      if (regcode == JUST_CALC_SIZE)
+       regsize += (*mb_char2len)(c);
+      else
+***************
+*** 2588,2594 ****
+      else
+       offset = (int)(val - scan);
+      /* When the offset uses more than 16 bits it can no longer fit in the two
+!      * bytes avaliable.  Use a global flag to avoid having to check return
+       * values in too many places. */
+      if (offset > 0xffff)
+       reg_toolong = TRUE;
+--- 2821,2827 ----
+      else
+       offset = (int)(val - scan);
+      /* When the offset uses more than 16 bits it can no longer fit in the two
+!      * bytes available.  Use a global flag to avoid having to check return
+       * values in too many places. */
+      if (offset > 0xffff)
+       reg_toolong = TRUE;
+*** ../vim-7.3.258/src/testdir/test44.in       2010-08-15 21:57:29.000000000 +0200
+--- src/testdir/test44.in      2011-07-20 17:36:49.000000000 +0200
+***************
+*** 27,32 ****
+--- 27,34 ----
+  x/\%U12345678
+  x/[\U1234abcd\u1234\uabcd]
+  x/\%d21879b
++ x/ [[=A=]]* [[=B=]]* [[=C=]]* [[=D=]]* [[=E=]]* [[=F=]]* [[=G=]]* [[=H=]]* [[=I=]]* [[=J=]]* [[=K=]]* [[=L=]]* [[=M=]]* [[=N=]]* [[=O=]]* [[=P=]]* [[=Q=]]* [[=R=]]* [[=S=]]* [[=T=]]* [[=U=]]* [[=V=]]* [[=W=]]* [[=X=]]* [[=Y=]]* [[=Z=]]*/e
++ x/ [[=a=]]* [[=b=]]* [[=c=]]* [[=d=]]* [[=e=]]* [[=f=]]* [[=g=]]* [[=h=]]* [[=i=]]* [[=j=]]* [[=k=]]* [[=l=]]* [[=m=]]* [[=n=]]* [[=o=]]* [[=p=]]* [[=q=]]* [[=r=]]* [[=s=]]* [[=t=]]* [[=u=]]* [[=v=]]* [[=w=]]* [[=x=]]* [[=y=]]* [[=z=]]*/e
+  x:?^1?,$w! test.out
+  :e! test.out
+  G:put =matchstr(\"×בגד\", \".\", 0, 2) " ×‘
+***************
+*** 53,55 ****
+--- 55,59 ----
+  e ü’…™¸y
+  f ü’Š¯z
+  g aå•·bb
++ h AÀÃÂÃÄÅĀĂĄÇǞǠẢ BḂḆ CÇĆĈĊČ DÄŽÄḊḎḠEÈÉÊËĒĔĖĘĚẺẼ FḞ GĜĞĠĢǤǦǴḠ HĤĦḢḦḨ IÃŒÃÃŽÃĨĪĬĮİÇỈ JÄ´ KĶǨḰḴ LĹĻĽĿÅḺ MḾṀ NÑŃŅŇṄṈ OÒÓÔÕÖØŌŎÅƠǑǪǬỎ PṔṖ Q RŔŖŘṘṞ SŚŜŞŠṠ TŢŤŦṪṮ UÙÚÛÜŨŪŬŮŰŲƯǓỦ Vá¹¼ WŴẀẂẄẆ XẊẌ YÃŶŸẎỲỶỸ ZŹŻŽƵáºáº”
++ i aàáâãäåÄăąǎǟǡả bḃḇ cçćĉċĠdÄđḋá¸á¸‘ eèéêëēĕėęěẻẽ fḟ gÄğġģǥǧǵḡ hĥħḣḧḩẖ iìíîïĩīĭįÇỉ jĵǰ kķǩḱḵ lĺļľŀłḻ mḿṠnñńņňʼnṅṉ oòóôõöøÅÅÅ‘Æ¡Ç’Ç«Ç­á» pṕṗ q rŕŗřṙṟ sÅ›Åşšṡ tţťŧṫṯẗ uùúûüũūŭůűųưǔủ vá¹½ wŵáºáºƒáº…ẇẘ xẋẠyýÿŷáºáº™á»³á»·á»¹ zźżžƶẑẕ
+*** ../vim-7.3.258/src/testdir/test44.ok       2010-08-15 21:57:29.000000000 +0200
+--- src/testdir/test44.ok      2011-07-20 17:36:49.000000000 +0200
+***************
+*** 14,19 ****
+--- 14,21 ----
+  e y
+  f z
+  g abb
++ h AÀÃÂÃÄÅĀĂĄÇǞǠẢ BḂḆ CÇĆĈĊČ DÄŽÄḊḎḠEÈÉÊËĒĔĖĘĚẺẼ FḞ GĜĞĠĢǤǦǴḠ HĤĦḢḦḨ IÃŒÃÃŽÃĨĪĬĮİÇỈ JÄ´ KĶǨḰḴ LĹĻĽĿÅḺ MḾṀ NÑŃŅŇṄṈ OÒÓÔÕÖØŌŎÅƠǑǪǬỎ PṔṖ Q RŔŖŘṘṞ SŚŜŞŠṠ TŢŤŦṪṮ UÙÚÛÜŨŪŬŮŰŲƯǓỦ Vá¹¼ WŴẀẂẄẆ XẊẌ YÃŶŸẎỲỶỸ ZŹŻŽƵáº
++ i aàáâãäåÄăąǎǟǡả bḃḇ cçćĉċĠdÄđḋá¸á¸‘ eèéêëēĕėęěẻẽ fḟ gÄğġģǥǧǵḡ hĥħḣḧḩẖ iìíîïĩīĭįÇỉ jĵǰ kķǩḱḵ lĺļľŀłḻ mḿṠnñńņňʼnṅṉ oòóôõöøÅÅÅ‘Æ¡Ç’Ç«Ç­á» pṕṗ q rŕŗřṙṟ sÅ›Åşšṡ tţťŧṫṯẗ uùúûüũūŭůűųưǔủ vá¹½ wŵáºáºƒáº…ẇẘ xẋẠyýÿŷáºáº™á»³á»·á»¹ zźżžƶẑ
+  ×‘
+  ×‘×’
+  ×
+*** ../vim-7.3.258/src/version.c       2011-07-20 17:27:17.000000000 +0200
+--- src/version.c      2011-07-20 17:38:32.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     259,
+  /**/
+
+-- 
+Not too long ago, compress was something you did to garbage...
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.260.patch0 b/vim/patches/vim-7.3.260.patch0
new file mode 100644 (file)
index 0000000..ba9af57
--- /dev/null
@@ -0,0 +1,69 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.260
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.260
+Problem:    CursorHold triggers on an incomplete mapping. (Will Gray)
+Solution:   Don't trigger CursorHold when there is typeahead.
+Files:     src/fileio.c
+
+
+*** ../vim-7.3.259/src/fileio.c        2011-05-19 17:25:36.000000000 +0200
+--- src/fileio.c       2011-07-20 18:22:16.000000000 +0200
+***************
+*** 9044,9050 ****
+  {
+      int              state;
+  
+!     if (!did_cursorhold && has_cursorhold() && !Recording
+  #ifdef FEAT_INS_EXPAND
+           && !ins_compl_active()
+  #endif
+--- 9044,9053 ----
+  {
+      int              state;
+  
+!     if (!did_cursorhold
+!          && has_cursorhold()
+!          && !Recording
+!          && typebuf.tb_len == 0
+  #ifdef FEAT_INS_EXPAND
+           && !ins_compl_active()
+  #endif
+***************
+*** 9935,9940 ****
+--- 9938,9945 ----
+           if ((c == ';' || c == '>') && match == FALSE)
+           {
+               *pattern = NUL;     /* Terminate the string */
++              /* TODO: match with 'filetype' of buffer that "fname" comes
++               * from. */
+               match = mch_check_filetype(fname, type_start);
+               *pattern = c;       /* Restore the terminator */
+               type_start = pattern + 1;
+*** ../vim-7.3.259/src/version.c       2011-07-20 17:58:14.000000000 +0200
+--- src/version.c      2011-07-20 18:25:15.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     260,
+  /**/
+
+-- 
+LAUNCELOT: At last!   A call!  A cry of distress ...
+           (he draws his sword, and turns to CONCORDE)
+           Concorde!  Brave, Concorde ... you shall not have died in vain!
+CONCORDE:  I'm not quite dead, sir ...
+                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.261.patch0 b/vim/patches/vim-7.3.261.patch0
new file mode 100644 (file)
index 0000000..4c03f6b
--- /dev/null
@@ -0,0 +1,53 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.261
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.261
+Problem:    G++ error message errornously recognized as error.
+Solution:   Ignore "In file included from" line also when it ends in a colon.
+           (Fernando Castillo)
+Files:     src/option.h
+
+
+*** ../vim-7.3.260/src/option.h        2011-06-26 05:36:07.000000000 +0200
+--- src/option.h       2011-07-27 13:44:08.000000000 +0200
+***************
+*** 33,39 ****
+  #     ifdef EBCDIC
+  #define DFLT_EFM     "%*[^ ] %*[^ ] %f:%l%*[ ]%m,%*[^\"]\"%f\"%*\\D%l: %m,\"%f\"%*\\D%l: %m,%f:%l:%c:%m,%f(%l):%m,%f:%l:%m,\"%f\"\\, line %l%*\\D%c%*[^ ] %m,%D%*\\a[%*\\d]: Entering directory `%f',%X%*\\a[%*\\d]: Leaving directory `%f',%DMaking %*\\a in %f,%f|%l| %m"
+  #     else
+! #define DFLT_EFM     "%*[^\"]\"%f\"%*\\D%l: %m,\"%f\"%*\\D%l: %m,%-G%f:%l: (Each undeclared identifier is reported only once,%-G%f:%l: for each function it appears in.),%-GIn file included from %f:%l:%c,%-GIn file included from %f:%l,%-Gfrom %f:%l:%c,%-Gfrom %f:%l,%f:%l:%c:%m,%f(%l):%m,%f:%l:%m,\"%f\"\\, line %l%*\\D%c%*[^ ] %m,%D%*\\a[%*\\d]: Entering directory `%f',%X%*\\a[%*\\d]: Leaving directory `%f',%D%*\\a: Entering directory `%f',%X%*\\a: Leaving directory `%f',%DMaking %*\\a in %f,%f|%l| %m"
+  #     endif
+  #    endif
+  #   endif
+--- 33,39 ----
+  #     ifdef EBCDIC
+  #define DFLT_EFM     "%*[^ ] %*[^ ] %f:%l%*[ ]%m,%*[^\"]\"%f\"%*\\D%l: %m,\"%f\"%*\\D%l: %m,%f:%l:%c:%m,%f(%l):%m,%f:%l:%m,\"%f\"\\, line %l%*\\D%c%*[^ ] %m,%D%*\\a[%*\\d]: Entering directory `%f',%X%*\\a[%*\\d]: Leaving directory `%f',%DMaking %*\\a in %f,%f|%l| %m"
+  #     else
+! #define DFLT_EFM     "%*[^\"]\"%f\"%*\\D%l: %m,\"%f\"%*\\D%l: %m,%-G%f:%l: (Each undeclared identifier is reported only once,%-G%f:%l: for each function it appears in.),%-GIn file included from %f:%l:%c:,%-GIn file included from %f:%l:%c,%-GIn file included from %f:%l,%-Gfrom %f:%l:%c,%-Gfrom %f:%l,%f:%l:%c:%m,%f(%l):%m,%f:%l:%m,\"%f\"\\, line %l%*\\D%c%*[^ ] %m,%D%*\\a[%*\\d]: Entering directory `%f',%X%*\\a[%*\\d]: Leaving directory `%f',%D%*\\a: Entering directory `%f',%X%*\\a: Leaving directory `%f',%DMaking %*\\a in %f,%f|%l| %m"
+  #     endif
+  #    endif
+  #   endif
+*** ../vim-7.3.260/src/version.c       2011-07-20 18:29:33.000000000 +0200
+--- src/version.c      2011-07-27 13:46:23.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     261,
+  /**/
+
+-- 
+Have you heard about the new Barbie doll?  It's called Divorce
+Barbie.  It comes with all of Ken's stuff.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.262.patch0 b/vim/patches/vim-7.3.262.patch0
new file mode 100644 (file)
index 0000000..b3bd5cd
--- /dev/null
@@ -0,0 +1,1356 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.262
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.262
+Problem:    Photon code style doesn't match Vim style.
+Solution:   Clean up some of it.  (Elias Diem)
+Files:     src/gui_photon.c
+
+
+*** ../vim-7.3.261/src/gui_photon.c    2011-01-17 20:08:03.000000000 +0100
+--- src/gui_photon.c   2011-07-27 14:07:02.000000000 +0200
+***************
+*** 32,40 ****
+  #endif
+  
+  #define ARRAY_LENGTH(a) (sizeof(a) / sizeof(a[0]))
+! #define RGB(r,g,b) PgRGB(r,g,b)
+  
+! #define EVENT_BUFFER_SIZE sizeof( PhEvent_t ) + 1000
+  
+  /* Some defines for gui_mch_mousehide() */
+  #define MOUSE_HIDE           TRUE
+--- 32,40 ----
+  #endif
+  
+  #define ARRAY_LENGTH(a) (sizeof(a) / sizeof(a[0]))
+! #define RGB(r, g, b) PgRGB(r, g, b)
+  
+! #define EVENT_BUFFER_SIZE sizeof(PhEvent_t) + 1000
+  
+  /* Some defines for gui_mch_mousehide() */
+  #define MOUSE_HIDE           TRUE
+***************
+*** 206,258 ****
+  static PtCallbackF_t gui_ph_handle_menu_unrealized;
+  
+  #ifdef USE_PANEL_GROUP
+! static void gui_ph_get_panelgroup_margins( short*, short*, short*, short* );
+  #endif
+  
+  #ifdef FEAT_TOOLBAR
+! static PhImage_t *gui_ph_toolbar_find_icon( vimmenu_T *menu );
+  #endif
+  
+! static void gui_ph_draw_start( void );
+! static void gui_ph_draw_end( void );
+  
+  /* Set the text for the balloon */
+! static PtWidget_t * gui_ph_show_tooltip( PtWidget_t *window,
+                            PtWidget_t *widget,
+                            int position,
+                            char *text,
+                            char *font,
+                            PgColor_t fill_color,
+!                           PgColor_t text_color );
+  
+  /****************************************************************************/
+  
+! static PtWidget_t * gui_ph_show_tooltip( PtWidget_t *window,
+                            PtWidget_t *widget,
+                            int position,
+                            char *text,
+                            char *font,
+                            PgColor_t fill_color,
+!                           PgColor_t text_color )
+  {
+      PtArg_t arg;
+      vimmenu_T *menu;
+      char_u  *tooltip;
+  
+!     PtSetArg( &arg, Pt_ARG_POINTER, &menu, 0 );
+!     PtGetResources( widget, 1, &arg );
+  
+      /* Override the text and position */
+  
+      tooltip = text;
+!     if( menu != NULL )
+      {
+       int index = MENU_INDEX_TIP;
+!      if( menu->strings[ index ] != NULL )
+           tooltip = menu->strings[ index ];
+      }
+  
+!     return( PtInflateBalloon(
+           window,
+           widget,
+           /* Don't put the balloon at the bottom,
+--- 206,258 ----
+  static PtCallbackF_t gui_ph_handle_menu_unrealized;
+  
+  #ifdef USE_PANEL_GROUP
+! static void gui_ph_get_panelgroup_margins(short*, short*, short*, short*);
+  #endif
+  
+  #ifdef FEAT_TOOLBAR
+! static PhImage_t *gui_ph_toolbar_find_icon(vimmenu_T *menu);
+  #endif
+  
+! static void gui_ph_draw_start(void);
+! static void gui_ph_draw_end(void);
+  
+  /* Set the text for the balloon */
+! static PtWidget_t * gui_ph_show_tooltip(PtWidget_t *window,
+                            PtWidget_t *widget,
+                            int position,
+                            char *text,
+                            char *font,
+                            PgColor_t fill_color,
+!                           PgColor_t text_color);
+  
+  /****************************************************************************/
+  
+! static PtWidget_t * gui_ph_show_tooltip(PtWidget_t *window,
+                            PtWidget_t *widget,
+                            int position,
+                            char *text,
+                            char *font,
+                            PgColor_t fill_color,
+!                           PgColor_t text_color)
+  {
+      PtArg_t arg;
+      vimmenu_T *menu;
+      char_u  *tooltip;
+  
+!     PtSetArg(&arg, Pt_ARG_POINTER, &menu, 0);
+!     PtGetResources(widget, 1, &arg);
+  
+      /* Override the text and position */
+  
+      tooltip = text;
+!     if (menu != NULL)
+      {
+       int index = MENU_INDEX_TIP;
+!      if (menu->strings[ index ] != NULL)
+           tooltip = menu->strings[ index ];
+      }
+  
+!     return PtInflateBalloon(
+           window,
+           widget,
+           /* Don't put the balloon at the bottom,
+***************
+*** 261,285 ****
+           tooltip,
+           font,
+           fill_color,
+!          text_color ) );
+  }
+  
+      static void
+! gui_ph_resize_container( void )
+  {
+      PhArea_t area;
+  
+!     PtWidgetArea( gui.vimWindow, &area );
+!     PtWidgetPos ( gui.vimContainer, &area.pos );
+  
+!     PtSetResource( gui.vimContainer, Pt_ARG_AREA, &area, 0 );
+  }
+  
+      static int
+  gui_ph_handle_menu_resize(
+       PtWidget_t *widget,
+       void *other,
+!      PtCallbackInfo_t *info )
+  {
+      PtContainerCallback_t *sizes = info->cbdata;
+      PtWidget_t               *container;
+--- 261,285 ----
+           tooltip,
+           font,
+           fill_color,
+!          text_color);
+  }
+  
+      static void
+! gui_ph_resize_container(void)
+  {
+      PhArea_t area;
+  
+!     PtWidgetArea(gui.vimWindow, &area);
+!     PtWidgetPos (gui.vimContainer, &area.pos);
+  
+!     PtSetResource(gui.vimContainer, Pt_ARG_AREA, &area, 0);
+  }
+  
+      static int
+  gui_ph_handle_menu_resize(
+       PtWidget_t *widget,
+       void *other,
+!      PtCallbackInfo_t *info)
+  {
+      PtContainerCallback_t *sizes = info->cbdata;
+      PtWidget_t               *container;
+***************
+*** 291,297 ****
+      /* Because vim treats the toolbar and menubar separately,
+       * and here they're lumped together into a PtToolbarGroup,
+       * we only need either menu_height or toolbar_height set at once */
+!     if( gui.menu_is_active )
+      {
+       gui.menu_height = height;
+       gui.toolbar_height = 0;
+--- 291,297 ----
+      /* Because vim treats the toolbar and menubar separately,
+       * and here they're lumped together into a PtToolbarGroup,
+       * we only need either menu_height or toolbar_height set at once */
+!     if (gui.menu_is_active)
+      {
+       gui.menu_height = height;
+       gui.toolbar_height = 0;
+***************
+*** 310,325 ****
+      container = gui.vimContainer;
+  #endif
+  
+!     PtSetResource( container, Pt_ARG_POS, &below_menu, 0 );
+  
+      gui_ph_resize_container();
+  
+  #ifdef USE_PANEL_GROUP
+      gui_ph_get_panelgroup_margins(
+           &pg_margin_top, &pg_margin_bottom,
+!          &pg_margin_left, &pg_margin_right );
+  #endif
+!     return( Pt_CONTINUE );
+  }
+  
+  /*
+--- 310,325 ----
+      container = gui.vimContainer;
+  #endif
+  
+!     PtSetResource(container, Pt_ARG_POS, &below_menu, 0);
+  
+      gui_ph_resize_container();
+  
+  #ifdef USE_PANEL_GROUP
+      gui_ph_get_panelgroup_margins(
+           &pg_margin_top, &pg_margin_bottom,
+!          &pg_margin_left, &pg_margin_right);
+  #endif
+!     return Pt_CONTINUE;
+  }
+  
+  /*
+***************
+*** 330,352 ****
+  gui_ph_handle_timer_cursor(
+       PtWidget_t *widget,
+       void *data,
+!      PtCallbackInfo_t *info )
+  {
+!     if( blink_state == BLINK_ON )
+      {
+       gui_undraw_cursor();
+       blink_state = BLINK_OFF;
+!      PtSetResource( gui_ph_timer_cursor, Pt_ARG_TIMER_INITIAL,
+!              blink_offtime, 0 );
+      }
+      else
+      {
+       gui_update_cursor(TRUE, FALSE);
+       blink_state = BLINK_ON;
+!      PtSetResource( gui_ph_timer_cursor, Pt_ARG_TIMER_INITIAL,
+!              blink_ontime, 0 );
+      }
+!     return( Pt_CONTINUE );
+  }
+  
+      static int
+--- 330,352 ----
+  gui_ph_handle_timer_cursor(
+       PtWidget_t *widget,
+       void *data,
+!      PtCallbackInfo_t *info)
+  {
+!     if (blink_state == BLINK_ON)
+      {
+       gui_undraw_cursor();
+       blink_state = BLINK_OFF;
+!      PtSetResource(gui_ph_timer_cursor, Pt_ARG_TIMER_INITIAL,
+!              blink_offtime, 0);
+      }
+      else
+      {
+       gui_update_cursor(TRUE, FALSE);
+       blink_state = BLINK_ON;
+!      PtSetResource(gui_ph_timer_cursor, Pt_ARG_TIMER_INITIAL,
+!              blink_ontime, 0);
+      }
+!     return Pt_CONTINUE;
+  }
+  
+      static int
+***************
+*** 354,360 ****
+  {
+      is_timeout = TRUE;
+  
+!     return( Pt_CONTINUE );
+  }
+  
+      static int
+--- 354,360 ----
+  {
+      is_timeout = TRUE;
+  
+!     return Pt_CONTINUE;
+  }
+  
+      static int
+***************
+*** 402,408 ****
+           break;
+      }
+  
+!     return( Pt_CONTINUE );
+  }
+  
+      static int
+--- 402,408 ----
+           break;
+      }
+  
+!     return Pt_CONTINUE;
+  }
+  
+      static int
+***************
+*** 426,438 ****
+  
+           case Pt_SCROLL_SET:
+               /* FIXME: return straight away here? */
+!              return( Pt_CONTINUE );
+               break;
+       }
+  
+       gui_drag_scrollbar(sb, value, dragging);
+      }
+!     return( Pt_CONTINUE );
+  }
+  
+      static int
+--- 426,438 ----
+  
+           case Pt_SCROLL_SET:
+               /* FIXME: return straight away here? */
+!              return Pt_CONTINUE;
+               break;
+       }
+  
+       gui_drag_scrollbar(sb, value, dragging);
+      }
+!     return Pt_CONTINUE;
+  }
+  
+      static int
+***************
+*** 453,459 ****
+      /* We're a good lil photon program, aren't we? yes we are, yeess wee arrr */
+      if( key->key_flags & Pk_KF_Compose )
+      {
+!      return( Pt_CONTINUE );
+      }
+  
+      if( (key->key_flags & Pk_KF_Cap_Valid) &&
+--- 453,459 ----
+      /* We're a good lil photon program, aren't we? yes we are, yeess wee arrr */
+      if( key->key_flags & Pk_KF_Compose )
+      {
+!      return Pt_CONTINUE;
+      }
+  
+      if( (key->key_flags & Pk_KF_Cap_Valid) &&
+***************
+*** 473,479 ****
+               gui_is_menu_shortcut( key->key_cap ) ) ) )
+       {
+           /* Fallthrough and let photon look for the hotkey */
+!          return( Pt_CONTINUE );
+       }
+  #endif
+  
+--- 473,479 ----
+               gui_is_menu_shortcut( key->key_cap ) ) ) )
+       {
+           /* Fallthrough and let photon look for the hotkey */
+!          return Pt_CONTINUE;
+       }
+  #endif
+  
+***************
+*** 544,550 ****
+                       add_to_input_buf( string, len );
+                   }
+  
+!                  return( Pt_CONSUME );
+               }
+               len = 0;
+  #endif
+--- 544,550 ----
+                       add_to_input_buf( string, len );
+                   }
+  
+!                  return Pt_CONSUME;
+               }
+               len = 0;
+  #endif
+***************
+*** 579,585 ****
+               }
+               else
+               {
+!                  return( Pt_CONTINUE );
+               }
+           }
+           else
+--- 579,585 ----
+               }
+               else
+               {
+!                  return Pt_CONTINUE;
+               }
+           }
+           else
+***************
+*** 622,632 ****
+       if( len > 0 )
+       {
+           add_to_input_buf( string, len );
+!          return( Pt_CONSUME );
+       }
+      }
+  
+!     return( Pt_CONTINUE );
+  }
+  
+      static int
+--- 622,632 ----
+       if( len > 0 )
+       {
+           add_to_input_buf( string, len );
+!          return Pt_CONSUME;
+       }
+      }
+  
+!     return Pt_CONTINUE;
+  }
+  
+      static int
+***************
+*** 652,658 ****
+      if( info->event->type == Ph_EV_PTR_MOTION_NOBUTTON )
+      {
+       gui_mouse_moved( mouse_x, mouse_y );
+!      return( Pt_CONTINUE );
+      }
+  
+      if( pointer->key_mods & Pk_KM_Shift )
+--- 652,658 ----
+      if( info->event->type == Ph_EV_PTR_MOTION_NOBUTTON )
+      {
+       gui_mouse_moved( mouse_x, mouse_y );
+!      return Pt_CONTINUE;
+      }
+  
+      if( pointer->key_mods & Pk_KM_Shift )
+***************
+*** 702,708 ****
+       gui_send_mouse_event( button , mouse_x, mouse_y, repeated_click, modifiers );
+      }
+  
+!     return( Pt_CONTINUE );
+  }
+  
+  /* Handle a focus change of the PtRaw widget */
+--- 702,708 ----
+       gui_send_mouse_event( button , mouse_x, mouse_y, repeated_click, modifiers );
+      }
+  
+!     return Pt_CONTINUE;
+  }
+  
+  /* Handle a focus change of the PtRaw widget */
+***************
+*** 721,727 ****
+       PtAddEventHandler( gui.vimTextArea, Ph_EV_PTR_MOTION_NOBUTTON,
+               gui_ph_handle_mouse, NULL );
+      }
+!     return( Pt_CONTINUE );
+  }
+  
+      static void
+--- 721,727 ----
+       PtAddEventHandler( gui.vimTextArea, Ph_EV_PTR_MOTION_NOBUTTON,
+               gui_ph_handle_mouse, NULL );
+      }
+!     return Pt_CONTINUE;
+  }
+  
+      static void
+***************
+*** 793,799 ****
+       PtRealizeWidget( menu->submenu_id );
+      }
+  
+!     return( Pt_CONTINUE );
+  }
+  
+  /* This is used for pulldown/popup menus and also toolbar buttons */
+--- 793,799 ----
+       PtRealizeWidget( menu->submenu_id );
+      }
+  
+!     return Pt_CONTINUE;
+  }
+  
+  /* This is used for pulldown/popup menus and also toolbar buttons */
+***************
+*** 805,811 ****
+       vimmenu_T *menu = (vimmenu_T *) data;
+       gui_menu_cb( menu );
+      }
+!     return( Pt_CONTINUE );
+  }
+  
+  /* Stop focus from disappearing into the menubar... */
+--- 805,811 ----
+       vimmenu_T *menu = (vimmenu_T *) data;
+       gui_menu_cb( menu );
+      }
+!     return Pt_CONTINUE;
+  }
+  
+  /* Stop focus from disappearing into the menubar... */
+***************
+*** 816,822 ****
+       PtCallbackInfo_t *info )
+  {
+      PtGiveFocus( gui.vimTextArea, NULL );
+!     return( Pt_CONTINUE );
+  }
+  
+      static int
+--- 816,822 ----
+       PtCallbackInfo_t *info )
+  {
+      PtGiveFocus( gui.vimTextArea, NULL );
+!     return Pt_CONTINUE;
+  }
+  
+      static int
+***************
+*** 826,832 ****
+       PtCallbackInfo_t *info )
+  {
+      gui_set_shellsize( FALSE, TRUE, RESIZE_BOTH );
+!     return( Pt_CONTINUE );
+  }
+  
+  /****************************************************************************/
+--- 826,832 ----
+       PtCallbackInfo_t *info )
+  {
+      gui_set_shellsize( FALSE, TRUE, RESIZE_BOTH );
+!     return Pt_CONTINUE;
+  }
+  
+  /****************************************************************************/
+***************
+*** 878,884 ****
+               ( STRCMP( items->dname, name ) != 0 ) )
+           items = items->next;
+      }
+!     return( items );
+  }
+  
+      static void
+--- 878,884 ----
+               ( STRCMP( items->dname, name ) != 0 ) )
+           items = items->next;
+      }
+!     return items;
+  }
+  
+      static void
+***************
+*** 927,933 ****
+               gui_menu_cb( menu );
+       }
+      }
+!     return( Pt_CONTINUE );
+  }
+  
+      static void
+--- 927,933 ----
+               gui_menu_cb( menu );
+       }
+      }
+!     return Pt_CONTINUE;
+  }
+  
+      static void
+***************
+*** 974,983 ****
+               mark++;
+  
+           if( *mark == ')' )
+!              return( TRUE);
+       }
+      }
+!     return( FALSE );
+  }
+  
+      static void
+--- 974,983 ----
+               mark++;
+  
+           if( *mark == ')' )
+!              return TRUE;
+       }
+      }
+!     return FALSE;
+  }
+  
+      static void
+***************
+*** 1057,1063 ****
+       gui_ph_pg_remove_buffer( menu->dname );
+      }
+  
+!     return( Pt_CONTINUE );
+  }
+  #endif
+  
+--- 1057,1063 ----
+       gui_ph_pg_remove_buffer( menu->dname );
+      }
+  
+!     return Pt_CONTINUE;
+  }
+  #endif
+  
+***************
+*** 1071,1077 ****
+       PtContainerHold( gui.vimContainer );
+      }
+  
+!     return( Pt_CONTINUE );
+  }
+  
+  /****************************************************************************/
+--- 1071,1077 ----
+       PtContainerHold( gui.vimContainer );
+      }
+  
+!     return Pt_CONTINUE;
+  }
+  
+  /****************************************************************************/
+***************
+*** 1126,1132 ****
+  
+      gui.event_buffer = (PhEvent_t *) alloc( EVENT_BUFFER_SIZE );
+      if( gui.event_buffer == NULL )
+!      return( FAIL );
+  
+      /* Get a translation so we can convert from ISO Latin-1 to UTF */
+      charset_translate = PxTranslateSet( NULL, "latin1" );
+--- 1126,1132 ----
+  
+      gui.event_buffer = (PhEvent_t *) alloc( EVENT_BUFFER_SIZE );
+      if( gui.event_buffer == NULL )
+!      return FAIL;
+  
+      /* Get a translation so we can convert from ISO Latin-1 to UTF */
+      charset_translate = PxTranslateSet( NULL, "latin1" );
+***************
+*** 1141,1147 ****
+      PtSetArg( &args[ n++ ], Pt_ARG_DIM, &window_size, 0 );
+      gui.vimWindow = PtCreateWidget( PtWindow, NULL, n, args );
+      if( gui.vimWindow == NULL )
+!      return( FAIL );
+  
+      PtAddCallback( gui.vimWindow, Pt_CB_WINDOW, gui_ph_handle_window_cb, NULL );
+      PtAddCallback( gui.vimWindow, Pt_CB_WINDOW_OPENING,
+--- 1141,1147 ----
+      PtSetArg( &args[ n++ ], Pt_ARG_DIM, &window_size, 0 );
+      gui.vimWindow = PtCreateWidget( PtWindow, NULL, n, args );
+      if( gui.vimWindow == NULL )
+!      return FAIL;
+  
+      PtAddCallback( gui.vimWindow, Pt_CB_WINDOW, gui_ph_handle_window_cb, NULL );
+      PtAddCallback( gui.vimWindow, Pt_CB_WINDOW_OPENING,
+***************
+*** 1158,1164 ****
+  
+      gui.vimPanelGroup = PtCreateWidget( PtPanelGroup, gui.vimWindow, n, args );
+      if( gui.vimPanelGroup == NULL )
+!      return( FAIL );
+  
+      PtAddCallback( gui.vimPanelGroup, Pt_CB_PG_PANEL_SWITCHING,
+           gui_ph_handle_pg_change, NULL );
+--- 1158,1164 ----
+  
+      gui.vimPanelGroup = PtCreateWidget( PtPanelGroup, gui.vimWindow, n, args );
+      if( gui.vimPanelGroup == NULL )
+!      return FAIL;
+  
+      PtAddCallback( gui.vimPanelGroup, Pt_CB_PG_PANEL_SWITCHING,
+           gui_ph_handle_pg_change, NULL );
+***************
+*** 1172,1178 ****
+  
+      gui.vimContainer = PtCreateWidget( PtPane, gui.vimWindow, n, args );
+      if( gui.vimContainer == NULL )
+!      return( FAIL );
+  
+      PtAddCallback( gui.vimContainer, Pt_CB_RESIZE, gui_ph_pane_resize, NULL );
+  #endif
+--- 1172,1178 ----
+  
+      gui.vimContainer = PtCreateWidget( PtPane, gui.vimWindow, n, args );
+      if( gui.vimContainer == NULL )
+!      return FAIL;
+  
+      PtAddCallback( gui.vimContainer, Pt_CB_RESIZE, gui_ph_pane_resize, NULL );
+  #endif
+***************
+*** 1195,1201 ****
+  
+      gui.vimTextArea = PtCreateWidget( PtRaw, Pt_DFLT_PARENT, n, args );
+      if( gui.vimTextArea == NULL)
+!      return( FAIL );
+  
+      /* TODO: use PtAddEventHandlers instead? */
+      /* Not using Ph_EV_BUT_REPEAT because vim wouldn't use it anyway */
+--- 1195,1201 ----
+  
+      gui.vimTextArea = PtCreateWidget( PtRaw, Pt_DFLT_PARENT, n, args );
+      if( gui.vimTextArea == NULL)
+!      return FAIL;
+  
+      /* TODO: use PtAddEventHandlers instead? */
+      /* Not using Ph_EV_BUT_REPEAT because vim wouldn't use it anyway */
+***************
+*** 1220,1230 ****
+       */
+      gui_ph_timer_cursor  = PtCreateWidget( PtTimer, gui.vimWindow, 0, NULL );
+      if( gui_ph_timer_cursor == NULL )
+!      return( FAIL );
+  
+      gui_ph_timer_timeout = PtCreateWidget( PtTimer, gui.vimWindow, 0, NULL );
+      if( gui_ph_timer_timeout == NULL )
+!      return( FAIL );
+  
+      PtAddCallback( gui_ph_timer_cursor,  Pt_CB_TIMER_ACTIVATE,
+           gui_ph_handle_timer_cursor, NULL);
+--- 1220,1230 ----
+       */
+      gui_ph_timer_cursor  = PtCreateWidget( PtTimer, gui.vimWindow, 0, NULL );
+      if( gui_ph_timer_cursor == NULL )
+!      return FAIL;
+  
+      gui_ph_timer_timeout = PtCreateWidget( PtTimer, gui.vimWindow, 0, NULL );
+      if( gui_ph_timer_timeout == NULL )
+!      return FAIL;
+  
+      PtAddCallback( gui_ph_timer_cursor,  Pt_CB_TIMER_ACTIVATE,
+           gui_ph_handle_timer_cursor, NULL);
+***************
+*** 1239,1245 ****
+      gui.vimToolBarGroup = PtCreateWidget( PtToolbarGroup, gui.vimWindow,
+           n, args );
+      if( gui.vimToolBarGroup == NULL )
+!      return( FAIL );
+  
+      PtAddCallback( gui.vimToolBarGroup, Pt_CB_RESIZE,
+           gui_ph_handle_menu_resize, NULL );
+--- 1239,1245 ----
+      gui.vimToolBarGroup = PtCreateWidget( PtToolbarGroup, gui.vimWindow,
+           n, args );
+      if( gui.vimToolBarGroup == NULL )
+!      return FAIL;
+  
+      PtAddCallback( gui.vimToolBarGroup, Pt_CB_RESIZE,
+           gui_ph_handle_menu_resize, NULL );
+***************
+*** 1254,1260 ****
+      }
+      gui.vimMenuBar = PtCreateWidget( PtMenuBar, gui.vimToolBarGroup, n, args );
+      if( gui.vimMenuBar == NULL )
+!      return( FAIL );
+  
+  # ifdef FEAT_TOOLBAR
+      n = 0;
+--- 1254,1260 ----
+      }
+      gui.vimMenuBar = PtCreateWidget( PtMenuBar, gui.vimToolBarGroup, n, args );
+      if( gui.vimMenuBar == NULL )
+!      return FAIL;
+  
+  # ifdef FEAT_TOOLBAR
+      n = 0;
+***************
+*** 1273,1279 ****
+  
+      gui.vimToolBar = PtCreateWidget( PtToolbar, gui.vimToolBarGroup, n, args );
+      if( gui.vimToolBar == NULL )
+!      return( FAIL );
+  
+      /*
+       * Size for the toolbar is fetched in gui_mch_show_toolbar, after
+--- 1273,1279 ----
+  
+      gui.vimToolBar = PtCreateWidget( PtToolbar, gui.vimToolBarGroup, n, args );
+      if( gui.vimToolBar == NULL )
+!      return FAIL;
+  
+      /*
+       * Size for the toolbar is fetched in gui_mch_show_toolbar, after
+***************
+*** 1284,1296 ****
+  
+  #endif
+  
+!     return( OK );
+  }
+  
+      int
+  gui_mch_init_check(void)
+  {
+!     return( (is_photon_available == TRUE) ? OK : FAIL );
+  }
+  
+      int
+--- 1284,1296 ----
+  
+  #endif
+  
+!     return OK;
+  }
+  
+      int
+  gui_mch_init_check(void)
+  {
+!     return (is_photon_available == TRUE) ? OK : FAIL;
+  }
+  
+      int
+***************
+*** 1310,1316 ****
+      if (gui_win_x != -1 && gui_win_y != -1)
+       gui_mch_set_winpos(gui_win_x, gui_win_y);
+  
+!     return( (PtRealizeWidget( gui.vimWindow ) == 0) ? OK : FAIL );
+  }
+  
+      void
+--- 1310,1316 ----
+      if (gui_win_x != -1 && gui_win_y != -1)
+       gui_mch_set_winpos(gui_win_x, gui_win_y);
+  
+!     return (PtRealizeWidget( gui.vimWindow ) == 0) ? OK : FAIL;
+  }
+  
+      void
+***************
+*** 1336,1342 ****
+  exit_gui_mch_update( void *data )
+  {
+      *(int *)data = FALSE;
+!     return( Pt_END );
+  }
+  
+      void
+--- 1336,1342 ----
+  exit_gui_mch_update( void *data )
+  {
+      *(int *)data = FALSE;
+!     return Pt_END;
+  }
+  
+      void
+***************
+*** 1365,1374 ****
+       if( input_available() )
+       {
+           PtSetResource( gui_ph_timer_timeout, Pt_ARG_TIMER_INITIAL, 0, 0 );
+!          return( OK );
+       }
+       else if( is_timeout == TRUE )
+!          return( FAIL );
+      }
+  }
+  
+--- 1365,1374 ----
+       if( input_available() )
+       {
+           PtSetResource( gui_ph_timer_timeout, Pt_ARG_TIMER_INITIAL, 0, 0 );
+!          return OK;
+       }
+       else if( is_timeout == TRUE )
+!          return FAIL;
+      }
+  }
+  
+***************
+*** 1446,1454 ****
+       vim_free( default_path );
+  
+       if( file.ret == Pt_FSDIALOG_BTN1 )
+!          return( vim_strsave( file.path ) );
+      }
+!     return( NULL );
+  }
+  #endif
+  
+--- 1446,1454 ----
+       vim_free( default_path );
+  
+       if( file.ret == Pt_FSDIALOG_BTN1 )
+!          return vim_strsave(file.path);
+      }
+!     return NULL;
+  }
+  #endif
+  
+***************
+*** 1470,1476 ****
+  
+      PtModalUnblock( modal_ctrl, (void *) button );
+  
+!     return( Pt_TRUE );
+  }
+  
+      static int
+--- 1470,1476 ----
+  
+      PtModalUnblock( modal_ctrl, (void *) button );
+  
+!     return Pt_TRUE;
+  }
+  
+      static int
+***************
+*** 1478,1484 ****
+  {
+      if( info->reason_subtype == Pt_EDIT_ACTIVATE )
+       gui_ph_dialog_close( 1, data );
+!     return( Pt_CONTINUE );
+  }
+  
+      static int
+--- 1478,1484 ----
+  {
+      if( info->reason_subtype == Pt_EDIT_ACTIVATE )
+       gui_ph_dialog_close( 1, data );
+!     return Pt_CONTINUE;
+  }
+  
+      static int
+***************
+*** 1490,1498 ****
+      if( ( key->key_flags & Pk_KF_Cap_Valid ) && ( key->key_cap == Pk_Escape ) )
+      {
+       gui_ph_dialog_close( 0, data );
+!      return( Pt_CONSUME );
+      }
+!     return( Pt_PROCESS );
+  }
+  
+      int
+--- 1490,1498 ----
+      if( ( key->key_flags & Pk_KF_Cap_Valid ) && ( key->key_cap == Pk_Escape ) )
+      {
+       gui_ph_dialog_close( 0, data );
+!      return Pt_CONSUME;
+      }
+!     return Pt_PROCESS;
+  }
+  
+      int
+***************
+*** 1519,1525 ****
+      button_count = len = i = 0;
+  
+      if( buttons == NULL || *buttons == NUL )
+!      return( -1 );
+  
+      /* There is one less separator than buttons, so bump up the button count */
+      button_count = 1;
+--- 1519,1525 ----
+      button_count = len = i = 0;
+  
+      if( buttons == NULL || *buttons == NUL )
+!      return -1;
+  
+      /* There is one less separator than buttons, so bump up the button count */
+      button_count = 1;
+***************
+*** 1637,1643 ****
+      vim_free( button_array );
+      vim_free( buttons_copy );
+  
+!     return( dialog_result );
+  }
+  #endif
+  /****************************************************************************/
+--- 1637,1643 ----
+      vim_free( button_array );
+      vim_free( buttons_copy );
+  
+!     return dialog_result;
+  }
+  #endif
+  /****************************************************************************/
+***************
+*** 1653,1659 ****
+      *x = pos->x;
+      *y = pos->y;
+  
+!     return( OK );
+  }
+  
+      void
+--- 1653,1659 ----
+      *x = pos->x;
+      *y = pos->y;
+  
+!     return OK;
+  }
+  
+      void
+***************
+*** 1975,1985 ****
+  hex_digit(int c)
+  {
+      if (VIM_ISDIGIT(c))
+!      return( c - '0' );
+      c = TOLOWER_ASC(c);
+      if (c >= 'a' && c <= 'f')
+!      return( c - 'a' + 10 );
+!     return( -1000 );
+  }
+  
+  
+--- 1975,1985 ----
+  hex_digit(int c)
+  {
+      if (VIM_ISDIGIT(c))
+!      return c - '0';
+      c = TOLOWER_ASC(c);
+      if (c >= 'a' && c <= 'f')
+!      return c - 'a' + 10;
+!     return -1000;
+  }
+  
+  
+***************
+*** 2065,2077 ****
+       b = hex_digit( name[5] ) * 16 + hex_digit( name[6] );
+       if( r < 0 || g < 0 || b < 0 )
+           return INVALCOLOR;
+!      return( RGB( r, g, b ) );
+      }
+  
+      for( i = 0; i < ARRAY_LENGTH( table ); i++ )
+      {
+       if( STRICMP( name, table[i].name ) == 0 )
+!          return( table[i].colour );
+      }
+  
+      /*
+--- 2065,2077 ----
+       b = hex_digit( name[5] ) * 16 + hex_digit( name[6] );
+       if( r < 0 || g < 0 || b < 0 )
+           return INVALCOLOR;
+!      return RGB(r, g, b);
+      }
+  
+      for( i = 0; i < ARRAY_LENGTH( table ); i++ )
+      {
+       if( STRICMP( name, table[i].name ) == 0 )
+!          return table[i].colour;
+      }
+  
+      /*
+***************
+*** 2115,2121 ****
+           if (STRICMP(color, name) == 0)
+           {
+               fclose(fd);
+!              return( (guicolor_T) RGB(r,g,b) );
+           }
+       }
+  
+--- 2115,2121 ----
+           if (STRICMP(color, name) == 0)
+           {
+               fclose(fd);
+!              return (guicolor_T)RGB(r, g, b);
+           }
+       }
+  
+***************
+*** 2451,2458 ****
+      for (i = 0; special_keys[i].key_sym != 0; i++)
+       if (name[0] == special_keys[i].vim_code0 &&
+                name[1] == special_keys[i].vim_code1)
+!          return( OK );
+!     return( FAIL );
+  }
+  
+  /****************************************************************************/
+--- 2451,2458 ----
+      for (i = 0; special_keys[i].key_sym != 0; i++)
+       if (name[0] == special_keys[i].vim_code0 &&
+                name[1] == special_keys[i].vim_code1)
+!          return OK;
+!     return FAIL;
+  }
+  
+  /****************************************************************************/
+***************
+*** 2512,2518 ****
+  
+       temp_phi = &external_icon;
+      }
+!     return( temp_phi );
+  }
+  
+  /*
+--- 2512,2518 ----
+  
+       temp_phi = &external_icon;
+      }
+!     return temp_phi;
+  }
+  
+  /*
+***************
+*** 2541,2556 ****
+           icon = gui_ph_toolbar_load_icon( full_pathname );
+  
+       if( icon != NULL )
+!          return( icon );
+      }
+  
+      if( menu->iconidx >= 0 &&
+           ( menu->iconidx < ARRAY_LENGTH( gui_ph_toolbar_images ) ) )
+      {
+!      return( gui_ph_toolbar_images[ menu->iconidx ] );
+      }
+  
+!     return( NULL );
+  }
+  #endif
+  
+--- 2541,2556 ----
+           icon = gui_ph_toolbar_load_icon( full_pathname );
+  
+       if( icon != NULL )
+!          return icon;
+      }
+  
+      if( menu->iconidx >= 0 &&
+           ( menu->iconidx < ARRAY_LENGTH( gui_ph_toolbar_images ) ) )
+      {
+!      return gui_ph_toolbar_images[menu->iconidx];
+      }
+  
+!     return NULL;
+  }
+  #endif
+  
+***************
+*** 2895,2905 ****
+            * at least has the bits we're checking for */
+           if( font_size == info.size &&
+                   style == (info.style & style) )
+!              return( (GuiFont) font_tag );
+       }
+       vim_free( font_tag );
+      }
+!     return( NULL );
+  }
+  
+  /*
+--- 2895,2905 ----
+            * at least has the bits we're checking for */
+           if( font_size == info.size &&
+                   style == (info.style & style) )
+!              return (GuiFont)font_tag;
+       }
+       vim_free( font_tag );
+      }
+!     return NULL;
+  }
+  
+  /*
+***************
+*** 2957,2965 ****
+               }
+           }
+       }
+!      return( TRUE );
+      }
+!     return( FALSE );
+  }
+  
+      int
+--- 2957,2965 ----
+               }
+           }
+       }
+!      return TRUE;
+      }
+!     return FALSE;
+  }
+  
+      int
+***************
+*** 2985,2991 ****
+               "pcterm12", -1, PHFONT_FIXED, NULL );
+  
+       if( font_tag == NULL )
+!          return( FAIL );
+  
+       gui_mch_free_font( gui.norm_font );
+       gui.norm_font = font_tag;
+--- 2985,2991 ----
+               "pcterm12", -1, PHFONT_FIXED, NULL );
+  
+       if( font_tag == NULL )
+!          return FAIL;
+  
+       gui_mch_free_font( gui.norm_font );
+       gui.norm_font = font_tag;
+***************
+*** 2997,3009 ****
+      {
+       if( gui_ph_parse_font_name( vim_font_name, &font_name, &font_flags,
+                   &font_size ) == FALSE )
+!          return( FAIL );
+  
+       font_tag = gui_ph_get_font( font_name, font_flags, font_size, 0 );
+       if( font_tag == NULL )
+       {
+           vim_free( font_name );
+!          return( FAIL );
+       }
+  
+       gui_mch_free_font( gui.norm_font );
+--- 2997,3009 ----
+      {
+       if( gui_ph_parse_font_name( vim_font_name, &font_name, &font_flags,
+                   &font_size ) == FALSE )
+!          return FAIL;
+  
+       font_tag = gui_ph_get_font( font_name, font_flags, font_size, 0 );
+       if( font_tag == NULL )
+       {
+           vim_free( font_name );
+!          return FAIL;
+       }
+  
+       gui_mch_free_font( gui.norm_font );
+***************
+*** 3026,3032 ****
+      gui.char_ascent = - extent.ul.y;
+  
+      vim_free( font_name );
+!     return( OK );
+  }
+  
+  /*
+--- 3026,3032 ----
+      gui.char_ascent = - extent.ul.y;
+  
+      vim_free( font_name );
+!     return OK;
+  }
+  
+  /*
+***************
+*** 3042,3048 ****
+      gui.char_height = - info.ascender + info.descender + p_linespace;
+      gui.char_ascent = - info.ascender + p_linespace / 2;
+  
+!     return( OK );
+  }
+  
+      GuiFont
+--- 3042,3048 ----
+      gui.char_height = - info.ascender + info.descender + p_linespace;
+      gui.char_ascent = - info.ascender + p_linespace / 2;
+  
+!     return OK;
+  }
+  
+      GuiFont
+***************
+*** 3060,3072 ****
+       vim_free( font_name );
+  
+       if( font_tag != NULL )
+!          return( (GuiFont) font_tag );
+      }
+  
+      if( report_error )
+       EMSG2(e_font, vim_font_name );
+  
+!     return( FAIL );
+  }
+  
+  #if defined(FEAT_EVAL) || defined(PROTO)
+--- 3060,3072 ----
+       vim_free( font_name );
+  
+       if( font_tag != NULL )
+!          return (GuiFont)font_tag;
+      }
+  
+      if( report_error )
+       EMSG2(e_font, vim_font_name );
+  
+!     return FAIL;
+  }
+  
+  #if defined(FEAT_EVAL) || defined(PROTO)
+*** ../vim-7.3.261/src/version.c       2011-07-27 13:59:12.000000000 +0200
+--- src/version.c      2011-07-27 14:08:08.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     262,
+  /**/
+
+-- 
+You know you use Vim too much when you have this alias in your
+~/.bashrc file: alias :e=/bin/vim             (Eljay Love-Jensen)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.263.patch0 b/vim/patches/vim-7.3.263.patch0
new file mode 100644 (file)
index 0000000..9885098
--- /dev/null
@@ -0,0 +1,162 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.263
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.263
+Problem:    Perl and Tcl have a few code style problems.
+Solution:   Clean it up.  (Elias Diem)
+Files:     src/if_perl.xs, src/if_tcl.c
+
+
+*** ../vim-7.3.262/src/if_perl.xs      2010-10-23 14:02:48.000000000 +0200
+--- src/if_perl.xs     2011-07-27 14:11:03.000000000 +0200
+***************
+*** 755,761 ****
+  #ifdef HAVE_SANDBOX
+      if (sandbox)
+      {
+!      safe = perl_get_sv( "VIM::safe", FALSE );
+  # ifndef MAKE_TEST  /* avoid a warning for unreachable code */
+       if (safe == NULL || !SvTRUE(safe))
+           EMSG(_("E299: Perl evaluation forbidden in sandbox without the Safe module"));
+--- 755,761 ----
+  #ifdef HAVE_SANDBOX
+      if (sandbox)
+      {
+!      safe = perl_get_sv("VIM::safe", FALSE);
+  # ifndef MAKE_TEST  /* avoid a warning for unreachable code */
+       if (safe == NULL || !SvTRUE(safe))
+           EMSG(_("E299: Perl evaluation forbidden in sandbox without the Safe module"));
+***************
+*** 1108,1114 ****
+      VIWIN win
+  
+      PPCODE:
+!     if(items == 1)
+      {
+        EXTEND(sp, 2);
+        if (!win_valid(win))
+--- 1108,1114 ----
+      VIWIN win
+  
+      PPCODE:
+!     if (items == 1)
+      {
+        EXTEND(sp, 2);
+        if (!win_valid(win))
+***************
+*** 1116,1122 ****
+        PUSHs(sv_2mortal(newSViv(win->w_cursor.lnum)));
+        PUSHs(sv_2mortal(newSViv(win->w_cursor.col)));
+      }
+!     else if(items == 3)
+      {
+        int lnum, col;
+  
+--- 1116,1122 ----
+        PUSHs(sv_2mortal(newSViv(win->w_cursor.lnum)));
+        PUSHs(sv_2mortal(newSViv(win->w_cursor.col)));
+      }
+!     else if (items == 3)
+      {
+        int lnum, col;
+  
+***************
+*** 1249,1257 ****
+       {
+           lnum = SvIV(ST(1));
+           count = 1 + SvIV(ST(2)) - lnum;
+!          if(count == 0)
+               count = 1;
+!          if(count < 0)
+           {
+               lnum -= count;
+               count = -count;
+--- 1249,1257 ----
+       {
+           lnum = SvIV(ST(1));
+           count = 1 + SvIV(ST(2)) - lnum;
+!          if (count == 0)
+               count = 1;
+!          if (count < 0)
+           {
+               lnum -= count;
+               count = -count;
+*** ../vim-7.3.262/src/if_tcl.c        2010-12-17 20:23:56.000000000 +0100
+--- src/if_tcl.c       2011-07-27 14:11:03.000000000 +0200
+***************
+*** 1884,1897 ****
+  {
+      int newerr = OK;
+  
+!     if (error == TCL_EXIT )
+      {
+       int retval;
+       char buf[50];
+       Tcl_Obj *robj;
+  
+       robj = Tcl_GetObjResult(tclinfo.interp);
+!      if( Tcl_GetIntFromObj(tclinfo.interp, robj, &retval) != TCL_OK )
+       {
+           EMSG(_("E281: TCL ERROR: exit code is not int!? Please report this to vim-dev@vim.org"));
+           newerr = FAIL;
+--- 1884,1897 ----
+  {
+      int newerr = OK;
+  
+!     if (error == TCL_EXIT)
+      {
+       int retval;
+       char buf[50];
+       Tcl_Obj *robj;
+  
+       robj = Tcl_GetObjResult(tclinfo.interp);
+!      if (Tcl_GetIntFromObj(tclinfo.interp, robj, &retval) != TCL_OK)
+       {
+           EMSG(_("E281: TCL ERROR: exit code is not int!? Please report this to vim-dev@vim.org"));
+           newerr = FAIL;
+***************
+*** 1900,1906 ****
+       {
+           sprintf(buf, _("E572: exit code %d"), retval);
+           tclerrmsg(buf);
+!          if (retval == 0 )
+           {
+               did_emsg = 0;
+               newerr = OK;
+--- 1900,1906 ----
+       {
+           sprintf(buf, _("E572: exit code %d"), retval);
+           tclerrmsg(buf);
+!          if (retval == 0)
+           {
+               did_emsg = 0;
+               newerr = OK;
+*** ../vim-7.3.262/src/version.c       2011-07-27 14:09:05.000000000 +0200
+--- src/version.c      2011-07-27 14:12:05.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     263,
+  /**/
+
+-- 
+DEAD PERSON:  I don't want to go in the cart!
+CUSTOMER:     Oh, don't be such a baby.
+MORTICIAN:    I can't take him...
+DEAD PERSON:  I feel fine!
+CUSTOMER:     Oh, do us a favor...
+MORTICIAN:    I can't.
+                                  The Quest for the Holy Grail (Monty Python)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.264.patch0 b/vim/patches/vim-7.3.264.patch0
new file mode 100644 (file)
index 0000000..71ec851
--- /dev/null
@@ -0,0 +1,159 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.264
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.264
+Problem:    When the current directory name contains wildcard characters, such
+           as "foo[with]bar", the tags file can't be found.  (Jeremy
+           Erickson)
+Solution:   When searching for matching files also match without expanding
+           wildcards.  This is a bit of a hack.
+Files:     src/vim.h, src/misc1.c, src/misc2.c
+
+
+*** ../vim-7.3.263/src/vim.h   2011-07-20 15:04:52.000000000 +0200
+--- src/vim.h  2011-07-27 16:21:38.000000000 +0200
+***************
+*** 816,821 ****
+--- 816,822 ----
+  #define EW_PATH              0x80    /* search in 'path' too */
+  #define EW_ICASE     0x100   /* ignore case */
+  #define EW_NOERROR   0x200   /* no error for bad regexp */
++ #define EW_NOTWILD   0x400   /* add match with literal name if exists */
+  /* Note: mostly EW_NOTFOUND and EW_SILENT are mutually exclusive: EW_NOTFOUND
+   * is used when executing commands and EW_SILENT for interactive expanding. */
+  
+*** ../vim-7.3.263/src/misc1.c 2011-07-20 15:04:52.000000000 +0200
+--- src/misc1.c        2011-07-27 17:24:39.000000000 +0200
+***************
+*** 9119,9125 ****
+        * all entries found with "matchname". */
+       if ((p[0] != '.' || starts_with_dot)
+               && (matchname == NULL
+!                  || vim_regexec(&regmatch, p, (colnr_T)0)))
+       {
+  #ifdef WIN3264
+           STRCPY(s, p);
+--- 9119,9127 ----
+        * all entries found with "matchname". */
+       if ((p[0] != '.' || starts_with_dot)
+               && (matchname == NULL
+!                || vim_regexec(&regmatch, p, (colnr_T)0)
+!                || ((flags & EW_NOTWILD)
+!                   && fnamencmp(path + (s - buf), p, e - s) == 0)))
+       {
+  #ifdef WIN3264
+           STRCPY(s, p);
+***************
+*** 9323,9329 ****
+      e = p;
+      *e = NUL;
+  
+!     /* now we have one wildcard component between "s" and "e" */
+      /* Remove backslashes between "wildoff" and the start of the wildcard
+       * component. */
+      for (p = buf + wildoff; p < s; ++p)
+--- 9325,9331 ----
+      e = p;
+      *e = NUL;
+  
+!     /* Now we have one wildcard component between "s" and "e". */
+      /* Remove backslashes between "wildoff" and the start of the wildcard
+       * component. */
+      for (p = buf + wildoff; p < s; ++p)
+***************
+*** 9390,9396 ****
+           if (dp == NULL)
+               break;
+           if ((dp->d_name[0] != '.' || starts_with_dot)
+!                  && vim_regexec(&regmatch, (char_u *)dp->d_name, (colnr_T)0))
+           {
+               STRCPY(s, dp->d_name);
+               len = STRLEN(buf);
+--- 9392,9400 ----
+           if (dp == NULL)
+               break;
+           if ((dp->d_name[0] != '.' || starts_with_dot)
+!               && (vim_regexec(&regmatch, (char_u *)dp->d_name, (colnr_T)0)
+!                 || ((flags & EW_NOTWILD)
+!                   && fnamencmp(path + (s - buf), dp->d_name, e - s) == 0)))
+           {
+               STRCPY(s, dp->d_name);
+               len = STRLEN(buf);
+*** ../vim-7.3.263/src/misc2.c 2011-07-07 17:15:29.000000000 +0200
+--- src/misc2.c        2011-07-27 17:21:10.000000000 +0200
+***************
+*** 4653,4661 ****
+      {
+       if (r_ptr[0] == '\\' && r_ptr[1] == ';')
+       {
+!          /* overwrite the escape char,
+!           * use STRLEN(r_ptr) to move the trailing '\0'
+!           */
+           STRMOVE(r_ptr, r_ptr + 1);
+           r_ptr++;
+       }
+--- 4653,4660 ----
+      {
+       if (r_ptr[0] == '\\' && r_ptr[1] == ';')
+       {
+!          /* Overwrite the escape char,
+!           * use STRLEN(r_ptr) to move the trailing '\0'. */
+           STRMOVE(r_ptr, r_ptr + 1);
+           r_ptr++;
+       }
+***************
+*** 4914,4923 ****
+                       stackp->ffs_filearray_size = 0;
+               }
+               else
+                   expand_wildcards((dirptrs[1] == NULL) ? 1 : 2, dirptrs,
+                           &stackp->ffs_filearray_size,
+                           &stackp->ffs_filearray,
+!                          EW_DIR|EW_ADDSLASH|EW_SILENT);
+  
+               stackp->ffs_filearray_cur = 0;
+               stackp->ffs_stage = 0;
+--- 4913,4925 ----
+                       stackp->ffs_filearray_size = 0;
+               }
+               else
++                  /* Add EW_NOTWILD because the expanded path may contain
++                   * wildcard characters that are to be taken literally.
++                   * This is a bit of a hack. */
+                   expand_wildcards((dirptrs[1] == NULL) ? 1 : 2, dirptrs,
+                           &stackp->ffs_filearray_size,
+                           &stackp->ffs_filearray,
+!                          EW_DIR|EW_ADDSLASH|EW_SILENT|EW_NOTWILD);
+  
+               stackp->ffs_filearray_cur = 0;
+               stackp->ffs_stage = 0;
+*** ../vim-7.3.263/src/version.c       2011-07-27 14:15:41.000000000 +0200
+--- src/version.c      2011-07-27 17:25:44.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     264,
+  /**/
+
+-- 
+CUSTOMER:     You're not fooling anyone y'know.  Look, isn't there something
+              you can do?
+DEAD PERSON:  I feel happy... I feel happy.
+    [whop]
+CUSTOMER:     Ah, thanks very much.
+MORTICIAN:    Not at all.  See you on Thursday.
+CUSTOMER:     Right.
+                                  The Quest for the Holy Grail (Monty Python)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.265.patch0 b/vim/patches/vim-7.3.265.patch0
new file mode 100644 (file)
index 0000000..98cb1b4
--- /dev/null
@@ -0,0 +1,145 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.265
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.265
+Problem:    When storing a pattern in search history there is no proper check
+           for the separator character.
+Solution:   Pass the separator character to in_history(). (Muraoka Taro)
+Files:     src/ex_getln.c
+
+
+*** ../vim-7.3.264/src/ex_getln.c      2011-07-07 16:44:33.000000000 +0200
+--- src/ex_getln.c     2011-07-27 17:50:35.000000000 +0200
+***************
+*** 67,73 ****
+  
+  static int   hist_char2type __ARGS((int c));
+  
+! static int   in_history __ARGS((int, char_u *, int));
+  # ifdef FEAT_EVAL
+  static int   calc_hist_idx __ARGS((int histype, int num));
+  # endif
+--- 67,73 ----
+  
+  static int   hist_char2type __ARGS((int c));
+  
+! static int   in_history __ARGS((int, char_u *, int, int));
+  # ifdef FEAT_EVAL
+  static int   calc_hist_idx __ARGS((int histype, int num));
+  # endif
+***************
+*** 5289,5301 ****
+   * If 'move_to_front' is TRUE, matching entry is moved to end of history.
+   */
+      static int
+! in_history(type, str, move_to_front)
+      int          type;
+      char_u  *str;
+      int          move_to_front;      /* Move the entry to the front if it exists */
+  {
+      int          i;
+      int          last_i = -1;
+  
+      if (hisidx[type] < 0)
+       return FALSE;
+--- 5289,5303 ----
+   * If 'move_to_front' is TRUE, matching entry is moved to end of history.
+   */
+      static int
+! in_history(type, str, move_to_front, sep)
+      int          type;
+      char_u  *str;
+      int          move_to_front;      /* Move the entry to the front if it exists */
++     int          sep;
+  {
+      int          i;
+      int          last_i = -1;
++     char_u  *p;
+  
+      if (hisidx[type] < 0)
+       return FALSE;
+***************
+*** 5304,5310 ****
+      {
+       if (history[type][i].hisstr == NULL)
+           return FALSE;
+!      if (STRCMP(str, history[type][i].hisstr) == 0)
+       {
+           if (!move_to_front)
+               return TRUE;
+--- 5306,5317 ----
+      {
+       if (history[type][i].hisstr == NULL)
+           return FALSE;
+! 
+!      /* For search history, check that the separator character matches as
+!       * well. */
+!      p = history[type][i].hisstr;
+!      if (STRCMP(str, p) == 0
+!              && (type != HIST_SEARCH || sep == p[STRLEN(p) + 1]))
+       {
+           if (!move_to_front)
+               return TRUE;
+***************
+*** 5398,5404 ****
+       }
+       last_maptick = -1;
+      }
+!     if (!in_history(histype, new_entry, TRUE))
+      {
+       if (++hisidx[histype] == hislen)
+           hisidx[histype] = 0;
+--- 5405,5411 ----
+       }
+       last_maptick = -1;
+      }
+!     if (!in_history(histype, new_entry, TRUE, sep))
+      {
+       if (++hisidx[histype] == hislen)
+           hisidx[histype] = 0;
+***************
+*** 5977,5983 ****
+       if (val != NULL && *val != NUL)
+       {
+           if (!in_history(type, val + (type == HIST_SEARCH),
+!                                                      viminfo_add_at_front))
+           {
+               /* Need to re-allocate to append the separator byte. */
+               len = STRLEN(val);
+--- 5984,5990 ----
+       if (val != NULL && *val != NUL)
+       {
+           if (!in_history(type, val + (type == HIST_SEARCH),
+!                                                viminfo_add_at_front, *val))
+           {
+               /* Need to re-allocate to append the separator byte. */
+               len = STRLEN(val);
+*** ../vim-7.3.264/src/version.c       2011-07-27 17:31:42.000000000 +0200
+--- src/version.c      2011-07-27 17:58:22.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     265,
+  /**/
+
+-- 
+    [clop clop]
+MORTICIAN:  Who's that then?
+CUSTOMER:   I don't know.
+MORTICIAN:  Must be a king.
+CUSTOMER:   Why?
+MORTICIAN:  He hasn't got shit all over him.
+                                  The Quest for the Holy Grail (Monty Python)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.266.patch0 b/vim/patches/vim-7.3.266.patch0
new file mode 100644 (file)
index 0000000..373280e
--- /dev/null
@@ -0,0 +1,54 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.266
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.266
+Problem:    In Gvim with iBus typing space in Insert mode doesn't work.
+Solution:   Clear xim_expected_char after checking it.
+Files:     src/mbyte.c
+
+
+*** ../vim-7.3.265/src/mbyte.c 2011-07-15 21:16:54.000000000 +0200
+--- src/mbyte.c        2011-07-27 18:21:13.000000000 +0200
+***************
+*** 5170,5175 ****
+--- 5170,5179 ----
+               /* We had a keypad key, and XIM tried to thieve it */
+               return FALSE;
+  
++          /* This is supposed to fix a problem with iBus, that space
++           * characters don't work in input mode. */
++          xim_expected_char = NUL;
++ 
+           /* Normal processing */
+           return imresult;
+       }
+*** ../vim-7.3.265/src/version.c       2011-07-27 17:58:42.000000000 +0200
+--- src/version.c      2011-07-27 18:23:00.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     266,
+  /**/
+
+-- 
+    [clop clop]
+ARTHUR:  Old woman!
+DENNIS:  Man!
+ARTHUR:  Man, sorry.  What knight lives in that castle over there?
+DENNIS:  I'm thirty seven.
+ARTHUR:  What?
+DENNIS:  I'm thirty seven -- I'm not old!
+                                  The Quest for the Holy Grail (Monty Python)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.267.patch0 b/vim/patches/vim-7.3.267.patch0
new file mode 100644 (file)
index 0000000..d986e50
--- /dev/null
@@ -0,0 +1,67 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.267
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.267
+Problem:    Ruby on Mac OS X 10.7 may crash.
+Solution:   Avoid alloc(0). (Bjorn Winckler)
+Files:     src/if_ruby.c
+
+
+*** ../vim-7.3.266/src/if_ruby.c       2011-01-17 19:53:20.000000000 +0100
+--- src/if_ruby.c      2011-08-04 18:57:43.000000000 +0200
+***************
+*** 761,771 ****
+      char *buff, *p;
+  
+      str = rb_obj_as_string(str);
+!     buff = ALLOCA_N(char, RSTRING_LEN(str));
+!     strcpy(buff, RSTRING_PTR(str));
+!     p = strchr(buff, '\n');
+!     if (p) *p = '\0';
+!     MSG(buff);
+      return Qnil;
+  }
+  
+--- 761,779 ----
+      char *buff, *p;
+  
+      str = rb_obj_as_string(str);
+!     if (RSTRING_LEN(str) > 0)
+!     {
+!      /* Only do this when the string isn't empty, alloc(0) causes trouble. */
+!      buff = ALLOCA_N(char, RSTRING_LEN(str));
+!      strcpy(buff, RSTRING_PTR(str));
+!      p = strchr(buff, '\n');
+!      if (p) *p = '\0';
+!      MSG(buff);
+!     }
+!     else
+!     {
+!      MSG("");
+!     }
+      return Qnil;
+  }
+  
+*** ../vim-7.3.266/src/version.c       2011-07-27 18:25:40.000000000 +0200
+--- src/version.c      2011-08-04 19:07:45.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     267,
+  /**/
+
+-- 
+There are 10 kinds of people: Those who understand binary and those who don't.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.268.patch0 b/vim/patches/vim-7.3.268.patch0
new file mode 100644 (file)
index 0000000..aa84877
--- /dev/null
@@ -0,0 +1,69 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.268
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.268
+Problem:    Vim freezes when executing an external command with zsh.
+Solution:   Use O_NOCTTY both in the master and slave. (Bjorn Winckler)
+Files:     src/os_unix.c
+
+
+*** ../vim-7.3.267/src/os_unix.c       2011-07-07 16:20:45.000000000 +0200
+--- src/os_unix.c      2011-08-04 19:06:14.000000000 +0200
+***************
+*** 3889,3899 ****
+       if (p_guipty && !(options & (SHELL_READ|SHELL_WRITE)))
+       {
+           pty_master_fd = OpenPTY(&tty_name);     /* open pty */
+!          if (pty_master_fd >= 0 && ((pty_slave_fd =
+!                                  open(tty_name, O_RDWR | O_EXTRA, 0)) < 0))
+           {
+!              close(pty_master_fd);
+!              pty_master_fd = -1;
+           }
+       }
+       /*
+--- 3889,3909 ----
+       if (p_guipty && !(options & (SHELL_READ|SHELL_WRITE)))
+       {
+           pty_master_fd = OpenPTY(&tty_name);     /* open pty */
+!          if (pty_master_fd >= 0)
+           {
+!              /* Leaving out O_NOCTTY may lead to waitpid() always returning
+!               * 0 on Mac OS X 10.7 thereby causing freezes. Let's assume
+!               * adding O_NOCTTY always works when defined. */
+! #ifdef O_NOCTTY
+!              pty_slave_fd = open(tty_name, O_RDWR | O_NOCTTY | O_EXTRA, 0);
+! #else
+!              pty_slave_fd = open(tty_name, O_RDWR | O_EXTRA, 0);
+! #endif
+!              if (pty_slave_fd < 0)
+!              {
+!                  close(pty_master_fd);
+!                  pty_master_fd = -1;
+!              }
+           }
+       }
+       /*
+*** ../vim-7.3.267/src/version.c       2011-08-04 19:34:55.000000000 +0200
+--- src/version.c      2011-08-04 19:36:00.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     268,
+  /**/
+
+-- 
+Mental Floss prevents moral decay!
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.269.patch0 b/vim/patches/vim-7.3.269.patch0
new file mode 100644 (file)
index 0000000..a0bfc47
--- /dev/null
@@ -0,0 +1,112 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.269
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.269
+Problem:    'shellcmdflag' only works with one flag. 
+Solution:   Split into multiple arguments. (Gary Johnson)
+Files:     src/os_unix.c
+
+
+*** ../vim-7.3.268/src/os_unix.c       2011-08-04 19:36:47.000000000 +0200
+--- src/os_unix.c      2011-08-04 20:27:13.000000000 +0200
+***************
+*** 3795,3802 ****
+--- 3795,3804 ----
+      int              retval = -1;
+      char     **argv = NULL;
+      int              argc;
++     char_u   *p_shcf_copy = NULL;
+      int              i;
+      char_u   *p;
++     char_u   *s;
+      int              inquote;
+      int              pty_master_fd = -1;         /* for pty's */
+  # ifdef FEAT_GUI
+***************
+*** 3855,3860 ****
+--- 3857,3875 ----
+       }
+       if (argv == NULL)
+       {
++          /*
++           * Account for possible multiple args in p_shcf.
++           */
++          p = p_shcf;
++          for (;;)
++          {
++              p = skiptowhite(p);
++              if (*p == NUL)
++                  break;
++              ++argc;
++              p = skipwhite(p);
++          }
++ 
+           argv = (char **)alloc((unsigned)((argc + 4) * sizeof(char *)));
+           if (argv == NULL)       /* out of memory */
+               goto error;
+***************
+*** 3864,3870 ****
+      {
+       if (extra_shell_arg != NULL)
+           argv[argc++] = (char *)extra_shell_arg;
+!      argv[argc++] = (char *)p_shcf;
+       argv[argc++] = (char *)cmd;
+      }
+      argv[argc] = NULL;
+--- 3879,3901 ----
+      {
+       if (extra_shell_arg != NULL)
+           argv[argc++] = (char *)extra_shell_arg;
+! 
+!      /* Break 'shellcmdflag' into white separated parts.  This doesn't
+!       * handle quoted strings, they are very unlikely to appear. */
+!      p_shcf_copy = alloc((unsigned)STRLEN(p_shcf) + 1);
+!      if (p_shcf_copy == NULL)    /* out of memory */
+!          goto error;
+!      s = p_shcf_copy;
+!      p = p_shcf;
+!      while (*p != NUL)
+!      {
+!          argv[argc++] = (char *)s;
+!          while (*p && *p != ' ' && *p != TAB)
+!              *s++ = *p++;
+!          *s++ = NUL;
+!          p = skipwhite(p);
+!      }
+! 
+       argv[argc++] = (char *)cmd;
+      }
+      argv[argc] = NULL;
+***************
+*** 4677,4682 ****
+--- 4708,4714 ----
+       }
+      }
+      vim_free(argv);
++     vim_free(p_shcf_copy);
+  
+  error:
+      if (!did_settmode)
+*** ../vim-7.3.268/src/version.c       2011-08-04 19:36:47.000000000 +0200
+--- src/version.c      2011-08-04 20:30:44.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     269,
+  /**/
+
+-- 
+Be nice to your kids...  they'll be the ones choosing your nursing home.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.270.patch0 b/vim/patches/vim-7.3.270.patch0
new file mode 100644 (file)
index 0000000..3eaf6bf
--- /dev/null
@@ -0,0 +1,52 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.270
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.270
+Problem:    Illegal memory access.
+Solution:   Swap conditions. (Dominique Pelle)
+Files:     src/ops.c
+
+
+*** ../vim-7.3.269/src/ops.c   2011-07-15 17:51:30.000000000 +0200
+--- src/ops.c  2011-08-10 12:07:22.000000000 +0200
+***************
+*** 6311,6317 ****
+      *wc += words;
+  
+      /* Add eol_size if the end of line was reached before hitting limit. */
+!     if (line[i] == NUL && i < limit)
+      {
+       i += eol_size;
+       chars += eol_size;
+--- 6311,6317 ----
+      *wc += words;
+  
+      /* Add eol_size if the end of line was reached before hitting limit. */
+!     if (i < limit && line[i] == NUL)
+      {
+       i += eol_size;
+       chars += eol_size;
+*** ../vim-7.3.269/src/version.c       2011-08-04 20:31:50.000000000 +0200
+--- src/version.c      2011-08-10 12:09:30.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     270,
+  /**/
+
+-- 
+An indication you must be a manager:
+You give constructive feedback to your dog.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.271.patch0 b/vim/patches/vim-7.3.271.patch0
new file mode 100644 (file)
index 0000000..c42d19a
--- /dev/null
@@ -0,0 +1,504 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.271
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.271
+Problem:    Code not following Vim coding style.
+Solution:   Fix the style. (Elias Diem)
+Files:     src/gui_photon.c
+
+
+*** ../vim-7.3.270/src/gui_photon.c    2011-07-27 14:09:05.000000000 +0200
+--- src/gui_photon.c   2011-08-10 12:18:35.000000000 +0200
+***************
+*** 358,378 ****
+  }
+  
+      static int
+! gui_ph_handle_window_cb( PtWidget_t *widget, void *data, PtCallbackInfo_t *info )
+  {
+      PhWindowEvent_t *we = info->cbdata;
+      ushort_t *width, *height;
+  
+!     switch( we->event_f ) {
+       case Ph_WM_CLOSE:
+           gui_shell_closed();
+           break;
+  
+       case Ph_WM_FOCUS:
+           /* Just in case it's hidden and needs to be shown */
+!          gui_mch_mousehide( MOUSE_SHOW );
+  
+!          if( we->event_state == Ph_WM_EVSTATE_FOCUS )
+           {
+               gui_focus_change(TRUE);
+               gui_mch_start_blink();
+--- 358,378 ----
+  }
+  
+      static int
+! gui_ph_handle_window_cb(PtWidget_t *widget, void *data, PtCallbackInfo_t *info)
+  {
+      PhWindowEvent_t *we = info->cbdata;
+      ushort_t *width, *height;
+  
+!     switch (we->event_f) {
+       case Ph_WM_CLOSE:
+           gui_shell_closed();
+           break;
+  
+       case Ph_WM_FOCUS:
+           /* Just in case it's hidden and needs to be shown */
+!          gui_mch_mousehide(MOUSE_SHOW);
+  
+!          if (we->event_state == Ph_WM_EVSTATE_FOCUS)
+           {
+               gui_focus_change(TRUE);
+               gui_mch_start_blink();
+***************
+*** 385,401 ****
+           break;
+  
+       case Ph_WM_RESIZE:
+!          PtGetResource( gui.vimWindow, Pt_ARG_WIDTH, &width, 0 );
+!          PtGetResource( gui.vimWindow, Pt_ARG_HEIGHT, &height, 0 );
+  #ifdef USE_PANEL_GROUP
+           width  -= (pg_margin_left + pg_margin_right);
+           height -= (pg_margin_top + pg_margin_bottom);
+  #endif
+!          gui_resize_shell( *width, *height );
+!          gui_set_shellsize( FALSE, FALSE, RESIZE_BOTH );
+           is_ignore_draw = FALSE;
+!          PtEndFlux( gui.vimContainer );
+!          PtContainerRelease( gui.vimContainer );
+           break;
+  
+       default:
+--- 385,401 ----
+           break;
+  
+       case Ph_WM_RESIZE:
+!          PtGetResource(gui.vimWindow, Pt_ARG_WIDTH, &width, 0);
+!          PtGetResource(gui.vimWindow, Pt_ARG_HEIGHT, &height, 0);
+  #ifdef USE_PANEL_GROUP
+           width  -= (pg_margin_left + pg_margin_right);
+           height -= (pg_margin_top + pg_margin_bottom);
+  #endif
+!          gui_resize_shell(*width, *height);
+!          gui_set_shellsize(FALSE, FALSE, RESIZE_BOTH);
+           is_ignore_draw = FALSE;
+!          PtEndFlux(gui.vimContainer);
+!          PtContainerRelease(gui.vimContainer);
+           break;
+  
+       default:
+***************
+*** 406,412 ****
+  }
+  
+      static int
+! gui_ph_handle_scrollbar( PtWidget_t *widget, void *data, PtCallbackInfo_t *info )
+  {
+      PtScrollbarCallback_t *scroll;
+      scrollbar_T *sb;
+--- 406,412 ----
+  }
+  
+      static int
+! gui_ph_handle_scrollbar(PtWidget_t *widget, void *data, PtCallbackInfo_t *info)
+  {
+      PtScrollbarCallback_t *scroll;
+      scrollbar_T *sb;
+***************
+*** 415,424 ****
+      scroll = info->cbdata;
+  
+      sb = (scrollbar_T *) data;
+!     if( sb != NULL )
+      {
+       value = scroll->position;
+!      switch( scroll->action )
+       {
+           case Pt_SCROLL_DRAGGED:
+               dragging = TRUE;
+--- 415,424 ----
+      scroll = info->cbdata;
+  
+      sb = (scrollbar_T *) data;
+!     if (sb != NULL)
+      {
+       value = scroll->position;
+!      switch (scroll->action)
+       {
+           case Pt_SCROLL_DRAGGED:
+               dragging = TRUE;
+***************
+*** 436,532 ****
+  }
+  
+      static int
+! gui_ph_handle_keyboard( PtWidget_t *widget, void *data, PtCallbackInfo_t *info )
+  {
+      PhKeyEvent_t    *key;
+      unsigned char   string[6];
+      int                  len, i;
+      int                  ch, modifiers;
+  
+!     key = PhGetData( info->event );
+  
+      ch = modifiers = len = 0;
+  
+!     if( p_mh )
+!      gui_mch_mousehide( MOUSE_HIDE );
+  
+      /* We're a good lil photon program, aren't we? yes we are, yeess wee arrr */
+!     if( key->key_flags & Pk_KF_Compose )
+      {
+       return Pt_CONTINUE;
+      }
+  
+!     if( (key->key_flags & Pk_KF_Cap_Valid) &&
+!          PkIsKeyDown( key->key_flags ) )
+      {
+  #ifdef FEAT_MENU
+       /*
+        * Only show the menu if the Alt key is down, and the Shift & Ctrl
+        * keys aren't down, as well as the other conditions
+        */
+!      if( ( ( key->key_mods & Pk_KM_Alt ) &&
+!                  !( key->key_mods & Pk_KM_Shift ) &&
+!                  !( key->key_mods & Pk_KM_Ctrl ) ) &&
+           gui.menu_is_active &&
+!          ( *p_wak == 'y' ||
+!            ( *p_wak == 'm' &&
+!              gui_is_menu_shortcut( key->key_cap ) ) ) )
+       {
+           /* Fallthrough and let photon look for the hotkey */
+           return Pt_CONTINUE;
+       }
+  #endif
+  
+!      for( i = 0; special_keys[i].key_sym != 0; i++ )
+       {
+!          if( special_keys[i].key_sym == key->key_cap )
+           {
+               len = 0;
+!              if( special_keys[i].vim_code1 == NUL )
+                   ch = special_keys[i].vim_code0;
+               else
+               {
+                   /* Detect if a keypad number key has been pressed
+                    * and change the key if Num Lock is on */
+!                  if( key->key_cap >= Pk_KP_Enter && key->key_cap <= Pk_KP_9
+!                          && ( key->key_mods & Pk_KM_Num_Lock ) )
+                   {
+                       /* FIXME: For now, just map the key to a ascii value
+                        * (see <photon/PkKeyDef.h>) */
+                       ch = key->key_cap - 0xf080;
+                   }
+                   else
+!                      ch = TO_SPECIAL( special_keys[i].vim_code0,
+!                              special_keys[i].vim_code1 );
+               }
+               break;
+           }
+       }
+  
+!      if( key->key_mods & Pk_KM_Ctrl )
+           modifiers |= MOD_MASK_CTRL;
+!      if( key->key_mods & Pk_KM_Alt )
+           modifiers |= MOD_MASK_ALT;
+!      if( key->key_mods & Pk_KM_Shift )
+           modifiers |= MOD_MASK_SHIFT;
+  
+       /* Is this not a special key? */
+!      if( special_keys[i].key_sym == 0 )
+       {
+!          ch = PhTo8859_1( key );
+!          if( ch == -1
+  #ifdef FEAT_MBYTE
+!              || ( enc_utf8 && ch > 127 )
+  #endif
+               )
+           {
+  #ifdef FEAT_MBYTE
+!              len = PhKeyToMb( string, key );
+!              if( len > 0 )
+               {
+                   static char buf[6];
+                   int src_taken, dst_made;
+!                  if( enc_utf8 != TRUE )
+                   {
+                       PxTranslateFromUTF(
+                               charset_translate,
+--- 436,532 ----
+  }
+  
+      static int
+! gui_ph_handle_keyboard(PtWidget_t *widget, void *data, PtCallbackInfo_t *info)
+  {
+      PhKeyEvent_t    *key;
+      unsigned char   string[6];
+      int                  len, i;
+      int                  ch, modifiers;
+  
+!     key = PhGetData(info->event);
+  
+      ch = modifiers = len = 0;
+  
+!     if (p_mh)
+!      gui_mch_mousehide(MOUSE_HIDE);
+  
+      /* We're a good lil photon program, aren't we? yes we are, yeess wee arrr */
+!     if (key->key_flags & Pk_KF_Compose)
+      {
+       return Pt_CONTINUE;
+      }
+  
+!     if ((key->key_flags & Pk_KF_Cap_Valid) &&
+!          PkIsKeyDown(key->key_flags))
+      {
+  #ifdef FEAT_MENU
+       /*
+        * Only show the menu if the Alt key is down, and the Shift & Ctrl
+        * keys aren't down, as well as the other conditions
+        */
+!      if (((key->key_mods & Pk_KM_Alt) &&
+!                  !(key->key_mods & Pk_KM_Shift) &&
+!                  !(key->key_mods & Pk_KM_Ctrl)) &&
+           gui.menu_is_active &&
+!          (*p_wak == 'y' ||
+!            (*p_wak == 'm' &&
+!              gui_is_menu_shortcut(key->key_cap))))
+       {
+           /* Fallthrough and let photon look for the hotkey */
+           return Pt_CONTINUE;
+       }
+  #endif
+  
+!      for(i = 0; special_keys[i].key_sym != 0; i++)
+       {
+!          if (special_keys[i].key_sym == key->key_cap)
+           {
+               len = 0;
+!              if (special_keys[i].vim_code1 == NUL)
+                   ch = special_keys[i].vim_code0;
+               else
+               {
+                   /* Detect if a keypad number key has been pressed
+                    * and change the key if Num Lock is on */
+!                  if (key->key_cap >= Pk_KP_Enter && key->key_cap <= Pk_KP_9
+!                          && (key->key_mods & Pk_KM_Num_Lock))
+                   {
+                       /* FIXME: For now, just map the key to a ascii value
+                        * (see <photon/PkKeyDef.h>) */
+                       ch = key->key_cap - 0xf080;
+                   }
+                   else
+!                      ch = TO_SPECIAL(special_keys[i].vim_code0,
+!                              special_keys[i].vim_code1);
+               }
+               break;
+           }
+       }
+  
+!      if (key->key_mods & Pk_KM_Ctrl)
+           modifiers |= MOD_MASK_CTRL;
+!      if (key->key_mods & Pk_KM_Alt)
+           modifiers |= MOD_MASK_ALT;
+!      if (key->key_mods & Pk_KM_Shift)
+           modifiers |= MOD_MASK_SHIFT;
+  
+       /* Is this not a special key? */
+!      if (special_keys[i].key_sym == 0)
+       {
+!          ch = PhTo8859_1(key);
+!          if (ch == -1
+  #ifdef FEAT_MBYTE
+!              || (enc_utf8 && ch > 127)
+  #endif
+               )
+           {
+  #ifdef FEAT_MBYTE
+!              len = PhKeyToMb(string, key);
+!              if (len > 0)
+               {
+                   static char buf[6];
+                   int src_taken, dst_made;
+!                  if (enc_utf8 != TRUE)
+                   {
+                       PxTranslateFromUTF(
+                               charset_translate,
+***************
+*** 2931,2943 ****
+       name_len = (int_u) ( mark - vim_font );
+  
+      *font_name = vim_strnsave( vim_font, name_len );
+!     if( *font_name != NULL )
+      {
+!      if( mark != NULL )
+       {
+!          while( *mark != NUL && *mark++ == ':')
+           {
+!              switch( tolower( *mark++ ) )
+               {
+                   case 'a': *font_flags |= PF_STYLE_ANTIALIAS; break;
+                   case 'b': *font_flags |= PF_STYLE_BOLD; break;
+--- 2931,2943 ----
+       name_len = (int_u) ( mark - vim_font );
+  
+      *font_name = vim_strnsave( vim_font, name_len );
+!     if (*font_name != NULL)
+      {
+!      if (mark != NULL)
+       {
+!          while (*mark != NUL && *mark++ == ':')
+           {
+!              switch (tolower(*mark++))
+               {
+                   case 'a': *font_flags |= PF_STYLE_ANTIALIAS; break;
+                   case 'b': *font_flags |= PF_STYLE_BOLD; break;
+***************
+*** 2946,2952 ****
+                   case 's':
+                       size = getdigits( &mark );
+                       /* Restrict the size to some vague limits */
+!                      if( size < 1 || size > 100 )
+                           size = 8;
+  
+                       *font_size = size;
+--- 2946,2952 ----
+                   case 's':
+                       size = getdigits( &mark );
+                       /* Restrict the size to some vague limits */
+!                      if (size < 1 || size > 100)
+                           size = 8;
+  
+                       *font_size = size;
+***************
+*** 2973,2990 ****
+      FontQueryInfo info;
+      PhRect_t extent;
+  
+!     if( vim_font_name == NULL )
+      {
+       /* Default font */
+       vim_font_name = "PC Terminal";
+      }
+  
+!     if( STRCMP( vim_font_name, "*" ) == 0 )
+      {
+       font_tag = PtFontSelection( gui.vimWindow, NULL, NULL,
+               "pcterm12", -1, PHFONT_FIXED, NULL );
+  
+!      if( font_tag == NULL )
+           return FAIL;
+  
+       gui_mch_free_font( gui.norm_font );
+--- 2973,2990 ----
+      FontQueryInfo info;
+      PhRect_t extent;
+  
+!     if (vim_font_name == NULL)
+      {
+       /* Default font */
+       vim_font_name = "PC Terminal";
+      }
+  
+!     if (STRCMP( vim_font_name, "*" ) == 0)
+      {
+       font_tag = PtFontSelection( gui.vimWindow, NULL, NULL,
+               "pcterm12", -1, PHFONT_FIXED, NULL );
+  
+!      if (font_tag == NULL)
+           return FAIL;
+  
+       gui_mch_free_font( gui.norm_font );
+***************
+*** 2995,3006 ****
+      }
+      else
+      {
+!      if( gui_ph_parse_font_name( vim_font_name, &font_name, &font_flags,
+!                  &font_size ) == FALSE )
+           return FAIL;
+  
+       font_tag = gui_ph_get_font( font_name, font_flags, font_size, 0 );
+!      if( font_tag == NULL )
+       {
+           vim_free( font_name );
+           return FAIL;
+--- 2995,3006 ----
+      }
+      else
+      {
+!      if (gui_ph_parse_font_name( vim_font_name, &font_name, &font_flags,
+!                  &font_size ) == FALSE)
+           return FAIL;
+  
+       font_tag = gui_ph_get_font( font_name, font_flags, font_size, 0 );
+!      if (font_tag == NULL)
+       {
+           vim_free( font_name );
+           return FAIL;
+***************
+*** 3053,3069 ****
+      int_u   font_size = 12;
+      int_u   font_flags = 0;
+  
+!     if( gui_ph_parse_font_name( vim_font_name, &font_name, &font_flags,
+!              &font_size ) != FALSE )
+      {
+       font_tag = gui_ph_get_font( font_name, font_flags, font_size, -1 );
+       vim_free( font_name );
+  
+!      if( font_tag != NULL )
+           return (GuiFont)font_tag;
+      }
+  
+!     if( report_error )
+       EMSG2(e_font, vim_font_name );
+  
+      return FAIL;
+--- 3053,3069 ----
+      int_u   font_size = 12;
+      int_u   font_flags = 0;
+  
+!     if (gui_ph_parse_font_name( vim_font_name, &font_name, &font_flags,
+!              &font_size ) != FALSE)
+      {
+       font_tag = gui_ph_get_font( font_name, font_flags, font_size, -1 );
+       vim_free( font_name );
+  
+!      if (font_tag != NULL)
+           return (GuiFont)font_tag;
+      }
+  
+!     if (report_error)
+       EMSG2(e_font, vim_font_name );
+  
+      return FAIL;
+*** ../vim-7.3.270/src/version.c       2011-08-10 12:10:55.000000000 +0200
+--- src/version.c      2011-08-10 12:17:06.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     271,
+  /**/
+
+-- 
+An indication you must be a manager:
+You believe you never have any problems in your life, just
+"issues" and "improvement opportunities".
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.272.patch0 b/vim/patches/vim-7.3.272.patch0
new file mode 100644 (file)
index 0000000..b512a1f
--- /dev/null
@@ -0,0 +1,51 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.272
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.272
+Problem:    ":put =list" does not add an empty line for a trailing empty
+            item.
+Solution:   Add a trailing NL when turning a list into a string.
+Files:      src/eval.c
+    
+
+*** ../vim-7.3.271/src/eval.c  2011-07-15 21:24:06.000000000 +0200
+--- src/eval.c 2011-08-10 12:31:51.000000000 +0200
+***************
+*** 1357,1363 ****
+--- 1357,1367 ----
+       {
+           ga_init2(&ga, (int)sizeof(char), 80);
+           if (tv.vval.v_list != NULL)
++          {
+               list_join(&ga, tv.vval.v_list, (char_u *)"\n", TRUE, 0);
++              if (tv.vval.v_list->lv_len > 0)
++                  ga_append(&ga, NL);
++          }
+           ga_append(&ga, NUL);
+           retval = (char_u *)ga.ga_data;
+       }
+*** ../vim-7.3.271/src/version.c       2011-08-10 12:19:00.000000000 +0200
+--- src/version.c      2011-08-10 12:36:41.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     272,
+  /**/
+
+-- 
+Lose weight, NEVER Diet again with
+                  The "Invisible Weight Loss Patch"
+                                               (spam e-mail)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.273.patch0 b/vim/patches/vim-7.3.273.patch0
new file mode 100644 (file)
index 0000000..e74eb5a
--- /dev/null
@@ -0,0 +1,124 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.273
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.273
+Problem:    A BOM in an error file is seen as text. (Aleksey Baibarin)
+Solution:   Remove the BOM from the text before evaluating. (idea by Christian
+            Brabandt)
+Files:      src/quickfix.c, src/mbyte.c, src/proto/mbyte.pro,
+            src/testdir/test10.in
+    
+
+*** ../vim-7.3.272/src/quickfix.c      2011-05-19 17:42:54.000000000 +0200
+--- src/quickfix.c     2011-08-10 12:56:15.000000000 +0200
+***************
+*** 561,566 ****
+--- 561,570 ----
+           break;
+  
+       IObuff[CMDBUFFSIZE - 2] = NUL;  /* for very long lines */
++ #ifdef FEAT_MBYTE
++      remove_bom(IObuff);
++ #endif
++ 
+       if ((efmp = vim_strrchr(IObuff, '\n')) != NULL)
+           *efmp = NUL;
+  #ifdef USE_CRNL
+*** ../vim-7.3.272/src/mbyte.c 2011-07-27 18:25:40.000000000 +0200
+--- src/mbyte.c        2011-08-10 13:11:56.000000000 +0200
+***************
+*** 838,843 ****
+--- 838,864 ----
+  }
+  
+  /*
++  * Remove all BOM from "s" by moving remaining text.
++  */
++     void
++ remove_bom(s)
++     char_u *s;
++ {
++     if (enc_utf8)
++     {
++      char_u *p = s;
++ 
++      while ((p = vim_strbyte(p, 0xef)) != NULL)
++      {
++          if (p[1] == 0xbb && p[2] == 0xbf)
++              STRMOVE(p, p + 3);
++          else
++              ++p;
++      }
++     }
++ }
++ 
++ /*
+   * Get class of pointer:
+   * 0 for blank or NUL
+   * 1 for punctuation
+*** ../vim-7.3.272/src/proto/mbyte.pro 2011-07-07 15:08:53.000000000 +0200
+--- src/proto/mbyte.pro        2011-08-10 12:50:44.000000000 +0200
+***************
+*** 2,7 ****
+--- 2,8 ----
+  int enc_canon_props __ARGS((char_u *name));
+  char_u *mb_init __ARGS((void));
+  int bomb_size __ARGS((void));
++ void remove_bom __ARGS((char_u *s));
+  int mb_get_class __ARGS((char_u *p));
+  int dbcs_class __ARGS((unsigned lead, unsigned trail));
+  int latin_char2len __ARGS((int c));
+*** ../vim-7.3.272/src/testdir/test10.in       2010-08-15 21:57:29.000000000 +0200
+--- src/testdir/test10.in      2011-08-10 13:01:46.000000000 +0200
+***************
+*** 2,7 ****
+--- 2,10 ----
+  
+  STARTTEST
+  :so small.vim
++ :" Also test a BOM is ignored.
++ :so mbyte.vim
++ :set encoding=utf-8
+  :/start of errorfile/,/end of errorfile/w! Xerrorfile
+  :/start of testfile/,/end of testfile/w! Xtestfile
+  :cf Xerrorfile
+***************
+*** 20,26 ****
+  
+  start of errorfile
+  "Xtestfile", line 4.12: 1506-045 (S) Undeclared identifier fd_set.
+! "Xtestfile", line 7 col 19; this is an error
+  gcc -c -DHAVE_CONFIsing-prototypes -I/usr/X11R6/include  version.c
+  Xtestfile:13: parse error before `asd'
+  make: *** [vim] Error 1
+--- 23,29 ----
+  
+  start of errorfile
+  "Xtestfile", line 4.12: 1506-045 (S) Undeclared identifier fd_set.
+! ï»¿"Xtestfile", line 7 col 19; this is an error
+  gcc -c -DHAVE_CONFIsing-prototypes -I/usr/X11R6/include  version.c
+  Xtestfile:13: parse error before `asd'
+  make: *** [vim] Error 1
+*** ../vim-7.3.272/src/version.c       2011-08-10 12:38:02.000000000 +0200
+--- src/version.c      2011-08-10 13:14:35.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     273,
+  /**/
+
+-- 
+Compilation process failed successfully.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.274.patch0 b/vim/patches/vim-7.3.274.patch0
new file mode 100644 (file)
index 0000000..48faf3c
--- /dev/null
@@ -0,0 +1,55 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.274
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.274
+Problem:    With concealed characters tabs do not have the right size.
+Solution:   Use VCOL_HLC instead of vcol. (Eiichi Sato)
+Files:     src/screen.c
+
+
+*** ../vim-7.3.273/src/screen.c        2011-03-22 13:29:20.000000000 +0100
+--- src/screen.c       2011-08-10 14:22:47.000000000 +0200
+***************
+*** 4252,4258 ****
+               {
+                   /* tab amount depends on current column */
+                   n_extra = (int)wp->w_buffer->b_p_ts
+!                                 - vcol % (int)wp->w_buffer->b_p_ts - 1;
+  #ifdef FEAT_MBYTE
+                   mb_utf8 = FALSE;    /* don't draw as UTF-8 */
+  #endif
+--- 4252,4258 ----
+               {
+                   /* tab amount depends on current column */
+                   n_extra = (int)wp->w_buffer->b_p_ts
+!                                 - VCOL_HLC % (int)wp->w_buffer->b_p_ts - 1;
+  #ifdef FEAT_MBYTE
+                   mb_utf8 = FALSE;    /* don't draw as UTF-8 */
+  #endif
+*** ../vim-7.3.273/src/version.c       2011-08-10 13:21:30.000000000 +0200
+--- src/version.c      2011-08-10 14:23:38.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     274,
+  /**/
+
+-- 
+   Arthur pulls Pin out.  The MONK blesses the grenade as ...
+ARTHUR:  (quietly) One, two, five ...
+GALAHAD: Three, sir!
+ARTHUR:  Three.
+                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.275.patch0 b/vim/patches/vim-7.3.275.patch0
new file mode 100644 (file)
index 0000000..2bdd145
--- /dev/null
@@ -0,0 +1,77 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.275
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.275
+Problem:    MS-Windows: When using a black background some screen updates
+           cause the window to flicker.
+Solution:   Add WS_CLIPCHILDREN to CreateWindow().  (René Aguirre)
+Files:     src/gui_w32.c
+
+
+*** ../vim-7.3.274/src/gui_w32.c       2011-07-07 17:43:37.000000000 +0200
+--- src/gui_w32.c      2011-08-10 14:40:58.000000000 +0200
+***************
+*** 1379,1385 ****
+           s_hwnd = CreateWindowEx(
+               WS_EX_MDICHILD,
+               szVimWndClass, "Vim MSWindows GUI",
+!              WS_OVERLAPPEDWINDOW | WS_CHILD | WS_CLIPSIBLINGS | 0xC000,
+               gui_win_x == -1 ? CW_USEDEFAULT : gui_win_x,
+               gui_win_y == -1 ? CW_USEDEFAULT : gui_win_y,
+               100,                            /* Any value will do */
+--- 1379,1386 ----
+           s_hwnd = CreateWindowEx(
+               WS_EX_MDICHILD,
+               szVimWndClass, "Vim MSWindows GUI",
+!              WS_OVERLAPPEDWINDOW | WS_CHILD
+!                               | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | 0xC000,
+               gui_win_x == -1 ? CW_USEDEFAULT : gui_win_x,
+               gui_win_y == -1 ? CW_USEDEFAULT : gui_win_y,
+               100,                            /* Any value will do */
+***************
+*** 1410,1416 ****
+        * titlebar, it will be reparented below. */
+       s_hwnd = CreateWindow(
+               szVimWndClass, "Vim MSWindows GUI",
+!              win_socket_id == 0 ? WS_OVERLAPPEDWINDOW : WS_POPUP,
+               gui_win_x == -1 ? CW_USEDEFAULT : gui_win_x,
+               gui_win_y == -1 ? CW_USEDEFAULT : gui_win_y,
+               100,                            /* Any value will do */
+--- 1411,1418 ----
+        * titlebar, it will be reparented below. */
+       s_hwnd = CreateWindow(
+               szVimWndClass, "Vim MSWindows GUI",
+!              (win_socket_id == 0 ? WS_OVERLAPPEDWINDOW : WS_POPUP)
+!                                        | WS_CLIPSIBLINGS | WS_CLIPCHILDREN,
+               gui_win_x == -1 ? CW_USEDEFAULT : gui_win_x,
+               gui_win_y == -1 ? CW_USEDEFAULT : gui_win_y,
+               100,                            /* Any value will do */
+*** ../vim-7.3.274/src/version.c       2011-08-10 14:32:33.000000000 +0200
+--- src/version.c      2011-08-10 14:39:14.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     275,
+  /**/
+
+-- 
+ARTHUR:          What does it say?
+BROTHER MAYNARD: It reads ... "Here may be found the last words of Joseph of
+                 Aramathea." "He who is valorous and pure of heart may find
+                 the Holy Grail in the aaaaarrrrrrggghhh..."
+ARTHUR:          What?
+BROTHER MAYNARD: "The Aaaaarrrrrrggghhh..."
+                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.276.patch0 b/vim/patches/vim-7.3.276.patch0
new file mode 100644 (file)
index 0000000..3af0245
--- /dev/null
@@ -0,0 +1,130 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.276
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.276
+Problem:    GvimExt sets $LANG in the wrong way.
+Solution:   Save the environment and use it for gvim. (Yasuhiro Matsumoto)
+Files:     src/GvimExt/gvimext.cpp
+
+
+*** ../vim-7.3.275/src/GvimExt/gvimext.cpp     2011-07-20 17:27:17.000000000 +0200
+--- src/GvimExt/gvimext.cpp    2011-08-10 16:25:32.000000000 +0200
+***************
+*** 142,147 ****
+--- 142,148 ----
+  static int dyn_libintl_init(char *dir);
+  static void dyn_libintl_end(void);
+  
++ static wchar_t *oldenv = NULL;
+  static HINSTANCE hLibintlDLL = 0;
+  static char *(*dyn_libintl_gettext)(const char *) = null_libintl_gettext;
+  static char *(*dyn_libintl_textdomain)(const char *) = null_libintl_textdomain;
+***************
+*** 339,346 ****
+  inc_cRefThisDLL()
+  {
+  #ifdef FEAT_GETTEXT
+!     if (g_cRefThisDll == 0)
+       dyn_gettext_load();
+  #endif
+      InterlockedIncrement((LPLONG)&g_cRefThisDll);
+  }
+--- 340,349 ----
+  inc_cRefThisDLL()
+  {
+  #ifdef FEAT_GETTEXT
+!     if (g_cRefThisDll == 0) {
+       dyn_gettext_load();
++      oldenv = GetEnvironmentStringsW();
++     }
+  #endif
+      InterlockedIncrement((LPLONG)&g_cRefThisDll);
+  }
+***************
+*** 349,356 ****
+  dec_cRefThisDLL()
+  {
+  #ifdef FEAT_GETTEXT
+!     if (InterlockedDecrement((LPLONG)&g_cRefThisDll) == 0)
+       dyn_gettext_free();
+  #else
+      InterlockedDecrement((LPLONG)&g_cRefThisDll);
+  #endif
+--- 352,364 ----
+  dec_cRefThisDLL()
+  {
+  #ifdef FEAT_GETTEXT
+!     if (InterlockedDecrement((LPLONG)&g_cRefThisDll) == 0) {
+       dyn_gettext_free();
++      if (oldenv != NULL) {
++          FreeEnvironmentStringsW(oldenv);
++          oldenv = NULL;
++      }
++     }
+  #else
+      InterlockedDecrement((LPLONG)&g_cRefThisDll);
+  #endif
+***************
+*** 905,912 ****
+                       NULL,           // Process handle not inheritable.
+                       NULL,           // Thread handle not inheritable.
+                       FALSE,          // Set handle inheritance to FALSE.
+!                      0,              // No creation flags.
+!                      NULL,           // Use parent's environment block.
+                       NULL,           // Use parent's starting directory.
+                       &si,            // Pointer to STARTUPINFO structure.
+                       &pi)            // Pointer to PROCESS_INFORMATION structure.
+--- 913,920 ----
+                       NULL,           // Process handle not inheritable.
+                       NULL,           // Thread handle not inheritable.
+                       FALSE,          // Set handle inheritance to FALSE.
+!                      oldenv == NULL ? 0 : CREATE_UNICODE_ENVIRONMENT,
+!                      oldenv,         // Use unmodified environment block.
+                       NULL,           // Use parent's starting directory.
+                       &si,            // Pointer to STARTUPINFO structure.
+                       &pi)            // Pointer to PROCESS_INFORMATION structure.
+***************
+*** 987,994 ****
+               NULL,           // Process handle not inheritable.
+               NULL,           // Thread handle not inheritable.
+               FALSE,          // Set handle inheritance to FALSE.
+!              0,              // No creation flags.
+!              NULL,           // Use parent's environment block.
+               NULL,           // Use parent's starting directory.
+               &si,            // Pointer to STARTUPINFO structure.
+               &pi)            // Pointer to PROCESS_INFORMATION structure.
+--- 995,1002 ----
+               NULL,           // Process handle not inheritable.
+               NULL,           // Thread handle not inheritable.
+               FALSE,          // Set handle inheritance to FALSE.
+!              oldenv == NULL ? 0 : CREATE_UNICODE_ENVIRONMENT,
+!              oldenv,         // Use unmodified environment block.
+               NULL,           // Use parent's starting directory.
+               &si,            // Pointer to STARTUPINFO structure.
+               &pi)            // Pointer to PROCESS_INFORMATION structure.
+*** ../vim-7.3.275/src/version.c       2011-08-10 15:56:24.000000000 +0200
+--- src/version.c      2011-08-10 16:28:42.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     276,
+  /**/
+
+-- 
+User:       I'm having problems with my text editor.
+Help desk:  Which editor are you using?
+User:       I don't know, but it's version VI (pronounced: 6).
+Help desk:  Oh, then you should upgrade to version VIM (pronounced: 994).
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.277.patch0 b/vim/patches/vim-7.3.277.patch0
new file mode 100644 (file)
index 0000000..3509a1a
--- /dev/null
@@ -0,0 +1,348 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.277
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.277
+Problem:    MS-Windows: some characters do not show in dialogs.
+Solution:   Use the wide methods when available. (Yanwei Jia)
+Files:      src/gui_w32.c, src/gui_w48.c, src/os_mswin.c, src/os_win32.c,
+            src/os_win32.h
+    
+
+*** ../vim-7.3.276/src/gui_w32.c       2011-08-10 15:56:24.000000000 +0200
+--- src/gui_w32.c      2011-08-10 16:52:55.000000000 +0200
+***************
+*** 1270,1275 ****
+--- 1270,1294 ----
+       pGetMonitorInfo = (TGetMonitorInfo)GetProcAddress(user32_lib,
+                                                         "GetMonitorInfoA");
+      }
++ 
++ #ifdef FEAT_MBYTE
++     /* If the OS is Windows NT, use wide functions;
++      * this enables common dialogs input unicode from IME. */
++     if (os_version.dwPlatformId == VER_PLATFORM_WIN32_NT)
++     {
++      pDispatchMessage = DispatchMessageW;
++      pGetMessage = GetMessageW;
++      pIsDialogMessage = IsDialogMessageW;
++      pPeekMessage = PeekMessageW;
++     }
++     else
++     {
++      pDispatchMessage = DispatchMessageA;
++      pGetMessage = GetMessageA;
++      pIsDialogMessage = IsDialogMessageA;
++      pPeekMessage = PeekMessageA;
++     }
++ #endif
+  }
+  
+  /*
+*** ../vim-7.3.276/src/gui_w48.c       2010-10-20 21:22:17.000000000 +0200
+--- src/gui_w48.c      2011-08-10 16:49:39.000000000 +0200
+***************
+*** 390,396 ****
+      KillTimer(NULL, idEvent);
+  
+      /* Eat spurious WM_TIMER messages */
+!     while (PeekMessage(&msg, hwnd, WM_TIMER, WM_TIMER, PM_REMOVE))
+       ;
+  
+      if (blink_state == BLINK_ON)
+--- 390,396 ----
+      KillTimer(NULL, idEvent);
+  
+      /* Eat spurious WM_TIMER messages */
+!     while (pPeekMessage(&msg, hwnd, WM_TIMER, WM_TIMER, PM_REMOVE))
+       ;
+  
+      if (blink_state == BLINK_ON)
+***************
+*** 418,424 ****
+      {
+       KillTimer(NULL, blink_timer);
+       /* Eat spurious WM_TIMER messages */
+!      while (PeekMessage(&msg, s_hwnd, WM_TIMER, WM_TIMER, PM_REMOVE))
+           ;
+       blink_timer = 0;
+      }
+--- 418,424 ----
+      {
+       KillTimer(NULL, blink_timer);
+       /* Eat spurious WM_TIMER messages */
+!      while (pPeekMessage(&msg, s_hwnd, WM_TIMER, WM_TIMER, PM_REMOVE))
+           ;
+       blink_timer = 0;
+      }
+***************
+*** 476,482 ****
+      s_timed_out = TRUE;
+  
+      /* Eat spurious WM_TIMER messages */
+!     while (PeekMessage(&msg, hwnd, WM_TIMER, WM_TIMER, PM_REMOVE))
+       ;
+      if (idEvent == s_wait_timer)
+       s_wait_timer = 0;
+--- 476,482 ----
+      s_timed_out = TRUE;
+  
+      /* Eat spurious WM_TIMER messages */
+!     while (pPeekMessage(&msg, hwnd, WM_TIMER, WM_TIMER, PM_REMOVE))
+       ;
+      if (idEvent == s_wait_timer)
+       s_wait_timer = 0;
+***************
+*** 1707,1713 ****
+      static char_u k10[] = {K_SPECIAL, 'k', ';', 0};
+  #endif
+  
+!     GetMessage(&msg, NULL, 0, 0);
+  
+  #ifdef FEAT_OLE
+      /* Look after OLE Automation commands */
+--- 1707,1713 ----
+      static char_u k10[] = {K_SPECIAL, 'k', ';', 0};
+  #endif
+  
+!     pGetMessage(&msg, NULL, 0, 0);
+  
+  #ifdef FEAT_OLE
+      /* Look after OLE Automation commands */
+***************
+*** 1718,1724 ****
+       {
+           /* Message can't be ours, forward it.  Fixes problem with Ultramon
+            * 3.0.4 */
+!          DispatchMessage(&msg);
+       }
+       else
+       {
+--- 1718,1724 ----
+       {
+           /* Message can't be ours, forward it.  Fixes problem with Ultramon
+            * 3.0.4 */
+!          pDispatchMessage(&msg);
+       }
+       else
+       {
+***************
+*** 1749,1762 ****
+      if (msg.message == WM_USER)
+      {
+       MyTranslateMessage(&msg);
+!      DispatchMessage(&msg);
+       return;
+      }
+  #endif
+  
+  #ifdef MSWIN_FIND_REPLACE
+      /* Don't process messages used by the dialog */
+!     if (s_findrep_hwnd != NULL && IsDialogMessage(s_findrep_hwnd, &msg))
+      {
+       HandleMouseHide(msg.message, msg.lParam);
+       return;
+--- 1749,1762 ----
+      if (msg.message == WM_USER)
+      {
+       MyTranslateMessage(&msg);
+!      pDispatchMessage(&msg);
+       return;
+      }
+  #endif
+  
+  #ifdef MSWIN_FIND_REPLACE
+      /* Don't process messages used by the dialog */
+!     if (s_findrep_hwnd != NULL && pIsDialogMessage(s_findrep_hwnd, &msg))
+      {
+       HandleMouseHide(msg.message, msg.lParam);
+       return;
+***************
+*** 1928,1934 ****
+      if (vk != VK_F10 || check_map(k10, State, FALSE, TRUE, FALSE,
+                                                         NULL, NULL) == NULL)
+  #endif
+!      DispatchMessage(&msg);
+  }
+  
+  /*
+--- 1928,1934 ----
+      if (vk != VK_F10 || check_map(k10, State, FALSE, TRUE, FALSE,
+                                                         NULL, NULL) == NULL)
+  #endif
+!      pDispatchMessage(&msg);
+  }
+  
+  /*
+***************
+*** 1943,1949 ****
+      MSG          msg;
+  
+      if (!s_busy_processing)
+!      while (PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE)
+                                                 && !vim_is_input_buf_full())
+           process_message();
+  }
+--- 1943,1949 ----
+      MSG          msg;
+  
+      if (!s_busy_processing)
+!      while (pPeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE)
+                                                 && !vim_is_input_buf_full())
+           process_message();
+  }
+***************
+*** 2019,2025 ****
+               KillTimer(NULL, s_wait_timer);
+  
+               /* Eat spurious WM_TIMER messages */
+!              while (PeekMessage(&msg, s_hwnd, WM_TIMER, WM_TIMER, PM_REMOVE))
+                   ;
+               s_wait_timer = 0;
+           }
+--- 2019,2025 ----
+               KillTimer(NULL, s_wait_timer);
+  
+               /* Eat spurious WM_TIMER messages */
+!              while (pPeekMessage(&msg, s_hwnd, WM_TIMER, WM_TIMER, PM_REMOVE))
+                   ;
+               s_wait_timer = 0;
+           }
+*** ../vim-7.3.276/src/os_mswin.c      2011-06-19 01:30:01.000000000 +0200
+--- src/os_mswin.c     2011-08-10 16:45:24.000000000 +0200
+***************
+*** 1856,1867 ****
+  {
+      MSG msg;
+  
+!     while (!*bUserAbort && PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
+      {
+!      if (!hDlgPrint || !IsDialogMessage(hDlgPrint, &msg))
+       {
+           TranslateMessage(&msg);
+!          DispatchMessage(&msg);
+       }
+      }
+      return !*bUserAbort;
+--- 1856,1867 ----
+  {
+      MSG msg;
+  
+!     while (!*bUserAbort && pPeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
+      {
+!      if (!hDlgPrint || !pIsDialogMessage(hDlgPrint, &msg))
+       {
+           TranslateMessage(&msg);
+!          pDispatchMessage(&msg);
+       }
+      }
+      return !*bUserAbort;
+***************
+*** 3132,3141 ****
+  {
+      MSG msg;
+  
+!     while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
+      {
+       TranslateMessage(&msg);
+!      DispatchMessage(&msg);
+      }
+  }
+  
+--- 3132,3141 ----
+  {
+      MSG msg;
+  
+!     while (pPeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
+      {
+       TranslateMessage(&msg);
+!      pDispatchMessage(&msg);
+      }
+  }
+  
+*** ../vim-7.3.276/src/os_win32.c      2011-07-07 16:20:45.000000000 +0200
+--- src/os_win32.c     2011-08-10 16:54:50.000000000 +0200
+***************
+*** 152,157 ****
+--- 152,165 ----
+  # define wcsicmp(a, b) wcscmpi((a), (b))
+  #endif
+  
++ /* Enable common dialogs input unicode from IME if posible. */
++ #ifdef FEAT_MBYTE
++ LRESULT (WINAPI *pDispatchMessage)(LPMSG) = DispatchMessage;
++ BOOL (WINAPI *pGetMessage)(LPMSG, HWND, UINT, UINT) = GetMessage;
++ BOOL (WINAPI *pIsDialogMessage)(HWND, LPMSG) = IsDialogMessage;
++ BOOL (WINAPI *pPeekMessage)(LPMSG, HWND, UINT, UINT, UINT) = PeekMessage;
++ #endif
++ 
+  #ifndef FEAT_GUI_W32
+  /* Win32 Console handles for input and output */
+  static HANDLE g_hConIn  = INVALID_HANDLE_VALUE;
+***************
+*** 3284,3293 ****
+       {
+           MSG msg;
+  
+!          if (PeekMessage(&msg, (HWND)NULL, 0, 0, PM_REMOVE))
+           {
+               TranslateMessage(&msg);
+!              DispatchMessage(&msg);
+           }
+           if (WaitForSingleObject(pi.hProcess, delay) != WAIT_TIMEOUT)
+               break;
+--- 3292,3301 ----
+       {
+           MSG msg;
+  
+!          if (pPeekMessage(&msg, (HWND)NULL, 0, 0, PM_REMOVE))
+           {
+               TranslateMessage(&msg);
+!              pDispatchMessage(&msg);
+           }
+           if (WaitForSingleObject(pi.hProcess, delay) != WAIT_TIMEOUT)
+               break;
+*** ../vim-7.3.276/src/os_win32.h      2011-05-05 18:31:54.000000000 +0200
+--- src/os_win32.h     2011-08-10 16:51:58.000000000 +0200
+***************
+*** 193,195 ****
+--- 193,209 ----
+  #else
+  # define vim_mkdir(x, y) mch_mkdir(x)
+  #endif
++ 
++ /* Enable common dialogs input unicode from IME if posible. */
++ #ifdef FEAT_MBYTE
++     /* The variables are defined in os_win32.c. */
++ extern LRESULT (WINAPI *pDispatchMessage)(LPMSG);
++ extern BOOL (WINAPI *pGetMessage)(LPMSG, HWND, UINT, UINT);
++ extern BOOL (WINAPI *pIsDialogMessage)(HWND, LPMSG);
++ extern BOOL (WINAPI *pPeekMessage)(LPMSG, HWND, UINT, UINT, UINT);
++ #else
++ # define pDispatchMessage DispatchMessage
++ # define pGetMessage GetMessage
++ # define pIsDialogMessage IsDialogMessage
++ # define pPeekMessage PeekMessage
++ #endif
+*** ../vim-7.3.276/src/version.c       2011-08-10 16:31:18.000000000 +0200
+--- src/version.c      2011-08-10 17:06:55.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     277,
+  /**/
+
+-- 
+Veni, Vidi, VW -- I came, I saw, I drove around in a little car.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.278.patch0 b/vim/patches/vim-7.3.278.patch0
new file mode 100644 (file)
index 0000000..60bc0ac
--- /dev/null
@@ -0,0 +1,73 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.278
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.278
+Problem:    Passing the file name to open in VisVim doesn't work.
+Solution:   Adjust the index and check for end of buffer. (Jiri Sedlak)
+Files:     src/VisVim/Commands.cpp
+
+
+*** ../vim-7.3.277/src/VisVim/Commands.cpp     2010-08-15 21:57:27.000000000 +0200
+--- src/VisVim/Commands.cpp    2011-08-10 17:21:27.000000000 +0200
+***************
+*** 549,555 ****
+       if (g_bNewTabs)
+       {
+               sprintf(VimCmd, ":tab drop ");
+!              s = VimCmd + 11;
+       }
+       else
+       {
+--- 549,555 ----
+       if (g_bNewTabs)
+       {
+               sprintf(VimCmd, ":tab drop ");
+!              s = VimCmd + 10;
+       }
+       else
+       {
+***************
+*** 557,564 ****
+               s = VimCmd + 6;
+       }
+       sprintf(FileNameTmp, "%S", (char *)FileName);
+!      for (p = FileNameTmp; *p != '\0' && s < FileNameTmp + MAX_OLE_STR - 4;
+!                                                                        ++p)
+               if (*p == '\\')
+                       *s++ = '/';
+               else
+--- 557,563 ----
+               s = VimCmd + 6;
+       }
+       sprintf(FileNameTmp, "%S", (char *)FileName);
+!      for (p = FileNameTmp; *p != '\0' && s < VimCmd + MAX_OLE_STR - 4; ++p)
+               if (*p == '\\')
+                       *s++ = '/';
+               else
+*** ../vim-7.3.277/src/version.c       2011-08-10 17:07:56.000000000 +0200
+--- src/version.c      2011-08-10 17:25:20.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     278,
+  /**/
+
+-- 
+ARTHUR:          But if he was dying, he wouldn't bother to carve
+                 "Aaaaarrrrrrggghhh".  He'd just say it.
+BROTHER MAYNARD: It's down there carved in stone.
+GALAHAD:         Perhaps he was dictating.
+                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.279.patch0 b/vim/patches/vim-7.3.279.patch0
new file mode 100644 (file)
index 0000000..6a8814b
--- /dev/null
@@ -0,0 +1,118 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.279
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.279
+Problem:    With GTK, when gvim is full-screen and a tab is opened and using a
+           specific monitor configuration the window is too big.
+Solution:   Adjust the window size like on MS-Windows. (Yukihiro Nakadaira)
+Files:     src/gui.c, src/gui_gtk_x11.c, src/proto/gui_gtk_x11.pro
+
+
+*** ../vim-7.3.278/src/gui.c   2011-06-26 04:48:56.000000000 +0200
+--- src/gui.c  2011-08-10 17:40:31.000000000 +0200
+***************
+*** 1407,1413 ****
+      if (!gui.shell_created)
+       return;
+  
+! #ifdef MSWIN
+      /* If not setting to a user specified size and maximized, calculate the
+       * number of characters that fit in the maximized window. */
+      if (!mustset && gui_mch_maximized())
+--- 1407,1413 ----
+      if (!gui.shell_created)
+       return;
+  
+! #if defined(MSWIN) || defined(FEAT_GUI_GTK)
+      /* If not setting to a user specified size and maximized, calculate the
+       * number of characters that fit in the maximized window. */
+      if (!mustset && gui_mch_maximized())
+*** ../vim-7.3.278/src/gui_gtk_x11.c   2011-06-26 04:48:56.000000000 +0200
+--- src/gui_gtk_x11.c  2011-08-10 17:42:19.000000000 +0200
+***************
+*** 3900,3905 ****
+--- 3900,3920 ----
+  }
+  
+  /*
++  * Called when the font changed while the window is maximized.  Compute the
++  * new Rows and Columns.  This is like resizing the window.
++  */
++     void
++ gui_mch_newfont()
++ {
++     int w, h;
++ 
++     gtk_window_get_size(GTK_WINDOW(gui.mainwin), &w, &h);
++     w -= get_menu_tool_width();
++     h -= get_menu_tool_height();
++     gui_resize_shell(w, h);
++ }
++ 
++ /*
+   * Set the windows size.
+   */
+      void
+***************
+*** 4409,4422 ****
+  
+      if (gui_mch_maximized())
+      {
+-      int w, h;
+- 
+       /* Update lines and columns in accordance with the new font, keep the
+        * window maximized. */
+!      gtk_window_get_size(GTK_WINDOW(gui.mainwin), &w, &h);
+!      w -= get_menu_tool_width();
+!      h -= get_menu_tool_height();
+!      gui_resize_shell(w, h);
+      }
+      else
+      {
+--- 4424,4432 ----
+  
+      if (gui_mch_maximized())
+      {
+       /* Update lines and columns in accordance with the new font, keep the
+        * window maximized. */
+!      gui_mch_newfont();
+      }
+      else
+      {
+*** ../vim-7.3.278/src/proto/gui_gtk_x11.pro   2010-08-15 21:57:28.000000000 +0200
+--- src/proto/gui_gtk_x11.pro  2011-08-10 17:42:29.000000000 +0200
+***************
+*** 20,25 ****
+--- 20,26 ----
+  void gui_mch_set_winpos __ARGS((int x, int y));
+  int gui_mch_maximized __ARGS((void));
+  void gui_mch_unmaximize __ARGS((void));
++ void gui_mch_newfont __ARGS((void));
+  void gui_mch_set_shellsize __ARGS((int width, int height, int min_width, int min_height, int base_width, int base_height, int direction));
+  void gui_mch_get_screen_dimensions __ARGS((int *screen_w, int *screen_h));
+  void gui_mch_settitle __ARGS((char_u *title, char_u *icon));
+*** ../vim-7.3.278/src/version.c       2011-08-10 17:25:48.000000000 +0200
+--- src/version.c      2011-08-10 17:43:22.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     279,
+  /**/
+
+-- 
+LAUNCELOT: Isn't there a St. Aaaaarrrrrrggghhh's in Cornwall?
+ARTHUR:    No, that's Saint Ives.
+                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.280.patch0 b/vim/patches/vim-7.3.280.patch0
new file mode 100644 (file)
index 0000000..1c1387a
--- /dev/null
@@ -0,0 +1,181 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.280
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.280
+Problem:    ":lmake" does not update the quickfix window title.
+Solution:   Update the title. (Lech Lorens)
+Files:     src/quickfix.c, src/testdir/test10.in, src/testdir/test10.ok
+
+
+*** ../vim-7.3.279/src/quickfix.c      2011-08-10 13:21:30.000000000 +0200
+--- src/quickfix.c     2011-08-10 18:09:19.000000000 +0200
+***************
+*** 126,131 ****
+--- 126,132 ----
+  static win_T *qf_find_win __ARGS((qf_info_T *qi));
+  static buf_T *qf_find_buf __ARGS((qf_info_T *qi));
+  static void  qf_update_buffer __ARGS((qf_info_T *qi));
++ static void  qf_set_title __ARGS((qf_info_T *qi));
+  static void  qf_fill_buffer __ARGS((qf_info_T *qi));
+  #endif
+  static char_u        *get_mef_name __ARGS((void));
+***************
+*** 2388,2395 ****
+      qf_fill_buffer(qi);
+  
+      if (qi->qf_lists[qi->qf_curlist].qf_title != NULL)
+!      set_internal_string_var((char_u *)"w:quickfix_title",
+!                                     qi->qf_lists[qi->qf_curlist].qf_title);
+  
+      curwin->w_cursor.lnum = qi->qf_lists[qi->qf_curlist].qf_index;
+      curwin->w_cursor.col = 0;
+--- 2389,2395 ----
+      qf_fill_buffer(qi);
+  
+      if (qi->qf_lists[qi->qf_curlist].qf_title != NULL)
+!      qf_set_title(qi);
+  
+      curwin->w_cursor.lnum = qi->qf_lists[qi->qf_curlist].qf_index;
+      curwin->w_cursor.col = 0;
+***************
+*** 2526,2531 ****
+--- 2526,2533 ----
+      qf_info_T        *qi;
+  {
+      buf_T    *buf;
++     win_T    *win;
++     win_T    *curwin_save;
+      aco_save_T       aco;
+  
+      /* Check if a buffer for the quickfix list exists.  Update it. */
+***************
+*** 2537,2542 ****
+--- 2539,2554 ----
+  
+       qf_fill_buffer(qi);
+  
++      if (qi->qf_lists[qi->qf_curlist].qf_title != NULL
++          && (win = qf_find_win(qi)) != NULL)
++      {
++          curwin_save = curwin;
++          curwin = win;
++          qf_set_title(qi);
++          curwin = curwin_save;
++ 
++      }
++ 
+       /* restore curwin/curbuf and a few other things */
+       aucmd_restbuf(&aco);
+  
+***************
+*** 2544,2549 ****
+--- 2556,2569 ----
+      }
+  }
+  
++     static void
++ qf_set_title(qi)
++     qf_info_T        *qi;
++ {
++     set_internal_string_var((char_u *)"w:quickfix_title",
++                                  qi->qf_lists[qi->qf_curlist].qf_title);
++ }
++ 
+  /*
+   * Fill current buffer with quickfix errors, replacing any previous contents.
+   * curbuf must be the quickfix buffer!
+*** ../vim-7.3.279/src/testdir/test10.in       2011-08-10 13:21:30.000000000 +0200
+--- src/testdir/test10.in      2011-08-10 18:28:31.000000000 +0200
+***************
+*** 5,13 ****
+  :" Also test a BOM is ignored.
+  :so mbyte.vim
+  :set encoding=utf-8
+! :/start of errorfile/,/end of errorfile/w! Xerrorfile
+  :/start of testfile/,/end of testfile/w! Xtestfile
+! :cf Xerrorfile
+  rA
+  :cn
+  rB
+--- 5,20 ----
+  :" Also test a BOM is ignored.
+  :so mbyte.vim
+  :set encoding=utf-8
+! :7/start of errorfile/,/end of errorfile/w! Xerrorfile1
+! :7/start of errorfile/,/end of errorfile/-1w! Xerrorfile2
+  :/start of testfile/,/end of testfile/w! Xtestfile
+! :cf Xerrorfile2
+! :clast
+! :copen
+! :let a=w:quickfix_title
+! :wincmd p
+! gR\12=a\r\e
+! :cf Xerrorfile1
+  rA
+  :cn
+  rB
+***************
+*** 17,22 ****
+--- 24,34 ----
+  rD
+  :cn
+  rE
++ :cn
++ :wincmd w
++ :let a=w:quickfix_title
++ :wincmd p
++ gR\12=a\r\e
+  :w! test.out             " Write contents of this file
+  :qa!
+  ENDTEST
+***************
+*** 33,38 ****
+--- 45,52 ----
+  "Xtestfile", linenr 19: yet another problem
+  
+  Does anyone know what is the problem and how to correction it?
++ "Xtestfile", line 21 col 9: What is the title of the quickfix window?
++ "Xtestfile", line 22 col 9: What is the title of the quickfix window?
+  end of errorfile
+  
+  start of testfile
+*** ../vim-7.3.279/src/testdir/test10.ok       2010-08-15 21:57:29.000000000 +0200
+--- src/testdir/test10.ok      2011-08-10 18:03:53.000000000 +0200
+***************
+*** 18,23 ****
+  line 18 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+  Eine 19 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+  line 20 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+! line 21 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+! line 22 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+  end of testfile
+--- 18,23 ----
+  line 18 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+  Eine 19 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+  line 20 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+! line 21 :cf Xerrorfile1xxxxxxxxxxxxxxx
+! line 22 :cf Xerrorfile2xxxxxxxxxxxxxxx
+  end of testfile
+*** ../vim-7.3.279/src/version.c       2011-08-10 17:44:41.000000000 +0200
+--- src/version.c      2011-08-10 18:35:52.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     280,
+  /**/
+
+-- 
+"When I die, I want a tombstone that says "GAME OVER" - Ton Richters
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.281.patch0 b/vim/patches/vim-7.3.281.patch0
new file mode 100644 (file)
index 0000000..f90e95e
--- /dev/null
@@ -0,0 +1,134 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.281
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.281
+Problem:    After using "expand('%:8')" the buffer name is changed.
+Solution:   Make a copy of the file name before shortening it.
+Files:     src/eval.c
+
+
+*** ../vim-7.3.280/src/eval.c  2011-08-10 12:38:02.000000000 +0200
+--- src/eval.c 2011-08-17 15:12:39.000000000 +0200
+***************
+*** 23205,23210 ****
+--- 23205,23211 ----
+      int              c;
+      int              has_fullname = 0;
+  #ifdef WIN3264
++     char_u   *fname_start = *fnamep;
+      int              has_shortname = 0;
+  #endif
+  
+***************
+*** 23379,23402 ****
+      }
+  
+  #ifdef WIN3264
+!     /* Check shortname after we have done 'heads' and before we do 'tails'
+       */
+      if (has_shortname)
+      {
+!      pbuf = NULL;
+!      /* Copy the string if it is shortened by :h */
+!      if (*fnamelen < (int)STRLEN(*fnamep))
+       {
+           p = vim_strnsave(*fnamep, *fnamelen);
+!          if (p == 0)
+               return -1;
+           vim_free(*bufp);
+           *bufp = *fnamep = p;
+       }
+  
+       /* Split into two implementations - makes it easier.  First is where
+!       * there isn't a full name already, second is where there is.
+!       */
+       if (!has_fullname && !vim_isAbsName(*fnamep))
+       {
+           if (shortpath_for_partial(fnamep, bufp, fnamelen) == FAIL)
+--- 23380,23404 ----
+      }
+  
+  #ifdef WIN3264
+!     /*
+!      * Handle ":8" after we have done 'heads' and before we do 'tails'.
+       */
+      if (has_shortname)
+      {
+!      /* Copy the string if it is shortened by :h and when it wasn't copied
+!       * yet, because we are going to change it in place.  Avoids changing
+!       * the buffer name for "%:8". */
+!      if (*fnamelen < (int)STRLEN(*fnamep) || *fnamep == fname_start)
+       {
+           p = vim_strnsave(*fnamep, *fnamelen);
+!          if (p == NULL)
+               return -1;
+           vim_free(*bufp);
+           *bufp = *fnamep = p;
+       }
+  
+       /* Split into two implementations - makes it easier.  First is where
+!       * there isn't a full name already, second is where there is. */
+       if (!has_fullname && !vim_isAbsName(*fnamep))
+       {
+           if (shortpath_for_partial(fnamep, bufp, fnamelen) == FAIL)
+***************
+*** 23404,23421 ****
+       }
+       else
+       {
+!          int         l;
+  
+!          /* Simple case, already have the full-name
+            * Nearly always shorter, so try first time. */
+-          l = *fnamelen;
+           if (get_short_pathname(fnamep, bufp, &l) == FAIL)
+               return -1;
+  
+           if (l == 0)
+           {
+!              /* Couldn't find the filename.. search the paths.
+!               */
+               l = *fnamelen;
+               if (shortpath_for_invalid_fname(fnamep, bufp, &l) == FAIL)
+                   return -1;
+--- 23406,23421 ----
+       }
+       else
+       {
+!          int         l = *fnamelen;
+  
+!          /* Simple case, already have the full-name.
+            * Nearly always shorter, so try first time. */
+           if (get_short_pathname(fnamep, bufp, &l) == FAIL)
+               return -1;
+  
+           if (l == 0)
+           {
+!              /* Couldn't find the filename, search the paths. */
+               l = *fnamelen;
+               if (shortpath_for_invalid_fname(fnamep, bufp, &l) == FAIL)
+                   return -1;
+*** ../vim-7.3.280/src/version.c       2011-08-10 18:36:49.000000000 +0200
+--- src/version.c      2011-08-17 15:21:41.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     281,
+  /**/
+
+-- 
+Kisses may last for as much as, but no more than, five minutes.
+               [real standing law in Iowa, United States of America]
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.282.patch0 b/vim/patches/vim-7.3.282.patch0
new file mode 100644 (file)
index 0000000..dcd1680
--- /dev/null
@@ -0,0 +1,60 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.282
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.282
+Problem:    When using input() and :echo in a loop the displayed text is
+           incorrect. (Benjamin Fritz)
+Solution:   Only restore the cursor position when there is a command line.
+           (Ben Schmidt)
+Files:     src/ex_getln.c
+
+
+*** ../vim-7.3.281/src/ex_getln.c      2011-07-27 17:58:42.000000000 +0200
+--- src/ex_getln.c     2011-08-17 15:57:39.000000000 +0200
+***************
+*** 1969,1976 ****
+  # endif
+      s = getcmdline(firstc, 1L, 0);
+      restore_cmdline(&save_ccline);
+!     /* Restore msg_col, the prompt from input() may have changed it. */
+!     msg_col = msg_col_save;
+  
+      return s;
+  }
+--- 1969,1980 ----
+  # endif
+      s = getcmdline(firstc, 1L, 0);
+      restore_cmdline(&save_ccline);
+!     /* Restore msg_col, the prompt from input() may have changed it.
+!      * But only if called recursively and the commandline is therefore being
+!      * restored to an old one; if not, the input() prompt stays on the screen,
+!      * so we need its modified msg_col left intact. */
+!     if (ccline.cmdbuff != NULL)
+!      msg_col = msg_col_save;
+  
+      return s;
+  }
+*** ../vim-7.3.281/src/version.c       2011-08-17 15:23:16.000000000 +0200
+--- src/version.c      2011-08-17 16:24:04.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     282,
+  /**/
+
+-- 
+Why don't cannibals eat clowns?
+Because they taste funny.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.283.patch0 b/vim/patches/vim-7.3.283.patch0
new file mode 100644 (file)
index 0000000..1a3a635
--- /dev/null
@@ -0,0 +1,114 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.283
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.283
+Problem:    An expression mapping with a multi-byte character containing a
+           0x80 byte gets messed up. (ZyX)
+Solution:   Unescape the expression before evaluating it (Yukihiro Nakadaira)
+Files:     src/getchar.c
+
+
+*** ../vim-7.3.282/src/getchar.c       2011-04-28 17:30:05.000000000 +0200
+--- src/getchar.c      2011-08-17 17:04:38.000000000 +0200
+***************
+*** 3262,3270 ****
+      validate_maphash();
+  
+      /*
+!      * find end of keys and skip CTRL-Vs (and backslashes) in it
+       * Accept backslash like CTRL-V when 'cpoptions' does not contain 'B'.
+!      * with :unmap white space is included in the keys, no argument possible
+       */
+      p = keys;
+      do_backslash = (vim_strchr(p_cpo, CPO_BSLASH) == NULL);
+--- 3262,3270 ----
+      validate_maphash();
+  
+      /*
+!      * Find end of keys and skip CTRL-Vs (and backslashes) in it.
+       * Accept backslash like CTRL-V when 'cpoptions' does not contain 'B'.
+!      * with :unmap white space is included in the keys, no argument possible.
+       */
+      p = keys;
+      do_backslash = (vim_strchr(p_cpo, CPO_BSLASH) == NULL);
+***************
+*** 4506,4517 ****
+--- 4506,4528 ----
+  {
+      char_u   *res;
+      char_u   *p;
++     char_u   *expr;
+      char_u   *save_cmd;
+      pos_T    save_cursor;
+  
++     /* Remove escaping of CSI, because "str" is in a format to be used as
++      * typeahead. */
++     expr = vim_strsave(str);
++     if (expr == NULL)
++      return NULL;
++     vim_unescape_csi(expr);
++ 
+      save_cmd = save_cmdline_alloc();
+      if (save_cmd == NULL)
++     {
++      vim_free(expr);
+       return NULL;
++     }
+  
+      /* Forbid changing text or using ":normal" to avoid most of the bad side
+       * effects.  Also restore the cursor position. */
+***************
+*** 4521,4527 ****
+  #endif
+      set_vim_var_char(c);  /* set v:char to the typed character */
+      save_cursor = curwin->w_cursor;
+!     p = eval_to_string(str, NULL, FALSE);
+      --textlock;
+  #ifdef FEAT_EX_EXTRA
+      --ex_normal_lock;
+--- 4532,4538 ----
+  #endif
+      set_vim_var_char(c);  /* set v:char to the typed character */
+      save_cursor = curwin->w_cursor;
+!     p = eval_to_string(expr, NULL, FALSE);
+      --textlock;
+  #ifdef FEAT_EX_EXTRA
+      --ex_normal_lock;
+***************
+*** 4529,4536 ****
+--- 4540,4550 ----
+      curwin->w_cursor = save_cursor;
+  
+      restore_cmdline_alloc(save_cmd);
++     vim_free(expr);
++ 
+      if (p == NULL)
+       return NULL;
++     /* Escape CSI in the result to be able to use the string as typeahead. */
+      res = vim_strsave_escape_csi(p);
+      vim_free(p);
+  
+*** ../vim-7.3.282/src/version.c       2011-08-17 16:25:43.000000000 +0200
+--- src/version.c      2011-08-17 17:17:03.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     283,
+  /**/
+
+-- 
+bashian roulette:
+$ ((RANDOM%6)) || rm -rf ~
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.284.patch0 b/vim/patches/vim-7.3.284.patch0
new file mode 100644 (file)
index 0000000..c621ced
--- /dev/null
@@ -0,0 +1,211 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.284
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.284
+Problem:    The str2special() function doesn't handle multi-byte characters
+           properly.
+Solution:   Recognize multi-byte characters. (partly by Vladimir Vichniakov)
+Files:     src/getchar.c, src/message.c, src/misc2.c
+
+
+*** ../vim-7.3.283/src/getchar.c       2011-08-17 17:18:14.000000000 +0200
+--- src/getchar.c      2011-08-17 20:11:58.000000000 +0200
+***************
+*** 3964,3970 ****
+      if (*mp->m_str == NUL)
+       msg_puts_attr((char_u *)"<Nop>", hl_attr(HLF_8));
+      else
+!      msg_outtrans_special(mp->m_str, FALSE);
+  #ifdef FEAT_EVAL
+      if (p_verbose > 0)
+       last_set_msg(mp->m_script_ID);
+--- 3964,3980 ----
+      if (*mp->m_str == NUL)
+       msg_puts_attr((char_u *)"<Nop>", hl_attr(HLF_8));
+      else
+!     {
+!      /* Remove escaping of CSI, because "m_str" is in a format to be used
+!       * as typeahead. */
+!      char_u *s = vim_strsave(mp->m_str);
+!      if (s != NULL)
+!      {
+!          vim_unescape_csi(s);
+!          msg_outtrans_special(s, FALSE);
+!          vim_free(s);
+!      }
+!     }
+  #ifdef FEAT_EVAL
+      if (p_verbose > 0)
+       last_set_msg(mp->m_script_ID);
+*** ../vim-7.3.283/src/message.c       2011-03-22 13:07:19.000000000 +0100
+--- src/message.c      2011-08-17 18:40:10.000000000 +0200
+***************
+*** 1547,1562 ****
+       if (IS_SPECIAL(c) || modifiers) /* special key */
+           special = TRUE;
+      }
+-     *sp = str + 1;
+  
+  #ifdef FEAT_MBYTE
+!     /* For multi-byte characters check for an illegal byte. */
+!     if (has_mbyte && MB_BYTE2LEN(*str) > (*mb_ptr2len)(str))
+      {
+!      transchar_nonprint(buf, c);
+!      return buf;
+      }
+  #endif
+  
+      /* Make unprintable characters in <> form, also <M-Space> and <Tab>.
+       * Use <Space> only for lhs of a mapping. */
+--- 1547,1573 ----
+       if (IS_SPECIAL(c) || modifiers) /* special key */
+           special = TRUE;
+      }
+  
+  #ifdef FEAT_MBYTE
+!     if (has_mbyte && !IS_SPECIAL(c))
+      {
+!         int len = (*mb_ptr2len)(str);
+! 
+!      /* For multi-byte characters check for an illegal byte. */
+!      if (has_mbyte && MB_BYTE2LEN(*str) > len)
+!      {
+!          transchar_nonprint(buf, c);
+!          *sp = str + 1;
+!          return buf;
+!      }
+!         /* Since 'special' is TRUE the multi-byte character 'c' will be
+!          * processed by get_special_key_name() */
+!         c = (*mb_ptr2char)(str);
+!         *sp = str + len;
+      }
++     else
+  #endif
++      *sp = str + 1;
+  
+      /* Make unprintable characters in <> form, also <M-Space> and <Tab>.
+       * Use <Space> only for lhs of a mapping. */
+*** ../vim-7.3.283/src/misc2.c 2011-07-27 17:31:42.000000000 +0200
+--- src/misc2.c        2011-08-17 20:27:30.000000000 +0200
+***************
+*** 2754,2759 ****
+--- 2754,2760 ----
+      int              bit;
+      int              key;
+      unsigned long n;
++     int              l;
+  
+      src = *srcp;
+      if (src[0] != '<')
+***************
+*** 2766,2773 ****
+       if (*bp == '-')
+       {
+           last_dash = bp;
+!          if (bp[1] != NUL && bp[2] == '>')
+!              ++bp;   /* anything accepted, like <C-?> */
+       }
+       if (bp[0] == 't' && bp[1] == '_' && bp[2] && bp[3])
+           bp += 3;    /* skip t_xx, xx may be '-' or '>' */
+--- 2767,2783 ----
+       if (*bp == '-')
+       {
+           last_dash = bp;
+!          if (bp[1] != NUL)
+!          {
+! #ifdef FEAT_MBYTE
+!              if (has_mbyte)
+!                  l = mb_ptr2len(bp + 1);
+!              else
+! #endif
+!                  l = 1;
+!              if (bp[l + 1] == '>')
+!                  bp += l;    /* anything accepted, like <C-?> */
+!          }
+       }
+       if (bp[0] == 't' && bp[1] == '_' && bp[2] && bp[3])
+           bp += 3;    /* skip t_xx, xx may be '-' or '>' */
+***************
+*** 2777,2791 ****
+      {
+       end_of_name = bp + 1;
+  
+-      if (STRNICMP(src + 1, "char-", 5) == 0 && VIM_ISDIGIT(src[6]))
+-      {
+-          /* <Char-123> or <Char-033> or <Char-0x33> */
+-          vim_str2nr(src + 6, NULL, NULL, TRUE, TRUE, NULL, &n);
+-          *modp = 0;
+-          *srcp = end_of_name;
+-          return (int)n;
+-      }
+- 
+       /* Which modifiers are given? */
+       modifiers = 0x0;
+       for (bp = src + 1; bp < last_dash; bp++)
+--- 2787,2792 ----
+***************
+*** 2804,2814 ****
+        */
+       if (bp >= last_dash)
+       {
+           /*
+            * Modifier with single letter, or special key name.
+            */
+!          if (modifiers != 0 && last_dash[2] == '>')
+!              key = last_dash[1];
+           else
+           {
+               key = get_special_key_code(last_dash + 1);
+--- 2805,2831 ----
+        */
+       if (bp >= last_dash)
+       {
++          if (STRNICMP(last_dash + 1, "char-", 5) == 0
++                                               && VIM_ISDIGIT(last_dash[6]))
++          {
++              /* <Char-123> or <Char-033> or <Char-0x33> */
++              vim_str2nr(last_dash + 6, NULL, NULL, TRUE, TRUE, NULL, &n);
++              *modp = modifiers;
++              *srcp = end_of_name;
++              return (int)n;
++          }
++ 
+           /*
+            * Modifier with single letter, or special key name.
+            */
+! #ifdef FEAT_MBYTE
+!          if (has_mbyte)
+!              l = mb_ptr2len(last_dash + 1);
+!          else
+! #endif
+!              l = 1;
+!          if (modifiers != 0 && last_dash[l + 1] == '>')
+!              key = PTR2CHAR(last_dash + 1);
+           else
+           {
+               key = get_special_key_code(last_dash + 1);
+*** ../vim-7.3.283/src/version.c       2011-08-17 17:18:14.000000000 +0200
+--- src/version.c      2011-08-17 20:27:47.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     284,
+  /**/
+
+-- 
+Snoring is prohibited unless all bedroom windows are closed and securely
+locked.
+               [real standing law in Massachusetts, United States of America]
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.285.patch0 b/vim/patches/vim-7.3.285.patch0
new file mode 100644 (file)
index 0000000..24be28b
--- /dev/null
@@ -0,0 +1,144 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.285
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.285 (after 7.3.284)
+Problem:    Mapping <Char-123> no longer works.
+Solution:   Properly check for "char-".  Add a test for it.
+Files:     src/misc2.c, src/testdir/test75.in, src/testdir/test75.ok
+
+
+*** ../vim-7.3.284/src/misc2.c 2011-08-17 20:33:18.000000000 +0200
+--- src/misc2.c        2011-08-19 22:08:37.000000000 +0200
+***************
+*** 2781,2786 ****
+--- 2781,2792 ----
+       }
+       if (bp[0] == 't' && bp[1] == '_' && bp[2] && bp[3])
+           bp += 3;    /* skip t_xx, xx may be '-' or '>' */
++      else if (STRNICMP(bp, "char-", 5) == 0)
++      {
++          vim_str2nr(bp + 5, NULL, &l, TRUE, TRUE, NULL, NULL);
++          bp += l + 5;
++          break;
++      }
+      }
+  
+      if (*bp == '>')  /* found matching '>' */
+***************
+*** 2810,2836 ****
+           {
+               /* <Char-123> or <Char-033> or <Char-0x33> */
+               vim_str2nr(last_dash + 6, NULL, NULL, TRUE, TRUE, NULL, &n);
+!              *modp = modifiers;
+!              *srcp = end_of_name;
+!              return (int)n;
+           }
+- 
+-          /*
+-           * Modifier with single letter, or special key name.
+-           */
+- #ifdef FEAT_MBYTE
+-          if (has_mbyte)
+-              l = mb_ptr2len(last_dash + 1);
+-          else
+- #endif
+-              l = 1;
+-          if (modifiers != 0 && last_dash[l + 1] == '>')
+-              key = PTR2CHAR(last_dash + 1);
+           else
+           {
+!              key = get_special_key_code(last_dash + 1);
+!              if (!keep_x_key)
+!                  key = handle_x_keys(key);
+           }
+  
+           /*
+--- 2816,2842 ----
+           {
+               /* <Char-123> or <Char-033> or <Char-0x33> */
+               vim_str2nr(last_dash + 6, NULL, NULL, TRUE, TRUE, NULL, &n);
+!              key = (int)n;
+           }
+           else
+           {
+!              /*
+!               * Modifier with single letter, or special key name.
+!               */
+! #ifdef FEAT_MBYTE
+!              if (has_mbyte)
+!                  l = mb_ptr2len(last_dash + 1);
+!              else
+! #endif
+!                  l = 1;
+!              if (modifiers != 0 && last_dash[l + 1] == '>')
+!                  key = PTR2CHAR(last_dash + 1);
+!              else
+!              {
+!                  key = get_special_key_code(last_dash + 1);
+!                  if (!keep_x_key)
+!                      key = handle_x_keys(key);
+!              }
+           }
+  
+           /*
+*** ../vim-7.3.284/src/testdir/test75.in       2010-10-20 21:22:17.000000000 +0200
+--- src/testdir/test75.in      2011-08-19 22:05:13.000000000 +0200
+***************
+*** 2,7 ****
+--- 2,8 ----
+  
+  STARTTEST
+  :so small.vim
++ :set cpo-=<
+  :" Test maparg() with a string result
+  :map foo<C-V> is<F4>foo
+  :vnoremap <script> <buffer> <expr> <silent> bar isbar
+***************
+*** 9,14 ****
+--- 10,20 ----
+  :call append('$', string(maparg('foo<C-V>', '', 0, 1)))
+  :call append('$', string(maparg('bar', '', 0, 1)))
+  :"
++ :map abc x<char-114>x
++ :call append('$', maparg('abc'))
++ :map abc y<S-char-114>y
++ :call append('$', maparg('abc'))
++ :"
+  :/^eof/+1,$w! test.out
+  :qa!
+  ENDTEST
+*** ../vim-7.3.284/src/testdir/test75.ok       2010-10-20 21:22:17.000000000 +0200
+--- src/testdir/test75.ok      2011-08-19 21:53:26.000000000 +0200
+***************
+*** 1,3 ****
+--- 1,5 ----
+  is<F4>foo
+  {'silent': 0, 'noremap': 0, 'lhs': 'foo<C-V>', 'mode': ' ', 'expr': 0, 'sid': 0, 'rhs': 'is<F4>foo', 'buffer': 0}
+  {'silent': 1, 'noremap': 1, 'lhs': 'bar', 'mode': 'v', 'expr': 1, 'sid': 0, 'rhs': 'isbar', 'buffer': 1}
++ xrx
++ yRy
+*** ../vim-7.3.284/src/version.c       2011-08-17 20:33:18.000000000 +0200
+--- src/version.c      2011-08-19 22:15:22.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     285,
+  /**/
+
+
+-- 
+No man may purchase alcohol without written consent from his wife.
+               [real standing law in Pennsylvania, United States of America]
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.286.patch0 b/vim/patches/vim-7.3.286.patch0
new file mode 100644 (file)
index 0000000..308d510
--- /dev/null
@@ -0,0 +1,84 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.286
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.286
+Problem:    Crash when using "zd" on a large number of folds. (Sam King)
+Solution:   Recompute pointer after reallocating array.  Move fewer entries
+           when making room.
+Files:     src/fold.c
+
+
+*** ../vim-7.3.285/src/fold.c  2010-08-15 21:57:27.000000000 +0200
+--- src/fold.c 2011-08-26 16:03:56.000000000 +0200
+***************
+*** 1469,1479 ****
+      }
+      else
+      {
+!      /* move nested folds one level up, to overwrite the fold that is
+        * deleted. */
+       moved = fp->fd_nested.ga_len;
+       if (ga_grow(gap, (int)(moved - 1)) == OK)
+       {
+           /* adjust fd_top and fd_flags for the moved folds */
+           nfp = (fold_T *)fp->fd_nested.ga_data;
+           for (i = 0; i < moved; ++i)
+--- 1469,1482 ----
+      }
+      else
+      {
+!      /* Move nested folds one level up, to overwrite the fold that is
+        * deleted. */
+       moved = fp->fd_nested.ga_len;
+       if (ga_grow(gap, (int)(moved - 1)) == OK)
+       {
++          /* Get "fp" again, the array may have been reallocated. */
++          fp = (fold_T *)gap->ga_data + idx;
++ 
+           /* adjust fd_top and fd_flags for the moved folds */
+           nfp = (fold_T *)fp->fd_nested.ga_data;
+           for (i = 0; i < moved; ++i)
+***************
+*** 1486,1494 ****
+           }
+  
+           /* move the existing folds down to make room */
+!          if (idx < gap->ga_len)
+               mch_memmove(fp + moved, fp + 1,
+!                                      sizeof(fold_T) * (gap->ga_len - idx));
+           /* move the contained folds one level up */
+           mch_memmove(fp, nfp, (size_t)(sizeof(fold_T) * moved));
+           vim_free(nfp);
+--- 1489,1497 ----
+           }
+  
+           /* move the existing folds down to make room */
+!          if (idx + 1 < gap->ga_len)
+               mch_memmove(fp + moved, fp + 1,
+!                                sizeof(fold_T) * (gap->ga_len - (idx + 1)));
+           /* move the contained folds one level up */
+           mch_memmove(fp, nfp, (size_t)(sizeof(fold_T) * moved));
+           vim_free(nfp);
+*** ../vim-7.3.285/src/version.c       2011-08-19 22:28:58.000000000 +0200
+--- src/version.c      2011-08-26 16:07:59.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     286,
+  /**/
+
+-- 
+To keep milk from turning sour: Keep it in the cow.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.287.patch0 b/vim/patches/vim-7.3.287.patch0
new file mode 100644 (file)
index 0000000..5c6da03
--- /dev/null
@@ -0,0 +1,100 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.287
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.287
+Problem:    Can't compile with MSVC and tiny options.
+Solution:   Move variables and #ifdefs. (Sergey Khorev)
+Files:     src/os_win32.c
+
+
+*** ../vim-7.3.286/src/os_win32.c      2011-08-10 17:07:56.000000000 +0200
+--- src/os_win32.c     2011-08-27 15:07:28.000000000 +0200
+***************
+*** 3419,3426 ****
+  {
+      DWORD    availableBytes = 0;
+      DWORD    i;
+-     int              c;
+-     char_u   *p;
+      int              ret;
+      DWORD    len;
+      DWORD    toRead;
+--- 3419,3424 ----
+***************
+*** 3479,3484 ****
+--- 3477,3484 ----
+       else if (has_mbyte)
+       {
+           int         l;
++          int         c;
++          char_u      *p;
+  
+           len += *buffer_off;
+           buffer[len] = NUL;
+***************
+*** 3558,3566 ****
+      int              noread_cnt = 0;
+      garray_T ga;
+      int          delay = 1;
+- # ifdef FEAT_MBYTE
+      DWORD    buffer_off = 0; /* valid bytes in buffer[] */
+- # endif
+  
+      SECURITY_ATTRIBUTES saAttr;
+  
+--- 3558,3564 ----
+***************
+*** 3777,3790 ****
+  
+       if (WaitForSingleObject(pi.hProcess, delay) != WAIT_TIMEOUT)
+       {
+!          dump_pipe(options, g_hChildStd_OUT_Rd,
+!                      &ga, buffer, &buffer_off);
+           break;
+       }
+  
+       ++noread_cnt;
+!      dump_pipe(options, g_hChildStd_OUT_Rd,
+!                  &ga, buffer, &buffer_off);
+  
+       /* We start waiting for a very short time and then increase it, so
+        * that we respond quickly when the process is quick, and don't
+--- 3775,3786 ----
+  
+       if (WaitForSingleObject(pi.hProcess, delay) != WAIT_TIMEOUT)
+       {
+!          dump_pipe(options, g_hChildStd_OUT_Rd, &ga, buffer, &buffer_off);
+           break;
+       }
+  
+       ++noread_cnt;
+!      dump_pipe(options, g_hChildStd_OUT_Rd, &ga, buffer, &buffer_off);
+  
+       /* We start waiting for a very short time and then increase it, so
+        * that we respond quickly when the process is quick, and don't
+*** ../vim-7.3.286/src/version.c       2011-08-26 16:12:55.000000000 +0200
+--- src/version.c      2011-08-27 15:08:27.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     287,
+  /**/
+
+-- 
+SUPERIMPOSE "England AD 787".  After a few more seconds we hear hoofbeats in
+the distance.  They come slowly closer.  Then out of the mist comes KING
+ARTHUR followed by a SERVANT who is banging two half coconuts together.
+                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.288.patch0 b/vim/patches/vim-7.3.288.patch0
new file mode 100644 (file)
index 0000000..d1f6626
--- /dev/null
@@ -0,0 +1,76 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.288
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.288
+Problem:    has('python') may give an error message for not being able to load
+           the library after using python3.
+Solution:   Only give the error when the verbose argument is true.
+Files:     src/if_python.c, src/if_python3.c
+
+
+*** ../vim-7.3.287/src/if_python.c     2011-06-19 00:27:46.000000000 +0200
+--- src/if_python.c    2011-08-21 17:03:52.000000000 +0200
+***************
+*** 368,374 ****
+       * standard C extension libraries of one or both python versions. */
+      if (python3_loaded())
+      {
+!      EMSG(_("E836: This Vim cannot execute :python after using :py3"));
+       return FAIL;
+      }
+  #endif
+--- 368,375 ----
+       * standard C extension libraries of one or both python versions. */
+      if (python3_loaded())
+      {
+!      if (verbose)
+!          EMSG(_("E836: This Vim cannot execute :python after using :py3"));
+       return FAIL;
+      }
+  #endif
+*** ../vim-7.3.287/src/if_python3.c    2011-07-15 15:54:39.000000000 +0200
+--- src/if_python3.c   2011-08-21 17:05:19.000000000 +0200
+***************
+*** 367,373 ****
+       * standard C extension libraries of one or both python versions. */
+      if (python_loaded())
+      {
+!      EMSG(_("E837: This Vim cannot execute :py3 after using :python"));
+       return FAIL;
+      }
+  # endif
+--- 367,374 ----
+       * standard C extension libraries of one or both python versions. */
+      if (python_loaded())
+      {
+!      if (verbose)
+!          EMSG(_("E837: This Vim cannot execute :py3 after using :python"));
+       return FAIL;
+      }
+  # endif
+*** ../vim-7.3.287/src/version.c       2011-08-27 15:10:00.000000000 +0200
+--- src/version.c      2011-08-28 15:59:11.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     288,
+  /**/
+
+-- 
+FIRST SOLDIER:  So they wouldn't be able to bring a coconut back anyway.
+SECOND SOLDIER: Wait a minute! Suppose two swallows carried it together?
+FIRST SOLDIER:  No, they'd have to have it on a line.
+                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.289.patch0 b/vim/patches/vim-7.3.289.patch0
new file mode 100644 (file)
index 0000000..30258e4
--- /dev/null
@@ -0,0 +1,56 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.289
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.289
+Problem:    Complete function isn't called when the leader changed.
+Solution:   Call ins_compl_restart() when the leader changed.  (Taro Muraoka)
+Files:     src/edit.c
+
+
+*** ../vim-7.3.288/src/edit.c  2011-05-19 17:25:36.000000000 +0200
+--- src/edit.c 2011-08-28 15:53:47.000000000 +0200
+***************
+*** 3367,3372 ****
+--- 3367,3381 ----
+      ins_bytes(compl_leader + ins_compl_len());
+      compl_used_match = FALSE;
+  
++ #ifdef FEAT_COMPL_FUNC
++     /*
++      * To call eval 'completefunc' when leader is changed, restart completion
++      * every time.
++      */
++     if (ctrl_x_mode == CTRL_X_FUNCTION || ctrl_x_mode == CTRL_X_OMNI)
++         ins_compl_restart();
++ #endif
++ 
+      if (compl_started)
+       ins_compl_set_original_text(compl_leader);
+      else
+*** ../vim-7.3.288/src/version.c       2011-08-28 16:00:14.000000000 +0200
+--- src/version.c      2011-08-28 16:01:22.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     289,
+  /**/
+
+-- 
+THEOREM: VI is perfect.
+PROOF: VI in roman numerals is 6.  The natural numbers < 6 which divide 6 are
+1, 2, and 3. 1+2+3 = 6.  So 6 is a perfect number.  Therefore, VI is perfect.
+QED
+                                                   -- Arthur Tateishi
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.290.patch0 b/vim/patches/vim-7.3.290.patch0
new file mode 100644 (file)
index 0000000..b50cacf
--- /dev/null
@@ -0,0 +1,75 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.290
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.290
+Problem:    When a BufWriteCmd autocommand resets 'modified' this doesn't
+           change older buffer states to be marked as 'modified' like
+           ":write" does.  (Yukihiro Nakadaira)
+Solution:   When the BufWriteCmd resets 'modified' then adjust the undo
+           information like ":write" does.
+Files:     src/fileio.c
+
+
+*** ../vim-7.3.289/src/fileio.c        2011-07-20 18:29:33.000000000 +0200
+--- src/fileio.c       2011-08-29 21:49:27.000000000 +0200
+***************
+*** 3342,3349 ****
+       }
+       else if (reset_changed && whole)
+       {
+!          if (!(did_cmd = apply_autocmds_exarg(EVENT_BUFWRITECMD,
+!                                       sfname, sfname, FALSE, curbuf, eap)))
+           {
+  #ifdef FEAT_QUICKFIX
+               if (overwriting && bt_nofile(curbuf))
+--- 3342,3363 ----
+       }
+       else if (reset_changed && whole)
+       {
+!          int was_changed = curbufIsChanged();
+! 
+!          did_cmd = apply_autocmds_exarg(EVENT_BUFWRITECMD,
+!                                        sfname, sfname, FALSE, curbuf, eap);
+!          if (did_cmd)
+!          {
+!              if (was_changed && !curbufIsChanged())
+!              {
+!                  /* Written everything correctly and BufWriteCmd has reset
+!                   * 'modified': Correct the undo information so that an
+!                   * undo now sets 'modified'. */
+!                  u_unchanged(curbuf);
+!                  u_update_save_nr(curbuf);
+!              }
+!          }
+!          else
+           {
+  #ifdef FEAT_QUICKFIX
+               if (overwriting && bt_nofile(curbuf))
+*** ../vim-7.3.289/src/version.c       2011-08-28 16:02:23.000000000 +0200
+--- src/version.c      2011-09-02 11:37:25.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     290,
+  /**/
+
+-- 
+OLD WOMAN: Well, how did you become king, then?
+ARTHUR: The Lady of the Lake, her arm clad in the purest shimmering samite,
+        held Excalibur aloft from the bosom of the water to signify by Divine
+        Providence ...  that I, Arthur, was to carry Excalibur ...  That is
+        why I am your king!
+                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.291.patch0 b/vim/patches/vim-7.3.291.patch0
new file mode 100644 (file)
index 0000000..1d394e4
--- /dev/null
@@ -0,0 +1,125 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.291
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.291
+Problem:    Configure doesn't work properly with Python3.
+Solution:   Put -ldl before $LDFLAGS. Add PY3_NO_RTLD_GLOBAL. (Roland
+           Puntaier)
+Files:     src/config.h.in, src/auto/configure, src/configure.in
+
+
+*** ../vim-7.3.290/src/config.h.in     2010-10-27 16:49:41.000000000 +0200
+--- src/config.h.in    2011-09-02 11:22:21.000000000 +0200
+***************
+*** 346,351 ****
+--- 346,354 ----
+  /* Define if dynamic python does not require RTLD_GLOBAL */
+  #undef PY_NO_RTLD_GLOBAL
+  
++ /* Define if dynamic python3 does not require RTLD_GLOBAL */
++ #undef PY3_NO_RTLD_GLOBAL
++ 
+  /* Define if you want to include the Ruby interpreter. */
+  #undef FEAT_RUBY
+  
+*** ../vim-7.3.290/src/auto/configure  2011-07-15 13:09:46.000000000 +0200
+--- src/auto/configure 2011-09-02 11:23:15.000000000 +0200
+***************
+*** 5733,5739 ****
+    cflags_save=$CFLAGS
+    CFLAGS="$CFLAGS $PYTHON_CFLAGS"
+    ldflags_save=$LDFLAGS
+!   LDFLAGS="$LDFLAGS -ldl"
+    if test "$cross_compiling" = yes; then :
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+  $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+--- 5733,5739 ----
+    cflags_save=$CFLAGS
+    CFLAGS="$CFLAGS $PYTHON_CFLAGS"
+    ldflags_save=$LDFLAGS
+!     LDFLAGS="-ldl $LDFLAGS"
+    if test "$cross_compiling" = yes; then :
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+  $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+***************
+*** 5798,5804 ****
+    cflags_save=$CFLAGS
+    CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
+    ldflags_save=$LDFLAGS
+!   LDFLAGS="$LDFLAGS -ldl"
+    if test "$cross_compiling" = yes; then :
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+  $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+--- 5798,5804 ----
+    cflags_save=$CFLAGS
+    CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
+    ldflags_save=$LDFLAGS
+!     LDFLAGS="-ldl $LDFLAGS"
+    if test "$cross_compiling" = yes; then :
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+  $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+*** ../vim-7.3.290/src/configure.in    2011-07-15 13:09:46.000000000 +0200
+--- src/configure.in   2011-09-02 11:19:51.000000000 +0200
+***************
+*** 1161,1167 ****
+    cflags_save=$CFLAGS
+    CFLAGS="$CFLAGS $PYTHON_CFLAGS"
+    ldflags_save=$LDFLAGS
+!   LDFLAGS="$LDFLAGS -ldl"
+    AC_RUN_IFELSE([
+      #include <dlfcn.h>
+      /* If this program fails, then RTLD_GLOBAL is needed.
+--- 1161,1168 ----
+    cflags_save=$CFLAGS
+    CFLAGS="$CFLAGS $PYTHON_CFLAGS"
+    ldflags_save=$LDFLAGS
+!   dnl -ldl must go first to make this work on Archlinux (Roland Puntaier)
+!   LDFLAGS="-ldl $LDFLAGS"
+    AC_RUN_IFELSE([
+      #include <dlfcn.h>
+      /* If this program fails, then RTLD_GLOBAL is needed.
+***************
+*** 1205,1211 ****
+    cflags_save=$CFLAGS
+    CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
+    ldflags_save=$LDFLAGS
+!   LDFLAGS="$LDFLAGS -ldl"
+    AC_RUN_IFELSE([
+      #include <dlfcn.h>
+      #include <wchar.h>
+--- 1206,1213 ----
+    cflags_save=$CFLAGS
+    CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
+    ldflags_save=$LDFLAGS
+!   dnl -ldl must go first to make this work on Archlinux (Roland Puntaier)
+!   LDFLAGS="-ldl $LDFLAGS"
+    AC_RUN_IFELSE([
+      #include <dlfcn.h>
+      #include <wchar.h>
+*** ../vim-7.3.290/src/version.c       2011-09-02 11:56:15.000000000 +0200
+--- src/version.c      2011-09-02 12:25:13.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     291,
+  /**/
+
+-- 
+DENNIS: Look,  strange women lying on their backs in ponds handing out
+        swords ... that's no basis for a system of government.  Supreme
+        executive power derives from a mandate from the masses, not from some
+        farcical aquatic ceremony.
+                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.292.patch0 b/vim/patches/vim-7.3.292.patch0
new file mode 100644 (file)
index 0000000..fc9480f
--- /dev/null
@@ -0,0 +1,55 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.292
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.292
+Problem:    Crash when using fold markers and selecting a visual block that
+           includes a folded line and goes to end of line. (Sam Lidder)
+Solution:   Check for the column to be MAXCOL. (James Vega)
+Files:     src/screen.c
+
+
+*** ../vim-7.3.291/src/screen.c        2011-08-10 14:32:33.000000000 +0200
+--- src/screen.c       2011-09-02 13:58:18.000000000 +0200
+***************
+*** 2531,2537 ****
+               /* Visual block mode: highlight the chars part of the block */
+               if (wp->w_old_cursor_fcol + txtcol < (colnr_T)W_WIDTH(wp))
+               {
+!                  if (wp->w_old_cursor_lcol + txtcol < (colnr_T)W_WIDTH(wp))
+                       len = wp->w_old_cursor_lcol;
+                   else
+                       len = W_WIDTH(wp) - txtcol;
+--- 2531,2539 ----
+               /* Visual block mode: highlight the chars part of the block */
+               if (wp->w_old_cursor_fcol + txtcol < (colnr_T)W_WIDTH(wp))
+               {
+!                  if (wp->w_old_cursor_lcol != MAXCOL
+!                           && wp->w_old_cursor_lcol + txtcol
+!                                                     < (colnr_T)W_WIDTH(wp))
+                       len = wp->w_old_cursor_lcol;
+                   else
+                       len = W_WIDTH(wp) - txtcol;
+*** ../vim-7.3.291/src/version.c       2011-09-02 12:27:20.000000000 +0200
+--- src/version.c      2011-09-02 14:00:03.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     292,
+  /**/
+
+-- 
+Hacker: Someone skilled in computer programming (good guy).
+Cracker: A hacker that uses his skills to crack software (bad guy).
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.293.patch0 b/vim/patches/vim-7.3.293.patch0
new file mode 100644 (file)
index 0000000..4072e32
--- /dev/null
@@ -0,0 +1,74 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.293
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.293
+Problem:    MSVC compiler has a problem with non-ASCII characters.
+Solution:   Avoid non-ASCII characters. (Hong Xu)
+Files:     src/ascii.h, src/spell.c
+
+
+*** ../vim-7.3.292/src/ascii.h 2011-05-10 16:41:13.000000000 +0200
+--- src/ascii.h        2011-09-02 14:12:48.000000000 +0200
+***************
+*** 123,129 ****
+  #define DCS          0x90    /* Device Control String */
+  #define STERM                0x9c    /* String Terminator */
+  
+! #define POUND                '£'
+  
+  #define CTRL_F_STR   "\056"
+  #define CTRL_H_STR   "\026"
+--- 123,129 ----
+  #define DCS          0x90    /* Device Control String */
+  #define STERM                0x9c    /* String Terminator */
+  
+! #define POUND                '\xA3'
+  
+  #define CTRL_F_STR   "\056"
+  #define CTRL_H_STR   "\026"
+*** ../vim-7.3.292/src/spell.c 2011-04-11 21:35:03.000000000 +0200
+--- src/spell.c        2011-09-02 14:13:30.000000000 +0200
+***************
+*** 11197,11203 ****
+           c = *s++;
+  
+  #ifdef FEAT_MBYTE
+!      /* We only change ÃŸ to SS when we are certain latin1 is used.  It
+        * would cause weird errors in other 8-bit encodings. */
+       if (enc_latin1like && c == 0xdf)
+       {
+--- 11197,11203 ----
+           c = *s++;
+  
+  #ifdef FEAT_MBYTE
+!      /* We only change 0xdf to SS when we are certain latin1 is used.  It
+        * would cause weird errors in other 8-bit encodings. */
+       if (enc_latin1like && c == 0xdf)
+       {
+*** ../vim-7.3.292/src/version.c       2011-09-02 14:07:31.000000000 +0200
+--- src/version.c      2011-09-02 14:13:57.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     293,
+  /**/
+
+-- 
+   A village.  Sound of chanting of Latin canon, punctuated by short, sharp
+   cracks.  It comes nearer.  We see it is a line of MONKS ala SEVENTH SEAL
+   flagellation scene, chanting and banging themselves on the foreheads with
+   wooden boards.
+                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.294.patch0 b/vim/patches/vim-7.3.294.patch0
new file mode 100644 (file)
index 0000000..84252ba
--- /dev/null
@@ -0,0 +1,58 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.294
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.294 (after 7.3.289)
+Problem:    Patch 289 causes more problems than it solves.
+Solution:   Rever the patch untill a better solution is found.
+Files:     src/edit.c
+
+
+*** ../vim-7.3.293/src/edit.c  2011-08-28 16:02:23.000000000 +0200
+--- src/edit.c 2011-09-05 20:07:49.000000000 +0200
+***************
+*** 3367,3381 ****
+      ins_bytes(compl_leader + ins_compl_len());
+      compl_used_match = FALSE;
+  
+- #ifdef FEAT_COMPL_FUNC
+-     /*
+-      * To call eval 'completefunc' when leader is changed, restart completion
+-      * every time.
+-      */
+-     if (ctrl_x_mode == CTRL_X_FUNCTION || ctrl_x_mode == CTRL_X_OMNI)
+-         ins_compl_restart();
+- #endif
+- 
+      if (compl_started)
+       ins_compl_set_original_text(compl_leader);
+      else
+--- 3367,3372 ----
+*** ../vim-7.3.293/src/version.c       2011-09-02 14:18:14.000000000 +0200
+--- src/version.c      2011-09-05 20:08:27.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     294,
+  /**/
+
+-- 
+Scientists decoded the first message from an alien civilization:
+        SIMPLY SEND 6 TIMES 10 TO THE 50 ATOMS OF HYDROGEN TO THE STAR
+SYSTEM AT THE TOP OF THE LIST, CROSS OFF THAT STAR SYSTEM, THEN PUT
+YOUR STAR SYSTEM AT THE BOTTOM OF THE LIST AND SEND IT TO 100 OTHER
+STAR SYSTEMS.  WITHIN ONE TENTH GALACTIC ROTATION YOU WILL RECEIVE
+ENOUGH HYDROGREN TO POWER YOUR CIVILIZATION UNTIL ENTROPY REACHES ITS
+MAXIMUM!  IT REALLY WORKS!
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.295.patch0 b/vim/patches/vim-7.3.295.patch0
new file mode 100644 (file)
index 0000000..fad7ea3
--- /dev/null
@@ -0,0 +1,109 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.295
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.295
+Problem:    When filtering text with an external command Vim may not read all
+           the output.
+Solution:   When select() is interrupted loop and try again. (James Vega)
+Files:     src/os_unix.c
+
+
+*** ../vim-7.3.294/src/os_unix.c       2011-08-04 20:31:50.000000000 +0200
+--- src/os_unix.c      2011-09-07 13:34:09.000000000 +0200
+***************
+*** 4819,4825 ****
+  
+  /*
+   * Wait "msec" msec until a character is available from file descriptor "fd".
+!  * Time == -1 will block forever.
+   * When a GUI is being used, this will not be used for input -- webb
+   * Returns also, when a request from Sniff is waiting -- toni.
+   * Or when a Linux GPM mouse event is waiting.
+--- 4819,4826 ----
+  
+  /*
+   * Wait "msec" msec until a character is available from file descriptor "fd".
+!  * "msec" == 0 will check for characters once.
+!  * "msec" == -1 will block until a character is available.
+   * When a GUI is being used, this will not be used for input -- webb
+   * Returns also, when a request from Sniff is waiting -- toni.
+   * Or when a Linux GPM mouse event is waiting.
+***************
+*** 5057,5063 ****
+       /*
+        * Select on ready for reading and exceptional condition (end of file).
+        */
+!      FD_ZERO(&rfds); /* calls bzero() on a sun */
+       FD_ZERO(&efds);
+       FD_SET(fd, &rfds);
+  # if !defined(__QNX__) && !defined(__CYGWIN32__)
+--- 5058,5065 ----
+       /*
+        * Select on ready for reading and exceptional condition (end of file).
+        */
+! select_eintr:
+!      FD_ZERO(&rfds);
+       FD_ZERO(&efds);
+       FD_SET(fd, &rfds);
+  # if !defined(__QNX__) && !defined(__CYGWIN32__)
+***************
+*** 5117,5122 ****
+--- 5119,5132 ----
+  # else
+       ret = select(maxfd + 1, &rfds, NULL, &efds, tvp);
+  # endif
++ # ifdef EINTR
++      if (ret == -1 && errno == EINTR)
++          /* Interrupted by a signal, need to try again.  We ignore msec
++           * here, because we do want to check even after a timeout if
++           * characters are available.  Needed for reading output of an
++           * external command after the process has finished. */
++          goto select_eintr;
++ # endif
+  # ifdef __TANDEM
+       if (ret == -1 && errno == ENOTSUP)
+       {
+***************
+*** 5124,5130 ****
+           FD_ZERO(&efds);
+           ret = 0;
+       }
+! #endif
+  # ifdef FEAT_MZSCHEME
+       if (ret == 0 && mzquantum_used)
+           /* loop if MzThreads must be scheduled and timeout occurred */
+--- 5134,5140 ----
+           FD_ZERO(&efds);
+           ret = 0;
+       }
+! # endif
+  # ifdef FEAT_MZSCHEME
+       if (ret == 0 && mzquantum_used)
+           /* loop if MzThreads must be scheduled and timeout occurred */
+*** ../vim-7.3.294/src/version.c       2011-09-05 20:13:37.000000000 +0200
+--- src/version.c      2011-09-07 14:05:05.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     295,
+  /**/
+
+-- 
+"You're fired." (1980)
+"You're laid off." (1985)
+"You're downsized." (1990)
+"You're rightsized." (1992)
+                               (Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.296.patch0 b/vim/patches/vim-7.3.296.patch0
new file mode 100644 (file)
index 0000000..80369d1
--- /dev/null
@@ -0,0 +1,222 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.296
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.296
+Problem:    When writing to an external command a zombie process may be left
+           behind.
+Solution:   Wait on the process. (James Vega)
+Files:     src/os_unix.c
+
+
+*** ../vim-7.3.295/src/os_unix.c       2011-09-07 14:06:38.000000000 +0200
+--- src/os_unix.c      2011-09-07 14:54:11.000000000 +0200
+***************
+*** 154,159 ****
+--- 154,166 ----
+  
+  static void may_core_dump __ARGS((void));
+  
++ #ifdef HAVE_UNION_WAIT
++ typedef union wait waitstatus;
++ #else
++ typedef int waitstatus;
++ #endif
++ static int  wait4pid __ARGS((pid_t, waitstatus *));
++ 
+  static int  WaitForChar __ARGS((long));
+  #if defined(__BEOS__)
+  int  RealWaitForChar __ARGS((int, long, int *));
+***************
+*** 3660,3665 ****
+--- 3667,3713 ----
+      /* Nothing to do. */
+  }
+  
++ /*
++  * Wait for process "child" to end.
++  * Return "child" if it exited properly, <= 0 on error.
++  */
++     static pid_t
++ wait4pid(child, status)
++     pid_t    child;
++     waitstatus       *status;
++ {
++     pid_t wait_pid = 0;
++ 
++     while (wait_pid != child)
++     {
++ # ifdef _THREAD_SAFE
++      /* Ugly hack: when compiled with Python threads are probably
++       * used, in which case wait() sometimes hangs for no obvious
++       * reason.  Use waitpid() instead and loop (like the GUI). */
++ #  ifdef __NeXT__
++      wait_pid = wait4(child, status, WNOHANG, (struct rusage *)0);
++ #  else
++      wait_pid = waitpid(child, status, WNOHANG);
++ #  endif
++      if (wait_pid == 0)
++      {
++          /* Wait for 1/100 sec before trying again. */
++          mch_delay(10L, TRUE);
++          continue;
++      }
++ # else
++      wait_pid = wait(status);
++ # endif
++      if (wait_pid <= 0
++ # ifdef ECHILD
++              && errno == ECHILD
++ # endif
++         )
++          break;
++     }
++     return wait_pid;
++ }
++ 
+      int
+  mch_call_shell(cmd, options)
+      char_u   *cmd;
+***************
+*** 4234,4240 ****
+                   {
+                       MSG_PUTS(_("\nCannot fork\n"));
+                   }
+!                  else if (wpid == 0)
+                   {
+                       linenr_T    lnum = curbuf->b_op_start.lnum;
+                       int         written = 0;
+--- 4282,4288 ----
+                   {
+                       MSG_PUTS(_("\nCannot fork\n"));
+                   }
+!                  else if (wpid == 0) /* child */
+                   {
+                       linenr_T    lnum = curbuf->b_op_start.lnum;
+                       int         written = 0;
+***************
+*** 4242,4248 ****
+                       char_u      *s;
+                       size_t      l;
+  
+-                      /* child */
+                       close(fromshell_fd);
+                       for (;;)
+                       {
+--- 4290,4295 ----
+***************
+*** 4287,4293 ****
+                       }
+                       _exit(0);
+                   }
+!                  else
+                   {
+                       close(toshell_fd);
+                       toshell_fd = -1;
+--- 4334,4340 ----
+                       }
+                       _exit(0);
+                   }
+!                  else /* parent */
+                   {
+                       close(toshell_fd);
+                       toshell_fd = -1;
+***************
+*** 4584,4590 ****
+                    * typed characters (otherwise we would lose typeahead).
+                    */
+  # ifdef __NeXT__
+!                  wait_pid = wait4(pid, &status, WNOHANG, (struct rusage *) 0);
+  # else
+                   wait_pid = waitpid(pid, &status, WNOHANG);
+  # endif
+--- 4631,4637 ----
+                    * typed characters (otherwise we would lose typeahead).
+                    */
+  # ifdef __NeXT__
+!                  wait_pid = wait4(pid, &status, WNOHANG, (struct rusage *)0);
+  # else
+                   wait_pid = waitpid(pid, &status, WNOHANG);
+  # endif
+***************
+*** 4633,4665 ****
+            * Don't wait if wait_pid was already set above, indicating the
+            * child already exited.
+            */
+!          while (wait_pid != pid)
+!          {
+! # ifdef _THREAD_SAFE
+!              /* Ugly hack: when compiled with Python threads are probably
+!               * used, in which case wait() sometimes hangs for no obvious
+!               * reason.  Use waitpid() instead and loop (like the GUI). */
+! #  ifdef __NeXT__
+!              wait_pid = wait4(pid, &status, WNOHANG, (struct rusage *)0);
+! #  else
+!              wait_pid = waitpid(pid, &status, WNOHANG);
+! #  endif
+!              if (wait_pid == 0)
+!              {
+!                  /* Wait for 1/100 sec before trying again. */
+!                  mch_delay(10L, TRUE);
+!                  continue;
+!              }
+! # else
+!              wait_pid = wait(&status);
+! # endif
+!              if (wait_pid <= 0
+! # ifdef ECHILD
+!                      && errno == ECHILD
+! # endif
+!                 )
+!                  break;
+!          }
+  
+  # ifdef FEAT_GUI
+           /* Close slave side of pty.  Only do this after the child has
+--- 4680,4687 ----
+            * Don't wait if wait_pid was already set above, indicating the
+            * child already exited.
+            */
+!          if (wait_pid != pid)
+!              wait_pid = wait4pid(pid, &status);
+  
+  # ifdef FEAT_GUI
+           /* Close slave side of pty.  Only do this after the child has
+***************
+*** 4672,4678 ****
+--- 4694,4703 ----
+           /* Make sure the child that writes to the external program is
+            * dead. */
+           if (wpid > 0)
++          {
+               kill(wpid, SIGKILL);
++              wait4pid(wpid, NULL);
++          }
+  
+           /*
+            * Set to raw mode right now, otherwise a CTRL-C after
+*** ../vim-7.3.295/src/version.c       2011-09-07 14:06:39.000000000 +0200
+--- src/version.c      2011-09-07 15:03:24.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     296,
+  /**/
+
+-- 
+If your company is not involved in something called "ISO 9000" you probably
+have no idea what it is.  If your company _is_ involved in ISO 9000 then you
+definitely have no idea what it is.
+                               (Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.297.patch0 b/vim/patches/vim-7.3.297.patch0
new file mode 100644 (file)
index 0000000..09be768
--- /dev/null
@@ -0,0 +1,130 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.297
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.297
+Problem:    Can't load Perl 5.14 dynamically.
+Solution:   Add code in #ifdefs. (Charles Cooper)
+Files:     if_perl.xs
+
+
+*** ../vim-7.3.296/src/if_perl.xs      2011-07-27 14:15:41.000000000 +0200
+--- src/if_perl.xs     2011-09-07 18:47:07.000000000 +0200
+***************
+*** 147,153 ****
+--- 147,158 ----
+  # define Perl_save_int dll_Perl_save_int
+  # define Perl_stack_grow dll_Perl_stack_grow
+  # define Perl_set_context dll_Perl_set_context
++ # if (PERL_REVISION == 5) && (PERL_VERSION >= 14)
++ # define Perl_sv_2bool_flags dll_Perl_sv_2bool_flags
++ # define Perl_xs_apiversion_bootcheck dll_Perl_xs_apiversion_bootcheck 
++ # else
+  # define Perl_sv_2bool dll_Perl_sv_2bool
++ # endif
+  # define Perl_sv_2iv dll_Perl_sv_2iv
+  # define Perl_sv_2mortal dll_Perl_sv_2mortal
+  # if (PERL_REVISION == 5) && (PERL_VERSION >= 8)
+***************
+*** 252,258 ****
+--- 257,268 ----
+  static void (*Perl_save_int)(pTHX_ int*);
+  static SV** (*Perl_stack_grow)(pTHX_ SV**, SV**p, int);
+  static SV** (*Perl_set_context)(void*);
++ #if (PERL_REVISION == 5) && (PERL_VERSION >= 14)
++ static bool (*Perl_sv_2bool_flags)(pTHX_ SV*, I32);
++ static void (*Perl_xs_apiversion_bootcheck)(pTHX_ SV *module, const char *api_p, STRLEN api_len);
++ #else
+  static bool (*Perl_sv_2bool)(pTHX_ SV*);
++ #endif
+  static IV (*Perl_sv_2iv)(pTHX_ SV*);
+  static SV* (*Perl_sv_2mortal)(pTHX_ SV*);
+  #if (PERL_REVISION == 5) && (PERL_VERSION >= 8)
+***************
+*** 360,366 ****
+--- 370,381 ----
+      {"Perl_save_int", (PERL_PROC*)&Perl_save_int},
+      {"Perl_stack_grow", (PERL_PROC*)&Perl_stack_grow},
+      {"Perl_set_context", (PERL_PROC*)&Perl_set_context},
++ #if (PERL_REVISION == 5) && (PERL_VERSION >= 14)
++     {"Perl_sv_2bool_flags", (PERL_PROC*)&Perl_sv_2bool_flags},
++     {"Perl_xs_apiversion_bootcheck",(PERL_PROC*)&Perl_xs_apiversion_bootcheck},
++ #else
+      {"Perl_sv_2bool", (PERL_PROC*)&Perl_sv_2bool},
++ #endif
+      {"Perl_sv_2iv", (PERL_PROC*)&Perl_sv_2iv},
+      {"Perl_sv_2mortal", (PERL_PROC*)&Perl_sv_2mortal},
+  #if (PERL_REVISION == 5) && (PERL_VERSION >= 8)
+***************
+*** 407,412 ****
+--- 422,430 ----
+      {"Perl_sv_free2", (PERL_PROC*)&Perl_sv_free2},
+      {"Perl_sys_init", (PERL_PROC*)&Perl_sys_init},
+      {"Perl_sys_term", (PERL_PROC*)&Perl_sys_term},
++     {"Perl_call_list", (PERL_PROC*)&Perl_call_list},
++ # if (PERL_REVISION == 5) && (PERL_VERSION >= 14)
++ # else
+      {"Perl_ISv_ptr", (PERL_PROC*)&Perl_ISv_ptr},
+      {"Perl_Istack_max_ptr", (PERL_PROC*)&Perl_Istack_max_ptr},
+      {"Perl_Istack_base_ptr", (PERL_PROC*)&Perl_Istack_base_ptr},
+***************
+*** 418,432 ****
+      {"Perl_Imarkstack_max_ptr", (PERL_PROC*)&Perl_Imarkstack_max_ptr},
+      {"Perl_Istack_sp_ptr", (PERL_PROC*)&Perl_Istack_sp_ptr},
+      {"Perl_Iop_ptr", (PERL_PROC*)&Perl_Iop_ptr},
+-     {"Perl_call_list", (PERL_PROC*)&Perl_call_list},
+      {"Perl_Iscopestack_ix_ptr", (PERL_PROC*)&Perl_Iscopestack_ix_ptr},
+      {"Perl_Iunitcheckav_ptr", (PERL_PROC*)&Perl_Iunitcheckav_ptr},
+  #endif
+      {"Perl_Idefgv_ptr", (PERL_PROC*)&Perl_Idefgv_ptr},
+      {"Perl_Ierrgv_ptr", (PERL_PROC*)&Perl_Ierrgv_ptr},
+      {"Perl_Isv_yes_ptr", (PERL_PROC*)&Perl_Isv_yes_ptr},
+-     {"boot_DynaLoader", (PERL_PROC*)&boot_DynaLoader},
+      {"Perl_Gthr_key_ptr", (PERL_PROC*)&Perl_Gthr_key_ptr},
+      {"", NULL},
+  };
+  
+--- 436,453 ----
+      {"Perl_Imarkstack_max_ptr", (PERL_PROC*)&Perl_Imarkstack_max_ptr},
+      {"Perl_Istack_sp_ptr", (PERL_PROC*)&Perl_Istack_sp_ptr},
+      {"Perl_Iop_ptr", (PERL_PROC*)&Perl_Iop_ptr},
+      {"Perl_Iscopestack_ix_ptr", (PERL_PROC*)&Perl_Iscopestack_ix_ptr},
+      {"Perl_Iunitcheckav_ptr", (PERL_PROC*)&Perl_Iunitcheckav_ptr},
++ # endif
+  #endif
++ #if (PERL_REVISION == 5) && (PERL_VERSION >= 14)
++ #else
+      {"Perl_Idefgv_ptr", (PERL_PROC*)&Perl_Idefgv_ptr},
+      {"Perl_Ierrgv_ptr", (PERL_PROC*)&Perl_Ierrgv_ptr},
+      {"Perl_Isv_yes_ptr", (PERL_PROC*)&Perl_Isv_yes_ptr},
+      {"Perl_Gthr_key_ptr", (PERL_PROC*)&Perl_Gthr_key_ptr},
++ #endif
++     {"boot_DynaLoader", (PERL_PROC*)&boot_DynaLoader},
+      {"", NULL},
+  };
+  
+*** ../vim-7.3.296/src/version.c       2011-09-07 15:04:26.000000000 +0200
+--- src/version.c      2011-09-07 18:45:28.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     297,
+  /**/
+
+-- 
+At some point in the project somebody will start whining about the need to
+determine the project "requirements".  This involves interviewing people who
+don't know what they want but, curiously, know exactly when they need it.
+                               (Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.298.patch0 b/vim/patches/vim-7.3.298.patch0
new file mode 100644 (file)
index 0000000..65a51aa
--- /dev/null
@@ -0,0 +1,167 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.298
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.298
+Problem:    Built-in colors are different from rgb.txt.
+Solution:   Adjust the color values. (Benjamin Haskell)
+Files:     src/gui_photon.c, src/gui_w48.c
+
+
+*** ../vim-7.3.297/src/gui_photon.c    2011-08-10 12:19:00.000000000 +0200
+--- src/gui_photon.c   2011-09-07 18:55:09.000000000 +0200
+***************
+*** 2007,2014 ****
+      static GuiColourTable table[] =
+      {
+       {"Black",           RGB(0x00, 0x00, 0x00)},
+!      {"DarkGray",        RGB(0x80, 0x80, 0x80)},
+!      {"DarkGrey",        RGB(0x80, 0x80, 0x80)},
+       {"Gray",            RGB(0xC0, 0xC0, 0xC0)},
+       {"Grey",            RGB(0xC0, 0xC0, 0xC0)},
+       {"LightGray",       RGB(0xD3, 0xD3, 0xD3)},
+--- 2007,2014 ----
+      static GuiColourTable table[] =
+      {
+       {"Black",           RGB(0x00, 0x00, 0x00)},
+!      {"DarkGray",        RGB(0xA9, 0xA9, 0xA9)},
+!      {"DarkGrey",        RGB(0xA9, 0xA9, 0xA9)},
+       {"Gray",            RGB(0xC0, 0xC0, 0xC0)},
+       {"Grey",            RGB(0xC0, 0xC0, 0xC0)},
+       {"LightGray",       RGB(0xD3, 0xD3, 0xD3)},
+***************
+*** 2037,2055 ****
+       {"LightRed",        RGB(0xFF, 0xA0, 0xA0)},
+       {"DarkBlue",        RGB(0x00, 0x00, 0x80)},
+       {"Blue",            RGB(0x00, 0x00, 0xFF)},
+!      {"LightBlue",       RGB(0xA0, 0xA0, 0xFF)},
+       {"DarkGreen",       RGB(0x00, 0x80, 0x00)},
+       {"Green",           RGB(0x00, 0xFF, 0x00)},
+!      {"LightGreen",      RGB(0xA0, 0xFF, 0xA0)},
+       {"DarkCyan",        RGB(0x00, 0x80, 0x80)},
+       {"Cyan",            RGB(0x00, 0xFF, 0xFF)},
+!      {"LightCyan",       RGB(0xA0, 0xFF, 0xFF)},
+       {"DarkMagenta",     RGB(0x80, 0x00, 0x80)},
+       {"Magenta",         RGB(0xFF, 0x00, 0xFF)},
+       {"LightMagenta",    RGB(0xFF, 0xA0, 0xFF)},
+       {"Brown",           RGB(0x80, 0x40, 0x40)},
+       {"Yellow",          RGB(0xFF, 0xFF, 0x00)},
+!      {"LightYellow",     RGB(0xFF, 0xFF, 0xA0)},
+       {"SeaGreen",        RGB(0x2E, 0x8B, 0x57)},
+       {"Orange",          RGB(0xFF, 0xA5, 0x00)},
+       {"Purple",          RGB(0xA0, 0x20, 0xF0)},
+--- 2037,2055 ----
+       {"LightRed",        RGB(0xFF, 0xA0, 0xA0)},
+       {"DarkBlue",        RGB(0x00, 0x00, 0x80)},
+       {"Blue",            RGB(0x00, 0x00, 0xFF)},
+!      {"LightBlue",       RGB(0xAD, 0xD8, 0xE6)},
+       {"DarkGreen",       RGB(0x00, 0x80, 0x00)},
+       {"Green",           RGB(0x00, 0xFF, 0x00)},
+!      {"LightGreen",      RGB(0x90, 0xEE, 0x90)},
+       {"DarkCyan",        RGB(0x00, 0x80, 0x80)},
+       {"Cyan",            RGB(0x00, 0xFF, 0xFF)},
+!      {"LightCyan",       RGB(0xE0, 0xFF, 0xFF)},
+       {"DarkMagenta",     RGB(0x80, 0x00, 0x80)},
+       {"Magenta",         RGB(0xFF, 0x00, 0xFF)},
+       {"LightMagenta",    RGB(0xFF, 0xA0, 0xFF)},
+       {"Brown",           RGB(0x80, 0x40, 0x40)},
+       {"Yellow",          RGB(0xFF, 0xFF, 0x00)},
+!      {"LightYellow",     RGB(0xFF, 0xFF, 0xE0)},
+       {"SeaGreen",        RGB(0x2E, 0x8B, 0x57)},
+       {"Orange",          RGB(0xFF, 0xA5, 0x00)},
+       {"Purple",          RGB(0xA0, 0x20, 0xF0)},
+*** ../vim-7.3.297/src/gui_w48.c       2011-08-10 17:07:56.000000000 +0200
+--- src/gui_w48.c      2011-09-07 18:55:09.000000000 +0200
+***************
+*** 1411,1422 ****
+      static guicolor_tTable table[] =
+      {
+       {"Black",               RGB(0x00, 0x00, 0x00)},
+!      {"DarkGray",            RGB(0x80, 0x80, 0x80)},
+!      {"DarkGrey",            RGB(0x80, 0x80, 0x80)},
+       {"Gray",                RGB(0xC0, 0xC0, 0xC0)},
+       {"Grey",                RGB(0xC0, 0xC0, 0xC0)},
+!      {"LightGray",           RGB(0xE0, 0xE0, 0xE0)},
+!      {"LightGrey",           RGB(0xE0, 0xE0, 0xE0)},
+       {"Gray10",              RGB(0x1A, 0x1A, 0x1A)},
+       {"Grey10",              RGB(0x1A, 0x1A, 0x1A)},
+       {"Gray20",              RGB(0x33, 0x33, 0x33)},
+--- 1411,1422 ----
+      static guicolor_tTable table[] =
+      {
+       {"Black",               RGB(0x00, 0x00, 0x00)},
+!      {"DarkGray",            RGB(0xA9, 0xA9, 0xA9)},
+!      {"DarkGrey",            RGB(0xA9, 0xA9, 0xA9)},
+       {"Gray",                RGB(0xC0, 0xC0, 0xC0)},
+       {"Grey",                RGB(0xC0, 0xC0, 0xC0)},
+!      {"LightGray",           RGB(0xD3, 0xD3, 0xD3)},
+!      {"LightGrey",           RGB(0xD3, 0xD3, 0xD3)},
+       {"Gray10",              RGB(0x1A, 0x1A, 0x1A)},
+       {"Grey10",              RGB(0x1A, 0x1A, 0x1A)},
+       {"Gray20",              RGB(0x33, 0x33, 0x33)},
+***************
+*** 1441,1459 ****
+       {"LightRed",            RGB(0xFF, 0xA0, 0xA0)},
+       {"DarkBlue",            RGB(0x00, 0x00, 0x80)},
+       {"Blue",                RGB(0x00, 0x00, 0xFF)},
+!      {"LightBlue",           RGB(0xA0, 0xA0, 0xFF)},
+       {"DarkGreen",           RGB(0x00, 0x80, 0x00)},
+       {"Green",               RGB(0x00, 0xFF, 0x00)},
+!      {"LightGreen",          RGB(0xA0, 0xFF, 0xA0)},
+       {"DarkCyan",            RGB(0x00, 0x80, 0x80)},
+       {"Cyan",                RGB(0x00, 0xFF, 0xFF)},
+!      {"LightCyan",           RGB(0xA0, 0xFF, 0xFF)},
+       {"DarkMagenta",         RGB(0x80, 0x00, 0x80)},
+       {"Magenta",             RGB(0xFF, 0x00, 0xFF)},
+       {"LightMagenta",        RGB(0xFF, 0xA0, 0xFF)},
+       {"Brown",               RGB(0x80, 0x40, 0x40)},
+       {"Yellow",              RGB(0xFF, 0xFF, 0x00)},
+!      {"LightYellow",         RGB(0xFF, 0xFF, 0xA0)},
+       {"DarkYellow",          RGB(0xBB, 0xBB, 0x00)},
+       {"SeaGreen",            RGB(0x2E, 0x8B, 0x57)},
+       {"Orange",              RGB(0xFF, 0xA5, 0x00)},
+--- 1441,1459 ----
+       {"LightRed",            RGB(0xFF, 0xA0, 0xA0)},
+       {"DarkBlue",            RGB(0x00, 0x00, 0x80)},
+       {"Blue",                RGB(0x00, 0x00, 0xFF)},
+!      {"LightBlue",           RGB(0xAD, 0xD8, 0xE6)},
+       {"DarkGreen",           RGB(0x00, 0x80, 0x00)},
+       {"Green",               RGB(0x00, 0xFF, 0x00)},
+!      {"LightGreen",          RGB(0x90, 0xEE, 0x90)},
+       {"DarkCyan",            RGB(0x00, 0x80, 0x80)},
+       {"Cyan",                RGB(0x00, 0xFF, 0xFF)},
+!      {"LightCyan",           RGB(0xE0, 0xFF, 0xFF)},
+       {"DarkMagenta",         RGB(0x80, 0x00, 0x80)},
+       {"Magenta",             RGB(0xFF, 0x00, 0xFF)},
+       {"LightMagenta",        RGB(0xFF, 0xA0, 0xFF)},
+       {"Brown",               RGB(0x80, 0x40, 0x40)},
+       {"Yellow",              RGB(0xFF, 0xFF, 0x00)},
+!      {"LightYellow",         RGB(0xFF, 0xFF, 0xE0)},
+       {"DarkYellow",          RGB(0xBB, 0xBB, 0x00)},
+       {"SeaGreen",            RGB(0x2E, 0x8B, 0x57)},
+       {"Orange",              RGB(0xFF, 0xA5, 0x00)},
+*** ../vim-7.3.297/src/version.c       2011-09-07 18:47:19.000000000 +0200
+--- src/version.c      2011-09-07 18:55:27.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     298,
+  /**/
+
+-- 
+You can test a person's importance in the organization by asking how much RAM
+his computer has.  Anybody who knows the answer to that question is not a
+decision-maker.
+                               (Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.299.patch0 b/vim/patches/vim-7.3.299.patch0
new file mode 100644 (file)
index 0000000..4f755d9
--- /dev/null
@@ -0,0 +1,516 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.299
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.299
+Problem:    Source code not in Vim style.
+Solution:   Adjust the style. (Elias Diem)
+Files:     src/gui_photon.c
+
+
+*** ../vim-7.3.298/src/gui_photon.c    2011-09-07 18:58:24.000000000 +0200
+--- src/gui_photon.c   2011-09-07 19:02:59.000000000 +0200
+***************
+*** 535,547 ****
+                               &src_taken,
+                               buf,
+                               6,
+!                              &dst_made );
+  
+!                      add_to_input_buf( buf, dst_made );
+                   }
+                   else
+                   {
+!                      add_to_input_buf( string, len );
+                   }
+  
+                   return Pt_CONSUME;
+--- 535,547 ----
+                               &src_taken,
+                               buf,
+                               6,
+!                              &dst_made);
+  
+!                      add_to_input_buf(buf, dst_made);
+                   }
+                   else
+                   {
+!                      add_to_input_buf(string, len);
+                   }
+  
+                   return Pt_CONSUME;
+***************
+*** 549,579 ****
+               len = 0;
+  #endif
+               ch = key->key_cap;
+!              if( ch < 0xff )
+               {
+                   /* FIXME: is this the right thing to do? */
+!                  if( modifiers & MOD_MASK_CTRL )
+                   {
+                       modifiers &= ~MOD_MASK_CTRL;
+  
+!                      if( ( ch >= 'a'  &&  ch <= 'z' ) ||
+                               ch == '[' ||
+                               ch == ']' ||
+!                              ch == '\\' )
+!                          ch = Ctrl_chr( ch );
+!                      else if( ch == '2' )
+                           ch = NUL;
+!                      else if( ch == '6' )
+                           ch = 0x1e;
+!                      else if( ch == '-' )
+                           ch = 0x1f;
+                       else
+                           modifiers |= MOD_MASK_CTRL;
+                   }
+  
+!                  if( modifiers & MOD_MASK_ALT )
+                   {
+!                      ch = Meta( ch );
+                       modifiers &= ~MOD_MASK_ALT;
+                   }
+               }
+--- 549,579 ----
+               len = 0;
+  #endif
+               ch = key->key_cap;
+!              if (ch < 0xff)
+               {
+                   /* FIXME: is this the right thing to do? */
+!                  if (modifiers & MOD_MASK_CTRL)
+                   {
+                       modifiers &= ~MOD_MASK_CTRL;
+  
+!                      if ((ch >= 'a' && ch <= 'z') ||
+                               ch == '[' ||
+                               ch == ']' ||
+!                              ch == '\\')
+!                          ch = Ctrl_chr(ch);
+!                      else if (ch == '2')
+                           ch = NUL;
+!                      else if (ch == '6')
+                           ch = 0x1e;
+!                      else if (ch == '-')
+                           ch = 0x1f;
+                       else
+                           modifiers |= MOD_MASK_CTRL;
+                   }
+  
+!                  if (modifiers & MOD_MASK_ALT)
+                   {
+!                      ch = Meta(ch);
+                       modifiers &= ~MOD_MASK_ALT;
+                   }
+               }
+***************
+*** 586,604 ****
+               modifiers &= ~MOD_MASK_SHIFT;
+       }
+  
+!      ch = simplify_key( ch, &modifiers );
+!      if( modifiers )
+       {
+           string[ len++ ] = CSI;
+           string[ len++ ] = KS_MODIFIER;
+           string[ len++ ] = modifiers;
+       }
+  
+!      if( IS_SPECIAL( ch ) )
+       {
+           string[ len++ ] = CSI;
+!          string[ len++ ] = K_SECOND( ch );
+!          string[ len++ ] = K_THIRD( ch );
+       }
+       else
+       {
+--- 586,604 ----
+               modifiers &= ~MOD_MASK_SHIFT;
+       }
+  
+!      ch = simplify_key(ch, &modifiers);
+!      if (modifiers)
+       {
+           string[ len++ ] = CSI;
+           string[ len++ ] = KS_MODIFIER;
+           string[ len++ ] = modifiers;
+       }
+  
+!      if (IS_SPECIAL(ch))
+       {
+           string[ len++ ] = CSI;
+!          string[ len++ ] = K_SECOND(ch);
+!          string[ len++ ] = K_THIRD(ch);
+       }
+       else
+       {
+***************
+*** 619,627 ****
+           string[ len++ ] = KE_CSI;
+       }
+  
+!      if( len > 0 )
+       {
+!          add_to_input_buf( string, len );
+           return Pt_CONSUME;
+       }
+      }
+--- 619,627 ----
+           string[ len++ ] = KE_CSI;
+       }
+  
+!      if (len > 0)
+       {
+!          add_to_input_buf(string, len);
+           return Pt_CONSUME;
+       }
+      }
+***************
+*** 630,646 ****
+  }
+  
+      static int
+! gui_ph_handle_mouse( PtWidget_t *widget, void *data, PtCallbackInfo_t *info )
+  {
+      PhPointerEvent_t *pointer;
+      PhRect_t      *pos;
+      int                   button = 0, repeated_click, modifiers = 0x0;
+      short         mouse_x, mouse_y;
+  
+!     pointer = PhGetData( info->event );
+!     pos = PhGetRects( info->event );
+  
+!     gui_mch_mousehide( MOUSE_SHOW );
+  
+      /*
+       * Coordinates need to be relative to the base window,
+--- 630,646 ----
+  }
+  
+      static int
+! gui_ph_handle_mouse(PtWidget_t *widget, void *data, PtCallbackInfo_t *info)
+  {
+      PhPointerEvent_t *pointer;
+      PhRect_t      *pos;
+      int                   button = 0, repeated_click, modifiers = 0x0;
+      short         mouse_x, mouse_y;
+  
+!     pointer = PhGetData(info->event);
+!     pos = PhGetRects(info->event);
+  
+!     gui_mch_mousehide(MOUSE_SHOW);
+  
+      /*
+       * Coordinates need to be relative to the base window,
+***************
+*** 649,675 ****
+      mouse_x = pos->ul.x + gui.border_width;
+      mouse_y = pos->ul.y + gui.border_width;
+  
+!     if( info->event->type == Ph_EV_PTR_MOTION_NOBUTTON )
+      {
+!      gui_mouse_moved( mouse_x, mouse_y );
+       return Pt_CONTINUE;
+      }
+  
+!     if( pointer->key_mods & Pk_KM_Shift )
+       modifiers |= MOUSE_SHIFT;
+!     if( pointer->key_mods & Pk_KM_Ctrl )
+       modifiers |= MOUSE_CTRL;
+!     if( pointer->key_mods & Pk_KM_Alt )
+       modifiers |= MOUSE_ALT;
+  
+      /*
+       * FIXME More than one button may be involved, but for
+       * now just deal with one
+       */
+!     if( pointer->buttons & Ph_BUTTON_SELECT )
+       button = MOUSE_LEFT;
+  
+!     if( pointer->buttons & Ph_BUTTON_MENU )
+      {
+       button = MOUSE_RIGHT;
+       /* Need the absolute coordinates for the popup menu */
+--- 649,675 ----
+      mouse_x = pos->ul.x + gui.border_width;
+      mouse_y = pos->ul.y + gui.border_width;
+  
+!     if (info->event->type == Ph_EV_PTR_MOTION_NOBUTTON)
+      {
+!      gui_mouse_moved(mouse_x, mouse_y);
+       return Pt_CONTINUE;
+      }
+  
+!     if (pointer->key_mods & Pk_KM_Shift)
+       modifiers |= MOUSE_SHIFT;
+!     if (pointer->key_mods & Pk_KM_Ctrl)
+       modifiers |= MOUSE_CTRL;
+!     if (pointer->key_mods & Pk_KM_Alt)
+       modifiers |= MOUSE_ALT;
+  
+      /*
+       * FIXME More than one button may be involved, but for
+       * now just deal with one
+       */
+!     if (pointer->buttons & Ph_BUTTON_SELECT)
+       button = MOUSE_LEFT;
+  
+!     if (pointer->buttons & Ph_BUTTON_MENU)
+      {
+       button = MOUSE_RIGHT;
+       /* Need the absolute coordinates for the popup menu */
+***************
+*** 677,705 ****
+       abs_mouse.y = pointer->pos.y;
+      }
+  
+!     if( pointer->buttons & Ph_BUTTON_ADJUST )
+       button = MOUSE_MIDDLE;
+  
+      /* Catch a real release (not phantom or other releases */
+!     if( info->event->type == Ph_EV_BUT_RELEASE )
+       button = MOUSE_RELEASE;
+  
+!     if( info->event->type & Ph_EV_PTR_MOTION_BUTTON )
+       button = MOUSE_DRAG;
+  
+  #if 0
+      /* Vim doesn't use button repeats */
+!     if( info->event->type & Ph_EV_BUT_REPEAT )
+       button = MOUSE_DRAG;
+  #endif
+  
+      /* Don't do anything if it is one of the phantom mouse release events */
+!     if( ( button != MOUSE_RELEASE ) ||
+!          ( info->event->subtype == Ph_EV_RELEASE_REAL ) )
+      {
+       repeated_click = (pointer->click_count >= 2) ? TRUE : FALSE;
+  
+!      gui_send_mouse_event( button , mouse_x, mouse_y, repeated_click, modifiers );
+      }
+  
+      return Pt_CONTINUE;
+--- 677,705 ----
+       abs_mouse.y = pointer->pos.y;
+      }
+  
+!     if (pointer->buttons & Ph_BUTTON_ADJUST)
+       button = MOUSE_MIDDLE;
+  
+      /* Catch a real release (not phantom or other releases */
+!     if (info->event->type == Ph_EV_BUT_RELEASE)
+       button = MOUSE_RELEASE;
+  
+!     if (info->event->type & Ph_EV_PTR_MOTION_BUTTON)
+       button = MOUSE_DRAG;
+  
+  #if 0
+      /* Vim doesn't use button repeats */
+!     if (info->event->type & Ph_EV_BUT_REPEAT)
+       button = MOUSE_DRAG;
+  #endif
+  
+      /* Don't do anything if it is one of the phantom mouse release events */
+!     if ((button != MOUSE_RELEASE) ||
+!          (info->event->subtype == Ph_EV_RELEASE_REAL))
+      {
+       repeated_click = (pointer->click_count >= 2) ? TRUE : FALSE;
+  
+!      gui_send_mouse_event(button , mouse_x, mouse_y, repeated_click, modifiers);
+      }
+  
+      return Pt_CONTINUE;
+***************
+*** 707,741 ****
+  
+  /* Handle a focus change of the PtRaw widget */
+      static int
+! gui_ph_handle_focus( PtWidget_t *widget, void *data, PtCallbackInfo_t *info )
+  {
+!     if( info->reason == Pt_CB_LOST_FOCUS )
+      {
+!      PtRemoveEventHandler( gui.vimTextArea, Ph_EV_PTR_MOTION_NOBUTTON,
+!              gui_ph_handle_mouse, NULL );
+  
+!      gui_mch_mousehide( MOUSE_SHOW );
+      }
+      else
+      {
+!      PtAddEventHandler( gui.vimTextArea, Ph_EV_PTR_MOTION_NOBUTTON,
+!              gui_ph_handle_mouse, NULL );
+      }
+      return Pt_CONTINUE;
+  }
+  
+      static void
+! gui_ph_handle_raw_draw( PtWidget_t *widget, PhTile_t *damage )
+  {
+      PhRect_t *r;
+      PhPoint_t        offset;
+      PhPoint_t        translation;
+  
+!     if( is_ignore_draw == TRUE )
+       return;
+  
+!     PtSuperClassDraw( PtBasic, widget, damage );
+!     PgGetTranslation( &translation );
+      PgClearTranslation();
+  
+  #if 0
+--- 707,741 ----
+  
+  /* Handle a focus change of the PtRaw widget */
+      static int
+! gui_ph_handle_focus(PtWidget_t *widget, void *data, PtCallbackInfo_t *info)
+  {
+!     if (info->reason == Pt_CB_LOST_FOCUS)
+      {
+!      PtRemoveEventHandler(gui.vimTextArea, Ph_EV_PTR_MOTION_NOBUTTON,
+!              gui_ph_handle_mouse, NULL);
+  
+!      gui_mch_mousehide(MOUSE_SHOW);
+      }
+      else
+      {
+!      PtAddEventHandler(gui.vimTextArea, Ph_EV_PTR_MOTION_NOBUTTON,
+!              gui_ph_handle_mouse, NULL);
+      }
+      return Pt_CONTINUE;
+  }
+  
+      static void
+! gui_ph_handle_raw_draw(PtWidget_t *widget, PhTile_t *damage)
+  {
+      PhRect_t *r;
+      PhPoint_t        offset;
+      PhPoint_t        translation;
+  
+!     if (is_ignore_draw == TRUE)
+       return;
+  
+!     PtSuperClassDraw(PtBasic, widget, damage);
+!     PgGetTranslation(&translation);
+      PgClearTranslation();
+  
+  #if 0
+***************
+*** 750,770 ****
+      out_flush();
+  #endif
+  
+!     PtWidgetOffset( widget, &offset );
+!     PhTranslatePoint( &offset, PtWidgetPos( gui.vimTextArea, NULL ) );
+  
+  #if 1
+      /* Redraw individual damage regions */
+!     if( damage->next != NULL )
+       damage = damage->next;
+  
+!     while( damage != NULL )
+      {
+       r = &damage->rect;
+       gui_redraw(
+               r->ul.x - offset.x, r->ul.y - offset.y,
+               r->lr.x - r->ul.x + 1,
+!              r->lr.y - r->ul.y + 1 );
+       damage = damage->next;
+      }
+  #else
+--- 750,770 ----
+      out_flush();
+  #endif
+  
+!     PtWidgetOffset(widget, &offset);
+!     PhTranslatePoint(&offset, PtWidgetPos(gui.vimTextArea, NULL));
+  
+  #if 1
+      /* Redraw individual damage regions */
+!     if (damage->next != NULL)
+       damage = damage->next;
+  
+!     while(damage != NULL)
+      {
+       r = &damage->rect;
+       gui_redraw(
+               r->ul.x - offset.x, r->ul.y - offset.y,
+               r->lr.x - r->ul.x + 1,
+!              r->lr.y - r->ul.y + 1);
+       damage = damage->next;
+      }
+  #else
+***************
+*** 773,796 ****
+      gui_redraw(
+           r->ul.x - offset.x, r->ul.y - offset.y,
+           r->lr.x - r->ul.x + 1,
+!          r->lr.y - r->ul.y + 1 );
+  #endif
+  
+!     PgSetTranslation( &translation, 0 );
+  }
+  
+      static int
+  gui_ph_handle_pulldown_menu(
+       PtWidget_t *widget,
+       void *data,
+!      PtCallbackInfo_t *info )
+  {
+!     if( data != NULL )
+      {
+       vimmenu_T *menu = (vimmenu_T *) data;
+  
+!      PtPositionMenu( menu->submenu_id, NULL );
+!      PtRealizeWidget( menu->submenu_id );
+      }
+  
+      return Pt_CONTINUE;
+--- 773,796 ----
+      gui_redraw(
+           r->ul.x - offset.x, r->ul.y - offset.y,
+           r->lr.x - r->ul.x + 1,
+!          r->lr.y - r->ul.y + 1);
+  #endif
+  
+!     PgSetTranslation(&translation, 0);
+  }
+  
+      static int
+  gui_ph_handle_pulldown_menu(
+       PtWidget_t *widget,
+       void *data,
+!      PtCallbackInfo_t *info)
+  {
+!     if (data != NULL)
+      {
+       vimmenu_T *menu = (vimmenu_T *) data;
+  
+!      PtPositionMenu(menu->submenu_id, NULL);
+!      PtRealizeWidget(menu->submenu_id);
+      }
+  
+      return Pt_CONTINUE;
+*** ../vim-7.3.298/src/version.c       2011-09-07 18:58:24.000000000 +0200
+--- src/version.c      2011-09-07 19:01:17.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     299,
+  /**/
+
+-- 
+The only way the average employee can speak to an executive is by taking a
+second job as a golf caddie.
+                               (Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.300.patch0 b/vim/patches/vim-7.3.300.patch0
new file mode 100644 (file)
index 0000000..132b14a
--- /dev/null
@@ -0,0 +1,74 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.300
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.300
+Problem:    Python doesn't parse multi-byte argument correctly.
+Solution:   Use "t" instead of "s". (lilydjwg)
+Files:     src/if_py_both.h
+
+
+*** ../vim-7.3.299/src/if_py_both.h    2011-07-07 15:08:53.000000000 +0200
+--- src/if_py_both.h   2011-09-07 19:25:12.000000000 +0200
+***************
+*** 74,80 ****
+      char *str = NULL;
+      int error = ((OutputObject *)(self))->error;
+  
+!     if (!PyArg_ParseTuple(args, "es#", ENC_OPT, &str, &len))
+       return NULL;
+  
+      Py_BEGIN_ALLOW_THREADS
+--- 74,80 ----
+      char *str = NULL;
+      int error = ((OutputObject *)(self))->error;
+  
+!     if (!PyArg_ParseTuple(args, "et#", ENC_OPT, &str, &len))
+       return NULL;
+  
+      Py_BEGIN_ALLOW_THREADS
+***************
+*** 114,120 ****
+       char *str = NULL;
+       PyInt len;
+  
+!      if (!PyArg_Parse(line, "es#", ENC_OPT, &str, &len)) {
+           PyErr_SetString(PyExc_TypeError, _("writelines() requires list of strings"));
+           Py_DECREF(list);
+           return NULL;
+--- 114,120 ----
+       char *str = NULL;
+       PyInt len;
+  
+!      if (!PyArg_Parse(line, "et#", ENC_OPT, &str, &len)) {
+           PyErr_SetString(PyExc_TypeError, _("writelines() requires list of strings"));
+           Py_DECREF(list);
+           return NULL;
+*** ../vim-7.3.299/src/version.c       2011-09-07 19:08:57.000000000 +0200
+--- src/version.c      2011-09-07 19:26:05.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     300,
+  /**/
+
+-- 
+A salesperson says:            Translation:
+"backward compatible"          Old technology
+"Premium"                      Overpriced
+"Can't keep it on the shelf"   Unavailable
+"Stands alone"                 Piece of shit
+"Proprietary"                  Incompatible
+                               (Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.301.patch0 b/vim/patches/vim-7.3.301.patch0
new file mode 100644 (file)
index 0000000..bb52974
--- /dev/null
@@ -0,0 +1,97 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.301
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.301
+Problem:    When 'smartindent' and 'copyindent' are set a Tab is used even
+           though 'expandtab' is set.
+Solution:   Do not insert Tabs. Add a test. (Christian Brabandt)
+Files:     src/misc1.c, src/testdir/test19.in, src/testdir/test19.ok
+
+
+*** ../vim-7.3.300/src/misc1.c 2011-07-27 17:31:42.000000000 +0200
+--- src/misc1.c        2011-09-07 19:37:04.000000000 +0200
+***************
+*** 363,369 ****
+  
+       /* Fill to next tabstop with a tab, if possible */
+       tab_pad = (int)curbuf->b_p_ts - (ind_done % (int)curbuf->b_p_ts);
+!      if (todo >= tab_pad)
+       {
+           todo -= tab_pad;
+           ++ind_len;
+--- 363,369 ----
+  
+       /* Fill to next tabstop with a tab, if possible */
+       tab_pad = (int)curbuf->b_p_ts - (ind_done % (int)curbuf->b_p_ts);
+!      if (todo >= tab_pad && !curbuf->b_p_et)
+       {
+           todo -= tab_pad;
+           ++ind_len;
+***************
+*** 372,378 ****
+       }
+  
+       /* Add tabs required for indent */
+!      while (todo >= (int)curbuf->b_p_ts)
+       {
+           todo -= (int)curbuf->b_p_ts;
+           ++ind_len;
+--- 372,378 ----
+       }
+  
+       /* Add tabs required for indent */
+!      while (todo >= (int)curbuf->b_p_ts && !curbuf->b_p_et)
+       {
+           todo -= (int)curbuf->b_p_ts;
+           ++ind_len;
+*** ../vim-7.3.300/src/testdir/test19.in       2010-08-15 21:57:29.000000000 +0200
+--- src/testdir/test19.in      2011-09-07 19:46:17.000000000 +0200
+***************
+*** 12,17 ****
+--- 12,20 ----
+  0wR                  \b\b\b\e
+  :" Test replacing with Tabs
+  0wR                  \e
++ :" Test that copyindent works with expandtab set
++ :set expandtab smartindent copyindent ts=8 sw=8 sts=8
++ :exe "norm! o{\<cr>x"
+  :?^start?,$w! test.out
+  :qa!
+  ENDTEST
+*** ../vim-7.3.300/src/testdir/test19.ok       2010-08-15 21:57:29.000000000 +0200
+--- src/testdir/test19.ok      2011-09-07 19:37:04.000000000 +0200
+***************
+*** 5,7 ****
+--- 5,9 ----
+      a cde
+               hi
+  test text
++ {
++         x
+*** ../vim-7.3.300/src/version.c       2011-09-07 19:30:17.000000000 +0200
+--- src/version.c      2011-09-07 19:38:48.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     301,
+  /**/
+
+-- 
+I recommend ordering large cargo containers of paper towels to make up
+whatever budget underruns you have.  Paper products are always useful and they
+have the advantage of being completely flushable if you need to make room in
+the storage area later.
+                               (Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.302.patch0 b/vim/patches/vim-7.3.302.patch0
new file mode 100644 (file)
index 0000000..f8d2c24
--- /dev/null
@@ -0,0 +1,68 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.302
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.302 (after 7.3.301)
+Problem:    Test 19 fails without 'smartindent' and +eval.
+Solution:   Don't use ":exe". Source small.vim.
+Files:     src/testdir/test19.in
+
+
+*** ../vim-7.3.301/src/testdir/test19.in       2011-09-07 19:58:04.000000000 +0200
+--- src/testdir/test19.in      2011-09-08 20:32:33.000000000 +0200
+***************
+*** 1,6 ****
+--- 1,7 ----
+  Tests for "r<Tab>" with 'smarttab' and 'expandtab' set/not set.
+  
+  STARTTEST
++ :so small.vim
+  :set smarttab expandtab ts=8 sw=4
+  :" make sure that backspace works, no matter what termcap is used
+  :set t_kD=\16x7f t_kb=\16x08
+***************
+*** 14,21 ****
+  0wR                  \e
+  :" Test that copyindent works with expandtab set
+  :set expandtab smartindent copyindent ts=8 sw=8 sts=8
+! :exe "norm! o{\<cr>x"
+! :?^start?,$w! test.out
+  :qa!
+  ENDTEST
+  
+--- 15,22 ----
+  0wR                  \e
+  :" Test that copyindent works with expandtab set
+  :set expandtab smartindent copyindent ts=8 sw=8 sts=8
+! o{
+! x\e:?^start?,$w! test.out
+  :qa!
+  ENDTEST
+  
+*** ../vim-7.3.301/src/version.c       2011-09-07 19:58:04.000000000 +0200
+--- src/version.c      2011-09-08 23:22:01.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     302,
+  /**/
+
+-- 
+Engineers are always delighted to share wisdom, even in areas in which they
+have no experience whatsoever.  Their logic provides them with inherent
+insight into any field of expertise.  This can be a problem when dealing with
+the illogical people who believe that knowledge can only be derived through
+experience.
+                               (Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.303.patch0 b/vim/patches/vim-7.3.303.patch0
new file mode 100644 (file)
index 0000000..f85bf68
--- /dev/null
@@ -0,0 +1,55 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.303
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.303 (after 7.3.296)
+Problem:    Compilation error.
+Solution:   Correct return type from int to pid_t. (Danek Duvall)
+Files:     src/os_unix.c
+
+
+*** ../vim-7.3.302/src/os_unix.c       2011-09-07 15:04:26.000000000 +0200
+--- src/os_unix.c      2011-09-08 20:47:47.000000000 +0200
+***************
+*** 159,165 ****
+  #else
+  typedef int waitstatus;
+  #endif
+! static int  wait4pid __ARGS((pid_t, waitstatus *));
+  
+  static int  WaitForChar __ARGS((long));
+  #if defined(__BEOS__)
+--- 159,165 ----
+  #else
+  typedef int waitstatus;
+  #endif
+! static pid_t wait4pid __ARGS((pid_t, waitstatus *));
+  
+  static int  WaitForChar __ARGS((long));
+  #if defined(__BEOS__)
+*** ../vim-7.3.302/src/version.c       2011-09-08 23:22:35.000000000 +0200
+--- src/version.c      2011-09-08 23:23:43.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     303,
+  /**/
+
+-- 
+For humans, honesty is a matter of degree.  Engineers are always honest in
+matters of technology and human relationships.  That's why it's a good idea
+to keep engineers away from customers, romantic interests, and other people
+who can't handle the truth.
+                               (Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.304.patch0 b/vim/patches/vim-7.3.304.patch0
new file mode 100644 (file)
index 0000000..6abfe9c
--- /dev/null
@@ -0,0 +1,103 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.304
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.304
+Problem:    Strawberry Perl doesn't work on MS-Windows.
+Solution:   Use xsubpp if needed. (Yasuhiro Matsumoto)
+Files:     src/Make_ming.mak, src/Make_mvc.mak
+
+
+*** ../vim-7.3.303/src/Make_ming.mak   2011-06-19 01:30:01.000000000 +0200
+--- src/Make_ming.mak  2011-09-14 10:44:55.000000000 +0200
+***************
+*** 108,113 ****
+--- 108,120 ----
+  # on NT, it's here:
+  PERLLIB=$(PERL)/lib
+  PERLLIBS=$(PERLLIB)/Core
++ XSUBPP=$(PERLLIB)/ExtUtils/xsubpp
++ XSUBPP_EXISTS=$(shell perl -e "print 1 unless -e '$(XSUBPP)'")
++ ifeq "$(XSUBPP_EXISTS)" ""
++ XSUBPP=perl $(XSUBPP)
++ else
++ XSUBPP=xsubpp
++ endif
+  endif
+  
+  # uncomment 'LUA' if you want a Lua-enabled version
+***************
+*** 696,702 ****
+  endif
+  
+  if_perl.c: if_perl.xs typemap
+!      perl $(PERLLIB)/ExtUtils/xsubpp -prototypes -typemap \
+            $(PERLLIB)/ExtUtils/typemap if_perl.xs > $@
+  
+  $(OUTDIR)/netbeans.o:        netbeans.c $(INCL) $(NBDEBUG_INCL) $(NBDEBUG_SRC)
+--- 703,709 ----
+  endif
+  
+  if_perl.c: if_perl.xs typemap
+!      $(XSUBPP) -prototypes -typemap \
+            $(PERLLIB)/ExtUtils/typemap if_perl.xs > $@
+  
+  $(OUTDIR)/netbeans.o:        netbeans.c $(INCL) $(NBDEBUG_INCL) $(NBDEBUG_SRC)
+*** ../vim-7.3.303/src/Make_mvc.mak    2011-06-12 20:31:25.000000000 +0200
+--- src/Make_mvc.mak   2011-09-14 10:46:08.000000000 +0200
+***************
+*** 785,790 ****
+--- 785,795 ----
+  PERL_INC = /I $(PERL_INCDIR)
+  PERL_OBJ = $(OUTDIR)\if_perl.obj $(OUTDIR)\if_perlsfio.obj
+  XSUBPP = $(PERL)\lib\ExtUtils\xsubpp
++ !if exist($(XSUBPP)
++ XSUBPP = $(PERL_EXE) $(XSUBPP)
++ !else
++ XSUBPP = xsubpp
++ !endif
+  XSUBPP_TYPEMAP = $(PERL)\lib\ExtUtils\typemap
+  
+  !endif
+***************
+*** 1041,1047 ****
+       $(CC) $(CFLAGS) $(LUA_INC) if_lua.c
+  
+  if_perl.c : if_perl.xs typemap
+!      $(PERL_EXE) $(XSUBPP) -prototypes -typemap $(XSUBPP_TYPEMAP) \
+               -typemap typemap if_perl.xs > if_perl.c
+  
+  $(OUTDIR)/if_perl.obj: $(OUTDIR) if_perl.c  $(INCL)
+--- 1046,1052 ----
+       $(CC) $(CFLAGS) $(LUA_INC) if_lua.c
+  
+  if_perl.c : if_perl.xs typemap
+!      $(XSUBPP) -prototypes -typemap $(XSUBPP_TYPEMAP) \
+               -typemap typemap if_perl.xs > if_perl.c
+  
+  $(OUTDIR)/if_perl.obj: $(OUTDIR) if_perl.c  $(INCL)
+*** ../vim-7.3.303/src/version.c       2011-09-08 23:24:09.000000000 +0200
+--- src/version.c      2011-09-14 10:47:41.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     304,
+  /**/
+
+-- 
+It's totally unfair to suggest - as many have - that engineers are socially
+inept.  Engineers simply have different objectives when it comes to social
+interaction.
+                               (Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.305.patch0 b/vim/patches/vim-7.3.305.patch0
new file mode 100644 (file)
index 0000000..e70fd59
--- /dev/null
@@ -0,0 +1,58 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.305
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.305
+Problem:    Auto-loading a function while editing the command line causes
+           scrolling up the display.
+Solution:   Don't set msg_scroll when defining a function and the user is not
+           typing. (Yasuhiro Matsumoto)
+Files:     src/eval.c
+
+
+*** ../vim-7.3.304/src/eval.c  2011-08-17 15:23:16.000000000 +0200
+--- src/eval.c 2011-09-14 14:28:21.000000000 +0200
+***************
+*** 20786,20792 ****
+      nesting = 0;
+      for (;;)
+      {
+!      msg_scroll = TRUE;
+       need_wait_return = FALSE;
+       sourcing_lnum_off = sourcing_lnum;
+  
+--- 20786,20793 ----
+      nesting = 0;
+      for (;;)
+      {
+!      if (KeyTyped)
+!          msg_scroll = TRUE;
+       need_wait_return = FALSE;
+       sourcing_lnum_off = sourcing_lnum;
+  
+*** ../vim-7.3.304/src/version.c       2011-09-14 10:49:44.000000000 +0200
+--- src/version.c      2011-09-14 14:30:49.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     305,
+  /**/
+
+-- 
+If someone questions your market projections, simply point out that your
+target market is "People who are nuts" and "People who will buy any damn
+thing".  Nobody is going to tell you there aren't enough of those people
+to go around.
+                               (Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.306.patch0 b/vim/patches/vim-7.3.306.patch0
new file mode 100644 (file)
index 0000000..62bd4cf
--- /dev/null
@@ -0,0 +1,244 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.306
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.306
+Problem:    When closing a window there is a chance that deleting a scrollbar
+           triggers a GUI resize, which uses the window while it is not in a
+           valid state.
+Solution:   Set the buffer pointer to NULL to be able to detect the invalid
+           situation.  Fix a few places that used the buffer pointer
+           incorrectly.
+Files:     src/buffer.c, src/ex_cmds.c, src/term.c, src/window.c
+
+
+*** ../vim-7.3.305/src/buffer.c        2011-05-19 13:40:47.000000000 +0200
+--- src/buffer.c       2011-09-10 13:46:59.000000000 +0200
+***************
+*** 416,421 ****
+--- 416,423 ----
+  #endif
+  
+      buf_freeall(buf, (del_buf ? BFA_DEL : 0) + (wipe_buf ? BFA_WIPE : 0));
++     if (win_valid(win) && win->w_buffer == buf)
++      win->w_buffer = NULL;  /* make sure we don't use the buffer now */
+  
+  #ifdef FEAT_AUTOCMD
+      /* Autocommands may have deleted the buffer. */
+***************
+*** 560,565 ****
+--- 562,571 ----
+  #ifdef FEAT_DIFF
+      diff_buf_delete(buf);        /* Can't use 'diff' for unloaded buffer. */
+  #endif
++ #ifdef FEAT_SYN_HL
++     if (curwin->w_buffer == buf)
++      reset_synblock(curwin);     /* remove any ownsyntax */
++ #endif
+  
+  #ifdef FEAT_FOLDING
+      /* No folds in an empty buffer. */
+***************
+*** 1346,1351 ****
+--- 1352,1361 ----
+  # endif
+  #endif
+      {
++ #ifdef FEAT_SYN_HL
++      if (prevbuf == curwin->w_buffer)
++          reset_synblock(curwin);
++ #endif
+  #ifdef FEAT_WINDOWS
+       if (unload)
+           close_windows(prevbuf, FALSE);
+***************
+*** 1395,1404 ****
+      foldUpdateAll(curwin);   /* update folds (later). */
+  #endif
+  
+- #ifdef FEAT_SYN_HL
+-     reset_synblock(curwin);
+-     curwin->w_s = &(buf->b_s);
+- #endif
+      /* Get the buffer in the current window. */
+      curwin->w_buffer = buf;
+      curbuf = buf;
+--- 1405,1410 ----
+***************
+*** 1409,1414 ****
+--- 1415,1424 ----
+       diff_buf_add(curbuf);
+  #endif
+  
++ #ifdef FEAT_SYN_HL
++     curwin->w_s = &(buf->b_s);
++ #endif
++ 
+      /* Cursor on first line by default. */
+      curwin->w_cursor.lnum = 1;
+      curwin->w_cursor.col = 0;
+*** ../vim-7.3.305/src/ex_cmds.c       2011-07-07 16:20:45.000000000 +0200
+--- src/ex_cmds.c      2011-09-10 13:39:13.000000000 +0200
+***************
+*** 3619,3628 ****
+       */
+      check_arg_idx(curwin);
+  
+- #ifdef FEAT_SYN_HL
+-     reset_synblock(curwin);      /* remove any ownsyntax */
+- #endif
+- 
+  #ifdef FEAT_AUTOCMD
+      if (!auto_buf)
+  #endif
+--- 3619,3624 ----
+*** ../vim-7.3.305/src/term.c  2011-05-10 16:41:13.000000000 +0200
+--- src/term.c 2011-09-14 14:39:39.000000000 +0200
+***************
+*** 3017,3028 ****
+      if (width < 0 || height < 0)    /* just checking... */
+       return;
+  
+!     if (State == HITRETURN || State == SETWSIZE) /* postpone the resizing */
+      {
+       State = SETWSIZE;
+       return;
+      }
+  
+      ++busy;
+  
+  #ifdef AMIGA
+--- 3017,3036 ----
+      if (width < 0 || height < 0)    /* just checking... */
+       return;
+  
+!     if (State == HITRETURN || State == SETWSIZE)
+      {
++      /* postpone the resizing */
+       State = SETWSIZE;
+       return;
+      }
+  
++     /* curwin->w_buffer can be NULL when we are closing a window and the
++      * buffer has already been closed and removing a scrollbar causes a resize
++      * event. Don't resize then, it will happen after entering another buffer.
++      */
++     if (curwin->w_buffer == NULL)
++      return;
++ 
+      ++busy;
+  
+  #ifdef AMIGA
+*** ../vim-7.3.305/src/window.c        2011-01-08 14:45:57.000000000 +0100
+--- src/window.c       2011-09-10 14:04:56.000000000 +0200
+***************
+*** 1226,1240 ****
+      }
+      newp->w_tagstackidx = oldp->w_tagstackidx;
+      newp->w_tagstacklen = oldp->w_tagstacklen;
+! # ifdef FEAT_FOLDING
+      copyFoldingState(oldp, newp);
+! # endif
+  
+      win_init_some(newp, oldp);
+  
+! # ifdef FEAT_SYN_HL
+      check_colorcolumn(newp);
+! # endif
+  }
+  
+  /*
+--- 1226,1240 ----
+      }
+      newp->w_tagstackidx = oldp->w_tagstackidx;
+      newp->w_tagstacklen = oldp->w_tagstacklen;
+! #ifdef FEAT_FOLDING
+      copyFoldingState(oldp, newp);
+! #endif
+  
+      win_init_some(newp, oldp);
+  
+! #ifdef FEAT_SYN_HL
+      check_colorcolumn(newp);
+! #endif
+  }
+  
+  /*
+***************
+*** 2212,2217 ****
+--- 2212,2222 ----
+       out_flush();
+  #endif
+  
++ #ifdef FEAT_SYN_HL
++     /* Free independent synblock before the buffer is freed. */
++     reset_synblock(win);
++ #endif
++ 
+      /*
+       * Close the link to the buffer.
+       */
+***************
+*** 2222,2228 ****
+      if (!win_valid(win) || last_window() || curtab != prev_curtab)
+       return;
+  
+!     /* Free the memory used for the window. */
+      wp = win_free_mem(win, &dir, NULL);
+  
+      /* Make sure curwin isn't invalid.  It can cause severe trouble when
+--- 2227,2234 ----
+      if (!win_valid(win) || last_window() || curtab != prev_curtab)
+       return;
+  
+!     /* Free the memory used for the window and get the window that received
+!      * the screen space. */
+      wp = win_free_mem(win, &dir, NULL);
+  
+      /* Make sure curwin isn't invalid.  It can cause severe trouble when
+***************
+*** 3247,3252 ****
+--- 3253,3261 ----
+      else
+       wp->w_farsi = W_CONV;
+  #endif
++ #ifdef FEAT_SYN_HL
++     wp->w_s = &wp->w_buffer->b_s;
++ #endif
+  }
+  
+  /*
+***************
+*** 4437,4443 ****
+  #endif /* FEAT_GUI */
+  
+  #ifdef FEAT_SYN_HL
+-     reset_synblock(wp);  /* free independent synblock */
+      vim_free(wp->w_p_cc_cols);
+  #endif
+  
+--- 4446,4451 ----
+*** ../vim-7.3.305/src/version.c       2011-09-14 14:33:47.000000000 +0200
+--- src/version.c      2011-09-14 14:35:30.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     306,
+  /**/
+
+-- 
+A consultant is a person who takes your money and annoys your employees while
+tirelessly searching for the best way to extend the consulting contract.
+                               (Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.307.patch0 b/vim/patches/vim-7.3.307.patch0
new file mode 100644 (file)
index 0000000..3fd95e1
--- /dev/null
@@ -0,0 +1,180 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.307
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.307
+Problem:    Python 3 doesn't support slice assignment.
+Solution:   Implement slices. (Brett Overesch, Roland Puntaier)
+Files:     src/if_python3.c
+
+
+*** ../vim-7.3.306/src/if_python3.c    2011-08-28 16:00:14.000000000 +0200
+--- src/if_python3.c   2011-09-14 15:01:26.000000000 +0200
+***************
+*** 855,862 ****
+  
+  static Py_ssize_t BufferLength(PyObject *);
+  static PyObject *BufferItem(PyObject *, Py_ssize_t);
+! static PyObject* BufferSubscript(PyObject *self, PyObject* idx);
+! static Py_ssize_t BufferAsSubscript(PyObject *self, PyObject* idx, PyObject* val);
+  
+  
+  /* Line range type - Implementation functions
+--- 855,862 ----
+  
+  static Py_ssize_t BufferLength(PyObject *);
+  static PyObject *BufferItem(PyObject *, Py_ssize_t);
+! static PyObject* BufferSubscript(PyObject *self, PyObject *idx);
+! static Py_ssize_t BufferAsSubscript(PyObject *self, PyObject *idx, PyObject *val);
+  
+  
+  /* Line range type - Implementation functions
+***************
+*** 865,872 ****
+  
+  #define RangeType_Check(obj) ((obj)->ob_base.ob_type == &RangeType)
+  
+! static PyObject* RangeSubscript(PyObject *self, PyObject* idx);
+  static Py_ssize_t RangeAsItem(PyObject *, Py_ssize_t, PyObject *);
+  
+  /* Current objects type - Implementation functions
+   * -----------------------------------------------
+--- 865,873 ----
+  
+  #define RangeType_Check(obj) ((obj)->ob_base.ob_type == &RangeType)
+  
+! static PyObject* RangeSubscript(PyObject *self, PyObject *idx);
+  static Py_ssize_t RangeAsItem(PyObject *, Py_ssize_t, PyObject *);
++ static Py_ssize_t RangeAsSubscript(PyObject *self, PyObject *idx, PyObject *val);
+  
+  /* Current objects type - Implementation functions
+   * -----------------------------------------------
+***************
+*** 1035,1041 ****
+             &step, &slicelen) < 0) {
+           return NULL;
+       }
+!      return BufferSlice(self,start,stop);
+      } else {
+       PyErr_SetString(PyExc_IndexError, "Index must be int or slice");
+       return NULL;
+--- 1036,1042 ----
+             &step, &slicelen) < 0) {
+           return NULL;
+       }
+!      return BufferSlice(self, start, stop);
+      } else {
+       PyErr_SetString(PyExc_IndexError, "Index must be int or slice");
+       return NULL;
+***************
+*** 1084,1090 ****
+  PyMappingMethods RangeAsMapping = {
+      /* mp_length     */ (lenfunc)RangeLength,
+      /* mp_subscript     */ (binaryfunc)RangeSubscript,
+!     /* mp_ass_subscript */ (objobjargproc)0,
+  };
+  
+  /* Line range object - Implementation
+--- 1085,1091 ----
+  PyMappingMethods RangeAsMapping = {
+      /* mp_length     */ (lenfunc)RangeLength,
+      /* mp_subscript     */ (binaryfunc)RangeSubscript,
+!     /* mp_ass_subscript */ (objobjargproc)RangeAsSubscript,
+  };
+  
+  /* Line range object - Implementation
+***************
+*** 1123,1128 ****
+--- 1124,1138 ----
+                   &((RangeObject *)(self))->end);
+  }
+  
++     static Py_ssize_t
++ RangeAsSlice(PyObject *self, Py_ssize_t lo, Py_ssize_t hi, PyObject *val)
++ {
++     return RBAsSlice(((RangeObject *)(self))->buf, lo, hi, val,
++                  ((RangeObject *)(self))->start,
++                  ((RangeObject *)(self))->end,
++                  &((RangeObject *)(self))->end);
++ }
++ 
+      static PyObject *
+  RangeSubscript(PyObject *self, PyObject* idx)
+  {
+***************
+*** 1138,1150 ****
+               &step, &slicelen) < 0) {
+           return NULL;
+       }
+!      return RangeSlice(self,start,stop+1);
+      } else {
+       PyErr_SetString(PyExc_IndexError, "Index must be int or slice");
+       return NULL;
+      }
+  }
+  
+  /* Buffer list object - Definitions
+   */
+  
+--- 1148,1183 ----
+               &step, &slicelen) < 0) {
+           return NULL;
+       }
+!      return RangeSlice(self, start, stop);
+      } else {
+       PyErr_SetString(PyExc_IndexError, "Index must be int or slice");
+       return NULL;
+      }
+  }
+  
++     static Py_ssize_t
++ RangeAsSubscript(PyObject *self, PyObject *idx, PyObject *val)
++ {
++     if (PyLong_Check(idx)) {
++      long n = PyLong_AsLong(idx);
++      return RangeAsItem(self, n, val);
++     } else if (PySlice_Check(idx)) {
++      Py_ssize_t start, stop, step, slicelen;
++ 
++      if (PySlice_GetIndicesEx((PySliceObject *)idx,
++              ((RangeObject *)(self))->end-((RangeObject *)(self))->start+1,
++              &start, &stop,
++              &step, &slicelen) < 0) {
++          return -1;
++      }
++      return RangeAsSlice(self, start, stop, val);
++     } else {
++      PyErr_SetString(PyExc_IndexError, "Index must be int or slice");
++      return -1;
++     }
++ }
++ 
++ 
+  /* Buffer list object - Definitions
+   */
+  
+*** ../vim-7.3.306/src/version.c       2011-09-14 14:43:21.000000000 +0200
+--- src/version.c      2011-09-14 14:58:16.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     307,
+  /**/
+
+-- 
+The process for understanding customers primarily involves sitting around with
+other marketing people and talking about what you would to if you were dumb
+enough to be a customer.
+                               (Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.308.patch0 b/vim/patches/vim-7.3.308.patch0
new file mode 100644 (file)
index 0000000..36e5de5
--- /dev/null
@@ -0,0 +1,260 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.308
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.308
+Problem:    Writing to 'verbosefile' has problems, e.g. for :highlight.
+Solution:   Do not use a separate verbose_write() function but write with the
+           same code that does redirecting. (Yasuhiro Matsumoto)
+Files:     src/message.c
+
+
+*** ../vim-7.3.307/src/message.c       2011-08-17 20:33:18.000000000 +0200
+--- src/message.c      2011-09-14 15:32:57.000000000 +0200
+***************
+*** 39,45 ****
+  static void msg_screen_putchar __ARGS((int c, int attr));
+  static int  msg_check_screen __ARGS((void));
+  static void redir_write __ARGS((char_u *s, int maxlen));
+- static void verbose_write __ARGS((char_u *s, int maxlen));
+  #ifdef FEAT_CON_DIALOG
+  static char_u *msg_show_console_dialog __ARGS((char_u *message, char_u *buttons, int dfltbutton));
+  static int   confirm_msg_used = FALSE;       /* displaying confirm_msg */
+--- 39,44 ----
+***************
+*** 58,63 ****
+--- 57,65 ----
+  static struct msg_hist *last_msg_hist = NULL;
+  static int msg_hist_len = 0;
+  
++ static FILE *verbose_fd = NULL;
++ static int  verbose_did_open = FALSE;
++ 
+  /*
+   * When writing messages to the screen, there are many different situations.
+   * A number of variables is used to remember the current state:
+***************
+*** 1551,1557 ****
+  #ifdef FEAT_MBYTE
+      if (has_mbyte && !IS_SPECIAL(c))
+      {
+!         int len = (*mb_ptr2len)(str);
+  
+       /* For multi-byte characters check for an illegal byte. */
+       if (has_mbyte && MB_BYTE2LEN(*str) > len)
+--- 1553,1559 ----
+  #ifdef FEAT_MBYTE
+      if (has_mbyte && !IS_SPECIAL(c))
+      {
+!      int len = (*mb_ptr2len)(str);
+  
+       /* For multi-byte characters check for an illegal byte. */
+       if (has_mbyte && MB_BYTE2LEN(*str) > len)
+***************
+*** 1560,1569 ****
+           *sp = str + 1;
+           return buf;
+       }
+!         /* Since 'special' is TRUE the multi-byte character 'c' will be
+!          * processed by get_special_key_name() */
+!         c = (*mb_ptr2char)(str);
+!         *sp = str + len;
+      }
+      else
+  #endif
+--- 1562,1571 ----
+           *sp = str + 1;
+           return buf;
+       }
+!      /* Since 'special' is TRUE the multi-byte character 'c' will be
+!       * processed by get_special_key_name() */
+!      c = (*mb_ptr2char)(str);
+!      *sp = str + len;
+      }
+      else
+  #endif
+***************
+*** 3065,3076 ****
+      if (redir_off)
+       return;
+  
+!     /*
+!      * If 'verbosefile' is set write message in that file.
+!      * Must come before the rest because of updating "msg_col".
+!      */
+!     if (*p_vfile != NUL)
+!      verbose_write(s, maxlen);
+  
+      if (redirecting())
+      {
+--- 3067,3075 ----
+      if (redir_off)
+       return;
+  
+!     /* If 'verbosefile' is set prepare for writing in that file. */
+!     if (*p_vfile != NUL && verbose_fd == NULL)
+!      verbose_open();
+  
+      if (redirecting())
+      {
+***************
+*** 3084,3092 ****
+                   write_reg_contents(redir_reg, (char_u *)" ", -1, TRUE);
+               else if (redir_vname)
+                   var_redir_str((char_u *)" ", -1);
+!              else if (redir_fd)
+  #endif
+                   fputs(" ", redir_fd);
+               ++cur_col;
+           }
+       }
+--- 3083,3094 ----
+                   write_reg_contents(redir_reg, (char_u *)" ", -1, TRUE);
+               else if (redir_vname)
+                   var_redir_str((char_u *)" ", -1);
+!              else
+  #endif
++                  if (redir_fd != NULL)
+                   fputs(" ", redir_fd);
++              if (verbose_fd != NULL)
++                  fputs(" ", verbose_fd);
+               ++cur_col;
+           }
+       }
+***************
+*** 3098,3110 ****
+           var_redir_str(s, maxlen);
+  #endif
+  
+!      /* Adjust the current column */
+       while (*s != NUL && (maxlen < 0 || (int)(s - str) < maxlen))
+       {
+  #ifdef FEAT_EVAL
+!          if (!redir_reg && !redir_vname && redir_fd != NULL)
+  #endif
+!              putc(*s, redir_fd);
+           if (*s == '\r' || *s == '\n')
+               cur_col = 0;
+           else if (*s == '\t')
+--- 3100,3115 ----
+           var_redir_str(s, maxlen);
+  #endif
+  
+!      /* Write and adjust the current column. */
+       while (*s != NUL && (maxlen < 0 || (int)(s - str) < maxlen))
+       {
+  #ifdef FEAT_EVAL
+!          if (!redir_reg && !redir_vname)
+  #endif
+!              if (redir_fd != NULL)
+!                  putc(*s, redir_fd);
+!          if (verbose_fd != NULL)
+!              putc(*s, verbose_fd);
+           if (*s == '\r' || *s == '\n')
+               cur_col = 0;
+           else if (*s == '\t')
+***************
+*** 3122,3128 ****
+      int
+  redirecting()
+  {
+!     return redir_fd != NULL
+  #ifdef FEAT_EVAL
+                         || redir_reg || redir_vname
+  #endif
+--- 3127,3133 ----
+      int
+  redirecting()
+  {
+!     return redir_fd != NULL || *p_vfile != NUL
+  #ifdef FEAT_EVAL
+                         || redir_reg || redir_vname
+  #endif
+***************
+*** 3180,3188 ****
+       cmdline_row = msg_row;
+  }
+  
+- static FILE *verbose_fd = NULL;
+- static int  verbose_did_open = FALSE;
+- 
+  /*
+   * Called when 'verbosefile' is set: stop writing to the file.
+   */
+--- 3185,3190 ----
+***************
+*** 3220,3268 ****
+  }
+  
+  /*
+-  * Write a string to 'verbosefile'.
+-  * When "maxlen" is -1 write the whole string, otherwise up to "maxlen" bytes.
+-  */
+-     static void
+- verbose_write(str, maxlen)
+-     char_u   *str;
+-     int              maxlen;
+- {
+-     char_u   *s = str;
+-     static int       cur_col = 0;
+- 
+-     /* Open the file when called the first time. */
+-     if (verbose_fd == NULL)
+-      verbose_open();
+- 
+-     if (verbose_fd != NULL)
+-     {
+-      /* If the string doesn't start with CR or NL, go to msg_col */
+-      if (*s != '\n' && *s != '\r')
+-      {
+-          while (cur_col < msg_col)
+-          {
+-              fputs(" ", verbose_fd);
+-              ++cur_col;
+-          }
+-      }
+- 
+-      /* Adjust the current column */
+-      while (*s != NUL && (maxlen < 0 || (int)(s - str) < maxlen))
+-      {
+-          putc(*s, verbose_fd);
+-          if (*s == '\r' || *s == '\n')
+-              cur_col = 0;
+-          else if (*s == '\t')
+-              cur_col += (8 - cur_col % 8);
+-          else
+-              ++cur_col;
+-          ++s;
+-      }
+-     }
+- }
+- 
+- /*
+   * Give a warning message (for searching).
+   * Use 'w' highlighting and may repeat the message after redrawing
+   */
+--- 3222,3227 ----
+*** ../vim-7.3.307/src/version.c       2011-09-14 15:01:54.000000000 +0200
+--- src/version.c      2011-09-14 15:38:31.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     308,
+  /**/
+
+-- 
+The average life of an organization chart is six months.  You can safely
+ignore any order from your boss that would take six months to complete.
+                               (Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.309.patch0 b/vim/patches/vim-7.3.309.patch0
new file mode 100644 (file)
index 0000000..f274284
--- /dev/null
@@ -0,0 +1,105 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.309
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.309 (after 7.3.307)
+Problem:    Warnings for pointer types.
+Solution:   Change PySliceObject to PyObject.
+Files:     src/if_python3.c
+
+
+*** ../vim-7.3.308/src/if_python3.c    2011-09-14 15:01:54.000000000 +0200
+--- src/if_python3.c   2011-09-14 15:30:45.000000000 +0200
+***************
+*** 1030,1036 ****
+      } else if (PySlice_Check(idx)) {
+       Py_ssize_t start, stop, step, slicelen;
+  
+!      if (PySlice_GetIndicesEx((PySliceObject *)idx,
+             (Py_ssize_t)((BufferObject *)(self))->buf->b_ml.ml_line_count+1,
+             &start, &stop,
+             &step, &slicelen) < 0) {
+--- 1030,1036 ----
+      } else if (PySlice_Check(idx)) {
+       Py_ssize_t start, stop, step, slicelen;
+  
+!      if (PySlice_GetIndicesEx((PyObject *)idx,
+             (Py_ssize_t)((BufferObject *)(self))->buf->b_ml.ml_line_count+1,
+             &start, &stop,
+             &step, &slicelen) < 0) {
+***************
+*** 1054,1060 ****
+      } else if (PySlice_Check(idx)) {
+       Py_ssize_t start, stop, step, slicelen;
+  
+!      if (PySlice_GetIndicesEx((PySliceObject *)idx,
+             (Py_ssize_t)((BufferObject *)(self))->buf->b_ml.ml_line_count+1,
+             &start, &stop,
+             &step, &slicelen) < 0) {
+--- 1054,1060 ----
+      } else if (PySlice_Check(idx)) {
+       Py_ssize_t start, stop, step, slicelen;
+  
+!      if (PySlice_GetIndicesEx((PyObject *)idx,
+             (Py_ssize_t)((BufferObject *)(self))->buf->b_ml.ml_line_count+1,
+             &start, &stop,
+             &step, &slicelen) < 0) {
+***************
+*** 1142,1148 ****
+      } else if (PySlice_Check(idx)) {
+       Py_ssize_t start, stop, step, slicelen;
+  
+!      if (PySlice_GetIndicesEx((PySliceObject *)idx,
+               ((RangeObject *)(self))->end-((RangeObject *)(self))->start+1,
+               &start, &stop,
+               &step, &slicelen) < 0) {
+--- 1142,1148 ----
+      } else if (PySlice_Check(idx)) {
+       Py_ssize_t start, stop, step, slicelen;
+  
+!      if (PySlice_GetIndicesEx((PyObject *)idx,
+               ((RangeObject *)(self))->end-((RangeObject *)(self))->start+1,
+               &start, &stop,
+               &step, &slicelen) < 0) {
+***************
+*** 1164,1170 ****
+      } else if (PySlice_Check(idx)) {
+       Py_ssize_t start, stop, step, slicelen;
+  
+!      if (PySlice_GetIndicesEx((PySliceObject *)idx,
+               ((RangeObject *)(self))->end-((RangeObject *)(self))->start+1,
+               &start, &stop,
+               &step, &slicelen) < 0) {
+--- 1164,1170 ----
+      } else if (PySlice_Check(idx)) {
+       Py_ssize_t start, stop, step, slicelen;
+  
+!      if (PySlice_GetIndicesEx((PyObject *)idx,
+               ((RangeObject *)(self))->end-((RangeObject *)(self))->start+1,
+               &start, &stop,
+               &step, &slicelen) < 0) {
+*** ../vim-7.3.308/src/version.c       2011-09-14 15:39:26.000000000 +0200
+--- src/version.c      2011-09-14 15:40:17.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     309,
+  /**/
+
+-- 
+Never enter the boss's office unless it's absolutely necessary.  Every boss
+saves one corner of the desk for useless assignments that are doled out like
+Halloween candy to each visitor.
+                               (Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.310.patch0 b/vim/patches/vim-7.3.310.patch0
new file mode 100644 (file)
index 0000000..e3ffa5a
--- /dev/null
@@ -0,0 +1,3524 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.310
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.310
+Problem:    Code not following Vim style.
+Solution:   Fix the style. (Elias Diem)
+Files:     src/gui_photon.c
+
+
+*** ../vim-7.3.309/src/gui_photon.c    2011-09-07 19:08:57.000000000 +0200
+--- src/gui_photon.c   2011-09-14 16:01:55.000000000 +0200
+***************
+*** 477,483 ****
+       }
+  #endif
+  
+!      for(i = 0; special_keys[i].key_sym != 0; i++)
+       {
+           if (special_keys[i].key_sym == key->key_cap)
+           {
+--- 477,483 ----
+       }
+  #endif
+  
+!      for (i = 0; special_keys[i].key_sym != 0; i++)
+       {
+           if (special_keys[i].key_sym == key->key_cap)
+           {
+***************
+*** 758,764 ****
+      if (damage->next != NULL)
+       damage = damage->next;
+  
+!     while(damage != NULL)
+      {
+       r = &damage->rect;
+       gui_redraw(
+--- 758,764 ----
+      if (damage->next != NULL)
+       damage = damage->next;
+  
+!     while (damage != NULL)
+      {
+       r = &damage->rect;
+       gui_redraw(
+***************
+*** 798,809 ****
+  
+  /* This is used for pulldown/popup menus and also toolbar buttons */
+      static int
+! gui_ph_handle_menu( PtWidget_t *widget, void *data, PtCallbackInfo_t *info )
+  {
+!     if( data != NULL )
+      {
+       vimmenu_T *menu = (vimmenu_T *) data;
+!      gui_menu_cb( menu );
+      }
+      return Pt_CONTINUE;
+  }
+--- 798,809 ----
+  
+  /* This is used for pulldown/popup menus and also toolbar buttons */
+      static int
+! gui_ph_handle_menu(PtWidget_t *widget, void *data, PtCallbackInfo_t *info)
+  {
+!     if (data != NULL)
+      {
+       vimmenu_T *menu = (vimmenu_T *) data;
+!      gui_menu_cb(menu);
+      }
+      return Pt_CONTINUE;
+  }
+***************
+*** 813,821 ****
+  gui_ph_handle_menu_unrealized(
+       PtWidget_t *widget,
+       void *data,
+!      PtCallbackInfo_t *info )
+  {
+!     PtGiveFocus( gui.vimTextArea, NULL );
+      return Pt_CONTINUE;
+  }
+  
+--- 813,821 ----
+  gui_ph_handle_menu_unrealized(
+       PtWidget_t *widget,
+       void *data,
+!      PtCallbackInfo_t *info)
+  {
+!     PtGiveFocus(gui.vimTextArea, NULL);
+      return Pt_CONTINUE;
+  }
+  
+***************
+*** 823,831 ****
+  gui_ph_handle_window_open(
+       PtWidget_t *widget,
+       void *data,
+!      PtCallbackInfo_t *info )
+  {
+!     gui_set_shellsize( FALSE, TRUE, RESIZE_BOTH );
+      return Pt_CONTINUE;
+  }
+  
+--- 823,831 ----
+  gui_ph_handle_window_open(
+       PtWidget_t *widget,
+       void *data,
+!      PtCallbackInfo_t *info)
+  {
+!     gui_set_shellsize(FALSE, TRUE, RESIZE_BOTH);
+      return Pt_CONTINUE;
+  }
+  
+***************
+*** 836,909 ****
+  
+  /* TODO: Set a clipping rect? */
+      static void
+! gui_ph_draw_start( void )
+  {
+      PhGC_t *gc;
+  
+      gc = PgGetGC();
+!     PgSetRegion( PtWidgetRid( PtFindDisjoint( gui.vimTextArea ) ) );
+!     PgClearClippingsCx( gc );
+!     PgClearTranslationCx( gc );
+  
+!     PtWidgetOffset( gui.vimTextArea, &gui_ph_raw_offset );
+!     PhTranslatePoint( &gui_ph_raw_offset, PtWidgetPos( gui.vimTextArea, NULL ) );
+  
+!     PgSetTranslation( &gui_ph_raw_offset, Pg_RELATIVE );
+  }
+  
+      static void
+! gui_ph_draw_end( void )
+  {
+      gui_ph_raw_offset.x = -gui_ph_raw_offset.x;
+      gui_ph_raw_offset.y = -gui_ph_raw_offset.y;
+!     PgSetTranslation( &gui_ph_raw_offset, Pg_RELATIVE );
+  }
+  
+  #ifdef USE_PANEL_GROUP
+      static vimmenu_T *
+! gui_ph_find_buffer_item( char_u *name )
+  {
+      vimmenu_T *top_level = root_menu;
+      vimmenu_T *items = NULL;
+  
+!     while( top_level != NULL &&
+!          ( STRCMP( top_level->dname, "Buffers" ) != 0 ) )
+       top_level = top_level->next;
+  
+!     if( top_level != NULL )
+      {
+       items = top_level->children;
+  
+!      while( items != NULL &&
+!              ( STRCMP( items->dname, name ) != 0 ) )
+           items = items->next;
+      }
+      return items;
+  }
+  
+      static void
+! gui_ph_pg_set_buffer_num( int_u buf_num )
+  {
+      int i;
+      char search[16];
+      char *mark;
+  
+!     if( gui.vimTextArea == NULL || buf_num == 0 )
+       return;
+  
+      search[0] = '(';
+!     ultoa( buf_num, &search[1], 10 );
+!     STRCAT( search, ")" );
+  
+!     for( i = 0; i < num_panels; i++ )
+      {
+       /* find the last "(" in the panel title and see if the buffer
+        * number in the title matches the one we're looking for */
+!      mark = STRRCHR( panel_titles[ i ], '(' );
+!      if( mark != NULL && STRCMP( mark, search ) == 0 )
+       {
+!          PtSetResource( gui.vimPanelGroup, Pt_ARG_PG_CURRENT_INDEX,
+!                  i, 0 );
+       }
+      }
+  }
+--- 836,909 ----
+  
+  /* TODO: Set a clipping rect? */
+      static void
+! gui_ph_draw_start(void)
+  {
+      PhGC_t *gc;
+  
+      gc = PgGetGC();
+!     PgSetRegion(PtWidgetRid(PtFindDisjoint(gui.vimTextArea)));
+!     PgClearClippingsCx(gc);
+!     PgClearTranslationCx(gc);
+  
+!     PtWidgetOffset(gui.vimTextArea, &gui_ph_raw_offset);
+!     PhTranslatePoint(&gui_ph_raw_offset, PtWidgetPos(gui.vimTextArea, NULL));
+  
+!     PgSetTranslation(&gui_ph_raw_offset, Pg_RELATIVE);
+  }
+  
+      static void
+! gui_ph_draw_end(void)
+  {
+      gui_ph_raw_offset.x = -gui_ph_raw_offset.x;
+      gui_ph_raw_offset.y = -gui_ph_raw_offset.y;
+!     PgSetTranslation(&gui_ph_raw_offset, Pg_RELATIVE);
+  }
+  
+  #ifdef USE_PANEL_GROUP
+      static vimmenu_T *
+! gui_ph_find_buffer_item(char_u *name)
+  {
+      vimmenu_T *top_level = root_menu;
+      vimmenu_T *items = NULL;
+  
+!     while (top_level != NULL &&
+!          (STRCMP(top_level->dname, "Buffers") != 0))
+       top_level = top_level->next;
+  
+!     if (top_level != NULL)
+      {
+       items = top_level->children;
+  
+!      while (items != NULL &&
+!              (STRCMP(items->dname, name) != 0))
+           items = items->next;
+      }
+      return items;
+  }
+  
+      static void
+! gui_ph_pg_set_buffer_num(int_u buf_num)
+  {
+      int i;
+      char search[16];
+      char *mark;
+  
+!     if (gui.vimTextArea == NULL || buf_num == 0)
+       return;
+  
+      search[0] = '(';
+!     ultoa(buf_num, &search[1], 10);
+!     STRCAT(search, ")");
+  
+!     for (i = 0; i < num_panels; i++)
+      {
+       /* find the last "(" in the panel title and see if the buffer
+        * number in the title matches the one we're looking for */
+!      mark = STRRCHR(panel_titles[ i ], '(');
+!      if (mark != NULL && STRCMP(mark, search) == 0)
+       {
+!          PtSetResource(gui.vimPanelGroup, Pt_ARG_PG_CURRENT_INDEX,
+!                  i, 0);
+       }
+      }
+  }
+***************
+*** 912,930 ****
+  gui_ph_handle_pg_change(
+       PtWidget_t *widget,
+       void *data,
+!      PtCallbackInfo_t *info )
+  {
+      vimmenu_T *menu;
+      PtPanelGroupCallback_t *panel;
+  
+!     if( info->event != NULL )
+      {
+       panel = info->cbdata;
+!      if( panel->new_panel != NULL )
+       {
+!          menu = gui_ph_find_buffer_item( panel->new_panel );
+!          if( menu )
+!              gui_menu_cb( menu );
+       }
+      }
+      return Pt_CONTINUE;
+--- 912,930 ----
+  gui_ph_handle_pg_change(
+       PtWidget_t *widget,
+       void *data,
+!      PtCallbackInfo_t *info)
+  {
+      vimmenu_T *menu;
+      PtPanelGroupCallback_t *panel;
+  
+!     if (info->event != NULL)
+      {
+       panel = info->cbdata;
+!      if (panel->new_panel != NULL)
+       {
+!          menu = gui_ph_find_buffer_item(panel->new_panel);
+!          if (menu)
+!              gui_menu_cb(menu);
+       }
+      }
+      return Pt_CONTINUE;
+***************
+*** 935,951 ****
+       short *top,
+       short *bottom,
+       short *left,
+!      short *right )
+  {
+      unsigned short abs_raw_x, abs_raw_y, abs_panel_x, abs_panel_y;
+      const unsigned short *margin_top, *margin_bottom;
+      const unsigned short *margin_left, *margin_right;
+  
+!     PtGetAbsPosition( gui.vimTextArea, &abs_raw_x, &abs_raw_y );
+!     PtGetAbsPosition( gui.vimPanelGroup, &abs_panel_x, &abs_panel_y );
+  
+!     PtGetResource( gui.vimPanelGroup, Pt_ARG_MARGIN_RIGHT, &margin_right, 0 );
+!     PtGetResource( gui.vimPanelGroup, Pt_ARG_MARGIN_BOTTOM, &margin_bottom, 0 );
+  
+      abs_raw_x -= abs_panel_x;
+      abs_raw_y -= abs_panel_y;
+--- 935,951 ----
+       short *top,
+       short *bottom,
+       short *left,
+!      short *right)
+  {
+      unsigned short abs_raw_x, abs_raw_y, abs_panel_x, abs_panel_y;
+      const unsigned short *margin_top, *margin_bottom;
+      const unsigned short *margin_left, *margin_right;
+  
+!     PtGetAbsPosition(gui.vimTextArea, &abs_raw_x, &abs_raw_y);
+!     PtGetAbsPosition(gui.vimPanelGroup, &abs_panel_x, &abs_panel_y);
+  
+!     PtGetResource(gui.vimPanelGroup, Pt_ARG_MARGIN_RIGHT, &margin_right, 0);
+!     PtGetResource(gui.vimPanelGroup, Pt_ARG_MARGIN_BOTTOM, &margin_bottom, 0);
+  
+      abs_raw_x -= abs_panel_x;
+      abs_raw_y -= abs_panel_y;
+***************
+*** 959,979 ****
+  
+  /* Used for the tabs for PtPanelGroup */
+      static int
+! gui_ph_is_buffer_item( vimmenu_T *menu, vimmenu_T *parent )
+  {
+      char *mark;
+  
+!     if( STRCMP( parent->dname, "Buffers" ) == 0 )
+      {
+       /* Look for '(' digits ')' */
+!      mark = vim_strchr( menu->dname, '(' );
+!      if( mark != NULL )
+       {
+           mark++;
+!          while( isdigit( *mark ) )
+               mark++;
+  
+!          if( *mark == ')' )
+               return TRUE;
+       }
+      }
+--- 959,979 ----
+  
+  /* Used for the tabs for PtPanelGroup */
+      static int
+! gui_ph_is_buffer_item(vimmenu_T *menu, vimmenu_T *parent)
+  {
+      char *mark;
+  
+!     if (STRCMP(parent->dname, "Buffers") == 0)
+      {
+       /* Look for '(' digits ')' */
+!      mark = vim_strchr(menu->dname, '(');
+!      if (mark != NULL)
+       {
+           mark++;
+!          while (isdigit(*mark))
+               mark++;
+  
+!          if (*mark == ')')
+               return TRUE;
+       }
+      }
+***************
+*** 981,1043 ****
+  }
+  
+      static void
+! gui_ph_pg_add_buffer(char *name )
+  {
+      char **new_titles = NULL;
+  
+!     new_titles = (char **) alloc( ( num_panels + 1 ) * sizeof( char ** ) );
+!     if( new_titles != NULL )
+      {
+!      if( num_panels > 0 )
+!          memcpy( new_titles, panel_titles, num_panels * sizeof( char ** ) );
+  
+       new_titles[ num_panels++ ] = name;
+  
+!      PtSetResource( gui.vimPanelGroup, Pt_ARG_PG_PANEL_TITLES, new_titles,
+!              num_panels );
+  
+!      vim_free( panel_titles );
+       panel_titles = new_titles;
+      }
+  }
+  
+      static void
+! gui_ph_pg_remove_buffer( char *name )
+  {
+      int i;
+      char **new_titles = NULL;
+  
+      /* If there is only 1 panel, we just use the temporary place holder */
+!     if( num_panels > 1 )
+      {
+!      new_titles = (char **) alloc( ( num_panels - 1 ) * sizeof( char ** ) );
+!      if( new_titles != NULL )
+       {
+           char **s = new_titles;
+           /* Copy all the titles except the one we're removing */
+!          for( i = 0; i < num_panels; i++ )
+           {
+!              if( STRCMP( panel_titles[ i ], name ) != 0 )
+               {
+                   *s++ = panel_titles[ i ];
+               }
+           }
+           num_panels--;
+  
+!          PtSetResource( gui.vimPanelGroup, Pt_ARG_PG_PANEL_TITLES, new_titles,
+!                  num_panels );
+  
+!          vim_free( panel_titles );
+           panel_titles = new_titles;
+       }
+      }
+      else
+      {
+       num_panels--;
+!      PtSetResource( gui.vimPanelGroup, Pt_ARG_PG_PANEL_TITLES, &empty_title,
+!              1 );
+  
+!      vim_free( panel_titles );
+       panel_titles = NULL;
+      }
+  }
+--- 981,1043 ----
+  }
+  
+      static void
+! gui_ph_pg_add_buffer(char *name)
+  {
+      char **new_titles = NULL;
+  
+!     new_titles = (char **) alloc((num_panels + 1) * sizeof(char **));
+!     if (new_titles != NULL)
+      {
+!      if (num_panels > 0)
+!          memcpy(new_titles, panel_titles, num_panels * sizeof(char **));
+  
+       new_titles[ num_panels++ ] = name;
+  
+!      PtSetResource(gui.vimPanelGroup, Pt_ARG_PG_PANEL_TITLES, new_titles,
+!              num_panels);
+  
+!      vim_free(panel_titles);
+       panel_titles = new_titles;
+      }
+  }
+  
+      static void
+! gui_ph_pg_remove_buffer(char *name)
+  {
+      int i;
+      char **new_titles = NULL;
+  
+      /* If there is only 1 panel, we just use the temporary place holder */
+!     if (num_panels > 1)
+      {
+!      new_titles = (char **) alloc((num_panels - 1) * sizeof(char **));
+!      if (new_titles != NULL)
+       {
+           char **s = new_titles;
+           /* Copy all the titles except the one we're removing */
+!          for (i = 0; i < num_panels; i++)
+           {
+!              if (STRCMP(panel_titles[ i ], name) != 0)
+               {
+                   *s++ = panel_titles[ i ];
+               }
+           }
+           num_panels--;
+  
+!          PtSetResource(gui.vimPanelGroup, Pt_ARG_PG_PANEL_TITLES, new_titles,
+!                  num_panels);
+  
+!          vim_free(panel_titles);
+           panel_titles = new_titles;
+       }
+      }
+      else
+      {
+       num_panels--;
+!      PtSetResource(gui.vimPanelGroup, Pt_ARG_PG_PANEL_TITLES, &empty_title,
+!              1);
+  
+!      vim_free(panel_titles);
+       panel_titles = NULL;
+      }
+  }
+***************
+*** 1047,1060 ****
+  gui_ph_handle_buffer_remove(
+       PtWidget_t *widget,
+       void *data,
+!      PtCallbackInfo_t *info )
+  {
+      vimmenu_T *menu;
+  
+!     if( data != NULL )
+      {
+       menu = (vimmenu_T *) data;
+!      gui_ph_pg_remove_buffer( menu->dname );
+      }
+  
+      return Pt_CONTINUE;
+--- 1047,1060 ----
+  gui_ph_handle_buffer_remove(
+       PtWidget_t *widget,
+       void *data,
+!      PtCallbackInfo_t *info)
+  {
+      vimmenu_T *menu;
+  
+!     if (data != NULL)
+      {
+       menu = (vimmenu_T *) data;
+!      gui_ph_pg_remove_buffer(menu->dname);
+      }
+  
+      return Pt_CONTINUE;
+***************
+*** 1062,1074 ****
+  #endif
+  
+      static int
+! gui_ph_pane_resize( PtWidget_t *widget, void *data, PtCallbackInfo_t *info )
+  {
+!     if( PtWidgetIsRealized( widget ) )
+      {
+       is_ignore_draw = TRUE;
+!      PtStartFlux( gui.vimContainer );
+!      PtContainerHold( gui.vimContainer );
+      }
+  
+      return Pt_CONTINUE;
+--- 1062,1074 ----
+  #endif
+  
+      static int
+! gui_ph_pane_resize(PtWidget_t *widget, void *data, PtCallbackInfo_t *info)
+  {
+!     if (PtWidgetIsRealized(widget))
+      {
+       is_ignore_draw = TRUE;
+!      PtStartFlux(gui.vimContainer);
+!      PtContainerHold(gui.vimContainer);
+      }
+  
+      return Pt_CONTINUE;
+***************
+*** 1078,1084 ****
+  
+  #ifdef FEAT_MBYTE
+      void
+! gui_ph_encoding_changed( int new_encoding )
+  {
+      /* Default encoding is latin1 */
+      char *charset = "latin1";
+--- 1078,1084 ----
+  
+  #ifdef FEAT_MBYTE
+      void
+! gui_ph_encoding_changed(int new_encoding)
+  {
+      /* Default encoding is latin1 */
+      char *charset = "latin1";
+***************
+*** 1094,1106 ****
+       { DBCS_CHS, "gb" }
+      };
+  
+!     for( i = 0; i < ARRAY_LENGTH( charsets ); i++ )
+      {
+!      if( new_encoding == charsets[ i ].encoding )
+           charset = charsets[ i ].name;
+      }
+  
+!     charset_translate = PxTranslateSet( charset_translate, charset );
+  }
+  #endif
+  
+--- 1094,1106 ----
+       { DBCS_CHS, "gb" }
+      };
+  
+!     for (i = 0; i < ARRAY_LENGTH(charsets); i++)
+      {
+!      if (new_encoding == charsets[ i ].encoding)
+           charset = charsets[ i ].name;
+      }
+  
+!     charset_translate = PxTranslateSet(charset_translate, charset);
+  }
+  #endif
+  
+***************
+*** 1112,1118 ****
+      int          *argc;
+      char    **argv;
+  {
+!     PtInit( NULL );
+  }
+  
+      int
+--- 1112,1118 ----
+      int          *argc;
+      char    **argv;
+  {
+!     PtInit(NULL);
+  }
+  
+      int
+***************
+*** 1124,1213 ****
+      PhDim_t  window_size = {100, 100}; /* Arbitrary values */
+      PhPoint_t        pos = {0, 0};
+  
+!     gui.event_buffer = (PhEvent_t *) alloc( EVENT_BUFFER_SIZE );
+!     if( gui.event_buffer == NULL )
+       return FAIL;
+  
+      /* Get a translation so we can convert from ISO Latin-1 to UTF */
+!     charset_translate = PxTranslateSet( NULL, "latin1" );
+  
+      /* The +2 is for the 1 pixel dark line on each side */
+      gui.border_offset = gui.border_width = GUI_PH_MARGIN + 2;
+  
+      /* Handle close events ourselves */
+!     PtSetArg( &args[ n++ ], Pt_ARG_WINDOW_MANAGED_FLAGS, Pt_FALSE, Ph_WM_CLOSE );
+!     PtSetArg( &args[ n++ ], Pt_ARG_WINDOW_NOTIFY_FLAGS, Pt_TRUE,
+!          Ph_WM_CLOSE | Ph_WM_RESIZE | Ph_WM_FOCUS );
+!     PtSetArg( &args[ n++ ], Pt_ARG_DIM, &window_size, 0 );
+!     gui.vimWindow = PtCreateWidget( PtWindow, NULL, n, args );
+!     if( gui.vimWindow == NULL )
+       return FAIL;
+  
+!     PtAddCallback( gui.vimWindow, Pt_CB_WINDOW, gui_ph_handle_window_cb, NULL );
+!     PtAddCallback( gui.vimWindow, Pt_CB_WINDOW_OPENING,
+!          gui_ph_handle_window_open, NULL );
+  
+      n = 0;
+!     PtSetArg( &args[ n++ ], Pt_ARG_ANCHOR_FLAGS, Pt_ANCHOR_ALL, Pt_IS_ANCHORED );
+!     PtSetArg( &args[ n++ ], Pt_ARG_DIM, &window_size, 0 );
+!     PtSetArg( &args[ n++ ], Pt_ARG_POS, &pos, 0 );
+  
+  #ifdef USE_PANEL_GROUP
+      /* Put in a temprary place holder title */
+!     PtSetArg( &args[ n++ ], Pt_ARG_PG_PANEL_TITLES, &empty_title, 1 );
+  
+!     gui.vimPanelGroup = PtCreateWidget( PtPanelGroup, gui.vimWindow, n, args );
+!     if( gui.vimPanelGroup == NULL )
+       return FAIL;
+  
+!     PtAddCallback( gui.vimPanelGroup, Pt_CB_PG_PANEL_SWITCHING,
+!          gui_ph_handle_pg_change, NULL );
+  #else
+      /* Turn off all edge decorations */
+!     PtSetArg( &args[ n++ ], Pt_ARG_BASIC_FLAGS, Pt_FALSE, Pt_ALL );
+!     PtSetArg( &args[ n++ ], Pt_ARG_BEVEL_WIDTH, 0, 0 );
+!     PtSetArg( &args[ n++ ], Pt_ARG_MARGIN_WIDTH, 0, 0 );
+!     PtSetArg( &args[ n++ ], Pt_ARG_MARGIN_HEIGHT, 0, 0 );
+!     PtSetArg( &args[ n++ ], Pt_ARG_CONTAINER_FLAGS, Pt_TRUE, Pt_AUTO_EXTENT );
+  
+!     gui.vimContainer = PtCreateWidget( PtPane, gui.vimWindow, n, args );
+!     if( gui.vimContainer == NULL )
+       return FAIL;
+  
+!     PtAddCallback( gui.vimContainer, Pt_CB_RESIZE, gui_ph_pane_resize, NULL );
+  #endif
+  
+      /* Size for the text area is set in gui_mch_set_text_area_pos */
+      n = 0;
+  
+!     PtSetArg( &args[ n++ ], Pt_ARG_RAW_DRAW_F, gui_ph_handle_raw_draw, 1 );
+!     PtSetArg( &args[ n++ ], Pt_ARG_BEVEL_WIDTH, GUI_PH_MARGIN, 0 );
+      /*
+       * Using focus render also causes the whole widget to be redrawn
+       * whenever it changes focus, which is very annoying :p
+       */
+!     PtSetArg( &args[ n++ ], Pt_ARG_FLAGS, Pt_TRUE,
+!          Pt_GETS_FOCUS | Pt_HIGHLIGHTED );
+  #ifndef FEAT_MOUSESHAPE
+!     PtSetArg( &args[ n++ ], Pt_ARG_CURSOR_TYPE, GUI_PH_MOUSE_TYPE, 0 );
+!     PtSetArg( &args[ n++ ], Pt_ARG_CURSOR_COLOR, gui_ph_mouse_color, 0 );
+  #endif
+  
+!     gui.vimTextArea = PtCreateWidget( PtRaw, Pt_DFLT_PARENT, n, args );
+!     if( gui.vimTextArea == NULL)
+       return FAIL;
+  
+      /* TODO: use PtAddEventHandlers instead? */
+      /* Not using Ph_EV_BUT_REPEAT because vim wouldn't use it anyway */
+!     PtAddEventHandler( gui.vimTextArea,
+           Ph_EV_BUT_PRESS | Ph_EV_BUT_RELEASE | Ph_EV_PTR_MOTION_BUTTON,
+!          gui_ph_handle_mouse, NULL );
+!     PtAddEventHandler( gui.vimTextArea, Ph_EV_KEY,
+!          gui_ph_handle_keyboard, NULL );
+!     PtAddCallback( gui.vimTextArea, Pt_CB_GOT_FOCUS,
+!          gui_ph_handle_focus, NULL );
+!     PtAddCallback( gui.vimTextArea, Pt_CB_LOST_FOCUS,
+!          gui_ph_handle_focus, NULL );
+  
+      /*
+       * Now that the text area widget has been created, set up the colours,
+--- 1124,1213 ----
+      PhDim_t  window_size = {100, 100}; /* Arbitrary values */
+      PhPoint_t        pos = {0, 0};
+  
+!     gui.event_buffer = (PhEvent_t *) alloc(EVENT_BUFFER_SIZE);
+!     if (gui.event_buffer == NULL)
+       return FAIL;
+  
+      /* Get a translation so we can convert from ISO Latin-1 to UTF */
+!     charset_translate = PxTranslateSet(NULL, "latin1");
+  
+      /* The +2 is for the 1 pixel dark line on each side */
+      gui.border_offset = gui.border_width = GUI_PH_MARGIN + 2;
+  
+      /* Handle close events ourselves */
+!     PtSetArg(&args[ n++ ], Pt_ARG_WINDOW_MANAGED_FLAGS, Pt_FALSE, Ph_WM_CLOSE);
+!     PtSetArg(&args[ n++ ], Pt_ARG_WINDOW_NOTIFY_FLAGS, Pt_TRUE,
+!          Ph_WM_CLOSE | Ph_WM_RESIZE | Ph_WM_FOCUS);
+!     PtSetArg(&args[ n++ ], Pt_ARG_DIM, &window_size, 0);
+!     gui.vimWindow = PtCreateWidget(PtWindow, NULL, n, args);
+!     if (gui.vimWindow == NULL)
+       return FAIL;
+  
+!     PtAddCallback(gui.vimWindow, Pt_CB_WINDOW, gui_ph_handle_window_cb, NULL);
+!     PtAddCallback(gui.vimWindow, Pt_CB_WINDOW_OPENING,
+!          gui_ph_handle_window_open, NULL);
+  
+      n = 0;
+!     PtSetArg(&args[ n++ ], Pt_ARG_ANCHOR_FLAGS, Pt_ANCHOR_ALL, Pt_IS_ANCHORED);
+!     PtSetArg(&args[ n++ ], Pt_ARG_DIM, &window_size, 0);
+!     PtSetArg(&args[ n++ ], Pt_ARG_POS, &pos, 0);
+  
+  #ifdef USE_PANEL_GROUP
+      /* Put in a temprary place holder title */
+!     PtSetArg(&args[ n++ ], Pt_ARG_PG_PANEL_TITLES, &empty_title, 1);
+  
+!     gui.vimPanelGroup = PtCreateWidget(PtPanelGroup, gui.vimWindow, n, args);
+!     if (gui.vimPanelGroup == NULL)
+       return FAIL;
+  
+!     PtAddCallback(gui.vimPanelGroup, Pt_CB_PG_PANEL_SWITCHING,
+!          gui_ph_handle_pg_change, NULL);
+  #else
+      /* Turn off all edge decorations */
+!     PtSetArg(&args[ n++ ], Pt_ARG_BASIC_FLAGS, Pt_FALSE, Pt_ALL);
+!     PtSetArg(&args[ n++ ], Pt_ARG_BEVEL_WIDTH, 0, 0);
+!     PtSetArg(&args[ n++ ], Pt_ARG_MARGIN_WIDTH, 0, 0);
+!     PtSetArg(&args[ n++ ], Pt_ARG_MARGIN_HEIGHT, 0, 0);
+!     PtSetArg(&args[ n++ ], Pt_ARG_CONTAINER_FLAGS, Pt_TRUE, Pt_AUTO_EXTENT);
+  
+!     gui.vimContainer = PtCreateWidget(PtPane, gui.vimWindow, n, args);
+!     if (gui.vimContainer == NULL)
+       return FAIL;
+  
+!     PtAddCallback(gui.vimContainer, Pt_CB_RESIZE, gui_ph_pane_resize, NULL);
+  #endif
+  
+      /* Size for the text area is set in gui_mch_set_text_area_pos */
+      n = 0;
+  
+!     PtSetArg(&args[ n++ ], Pt_ARG_RAW_DRAW_F, gui_ph_handle_raw_draw, 1);
+!     PtSetArg(&args[ n++ ], Pt_ARG_BEVEL_WIDTH, GUI_PH_MARGIN, 0);
+      /*
+       * Using focus render also causes the whole widget to be redrawn
+       * whenever it changes focus, which is very annoying :p
+       */
+!     PtSetArg(&args[ n++ ], Pt_ARG_FLAGS, Pt_TRUE,
+!          Pt_GETS_FOCUS | Pt_HIGHLIGHTED);
+  #ifndef FEAT_MOUSESHAPE
+!     PtSetArg(&args[ n++ ], Pt_ARG_CURSOR_TYPE, GUI_PH_MOUSE_TYPE, 0);
+!     PtSetArg(&args[ n++ ], Pt_ARG_CURSOR_COLOR, gui_ph_mouse_color, 0);
+  #endif
+  
+!     gui.vimTextArea = PtCreateWidget(PtRaw, Pt_DFLT_PARENT, n, args);
+!     if (gui.vimTextArea == NULL)
+       return FAIL;
+  
+      /* TODO: use PtAddEventHandlers instead? */
+      /* Not using Ph_EV_BUT_REPEAT because vim wouldn't use it anyway */
+!     PtAddEventHandler(gui.vimTextArea,
+           Ph_EV_BUT_PRESS | Ph_EV_BUT_RELEASE | Ph_EV_PTR_MOTION_BUTTON,
+!          gui_ph_handle_mouse, NULL);
+!     PtAddEventHandler(gui.vimTextArea, Ph_EV_KEY,
+!          gui_ph_handle_keyboard, NULL);
+!     PtAddCallback(gui.vimTextArea, Pt_CB_GOT_FOCUS,
+!          gui_ph_handle_focus, NULL);
+!     PtAddCallback(gui.vimTextArea, Pt_CB_LOST_FOCUS,
+!          gui_ph_handle_focus, NULL);
+  
+      /*
+       * Now that the text area widget has been created, set up the colours,
+***************
+*** 1218,1278 ****
+       * Create the two timers, not as accurate as using the kernel timer
+       * functions, but good enough
+       */
+!     gui_ph_timer_cursor  = PtCreateWidget( PtTimer, gui.vimWindow, 0, NULL );
+!     if( gui_ph_timer_cursor == NULL )
+       return FAIL;
+  
+!     gui_ph_timer_timeout = PtCreateWidget( PtTimer, gui.vimWindow, 0, NULL );
+!     if( gui_ph_timer_timeout == NULL )
+       return FAIL;
+  
+!     PtAddCallback( gui_ph_timer_cursor,  Pt_CB_TIMER_ACTIVATE,
+           gui_ph_handle_timer_cursor, NULL);
+!     PtAddCallback( gui_ph_timer_timeout, Pt_CB_TIMER_ACTIVATE,
+           gui_ph_handle_timer_timeout, NULL);
+  
+  #ifdef FEAT_MENU
+      n = 0;
+!     PtSetArg( &args[ n++ ], Pt_ARG_WIDTH, window_size.w, 0 );
+!     PtSetArg( &args[ n++ ], Pt_ARG_ANCHOR_FLAGS, Pt_ANCHOR_LEFT_RIGHT,
+!          Pt_IS_ANCHORED );
+!     gui.vimToolBarGroup = PtCreateWidget( PtToolbarGroup, gui.vimWindow,
+!          n, args );
+!     if( gui.vimToolBarGroup == NULL )
+       return FAIL;
+  
+!     PtAddCallback( gui.vimToolBarGroup, Pt_CB_RESIZE,
+!          gui_ph_handle_menu_resize, NULL );
+  
+      n = 0;
+      flags = 0;
+!     PtSetArg( &args[ n++ ], Pt_ARG_WIDTH, window_size.w, 0 );
+!     if( ! vim_strchr( p_go, GO_MENUS ) )
+      {
+       flags |= Pt_DELAY_REALIZE;
+!      PtSetArg( &args[ n++ ], Pt_ARG_FLAGS, Pt_TRUE, flags );
+      }
+!     gui.vimMenuBar = PtCreateWidget( PtMenuBar, gui.vimToolBarGroup, n, args );
+!     if( gui.vimMenuBar == NULL )
+       return FAIL;
+  
+  # ifdef FEAT_TOOLBAR
+      n = 0;
+  
+!     PtSetArg( &args[ n++ ], Pt_ARG_ANCHOR_FLAGS,
+!          Pt_ANCHOR_LEFT_RIGHT |Pt_TOP_ANCHORED_TOP, Pt_IS_ANCHORED );
+!     PtSetArg( &args[ n++ ], Pt_ARG_RESIZE_FLAGS, Pt_TRUE,
+!          Pt_RESIZE_Y_AS_REQUIRED );
+!     PtSetArg( &args[ n++ ], Pt_ARG_WIDTH, window_size.w, 0 );
+  
+      flags = Pt_GETS_FOCUS;
+!     if( ! vim_strchr( p_go, GO_TOOLBAR ) )
+       flags |= Pt_DELAY_REALIZE;
+  
+!     PtSetArg( &args[ n++ ], Pt_ARG_FLAGS, Pt_DELAY_REALIZE, flags );
+  
+!     gui.vimToolBar = PtCreateWidget( PtToolbar, gui.vimToolBarGroup, n, args );
+!     if( gui.vimToolBar == NULL )
+       return FAIL;
+  
+      /*
+--- 1218,1278 ----
+       * Create the two timers, not as accurate as using the kernel timer
+       * functions, but good enough
+       */
+!     gui_ph_timer_cursor  = PtCreateWidget(PtTimer, gui.vimWindow, 0, NULL);
+!     if (gui_ph_timer_cursor == NULL)
+       return FAIL;
+  
+!     gui_ph_timer_timeout = PtCreateWidget(PtTimer, gui.vimWindow, 0, NULL);
+!     if (gui_ph_timer_timeout == NULL)
+       return FAIL;
+  
+!     PtAddCallback(gui_ph_timer_cursor,  Pt_CB_TIMER_ACTIVATE,
+           gui_ph_handle_timer_cursor, NULL);
+!     PtAddCallback(gui_ph_timer_timeout, Pt_CB_TIMER_ACTIVATE,
+           gui_ph_handle_timer_timeout, NULL);
+  
+  #ifdef FEAT_MENU
+      n = 0;
+!     PtSetArg(&args[ n++ ], Pt_ARG_WIDTH, window_size.w, 0);
+!     PtSetArg(&args[ n++ ], Pt_ARG_ANCHOR_FLAGS, Pt_ANCHOR_LEFT_RIGHT,
+!          Pt_IS_ANCHORED);
+!     gui.vimToolBarGroup = PtCreateWidget(PtToolbarGroup, gui.vimWindow,
+!          n, args);
+!     if (gui.vimToolBarGroup == NULL)
+       return FAIL;
+  
+!     PtAddCallback(gui.vimToolBarGroup, Pt_CB_RESIZE,
+!          gui_ph_handle_menu_resize, NULL);
+  
+      n = 0;
+      flags = 0;
+!     PtSetArg(&args[ n++ ], Pt_ARG_WIDTH, window_size.w, 0);
+!     if (! vim_strchr(p_go, GO_MENUS))
+      {
+       flags |= Pt_DELAY_REALIZE;
+!      PtSetArg(&args[ n++ ], Pt_ARG_FLAGS, Pt_TRUE, flags);
+      }
+!     gui.vimMenuBar = PtCreateWidget(PtMenuBar, gui.vimToolBarGroup, n, args);
+!     if (gui.vimMenuBar == NULL)
+       return FAIL;
+  
+  # ifdef FEAT_TOOLBAR
+      n = 0;
+  
+!     PtSetArg(&args[ n++ ], Pt_ARG_ANCHOR_FLAGS,
+!          Pt_ANCHOR_LEFT_RIGHT |Pt_TOP_ANCHORED_TOP, Pt_IS_ANCHORED);
+!     PtSetArg(&args[ n++ ], Pt_ARG_RESIZE_FLAGS, Pt_TRUE,
+!          Pt_RESIZE_Y_AS_REQUIRED);
+!     PtSetArg(&args[ n++ ], Pt_ARG_WIDTH, window_size.w, 0);
+  
+      flags = Pt_GETS_FOCUS;
+!     if (! vim_strchr(p_go, GO_TOOLBAR))
+       flags |= Pt_DELAY_REALIZE;
+  
+!     PtSetArg(&args[ n++ ], Pt_ARG_FLAGS, Pt_DELAY_REALIZE, flags);
+  
+!     gui.vimToolBar = PtCreateWidget(PtToolbar, gui.vimToolBarGroup, n, args);
+!     if (gui.vimToolBar == NULL)
+       return FAIL;
+  
+      /*
+***************
+*** 1310,1329 ****
+      if (gui_win_x != -1 && gui_win_y != -1)
+       gui_mch_set_winpos(gui_win_x, gui_win_y);
+  
+!     return (PtRealizeWidget( gui.vimWindow ) == 0) ? OK : FAIL;
+  }
+  
+      void
+  gui_mch_exit(int rc)
+  {
+!     PtDestroyWidget( gui.vimWindow );
+  
+!     PxTranslateSet( charset_translate, NULL );
+  
+!     vim_free( gui.event_buffer );
+  
+  #ifdef USE_PANEL_GROUPS
+!     vim_free( panel_titles );
+  #endif
+  }
+  
+--- 1310,1329 ----
+      if (gui_win_x != -1 && gui_win_y != -1)
+       gui_mch_set_winpos(gui_win_x, gui_win_y);
+  
+!     return (PtRealizeWidget(gui.vimWindow) == 0) ? OK : FAIL;
+  }
+  
+      void
+  gui_mch_exit(int rc)
+  {
+!     PtDestroyWidget(gui.vimWindow);
+  
+!     PxTranslateSet(charset_translate, NULL);
+  
+!     vim_free(gui.event_buffer);
+  
+  #ifdef USE_PANEL_GROUPS
+!     vim_free(panel_titles);
+  #endif
+  }
+  
+***************
+*** 1333,1339 ****
+  /* When no events are available, photon will call this function, working is
+   * set to FALSE, and the gui_mch_update loop will exit. */
+      static int
+! exit_gui_mch_update( void *data )
+  {
+      *(int *)data = FALSE;
+      return Pt_END;
+--- 1333,1339 ----
+  /* When no events are available, photon will call this function, working is
+   * set to FALSE, and the gui_mch_update loop will exit. */
+      static int
+! exit_gui_mch_update(void *data)
+  {
+      *(int *)data = FALSE;
+      return Pt_END;
+***************
+*** 1344,1351 ****
+  {
+      int working = TRUE;
+  
+!     PtAppAddWorkProc( NULL, exit_gui_mch_update, &working );
+!     while( ( working == TRUE ) && !vim_is_input_buf_full())
+      {
+       PtProcessEvent();
+      }
+--- 1344,1351 ----
+  {
+      int working = TRUE;
+  
+!     PtAppAddWorkProc(NULL, exit_gui_mch_update, &working);
+!     while ((working == TRUE) && !vim_is_input_buf_full())
+      {
+       PtProcessEvent();
+      }
+***************
+*** 1356,1378 ****
+  {
+      is_timeout = FALSE;
+  
+!     if( wtime > 0 )
+!      PtSetResource( gui_ph_timer_timeout, Pt_ARG_TIMER_INITIAL, wtime, 0 );
+  
+!     while( 1 )
+      {
+       PtProcessEvent();
+!      if( input_available() )
+       {
+!          PtSetResource( gui_ph_timer_timeout, Pt_ARG_TIMER_INITIAL, 0, 0 );
+           return OK;
+       }
+!      else if( is_timeout == TRUE )
+           return FAIL;
+      }
+  }
+  
+! #if defined( FEAT_BROWSE ) || defined( PROTO )
+  /*
+   * Put up a file requester.
+   * Returns the selected name in allocated memory, or NULL for Cancel.
+--- 1356,1378 ----
+  {
+      is_timeout = FALSE;
+  
+!     if (wtime > 0)
+!      PtSetResource(gui_ph_timer_timeout, Pt_ARG_TIMER_INITIAL, wtime, 0);
+  
+!     while (1)
+      {
+       PtProcessEvent();
+!      if (input_available())
+       {
+!          PtSetResource(gui_ph_timer_timeout, Pt_ARG_TIMER_INITIAL, 0, 0);
+           return OK;
+       }
+!      else if (is_timeout == TRUE)
+           return FAIL;
+      }
+  }
+  
+! #if defined(FEAT_BROWSE) || defined(PROTO)
+  /*
+   * Put up a file requester.
+   * Returns the selected name in allocated memory, or NULL for Cancel.
+***************
+*** 1398,1409 ****
+      char_u  *open_text = NULL;
+  
+      flags = 0;
+!     memset( &file, 0, sizeof( file ) );
+  
+!     default_path = alloc( MAXPATHL + 1 + NAME_MAX + 1 );
+!     if( default_path != NULL )
+      {
+!      if( saving == TRUE )
+       {
+           /* Don't need Pt_FSR_CONFIRM_EXISTING, vim will ask anyway */
+           flags |= Pt_FSR_NO_FCHECK;
+--- 1398,1409 ----
+      char_u  *open_text = NULL;
+  
+      flags = 0;
+!     memset(&file, 0, sizeof(file));
+  
+!     default_path = alloc(MAXPATHL + 1 + NAME_MAX + 1);
+!     if (default_path != NULL)
+      {
+!      if (saving == TRUE)
+       {
+           /* Don't need Pt_FSR_CONFIRM_EXISTING, vim will ask anyway */
+           flags |= Pt_FSR_NO_FCHECK;
+***************
+*** 1411,1433 ****
+       }
+  
+       /* combine the directory and filename into a single path */
+!      if( initdir == NULL || *initdir == NUL )
+       {
+!          mch_dirname( default_path, MAXPATHL );
+           initdir = default_path;
+       }
+       else
+       {
+!          STRCPY( default_path, initdir );
+           initdir = default_path;
+       }
+  
+!      if( default_name != NULL )
+       {
+!          if( default_path[ STRLEN( default_path ) - 1 ] != '/' )
+!              STRCAT( default_path, "/" );
+  
+!          STRCAT( default_path, default_name );
+       }
+  
+       /* TODO: add a filter? */
+--- 1411,1433 ----
+       }
+  
+       /* combine the directory and filename into a single path */
+!      if (initdir == NULL || *initdir == NUL)
+       {
+!          mch_dirname(default_path, MAXPATHL);
+           initdir = default_path;
+       }
+       else
+       {
+!          STRCPY(default_path, initdir);
+           initdir = default_path;
+       }
+  
+!      if (default_name != NULL)
+       {
+!          if (default_path[ STRLEN(default_path) - 1 ] != '/')
+!              STRCAT(default_path, "/");
+  
+!          STRCAT(default_path, default_name);
+       }
+  
+       /* TODO: add a filter? */
+***************
+*** 1441,1495 ****
+               NULL,
+               NULL,
+               &file,
+!              flags );
+  
+!      vim_free( default_path );
+  
+!      if( file.ret == Pt_FSDIALOG_BTN1 )
+           return vim_strsave(file.path);
+      }
+      return NULL;
+  }
+  #endif
+  
+! #if defined( FEAT_GUI_DIALOG ) || defined( PROTO )
+  static PtWidget_t *gui_ph_dialog_text = NULL;
+  
+      static int
+! gui_ph_dialog_close( int button, void *data )
+  {
+      PtModalCtrl_t *modal_ctrl = data;
+      char_u *dialog_text, *vim_text;
+  
+!     if( gui_ph_dialog_text != NULL )
+      {
+!      PtGetResource( gui_ph_dialog_text, Pt_ARG_TEXT_STRING, &dialog_text, 0 );
+!      PtGetResource( gui_ph_dialog_text, Pt_ARG_POINTER, &vim_text, 0 );
+!      STRNCPY( vim_text, dialog_text, IOSIZE - 1 );
+      }
+  
+!     PtModalUnblock( modal_ctrl, (void *) button );
+  
+      return Pt_TRUE;
+  }
+  
+      static int
+! gui_ph_dialog_text_enter( PtWidget_t *widget, void *data, PtCallbackInfo_t *info )
+  {
+!     if( info->reason_subtype == Pt_EDIT_ACTIVATE )
+!      gui_ph_dialog_close( 1, data );
+      return Pt_CONTINUE;
+  }
+  
+      static int
+! gui_ph_dialog_esc( PtWidget_t *widget, void *data, PtCallbackInfo_t *info )
+  {
+      PhKeyEvent_t *key;
+  
+!     key = PhGetData( info->event );
+!     if( ( key->key_flags & Pk_KF_Cap_Valid ) && ( key->key_cap == Pk_Escape ) )
+      {
+!      gui_ph_dialog_close( 0, data );
+       return Pt_CONSUME;
+      }
+      return Pt_PROCESS;
+--- 1441,1495 ----
+               NULL,
+               NULL,
+               &file,
+!              flags);
+  
+!      vim_free(default_path);
+  
+!      if (file.ret == Pt_FSDIALOG_BTN1)
+           return vim_strsave(file.path);
+      }
+      return NULL;
+  }
+  #endif
+  
+! #if defined(FEAT_GUI_DIALOG) || defined(PROTO)
+  static PtWidget_t *gui_ph_dialog_text = NULL;
+  
+      static int
+! gui_ph_dialog_close(int button, void *data)
+  {
+      PtModalCtrl_t *modal_ctrl = data;
+      char_u *dialog_text, *vim_text;
+  
+!     if (gui_ph_dialog_text != NULL)
+      {
+!      PtGetResource(gui_ph_dialog_text, Pt_ARG_TEXT_STRING, &dialog_text, 0);
+!      PtGetResource(gui_ph_dialog_text, Pt_ARG_POINTER, &vim_text, 0);
+!      STRNCPY(vim_text, dialog_text, IOSIZE - 1);
+      }
+  
+!     PtModalUnblock(modal_ctrl, (void *) button);
+  
+      return Pt_TRUE;
+  }
+  
+      static int
+! gui_ph_dialog_text_enter(PtWidget_t *widget, void *data, PtCallbackInfo_t *info)
+  {
+!     if (info->reason_subtype == Pt_EDIT_ACTIVATE)
+!      gui_ph_dialog_close(1, data);
+      return Pt_CONTINUE;
+  }
+  
+      static int
+! gui_ph_dialog_esc(PtWidget_t *widget, void *data, PtCallbackInfo_t *info)
+  {
+      PhKeyEvent_t *key;
+  
+!     key = PhGetData(info->event);
+!     if ((key->key_flags & Pk_KF_Cap_Valid) && (key->key_cap == Pk_Escape))
+      {
+!      gui_ph_dialog_close(0, data);
+       return Pt_CONSUME;
+      }
+      return Pt_PROCESS;
+***************
+*** 1518,1557 ****
+  
+      button_count = len = i = 0;
+  
+!     if( buttons == NULL || *buttons == NUL )
+       return -1;
+  
+      /* There is one less separator than buttons, so bump up the button count */
+      button_count = 1;
+  
+      /* Count string length and number of seperators */
+!     for( str = buttons; *str; str++ )
+      {
+       len++;
+!      if( *str == DLG_BUTTON_SEP )
+           button_count++;
+      }
+  
+!     if ( title == NULL )
+       title = "Vim";
+  
+!     buttons_copy = alloc( len + 1 );
+!     button_array = (char_u **) alloc( button_count * sizeof( char_u * ) );
+!     if( buttons_copy != NULL && button_array != NULL )
+      {
+!      STRCPY( buttons_copy, buttons );
+  
+       /*
+        * Convert DLG_BUTTON_SEP into NUL's and fill in
+        * button_array with the pointer to each NUL terminated string
+        */
+       str = buttons_copy;
+!      for( i = 0; i < button_count; i++ )
+       {
+           button_array[ i ] = str;
+!          for( ; *str; str++ )
+           {
+!              if( *str == DLG_BUTTON_SEP )
+               {
+                   *str++ = NUL;
+                   break;
+--- 1518,1557 ----
+  
+      button_count = len = i = 0;
+  
+!     if (buttons == NULL || *buttons == NUL)
+       return -1;
+  
+      /* There is one less separator than buttons, so bump up the button count */
+      button_count = 1;
+  
+      /* Count string length and number of seperators */
+!     for (str = buttons; *str; str++)
+      {
+       len++;
+!      if (*str == DLG_BUTTON_SEP)
+           button_count++;
+      }
+  
+!     if (title == NULL)
+       title = "Vim";
+  
+!     buttons_copy = alloc(len + 1);
+!     button_array = (char_u **) alloc(button_count * sizeof(char_u *));
+!     if (buttons_copy != NULL && button_array != NULL)
+      {
+!      STRCPY(buttons_copy, buttons);
+  
+       /*
+        * Convert DLG_BUTTON_SEP into NUL's and fill in
+        * button_array with the pointer to each NUL terminated string
+        */
+       str = buttons_copy;
+!      for (i = 0; i < button_count; i++)
+       {
+           button_array[ i ] = str;
+!          for (; *str; str++)
+           {
+!              if (*str == DLG_BUTTON_SEP)
+               {
+                   *str++ = NUL;
+                   break;
+***************
+*** 1565,1571 ****
+               NULL,
+               message, NULL,
+               button_count, (const char **) button_array, NULL,
+!              default_button, 0, Pt_MODAL );
+  #else
+       /* Writing the dialog ourselves lets us add extra features, like
+        * trapping the escape key and returning 0 to vim */
+--- 1565,1571 ----
+               NULL,
+               message, NULL,
+               button_count, (const char **) button_array, NULL,
+!              default_button, 0, Pt_MODAL);
+  #else
+       /* Writing the dialog ourselves lets us add extra features, like
+        * trapping the escape key and returning 0 to vim */
+***************
+*** 1576,1607 ****
+           PtModalCtrl_t modal_ctrl;
+           PtDialogInfo_t di;
+  
+!          memset( &di, 0, sizeof( di ) );
+!          memset( &modal_ctrl, 0, sizeof( modal_ctrl ) );
+  
+           n = 0;
+!          PtSetArg( &args[n++], Pt_ARG_GROUP_ROWS_COLS, 0, 0 );
+!          PtSetArg( &args[n++], Pt_ARG_WIDTH, 350, 0 );
+!          PtSetArg( &args[n++], Pt_ARG_GROUP_ORIENTATION,
+!                  Pt_GROUP_VERTICAL, 0 );
+!          PtSetArg( &args[n++], Pt_ARG_GROUP_FLAGS,
+!                  Pt_TRUE, Pt_GROUP_NO_KEYS | Pt_GROUP_STRETCH_HORIZONTAL );
+!          PtSetArg( &args[n++], Pt_ARG_CONTAINER_FLAGS, Pt_FALSE, Pt_TRUE );
+!          pane = PtCreateWidget( PtGroup, NULL, n, args );
+  
+           n = 0;
+!          PtSetArg( &args[n++], Pt_ARG_TEXT_STRING, message, 0 );
+!          PtCreateWidget( PtLabel, pane, n, args );
+  
+!          if( textfield != NULL )
+           {
+               n = 0;
+!              PtSetArg( &args[n++], Pt_ARG_MAX_LENGTH, IOSIZE - 1, 0 );
+!              PtSetArg( &args[n++], Pt_ARG_TEXT_STRING, textfield, 0 );
+!              PtSetArg( &args[n++], Pt_ARG_POINTER, textfield, 0 );
+!              gui_ph_dialog_text = PtCreateWidget( PtText, pane, n, args );
+!              PtAddCallback( gui_ph_dialog_text, Pt_CB_ACTIVATE,
+!                      gui_ph_dialog_text_enter, &modal_ctrl );
+           }
+  
+           di.parent = gui.vimWindow;
+--- 1576,1607 ----
+           PtModalCtrl_t modal_ctrl;
+           PtDialogInfo_t di;
+  
+!          memset(&di, 0, sizeof(di));
+!          memset(&modal_ctrl, 0, sizeof(modal_ctrl));
+  
+           n = 0;
+!          PtSetArg(&args[n++], Pt_ARG_GROUP_ROWS_COLS, 0, 0);
+!          PtSetArg(&args[n++], Pt_ARG_WIDTH, 350, 0);
+!          PtSetArg(&args[n++], Pt_ARG_GROUP_ORIENTATION,
+!                  Pt_GROUP_VERTICAL, 0);
+!          PtSetArg(&args[n++], Pt_ARG_GROUP_FLAGS,
+!                  Pt_TRUE, Pt_GROUP_NO_KEYS | Pt_GROUP_STRETCH_HORIZONTAL);
+!          PtSetArg(&args[n++], Pt_ARG_CONTAINER_FLAGS, Pt_FALSE, Pt_TRUE);
+!          pane = PtCreateWidget(PtGroup, NULL, n, args);
+  
+           n = 0;
+!          PtSetArg(&args[n++], Pt_ARG_TEXT_STRING, message, 0);
+!          PtCreateWidget(PtLabel, pane, n, args);
+  
+!          if (textfield != NULL)
+           {
+               n = 0;
+!              PtSetArg(&args[n++], Pt_ARG_MAX_LENGTH, IOSIZE - 1, 0);
+!              PtSetArg(&args[n++], Pt_ARG_TEXT_STRING, textfield, 0);
+!              PtSetArg(&args[n++], Pt_ARG_POINTER, textfield, 0);
+!              gui_ph_dialog_text = PtCreateWidget(PtText, pane, n, args);
+!              PtAddCallback(gui_ph_dialog_text, Pt_CB_ACTIVATE,
+!                      gui_ph_dialog_text_enter, &modal_ctrl);
+           }
+  
+           di.parent = gui.vimWindow;
+***************
+*** 1616,1641 ****
+           di.callback = gui_ph_dialog_close;
+           di.data = &modal_ctrl;
+  
+!          dialog = PtCreateDialog( &di );
+!          PtAddFilterCallback( dialog, Ph_EV_KEY,
+!                  gui_ph_dialog_esc, &modal_ctrl );
+  
+!          if( gui_ph_dialog_text != NULL )
+!              PtGiveFocus( gui_ph_dialog_text, NULL );
+  
+           /* Open dialog, block the vim window and wait for the dialog to close */
+!          PtRealizeWidget( dialog );
+!          PtMakeModal( dialog, Ph_CURSOR_NOINPUT, Ph_CURSOR_DEFAULT_COLOR );
+!          dialog_result = (int) PtModalBlock( &modal_ctrl, 0 );
+  
+!          PtDestroyWidget( dialog );
+           gui_ph_dialog_text = NULL;
+       }
+  #endif
+      }
+  
+!     vim_free( button_array );
+!     vim_free( buttons_copy );
+  
+      return dialog_result;
+  }
+--- 1616,1641 ----
+           di.callback = gui_ph_dialog_close;
+           di.data = &modal_ctrl;
+  
+!          dialog = PtCreateDialog(&di);
+!          PtAddFilterCallback(dialog, Ph_EV_KEY,
+!                  gui_ph_dialog_esc, &modal_ctrl);
+  
+!          if (gui_ph_dialog_text != NULL)
+!              PtGiveFocus(gui_ph_dialog_text, NULL);
+  
+           /* Open dialog, block the vim window and wait for the dialog to close */
+!          PtRealizeWidget(dialog);
+!          PtMakeModal(dialog, Ph_CURSOR_NOINPUT, Ph_CURSOR_DEFAULT_COLOR);
+!          dialog_result = (int) PtModalBlock(&modal_ctrl, 0);
+  
+!          PtDestroyWidget(dialog);
+           gui_ph_dialog_text = NULL;
+       }
+  #endif
+      }
+  
+!     vim_free(button_array);
+!     vim_free(buttons_copy);
+  
+      return dialog_result;
+  }
+***************
+*** 1648,1654 ****
+  {
+      PhPoint_t *pos;
+  
+!     pos = PtWidgetPos( gui.vimWindow, NULL );
+  
+      *x = pos->x;
+      *y = pos->y;
+--- 1648,1654 ----
+  {
+      PhPoint_t *pos;
+  
+!     pos = PtWidgetPos(gui.vimWindow, NULL);
+  
+      *x = pos->x;
+      *y = pos->y;
+***************
+*** 1661,1667 ****
+  {
+      PhPoint_t pos = { x, y };
+  
+!     PtSetResource( gui.vimWindow, Pt_ARG_POS, &pos, 0 );
+  }
+  
+      void
+--- 1661,1667 ----
+  {
+      PhPoint_t pos = { x, y };
+  
+!     PtSetResource(gui.vimWindow, Pt_ARG_POS, &pos, 0);
+  }
+  
+      void
+***************
+*** 1677,1686 ****
+      window_size.h += pg_margin_top + pg_margin_bottom;
+  #endif
+  
+!     PtSetResource( gui.vimWindow, Pt_ARG_MINIMUM_DIM, &min_size, 0 );
+!     PtSetResource( gui.vimWindow, Pt_ARG_DIM, &window_size, 0 );
+  
+!     if( ! PtWidgetIsRealized( gui.vimWindow ) )
+       gui_ph_resize_container();
+  }
+  
+--- 1677,1686 ----
+      window_size.h += pg_margin_top + pg_margin_bottom;
+  #endif
+  
+!     PtSetResource(gui.vimWindow, Pt_ARG_MINIMUM_DIM, &min_size, 0);
+!     PtSetResource(gui.vimWindow, Pt_ARG_DIM, &window_size, 0);
+  
+!     if (! PtWidgetIsRealized(gui.vimWindow))
+       gui_ph_resize_container();
+  }
+  
+***************
+*** 1693,1700 ****
+  {
+      PhRect_t console;
+  
+!     PhWindowQueryVisible( Ph_QUERY_WORKSPACE, 0,
+!          PhInputGroup( NULL ), &console );
+  
+      *screen_w = console.lr.x - console.ul.x + 1;
+      *screen_h = console.lr.y - console.ul.y + 1;
+--- 1693,1700 ----
+  {
+      PhRect_t console;
+  
+!     PhWindowQueryVisible(Ph_QUERY_WORKSPACE, 0,
+!          PhInputGroup(NULL), &console);
+  
+      *screen_w = console.lr.x - console.ul.x + 1;
+      *screen_h = console.lr.y - console.ul.y + 1;
+***************
+*** 1705,1715 ****
+  {
+      PhWindowEvent_t event;
+  
+!     memset( &event, 0, sizeof (event) );
+      event.event_f = Ph_WM_HIDE;
+      event.event_state = Ph_WM_EVSTATE_HIDE;
+!     event.rid = PtWidgetRid( gui.vimWindow );
+!     PtForwardWindowEvent( &event );
+  }
+  
+  #if defined(FEAT_EVAL) || defined(PROTO)
+--- 1705,1715 ----
+  {
+      PhWindowEvent_t event;
+  
+!     memset(&event, 0, sizeof (event));
+      event.event_f = Ph_WM_HIDE;
+      event.event_state = Ph_WM_EVSTATE_HIDE;
+!     event.rid = PtWidgetRid(gui.vimWindow);
+!     PtForwardWindowEvent(&event);
+  }
+  
+  #if defined(FEAT_EVAL) || defined(PROTO)
+***************
+*** 1721,1731 ****
+  {
+      PhWindowEvent_t event;
+  
+!     memset( &event, 0, sizeof (event) );
+      event.event_f = Ph_WM_TOFRONT;
+      event.event_state = Ph_WM_EVSTATE_FFRONT;
+!     event.rid = PtWidgetRid( gui.vimWindow );
+!     PtForwardWindowEvent( &event );
+  }
+  #endif
+  
+--- 1721,1731 ----
+  {
+      PhWindowEvent_t event;
+  
+!     memset(&event, 0, sizeof (event));
+      event.event_f = Ph_WM_TOFRONT;
+      event.event_state = Ph_WM_EVSTATE_FFRONT;
+!     event.rid = PtWidgetRid(gui.vimWindow);
+!     PtForwardWindowEvent(&event);
+  }
+  #endif
+  
+***************
+*** 1733,1741 ****
+  gui_mch_settitle(char_u *title,      char_u *icon)
+  {
+  #ifdef USE_PANEL_GROUP
+!     gui_ph_pg_set_buffer_num( curwin->w_buffer->b_fnum );
+  #endif
+!     PtSetResource( gui.vimWindow, Pt_ARG_WINDOW_TITLE, title, 0 );
+      /* Not sure what to do with the icon text, set balloon text somehow? */
+  }
+  
+--- 1733,1741 ----
+  gui_mch_settitle(char_u *title,      char_u *icon)
+  {
+  #ifdef USE_PANEL_GROUP
+!     gui_ph_pg_set_buffer_num(curwin->w_buffer->b_fnum);
+  #endif
+!     PtSetResource(gui.vimWindow, Pt_ARG_WINDOW_TITLE, title, 0);
+      /* Not sure what to do with the icon text, set balloon text somehow? */
+  }
+  
+***************
+*** 1748,1757 ****
+      int          n = 0;
+      PtArg_t args[3];
+  
+!     PtSetArg( &args[ n++ ], Pt_ARG_MAXIMUM, max, 0 );
+!     PtSetArg( &args[ n++ ], Pt_ARG_SLIDER_SIZE, size, 0 );
+!     PtSetArg( &args[ n++ ], Pt_ARG_GAUGE_VALUE, val, 0 );
+!     PtSetResources( sb->id, n, args );
+  }
+  
+      void
+--- 1748,1757 ----
+      int          n = 0;
+      PtArg_t args[3];
+  
+!     PtSetArg(&args[ n++ ], Pt_ARG_MAXIMUM, max, 0);
+!     PtSetArg(&args[ n++ ], Pt_ARG_SLIDER_SIZE, size, 0);
+!     PtSetArg(&args[ n++ ], Pt_ARG_GAUGE_VALUE, val, 0);
+!     PtSetResources(sb->id, n, args);
+  }
+  
+      void
+***************
+*** 1759,1765 ****
+  {
+      PhArea_t area = {{ x, y }, { w, h }};
+  
+!     PtSetResource( sb->id, Pt_ARG_AREA, &area, 0 );
+  }
+  
+      void
+--- 1759,1765 ----
+  {
+      PhArea_t area = {{ x, y }, { w, h }};
+  
+!     PtSetResource(sb->id, Pt_ARG_AREA, &area, 0);
+  }
+  
+      void
+***************
+*** 1775,1786 ****
+       *
+       * Also, don't let the scrollbar get focus
+       */
+!     PtSetArg( &args[ n++ ], Pt_ARG_FLAGS, Pt_DELAY_REALIZE,
+!          Pt_DELAY_REALIZE | Pt_GETS_FOCUS );
+!     PtSetArg( &args[ n++ ], Pt_ARG_SCROLLBAR_FLAGS, Pt_SCROLLBAR_SHOW_ARROWS, 0);
+  #if 0
+      /* Don't need this anchoring for the scrollbars */
+!     if( orient == SBAR_HORIZ )
+      {
+       anchor_flags = Pt_BOTTOM_ANCHORED_BOTTOM |
+           Pt_LEFT_ANCHORED_LEFT | Pt_RIGHT_ANCHORED_RIGHT;
+--- 1775,1786 ----
+       *
+       * Also, don't let the scrollbar get focus
+       */
+!     PtSetArg(&args[ n++ ], Pt_ARG_FLAGS, Pt_DELAY_REALIZE,
+!          Pt_DELAY_REALIZE | Pt_GETS_FOCUS);
+!     PtSetArg(&args[ n++ ], Pt_ARG_SCROLLBAR_FLAGS, Pt_SCROLLBAR_SHOW_ARROWS, 0);
+  #if 0
+      /* Don't need this anchoring for the scrollbars */
+!     if (orient == SBAR_HORIZ)
+      {
+       anchor_flags = Pt_BOTTOM_ANCHORED_BOTTOM |
+           Pt_LEFT_ANCHORED_LEFT | Pt_RIGHT_ANCHORED_RIGHT;
+***************
+*** 1788,1827 ****
+      else
+      {
+       anchor_flags = Pt_BOTTOM_ANCHORED_BOTTOM | Pt_TOP_ANCHORED_TOP;
+!      if( sb->wp != NULL )
+       {
+!          if( sb == &sb->wp->w_scrollbars[ SBAR_LEFT ] )
+               anchor_flags |= Pt_LEFT_ANCHORED_LEFT;
+           else
+               anchor_flags |= Pt_RIGHT_ANCHORED_RIGHT;
+       }
+      }
+!     PtSetArg( &args[ n++ ], Pt_ARG_ANCHOR_FLAGS, anchor_flags, Pt_IS_ANCHORED );
+  #endif
+!     PtSetArg( &args[ n++ ], Pt_ARG_ORIENTATION,
+!          (orient == SBAR_HORIZ) ? Pt_HORIZONTAL : Pt_VERTICAL, 0 );
+  #ifdef USE_PANEL_GROUP
+!     sb->id = PtCreateWidget( PtScrollbar, gui.vimPanelGroup, n, args );
+  #else
+!     sb->id = PtCreateWidget( PtScrollbar, gui.vimContainer, n, args );
+  #endif
+  
+!     PtAddCallback( sb->id, Pt_CB_SCROLLBAR_MOVE, gui_ph_handle_scrollbar, sb );
+  }
+  
+      void
+  gui_mch_enable_scrollbar(scrollbar_T *sb, int flag)
+  {
+!     if( flag != 0 )
+!      PtRealizeWidget( sb->id );
+      else
+!      PtUnrealizeWidget( sb->id );
+  }
+  
+      void
+  gui_mch_destroy_scrollbar(scrollbar_T *sb)
+  {
+!     PtDestroyWidget( sb->id );
+      sb->id = NULL;
+  }
+  
+--- 1788,1827 ----
+      else
+      {
+       anchor_flags = Pt_BOTTOM_ANCHORED_BOTTOM | Pt_TOP_ANCHORED_TOP;
+!      if (sb->wp != NULL)
+       {
+!          if (sb == &sb->wp->w_scrollbars[ SBAR_LEFT ])
+               anchor_flags |= Pt_LEFT_ANCHORED_LEFT;
+           else
+               anchor_flags |= Pt_RIGHT_ANCHORED_RIGHT;
+       }
+      }
+!     PtSetArg(&args[ n++ ], Pt_ARG_ANCHOR_FLAGS, anchor_flags, Pt_IS_ANCHORED);
+  #endif
+!     PtSetArg(&args[ n++ ], Pt_ARG_ORIENTATION,
+!          (orient == SBAR_HORIZ) ? Pt_HORIZONTAL : Pt_VERTICAL, 0);
+  #ifdef USE_PANEL_GROUP
+!     sb->id = PtCreateWidget(PtScrollbar, gui.vimPanelGroup, n, args);
+  #else
+!     sb->id = PtCreateWidget(PtScrollbar, gui.vimContainer, n, args);
+  #endif
+  
+!     PtAddCallback(sb->id, Pt_CB_SCROLLBAR_MOVE, gui_ph_handle_scrollbar, sb);
+  }
+  
+      void
+  gui_mch_enable_scrollbar(scrollbar_T *sb, int flag)
+  {
+!     if (flag != 0)
+!      PtRealizeWidget(sb->id);
+      else
+!      PtUnrealizeWidget(sb->id);
+  }
+  
+      void
+  gui_mch_destroy_scrollbar(scrollbar_T *sb)
+  {
+!     PtDestroyWidget(sb->id);
+      sb->id = NULL;
+  }
+  
+***************
+*** 1866,1873 ****
+       return;
+  
+      if (shape == MSHAPE_HIDE || gui.pointer_hidden)
+!      PtSetResource( gui.vimTextArea, Pt_ARG_CURSOR_TYPE, Ph_CURSOR_NONE,
+!              0 );
+      else
+      {
+       if (shape >= MSHAPE_NUMBERED)
+--- 1866,1873 ----
+       return;
+  
+      if (shape == MSHAPE_HIDE || gui.pointer_hidden)
+!      PtSetResource(gui.vimTextArea, Pt_ARG_CURSOR_TYPE, Ph_CURSOR_NONE,
+!              0);
+      else
+      {
+       if (shape >= MSHAPE_NUMBERED)
+***************
+*** 1875,1881 ****
+       else
+           id = mshape_ids[shape];
+  
+!      PtSetResource( gui.vimTextArea, Pt_ARG_CURSOR_TYPE, id, 0 );
+      }
+      if (shape != MSHAPE_HIDE)
+       last_shape = shape;
+--- 1875,1881 ----
+       else
+           id = mshape_ids[shape];
+  
+!      PtSetResource(gui.vimTextArea, Pt_ARG_CURSOR_TYPE, id,  0);
+      }
+      if (shape != MSHAPE_HIDE)
+       last_shape = shape;
+***************
+*** 1885,1903 ****
+      void
+  gui_mch_mousehide(int hide)
+  {
+!     if( gui.pointer_hidden != hide )
+      {
+       gui.pointer_hidden = hide;
+  #ifdef FEAT_MOUSESHAPE
+!      if( hide )
+!          PtSetResource( gui.vimTextArea, Pt_ARG_CURSOR_TYPE,
+!                  Ph_CURSOR_NONE, 0 );
+       else
+!          mch_set_mouse_shape( last_shape );
+  #else
+!      PtSetResource( gui.vimTextArea, Pt_ARG_CURSOR_TYPE,
+!              ( hide == MOUSE_SHOW ) ? GUI_PH_MOUSE_TYPE : Ph_CURSOR_NONE,
+!              0 );
+  #endif
+      }
+  }
+--- 1885,1903 ----
+      void
+  gui_mch_mousehide(int hide)
+  {
+!     if (gui.pointer_hidden != hide)
+      {
+       gui.pointer_hidden = hide;
+  #ifdef FEAT_MOUSESHAPE
+!      if (hide)
+!          PtSetResource(gui.vimTextArea, Pt_ARG_CURSOR_TYPE,
+!                  Ph_CURSOR_NONE, 0);
+       else
+!          mch_set_mouse_shape(last_shape);
+  #else
+!      PtSetResource(gui.vimTextArea, Pt_ARG_CURSOR_TYPE,
+!              (hide == MOUSE_SHOW) ? GUI_PH_MOUSE_TYPE : Ph_CURSOR_NONE,
+!              0);
+  #endif
+      }
+  }
+***************
+*** 1910,1917 ****
+  
+      /* FIXME: does this return the correct position,
+       * with respect to the border? */
+!     PhQueryCursor( PhInputGroup( NULL ), &info );
+!     PtGetAbsPosition( gui.vimTextArea , &ix, &iy );
+  
+      *x = info.pos.x - ix;
+      *y = info.pos.y - iy;
+--- 1910,1917 ----
+  
+      /* FIXME: does this return the correct position,
+       * with respect to the border? */
+!     PhQueryCursor(PhInputGroup(NULL), &info);
+!     PtGetAbsPosition(gui.vimTextArea , &ix, &iy);
+  
+      *x = info.pos.x - ix;
+      *y = info.pos.y - iy;
+***************
+*** 1922,1930 ****
+  {
+      short abs_x, abs_y;
+  
+!     PtGetAbsPosition( gui.vimTextArea, &abs_x, &abs_y );
+      /* Add the border offset? */
+!     PhMoveCursorAbs( PhInputGroup( NULL ), abs_x + x, abs_y + y );
+  }
+  
+  /****************************************************************************/
+--- 1922,1930 ----
+  {
+      short abs_x, abs_y;
+  
+!     PtGetAbsPosition(gui.vimTextArea, &abs_x, &abs_y);
+      /* Add the border offset? */
+!     PhMoveCursorAbs(PhInputGroup(NULL), abs_x + x, abs_y + y);
+  }
+  
+  /****************************************************************************/
+***************
+*** 1952,1974 ****
+      color_diff = gui_get_lightness(gui_ph_mouse_color)
+                                         - gui_get_lightness(gui.back_pixel);
+  
+!     if( abs( color_diff ) < 64 )
+      {
+       short r, g, b;
+       /* not a great algorithm... */
+!      r = PgRedValue( gui_ph_mouse_color ) ^ 255;
+!      g = PgGreenValue( gui_ph_mouse_color ) ^ 255;
+!      b = PgBlueValue( gui_ph_mouse_color ) ^ 255;
+  
+  #ifndef FEAT_MOUSESHAPE
+!      gui_ph_mouse_color = PgRGB( r, g, b );
+!      PtSetResource( gui.vimTextArea, Pt_ARG_CURSOR_COLOR,
+!              gui_ph_mouse_color, 0 );
+  #endif
+      }
+  #endif
+  
+!     PtSetResource( gui.vimTextArea, Pt_ARG_FILL_COLOR, gui.back_pixel, 0 );
+  }
+  
+      static int
+--- 1952,1974 ----
+      color_diff = gui_get_lightness(gui_ph_mouse_color)
+                                         - gui_get_lightness(gui.back_pixel);
+  
+!     if (abs(color_diff) < 64)
+      {
+       short r, g, b;
+       /* not a great algorithm... */
+!      r = PgRedValue(gui_ph_mouse_color) ^ 255;
+!      g = PgGreenValue(gui_ph_mouse_color) ^ 255;
+!      b = PgBlueValue(gui_ph_mouse_color) ^ 255;
+  
+  #ifndef FEAT_MOUSESHAPE
+!      gui_ph_mouse_color = PgRGB(r, g, b);
+!      PtSetResource(gui.vimTextArea, Pt_ARG_CURSOR_COLOR,
+!              gui_ph_mouse_color, 0);
+  #endif
+      }
+  #endif
+  
+!     PtSetResource(gui.vimTextArea, Pt_ARG_FILL_COLOR, gui.back_pixel, 0);
+  }
+  
+      static int
+***************
+*** 2058,2076 ****
+      };
+  
+      /* is name #rrggbb format? */
+!     if( name[0] == '#' && STRLEN( name ) == 7 )
+      {
+!      r = hex_digit( name[1] ) * 16 + hex_digit( name[2] );
+!      g = hex_digit( name[3] ) * 16 + hex_digit( name[4] );
+!      b = hex_digit( name[5] ) * 16 + hex_digit( name[6] );
+!      if( r < 0 || g < 0 || b < 0 )
+           return INVALCOLOR;
+       return RGB(r, g, b);
+      }
+  
+!     for( i = 0; i < ARRAY_LENGTH( table ); i++ )
+      {
+!      if( STRICMP( name, table[i].name ) == 0 )
+           return table[i].colour;
+      }
+  
+--- 2058,2076 ----
+      };
+  
+      /* is name #rrggbb format? */
+!     if (name[0] == '#' && STRLEN(name) == 7)
+      {
+!      r = hex_digit(name[1]) * 16 + hex_digit(name[2]);
+!      g = hex_digit(name[3]) * 16 + hex_digit(name[4]);
+!      b = hex_digit(name[5]) * 16 + hex_digit(name[6]);
+!      if (r < 0 || g < 0 || b < 0)
+           return INVALCOLOR;
+       return RGB(r, g, b);
+      }
+  
+!     for (i = 0; i < ARRAY_LENGTH(table); i++)
+      {
+!      if (STRICMP(name, table[i].name) == 0)
+           return table[i].colour;
+      }
+  
+***************
+*** 2129,2141 ****
+      void
+  gui_mch_set_fg_color(guicolor_T color)
+  {
+!     PgSetTextColor( color );
+  }
+  
+      void
+  gui_mch_set_bg_color(guicolor_T color)
+  {
+!     PgSetFillColor( color );
+  }
+  
+      void
+--- 2129,2141 ----
+      void
+  gui_mch_set_fg_color(guicolor_T color)
+  {
+!     PgSetTextColor(color);
+  }
+  
+      void
+  gui_mch_set_bg_color(guicolor_T color)
+  {
+!     PgSetFillColor(color);
+  }
+  
+      void
+***************
+*** 2148,2168 ****
+  {
+      PhRect_t rect;
+  
+!     rect.ul.x = FILL_X( col );
+!     rect.ul.y = FILL_Y( row );
+  
+      /* FIXME: This has an off by one pixel problem */
+      rect.lr.x = rect.ul.x + nc * gui.char_width;
+      rect.lr.y = rect.ul.y + nr * gui.char_height;
+!     if( nc > 0 )
+       rect.lr.x -= 1;
+!     if( nr > 0 )
+       rect.lr.y -= 1;
+  
+      DRAW_START;
+!     PgSetDrawMode( Pg_DrawModeDSTINVERT );
+!     PgDrawRect( &rect, Pg_DRAW_FILL );
+!     PgSetDrawMode( Pg_DrawModeSRCCOPY );
+      DRAW_END;
+  }
+  
+--- 2148,2168 ----
+  {
+      PhRect_t rect;
+  
+!     rect.ul.x = FILL_X(col);
+!     rect.ul.y = FILL_Y(row);
+  
+      /* FIXME: This has an off by one pixel problem */
+      rect.lr.x = rect.ul.x + nc * gui.char_width;
+      rect.lr.y = rect.ul.y + nr * gui.char_height;
+!     if (nc > 0)
+       rect.lr.x -= 1;
+!     if (nr > 0)
+       rect.lr.y -= 1;
+  
+      DRAW_START;
+!     PgSetDrawMode(Pg_DrawModeDSTINVERT);
+!     PgDrawRect(&rect, Pg_DRAW_FILL);
+!     PgSetDrawMode(Pg_DrawModeSRCCOPY);
+      DRAW_END;
+  }
+  
+***************
+*** 2170,2182 ****
+  gui_mch_clear_block(int row1, int col1, int row2, int col2)
+  {
+      PhRect_t block = {
+!      { FILL_X( col1 ), FILL_Y( row1 ) },
+!      { FILL_X( col2 + 1 ) - 1, FILL_Y( row2 + 1 ) - 1}
+      };
+  
+      DRAW_START;
+!     gui_mch_set_bg_color( gui.back_pixel );
+!     PgDrawRect( &block, Pg_DRAW_FILL );
+      DRAW_END;
+  }
+  
+--- 2170,2182 ----
+  gui_mch_clear_block(int row1, int col1, int row2, int col2)
+  {
+      PhRect_t block = {
+!      { FILL_X(col1), FILL_Y(row1) },
+!      { FILL_X(col2 + 1) - 1, FILL_Y(row2 + 1) - 1}
+      };
+  
+      DRAW_START;
+!     gui_mch_set_bg_color(gui.back_pixel);
+!     PgDrawRect(&block, Pg_DRAW_FILL);
+      DRAW_END;
+  }
+  
+***************
+*** 2189,2200 ****
+           Rows * gui.char_height + gui.border_width - 1 }
+      };
+  
+!     if( is_ignore_draw == TRUE )
+       return;
+  
+      DRAW_START;
+!     gui_mch_set_bg_color( gui.back_pixel );
+!     PgDrawRect( &text_rect, Pg_DRAW_FILL );
+      DRAW_END;
+  }
+  
+--- 2189,2200 ----
+           Rows * gui.char_height + gui.border_width - 1 }
+      };
+  
+!     if (is_ignore_draw == TRUE)
+       return;
+  
+      DRAW_START;
+!     gui_mch_set_bg_color(gui.back_pixel);
+!     PgDrawRect(&text_rect, Pg_DRAW_FILL);
+      DRAW_END;
+  }
+  
+***************
+*** 2204,2231 ****
+      PhRect_t    rect;
+      PhPoint_t   delta;
+  
+!     rect.ul.x = FILL_X( gui.scroll_region_left );
+!     rect.ul.y = FILL_Y( row + num_lines );
+  
+!     rect.lr.x = FILL_X( gui.scroll_region_right + 1 ) - 1;
+!     rect.lr.y = FILL_Y( gui.scroll_region_bot + 1) - 1;
+  
+!     PtWidgetOffset( gui.vimTextArea, &gui_ph_raw_offset );
+!     PhTranslatePoint( &gui_ph_raw_offset, PtWidgetPos(gui.vimTextArea, NULL));
+!     PhTranslateRect( &rect, &gui_ph_raw_offset );
+  
+      delta.x = 0;
+      delta.y = -num_lines * gui.char_height;
+  
+      PgFlush();
+  
+!     PhBlit( PtWidgetRid( PtFindDisjoint( gui.vimTextArea ) ), &rect, &delta );
+  
+      gui_clear_block(
+       gui.scroll_region_bot - num_lines + 1,
+       gui.scroll_region_left,
+       gui.scroll_region_bot,
+!      gui.scroll_region_right );
+  }
+  
+      void
+--- 2204,2231 ----
+      PhRect_t    rect;
+      PhPoint_t   delta;
+  
+!     rect.ul.x = FILL_X(gui.scroll_region_left);
+!     rect.ul.y = FILL_Y(row + num_lines);
+  
+!     rect.lr.x = FILL_X(gui.scroll_region_right + 1) - 1;
+!     rect.lr.y = FILL_Y(gui.scroll_region_bot + 1) - 1;
+  
+!     PtWidgetOffset(gui.vimTextArea, &gui_ph_raw_offset);
+!     PhTranslatePoint(&gui_ph_raw_offset, PtWidgetPos(gui.vimTextArea, NULL));
+!     PhTranslateRect(&rect, &gui_ph_raw_offset);
+  
+      delta.x = 0;
+      delta.y = -num_lines * gui.char_height;
+  
+      PgFlush();
+  
+!     PhBlit(PtWidgetRid(PtFindDisjoint(gui.vimTextArea)), &rect, &delta);
+  
+      gui_clear_block(
+       gui.scroll_region_bot - num_lines + 1,
+       gui.scroll_region_left,
+       gui.scroll_region_bot,
+!      gui.scroll_region_right);
+  }
+  
+      void
+***************
+*** 2234,2258 ****
+      PhRect_t    rect;
+      PhPoint_t   delta;
+  
+!     rect.ul.x = FILL_X( gui.scroll_region_left );
+!     rect.ul.y = FILL_Y( row );
+  
+!     rect.lr.x = FILL_X( gui.scroll_region_right + 1 ) - 1;
+!     rect.lr.y = FILL_Y( gui.scroll_region_bot - num_lines + 1 ) - 1;
+  
+!     PtWidgetOffset( gui.vimTextArea, &gui_ph_raw_offset );
+!     PhTranslatePoint( &gui_ph_raw_offset, PtWidgetPos( gui.vimTextArea, NULL ) );
+!     PhTranslateRect( &rect, &gui_ph_raw_offset );
+  
+      delta.x = 0;
+      delta.y = num_lines * gui.char_height;
+  
+      PgFlush();
+  
+!     PhBlit( PtWidgetRid( PtFindDisjoint( gui.vimTextArea ) ) , &rect, &delta );
+  
+!     gui_clear_block( row, gui.scroll_region_left,
+!          row + num_lines - 1, gui.scroll_region_right );
+  }
+  
+      void
+--- 2234,2258 ----
+      PhRect_t    rect;
+      PhPoint_t   delta;
+  
+!     rect.ul.x = FILL_X(gui.scroll_region_left);
+!     rect.ul.y = FILL_Y(row);
+  
+!     rect.lr.x = FILL_X(gui.scroll_region_right + 1) - 1;
+!     rect.lr.y = FILL_Y(gui.scroll_region_bot - num_lines + 1) - 1;
+  
+!     PtWidgetOffset(gui.vimTextArea, &gui_ph_raw_offset);
+!     PhTranslatePoint(&gui_ph_raw_offset, PtWidgetPos(gui.vimTextArea, NULL));
+!     PhTranslateRect(&rect, &gui_ph_raw_offset);
+  
+      delta.x = 0;
+      delta.y = num_lines * gui.char_height;
+  
+      PgFlush();
+  
+!     PhBlit(PtWidgetRid(PtFindDisjoint(gui.vimTextArea)) , &rect, &delta);
+  
+!     gui_clear_block(row, gui.scroll_region_left,
+!          row + num_lines - 1, gui.scroll_region_right);
+  }
+  
+      void
+***************
+*** 2261,2297 ****
+      static char *utf8_buffer = NULL;
+      static int       utf8_len = 0;
+  
+!     PhPoint_t        pos = { TEXT_X( col ), TEXT_Y( row ) };
+      PhRect_t rect;
+  
+!     if( is_ignore_draw == TRUE )
+       return;
+  
+      DRAW_START;
+  
+!     if( !( flags & DRAW_TRANSP ) )
+      {
+       PgDrawIRect(
+!              FILL_X( col ), FILL_Y( row ),
+!              FILL_X( col + len ) - 1, FILL_Y( row + 1 ) - 1,
+!              Pg_DRAW_FILL );
+      }
+  
+!     if( flags & DRAW_UNDERL )
+!      PgSetUnderline( gui.norm_pixel, Pg_TRANSPARENT, 0 );
+  
+!     if( charset_translate != NULL
+  #ifdef FEAT_MBYTE
+           && enc_utf8 == 0
+  #endif
+!          )
+      {
+       int src_taken, dst_made;
+  
+       /* Use a static buffer to avoid large amounts of de/allocations */
+!      if( utf8_len < len )
+       {
+!          utf8_buffer = realloc( utf8_buffer, len * MB_LEN_MAX );
+           utf8_len = len;
+       }
+  
+--- 2261,2297 ----
+      static char *utf8_buffer = NULL;
+      static int       utf8_len = 0;
+  
+!     PhPoint_t        pos = { TEXT_X(col), TEXT_Y(row) };
+      PhRect_t rect;
+  
+!     if (is_ignore_draw == TRUE)
+       return;
+  
+      DRAW_START;
+  
+!     if (!(flags & DRAW_TRANSP))
+      {
+       PgDrawIRect(
+!              FILL_X(col), FILL_Y(row),
+!              FILL_X(col + len) - 1, FILL_Y(row + 1) - 1,
+!              Pg_DRAW_FILL);
+      }
+  
+!     if (flags & DRAW_UNDERL)
+!      PgSetUnderline(gui.norm_pixel, Pg_TRANSPARENT, 0);
+  
+!     if (charset_translate != NULL
+  #ifdef FEAT_MBYTE
+           && enc_utf8 == 0
+  #endif
+!         )
+      {
+       int src_taken, dst_made;
+  
+       /* Use a static buffer to avoid large amounts of de/allocations */
+!      if (utf8_len < len)
+       {
+!          utf8_buffer = realloc(utf8_buffer, len * MB_LEN_MAX);
+           utf8_len = len;
+       }
+  
+***************
+*** 2302,2337 ****
+               &src_taken,
+               utf8_buffer,
+               utf8_len,
+!              &dst_made );
+       s = utf8_buffer;
+       len = dst_made;
+      }
+  
+!     PgDrawText( s, len, &pos, 0 );
+  
+!     if( flags & DRAW_BOLD )
+      {
+       /* FIXME: try and only calculate these values once... */
+!      rect.ul.x = FILL_X( col ) + 1;
+!      rect.ul.y = FILL_Y( row );
+!      rect.lr.x = FILL_X( col + len ) - 1;
+!      rect.lr.y = FILL_Y( row + 1) - 1;
+!      /* PgSetUserClip( NULL ) causes the scrollbar to not redraw... */
+  #if 0
+       pos.x++;
+  
+!      PgSetUserClip( &rect );
+!      PgDrawText( s, len, &pos, 0 );
+!      PgSetUserClip( NULL );
+  #else
+!      rect.lr.y -= ( p_linespace + 1 ) / 2;
+       /* XXX: DrawTextArea doesn't work with phditto */
+!      PgDrawTextArea( s, len, &rect, Pg_TEXT_BOTTOM );
+  #endif
+      }
+  
+!     if( flags & DRAW_UNDERL )
+!      PgSetUnderline( Pg_TRANSPARENT, Pg_TRANSPARENT, 0 );
+  
+      DRAW_END;
+  }
+--- 2302,2337 ----
+               &src_taken,
+               utf8_buffer,
+               utf8_len,
+!              &dst_made);
+       s = utf8_buffer;
+       len = dst_made;
+      }
+  
+!     PgDrawText(s, len, &pos, 0);
+  
+!     if (flags & DRAW_BOLD)
+      {
+       /* FIXME: try and only calculate these values once... */
+!      rect.ul.x = FILL_X(col) + 1;
+!      rect.ul.y = FILL_Y(row);
+!      rect.lr.x = FILL_X(col + len) - 1;
+!      rect.lr.y = FILL_Y(row + 1) - 1;
+!      /* PgSetUserClip(NULL) causes the scrollbar to not redraw... */
+  #if 0
+       pos.x++;
+  
+!      PgSetUserClip(&rect);
+!      PgDrawText(s, len, &pos, 0);
+!      PgSetUserClip(NULL);
+  #else
+!      rect.lr.y -= (p_linespace + 1) / 2;
+       /* XXX: DrawTextArea doesn't work with phditto */
+!      PgDrawTextArea(s, len, &rect, Pg_TEXT_BOTTOM);
+  #endif
+      }
+  
+!     if (flags & DRAW_UNDERL)
+!      PgSetUnderline(Pg_TRANSPARENT, Pg_TRANSPARENT, 0);
+  
+      DRAW_END;
+  }
+***************
+*** 2346,2359 ****
+  
+      /* FIXME: Double width characters */
+  
+!     r.ul.x = FILL_X( gui.col );
+!     r.ul.y = FILL_Y( gui.row );
+      r.lr.x = r.ul.x + gui.char_width - 1;
+      r.lr.y = r.ul.y + gui.char_height - 1;
+  
+      DRAW_START;
+!     PgSetStrokeColor( color );
+!     PgDrawRect( &r, Pg_DRAW_STROKE );
+      DRAW_END;
+  }
+  
+--- 2346,2359 ----
+  
+      /* FIXME: Double width characters */
+  
+!     r.ul.x = FILL_X(gui.col);
+!     r.ul.y = FILL_Y(gui.row);
+      r.lr.x = r.ul.x + gui.char_width - 1;
+      r.lr.y = r.ul.y + gui.char_height - 1;
+  
+      DRAW_START;
+!     PgSetStrokeColor(color);
+!     PgDrawRect(&r, Pg_DRAW_STROKE);
+      DRAW_END;
+  }
+  
+***************
+*** 2362,2375 ****
+  {
+      PhRect_t r;
+  
+!     r.ul.x = FILL_X( gui.col );
+!     r.ul.y = FILL_Y( gui.row ) + gui.char_height - h;
+      r.lr.x = r.ul.x + w - 1;
+      r.lr.y = r.ul.y + h - 1;
+  
+      DRAW_START;
+!     gui_mch_set_bg_color( color );
+!     PgDrawRect( &r, Pg_DRAW_FILL );
+      DRAW_END;
+  }
+  
+--- 2362,2375 ----
+  {
+      PhRect_t r;
+  
+!     r.ul.x = FILL_X(gui.col);
+!     r.ul.y = FILL_Y(gui.row) + gui.char_height - h;
+      r.lr.x = r.ul.x + w - 1;
+      r.lr.y = r.ul.y + h - 1;
+  
+      DRAW_START;
+!     gui_mch_set_bg_color(color);
+!     PgDrawRect(&r, Pg_DRAW_FILL);
+      DRAW_END;
+  }
+  
+***************
+*** 2385,2394 ****
+  gui_mch_start_blink(void)
+  {
+      /* Only turn on the timer on if none of the times are zero */
+!     if( blink_waittime && blink_ontime && blink_offtime && gui.in_focus)
+      {
+!      PtSetResource( gui_ph_timer_cursor, Pt_ARG_TIMER_INITIAL,
+!              blink_waittime, 0 );
+       blink_state = BLINK_ON;
+       gui_update_cursor(TRUE, FALSE);
+      }
+--- 2385,2394 ----
+  gui_mch_start_blink(void)
+  {
+      /* Only turn on the timer on if none of the times are zero */
+!     if (blink_waittime && blink_ontime && blink_offtime && gui.in_focus)
+      {
+!      PtSetResource(gui_ph_timer_cursor, Pt_ARG_TIMER_INITIAL,
+!              blink_waittime, 0);
+       blink_state = BLINK_ON;
+       gui_update_cursor(TRUE, FALSE);
+      }
+***************
+*** 2397,2405 ****
+      void
+  gui_mch_stop_blink(void)
+  {
+!     PtSetResource( gui_ph_timer_cursor, Pt_ARG_TIMER_INITIAL, 0, 0 );
+  
+!     if( blink_state == BLINK_OFF )
+       gui_update_cursor(TRUE, FALSE);
+  
+      blink_state = BLINK_NONE;
+--- 2397,2405 ----
+      void
+  gui_mch_stop_blink(void)
+  {
+!     PtSetResource(gui_ph_timer_cursor, Pt_ARG_TIMER_INITIAL, 0, 0);
+  
+!     if (blink_state == BLINK_OFF)
+       gui_update_cursor(TRUE, FALSE);
+  
+      blink_state = BLINK_NONE;
+***************
+*** 2417,2431 ****
+      void
+  gui_mch_flash(int msec)
+  {
+!     PgSetFillXORColor( Pg_BLACK, Pg_WHITE );
+!     PgSetDrawMode( Pg_DRAWMODE_XOR );
+      gui_mch_clear_all();
+      gui_mch_flush();
+  
+!     ui_delay( (long) msec, TRUE );
+  
+      gui_mch_clear_all();
+!     PgSetDrawMode( Pg_DRAWMODE_OPAQUE );
+      gui_mch_flush();
+  }
+  
+--- 2417,2431 ----
+      void
+  gui_mch_flash(int msec)
+  {
+!     PgSetFillXORColor(Pg_BLACK, Pg_WHITE);
+!     PgSetDrawMode(Pg_DRAWMODE_XOR);
+      gui_mch_clear_all();
+      gui_mch_flush();
+  
+!     ui_delay((long) msec, TRUE);
+  
+      gui_mch_clear_all();
+!     PgSetDrawMode(Pg_DRAWMODE_OPAQUE);
+      gui_mch_flush();
+  }
+  
+***************
+*** 2440,2446 ****
+  {
+      PhArea_t area = {{x, y}, {w, h}};
+  
+!     PtSetResource( gui.vimTextArea, Pt_ARG_AREA, &area, 0 );
+  }
+  
+      int
+--- 2440,2446 ----
+  {
+      PhArea_t area = {{x, y}, {w, h}};
+  
+!     PtSetResource(gui.vimTextArea, Pt_ARG_AREA, &area, 0);
+  }
+  
+      int
+***************
+*** 2496,2514 ****
+  };
+  
+  static PhImage_t *
+! gui_ph_toolbar_load_icon( char_u *iconfile )
+  {
+      static PhImage_t external_icon;
+      PhImage_t *temp_phi = NULL;
+  
+!     temp_phi = PxLoadImage( iconfile, NULL );
+!     if( temp_phi != NULL )
+      {
+       /* The label widget will free the image/palette/etc. for us when
+        * it's destroyed */
+       temp_phi->flags |= Ph_RELEASE_IMAGE_ALL;
+!      memcpy( &external_icon, temp_phi, sizeof( external_icon ) );
+!      free( temp_phi );
+  
+       temp_phi = &external_icon;
+      }
+--- 2496,2514 ----
+  };
+  
+  static PhImage_t *
+! gui_ph_toolbar_load_icon(char_u *iconfile)
+  {
+      static PhImage_t external_icon;
+      PhImage_t *temp_phi = NULL;
+  
+!     temp_phi = PxLoadImage(iconfile, NULL);
+!     if (temp_phi != NULL)
+      {
+       /* The label widget will free the image/palette/etc. for us when
+        * it's destroyed */
+       temp_phi->flags |= Ph_RELEASE_IMAGE_ALL;
+!      memcpy(&external_icon, temp_phi, sizeof(external_icon));
+!      free(temp_phi);
+  
+       temp_phi = &external_icon;
+      }
+***************
+*** 2523,2551 ****
+   * PhImage_t are copied, and the original PhImage_t aren't needed anymore).
+   */
+  static PhImage_t *
+! gui_ph_toolbar_find_icon( vimmenu_T *menu )
+  {
+      char_u full_pathname[ MAXPATHL + 1 ];
+      PhImage_t *icon = NULL;
+  
+!     if( menu->icon_builtin == FALSE )
+      {
+!      if( menu->iconfile != NULL )
+           /* TODO: use gui_find_iconfile() */
+!          icon = gui_ph_toolbar_load_icon( menu->iconfile );
+  
+       /* TODO: Restrict loading to just .png? Search for any format? */
+!      if( ( icon == NULL ) &&
+!          ( ( gui_find_bitmap( menu->name, full_pathname, "gif" ) == OK ) ||
+!            ( gui_find_bitmap( menu->name, full_pathname, "png" ) == OK ) ) )
+!          icon = gui_ph_toolbar_load_icon( full_pathname );
+  
+!      if( icon != NULL )
+           return icon;
+      }
+  
+!     if( menu->iconidx >= 0 &&
+!          ( menu->iconidx < ARRAY_LENGTH( gui_ph_toolbar_images ) ) )
+      {
+       return gui_ph_toolbar_images[menu->iconidx];
+      }
+--- 2523,2551 ----
+   * PhImage_t are copied, and the original PhImage_t aren't needed anymore).
+   */
+  static PhImage_t *
+! gui_ph_toolbar_find_icon(vimmenu_T *menu)
+  {
+      char_u full_pathname[ MAXPATHL + 1 ];
+      PhImage_t *icon = NULL;
+  
+!     if (menu->icon_builtin == FALSE)
+      {
+!      if (menu->iconfile != NULL)
+           /* TODO: use gui_find_iconfile() */
+!          icon = gui_ph_toolbar_load_icon(menu->iconfile);
+  
+       /* TODO: Restrict loading to just .png? Search for any format? */
+!      if ((icon == NULL) &&
+!          ((gui_find_bitmap(menu->name, full_pathname, "gif") == OK) ||
+!            (gui_find_bitmap(menu->name, full_pathname, "png") == OK)))
+!          icon = gui_ph_toolbar_load_icon(full_pathname);
+  
+!      if (icon != NULL)
+           return icon;
+      }
+  
+!     if (menu->iconidx >= 0 &&
+!          (menu->iconidx < ARRAY_LENGTH(gui_ph_toolbar_images)))
+      {
+       return gui_ph_toolbar_images[menu->iconidx];
+      }
+***************
+*** 2554,2567 ****
+  }
+  #endif
+  
+! #if defined( FEAT_MENU ) || defined( PROTO )
+      void
+  gui_mch_enable_menu(int flag)
+  {
+!     if( flag != 0 )
+!      PtRealizeWidget( gui.vimMenuBar );
+      else
+!      PtUnrealizeWidget( gui.vimMenuBar );
+  }
+  
+      void
+--- 2554,2567 ----
+  }
+  #endif
+  
+! #if defined(FEAT_MENU) || defined(PROTO)
+      void
+  gui_mch_enable_menu(int flag)
+  {
+!     if (flag != 0)
+!      PtRealizeWidget(gui.vimMenuBar);
+      else
+!      PtUnrealizeWidget(gui.vimMenuBar);
+  }
+  
+      void
+***************
+*** 2572,2601 ****
+  
+  /* Change the position of a menu button in the parent */
+      static void
+! gui_ph_position_menu( PtWidget_t *widget, int priority )
+  {
+      PtWidget_t       *traverse;
+      vimmenu_T        *menu;
+  
+!     traverse = PtWidgetChildBack( PtWidgetParent( widget ) );
+  
+      /* Iterate through the list of widgets in traverse, until
+       * we find the position we want to insert our widget into */
+      /* TODO: traverse from front to back, possible speedup? */
+!     while( traverse != NULL )
+      {
+!      PtGetResource( traverse, Pt_ARG_POINTER, &menu, 0 );
+  
+!      if( menu != NULL &&
+               priority < menu->priority &&
+!              widget != traverse )
+       {
+           /* Insert the widget before the current traverse widget */
+!          PtWidgetInsert( widget, traverse, 1 );
+           return;
+       }
+  
+!      traverse = PtWidgetBrotherInFront( traverse );
+      }
+  }
+  
+--- 2572,2601 ----
+  
+  /* Change the position of a menu button in the parent */
+      static void
+! gui_ph_position_menu(PtWidget_t *widget, int priority)
+  {
+      PtWidget_t       *traverse;
+      vimmenu_T        *menu;
+  
+!     traverse = PtWidgetChildBack(PtWidgetParent(widget));
+  
+      /* Iterate through the list of widgets in traverse, until
+       * we find the position we want to insert our widget into */
+      /* TODO: traverse from front to back, possible speedup? */
+!     while (traverse != NULL)
+      {
+!      PtGetResource(traverse, Pt_ARG_POINTER, &menu, 0);
+  
+!      if (menu != NULL &&
+               priority < menu->priority &&
+!              widget != traverse)
+       {
+           /* Insert the widget before the current traverse widget */
+!          PtWidgetInsert(widget, traverse, 1);
+           return;
+       }
+  
+!      traverse = PtWidgetBrotherInFront(traverse);
+      }
+  }
+  
+***************
+*** 2611,2621 ****
+  
+      menu->submenu_id = menu->id = NULL;
+  
+!     if( menu_is_menubar( menu->name ) )
+      {
+  
+!      accel_key = vim_strchr( menu->name, '&' );
+!      if( accel_key != NULL )
+       {
+           mnemonic_str[0] = accel_key[1];
+           mnemonic_str[1] = NUL;
+--- 2611,2621 ----
+  
+      menu->submenu_id = menu->id = NULL;
+  
+!     if (menu_is_menubar(menu->name))
+      {
+  
+!      accel_key = vim_strchr(menu->name, '&');
+!      if (accel_key != NULL)
+       {
+           mnemonic_str[0] = accel_key[1];
+           mnemonic_str[1] = NUL;
+***************
+*** 2623,2673 ****
+  
+       /* Create the menu button */
+       n = 0;
+!      PtSetArg( &args[ n++ ], Pt_ARG_TEXT_STRING, menu->dname, 0 );
+!      PtSetArg( &args[ n++ ], Pt_ARG_ACCEL_TEXT, menu->actext, 0 );
+!      if( accel_key != NULL )
+!          PtSetArg( &args[ n++ ], Pt_ARG_ACCEL_KEY, mnemonic_str, 0 );
+!      PtSetArg( &args[ n++ ], Pt_ARG_POINTER, menu, 0 );
+  
+!      if( parent != NULL )
+!          PtSetArg( &args[ n++ ], Pt_ARG_BUTTON_TYPE, Pt_MENU_RIGHT, 0 );
+  
+!      menu->id = PtCreateWidget( PtMenuButton,
+               (parent == NULL) ? gui.vimMenuBar : parent->submenu_id,
+!              n, args );
+  
+!      PtAddCallback( menu->id, Pt_CB_ARM, gui_ph_handle_pulldown_menu, menu );
+  
+       /* Create the actual menu */
+       n = 0;
+!      if( parent != NULL )
+!          PtSetArg( &args[ n++ ], Pt_ARG_MENU_FLAGS, Pt_TRUE, Pt_MENU_CHILD );
+  
+!      menu->submenu_id = PtCreateWidget( PtMenu, menu->id, n, args );
+  
+!      if( parent == NULL )
+       {
+!          PtAddCallback( menu->submenu_id, Pt_CB_UNREALIZED,
+!                  gui_ph_handle_menu_unrealized, menu );
+  
+!          if( menu->mnemonic != 0 )
+           {
+!              PtAddHotkeyHandler( gui.vimWindow, tolower( menu->mnemonic ),
+!                      Pk_KM_Alt, 0, menu, gui_ph_handle_pulldown_menu );
+           }
+       }
+  
+!      gui_ph_position_menu( menu->id, menu->priority );
+  
+       /* Redraw menubar here instead of gui_mch_draw_menubar */
+!      if( gui.menu_is_active )
+!          PtRealizeWidget( menu->id );
+      }
+!     else if( menu_is_popup( menu->name ) )
+      {
+!      menu->submenu_id = PtCreateWidget( PtMenu, gui.vimWindow, 0, NULL );
+!      PtAddCallback( menu->submenu_id, Pt_CB_UNREALIZED,
+!              gui_ph_handle_menu_unrealized, menu );
+      }
+  }
+  
+--- 2623,2673 ----
+  
+       /* Create the menu button */
+       n = 0;
+!      PtSetArg(&args[ n++ ], Pt_ARG_TEXT_STRING, menu->dname, 0);
+!      PtSetArg(&args[ n++ ], Pt_ARG_ACCEL_TEXT, menu->actext, 0);
+!      if (accel_key != NULL)
+!          PtSetArg(&args[ n++ ], Pt_ARG_ACCEL_KEY, mnemonic_str, 0);
+!      PtSetArg(&args[ n++ ], Pt_ARG_POINTER, menu, 0);
+  
+!      if (parent != NULL)
+!          PtSetArg(&args[ n++ ], Pt_ARG_BUTTON_TYPE, Pt_MENU_RIGHT, 0);
+  
+!      menu->id = PtCreateWidget(PtMenuButton,
+               (parent == NULL) ? gui.vimMenuBar : parent->submenu_id,
+!              n, args);
+  
+!      PtAddCallback(menu->id, Pt_CB_ARM, gui_ph_handle_pulldown_menu, menu);
+  
+       /* Create the actual menu */
+       n = 0;
+!      if (parent != NULL)
+!          PtSetArg(&args[ n++ ], Pt_ARG_MENU_FLAGS, Pt_TRUE, Pt_MENU_CHILD);
+  
+!      menu->submenu_id = PtCreateWidget(PtMenu, menu->id, n, args);
+  
+!      if (parent == NULL)
+       {
+!          PtAddCallback(menu->submenu_id, Pt_CB_UNREALIZED,
+!                  gui_ph_handle_menu_unrealized, menu);
+  
+!          if (menu->mnemonic != 0)
+           {
+!              PtAddHotkeyHandler(gui.vimWindow, tolower(menu->mnemonic),
+!                      Pk_KM_Alt, 0, menu, gui_ph_handle_pulldown_menu);
+           }
+       }
+  
+!      gui_ph_position_menu(menu->id, menu->priority);
+  
+       /* Redraw menubar here instead of gui_mch_draw_menubar */
+!      if (gui.menu_is_active)
+!          PtRealizeWidget(menu->id);
+      }
+!     else if (menu_is_popup(menu->name))
+      {
+!      menu->submenu_id = PtCreateWidget(PtMenu, gui.vimWindow, 0, NULL);
+!      PtAddCallback(menu->submenu_id, Pt_CB_UNREALIZED,
+!              gui_ph_handle_menu_unrealized, menu);
+      }
+  }
+  
+***************
+*** 2681,2784 ****
+      PtArg_t args[13];
+  
+      n = 0;
+!     PtSetArg( &args[ n++ ], Pt_ARG_POINTER, menu, 0 );
+  
+  #ifdef FEAT_TOOLBAR
+!     if( menu_is_toolbar( parent->name ) )
+      {
+!      if( menu_is_separator( menu->name ) )
+       {
+!          PtSetArg( &args[ n++ ], Pt_ARG_SEP_FLAGS,
+!                  Pt_SEP_VERTICAL, Pt_SEP_ORIENTATION );
+!          PtSetArg( &args[ n++ ], Pt_ARG_SEP_TYPE, Pt_ETCHED_IN, 0 );
+!          PtSetArg( &args[ n++ ], Pt_ARG_ANCHOR_FLAGS,
+!                  Pt_TRUE, Pt_ANCHOR_TOP_BOTTOM );
+!          PtSetArg( &args[ n++ ], Pt_ARG_WIDTH, 2, 0 );
+!          menu->id = PtCreateWidget( PtSeparator, gui.vimToolBar, n, args );
+       }
+       else
+       {
+!          if( strstr( (const char *) p_toolbar, "text" ) != NULL )
+           {
+!              PtSetArg( &args[ n++ ], Pt_ARG_BALLOON_POSITION,
+!                      Pt_BALLOON_BOTTOM, 0 );
+!              PtSetArg( &args[ n++ ], Pt_ARG_TEXT_STRING, menu->dname, 0 );
+!              PtSetArg( &args[ n++ ], Pt_ARG_TEXT_FONT, "TextFont08", 0 );
+           }
+!          if( ( strstr( (const char *) p_toolbar, "icons" ) != NULL ) &&
+!                  ( gui_ph_toolbar_images != NULL ) )
+           {
+!              PtSetArg( &args[ n++ ], Pt_ARG_LABEL_IMAGE,
+!                      gui_ph_toolbar_find_icon( menu ), 0 );
+!              PtSetArg( &args[ n++ ], Pt_ARG_LABEL_TYPE, Pt_TEXT_IMAGE, 0 );
+!              PtSetArg( &args[ n++ ], Pt_ARG_TEXT_IMAGE_SPACING, 0, 0 );
+           }
+!          if( strstr( (const char *) p_toolbar, "tooltips" ) != NULL )
+           {
+!              PtSetArg( &args[ n++ ], Pt_ARG_LABEL_BALLOON,
+!                      gui_ph_show_tooltip, 0 );
+!              PtSetArg( &args[ n++ ], Pt_ARG_LABEL_FLAGS,
+!                      Pt_TRUE, Pt_SHOW_BALLOON );
+           }
+!          PtSetArg( &args[ n++ ], Pt_ARG_MARGIN_HEIGHT, 1, 0 );
+!          PtSetArg( &args[ n++ ], Pt_ARG_MARGIN_WIDTH, 1, 0 );
+!          PtSetArg( &args[ n++ ], Pt_ARG_FLAGS, Pt_FALSE,
+!                  Pt_HIGHLIGHTED | Pt_GETS_FOCUS );
+!          PtSetArg( &args[ n++ ], Pt_ARG_FILL_COLOR, Pg_TRANSPARENT, 0 );
+!          menu->id = PtCreateWidget( PtButton, gui.vimToolBar, n, args );
+  
+!          PtAddCallback( menu->id, Pt_CB_ACTIVATE, gui_ph_handle_menu, menu );
+       }
+       /* Update toolbar if it's open */
+!      if( PtWidgetIsRealized( gui.vimToolBar ) )
+!          PtRealizeWidget( menu->id );
+      }
+      else
+  #endif
+!      if( menu_is_separator( menu->name ) )
+      {
+!      menu->id = PtCreateWidget( PtSeparator, parent->submenu_id, n, args );
+      }
+      else
+      {
+!      accel_key = vim_strchr( menu->name, '&' );
+!      if( accel_key != NULL )
+       {
+           mnemonic_str[0] = accel_key[1];
+           mnemonic_str[1] = NUL;
+       }
+  
+!      PtSetArg( &args[ n++ ], Pt_ARG_TEXT_STRING, menu->dname, 0 );
+!      if( accel_key != NULL )
+!          PtSetArg( &args[ n++ ], Pt_ARG_ACCEL_KEY, mnemonic_str,
+!                  0 );
+  
+!      PtSetArg( &args[ n++ ], Pt_ARG_ACCEL_TEXT, menu->actext, 0 );
+  
+!      menu->id = PtCreateWidget( PtMenuButton, parent->submenu_id, n, args );
+  
+!      PtAddCallback( menu->id, Pt_CB_ACTIVATE, gui_ph_handle_menu, menu );
+  
+  #ifdef USE_PANEL_GROUP
+!      if( gui_ph_is_buffer_item( menu, parent ) == TRUE )
+       {
+!          PtAddCallback( menu->id, Pt_CB_DESTROYED,
+!                  gui_ph_handle_buffer_remove, menu );
+!          gui_ph_pg_add_buffer( menu->dname );
+       }
+  #endif
+      }
+  
+!     gui_ph_position_menu( menu->id, menu->priority );
+  }
+  
+      void
+  gui_mch_destroy_menu(vimmenu_T *menu)
+  {
+!     if( menu->submenu_id != NULL )
+!      PtDestroyWidget( menu->submenu_id );
+!     if( menu->id != NULL )
+!      PtDestroyWidget( menu->id );
+  
+      menu->submenu_id = NULL;
+      menu->id = NULL;
+--- 2681,2784 ----
+      PtArg_t args[13];
+  
+      n = 0;
+!     PtSetArg(&args[ n++ ], Pt_ARG_POINTER, menu, 0);
+  
+  #ifdef FEAT_TOOLBAR
+!     if (menu_is_toolbar(parent->name))
+      {
+!      if (menu_is_separator(menu->name))
+       {
+!          PtSetArg(&args[ n++ ], Pt_ARG_SEP_FLAGS,
+!                  Pt_SEP_VERTICAL, Pt_SEP_ORIENTATION);
+!          PtSetArg(&args[ n++ ], Pt_ARG_SEP_TYPE, Pt_ETCHED_IN, 0);
+!          PtSetArg(&args[ n++ ], Pt_ARG_ANCHOR_FLAGS,
+!                  Pt_TRUE, Pt_ANCHOR_TOP_BOTTOM);
+!          PtSetArg(&args[ n++ ], Pt_ARG_WIDTH, 2, 0);
+!          menu->id = PtCreateWidget(PtSeparator, gui.vimToolBar, n, args);
+       }
+       else
+       {
+!          if (strstr((const char *) p_toolbar, "text") != NULL)
+           {
+!              PtSetArg(&args[ n++ ], Pt_ARG_BALLOON_POSITION,
+!                      Pt_BALLOON_BOTTOM, 0);
+!              PtSetArg(&args[ n++ ], Pt_ARG_TEXT_STRING, menu->dname, 0);
+!              PtSetArg(&args[ n++ ], Pt_ARG_TEXT_FONT, "TextFont08", 0);
+           }
+!          if ((strstr((const char *) p_toolbar, "icons") != NULL) &&
+!                  (gui_ph_toolbar_images != NULL))
+           {
+!              PtSetArg(&args[ n++ ], Pt_ARG_LABEL_IMAGE,
+!                      gui_ph_toolbar_find_icon(menu), 0);
+!              PtSetArg(&args[ n++ ], Pt_ARG_LABEL_TYPE, Pt_TEXT_IMAGE, 0);
+!              PtSetArg(&args[ n++ ], Pt_ARG_TEXT_IMAGE_SPACING, 0, 0);
+           }
+!          if (strstr((const char *) p_toolbar, "tooltips") != NULL)
+           {
+!              PtSetArg(&args[ n++ ], Pt_ARG_LABEL_BALLOON,
+!                      gui_ph_show_tooltip, 0);
+!              PtSetArg(&args[ n++ ], Pt_ARG_LABEL_FLAGS,
+!                      Pt_TRUE, Pt_SHOW_BALLOON);
+           }
+!          PtSetArg(&args[ n++ ], Pt_ARG_MARGIN_HEIGHT, 1, 0);
+!          PtSetArg(&args[ n++ ], Pt_ARG_MARGIN_WIDTH, 1, 0);
+!          PtSetArg(&args[ n++ ], Pt_ARG_FLAGS, Pt_FALSE,
+!                  Pt_HIGHLIGHTED | Pt_GETS_FOCUS);
+!          PtSetArg(&args[ n++ ], Pt_ARG_FILL_COLOR, Pg_TRANSPARENT, 0);
+!          menu->id = PtCreateWidget(PtButton, gui.vimToolBar, n, args);
+  
+!          PtAddCallback(menu->id, Pt_CB_ACTIVATE, gui_ph_handle_menu, menu);
+       }
+       /* Update toolbar if it's open */
+!      if (PtWidgetIsRealized(gui.vimToolBar))
+!          PtRealizeWidget(menu->id);
+      }
+      else
+  #endif
+!      if (menu_is_separator(menu->name))
+      {
+!      menu->id = PtCreateWidget(PtSeparator, parent->submenu_id, n, args);
+      }
+      else
+      {
+!      accel_key = vim_strchr(menu->name, '&');
+!      if (accel_key != NULL)
+       {
+           mnemonic_str[0] = accel_key[1];
+           mnemonic_str[1] = NUL;
+       }
+  
+!      PtSetArg(&args[ n++ ], Pt_ARG_TEXT_STRING, menu->dname, 0);
+!      if (accel_key != NULL)
+!          PtSetArg(&args[ n++ ], Pt_ARG_ACCEL_KEY, mnemonic_str,
+!                  0);
+  
+!      PtSetArg(&args[ n++ ], Pt_ARG_ACCEL_TEXT, menu->actext, 0);
+  
+!      menu->id = PtCreateWidget(PtMenuButton, parent->submenu_id, n, args);
+  
+!      PtAddCallback(menu->id, Pt_CB_ACTIVATE, gui_ph_handle_menu, menu);
+  
+  #ifdef USE_PANEL_GROUP
+!      if (gui_ph_is_buffer_item(menu, parent) == TRUE)
+       {
+!          PtAddCallback(menu->id, Pt_CB_DESTROYED,
+!                  gui_ph_handle_buffer_remove, menu);
+!          gui_ph_pg_add_buffer(menu->dname);
+       }
+  #endif
+      }
+  
+!     gui_ph_position_menu(menu->id, menu->priority);
+  }
+  
+      void
+  gui_mch_destroy_menu(vimmenu_T *menu)
+  {
+!     if (menu->submenu_id != NULL)
+!      PtDestroyWidget(menu->submenu_id);
+!     if (menu->id != NULL)
+!      PtDestroyWidget(menu->id);
+  
+      menu->submenu_id = NULL;
+      menu->id = NULL;
+***************
+*** 2789,2800 ****
+  {
+      long    flags, mask, fields;
+  
+!     if( menu->id == NULL )
+       return;
+  
+!     flags = PtWidgetFlags( menu->id );
+!     if( PtWidgetIsClass( menu->id, PtMenuButton ) &&
+!          PtWidgetIsClass( PtWidgetParent( menu->id ), PtMenu ) )
+      {
+       fields = Pt_FALSE;
+       mask = Pt_SELECTABLE | Pt_HIGHLIGHTED;
+--- 2789,2800 ----
+  {
+      long    flags, mask, fields;
+  
+!     if (menu->id == NULL)
+       return;
+  
+!     flags = PtWidgetFlags(menu->id);
+!     if (PtWidgetIsClass(menu->id, PtMenuButton) &&
+!          PtWidgetIsClass(PtWidgetParent(menu->id), PtMenu))
+      {
+       fields = Pt_FALSE;
+       mask = Pt_SELECTABLE | Pt_HIGHLIGHTED;
+***************
+*** 2805,2815 ****
+       mask = Pt_BLOCKED | Pt_GHOST;
+      }
+  
+!     if( ! grey )
+       fields = ~fields;
+  
+!     PtSetResource( menu->id, Pt_ARG_FLAGS, fields,
+!          mask );
+  }
+  
+      void
+--- 2805,2815 ----
+       mask = Pt_BLOCKED | Pt_GHOST;
+      }
+  
+!     if (! grey)
+       fields = ~fields;
+  
+!     PtSetResource(menu->id, Pt_ARG_FLAGS, fields,
+!          mask);
+  }
+  
+      void
+***************
+*** 2830,2837 ****
+      void
+  gui_mch_show_popupmenu(vimmenu_T *menu)
+  {
+!     PtSetResource( menu->submenu_id, Pt_ARG_POS, &abs_mouse, 0 );
+!     PtRealizeWidget( menu->submenu_id );
+  }
+  
+      void
+--- 2830,2837 ----
+      void
+  gui_mch_show_popupmenu(vimmenu_T *menu)
+  {
+!     PtSetResource(menu->submenu_id, Pt_ARG_POS, &abs_mouse, 0);
+!     PtRealizeWidget(menu->submenu_id);
+  }
+  
+      void
+***************
+*** 2842,2855 ****
+  
+  #endif
+  
+! #if defined( FEAT_TOOLBAR ) || defined( PROTO )
+      void
+  gui_mch_show_toolbar(int showit)
+  {
+!     if( showit )
+!      PtRealizeWidget( gui.vimToolBar );
+      else
+!      PtUnrealizeWidget( gui.vimToolBar );
+  }
+  #endif
+  
+--- 2842,2855 ----
+  
+  #endif
+  
+! #if defined(FEAT_TOOLBAR) || defined(PROTO)
+      void
+  gui_mch_show_toolbar(int showit)
+  {
+!     if (showit)
+!      PtRealizeWidget(gui.vimToolBar);
+      else
+!      PtUnrealizeWidget(gui.vimToolBar);
+  }
+  #endif
+  
+***************
+*** 2870,2903 ****
+      FontQueryInfo   info;
+      int_u        style;
+  
+!     font_tag = alloc( MAX_FONT_TAG );
+!     if( font_tag != NULL )
+      {
+!      if( PfGenerateFontName( font_name, font_flags, font_size,
+!                  font_tag ) != NULL )
+       {
+           /* Enforce some limits on the font used */
+           style = PHFONT_INFO_FIXED;
+  
+!          if( enforce & PF_STYLE_BOLD )
+               style |= PHFONT_INFO_BOLD;
+!          if( enforce & PF_STYLE_ANTIALIAS )
+               style |= PHFONT_INFO_ALIAS;
+!          if( enforce & PF_STYLE_ITALIC )
+               style |= PHFONT_INFO_ITALIC;
+  
+!          PfQueryFontInfo( font_tag, &info );
+  
+!          if( info.size == 0 )
+               font_size = 0;
+  
+           /* Make sure font size matches, and that the font style
+            * at least has the bits we're checking for */
+!          if( font_size == info.size &&
+!                  style == (info.style & style) )
+               return (GuiFont)font_tag;
+       }
+!      vim_free( font_tag );
+      }
+      return NULL;
+  }
+--- 2870,2903 ----
+      FontQueryInfo   info;
+      int_u        style;
+  
+!     font_tag = alloc(MAX_FONT_TAG);
+!     if (font_tag != NULL)
+      {
+!      if (PfGenerateFontName(font_name, font_flags, font_size,
+!                  font_tag) != NULL)
+       {
+           /* Enforce some limits on the font used */
+           style = PHFONT_INFO_FIXED;
+  
+!          if (enforce & PF_STYLE_BOLD)
+               style |= PHFONT_INFO_BOLD;
+!          if (enforce & PF_STYLE_ANTIALIAS)
+               style |= PHFONT_INFO_ALIAS;
+!          if (enforce & PF_STYLE_ITALIC)
+               style |= PHFONT_INFO_ITALIC;
+  
+!          PfQueryFontInfo(font_tag, &info);
+  
+!          if (info.size == 0)
+               font_size = 0;
+  
+           /* Make sure font size matches, and that the font style
+            * at least has the bits we're checking for */
+!          if (font_size == info.size &&
+!                  style == (info.style & style))
+               return (GuiFont)font_tag;
+       }
+!      vim_free(font_tag);
+      }
+      return NULL;
+  }
+***************
+*** 2919,2936 ****
+       char_u *vim_font,
+       char_u **font_name,
+       int_u *font_flags,
+!      int_u *font_size )
+  {
+      char_u  *mark;
+      int_u   name_len, size;
+  
+!     mark = vim_strchr( vim_font, ':' );
+!     if( mark == NULL )
+!      name_len = STRLEN( vim_font );
+      else
+!      name_len = (int_u) ( mark - vim_font );
+  
+!     *font_name = vim_strnsave( vim_font, name_len );
+      if (*font_name != NULL)
+      {
+       if (mark != NULL)
+--- 2919,2936 ----
+       char_u *vim_font,
+       char_u **font_name,
+       int_u *font_flags,
+!      int_u *font_size)
+  {
+      char_u  *mark;
+      int_u   name_len, size;
+  
+!     mark = vim_strchr(vim_font, ':');
+!     if (mark == NULL)
+!      name_len = STRLEN(vim_font);
+      else
+!      name_len = (int_u) (mark - vim_font);
+  
+!     *font_name = vim_strnsave(vim_font, name_len);
+      if (*font_name != NULL)
+      {
+       if (mark != NULL)
+***************
+*** 2944,2950 ****
+                   case 'i': *font_flags |= PF_STYLE_ITALIC; break;
+  
+                   case 's':
+!                      size = getdigits( &mark );
+                       /* Restrict the size to some vague limits */
+                       if (size < 1 || size > 100)
+                           size = 8;
+--- 2944,2950 ----
+                   case 'i': *font_flags |= PF_STYLE_ITALIC; break;
+  
+                   case 's':
+!                      size = getdigits(&mark);
+                       /* Restrict the size to some vague limits */
+                       if (size < 1 || size > 100)
+                           size = 8;
+***************
+*** 2979,3031 ****
+       vim_font_name = "PC Terminal";
+      }
+  
+!     if (STRCMP( vim_font_name, "*" ) == 0)
+      {
+!      font_tag = PtFontSelection( gui.vimWindow, NULL, NULL,
+!              "pcterm12", -1, PHFONT_FIXED, NULL );
+  
+       if (font_tag == NULL)
+           return FAIL;
+  
+!      gui_mch_free_font( gui.norm_font );
+       gui.norm_font = font_tag;
+  
+!      PfQueryFontInfo( font_tag, &info );
+!      font_name = vim_strsave( info.font );
+      }
+      else
+      {
+!      if (gui_ph_parse_font_name( vim_font_name, &font_name, &font_flags,
+!                  &font_size ) == FALSE)
+           return FAIL;
+  
+!      font_tag = gui_ph_get_font( font_name, font_flags, font_size, 0 );
+       if (font_tag == NULL)
+       {
+!          vim_free( font_name );
+           return FAIL;
+       }
+  
+!      gui_mch_free_font( gui.norm_font );
+       gui.norm_font = font_tag;
+      }
+  
+!     gui_mch_free_font( gui.bold_font );
+!     gui.bold_font = gui_ph_get_font( font_name, font_flags | PF_STYLE_BOLD,
+!          font_size, PF_STYLE_BOLD );
+! 
+!     gui_mch_free_font( gui.ital_font );
+!     gui.ital_font = gui_ph_get_font( font_name, font_flags | PF_STYLE_ITALIC,
+!          font_size, PF_STYLE_ITALIC );
+  
+      /* This extent was brought to you by the letter 'g' */
+!     PfExtentText( &extent, NULL, font_tag, "g", 1 );
+  
+      gui.char_width = extent.lr.x - extent.ul.x + 1;
+      gui.char_height = (- extent.ul.y) + extent.lr.y + 1;
+      gui.char_ascent = - extent.ul.y;
+  
+!     vim_free( font_name );
+      return OK;
+  }
+  
+--- 2979,3031 ----
+       vim_font_name = "PC Terminal";
+      }
+  
+!     if (STRCMP(vim_font_name, "*") == 0)
+      {
+!      font_tag = PtFontSelection(gui.vimWindow, NULL, NULL,
+!              "pcterm12", -1, PHFONT_FIXED, NULL);
+  
+       if (font_tag == NULL)
+           return FAIL;
+  
+!      gui_mch_free_font(gui.norm_font);
+       gui.norm_font = font_tag;
+  
+!      PfQueryFontInfo(font_tag, &info);
+!      font_name = vim_strsave(info.font);
+      }
+      else
+      {
+!      if (gui_ph_parse_font_name(vim_font_name, &font_name, &font_flags,
+!                  &font_size) == FALSE)
+           return FAIL;
+  
+!      font_tag = gui_ph_get_font(font_name, font_flags, font_size, 0);
+       if (font_tag == NULL)
+       {
+!          vim_free(font_name);
+           return FAIL;
+       }
+  
+!      gui_mch_free_font(gui.norm_font);
+       gui.norm_font = font_tag;
+      }
+  
+!     gui_mch_free_font(gui.bold_font);
+!     gui.bold_font = gui_ph_get_font(font_name, font_flags | PF_STYLE_BOLD,
+!          font_size, PF_STYLE_BOLD);
+! 
+!     gui_mch_free_font(gui.ital_font);
+!     gui.ital_font = gui_ph_get_font(font_name, font_flags | PF_STYLE_ITALIC,
+!          font_size, PF_STYLE_ITALIC);
+  
+      /* This extent was brought to you by the letter 'g' */
+!     PfExtentText(&extent, NULL, font_tag, "g", 1);
+  
+      gui.char_width = extent.lr.x - extent.ul.x + 1;
+      gui.char_height = (- extent.ul.y) + extent.lr.y + 1;
+      gui.char_ascent = - extent.ul.y;
+  
+!     vim_free(font_name);
+      return OK;
+  }
+  
+***************
+*** 3037,3043 ****
+  {
+      FontQueryInfo info;
+  
+!     PfQueryFontInfo( gui.norm_font, &info );
+  
+      gui.char_height = - info.ascender + info.descender + p_linespace;
+      gui.char_ascent = - info.ascender + p_linespace / 2;
+--- 3037,3043 ----
+  {
+      FontQueryInfo info;
+  
+!     PfQueryFontInfo(gui.norm_font, &info);
+  
+      gui.char_height = - info.ascender + info.descender + p_linespace;
+      gui.char_ascent = - info.ascender + p_linespace / 2;
+***************
+*** 3053,3070 ****
+      int_u   font_size = 12;
+      int_u   font_flags = 0;
+  
+!     if (gui_ph_parse_font_name( vim_font_name, &font_name, &font_flags,
+!              &font_size ) != FALSE)
+      {
+!      font_tag = gui_ph_get_font( font_name, font_flags, font_size, -1 );
+!      vim_free( font_name );
+  
+       if (font_tag != NULL)
+           return (GuiFont)font_tag;
+      }
+  
+      if (report_error)
+!      EMSG2(e_font, vim_font_name );
+  
+      return FAIL;
+  }
+--- 3053,3070 ----
+      int_u   font_size = 12;
+      int_u   font_flags = 0;
+  
+!     if (gui_ph_parse_font_name(vim_font_name, &font_name, &font_flags,
+!              &font_size) != FALSE)
+      {
+!      font_tag = gui_ph_get_font(font_name, font_flags, font_size, -1);
+!      vim_free(font_name);
+  
+       if (font_tag != NULL)
+           return (GuiFont)font_tag;
+      }
+  
+      if (report_error)
+!      EMSG2(e_font, vim_font_name);
+  
+      return FAIL;
+  }
+***************
+*** 3088,3099 ****
+      void
+  gui_mch_set_font(GuiFont font)
+  {
+!     PgSetFont( font );
+  }
+  
+      void
+  gui_mch_free_font(GuiFont font)
+  {
+!     vim_free( font );
+  }
+  
+--- 3088,3099 ----
+      void
+  gui_mch_set_font(GuiFont font)
+  {
+!     PgSetFont(font);
+  }
+  
+      void
+  gui_mch_free_font(GuiFont font)
+  {
+!     vim_free(font);
+  }
+  
+*** ../vim-7.3.309/src/version.c       2011-09-14 15:41:54.000000000 +0200
+--- src/version.c      2011-09-14 16:01:50.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     310,
+  /**/
+
+-- 
+An operatingsystem is just a name you give to the rest of bloating
+idiosyncratic machine-based-features you left out of your editor.
+                       (author unknown)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.311.patch0 b/vim/patches/vim-7.3.311.patch0
new file mode 100644 (file)
index 0000000..13aec74
--- /dev/null
@@ -0,0 +1,351 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.311
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.311 (replaces 7.3.289)
+Problem:    Complete function isn't called when the leader changed.
+Solution:   Allow the complete function to return a dictionary with a flag
+           that indicates ins_compl_restart() is to be called when the leader
+           changes. (Taro Muraoka)
+Files:     runtime/insert.txt, src/edit.c, src/eval.c, src/proto/eval.pro
+
+
+*** ../vim-7.3.310/src/edit.c  2011-09-05 20:13:37.000000000 +0200
+--- src/edit.c 2011-09-14 16:43:14.000000000 +0200
+***************
+*** 135,140 ****
+--- 135,142 ----
+  static int     compl_cont_mode = 0;
+  static expand_T        compl_xp;
+  
++ static int     compl_opt_refresh_always = FALSE;
++ 
+  static void ins_ctrl_x __ARGS((void));
+  static int  has_compl_option __ARGS((int dict_opt));
+  static int  ins_compl_accept_char __ARGS((int c));
+***************
+*** 153,161 ****
+  static void ins_compl_free __ARGS((void));
+  static void ins_compl_clear __ARGS((void));
+  static int  ins_compl_bs __ARGS((void));
+  static void ins_compl_new_leader __ARGS((void));
+  static void ins_compl_addleader __ARGS((int c));
+! static int ins_compl_len __ARGS((void));
+  static void ins_compl_restart __ARGS((void));
+  static void ins_compl_set_original_text __ARGS((char_u *str));
+  static void ins_compl_addfrommatch __ARGS((void));
+--- 155,164 ----
+  static void ins_compl_free __ARGS((void));
+  static void ins_compl_clear __ARGS((void));
+  static int  ins_compl_bs __ARGS((void));
++ static int  ins_compl_need_restart __ARGS((void));
+  static void ins_compl_new_leader __ARGS((void));
+  static void ins_compl_addleader __ARGS((int c));
+! static int  ins_compl_len __ARGS((void));
+  static void ins_compl_restart __ARGS((void));
+  static void ins_compl_set_original_text __ARGS((char_u *str));
+  static void ins_compl_addfrommatch __ARGS((void));
+***************
+*** 163,168 ****
+--- 166,172 ----
+  static buf_T *ins_compl_next_buf __ARGS((buf_T *buf, int flag));
+  #if defined(FEAT_COMPL_FUNC) || defined(FEAT_EVAL)
+  static void ins_compl_add_list __ARGS((list_T *list));
++ static void ins_compl_add_dict __ARGS((dict_T *dict));
+  #endif
+  static int  ins_compl_get_exp __ARGS((pos_T *ini));
+  static void ins_compl_delete __ARGS((void));
+***************
+*** 3341,3347 ****
+      /* Deleted more than what was used to find matches or didn't finish
+       * finding all matches: need to look for matches all over again. */
+      if (curwin->w_cursor.col <= compl_col + compl_length
+!                                                   || compl_was_interrupted)
+       ins_compl_restart();
+  
+      vim_free(compl_leader);
+--- 3345,3351 ----
+      /* Deleted more than what was used to find matches or didn't finish
+       * finding all matches: need to look for matches all over again. */
+      if (curwin->w_cursor.col <= compl_col + compl_length
+!                                                || ins_compl_need_restart())
+       ins_compl_restart();
+  
+      vim_free(compl_leader);
+***************
+*** 3355,3360 ****
+--- 3359,3378 ----
+  }
+  
+  /*
++  * Return TRUE when we need to find matches again, ins_compl_restart() is to
++  * be called.
++  */
++     static int
++ ins_compl_need_restart()
++ {
++     /* Return TRUE if we didn't complete finding matches or when the
++      * 'completefunc' returned "always" in the "refresh" dictionary item. */
++     return compl_was_interrupted
++      || ((ctrl_x_mode == CTRL_X_FUNCTION || ctrl_x_mode == CTRL_X_OMNI)
++                                                && compl_opt_refresh_always);
++ }
++ 
++ /*
+   * Called after changing "compl_leader".
+   * Show the popup menu with a different set of matches.
+   * May also search for matches again if the previous search was interrupted.
+***************
+*** 3443,3449 ****
+       ins_char(c);
+  
+      /* If we didn't complete finding matches we must search again. */
+!     if (compl_was_interrupted)
+       ins_compl_restart();
+  
+      vim_free(compl_leader);
+--- 3461,3467 ----
+       ins_char(c);
+  
+      /* If we didn't complete finding matches we must search again. */
+!     if (ins_compl_need_restart())
+       ins_compl_restart();
+  
+      vim_free(compl_leader);
+***************
+*** 3871,3882 ****
+      int              type;       /* CTRL_X_OMNI or CTRL_X_FUNCTION */
+      char_u   *base;
+  {
+!     list_T      *matchlist;
+      char_u   *args[2];
+      char_u   *funcname;
+      pos_T    pos;
+      win_T    *curwin_save;
+      buf_T    *curbuf_save;
+  
+      funcname = (type == CTRL_X_FUNCTION) ? curbuf->b_p_cfu : curbuf->b_p_ofu;
+      if (*funcname == NUL)
+--- 3889,3902 ----
+      int              type;       /* CTRL_X_OMNI or CTRL_X_FUNCTION */
+      char_u   *base;
+  {
+!     list_T      *matchlist = NULL;
+!     dict_T   *matchdict = NULL;
+      char_u   *args[2];
+      char_u   *funcname;
+      pos_T    pos;
+      win_T    *curwin_save;
+      buf_T    *curbuf_save;
++     typval_T rettv;
+  
+      funcname = (type == CTRL_X_FUNCTION) ? curbuf->b_p_cfu : curbuf->b_p_ofu;
+      if (*funcname == NUL)
+***************
+*** 3889,3895 ****
+      pos = curwin->w_cursor;
+      curwin_save = curwin;
+      curbuf_save = curbuf;
+!     matchlist = call_func_retlist(funcname, 2, args, FALSE);
+      if (curwin_save != curwin || curbuf_save != curbuf)
+      {
+       EMSG(_(e_complwin));
+--- 3909,3933 ----
+      pos = curwin->w_cursor;
+      curwin_save = curwin;
+      curbuf_save = curbuf;
+! 
+!     /* Call a function, which returns a list or dict. */
+!     if (call_vim_function(funcname, 2, args, FALSE, &rettv) == OK)
+!     {
+!      switch (rettv.v_type)
+!      {
+!          case VAR_LIST:
+!              matchlist = rettv.vval.v_list;
+!              break;
+!          case VAR_DICT:
+!              matchdict = rettv.vval.v_dict;
+!              break;
+!          default:
+!              /* TODO: Give error message? */
+!              clear_tv(&rettv);
+!              break;
+!      }
+!     }
+! 
+      if (curwin_save != curwin || curbuf_save != curbuf)
+      {
+       EMSG(_(e_complwin));
+***************
+*** 3902,3911 ****
+--- 3940,3954 ----
+       EMSG(_(e_compldel));
+       goto theend;
+      }
++ 
+      if (matchlist != NULL)
+       ins_compl_add_list(matchlist);
++     else if (matchdict != NULL)
++      ins_compl_add_dict(matchdict);
+  
+  theend:
++     if (matchdict != NULL)
++      dict_unref(matchdict);
+      if (matchlist != NULL)
+       list_unref(matchlist);
+  }
+***************
+*** 3934,3939 ****
+--- 3977,4009 ----
+  }
+  
+  /*
++  * Add completions from a dict.
++  */
++     static void
++ ins_compl_add_dict(dict)
++     dict_T   *dict;
++ {
++     dictitem_T       *refresh;
++     dictitem_T       *words;
++ 
++     /* Check for optional "refresh" item. */
++     compl_opt_refresh_always = FALSE;
++     refresh = dict_find(dict, (char_u *)"refresh", 7);
++     if (refresh != NULL && refresh->di_tv.v_type == VAR_STRING)
++     {
++      char_u  *v = refresh->di_tv.vval.v_string;
++ 
++      if (v != NULL && STRCMP(v, (char_u *)"always") == 0)
++          compl_opt_refresh_always = TRUE;
++     }
++ 
++     /* Add completions from a "words" list. */
++     words = dict_find(dict, (char_u *)"words", 5);
++     if (words != NULL && words->di_tv.v_type == VAR_LIST)
++      ins_compl_add_list(words->di_tv.vval.v_list);
++ }
++ 
++ /*
+   * Add a match to the list of matches from a typeval_T.
+   * If the given string is already in the list of completions, then return
+   * NOTDONE, otherwise add it to the list and return OK.  If there is an error,
+***************
+*** 5088,5093 ****
+--- 5158,5169 ----
+               return FAIL;
+           }
+  
++          /*
++           * Reset extended parameters of completion, when start new
++           * completion.
++           */
++          compl_opt_refresh_always = FALSE;
++ 
+           if (col < 0)
+               col = curs_col;
+           compl_col = col;
+*** ../vim-7.3.310/src/eval.c  2011-09-14 14:33:47.000000000 +0200
+--- src/eval.c 2011-09-14 16:16:47.000000000 +0200
+***************
+*** 380,388 ****
+  
+  static void prepare_vimvar __ARGS((int idx, typval_T *save_tv));
+  static void restore_vimvar __ARGS((int idx, typval_T *save_tv));
+- #if defined(FEAT_USR_CMDS) && defined(FEAT_CMDL_COMPL)
+- static int call_vim_function __ARGS((char_u *func, int argc, char_u **argv, int safe, typval_T *rettv));
+- #endif
+  static int ex_let_vars __ARGS((char_u *arg, typval_T *tv, int copy, int semicolon, int var_count, char_u *nextchars));
+  static char_u *skip_var_list __ARGS((char_u *arg, int *var_count, int *semicolon));
+  static char_u *skip_var_one __ARGS((char_u *arg));
+--- 380,385 ----
+***************
+*** 451,457 ****
+  static void set_ref_in_list __ARGS((list_T *l, int copyID));
+  static void set_ref_in_item __ARGS((typval_T *tv, int copyID));
+  static int rettv_dict_alloc __ARGS((typval_T *rettv));
+- static void dict_unref __ARGS((dict_T *d));
+  static void dict_free __ARGS((dict_T *d, int recurse));
+  static dictitem_T *dictitem_copy __ARGS((dictitem_T *org));
+  static void dictitem_remove __ARGS((dict_T *dict, dictitem_T *item));
+--- 448,453 ----
+***************
+*** 1563,1569 ****
+   * arguments are currently supported.
+   * Returns OK or FAIL.
+   */
+!     static int
+  call_vim_function(func, argc, argv, safe, rettv)
+      char_u      *func;
+      int              argc;
+--- 1559,1565 ----
+   * arguments are currently supported.
+   * Returns OK or FAIL.
+   */
+!     int
+  call_vim_function(func, argc, argv, safe, rettv)
+      char_u      *func;
+      int              argc;
+***************
+*** 6903,6909 ****
+   * Unreference a Dictionary: decrement the reference count and free it when it
+   * becomes zero.
+   */
+!     static void
+  dict_unref(d)
+      dict_T *d;
+  {
+--- 6899,6905 ----
+   * Unreference a Dictionary: decrement the reference count and free it when it
+   * becomes zero.
+   */
+!     void
+  dict_unref(d)
+      dict_T *d;
+  {
+*** ../vim-7.3.310/src/proto/eval.pro  2010-08-15 21:57:28.000000000 +0200
+--- src/proto/eval.pro 2011-09-14 16:16:47.000000000 +0200
+***************
+*** 23,28 ****
+--- 23,29 ----
+  list_T *eval_spell_expr __ARGS((char_u *badword, char_u *expr));
+  int get_spellword __ARGS((list_T *list, char_u **pp));
+  typval_T *eval_expr __ARGS((char_u *arg, char_u **nextcmd));
++ int call_vim_function __ARGS((char_u *func, int argc, char_u **argv, int safe, typval_T *rettv));
+  void *call_func_retstr __ARGS((char_u *func, int argc, char_u **argv, int safe));
+  long call_func_retnr __ARGS((char_u *func, int argc, char_u **argv, int safe));
+  void *call_func_retlist __ARGS((char_u *func, int argc, char_u **argv, int safe));
+***************
+*** 52,57 ****
+--- 53,59 ----
+  int list_append_string __ARGS((list_T *l, char_u *str, int len));
+  int garbage_collect __ARGS((void));
+  dict_T *dict_alloc __ARGS((void));
++ void dict_unref __ARGS((dict_T *d));
+  dictitem_T *dictitem_alloc __ARGS((char_u *key));
+  void dictitem_free __ARGS((dictitem_T *item));
+  int dict_add __ARGS((dict_T *d, dictitem_T *item));
+*** ../vim-7.3.310/src/version.c       2011-09-14 16:04:52.000000000 +0200
+--- src/version.c      2011-09-14 16:25:08.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     311,
+  /**/
+
+-- 
+Contrary to popular belief, it's often your clothing that gets promoted, not
+you.
+                               (Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.312.patch0 b/vim/patches/vim-7.3.312.patch0
new file mode 100644 (file)
index 0000000..d2480e0
--- /dev/null
@@ -0,0 +1,58 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.312
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.312 (after 7.3.306)
+Problem:    Can't compile with tiny features.
+Solution:   Add #ifdef around win_valid().
+Files:     src/buffer.c
+
+
+*** ../vim-7.3.311/src/buffer.c        2011-09-14 14:43:21.000000000 +0200
+--- src/buffer.c       2011-09-14 17:46:24.000000000 +0200
+***************
+*** 416,422 ****
+  #endif
+  
+      buf_freeall(buf, (del_buf ? BFA_DEL : 0) + (wipe_buf ? BFA_WIPE : 0));
+!     if (win_valid(win) && win->w_buffer == buf)
+       win->w_buffer = NULL;  /* make sure we don't use the buffer now */
+  
+  #ifdef FEAT_AUTOCMD
+--- 416,426 ----
+  #endif
+  
+      buf_freeall(buf, (del_buf ? BFA_DEL : 0) + (wipe_buf ? BFA_WIPE : 0));
+!     if (
+! #ifdef FEAT_WINDOWS
+!      win_valid(win) &&
+! #endif
+!                        win->w_buffer == buf)
+       win->w_buffer = NULL;  /* make sure we don't use the buffer now */
+  
+  #ifdef FEAT_AUTOCMD
+*** ../vim-7.3.311/src/version.c       2011-09-14 16:52:02.000000000 +0200
+--- src/version.c      2011-09-14 17:27:24.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     312,
+  /**/
+
+-- 
+You have heard the saying that if you put a thousand monkeys in a room with a
+thousand typewriters and waited long enough, eventually you would have a room
+full of dead monkeys.
+                               (Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.313.patch0 b/vim/patches/vim-7.3.313.patch0
new file mode 100644 (file)
index 0000000..ca818b8
--- /dev/null
@@ -0,0 +1,53 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.313
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.313 (after 7.3.307)
+Problem:    One more warning when compiling with dynamic Python 3.
+Solution:   Change PySliceObject to PyObject.
+Files:      src/if_python3.c
+
+
+*** ../vim-7.3.312/src/if_python3.c    2011-09-14 15:41:54.000000000 +0200
+--- src/if_python3.c   2011-09-14 18:54:49.000000000 +0200
+***************
+*** 194,200 ****
+  static int (*py3_PySys_SetObject)(char *, PyObject *);
+  static PyObject* (*py3_PyList_Append)(PyObject *, PyObject *);
+  static Py_ssize_t (*py3_PyList_Size)(PyObject *);
+! static int (*py3_PySlice_GetIndicesEx)(PySliceObject *r, Py_ssize_t length,
+                    Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step, Py_ssize_t *slicelength);
+  static PyObject* (*py3_PyErr_NoMemory)(void);
+  static void (*py3_Py_Finalize)(void);
+--- 194,200 ----
+  static int (*py3_PySys_SetObject)(char *, PyObject *);
+  static PyObject* (*py3_PyList_Append)(PyObject *, PyObject *);
+  static Py_ssize_t (*py3_PyList_Size)(PyObject *);
+! static int (*py3_PySlice_GetIndicesEx)(PyObject *r, Py_ssize_t length,
+                    Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step, Py_ssize_t *slicelength);
+  static PyObject* (*py3_PyErr_NoMemory)(void);
+  static void (*py3_Py_Finalize)(void);
+*** ../vim-7.3.312/src/version.c       2011-09-14 17:50:05.000000000 +0200
+--- src/version.c      2011-09-14 18:56:03.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     313,
+  /**/
+
+-- 
+All good vision statements are created by groups of people with bloated
+bladders who would rather be doing anything else.
+                               (Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.314.patch0 b/vim/patches/vim-7.3.314.patch0
new file mode 100644 (file)
index 0000000..76415d6
--- /dev/null
@@ -0,0 +1,54 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.314
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.314 (after 7.3.304)
+Problem:    Missing parenthesis.
+Solution:   Add it. (Benjamin R. Haskell)
+Files:     src/Make_mvc.mak
+
+
+*** ../vim-7.3.313/src/Make_mvc.mak    2011-09-14 10:49:44.000000000 +0200
+--- src/Make_mvc.mak   2011-09-14 18:56:24.000000000 +0200
+***************
+*** 785,791 ****
+  PERL_INC = /I $(PERL_INCDIR)
+  PERL_OBJ = $(OUTDIR)\if_perl.obj $(OUTDIR)\if_perlsfio.obj
+  XSUBPP = $(PERL)\lib\ExtUtils\xsubpp
+! !if exist($(XSUBPP)
+  XSUBPP = $(PERL_EXE) $(XSUBPP)
+  !else
+  XSUBPP = xsubpp
+--- 785,791 ----
+  PERL_INC = /I $(PERL_INCDIR)
+  PERL_OBJ = $(OUTDIR)\if_perl.obj $(OUTDIR)\if_perlsfio.obj
+  XSUBPP = $(PERL)\lib\ExtUtils\xsubpp
+! !if exist($(XSUBPP))
+  XSUBPP = $(PERL_EXE) $(XSUBPP)
+  !else
+  XSUBPP = xsubpp
+*** ../vim-7.3.313/src/version.c       2011-09-14 18:59:35.000000000 +0200
+--- src/version.c      2011-09-14 19:01:12.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     314,
+  /**/
+
+-- 
+Often you're less important than your furniture.  If you think about it, you
+can get fired but your furniture stays behind, gainfully employed at the
+company that didn't need _you_ anymore.
+                               (Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.315.patch0 b/vim/patches/vim-7.3.315.patch0
new file mode 100644 (file)
index 0000000..2240f7b
--- /dev/null
@@ -0,0 +1,475 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.315
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.315
+Problem:    Opening a window before forking causes problems for GTK.
+Solution:   Fork first, create the window in the child and report back to the
+           parent process whether it worked.  If successful the parent exits,
+           if unsuccessful the child exits and the parent continues in the
+           terminal. (Tim Starling)
+Files:     src/gui.c
+
+
+*** ../vim-7.3.314/src/gui.c   2011-08-10 17:44:41.000000000 +0200
+--- src/gui.c  2011-09-14 17:34:30.000000000 +0200
+***************
+*** 37,42 ****
+--- 37,60 ----
+  static void gui_set_bg_color __ARGS((char_u *name));
+  static win_T *xy2win __ARGS((int x, int y));
+  
++ #if defined(UNIX) && !defined(__BEOS__) && !defined(MACOS_X) \
++      && !defined(__APPLE__)
++ # define MAY_FORK
++ static void gui_do_fork __ARGS((void));
++ 
++ static int gui_read_child_pipe __ARGS((int fd));
++ 
++ /* Return values for gui_read_child_pipe */
++ enum {
++     GUI_CHILD_IO_ERROR,
++     GUI_CHILD_OK,
++     GUI_CHILD_FAILED
++ };
++ 
++ #endif /* MAY_FORK */
++ 
++ static void gui_attempt_start __ARGS((void));
++ 
+  static int can_update_cursor = TRUE; /* can display the cursor */
+  
+  /*
+***************
+*** 59,105 ****
+  gui_start()
+  {
+      char_u   *old_term;
+- #if defined(UNIX) && !defined(__BEOS__) && !defined(MACOS_X) \
+-      && !defined(__APPLE__)
+- # define MAY_FORK
+-     int              dofork = TRUE;
+- #endif
+      static int       recursive = 0;
+  
+      old_term = vim_strsave(T_NAME);
+  
+-     /*
+-      * Set_termname() will call gui_init() to start the GUI.
+-      * Set the "starting" flag, to indicate that the GUI will start.
+-      *
+-      * We don't want to open the GUI shell until after we've read .gvimrc,
+-      * otherwise we don't know what font we will use, and hence we don't know
+-      * what size the shell should be.  So if there are errors in the .gvimrc
+-      * file, they will have to go to the terminal: Set full_screen to FALSE.
+-      * full_screen will be set to TRUE again by a successful termcapinit().
+-      */
+      settmode(TMODE_COOK);            /* stop RAW mode */
+      if (full_screen)
+       cursor_on();                    /* needed for ":gui" in .vimrc */
+-     gui.starting = TRUE;
+      full_screen = FALSE;
+  
+! #ifdef FEAT_GUI_GTK
+!     gui.event_time = GDK_CURRENT_TIME;
+! #endif
+  
+  #ifdef MAY_FORK
+!     if (!gui.dofork || vim_strchr(p_go, GO_FORG) || recursive)
+!      dofork = FALSE;
+  #endif
+!     ++recursive;
+! 
+!     termcapinit((char_u *)"builtin_gui");
+!     gui.starting = recursive - 1;
+  
+      if (!gui.in_use)                 /* failed to start GUI */
+      {
+!      termcapinit(old_term);          /* back to old term settings */
+       settmode(TMODE_RAW);            /* restart RAW mode */
+  #ifdef FEAT_TITLE
+       set_title_defaults();           /* set 'title' and 'icon' again */
+--- 77,123 ----
+  gui_start()
+  {
+      char_u   *old_term;
+      static int       recursive = 0;
+  
+      old_term = vim_strsave(T_NAME);
+  
+      settmode(TMODE_COOK);            /* stop RAW mode */
+      if (full_screen)
+       cursor_on();                    /* needed for ":gui" in .vimrc */
+      full_screen = FALSE;
+  
+!     ++recursive;
+  
+  #ifdef MAY_FORK
+!     /*
+!      * Quit the current process and continue in the child.
+!      * Makes "gvim file" disconnect from the shell it was started in.
+!      * Don't do this when Vim was started with "-f" or the 'f' flag is present
+!      * in 'guioptions'.
+!      */
+!     if (gui.dofork && !vim_strchr(p_go, GO_FORG) && recursive <= 1)
+!     {
+!      gui_do_fork();
+!     }
+!     else
+  #endif
+!     {
+!      gui_attempt_start();
+!     }
+  
+      if (!gui.in_use)                 /* failed to start GUI */
+      {
+!      /* Back to old term settings
+!       *
+!       * FIXME: If we got here because a child process failed and flagged to
+!       * the parent to resume, and X11 is enabled with FEAT_TITLE, this will
+!       * hit an X11 I/O error and do a longjmp(), leaving recursive
+!       * permanently set to 1. This is probably not as big a problem as it
+!       * sounds, because gui_mch_init() in both gui_x11.c and gui_gtk_x11.c
+!       * return "OK" unconditionally, so it would be very difficult to
+!       * actually hit this case.
+!       */
+!      termcapinit(old_term);
+       settmode(TMODE_RAW);            /* restart RAW mode */
+  #ifdef FEAT_TITLE
+       set_title_defaults();           /* set 'title' and 'icon' again */
+***************
+*** 108,113 ****
+--- 126,166 ----
+  
+      vim_free(old_term);
+  
++ #ifdef FEAT_AUTOCMD
++     /* If the GUI started successfully, trigger the GUIEnter event, otherwise
++      * the GUIFailed event. */
++     gui_mch_update();
++     apply_autocmds(gui.in_use ? EVENT_GUIENTER : EVENT_GUIFAILED,
++                                                 NULL, NULL, FALSE, curbuf);
++ #endif
++     --recursive;
++ }
++ 
++ /*
++  * Set_termname() will call gui_init() to start the GUI.
++  * Set the "starting" flag, to indicate that the GUI will start.
++  *
++  * We don't want to open the GUI shell until after we've read .gvimrc,
++  * otherwise we don't know what font we will use, and hence we don't know
++  * what size the shell should be.  So if there are errors in the .gvimrc
++  * file, they will have to go to the terminal: Set full_screen to FALSE.
++  * full_screen will be set to TRUE again by a successful termcapinit().
++  */
++     static void
++ gui_attempt_start()
++ {
++     static int recursive = 0;
++ 
++     ++recursive;
++     gui.starting = TRUE;
++ 
++ #ifdef FEAT_GUI_GTK
++     gui.event_time = GDK_CURRENT_TIME;
++ #endif
++ 
++     termcapinit((char_u *)"builtin_gui");
++     gui.starting = recursive - 1;
++ 
+  #if defined(FEAT_GUI_GTK) || defined(FEAT_GUI_X11)
+      if (gui.in_use)
+      {
+***************
+*** 123,218 ****
+       display_errors();
+      }
+  #endif
+  
+! #if defined(MAY_FORK) && !defined(__QNXNTO__)
+!     /*
+!      * Quit the current process and continue in the child.
+!      * Makes "gvim file" disconnect from the shell it was started in.
+!      * Don't do this when Vim was started with "-f" or the 'f' flag is present
+!      * in 'guioptions'.
+!      */
+!     if (gui.in_use && dofork)
+      {
+!      int     pipefd[2];      /* pipe between parent and child */
+!      int     pipe_error;
+!      char    dummy;
+!      pid_t   pid = -1;
+! 
+!      /* Setup a pipe between the child and the parent, so that the parent
+!       * knows when the child has done the setsid() call and is allowed to
+!       * exit. */
+!      pipe_error = (pipe(pipefd) < 0);
+!      pid = fork();
+!      if (pid > 0)        /* Parent */
+       {
+!          /* Give the child some time to do the setsid(), otherwise the
+!           * exit() may kill the child too (when starting gvim from inside a
+!           * gvim). */
+!          if (pipe_error)
+!              ui_delay(300L, TRUE);
+!          else
+           {
+!              /* The read returns when the child closes the pipe (or when
+!               * the child dies for some reason). */
+!              close(pipefd[1]);
+!              ignored = (int)read(pipefd[0], &dummy, (size_t)1);
+!              close(pipefd[0]);
+           }
+! 
+!          /* When swapping screens we may need to go to the next line, e.g.,
+!           * after a hit-enter prompt and using ":gui". */
+!          if (newline_on_exit)
+!              mch_errmsg("\r\n");
+! 
+!          /*
+!           * The parent must skip the normal exit() processing, the child
+!           * will do it.  For example, GTK messes up signals when exiting.
+!           */
+!          _exit(0);
+       }
+  
+! # if defined(HAVE_SETSID) || defined(HAVE_SETPGID)
+       /*
+!       * Change our process group.  On some systems/shells a CTRL-C in the
+!       * shell where Vim was started would otherwise kill gvim!
+        */
+!      if (pid == 0)       /* child */
+  #  if defined(HAVE_SETSID)
+!          (void)setsid();
+  #  else
+!          (void)setpgid(0, 0);
+  #  endif
+  # endif
+!      if (!pipe_error)
+!      {
+!          close(pipefd[0]);
+!          close(pipefd[1]);
+!      }
+  
+  # if defined(FEAT_GUI_GNOME) && defined(FEAT_SESSION)
+!      /* Tell the session manager our new PID */
+!      gui_mch_forked();
+  # endif
+      }
+- #else
+- # if defined(__QNXNTO__)
+-     if (gui.in_use && dofork)
+-      procmgr_daemon(0, PROCMGR_DAEMON_KEEPUMASK | PROCMGR_DAEMON_NOCHDIR |
+-              PROCMGR_DAEMON_NOCLOSE | PROCMGR_DAEMON_NODEVNULL);
+- # endif
+- #endif
+  
+! #ifdef FEAT_AUTOCMD
+!     /* If the GUI started successfully, trigger the GUIEnter event, otherwise
+!      * the GUIFailed event. */
+!     gui_mch_update();
+!     apply_autocmds(gui.in_use ? EVENT_GUIENTER : EVENT_GUIFAILED,
+!                                                 NULL, NULL, FALSE, curbuf);
+  #endif
+  
+!     --recursive;
+  }
+  
+  /*
+   * Call this when vim starts up, whether or not the GUI is started
+   */
+--- 176,346 ----
+       display_errors();
+      }
+  #endif
++     --recursive;
++ }
+  
+! #ifdef MAY_FORK
+! 
+! /* for waitpid() */
+! # if defined(HAVE_SYS_WAIT_H) || defined(HAVE_UNION_WAIT)
+! #  include <sys/wait.h>
+! # endif
+! 
+! /*
+!  * Create a new process, by forking. In the child, start the GUI, and in
+!  * the parent, exit.
+!  *
+!  * If something goes wrong, this will return with gui.in_use still set
+!  * to FALSE, in which case the caller should continue execution without
+!  * the GUI.
+!  *
+!  * If the child fails to start the GUI, then the child will exit and the
+!  * parent will return. If the child succeeds, then the parent will exit
+!  * and the child will return.
+!  */
+!     static void
+! gui_do_fork()
+! {
+! #ifdef __QNXNTO__
+!     procmgr_daemon(0, PROCMGR_DAEMON_KEEPUMASK | PROCMGR_DAEMON_NOCHDIR |
+!          PROCMGR_DAEMON_NOCLOSE | PROCMGR_DAEMON_NODEVNULL);
+!     gui_attempt_start();
+!     return;
+! #else
+!     int              pipefd[2];      /* pipe between parent and child */
+!     int              pipe_error;
+!     int              status;
+!     int              exit_status;
+!     pid_t    pid = -1;
+!     FILE     *parent_file;
+! 
+!     /* Setup a pipe between the child and the parent, so that the parent
+!      * knows when the child has done the setsid() call and is allowed to
+!      * exit. */
+!     pipe_error = (pipe(pipefd) < 0);
+!     pid = fork();
+!     if (pid < 0)         /* Fork error */
+      {
+!      EMSG(_("E851: Failed to create a new process for the GUI"));
+!      return;
+!     }
+!     else if (pid > 0)            /* Parent */
+!     {
+!      /* Give the child some time to do the setsid(), otherwise the
+!       * exit() may kill the child too (when starting gvim from inside a
+!       * gvim). */
+!      if (!pipe_error)
+       {
+!          /* The read returns when the child closes the pipe (or when
+!           * the child dies for some reason). */
+!          close(pipefd[1]);
+!          status = gui_read_child_pipe(pipefd[0]);
+!          if (status == GUI_CHILD_FAILED)
+           {
+!              /* The child failed to start the GUI, so the caller must
+!               * continue. There may be more error information written
+!               * to stderr by the child. */
+! # ifdef __NeXT__
+!              wait4(pid, &exit_status, 0, (struct rusage *)0);
+! # else
+!              waitpid(pid, &exit_status, 0);
+! # endif
+!              EMSG(_("E852: The child process failed to start the GUI"));
+!              return;
+           }
+!          else if (status == GUI_CHILD_IO_ERROR)
+!          {
+!              pipe_error = TRUE;
+!          }
+!          /* else GUI_CHILD_OK: parent exit */
+       }
+  
+!      if (pipe_error)
+!          ui_delay(300L, TRUE);
+! 
+!      /* When swapping screens we may need to go to the next line, e.g.,
+!       * after a hit-enter prompt and using ":gui". */
+!      if (newline_on_exit)
+!          mch_errmsg("\r\n");
+! 
+       /*
+!       * The parent must skip the normal exit() processing, the child
+!       * will do it.  For example, GTK messes up signals when exiting.
+        */
+!      _exit(0);
+!     }
+!     /* Child */
+! 
+! # if defined(HAVE_SETSID) || defined(HAVE_SETPGID)
+!     /*
+!      * Change our process group.  On some systems/shells a CTRL-C in the
+!      * shell where Vim was started would otherwise kill gvim!
+!      */
+  #  if defined(HAVE_SETSID)
+!     (void)setsid();
+  #  else
+!     (void)setpgid(0, 0);
+  #  endif
+  # endif
+!     if (!pipe_error)
+!      close(pipefd[0]);
+  
+  # if defined(FEAT_GUI_GNOME) && defined(FEAT_SESSION)
+!     /* Tell the session manager our new PID */
+!     gui_mch_forked();
+  # endif
++ 
++     if (!pipe_error)
++      parent_file = fdopen(pipefd[1], "w");
++     else
++      parent_file = NULL;
++ 
++     /* Try to start the GUI */
++     gui_attempt_start();
++ 
++     /* Notify the parent */
++     if (parent_file != NULL)
++     {
++      fputs(gui.in_use ? "ok" : "fail", parent_file);
++      fclose(parent_file);
+      }
+  
+!     /* If we failed to start the GUI, exit now. */
+!     if (!gui.in_use)
+!      exit(1);
+  #endif
++ }
+  
+! /*
+!  * Read from a pipe assumed to be connected to the child process (this
+!  * function is called from the parent).
+!  * Return GUI_CHILD_OK if the child successfully started the GUI,
+!  * GUY_CHILD_FAILED if the child failed, or GUI_CHILD_IO_ERROR if there was
+!  * some other error.
+!  *
+!  * The file descriptor will be closed before the function returns.
+!  */
+!     static int
+! gui_read_child_pipe(int fd)
+! {
+!     size_t   bytes_read;
+!     FILE     *file;
+!     char     buffer[10];
+! 
+!     file = fdopen(fd, "r");
+!     if (!file)
+!      return GUI_CHILD_IO_ERROR;
+! 
+!     bytes_read = fread(buffer, sizeof(char), sizeof(buffer)-1, file);
+!     buffer[bytes_read] = '\0';
+!     fclose(file);
+!     if (strcmp(buffer, "ok") == 0)
+!      return GUI_CHILD_OK;
+!     return GUI_CHILD_FAILED;
+  }
+  
++ #endif /* MAY_FORK */
++ 
+  /*
+   * Call this when vim starts up, whether or not the GUI is started
+   */
+*** ../vim-7.3.314/src/version.c       2011-09-14 19:01:38.000000000 +0200
+--- src/version.c      2011-09-14 19:02:45.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     315,
+  /**/
+
+-- 
+A)bort, R)etry, B)ang it with a large hammer
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.316.patch0 b/vim/patches/vim-7.3.316.patch0
new file mode 100644 (file)
index 0000000..96a7d42
--- /dev/null
@@ -0,0 +1,48 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.316
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.316 (after 7.3.306)
+Problem:    Crash when 'colorcolumn' is set and closing buffer.
+Solution:   Check for w_buffer to be NULL. (Yasuhiro Matsumoto)
+Files:     src/option.c
+
+
+*** ../vim-7.3.315/src/option.c        2011-06-12 22:13:37.000000000 +0200
+--- src/option.c       2011-09-21 13:26:31.000000000 +0200
+***************
+*** 7036,7041 ****
+--- 7036,7044 ----
+      int              i;
+      int              j = 0;
+  
++     if (wp->w_buffer == NULL)
++      return NULL;  /* buffer was closed */
++ 
+      for (s = wp->w_p_cc; *s != NUL && count < 255;)
+      {
+       if (*s == '-' || *s == '+')
+*** ../vim-7.3.315/src/version.c       2011-09-14 19:04:35.000000000 +0200
+--- src/version.c      2011-09-21 13:40:05.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     316,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+25. You believe nothing looks sexier than a man in boxer shorts illuminated
+    only by a 17" inch svga monitor.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.317.patch0 b/vim/patches/vim-7.3.317.patch0
new file mode 100644 (file)
index 0000000..220cae2
--- /dev/null
@@ -0,0 +1,116 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.317
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.317
+Problem:    Calling debug.debug() in Lua may cause Vim to hang.
+Solution:   Add a better debug method. (Rob Hoelz, Luis Carvalho)
+Files:     src/if_lua.c
+
+
+*** ../vim-7.3.316/src/if_lua.c        2011-01-17 19:53:20.000000000 +0100
+--- src/if_lua.c       2011-09-21 17:15:21.000000000 +0200
+***************
+*** 100,105 ****
+--- 100,106 ----
+  #define lua_setfield dll_lua_setfield
+  #define lua_rawset dll_lua_rawset
+  #define lua_rawseti dll_lua_rawseti
++ #define lua_remove dll_lua_remove
+  #define lua_setmetatable dll_lua_setmetatable
+  #define lua_call dll_lua_call
+  #define lua_pcall dll_lua_pcall
+***************
+*** 161,166 ****
+--- 162,168 ----
+  void (*dll_lua_setfield) (lua_State *L, int idx, const char *k);
+  void (*dll_lua_rawset) (lua_State *L, int idx);
+  void (*dll_lua_rawseti) (lua_State *L, int idx, int n);
++ void (*dll_lua_remove) (lua_State *L, int idx);
+  int (*dll_lua_setmetatable) (lua_State *L, int objindex);
+  void (*dll_lua_call) (lua_State *L, int nargs, int nresults);
+  int (*dll_lua_pcall) (lua_State *L, int nargs, int nresults, int errfunc);
+***************
+*** 229,234 ****
+--- 231,237 ----
+      {"lua_setfield", (luaV_function) &dll_lua_setfield},
+      {"lua_rawset", (luaV_function) &dll_lua_rawset},
+      {"lua_rawseti", (luaV_function) &dll_lua_rawseti},
++     {"lua_remove", (luaV_function) &dll_lua_remove},
+      {"lua_setmetatable", (luaV_function) &dll_lua_setmetatable},
+      {"lua_call", (luaV_function) &dll_lua_call},
+      {"lua_pcall", (luaV_function) &dll_lua_pcall},
+***************
+*** 924,929 ****
+--- 927,957 ----
+  }
+  
+      static int
++ luaV_debug(lua_State *L)
++ {
++     lua_settop(L, 0);
++     lua_getglobal(L, "vim");
++     lua_getfield(L, -1, "eval");
++     lua_remove(L, -2); /* vim.eval at position 1 */
++     for (;;)
++     {
++      const char *input;
++      size_t l;
++      lua_pushvalue(L, 1); /* vim.eval */
++      lua_pushliteral(L, "input('lua_debug> ')");
++      lua_call(L, 1, 1); /* return string */
++      input = lua_tolstring(L, -1, &l);
++      if (l == 0 || strcmp(input, "cont") == 0)
++          return 0;
++      msg_putchar('\n'); /* avoid outputting on input line */
++      if (luaL_loadbuffer(L, input, l, "=(debug command)")
++              || lua_pcall(L, 0, 0, 0))
++          luaV_emsg(L);
++      lua_settop(L, 1); /* remove eventual returns, but keep vim.eval */
++     }
++ }
++ 
++     static int
+  luaV_command(lua_State *L)
+  {
+      do_cmdline_cmd((char_u *) luaL_checkstring(L, 1));
+***************
+*** 1082,1087 ****
+--- 1110,1120 ----
+      /* print */
+      lua_pushcfunction(L, luaV_print);
+      lua_setglobal(L, "print");
++     /* debug.debug */
++     lua_getglobal(L, "debug");
++     lua_pushcfunction(L, luaV_debug);
++     lua_setfield(L, -2, "debug");
++     lua_pop(L, 1);
+      /* free */
+      lua_pushlightuserdata(L, (void *) LUAVIM_FREE);
+      lua_pushcfunction(L, luaV_free);
+*** ../vim-7.3.316/src/version.c       2011-09-21 13:40:13.000000000 +0200
+--- src/version.c      2011-09-21 17:14:01.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     317,
+  /**/
+
+-- 
+Q: What is the difference betwee open-source and commercial software?
+A: If you have a problem with commercial software you can call a phone
+   number and they will tell you it might be solved in a future version.
+   For open-source software there isn't a phone number to call, but you
+   get the solution within a day.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.318.patch0 b/vim/patches/vim-7.3.318.patch0
new file mode 100644 (file)
index 0000000..3694480
--- /dev/null
@@ -0,0 +1,90 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.318
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.318
+Problem:    "C" on the last line deletes that line if it's blank.
+Solution:   Only delete the last line for a delete operation. (James Vega)
+Files:     src/ops.c
+
+
+*** ../vim-7.3.317/src/ops.c   2011-08-10 12:10:55.000000000 +0200
+--- src/ops.c  2011-09-21 17:32:36.000000000 +0200
+***************
+*** 1922,1928 ****
+                   curwin->w_cursor.coladd = 0;
+           }
+  #endif
+!          if (oap->inclusive && oap->end.lnum == curbuf->b_ml.ml_line_count
+                   && n > (int)STRLEN(ml_get(oap->end.lnum)))
+           {
+               /* Special case: gH<Del> deletes the last line. */
+--- 1922,1930 ----
+                   curwin->w_cursor.coladd = 0;
+           }
+  #endif
+!          if (oap->op_type == OP_DELETE
+!                  && oap->inclusive
+!                  && oap->end.lnum == curbuf->b_ml.ml_line_count
+                   && n > (int)STRLEN(ml_get(oap->end.lnum)))
+           {
+               /* Special case: gH<Del> deletes the last line. */
+***************
+*** 3331,3338 ****
+       if (regname == '=')
+       {
+           /* For the = register we need to split the string at NL
+!           * characters. */
+!          /* Loop twice: count the number of lines and save them. */
+           for (;;)
+           {
+               y_size = 0;
+--- 3333,3340 ----
+       if (regname == '=')
+       {
+           /* For the = register we need to split the string at NL
+!           * characters.
+!           * Loop twice: count the number of lines and save them. */
+           for (;;)
+           {
+               y_size = 0;
+***************
+*** 3348,3354 ****
+                       if (y_array != NULL)
+                           *ptr = NUL;
+                       ++ptr;
+!                      /* A trailing '\n' makes the string linewise */
+                       if (*ptr == NUL)
+                       {
+                           y_type = MLINE;
+--- 3350,3356 ----
+                       if (y_array != NULL)
+                           *ptr = NUL;
+                       ++ptr;
+!                      /* A trailing '\n' makes the register linewise. */
+                       if (*ptr == NUL)
+                       {
+                           y_type = MLINE;
+*** ../vim-7.3.317/src/version.c       2011-09-21 17:15:34.000000000 +0200
+--- src/version.c      2011-09-21 17:31:48.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     318,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+26. You check your mail. It says "no new messages." So you check it again.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.319.patch0 b/vim/patches/vim-7.3.319.patch0
new file mode 100644 (file)
index 0000000..68448ab
--- /dev/null
@@ -0,0 +1,154 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.319
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.319 (after 7.3.311)
+Problem:    Redobuff doesn't always include changes of the completion leader.
+Solution:   Insert backspaces as needed. (idea by Taro Muraoka)
+Files:     src/edit.c
+
+
+*** ../vim-7.3.318/src/edit.c  2011-09-14 16:52:02.000000000 +0200
+--- src/edit.c 2011-09-21 17:59:10.000000000 +0200
+***************
+*** 163,168 ****
+--- 163,169 ----
+  static void ins_compl_set_original_text __ARGS((char_u *str));
+  static void ins_compl_addfrommatch __ARGS((void));
+  static int  ins_compl_prep __ARGS((int c));
++ static void ins_compl_fixRedoBufForLeader __ARGS((char_u *ptr_arg));
+  static buf_T *ins_compl_next_buf __ARGS((buf_T *buf, int flag));
+  #if defined(FEAT_COMPL_FUNC) || defined(FEAT_EVAL)
+  static void ins_compl_add_list __ARGS((list_T *list));
+***************
+*** 3713,3721 ****
+            * memory that was used, and make sure we can redo the insert. */
+           if (compl_curr_match != NULL || compl_leader != NULL || c == Ctrl_E)
+           {
+-              char_u  *p;
+-              int     temp = 0;
+- 
+               /*
+                * If any of the original typed text has been changed, eg when
+                * ignorecase is set, we must add back-spaces to the redo
+--- 3714,3719 ----
+***************
+*** 3726,3750 ****
+                */
+               if (compl_curr_match != NULL && compl_used_match && c != Ctrl_E)
+                   ptr = compl_curr_match->cp_str;
+-              else if (compl_leader != NULL)
+-                  ptr = compl_leader;
+               else
+!                  ptr = compl_orig_text;
+!              if (compl_orig_text != NULL)
+!              {
+!                  p = compl_orig_text;
+!                  for (temp = 0; p[temp] != NUL && p[temp] == ptr[temp];
+!                                                                     ++temp)
+!                      ;
+! #ifdef FEAT_MBYTE
+!                  if (temp > 0)
+!                      temp -= (*mb_head_off)(compl_orig_text, p + temp);
+! #endif
+!                  for (p += temp; *p != NUL; mb_ptr_adv(p))
+!                      AppendCharToRedobuff(K_BS);
+!              }
+!              if (ptr != NULL)
+!                  AppendToRedobuffLit(ptr + temp, -1);
+           }
+  
+  #ifdef FEAT_CINDENT
+--- 3724,3732 ----
+                */
+               if (compl_curr_match != NULL && compl_used_match && c != Ctrl_E)
+                   ptr = compl_curr_match->cp_str;
+               else
+!                  ptr = NULL;
+!              ins_compl_fixRedoBufForLeader(ptr);
+           }
+  
+  #ifdef FEAT_CINDENT
+***************
+*** 3834,3839 ****
+--- 3816,3859 ----
+  }
+  
+  /*
++  * Fix the redo buffer for the completion leader replacing some of the typed
++  * text.  This inserts backspaces and appends the changed text.
++  * "ptr" is the known leader text or NUL.
++  */
++     static void
++ ins_compl_fixRedoBufForLeader(ptr_arg)
++     char_u *ptr_arg;
++ {
++     int          len;
++     char_u  *p;
++     char_u  *ptr = ptr_arg;
++ 
++     if (ptr == NULL)
++     {
++      if (compl_leader != NULL)
++          ptr = compl_leader;
++      else
++          return;  /* nothing to do */
++     }
++     if (compl_orig_text != NULL)
++     {
++      p = compl_orig_text;
++      for (len = 0; p[len] != NUL && p[len] == ptr[len]; ++len)
++          ;
++ #ifdef FEAT_MBYTE
++      if (len > 0)
++          len -= (*mb_head_off)(p, p + len);
++ #endif
++      for (p += len; *p != NUL; mb_ptr_adv(p))
++          AppendCharToRedobuff(K_BS);
++     }
++     else
++      len = 0;
++     if (ptr != NULL)
++      AppendToRedobuffLit(ptr + len, -1);
++ }
++ 
++ /*
+   * Loops through the list of windows, loaded-buffers or non-loaded-buffers
+   * (depending on flag) starting from buf and looking for a non-scanned
+   * buffer (other than curbuf).       curbuf is special, if it is called with
+***************
+*** 5241,5246 ****
+--- 5261,5270 ----
+       else
+           edit_submode = (char_u *)_(CTRL_X_MSG(ctrl_x_mode));
+  
++      /* If any of the original typed text has been changed we need to fix
++       * the redo buffer. */
++      ins_compl_fixRedoBufForLeader(NULL);
++ 
+       /* Always add completion for the original text. */
+       vim_free(compl_orig_text);
+       compl_orig_text = vim_strnsave(line + compl_col, compl_length);
+*** ../vim-7.3.318/src/version.c       2011-09-21 17:33:49.000000000 +0200
+--- src/version.c      2011-09-21 18:21:07.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     319,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+27. You refer to your age as 3.x.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.320.patch0 b/vim/patches/vim-7.3.320.patch0
new file mode 100644 (file)
index 0000000..3b957c2
--- /dev/null
@@ -0,0 +1,130 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.320
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.320
+Problem:    When a 0xa0 character is in a sourced file the error message for
+           unrecognized command does not show the problem.
+Solution:   Display 0xa0 as <a0>.
+Files:     src/ex_docmd.c
+
+
+*** ../vim-7.3.319/src/ex_docmd.c      2011-07-20 16:36:35.000000000 +0200
+--- src/ex_docmd.c     2011-09-21 19:02:15.000000000 +0200
+***************
+*** 61,66 ****
+--- 61,67 ----
+  static char_u        *do_one_cmd __ARGS((char_u **, int, char_u *(*fgetline)(int, void *, int), void *cookie));
+  static int   if_level = 0;           /* depth in :if */
+  #endif
++ static void  append_command __ARGS((char_u *cmd));
+  static char_u        *find_command __ARGS((exarg_T *eap, int *full));
+  
+  static void  ex_abbreviate __ARGS((exarg_T *eap));
+***************
+*** 2136,2145 ****
+       {
+           STRCPY(IObuff, _("E492: Not an editor command"));
+           if (!sourcing)
+!          {
+!              STRCAT(IObuff, ": ");
+!              STRNCAT(IObuff, *cmdlinep, 40);
+!          }
+           errormsg = IObuff;
+       }
+       goto doend;
+--- 2137,2143 ----
+       {
+           STRCPY(IObuff, _("E492: Not an editor command"));
+           if (!sourcing)
+!              append_command(*cmdlinep);
+           errormsg = IObuff;
+       }
+       goto doend;
+***************
+*** 2708,2715 ****
+               STRCPY(IObuff, errormsg);
+               errormsg = IObuff;
+           }
+!          STRCAT(errormsg, ": ");
+!          STRNCAT(errormsg, *cmdlinep, IOSIZE - STRLEN(IObuff) - 1);
+       }
+       emsg(errormsg);
+      }
+--- 2706,2712 ----
+               STRCPY(IObuff, errormsg);
+               errormsg = IObuff;
+           }
+!          append_command(*cmdlinep);
+       }
+       emsg(errormsg);
+      }
+***************
+*** 2797,2802 ****
+--- 2794,2835 ----
+  }
+  
+  /*
++  * Append "cmd" to the error message in IObuff.
++  * Takes care of limiting the length and handling 0xa0, which would be
++  * invisible otherwise.
++  */
++     static void
++ append_command(cmd)
++     char_u *cmd;
++ {
++     char_u *s = cmd;
++     char_u *d;
++ 
++     STRCAT(IObuff, ": ");
++     d = IObuff + STRLEN(IObuff);
++     while (*s != NUL && d - IObuff < IOSIZE - 7)
++     {
++      if (
++ #ifdef FEAT_MBYTE
++              enc_utf8 ? (s[0] == 0xc2 && s[1] == 0xa0) :
++ #endif
++              *s == 0xa0)
++      {
++          s +=
++ #ifdef FEAT_MBYTE
++              enc_utf8 ? 2 :
++ #endif
++              1;
++          STRCPY(d, "<a0>");
++          d += 4;
++      }
++      else
++          MB_COPY_CHAR(s, d);
++     }
++     *d = NUL;
++ }
++ 
++ /*
+   * Find an Ex command by its name, either built-in or user.
+   * Start of the name can be found at eap->cmd.
+   * Returns pointer to char after the command name.
+*** ../vim-7.3.319/src/version.c       2011-09-21 18:23:02.000000000 +0200
+--- src/version.c      2011-09-21 19:04:35.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     320,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+28. You have comandeered your teenager's phone line for the net and even his
+    friends know not to call on his line anymore.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.321.patch0 b/vim/patches/vim-7.3.321.patch0
new file mode 100644 (file)
index 0000000..6303b01
--- /dev/null
@@ -0,0 +1,304 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.321
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.321
+Problem:    Code not following Vim style.
+Solution:   Fix the style. (Elias Diem)
+Files:     src/os_qnx.c
+
+
+*** ../vim-7.3.320/src/os_qnx.c        2011-06-19 01:14:22.000000000 +0200
+--- src/os_qnx.c       2011-09-21 19:48:08.000000000 +0200
+***************
+*** 24,33 ****
+  #if defined(FEAT_GUI_PHOTON)
+      PhChannelParms_t parms;
+  
+!     memset( &parms, 0, sizeof( parms ) );
+      parms.flags = Ph_DYNAMIC_BUFFER;
+  
+!     is_photon_available = (PhAttach( NULL, &parms ) != NULL) ? TRUE : FALSE;
+  #endif
+  }
+  
+--- 24,33 ----
+  #if defined(FEAT_GUI_PHOTON)
+      PhChannelParms_t parms;
+  
+!     memset(&parms, 0, sizeof(parms));
+      parms.flags = Ph_DYNAMIC_BUFFER;
+  
+!     is_photon_available = (PhAttach(NULL, &parms) != NULL) ? TRUE : FALSE;
+  #endif
+  }
+  
+***************
+*** 39,46 ****
+  /* Turn on the clipboard for a console vim when photon is running */
+  void qnx_clip_init()
+  {
+!     if( is_photon_available == TRUE && !gui.in_use)
+!      clip_init( TRUE );
+  }
+  
+  /*****************************************************************************/
+--- 39,46 ----
+  /* Turn on the clipboard for a console vim when photon is running */
+  void qnx_clip_init()
+  {
+!     if (is_photon_available == TRUE && !gui.in_use)
+!      clip_init(TRUE);
+  }
+  
+  /*****************************************************************************/
+***************
+*** 48,79 ****
+  
+  /* No support for owning the clipboard */
+  int
+! clip_mch_own_selection( VimClipboard *cbd )
+  {
+      return FALSE;
+  }
+  
+  void
+! clip_mch_lose_selection( VimClipboard *cbd )
+  {
+  }
+  
+  void
+! clip_mch_request_selection( VimClipboard *cbd )
+  {
+      int                  type = MLINE, clip_length = 0, is_type_set = FALSE;
+      void         *cbdata;
+      PhClipHeader    *clip_header;
+      char_u       *clip_text = NULL;
+  
+!     cbdata = PhClipboardPasteStart( PhInputGroup( NULL ));
+!     if( cbdata != NULL )
+      {
+       /* Look for the vim specific clip first */
+!      clip_header = PhClipboardPasteType( cbdata, CLIP_TYPE_VIM );
+!      if( clip_header != NULL && clip_header->data != NULL )
+       {
+!          switch( *(char *) clip_header->data )
+           {
+               default: /* fallthrough to line type */
+               case 'L': type = MLINE; break;
+--- 48,79 ----
+  
+  /* No support for owning the clipboard */
+  int
+! clip_mch_own_selection(VimClipboard *cbd)
+  {
+      return FALSE;
+  }
+  
+  void
+! clip_mch_lose_selection(VimClipboard *cbd)
+  {
+  }
+  
+  void
+! clip_mch_request_selection(VimClipboard *cbd)
+  {
+      int                  type = MLINE, clip_length = 0, is_type_set = FALSE;
+      void         *cbdata;
+      PhClipHeader    *clip_header;
+      char_u       *clip_text = NULL;
+  
+!     cbdata = PhClipboardPasteStart(PhInputGroup(NULL));
+!     if (cbdata != NULL)
+      {
+       /* Look for the vim specific clip first */
+!      clip_header = PhClipboardPasteType(cbdata, CLIP_TYPE_VIM);
+!      if (clip_header != NULL && clip_header->data != NULL)
+       {
+!          switch(*(char *) clip_header->data)
+           {
+               default: /* fallthrough to line type */
+               case 'L': type = MLINE; break;
+***************
+*** 86,112 ****
+       }
+  
+       /* Try for just normal text */
+!      clip_header = PhClipboardPasteType( cbdata, CLIP_TYPE_TEXT );
+!      if( clip_header != NULL )
+       {
+           clip_text = clip_header->data;
+           clip_length  = clip_header->length - 1;
+  
+!          if( clip_text != NULL && is_type_set == FALSE )
+               type = MAUTO;
+       }
+  
+!      if( (clip_text != NULL) && (clip_length > 0) )
+       {
+!          clip_yank_selection( type, clip_text, clip_length, cbd );
+       }
+  
+!      PhClipboardPasteFinish( cbdata );
+      }
+  }
+  
+  void
+! clip_mch_set_selection( VimClipboard *cbd )
+  {
+      int type;
+      long_u  len;
+--- 86,112 ----
+       }
+  
+       /* Try for just normal text */
+!      clip_header = PhClipboardPasteType(cbdata, CLIP_TYPE_TEXT);
+!      if (clip_header != NULL)
+       {
+           clip_text = clip_header->data;
+           clip_length  = clip_header->length - 1;
+  
+!          if (clip_text != NULL && is_type_set == FALSE)
+               type = MAUTO;
+       }
+  
+!      if ((clip_text != NULL) && (clip_length > 0))
+       {
+!          clip_yank_selection(type, clip_text, clip_length, cbd);
+       }
+  
+!      PhClipboardPasteFinish(cbdata);
+      }
+  }
+  
+  void
+! clip_mch_set_selection(VimClipboard *cbd)
+  {
+      int type;
+      long_u  len;
+***************
+*** 114,144 ****
+      PhClipHeader clip_header[2];
+  
+      /* Prevent recursion from clip_get_selection() */
+!     if( cbd->owned == TRUE )
+       return;
+  
+      cbd->owned = TRUE;
+!     clip_get_selection( cbd );
+      cbd->owned = FALSE;
+  
+!     type = clip_convert_selection( &str, &len, cbd );
+!     if( type >= 0 )
+      {
+!      text_clip = lalloc( len + 1, TRUE ); /* Normal text */
+  
+!      if( text_clip && vim_clip )
+       {
+!          memset( clip_header, 0, sizeof( clip_header ) );
+  
+!          STRNCPY( clip_header[0].type, CLIP_TYPE_VIM, 8 );
+!          clip_header[0].length = sizeof( vim_clip );
+           clip_header[0].data   = vim_clip;
+  
+!          STRNCPY( clip_header[1].type, CLIP_TYPE_TEXT, 8 );
+           clip_header[1].length = len + 1;
+           clip_header[1].data   = text_clip;
+  
+!          switch( type )
+           {
+               default: /* fallthrough to MLINE */
+               case MLINE:     *vim_clip = 'L'; break;
+--- 114,144 ----
+      PhClipHeader clip_header[2];
+  
+      /* Prevent recursion from clip_get_selection() */
+!     if (cbd->owned == TRUE)
+       return;
+  
+      cbd->owned = TRUE;
+!     clip_get_selection(cbd);
+      cbd->owned = FALSE;
+  
+!     type = clip_convert_selection(&str, &len, cbd);
+!     if (type >= 0)
+      {
+!      text_clip = lalloc(len + 1, TRUE); /* Normal text */
+  
+!      if (text_clip && vim_clip)
+       {
+!          memset(clip_header, 0, sizeof(clip_header));
+  
+!          STRNCPY(clip_header[0].type, CLIP_TYPE_VIM, 8);
+!          clip_header[0].length = sizeof(vim_clip);
+           clip_header[0].data   = vim_clip;
+  
+!          STRNCPY(clip_header[1].type, CLIP_TYPE_TEXT, 8);
+           clip_header[1].length = len + 1;
+           clip_header[1].data   = text_clip;
+  
+!          switch(type)
+           {
+               default: /* fallthrough to MLINE */
+               case MLINE:     *vim_clip = 'L'; break;
+***************
+*** 148,161 ****
+  #endif
+           }
+  
+!          vim_strncpy( text_clip, str, len );
+  
+           vim_clip[ 1 ] = NUL;
+  
+!          PhClipboardCopy( PhInputGroup( NULL ), 2, clip_header);
+       }
+!      vim_free( text_clip );
+      }
+!     vim_free( str );
+  }
+  #endif
+--- 148,161 ----
+  #endif
+           }
+  
+!          vim_strncpy(text_clip, str, len);
+  
+           vim_clip[ 1 ] = NUL;
+  
+!          PhClipboardCopy(PhInputGroup(NULL), 2, clip_header);
+       }
+!      vim_free(text_clip);
+      }
+!     vim_free(str);
+  }
+  #endif
+*** ../vim-7.3.320/src/version.c       2011-09-21 19:10:42.000000000 +0200
+--- src/version.c      2011-09-21 19:47:50.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     321,
+  /**/
+
+-- 
+Bypasses are devices that allow some people to dash from point A to
+point B very fast while other people dash from point B to point A very
+fast.  People living at point C, being a point directly in between, are
+often given to wonder what's so great about point A that so many people
+from point B are so keen to get there and what's so great about point B
+that so many people from point A are so keen to get there.  They often
+wish that people would just once and for all work out where the hell
+they wanted to be.
+               -- Douglas Adams, "The Hitchhiker's Guide to the Galaxy"
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.322.patch0 b/vim/patches/vim-7.3.322.patch0
new file mode 100644 (file)
index 0000000..d81b9ec
--- /dev/null
@@ -0,0 +1,52 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.322
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.322
+Problem:    #ifdef for PDP_RETVAL doesn't work, INT_PTR can be a typedef.
+Solution:   Check the MSC version and 64 bit flags. (Sergiu Dotenco)
+Files:     src/os_mswin.c
+
+
+*** ../vim-7.3.321/src/os_mswin.c      2011-08-10 17:07:56.000000000 +0200
+--- src/os_mswin.c     2011-09-21 20:09:05.000000000 +0200
+***************
+*** 1781,1787 ****
+  }
+  
+  /* Attempt to make this work for old and new compilers */
+! #if !defined(_MSC_VER) || (_MSC_VER < 1300) || !defined(INT_PTR)
+  # define PDP_RETVAL BOOL
+  #else
+  # define PDP_RETVAL INT_PTR
+--- 1781,1787 ----
+  }
+  
+  /* Attempt to make this work for old and new compilers */
+! #if !defined(_WIN64) && (!defined(_MSC_VER) || _MSC_VER < 1300)
+  # define PDP_RETVAL BOOL
+  #else
+  # define PDP_RETVAL INT_PTR
+*** ../vim-7.3.321/src/version.c       2011-09-21 19:50:00.000000000 +0200
+--- src/version.c      2011-09-21 20:08:29.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     322,
+  /**/
+
+-- 
+Don't Panic!
+               -- The Hitchhiker's Guide to the Galaxy
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.323.patch0 b/vim/patches/vim-7.3.323.patch0
new file mode 100644 (file)
index 0000000..10f6d19
--- /dev/null
@@ -0,0 +1,52 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.323
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.323
+Problem:    The default 'errorformat' does not ignore some "included from"
+           lines.
+Solution:   Add a few more patterns. (Ben Boeckel)
+Files:     src/option.h
+
+
+*** ../vim-7.3.322/src/option.h        2011-07-27 13:59:12.000000000 +0200
+--- src/option.h       2011-09-30 14:32:13.000000000 +0200
+***************
+*** 33,39 ****
+  #     ifdef EBCDIC
+  #define DFLT_EFM     "%*[^ ] %*[^ ] %f:%l%*[ ]%m,%*[^\"]\"%f\"%*\\D%l: %m,\"%f\"%*\\D%l: %m,%f:%l:%c:%m,%f(%l):%m,%f:%l:%m,\"%f\"\\, line %l%*\\D%c%*[^ ] %m,%D%*\\a[%*\\d]: Entering directory `%f',%X%*\\a[%*\\d]: Leaving directory `%f',%DMaking %*\\a in %f,%f|%l| %m"
+  #     else
+! #define DFLT_EFM     "%*[^\"]\"%f\"%*\\D%l: %m,\"%f\"%*\\D%l: %m,%-G%f:%l: (Each undeclared identifier is reported only once,%-G%f:%l: for each function it appears in.),%-GIn file included from %f:%l:%c:,%-GIn file included from %f:%l:%c,%-GIn file included from %f:%l,%-Gfrom %f:%l:%c,%-Gfrom %f:%l,%f:%l:%c:%m,%f(%l):%m,%f:%l:%m,\"%f\"\\, line %l%*\\D%c%*[^ ] %m,%D%*\\a[%*\\d]: Entering directory `%f',%X%*\\a[%*\\d]: Leaving directory `%f',%D%*\\a: Entering directory `%f',%X%*\\a: Leaving directory `%f',%DMaking %*\\a in %f,%f|%l| %m"
+  #     endif
+  #    endif
+  #   endif
+--- 33,39 ----
+  #     ifdef EBCDIC
+  #define DFLT_EFM     "%*[^ ] %*[^ ] %f:%l%*[ ]%m,%*[^\"]\"%f\"%*\\D%l: %m,\"%f\"%*\\D%l: %m,%f:%l:%c:%m,%f(%l):%m,%f:%l:%m,\"%f\"\\, line %l%*\\D%c%*[^ ] %m,%D%*\\a[%*\\d]: Entering directory `%f',%X%*\\a[%*\\d]: Leaving directory `%f',%DMaking %*\\a in %f,%f|%l| %m"
+  #     else
+! #define DFLT_EFM     "%*[^\"]\"%f\"%*\\D%l: %m,\"%f\"%*\\D%l: %m,%-G%f:%l: (Each undeclared identifier is reported only once,%-G%f:%l: for each function it appears in.),%-GIn file included from %f:%l:%c:,%-GIn file included from %f:%l:%c\\,,%-GIn file included from %f:%l:%c,%-GIn file included from %f:%l,%-G%*[ ]from %f:%l:%c,%-G%*[ ]from %f:%l:,%-G%*[ ]from %f:%l\\,,%-G%*[ ]from %f:%l,%f:%l:%c:%m,%f(%l):%m,%f:%l:%m,\"%f\"\\, line %l%*\\D%c%*[^ ] %m,%D%*\\a[%*\\d]: Entering directory `%f',%X%*\\a[%*\\d]: Leaving directory `%f',%D%*\\a: Entering directory `%f',%X%*\\a: Leaving directory `%f',%DMaking %*\\a in %f,%f|%l| %m"
+  #     endif
+  #    endif
+  #   endif
+*** ../vim-7.3.322/src/version.c       2011-09-21 20:09:38.000000000 +0200
+--- src/version.c      2011-09-30 14:38:59.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     323,
+  /**/
+
+-- 
+Due knot trussed yore spell chequer two fined awl miss steaks.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.324.patch0 b/vim/patches/vim-7.3.324.patch0
new file mode 100644 (file)
index 0000000..59b5c6c
--- /dev/null
@@ -0,0 +1,53 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.324
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.324 (after 7.3.237)
+Problem:    Completion for ":compiler" shows color scheme names.
+Solution:   Fix the directory name. (James Vega)
+Files:     src/ex_getln.c
+
+
+*** ../vim-7.3.323/src/ex_getln.c      2011-08-17 16:25:43.000000000 +0200
+--- src/ex_getln.c     2011-09-30 16:22:14.000000000 +0200
+***************
+*** 4546,4552 ****
+      }
+      if (xp->xp_context == EXPAND_COMPILER)
+      {
+!      char *directories[] = {"colors", NULL};
+       return ExpandRTDir(pat, num_file, file, directories);
+      }
+      if (xp->xp_context == EXPAND_OWNSYNTAX)
+--- 4546,4552 ----
+      }
+      if (xp->xp_context == EXPAND_COMPILER)
+      {
+!      char *directories[] = {"compiler", NULL};
+       return ExpandRTDir(pat, num_file, file, directories);
+      }
+      if (xp->xp_context == EXPAND_OWNSYNTAX)
+*** ../vim-7.3.323/src/version.c       2011-09-30 14:44:49.000000000 +0200
+--- src/version.c      2011-09-30 16:23:15.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     324,
+  /**/
+
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+31. You code your homework in HTML and give your instructor the URL.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.325.patch0 b/vim/patches/vim-7.3.325.patch0
new file mode 100644 (file)
index 0000000..80ebc6d
--- /dev/null
@@ -0,0 +1,64 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.325
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.325
+Problem:    A duplicated function argument gives an internal error.
+Solution:   Give a proper error message. (based on patch by Tyru)
+Files:     src/eval.c
+
+
+*** ../vim-7.3.324/src/eval.c  2011-09-14 16:52:02.000000000 +0200
+--- src/eval.c 2011-09-30 16:32:20.000000000 +0200
+***************
+*** 20461,20466 ****
+--- 20461,20467 ----
+      exarg_T  *eap;
+  {
+      char_u   *theline;
++     int              i;
+      int              j;
+      int              c;
+      int              saved_did_emsg;
+***************
+*** 20707,20712 ****
+--- 20708,20722 ----
+           arg = vim_strsave(arg);
+           if (arg == NULL)
+               goto erret;
++ 
++          /* Check for duplicate argument name. */
++          for (i = 0; i < newargs.ga_len; ++i)
++              if (STRCMP(((char_u **)(newargs.ga_data))[i], arg) == 0)
++              {
++                  EMSG2(_("E853: Duplicate argument name: %s"), arg);
++                  goto erret;
++              }
++ 
+           ((char_u **)(newargs.ga_data))[newargs.ga_len] = arg;
+           *p = c;
+           newargs.ga_len++;
+*** ../vim-7.3.324/src/version.c       2011-09-30 16:23:21.000000000 +0200
+--- src/version.c      2011-09-30 16:39:16.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     325,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+32. You don't know what sex three of your closest friends are, because they
+    have neutral nicknames and you never bothered to ask.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.326.patch0 b/vim/patches/vim-7.3.326.patch0
new file mode 100644 (file)
index 0000000..4ad52e9
--- /dev/null
@@ -0,0 +1,285 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.326
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.326
+Problem:    MingW 4.6 no longer supports the -mno-cygwin option.
+Solution:   Split the Cygwin and MingW makefiles. (Matsushita Shougo)
+Files:     src/GvimExt/Make_cyg.mak, src/GvimExt/Make_ming.mak,
+           src/Make_cyg.mak, src/Make_ming.mak, src/xxd/Make_ming.mak,
+           Filelist
+
+
+*** ../vim-7.3.325/src/GvimExt/Make_cyg.mak    2011-09-30 16:55:18.000000000 +0200
+--- src/GvimExt/Make_cyg.mak   2011-09-30 16:45:49.000000000 +0200
+***************
+*** 0 ****
+--- 1,77 ----
++ # Project: gvimext
++ # Generates gvimext.dll with gcc.
++ # To be used with Cygwin.
++ #
++ # Originally, the DLL base address was fixed: -Wl,--image-base=0x1C000000
++ # Now it is allocated dymanically by the linker by evaluating all DLLs
++ # already loaded in memory. The binary image contains as well information
++ # for automatic pseudo-rebasing, if needed by the system. ALV 2004-02-29
++ 
++ # If cross-compiling set this to yes, else set it to no
++ CROSS = no
++ #CROSS = yes
++ # For the old MinGW 2.95 (the one you get e.g. with debian woody)
++ # set the following variable to yes and check if the executables are
++ # really named that way.
++ # If you have a newer MinGW or you are using cygwin set it to no and
++ # check also the executables
++ MINGWOLD = no
++ 
++ # Link against the shared versions of libgcc/libstdc++ by default.  Set
++ # STATIC_STDCPLUS to "yes" to link against static versions instead.
++ STATIC_STDCPLUS=no
++ #STATIC_STDCPLUS=yes
++ 
++ # Note: -static-libstdc++ is not available until gcc 4.5.x.
++ LDFLAGS += -shared
++ ifeq (yes, $(STATIC_STDCPLUS))
++ LDFLAGS += -static-libgcc -static-libstdc++
++ endif
++ 
++ ifeq ($(CROSS),yes)
++ DEL = rm
++ ifeq ($(MINGWOLD),yes)
++ CXXFLAGS := -O2 -mno-cygwin -fvtable-thunks
++ else
++ CXXFLAGS := -O2 -mno-cygwin
++ endif
++ else
++ CXXFLAGS := -O2 -mno-cygwin
++ ifneq (sh.exe, $(SHELL))
++ DEL = rm
++ else
++ DEL = del
++ endif
++ endif
++ CXX := $(CROSS_COMPILE)g++
++ WINDRES := $(CROSS_COMPILE)windres
++ WINDRES_CXX = $(CXX)
++ WINDRES_FLAGS = --preprocessor="$(WINDRES_CXX) -E -xc" -DRC_INVOKED
++ LIBS :=  -luuid
++ RES  := gvimext.res
++ DEFFILE = gvimext_ming.def
++ OBJ  := gvimext.o
++ 
++ DLL  := gvimext.dll
++ 
++ .PHONY: all all-before all-after clean clean-custom
++ 
++ all: all-before $(DLL) all-after
++ 
++ $(DLL): $(OBJ) $(RES) $(DEFFILE)
++      $(CXX) $(LDFLAGS) $(CXXFLAGS) -s -o $@ \
++              -Wl,--enable-auto-image-base \
++              -Wl,--enable-auto-import \
++              -Wl,--whole-archive \
++                      $^ \
++              -Wl,--no-whole-archive \
++                      $(LIBS)
++ 
++ gvimext.o: gvimext.cpp
++      $(CXX) $(CXXFLAGS) -DFEAT_GETTEXT -c $? -o $@
++ 
++ $(RES): gvimext_ming.rc
++      $(WINDRES) $(WINDRES_FLAGS) --input-format=rc --output-format=coff -DMING $? -o $@
++ 
++ clean: clean-custom
++      -$(DEL)  $(OBJ) $(RES) $(DLL)
+*** ../vim-7.3.325/src/GvimExt/Make_ming.mak   2010-12-30 14:50:46.000000000 +0100
+--- src/GvimExt/Make_ming.mak  2011-09-30 16:47:09.000000000 +0200
+***************
+*** 1,6 ****
+  # Project: gvimext
+  # Generates gvimext.dll with gcc.
+! # Can be used for Cygwin and MingW (MingW ignores -mno-cygwin)
+  #
+  # Originally, the DLL base address was fixed: -Wl,--image-base=0x1C000000
+  # Now it is allocated dymanically by the linker by evaluating all DLLs
+--- 1,6 ----
+  # Project: gvimext
+  # Generates gvimext.dll with gcc.
+! # To be used with MingW.
+  #
+  # Originally, the DLL base address was fixed: -Wl,--image-base=0x1C000000
+  # Now it is allocated dymanically by the linker by evaluating all DLLs
+***************
+*** 31,42 ****
+  ifeq ($(CROSS),yes)
+  DEL = rm
+  ifeq ($(MINGWOLD),yes)
+! CXXFLAGS := -O2 -mno-cygwin -fvtable-thunks
+  else
+! CXXFLAGS := -O2 -mno-cygwin
+  endif
+  else
+! CXXFLAGS := -O2 -mno-cygwin
+  ifneq (sh.exe, $(SHELL))
+  DEL = rm
+  else
+--- 31,42 ----
+  ifeq ($(CROSS),yes)
+  DEL = rm
+  ifeq ($(MINGWOLD),yes)
+! CXXFLAGS := -O2 -fvtable-thunks
+  else
+! CXXFLAGS := -O2
+  endif
+  else
+! CXXFLAGS := -O2
+  ifneq (sh.exe, $(SHELL))
+  DEL = rm
+  else
+***************
+*** 75,78 ****
+  
+  clean: clean-custom
+       -$(DEL)  $(OBJ) $(RES) $(DLL)
+- 
+--- 75,77 ----
+*** ../vim-7.3.325/src/Make_cyg.mak    2010-11-03 21:59:23.000000000 +0100
+--- src/Make_cyg.mak   2011-09-30 16:48:11.000000000 +0200
+***************
+*** 536,542 ****
+       $(MAKE) -C xxd -f Make_cyg.mak CC=$(CC) USEDLL=$(USEDLL)
+  
+  GvimExt/gvimext.dll: GvimExt/gvimext.cpp GvimExt/gvimext.rc GvimExt/gvimext.h
+!      $(MAKE) -C GvimExt -f Make_ming.mak CROSS_COMPILE=$(CROSS_COMPILE)
+  
+  vimrun.exe: vimrun.c
+       $(CC) $(CFLAGS) -o vimrun.exe vimrun.c  $(LIBS)
+--- 536,542 ----
+       $(MAKE) -C xxd -f Make_cyg.mak CC=$(CC) USEDLL=$(USEDLL)
+  
+  GvimExt/gvimext.dll: GvimExt/gvimext.cpp GvimExt/gvimext.rc GvimExt/gvimext.h
+!      $(MAKE) -C GvimExt -f Make_cyg.mak CROSS_COMPILE=$(CROSS_COMPILE)
+  
+  vimrun.exe: vimrun.c
+       $(CC) $(CFLAGS) -o vimrun.exe vimrun.c  $(LIBS)
+***************
+*** 565,571 ****
+  endif
+       -$(DEL) pathdef.c
+       $(MAKE) -C xxd -f Make_cyg.mak clean
+!      $(MAKE) -C GvimExt -f Make_ming.mak clean
+  
+  distclean: clean
+       -$(DEL) obj$(DIRSLASH)*.o
+--- 565,571 ----
+  endif
+       -$(DEL) pathdef.c
+       $(MAKE) -C xxd -f Make_cyg.mak clean
+!      $(MAKE) -C GvimExt -f Make_cyg.mak clean
+  
+  distclean: clean
+       -$(DEL) obj$(DIRSLASH)*.o
+*** ../vim-7.3.325/src/Make_ming.mak   2011-09-14 10:49:44.000000000 +0200
+--- src/Make_ming.mak  2011-09-30 16:48:11.000000000 +0200
+***************
+*** 641,647 ****
+       upx vim.exe
+  
+  xxd/xxd.exe: xxd/xxd.c
+!      $(MAKE) -C xxd -f Make_cyg.mak CC=$(CC)
+  
+  GvimExt/gvimext.dll: GvimExt/gvimext.cpp GvimExt/gvimext.rc GvimExt/gvimext.h
+       $(MAKE) -C GvimExt -f Make_ming.mak CROSS=$(CROSS) CROSS_COMPILE=$(CROSS_COMPILE)
+--- 641,647 ----
+       upx vim.exe
+  
+  xxd/xxd.exe: xxd/xxd.c
+!      $(MAKE) -C xxd -f Make_ming.mak CC=$(CC)
+  
+  GvimExt/gvimext.dll: GvimExt/gvimext.cpp GvimExt/gvimext.rc GvimExt/gvimext.h
+       $(MAKE) -C GvimExt -f Make_ming.mak CROSS=$(CROSS) CROSS_COMPILE=$(CROSS_COMPILE)
+***************
+*** 659,665 ****
+       -$(DEL) mzscheme_base.c
+  endif
+       $(MAKE) -C GvimExt -f Make_ming.mak clean
+!      $(MAKE) -C xxd -f Make_cyg.mak clean
+  
+  ###########################################################################
+  INCL = vim.h feature.h os_win32.h os_dos.h ascii.h keymap.h term.h macros.h \
+--- 659,665 ----
+       -$(DEL) mzscheme_base.c
+  endif
+       $(MAKE) -C GvimExt -f Make_ming.mak clean
+!      $(MAKE) -C xxd -f Make_ming.mak clean
+  
+  ###########################################################################
+  INCL = vim.h feature.h os_win32.h os_dos.h ascii.h keymap.h term.h macros.h \
+*** ../vim-7.3.325/src/xxd/Make_ming.mak       2011-09-30 16:55:18.000000000 +0200
+--- src/xxd/Make_ming.mak      2011-09-30 16:48:34.000000000 +0200
+***************
+*** 0 ****
+--- 1,28 ----
++ # The most simplistic Makefile, for MinGW gcc on MS-DOS
++ 
++ ifndef USEDLL
++ USEDLL = no
++ endif
++ 
++ ifeq (yes, $(USEDLL))
++ DEFINES =
++ LIBS    = -lc
++ else
++ DEFINES =
++ LIBS    =
++ endif
++ 
++ CC = gcc
++ CFLAGS = -O2 -Wall -DWIN32 $(DEFINES)
++ 
++ ifneq (sh.exe, $(SHELL))
++ DEL = rm
++ else
++ DEL = del
++ endif
++ 
++ xxd.exe: xxd.c
++      $(CC) $(CFLAGS) -s -o xxd.exe xxd.c $(LIBS)
++ 
++ clean:
++      -$(DEL) xxd.exe
+*** ../vim-7.3.325/Filelist    2011-06-12 20:36:00.000000000 +0200
+--- Filelist   2011-09-30 16:49:29.000000000 +0200
+***************
+*** 313,318 ****
+--- 313,319 ----
+               src/xxd/Make_bc5.mak \
+               src/xxd/Make_cyg.mak \
+               src/xxd/Make_djg.mak \
++              src/xxd/Make_ming.mak \
+               src/xxd/Make_mvc.mak \
+               nsis/gvim.nsi \
+               nsis/README.txt \
+*** ../vim-7.3.325/src/version.c       2011-09-30 16:39:41.000000000 +0200
+--- src/version.c      2011-09-30 16:49:57.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     326,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+33. You name your children Eudora, Mozilla and Dotcom.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.327.patch0 b/vim/patches/vim-7.3.327.patch0
new file mode 100644 (file)
index 0000000..1de5a99
--- /dev/null
@@ -0,0 +1,64 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.327
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.327
+Problem:    When jumping to a help tag a closed fold doesn't open.
+Solution:   Save and restore KeyTyped. (Yasuhiro Matsumoto)
+Files:     src/ex_cmds.c
+
+
+*** ../vim-7.3.326/src/ex_cmds.c       2011-09-14 14:43:21.000000000 +0200
+--- src/ex_cmds.c      2011-09-30 17:24:03.000000000 +0200
+***************
+*** 5508,5513 ****
+--- 5508,5516 ----
+      int              len;
+      char_u   *lang;
+  #endif
++ #ifdef FEAT_FOLDING
++     int              old_KeyTyped = KeyTyped;
++ #endif
+  
+      if (eap != NULL)
+      {
+***************
+*** 5671,5676 ****
+--- 5674,5685 ----
+      if (!p_im)
+       restart_edit = 0;           /* don't want insert mode in help file */
+  
++ #ifdef FEAT_FOLDING
++     /* Restore KeyTyped, setting 'filetype=help' may reset it.
++      * It is needed for do_tag top open folds under the cursor. */
++     KeyTyped = old_KeyTyped;
++ #endif
++ 
+      if (tag != NULL)
+       do_tag(tag, DT_HELP, 1, FALSE, TRUE);
+  
+*** ../vim-7.3.326/src/version.c       2011-09-30 16:56:00.000000000 +0200
+--- src/version.c      2011-09-30 17:24:17.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     327,
+  /**/
+
+-- 
+Q. What happens to programmers when they die?
+A: MS-Windows programmers are reinstalled.  C++ programmers become undefined,
+   anyone who refers to them will die as well.  Java programmers reincarnate
+   after being garbage collected.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.328.patch0 b/vim/patches/vim-7.3.328.patch0
new file mode 100644 (file)
index 0000000..24dad70
--- /dev/null
@@ -0,0 +1,45 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.328
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.328
+Problem:    When command line wraps the cursor may be displayed wrong when
+           there are multi-byte characters.
+Solution:   Position the cursor before drawing the text. (Yasuhiro Matsumoto)
+Files:     src/ex_getln.c
+
+
+*** ../vim-7.3.327/src/ex_getln.c      2011-09-30 16:23:21.000000000 +0200
+--- src/ex_getln.c     2011-09-30 17:39:27.000000000 +0200
+***************
+*** 2870,2875 ****
+--- 2870,2876 ----
+       {
+           msg_no_more = TRUE;
+           i = cmdline_row;
++          cursorcmd();
+           draw_cmdline(ccline.cmdpos, ccline.cmdlen - ccline.cmdpos);
+           /* Avoid clearing the rest of the line too often. */
+           if (cmdline_row != i || ccline.overstrike)
+*** ../vim-7.3.327/src/version.c       2011-09-30 17:30:27.000000000 +0200
+--- src/version.c      2011-09-30 17:45:28.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     328,
+  /**/
+
+-- 
+To define recursion, we must first define recursion.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.329.patch0 b/vim/patches/vim-7.3.329.patch0
new file mode 100644 (file)
index 0000000..fe48eb5
--- /dev/null
@@ -0,0 +1,72 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.329
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.329
+Problem:    When skipping over code from ":for" to ":endfor" get an error for
+           calling a dict function. (Yasuhiro Matsumoto)
+Solution:   Ignore errors when skipping over :call command.
+Files:     src/ex_docmd.c, src/eval.c
+
+
+*** ../vim-7.3.328/src/ex_docmd.c      2011-09-21 19:10:42.000000000 +0200
+--- src/ex_docmd.c     2011-09-30 17:59:51.000000000 +0200
+***************
+*** 371,381 ****
+  # define ex_endif            ex_ni
+  # define ex_else             ex_ni
+  # define ex_while            ex_ni
+- # define ex_for                      ex_ni
+  # define ex_continue         ex_ni
+  # define ex_break            ex_ni
+  # define ex_endwhile         ex_ni
+- # define ex_endfor           ex_ni
+  # define ex_throw            ex_ni
+  # define ex_try                      ex_ni
+  # define ex_catch            ex_ni
+--- 371,379 ----
+*** ../vim-7.3.328/src/eval.c  2011-09-30 16:39:41.000000000 +0200
+--- src/eval.c 2011-09-30 18:29:58.000000000 +0200
+***************
+*** 3377,3383 ****
+       /* trans_function_name() doesn't work well when skipping, use eval0()
+        * instead to skip to any following command, e.g. for:
+        *   :if 0 | call dict.foo().bar() | endif  */
+!      eval0(eap->arg, &rettv, &eap->nextcmd, FALSE);
+       return;
+      }
+  
+--- 3377,3386 ----
+       /* trans_function_name() doesn't work well when skipping, use eval0()
+        * instead to skip to any following command, e.g. for:
+        *   :if 0 | call dict.foo().bar() | endif  */
+!      ++emsg_skip;
+!      if (eval0(eap->arg, &rettv, &eap->nextcmd, FALSE) != FAIL)
+!          clear_tv(&rettv);
+!      --emsg_skip;
+       return;
+      }
+  
+*** ../vim-7.3.328/src/version.c       2011-09-30 17:46:14.000000000 +0200
+--- src/version.c      2011-09-30 18:32:27.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     329,
+  /**/
+
+-- 
+Have you heard about the new Beowulf cluster? It's so fast, it executes
+an infinite loop in 6 seconds.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.330.patch0 b/vim/patches/vim-7.3.330.patch0
new file mode 100644 (file)
index 0000000..ab828b9
--- /dev/null
@@ -0,0 +1,45 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.330
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.330
+Problem:    When longjmp() is invoked if the X server gives an error the state
+           is not properly restored.
+Solution:   Reset vgetc_busy. (Yukihiro Nakadaira)
+Files:     src/main.c
+
+
+*** ../vim-7.3.329/src/main.c  2011-05-10 16:41:13.000000000 +0200
+--- src/main.c 2011-10-04 16:41:03.000000000 +0200
+***************
+*** 1009,1014 ****
+--- 1009,1015 ----
+       skip_redraw = FALSE;
+       RedrawingDisabled = 0;
+       no_wait_return = 0;
++      vgetc_busy = 0;
+  # ifdef FEAT_EVAL
+       emsg_skip = 0;
+  # endif
+*** ../vim-7.3.329/src/version.c       2011-09-30 18:35:49.000000000 +0200
+--- src/version.c      2011-10-04 16:42:23.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     330,
+  /**/
+
+-- 
+Just remember...if the world didn't suck, we'd all fall off.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.331.patch0 b/vim/patches/vim-7.3.331.patch0
new file mode 100644 (file)
index 0000000..ba63c17
--- /dev/null
@@ -0,0 +1,53 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.331
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.331
+Problem:    "vit" selects wrong text when a tag name starts with the same text
+           as an outer tag name. (Ben Fritz)
+Solution:   Add "\>" to the pattern to check for word boundary.
+Files:     src/search.c
+
+
+*** ../vim-7.3.330/src/search.c        2011-07-15 13:21:24.000000000 +0200
+--- src/search.c       2011-10-04 16:54:08.000000000 +0200
+***************
+*** 3927,3933 ****
+       curwin->w_cursor = old_pos;
+       goto theend;
+      }
+!     sprintf((char *)spat, "<%.*s\\%%(\\_[^>]\\{-}[^/]>\\|>\\)\\c", len, p);
+      sprintf((char *)epat, "</%.*s>\\c", len, p);
+  
+      r = do_searchpair(spat, (char_u *)"", epat, FORWARD, (char_u *)"",
+--- 3927,3933 ----
+       curwin->w_cursor = old_pos;
+       goto theend;
+      }
+!     sprintf((char *)spat, "<%.*s\\>\\%%(\\_[^>]\\{-}[^/]>\\|>\\)\\c", len, p);
+      sprintf((char *)epat, "</%.*s>\\c", len, p);
+  
+      r = do_searchpair(spat, (char_u *)"", epat, FORWARD, (char_u *)"",
+*** ../vim-7.3.330/src/version.c       2011-10-04 16:43:49.000000000 +0200
+--- src/version.c      2011-10-04 16:59:47.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     331,
+  /**/
+
+-- 
+The 50-50-90 rule: Anytime you have a 50-50 chance of getting
+something right, there's a 90% probability you'll get it wrong.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.332.patch0 b/vim/patches/vim-7.3.332.patch0
new file mode 100644 (file)
index 0000000..ff0ab7c
--- /dev/null
@@ -0,0 +1,206 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.332
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.332 (after 7.3.202)
+Problem:    Indent after "public:" is not increased in C++ code. (Lech Lorens)
+Solution:   Check for namespace after the regular checks. (partly by Martin
+           Gieseking)
+Files:     src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok
+
+
+*** ../vim-7.3.331/src/misc1.c 2011-09-07 19:58:04.000000000 +0200
+--- src/misc1.c        2011-10-04 17:59:52.000000000 +0200
+***************
+*** 6389,6394 ****
+--- 6389,6395 ----
+      int              lookfor_cpp_namespace = FALSE;
+      int              cont_amount = 0;    /* amount for continuation line */
+      int              original_line_islabel;
++     int              added_to_amount = 0;
+  
+      for (options = curbuf->b_p_cino; *options; )
+      {
+***************
+*** 7216,7267 ****
+                       else
+                           amount += ind_continuation;
+                   }
+!                  else if (lookfor_cpp_namespace)
+                   {
+!                      if (curwin->w_cursor.lnum == ourscope)
+!                          continue;
+  
+!                      if (curwin->w_cursor.lnum == 0
+!                              || curwin->w_cursor.lnum
+                                             < ourscope - FIND_NAMESPACE_LIM)
+!                          break;
+  
+!                      l = ml_get_curline();
+  
+!                      /*
+!                       * If we're in a comment now, skip to the start of the
+!                       * comment.
+!                       */
+!                      trypos = find_start_comment(ind_maxcomment);
+!                      if (trypos != NULL)
+!                      {
+!                          curwin->w_cursor.lnum = trypos->lnum + 1;
+!                          curwin->w_cursor.col = 0;
+!                          continue;
+!                      }
+! 
+!                      /*
+!                       * Skip preprocessor directives and blank lines.
+!                       */
+!                      if (cin_ispreproc_cont(&l, &curwin->w_cursor.lnum))
+!                          continue;
+  
+!                      if (cin_is_cpp_namespace(l))
+!                      {
+!                          amount += ind_cpp_namespace;
+!                          break;
+!                      }
+  
+!                      if (cin_nocode(l))
+!                          continue;
+  
+!                  }
+!                  else if (lookfor != LOOKFOR_TERM
+!                                        && lookfor != LOOKFOR_CPP_BASECLASS)
+!                  {
+!                      amount = scope_amount;
+!                      if (theline[0] == '{')
+!                          amount += ind_open_extra;
+                   }
+                   break;
+               }
+--- 7217,7275 ----
+                       else
+                           amount += ind_continuation;
+                   }
+!                  else
+                   {
+!                      if (lookfor != LOOKFOR_TERM
+!                                        && lookfor != LOOKFOR_CPP_BASECLASS)
+!                      {
+!                          amount = scope_amount;
+!                          if (theline[0] == '{')
+!                          {
+!                              amount += ind_open_extra;
+!                              added_to_amount = ind_open_extra;
+!                          }
+!                      }
+  
+!                      if (lookfor_cpp_namespace)
+!                      {
+!                          /*
+!                           * Looking for C++ namespace, need to look further
+!                           * back.
+!                           */
+!                          if (curwin->w_cursor.lnum == ourscope)
+!                              continue;
+! 
+!                          if (curwin->w_cursor.lnum == 0
+!                                  || curwin->w_cursor.lnum
+                                             < ourscope - FIND_NAMESPACE_LIM)
+!                              break;
+  
+!                          l = ml_get_curline();
+  
+!                          /* If we're in a comment now, skip to the start of
+!                           * the comment. */
+!                          trypos = find_start_comment(ind_maxcomment);
+!                          if (trypos != NULL)
+!                          {
+!                              curwin->w_cursor.lnum = trypos->lnum + 1;
+!                              curwin->w_cursor.col = 0;
+!                              continue;
+!                          }
+  
+!                          /* Skip preprocessor directives and blank lines. */
+!                          if (cin_ispreproc_cont(&l, &curwin->w_cursor.lnum))
+!                              continue;
+  
+!                          /* Finally the actual check for "namespace". */
+!                          if (cin_is_cpp_namespace(l))
+!                          {
+!                              amount += ind_cpp_namespace - added_to_amount;
+!                              break;
+!                          }
+  
+!                          if (cin_nocode(l))
+!                              continue;
+!                      }
+                   }
+                   break;
+               }
+*** ../vim-7.3.331/src/testdir/test3.in        2011-07-20 15:09:38.000000000 +0200
+--- src/testdir/test3.in       2011-10-04 17:45:20.000000000 +0200
+***************
+*** 1309,1314 ****
+--- 1309,1328 ----
+  };
+  
+  STARTTEST
++ :set cino=(0,gs,hs
++ 2kdd]]=][
++ ENDTEST
++ 
++ class Foo : public Bar
++ {
++ public:
++ virtual void method1(void) = 0;
++ virtual void method2(int arg1,
++ int arg2,
++ int arg3) = 0;
++ };
++ 
++ STARTTEST
+  :set cino=+20
+  2kdd]]=][
+  ENDTEST
+*** ../vim-7.3.331/src/testdir/test3.ok        2011-07-20 15:09:38.000000000 +0200
+--- src/testdir/test3.ok       2011-10-04 17:47:25.000000000 +0200
+***************
+*** 1190,1195 ****
+--- 1190,1205 ----
+  };
+  
+  
++ class Foo : public Bar
++ {
++      public:
++              virtual void method1(void) = 0;
++              virtual void method2(int arg1,
++                                                       int arg2,
++                                                       int arg3) = 0;
++ };
++ 
++ 
+       void
+  foo()
+  {
+*** ../vim-7.3.331/src/version.c       2011-10-04 17:00:13.000000000 +0200
+--- src/version.c      2011-10-04 18:02:17.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     332,
+  /**/
+
+-- 
+Latest survey shows that 3 out of 4 people make up 75% of the
+world's population.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.333.patch0 b/vim/patches/vim-7.3.333.patch0
new file mode 100644 (file)
index 0000000..974b0cd
--- /dev/null
@@ -0,0 +1,245 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.333
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.333
+Problem:    Using "." to repeat a Visual delete counts the size in bytes, not
+           characters.  (Connor Lane Smith)
+Solution:   Store the virtual column numbers instead of byte positions.
+Files:     src/normal.c
+
+
+*** ../vim-7.3.332/src/normal.c        2011-07-15 17:51:30.000000000 +0200
+--- src/normal.c       2011-10-04 19:47:14.000000000 +0200
+***************
+*** 20,26 ****
+   */
+  static int   resel_VIsual_mode = NUL;        /* 'v', 'V', or Ctrl-V */
+  static linenr_T      resel_VIsual_line_count;        /* number of lines */
+! static colnr_T       resel_VIsual_col;               /* nr of cols or end col */
+  
+  static int   restart_VIsual_select = 0;
+  #endif
+--- 20,26 ----
+   */
+  static int   resel_VIsual_mode = NUL;        /* 'v', 'V', or Ctrl-V */
+  static linenr_T      resel_VIsual_line_count;        /* number of lines */
+! static colnr_T       resel_VIsual_vcol;              /* nr of cols or end col */
+  
+  static int   restart_VIsual_select = 0;
+  #endif
+***************
+*** 1436,1442 ****
+      /* The visual area is remembered for redo */
+      static int           redo_VIsual_mode = NUL; /* 'v', 'V', or Ctrl-V */
+      static linenr_T redo_VIsual_line_count; /* number of lines */
+!     static colnr_T  redo_VIsual_col;     /* number of cols or end column */
+      static long          redo_VIsual_count;      /* count for Visual operator */
+  # ifdef FEAT_VIRTUALEDIT
+      int                  include_line_break = FALSE;
+--- 1436,1442 ----
+      /* The visual area is remembered for redo */
+      static int           redo_VIsual_mode = NUL; /* 'v', 'V', or Ctrl-V */
+      static linenr_T redo_VIsual_line_count; /* number of lines */
+!     static colnr_T  redo_VIsual_vcol;            /* number of cols or end column */
+      static long          redo_VIsual_count;      /* count for Visual operator */
+  # ifdef FEAT_VIRTUALEDIT
+      int                  include_line_break = FALSE;
+***************
+*** 1549,1570 ****
+  #ifdef FEAT_VISUAL
+       if (redo_VIsual_busy)
+       {
+           oap->start = curwin->w_cursor;
+           curwin->w_cursor.lnum += redo_VIsual_line_count - 1;
+           if (curwin->w_cursor.lnum > curbuf->b_ml.ml_line_count)
+               curwin->w_cursor.lnum = curbuf->b_ml.ml_line_count;
+           VIsual_mode = redo_VIsual_mode;
+!          if (VIsual_mode == 'v')
+           {
+!              if (redo_VIsual_line_count <= 1)
+!                  curwin->w_cursor.col += redo_VIsual_col - 1;
+               else
+!                  curwin->w_cursor.col = redo_VIsual_col;
+!          }
+!          if (redo_VIsual_col == MAXCOL)
+!          {
+!              curwin->w_curswant = MAXCOL;
+!              coladvance((colnr_T)MAXCOL);
+           }
+           cap->count0 = redo_VIsual_count;
+           if (redo_VIsual_count != 0)
+--- 1549,1579 ----
+  #ifdef FEAT_VISUAL
+       if (redo_VIsual_busy)
+       {
++          /* Redo of an operation on a Visual area. Use the same size from
++           * redo_VIsual_line_count and redo_VIsual_vcol. */
+           oap->start = curwin->w_cursor;
+           curwin->w_cursor.lnum += redo_VIsual_line_count - 1;
+           if (curwin->w_cursor.lnum > curbuf->b_ml.ml_line_count)
+               curwin->w_cursor.lnum = curbuf->b_ml.ml_line_count;
+           VIsual_mode = redo_VIsual_mode;
+!          if (redo_VIsual_vcol == MAXCOL || VIsual_mode == 'v')
+           {
+!              if (VIsual_mode == 'v')
+!              {
+!                  if (redo_VIsual_line_count <= 1)
+!                  {
+!                      validate_virtcol();
+!                      curwin->w_curswant =
+!                                   curwin->w_virtcol + redo_VIsual_vcol - 1;
+!                  }
+!                  else
+!                      curwin->w_curswant = redo_VIsual_vcol;
+!              }
+               else
+!              {
+!                  curwin->w_curswant = MAXCOL;
+!              }
+!              coladvance(curwin->w_curswant);
+           }
+           cap->count0 = redo_VIsual_count;
+           if (redo_VIsual_count != 0)
+***************
+*** 1710,1716 ****
+                   }
+               }
+               else if (redo_VIsual_busy)
+!                  oap->end_vcol = oap->start_vcol + redo_VIsual_col - 1;
+               /*
+                * Correct oap->end.col and oap->start.col to be the
+                * upper-left and lower-right corner of the block area.
+--- 1719,1725 ----
+                   }
+               }
+               else if (redo_VIsual_busy)
+!                  oap->end_vcol = oap->start_vcol + redo_VIsual_vcol - 1;
+               /*
+                * Correct oap->end.col and oap->start.col to be the
+                * upper-left and lower-right corner of the block area.
+***************
+*** 1735,1747 ****
+                */
+               resel_VIsual_mode = VIsual_mode;
+               if (curwin->w_curswant == MAXCOL)
+!                  resel_VIsual_col = MAXCOL;
+!              else if (VIsual_mode == Ctrl_V)
+!                  resel_VIsual_col = oap->end_vcol - oap->start_vcol + 1;
+!              else if (oap->line_count > 1)
+!                  resel_VIsual_col = oap->end.col;
+               else
+!                  resel_VIsual_col = oap->end.col - oap->start.col + 1;
+               resel_VIsual_line_count = oap->line_count;
+           }
+  
+--- 1744,1765 ----
+                */
+               resel_VIsual_mode = VIsual_mode;
+               if (curwin->w_curswant == MAXCOL)
+!                  resel_VIsual_vcol = MAXCOL;
+               else
+!              {
+!                  if (VIsual_mode != Ctrl_V)
+!                      getvvcol(curwin, &(oap->end),
+!                                                NULL, NULL, &oap->end_vcol);
+!                  if (VIsual_mode == Ctrl_V || oap->line_count <= 1)
+!                  {
+!                      if (VIsual_mode != Ctrl_V)
+!                          getvvcol(curwin, &(oap->start),
+!                                              &oap->start_vcol, NULL, NULL);
+!                      resel_VIsual_vcol = oap->end_vcol - oap->start_vcol + 1;
+!                  }
+!                  else
+!                      resel_VIsual_vcol = oap->end_vcol;
+!              }
+               resel_VIsual_line_count = oap->line_count;
+           }
+  
+***************
+*** 1769,1775 ****
+               if (!redo_VIsual_busy)
+               {
+                   redo_VIsual_mode = resel_VIsual_mode;
+!                  redo_VIsual_col = resel_VIsual_col;
+                   redo_VIsual_line_count = resel_VIsual_line_count;
+                   redo_VIsual_count = cap->count0;
+               }
+--- 1787,1793 ----
+               if (!redo_VIsual_busy)
+               {
+                   redo_VIsual_mode = resel_VIsual_mode;
+!                  redo_VIsual_vcol = resel_VIsual_vcol;
+                   redo_VIsual_line_count = resel_VIsual_line_count;
+                   redo_VIsual_count = cap->count0;
+               }
+***************
+*** 7631,7642 ****
+           if (VIsual_mode == 'v')
+           {
+               if (resel_VIsual_line_count <= 1)
+!                  curwin->w_cursor.col += resel_VIsual_col * cap->count0 - 1;
+               else
+!                  curwin->w_cursor.col = resel_VIsual_col;
+!              check_cursor_col();
+           }
+!          if (resel_VIsual_col == MAXCOL)
+           {
+               curwin->w_curswant = MAXCOL;
+               coladvance((colnr_T)MAXCOL);
+--- 7649,7664 ----
+           if (VIsual_mode == 'v')
+           {
+               if (resel_VIsual_line_count <= 1)
+!              {
+!                  validate_virtcol();
+!                  curwin->w_curswant = curwin->w_virtcol
+!                                      + resel_VIsual_vcol * cap->count0 - 1;
+!              }
+               else
+!                  curwin->w_curswant = resel_VIsual_vcol;
+!              coladvance(curwin->w_curswant);
+           }
+!          if (resel_VIsual_vcol == MAXCOL)
+           {
+               curwin->w_curswant = MAXCOL;
+               coladvance((colnr_T)MAXCOL);
+***************
+*** 7645,7651 ****
+           {
+               validate_virtcol();
+               curwin->w_curswant = curwin->w_virtcol
+!                                       + resel_VIsual_col * cap->count0 - 1;
+               coladvance(curwin->w_curswant);
+           }
+           else
+--- 7667,7673 ----
+           {
+               validate_virtcol();
+               curwin->w_curswant = curwin->w_virtcol
+!                                      + resel_VIsual_vcol * cap->count0 - 1;
+               coladvance(curwin->w_curswant);
+           }
+           else
+*** ../vim-7.3.332/src/version.c       2011-10-04 18:03:43.000000000 +0200
+--- src/version.c      2011-10-04 21:05:44.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     333,
+  /**/
+
+-- 
+It was recently discovered that research causes cancer in rats.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.334.patch0 b/vim/patches/vim-7.3.334.patch0
new file mode 100644 (file)
index 0000000..85d5b16
--- /dev/null
@@ -0,0 +1,58 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.334
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.334
+Problem:    Latest MingW about XSUBPP referencing itself. (Gongqian Li)
+Solution:   Rename the first use to XSUBPPTRY.
+Files:     src/Make_ming.mak
+
+
+*** ../vim-7.3.333/src/Make_ming.mak   2011-09-30 16:56:00.000000000 +0200
+--- src/Make_ming.mak  2011-10-09 14:23:06.000000000 +0200
+***************
+*** 108,117 ****
+  # on NT, it's here:
+  PERLLIB=$(PERL)/lib
+  PERLLIBS=$(PERLLIB)/Core
+! XSUBPP=$(PERLLIB)/ExtUtils/xsubpp
+! XSUBPP_EXISTS=$(shell perl -e "print 1 unless -e '$(XSUBPP)'")
+  ifeq "$(XSUBPP_EXISTS)" ""
+! XSUBPP=perl $(XSUBPP)
+  else
+  XSUBPP=xsubpp
+  endif
+--- 108,117 ----
+  # on NT, it's here:
+  PERLLIB=$(PERL)/lib
+  PERLLIBS=$(PERLLIB)/Core
+! XSUBPPTRY=$(PERLLIB)/ExtUtils/xsubpp
+! XSUBPP_EXISTS=$(shell perl -e "print 1 unless -e '$(XSUBPPTRY)'")
+  ifeq "$(XSUBPP_EXISTS)" ""
+! XSUBPP=perl $(XSUBPPTRY)
+  else
+  XSUBPP=xsubpp
+  endif
+*** ../vim-7.3.333/src/version.c       2011-10-04 21:22:40.000000000 +0200
+--- src/version.c      2011-10-12 14:10:20.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     334,
+  /**/
+
+-- 
+Q: Should I clean my house or work on Vim?
+A: Whatever contains more bugs.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.335.patch0 b/vim/patches/vim-7.3.335.patch0
new file mode 100644 (file)
index 0000000..dc1cc56
--- /dev/null
@@ -0,0 +1,48 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.335
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.335
+Problem:    When 'imdisable' is reset from an autocommand in Insert mode it
+           doesn't take effect.
+Solution:   Call im_set_active() in Insert mode. (Taro Muraoka)
+Files:     src/option.c
+
+
+*** ../vim-7.3.334/src/option.c        2011-09-21 13:40:13.000000000 +0200
+--- src/option.c       2011-10-12 14:09:46.000000000 +0200
+***************
+*** 7806,7811 ****
+--- 7806,7815 ----
+       /* Only de-activate it here, it will be enabled when changing mode. */
+       if (p_imdisable)
+           im_set_active(FALSE);
++      else if (State & INSERT)
++          /* When the option is set from an autocommand, it may need to take
++           * effect right away. */
++          im_set_active(curbuf->b_p_iminsert == B_IMODE_IM);
+      }
+  #endif
+  
+*** ../vim-7.3.334/src/version.c       2011-10-12 14:11:43.000000000 +0200
+--- src/version.c      2011-10-12 16:56:30.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     335,
+  /**/
+
+-- 
+Time is money.  Especially if you make clocks.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.336.patch0 b/vim/patches/vim-7.3.336.patch0
new file mode 100644 (file)
index 0000000..902f578
--- /dev/null
@@ -0,0 +1,1100 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.336
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.336
+Problem:    When a tags file specifies an encoding different from 'enc' it
+           may hang and using a pattern doesn't work.
+Solution:   Convert the whole line.  Continue reading the header after the
+           SORT tag.  Add test83. (Yukihiro Nakadaira)
+Files:     src/tag.c, src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak,
+           src/testdir/Make_ming.mak, src/testdir/Make_os2.mak,
+           src/testdir/Make_vms.mms, src/testdir/Makefile,
+           src/testdir/test83-tags2, src/testdir/test83-tags3,
+           src/testdir/test83.in, src/testdir/test83.ok
+
+
+*** ../vim-7.3.335/src/tag.c   2011-04-11 21:35:03.000000000 +0200
+--- src/tag.c  2011-10-12 19:51:04.000000000 +0200
+***************
+*** 1277,1282 ****
+--- 1277,1283 ----
+  {
+      FILE       *fp;
+      char_u     *lbuf;                        /* line buffer */
++     int              lbuf_size = LSIZE;      /* length of lbuf */
+      char_u     *tag_fname;           /* name of tag file */
+      tagname_T        tn;                     /* info for get_tagfname() */
+      int              first_file;             /* trying first tag file */
+***************
+*** 1291,1296 ****
+--- 1292,1298 ----
+      char_u   *s;
+      int              i;
+  #ifdef FEAT_TAG_BINS
++     int              tag_file_sorted = NUL;  /* !_TAG_FILE_SORTED value */
+      struct tag_search_info   /* Binary search file offsets */
+      {
+       off_t   low_offset;     /* offset for first char of first line that
+***************
+*** 1360,1372 ****
+      char_u   *saved_pat = NULL;              /* copy of pat[] */
+  #endif
+  
+-     /* Use two sets of variables for the pattern: "orgpat" holds the values
+-      * for the original pattern and "convpat" converted from 'encoding' to
+-      * encoding of the tags file.  "pats" point to either one of these. */
+-     pat_T    *pats;
+      pat_T    orgpat;                 /* holds unconverted pattern info */
+  #ifdef FEAT_MBYTE
+-     pat_T    convpat;                /* holds converted pattern info */
+      vimconv_T        vimconv;
+  #endif
+  
+--- 1362,1369 ----
+***************
+*** 1390,1396 ****
+  
+      help_save = curbuf->b_help;
+      orgpat.pat = pat;
+-     pats = &orgpat;
+  #ifdef FEAT_MBYTE
+      vimconv.vc_type = CONV_NONE;
+  #endif
+--- 1387,1392 ----
+***************
+*** 1398,1404 ****
+  /*
+   * Allocate memory for the buffers that are used
+   */
+!     lbuf = alloc(LSIZE);
+      tag_fname = alloc(MAXPATHL + 1);
+  #ifdef FEAT_EMACS_TAGS
+      ebuf = alloc(LSIZE);
+--- 1394,1400 ----
+  /*
+   * Allocate memory for the buffers that are used
+   */
+!     lbuf = alloc(lbuf_size);
+      tag_fname = alloc(MAXPATHL + 1);
+  #ifdef FEAT_EMACS_TAGS
+      ebuf = alloc(LSIZE);
+***************
+*** 1424,1453 ****
+      if (help_only)                           /* want tags from help file */
+       curbuf->b_help = TRUE;                  /* will be restored later */
+  
+!     pats->len = (int)STRLEN(pat);
+  #ifdef FEAT_MULTI_LANG
+      if (curbuf->b_help)
+      {
+       /* When "@ab" is specified use only the "ab" language, otherwise
+        * search all languages. */
+!      if (pats->len > 3 && pat[pats->len - 3] == '@'
+!                                        && ASCII_ISALPHA(pat[pats->len - 2])
+!                                       && ASCII_ISALPHA(pat[pats->len - 1]))
+       {
+!          saved_pat = vim_strnsave(pat, pats->len - 3);
+           if (saved_pat != NULL)
+           {
+!              help_lang_find = &pat[pats->len - 2];
+!              pats->pat = saved_pat;
+!              pats->len -= 3;
+           }
+       }
+      }
+  #endif
+!     if (p_tl != 0 && pats->len > p_tl)               /* adjust for 'taglength' */
+!      pats->len = p_tl;
+  
+!     prepare_pats(pats, has_re);
+  
+  #ifdef FEAT_TAG_BINS
+      /* This is only to avoid a compiler warning for using search_info
+--- 1420,1449 ----
+      if (help_only)                           /* want tags from help file */
+       curbuf->b_help = TRUE;                  /* will be restored later */
+  
+!     orgpat.len = (int)STRLEN(pat);
+  #ifdef FEAT_MULTI_LANG
+      if (curbuf->b_help)
+      {
+       /* When "@ab" is specified use only the "ab" language, otherwise
+        * search all languages. */
+!      if (orgpat.len > 3 && pat[orgpat.len - 3] == '@'
+!                                        && ASCII_ISALPHA(pat[orgpat.len - 2])
+!                                       && ASCII_ISALPHA(pat[orgpat.len - 1]))
+       {
+!          saved_pat = vim_strnsave(pat, orgpat.len - 3);
+           if (saved_pat != NULL)
+           {
+!              help_lang_find = &pat[orgpat.len - 2];
+!              orgpat.pat = saved_pat;
+!              orgpat.len -= 3;
+           }
+       }
+      }
+  #endif
+!     if (p_tl != 0 && orgpat.len > p_tl)              /* adjust for 'taglength' */
+!      orgpat.len = p_tl;
+  
+!     prepare_pats(&orgpat, has_re);
+  
+  #ifdef FEAT_TAG_BINS
+      /* This is only to avoid a compiler warning for using search_info
+***************
+*** 1466,1478 ****
+       * Only ignore case when TAG_NOIC not used or 'ignorecase' set.
+       */
+  #ifdef FEAT_TAG_BINS
+!     pats->regmatch.rm_ic = ((p_ic || !noic)
+!                              && (findall || pats->headlen == 0 || !p_tbs));
+      for (round = 1; round <= 2; ++round)
+      {
+!       linear = (pats->headlen == 0 || !p_tbs || round == 2);
+  #else
+!       pats->regmatch.rm_ic = (p_ic || !noic);
+  #endif
+  
+        /*
+--- 1462,1474 ----
+       * Only ignore case when TAG_NOIC not used or 'ignorecase' set.
+       */
+  #ifdef FEAT_TAG_BINS
+!     orgpat.regmatch.rm_ic = ((p_ic || !noic)
+!                              && (findall || orgpat.headlen == 0 || !p_tbs));
+      for (round = 1; round <= 2; ++round)
+      {
+!       linear = (orgpat.headlen == 0 || !p_tbs || round == 2);
+  #else
+!       orgpat.regmatch.rm_ic = (p_ic || !noic);
+  #endif
+  
+        /*
+***************
+*** 1701,1706 ****
+--- 1697,1732 ----
+           }
+  line_read_in:
+  
++ #ifdef FEAT_MBYTE
++          if (vimconv.vc_type != CONV_NONE)
++          {
++              char_u  *conv_line;
++              int     len;
++ 
++              /* Convert every line.  Converting the pattern from 'enc' to
++               * the tags file encoding doesn't work, because characters are
++               * not recognized. */
++              conv_line = string_convert(&vimconv, lbuf, NULL);
++              if (conv_line != NULL)
++              {
++                  /* Copy or swap lbuf and conv_line. */
++                  len = (int)STRLEN(conv_line) + 1;
++                  if (len > lbuf_size)
++                  {
++                      vim_free(lbuf);
++                      lbuf = conv_line;
++                      lbuf_size = len;
++                  }
++                  else
++                  {
++                      STRCPY(lbuf, conv_line);
++                      vim_free(conv_line);
++                  }
++              }
++          }
++ #endif
++ 
++ 
+  #ifdef FEAT_EMACS_TAGS
+           /*
+            * Emacs tags line with CTRL-L: New file name on next line.
+***************
+*** 1770,1775 ****
+--- 1796,1828 ----
+            */
+           if (state == TS_START)
+           {
++              if (STRNCMP(lbuf, "!_TAG_", 6) <= 0)
++              {
++                  /*
++                   * Read header line.
++                   */
++ #ifdef FEAT_TAG_BINS
++                  if (STRNCMP(lbuf, "!_TAG_FILE_SORTED\t", 18) == 0)
++                      tag_file_sorted = lbuf[18];
++ #endif
++ #ifdef FEAT_MBYTE
++                  if (STRNCMP(lbuf, "!_TAG_FILE_ENCODING\t", 20) == 0)
++                  {
++                      /* Prepare to convert every line from the specified
++                       * encoding to 'encoding'. */
++                      for (p = lbuf + 20; *p > ' ' && *p < 127; ++p)
++                          ;
++                      *p = NUL;
++                      convert_setup(&vimconv, lbuf + 20, p_enc);
++                  }
++ #endif
++ 
++                  /* Read the next line.  Unrecognized flags are ignored. */
++                  continue;
++              }
++ 
++              /* Headers ends. */
++ 
+  #ifdef FEAT_TAG_BINS
+               /*
+                * When there is no tag head, or ignoring case, need to do a
+***************
+*** 1786,1809 ****
+               if (linear)
+  # endif
+                   state = TS_LINEAR;
+!              else if (STRNCMP(lbuf, "!_TAG_", 6) > 0)
+                   state = TS_BINARY;
+!              else if (STRNCMP(lbuf, "!_TAG_FILE_SORTED\t", 18) == 0)
+!              {
+!                  /* Check sorted flag */
+!                  if (lbuf[18] == '1')
+                       state = TS_BINARY;
+!                  else if (lbuf[18] == '2')
+!                  {
+!                      state = TS_BINARY;
+!                      sortic = TRUE;
+!                      pats->regmatch.rm_ic = (p_ic || !noic);
+!                  }
+!                  else
+!                      state = TS_LINEAR;
+               }
+  
+!              if (state == TS_BINARY && pats->regmatch.rm_ic && !sortic)
+               {
+                   /* binary search won't work for ignoring case, use linear
+                    * search. */
+--- 1839,1858 ----
+               if (linear)
+  # endif
+                   state = TS_LINEAR;
+!              else if (tag_file_sorted == NUL)
+                   state = TS_BINARY;
+!              else if (tag_file_sorted == '1')
+                       state = TS_BINARY;
+!              else if (tag_file_sorted == '2')
+!              {
+!                  state = TS_BINARY;
+!                  sortic = TRUE;
+!                  orgpat.regmatch.rm_ic = (p_ic || !noic);
+               }
++              else
++                  state = TS_LINEAR;
+  
+!              if (state == TS_BINARY && orgpat.regmatch.rm_ic && !sortic)
+               {
+                   /* binary search won't work for ignoring case, use linear
+                    * search. */
+***************
+*** 1843,1882 ****
+  #endif
+           }
+  
+- #ifdef FEAT_MBYTE
+-          if (lbuf[0] == '!' && pats == &orgpat
+-                         && STRNCMP(lbuf, "!_TAG_FILE_ENCODING\t", 20) == 0)
+-          {
+-              /* Convert the search pattern from 'encoding' to the
+-               * specified encoding. */
+-              for (p = lbuf + 20; *p > ' ' && *p < 127; ++p)
+-                  ;
+-              *p = NUL;
+-              convert_setup(&vimconv, p_enc, lbuf + 20);
+-              if (vimconv.vc_type != CONV_NONE)
+-              {
+-                  convpat.pat = string_convert(&vimconv, pats->pat, NULL);
+-                  if (convpat.pat != NULL)
+-                  {
+-                      pats = &convpat;
+-                      pats->len = (int)STRLEN(pats->pat);
+-                      prepare_pats(pats, has_re);
+-                      pats->regmatch.rm_ic = orgpat.regmatch.rm_ic;
+-                  }
+-              }
+- 
+-              /* Prepare for converting a match the other way around. */
+-              convert_setup(&vimconv, lbuf + 20, p_enc);
+-              continue;
+-          }
+- #endif
+- 
+           /*
+            * Figure out where the different strings are in this line.
+            * For "normal" tags: Do a quick check if the tag matches.
+            * This speeds up tag searching a lot!
+            */
+!          if (pats->headlen
+  #ifdef FEAT_EMACS_TAGS
+                           && !is_etag
+  #endif
+--- 1892,1903 ----
+  #endif
+           }
+  
+           /*
+            * Figure out where the different strings are in this line.
+            * For "normal" tags: Do a quick check if the tag matches.
+            * This speeds up tag searching a lot!
+            */
+!          if (orgpat.headlen
+  #ifdef FEAT_EMACS_TAGS
+                           && !is_etag
+  #endif
+***************
+*** 1933,1941 ****
+               cmplen = (int)(tagp.tagname_end - tagp.tagname);
+               if (p_tl != 0 && cmplen > p_tl)     /* adjust for 'taglength' */
+                   cmplen = p_tl;
+!              if (has_re && pats->headlen < cmplen)
+!                  cmplen = pats->headlen;
+!              else if (state == TS_LINEAR && pats->headlen != cmplen)
+                   continue;
+  
+  #ifdef FEAT_TAG_BINS
+--- 1954,1962 ----
+               cmplen = (int)(tagp.tagname_end - tagp.tagname);
+               if (p_tl != 0 && cmplen > p_tl)     /* adjust for 'taglength' */
+                   cmplen = p_tl;
+!              if (has_re && orgpat.headlen < cmplen)
+!                  cmplen = orgpat.headlen;
+!              else if (state == TS_LINEAR && orgpat.headlen != cmplen)
+                   continue;
+  
+  #ifdef FEAT_TAG_BINS
+***************
+*** 1954,1963 ****
+                    * Compare the current tag with the searched tag.
+                    */
+                   if (sortic)
+!                      tagcmp = tag_strnicmp(tagp.tagname, pats->head,
+                                                             (size_t)cmplen);
+                   else
+!                      tagcmp = STRNCMP(tagp.tagname, pats->head, cmplen);
+  
+                   /*
+                    * A match with a shorter tag means to search forward.
+--- 1975,1984 ----
+                    * Compare the current tag with the searched tag.
+                    */
+                   if (sortic)
+!                      tagcmp = tag_strnicmp(tagp.tagname, orgpat.head,
+                                                             (size_t)cmplen);
+                   else
+!                      tagcmp = STRNCMP(tagp.tagname, orgpat.head, cmplen);
+  
+                   /*
+                    * A match with a shorter tag means to search forward.
+***************
+*** 1965,1973 ****
+                    */
+                   if (tagcmp == 0)
+                   {
+!                      if (cmplen < pats->headlen)
+                           tagcmp = -1;
+!                      else if (cmplen > pats->headlen)
+                           tagcmp = 1;
+                   }
+  
+--- 1986,1994 ----
+                    */
+                   if (tagcmp == 0)
+                   {
+!                      if (cmplen < orgpat.headlen)
+                           tagcmp = -1;
+!                      else if (cmplen > orgpat.headlen)
+                           tagcmp = 1;
+                   }
+  
+***************
+*** 2011,2017 ****
+               }
+               else if (state == TS_SKIP_BACK)
+               {
+!                  if (MB_STRNICMP(tagp.tagname, pats->head, cmplen) != 0)
+                       state = TS_STEP_FORWARD;
+                   else
+                       /* Have to skip back more.  Restore the curr_offset
+--- 2032,2038 ----
+               }
+               else if (state == TS_SKIP_BACK)
+               {
+!                  if (MB_STRNICMP(tagp.tagname, orgpat.head, cmplen) != 0)
+                       state = TS_STEP_FORWARD;
+                   else
+                       /* Have to skip back more.  Restore the curr_offset
+***************
+*** 2021,2027 ****
+               }
+               else if (state == TS_STEP_FORWARD)
+               {
+!                  if (MB_STRNICMP(tagp.tagname, pats->head, cmplen) != 0)
+                   {
+                       if ((off_t)ftell(fp) > search_info.match_offset)
+                           break;      /* past last match */
+--- 2042,2048 ----
+               }
+               else if (state == TS_STEP_FORWARD)
+               {
+!                  if (MB_STRNICMP(tagp.tagname, orgpat.head, cmplen) != 0)
+                   {
+                       if ((off_t)ftell(fp) > search_info.match_offset)
+                           break;      /* past last match */
+***************
+*** 2032,2038 ****
+               else
+  #endif
+                   /* skip this match if it can't match */
+!                  if (MB_STRNICMP(tagp.tagname, pats->head, cmplen) != 0)
+                   continue;
+  
+               /*
+--- 2053,2059 ----
+               else
+  #endif
+                   /* skip this match if it can't match */
+!                  if (MB_STRNICMP(tagp.tagname, orgpat.head, cmplen) != 0)
+                   continue;
+  
+               /*
+***************
+*** 2083,2123 ****
+           if (p_tl != 0 && cmplen > p_tl)         /* adjust for 'taglength' */
+               cmplen = p_tl;
+           /* if tag length does not match, don't try comparing */
+!          if (pats->len != cmplen)
+               match = FALSE;
+           else
+           {
+!              if (pats->regmatch.rm_ic)
+               {
+!                  match = (MB_STRNICMP(tagp.tagname, pats->pat, cmplen) == 0);
+                   if (match)
+!                      match_no_ic = (STRNCMP(tagp.tagname, pats->pat,
+                                                               cmplen) == 0);
+               }
+               else
+!                  match = (STRNCMP(tagp.tagname, pats->pat, cmplen) == 0);
+           }
+  
+           /*
+            * Has a regexp: Also find tags matching regexp.
+            */
+           match_re = FALSE;
+!          if (!match && pats->regmatch.regprog != NULL)
+           {
+               int     cc;
+  
+               cc = *tagp.tagname_end;
+               *tagp.tagname_end = NUL;
+!              match = vim_regexec(&pats->regmatch, tagp.tagname, (colnr_T)0);
+               if (match)
+               {
+!                  matchoff = (int)(pats->regmatch.startp[0] - tagp.tagname);
+!                  if (pats->regmatch.rm_ic)
+                   {
+!                      pats->regmatch.rm_ic = FALSE;
+!                      match_no_ic = vim_regexec(&pats->regmatch, tagp.tagname,
+                                                                 (colnr_T)0);
+!                      pats->regmatch.rm_ic = TRUE;
+                   }
+               }
+               *tagp.tagname_end = cc;
+--- 2104,2144 ----
+           if (p_tl != 0 && cmplen > p_tl)         /* adjust for 'taglength' */
+               cmplen = p_tl;
+           /* if tag length does not match, don't try comparing */
+!          if (orgpat.len != cmplen)
+               match = FALSE;
+           else
+           {
+!              if (orgpat.regmatch.rm_ic)
+               {
+!                  match = (MB_STRNICMP(tagp.tagname, orgpat.pat, cmplen) == 0);
+                   if (match)
+!                      match_no_ic = (STRNCMP(tagp.tagname, orgpat.pat,
+                                                               cmplen) == 0);
+               }
+               else
+!                  match = (STRNCMP(tagp.tagname, orgpat.pat, cmplen) == 0);
+           }
+  
+           /*
+            * Has a regexp: Also find tags matching regexp.
+            */
+           match_re = FALSE;
+!          if (!match && orgpat.regmatch.regprog != NULL)
+           {
+               int     cc;
+  
+               cc = *tagp.tagname_end;
+               *tagp.tagname_end = NUL;
+!              match = vim_regexec(&orgpat.regmatch, tagp.tagname, (colnr_T)0);
+               if (match)
+               {
+!                  matchoff = (int)(orgpat.regmatch.startp[0] - tagp.tagname);
+!                  if (orgpat.regmatch.rm_ic)
+                   {
+!                      orgpat.regmatch.rm_ic = FALSE;
+!                      match_no_ic = vim_regexec(&orgpat.regmatch, tagp.tagname,
+                                                                 (colnr_T)0);
+!                      orgpat.regmatch.rm_ic = TRUE;
+                   }
+               }
+               *tagp.tagname_end = cc;
+***************
+*** 2174,2180 ****
+                       else
+                           mtt = MT_GL_OTH;
+                   }
+!                  if (pats->regmatch.rm_ic && !match_no_ic)
+                       mtt += MT_IC_OFF;
+                   if (match_re)
+                       mtt += MT_RE_OFF;
+--- 2195,2201 ----
+                       else
+                           mtt = MT_GL_OTH;
+                   }
+!                  if (orgpat.regmatch.rm_ic && !match_no_ic)
+                       mtt += MT_IC_OFF;
+                   if (match_re)
+                       mtt += MT_RE_OFF;
+***************
+*** 2187,2221 ****
+                */
+               if (ga_grow(&ga_match[mtt], 1) == OK)
+               {
+- #ifdef FEAT_MBYTE
+-                  char_u      *conv_line = NULL;
+-                  char_u      *lbuf_line = lbuf;
+- 
+-                  if (vimconv.vc_type != CONV_NONE)
+-                  {
+-                      /* Convert the tag line from the encoding of the tags
+-                       * file to 'encoding'.  Then parse the line again. */
+-                      conv_line = string_convert(&vimconv, lbuf, NULL);
+-                      if (conv_line != NULL)
+-                      {
+-                          if (parse_tag_line(conv_line,
+- #ifdef FEAT_EMACS_TAGS
+-                                      is_etag,
+- #endif
+-                                      &tagp) == OK)
+-                              lbuf_line = conv_line;
+-                          else
+-                              /* doesn't work, go back to unconverted line. */
+-                              (void)parse_tag_line(lbuf,
+- #ifdef FEAT_EMACS_TAGS
+-                                                   is_etag,
+- #endif
+-                                                   &tagp);
+-                      }
+-                  }
+- #else
+- # define lbuf_line lbuf
+- #endif
+                   if (help_only)
+                   {
+  #ifdef FEAT_MULTI_LANG
+--- 2208,2213 ----
+***************
+*** 2307,2313 ****
+                        * without Emacs tags: <mtt><tag_fname><NUL><lbuf>
+                        */
+                       len = (int)STRLEN(tag_fname)
+!                                               + (int)STRLEN(lbuf_line) + 3;
+  #ifdef FEAT_EMACS_TAGS
+                       if (is_etag)
+                           len += (int)STRLEN(ebuf) + 1;
+--- 2299,2305 ----
+                        * without Emacs tags: <mtt><tag_fname><NUL><lbuf>
+                        */
+                       len = (int)STRLEN(tag_fname)
+!                                               + (int)STRLEN(lbuf) + 3;
+  #ifdef FEAT_EMACS_TAGS
+                       if (is_etag)
+                           len += (int)STRLEN(ebuf) + 1;
+***************
+*** 2337,2343 ****
+                           else
+                               *s++ = NUL;
+  #endif
+!                          STRCPY(s, lbuf_line);
+                       }
+                   }
+  
+--- 2329,2335 ----
+                           else
+                               *s++ = NUL;
+  #endif
+!                          STRCPY(s, lbuf);
+                       }
+                   }
+  
+***************
+*** 2373,2382 ****
+                       else
+                           vim_free(mfp);
+                   }
+- #ifdef FEAT_MBYTE
+-                  /* Note: this makes the values in "tagp" invalid! */
+-                  vim_free(conv_line);
+- #endif
+               }
+               else    /* Out of memory! Just forget about the rest. */
+               {
+--- 2365,2370 ----
+***************
+*** 2415,2433 ****
+       }
+  #endif
+  #ifdef FEAT_MBYTE
+-      if (pats == &convpat)
+-      {
+-          /* Go back from converted pattern to original pattern. */
+-          vim_free(pats->pat);
+-          vim_free(pats->regmatch.regprog);
+-          orgpat.regmatch.rm_ic = pats->regmatch.rm_ic;
+-          pats = &orgpat;
+-      }
+       if (vimconv.vc_type != CONV_NONE)
+           convert_setup(&vimconv, NULL, NULL);
+  #endif
+  
+  #ifdef FEAT_TAG_BINS
+       if (sort_error)
+       {
+           EMSG2(_("E432: Tags file not sorted: %s"), tag_fname);
+--- 2403,2414 ----
+       }
+  #endif
+  #ifdef FEAT_MBYTE
+       if (vimconv.vc_type != CONV_NONE)
+           convert_setup(&vimconv, NULL, NULL);
+  #endif
+  
+  #ifdef FEAT_TAG_BINS
++      tag_file_sorted = NUL;
+       if (sort_error)
+       {
+           EMSG2(_("E432: Tags file not sorted: %s"), tag_fname);
+***************
+*** 2461,2473 ****
+  #ifdef FEAT_TAG_BINS
+        /* stop searching when already did a linear search, or when TAG_NOIC
+         * used, and 'ignorecase' not set or already did case-ignore search */
+!       if (stop_searching || linear || (!p_ic && noic) || pats->regmatch.rm_ic)
+         break;
+  # ifdef FEAT_CSCOPE
+        if (use_cscope)
+         break;
+  # endif
+!       pats->regmatch.rm_ic = TRUE;   /* try another time while ignoring case */
+      }
+  #endif
+  
+--- 2442,2454 ----
+  #ifdef FEAT_TAG_BINS
+        /* stop searching when already did a linear search, or when TAG_NOIC
+         * used, and 'ignorecase' not set or already did case-ignore search */
+!       if (stop_searching || linear || (!p_ic && noic) || orgpat.regmatch.rm_ic)
+         break;
+  # ifdef FEAT_CSCOPE
+        if (use_cscope)
+         break;
+  # endif
+!       orgpat.regmatch.rm_ic = TRUE;  /* try another time while ignoring case */
+      }
+  #endif
+  
+***************
+*** 2480,2486 ****
+  
+  findtag_end:
+      vim_free(lbuf);
+!     vim_free(pats->regmatch.regprog);
+      vim_free(tag_fname);
+  #ifdef FEAT_EMACS_TAGS
+      vim_free(ebuf);
+--- 2461,2467 ----
+  
+  findtag_end:
+      vim_free(lbuf);
+!     vim_free(orgpat.regmatch.regprog);
+      vim_free(tag_fname);
+  #ifdef FEAT_EMACS_TAGS
+      vim_free(ebuf);
+*** ../vim-7.3.335/src/testdir/Make_amiga.mak  2011-07-15 21:16:54.000000000 +0200
+--- src/testdir/Make_amiga.mak 2011-10-12 19:21:00.000000000 +0200
+***************
+*** 29,35 ****
+               test66.out test67.out test68.out test69.out test70.out \
+               test71.out test72.out test73.out test74.out test75.out \
+               test76.out test77.out test78.out test79.out test80.out \
+!              test81.out test82.out
+  
+  .SUFFIXES: .in .out
+  
+--- 29,35 ----
+               test66.out test67.out test68.out test69.out test70.out \
+               test71.out test72.out test73.out test74.out test75.out \
+               test76.out test77.out test78.out test79.out test80.out \
+!              test81.out test82.out test83.out
+  
+  .SUFFIXES: .in .out
+  
+***************
+*** 131,133 ****
+--- 131,134 ----
+  test80.out: test80.in
+  test81.out: test81.in
+  test82.out: test82.in
++ test83.out: test83.in
+*** ../vim-7.3.335/src/testdir/Make_dos.mak    2011-07-15 21:16:54.000000000 +0200
+--- src/testdir/Make_dos.mak   2011-10-12 17:39:03.000000000 +0200
+***************
+*** 29,35 ****
+               test42.out test52.out test65.out test66.out test67.out \
+               test68.out test69.out test71.out test72.out test73.out \
+               test74.out test75.out test76.out test77.out test78.out \
+!              test79.out test80.out test81.out test82.out
+  
+  SCRIPTS32 =  test50.out test70.out
+  
+--- 29,35 ----
+               test42.out test52.out test65.out test66.out test67.out \
+               test68.out test69.out test71.out test72.out test73.out \
+               test74.out test75.out test76.out test77.out test78.out \
+!              test79.out test80.out test81.out test82.out test83.out
+  
+  SCRIPTS32 =  test50.out test70.out
+  
+*** ../vim-7.3.335/src/testdir/Make_ming.mak   2011-07-15 21:16:54.000000000 +0200
+--- src/testdir/Make_ming.mak  2011-10-12 17:39:03.000000000 +0200
+***************
+*** 49,55 ****
+               test42.out test52.out test65.out test66.out test67.out \
+               test68.out test69.out test71.out test72.out test73.out \
+               test74.out test75.out test76.out test77.out test78.out \
+!              test79.out test80.out test81.out test82.out
+  
+  SCRIPTS32 =  test50.out test70.out
+  
+--- 49,55 ----
+               test42.out test52.out test65.out test66.out test67.out \
+               test68.out test69.out test71.out test72.out test73.out \
+               test74.out test75.out test76.out test77.out test78.out \
+!              test79.out test80.out test81.out test82.out test83.out
+  
+  SCRIPTS32 =  test50.out test70.out
+  
+*** ../vim-7.3.335/src/testdir/Make_os2.mak    2011-07-15 21:16:54.000000000 +0200
+--- src/testdir/Make_os2.mak   2011-10-12 17:39:03.000000000 +0200
+***************
+*** 29,35 ****
+               test66.out test67.out test68.out test69.out test70.out \
+               test71.out test72.out test73.out test74.out test75.out \
+               test76.out test77.out test78.out test79.out test80.out \
+!              test81.out test82.out
+  
+  .SUFFIXES: .in .out
+  
+--- 29,35 ----
+               test66.out test67.out test68.out test69.out test70.out \
+               test71.out test72.out test73.out test74.out test75.out \
+               test76.out test77.out test78.out test79.out test80.out \
+!              test81.out test82.out test83.out
+  
+  .SUFFIXES: .in .out
+  
+*** ../vim-7.3.335/src/testdir/Make_vms.mms    2011-07-15 21:16:54.000000000 +0200
+--- src/testdir/Make_vms.mms   2011-10-12 17:39:03.000000000 +0200
+***************
+*** 76,82 ****
+        test66.out test67.out test68.out test69.out \
+        test71.out test72.out test74.out test75.out test76.out \
+        test77.out test78.out test79.out test80.out test81.out \
+!       test82.out
+  
+  # Known problems:
+  # Test 30: a problem around mac format - unknown reason
+--- 76,82 ----
+        test66.out test67.out test68.out test69.out \
+        test71.out test72.out test74.out test75.out test76.out \
+        test77.out test78.out test79.out test80.out test81.out \
+!       test82.out test83.out
+  
+  # Known problems:
+  # Test 30: a problem around mac format - unknown reason
+*** ../vim-7.3.335/src/testdir/Makefile        2011-07-15 21:16:54.000000000 +0200
+--- src/testdir/Makefile       2011-10-12 17:39:03.000000000 +0200
+***************
+*** 26,32 ****
+               test64.out test65.out test66.out test67.out test68.out \
+               test69.out test70.out test71.out test72.out test73.out \
+               test74.out test75.out test76.out test77.out test78.out \
+!              test79.out test80.out test81.out test82.out
+  
+  SCRIPTS_GUI = test16.out
+  
+--- 26,32 ----
+               test64.out test65.out test66.out test67.out test68.out \
+               test69.out test70.out test71.out test72.out test73.out \
+               test74.out test75.out test76.out test77.out test78.out \
+!              test79.out test80.out test81.out test82.out test83.out
+  
+  SCRIPTS_GUI = test16.out
+  
+***************
+*** 72,78 ****
+                 fi \
+               else echo $* NO OUTPUT >>test.log; \
+               fi"
+!      -rm -rf X* test.ok viminfo
+  
+  test49.out: test49.vim
+  
+--- 72,78 ----
+                 fi \
+               else echo $* NO OUTPUT >>test.log; \
+               fi"
+! #    -rm -rf X* test.ok viminfo
+  
+  test49.out: test49.vim
+  
+*** ../vim-7.3.335/src/testdir/test83-tags2    2011-10-12 19:49:38.000000000 +0200
+--- src/testdir/test83-tags2   2011-10-12 19:34:15.000000000 +0200
+***************
+*** 0 ****
+--- 1,2 ----
++ !_TAG_FILE_ENCODING  cp932   //
++ \82`\82a\82b       Xtags2.txt      /\82`\82a\82b
+*** ../vim-7.3.335/src/testdir/test83-tags3    2011-10-12 19:49:38.000000000 +0200
+--- src/testdir/test83-tags3   2011-10-12 19:35:42.000000000 +0200
+***************
+*** 0 ****
+--- 1,102 ----
++ !_TAG_FILE_SORTED    1       //
++ !_TAG_FILE_ENCODING  cp932   //
++ abc1 Xtags3.txt      /\82`\82a\82b
++ abc2 Xtags3.txt      /\82`\82a\82b
++ abc3 Xtags3.txt      /\82`\82a\82b
++ abc4 Xtags3.txt      /\82`\82a\82b
++ abc5 Xtags3.txt      /\82`\82a\82b
++ abc6 Xtags3.txt      /\82`\82a\82b
++ abc7 Xtags3.txt      /\82`\82a\82b
++ abc8 Xtags3.txt      /\82`\82a\82b
++ abc9 Xtags3.txt      /\82`\82a\82b
++ abc10        Xtags3.txt      /\82`\82a\82b
++ abc11        Xtags3.txt      /\82`\82a\82b
++ abc12        Xtags3.txt      /\82`\82a\82b
++ abc13        Xtags3.txt      /\82`\82a\82b
++ abc14        Xtags3.txt      /\82`\82a\82b
++ abc15        Xtags3.txt      /\82`\82a\82b
++ abc16        Xtags3.txt      /\82`\82a\82b
++ abc17        Xtags3.txt      /\82`\82a\82b
++ abc18        Xtags3.txt      /\82`\82a\82b
++ abc19        Xtags3.txt      /\82`\82a\82b
++ abc20        Xtags3.txt      /\82`\82a\82b
++ abc21        Xtags3.txt      /\82`\82a\82b
++ abc22        Xtags3.txt      /\82`\82a\82b
++ abc23        Xtags3.txt      /\82`\82a\82b
++ abc24        Xtags3.txt      /\82`\82a\82b
++ abc25        Xtags3.txt      /\82`\82a\82b
++ abc26        Xtags3.txt      /\82`\82a\82b
++ abc27        Xtags3.txt      /\82`\82a\82b
++ abc28        Xtags3.txt      /\82`\82a\82b
++ abc29        Xtags3.txt      /\82`\82a\82b
++ abc30        Xtags3.txt      /\82`\82a\82b
++ abc31        Xtags3.txt      /\82`\82a\82b
++ abc32        Xtags3.txt      /\82`\82a\82b
++ abc33        Xtags3.txt      /\82`\82a\82b
++ abc34        Xtags3.txt      /\82`\82a\82b
++ abc35        Xtags3.txt      /\82`\82a\82b
++ abc36        Xtags3.txt      /\82`\82a\82b
++ abc37        Xtags3.txt      /\82`\82a\82b
++ abc38        Xtags3.txt      /\82`\82a\82b
++ abc39        Xtags3.txt      /\82`\82a\82b
++ abc40        Xtags3.txt      /\82`\82a\82b
++ abc41        Xtags3.txt      /\82`\82a\82b
++ abc42        Xtags3.txt      /\82`\82a\82b
++ abc43        Xtags3.txt      /\82`\82a\82b
++ abc44        Xtags3.txt      /\82`\82a\82b
++ abc45        Xtags3.txt      /\82`\82a\82b
++ abc46        Xtags3.txt      /\82`\82a\82b
++ abc47        Xtags3.txt      /\82`\82a\82b
++ abc48        Xtags3.txt      /\82`\82a\82b
++ abc49        Xtags3.txt      /\82`\82a\82b
++ abc50        Xtags3.txt      /\82`\82a\82b
++ abc51        Xtags3.txt      /\82`\82a\82b
++ abc52        Xtags3.txt      /\82`\82a\82b
++ abc53        Xtags3.txt      /\82`\82a\82b
++ abc54        Xtags3.txt      /\82`\82a\82b
++ abc55        Xtags3.txt      /\82`\82a\82b
++ abc56        Xtags3.txt      /\82`\82a\82b
++ abc57        Xtags3.txt      /\82`\82a\82b
++ abc58        Xtags3.txt      /\82`\82a\82b
++ abc59        Xtags3.txt      /\82`\82a\82b
++ abc60        Xtags3.txt      /\82`\82a\82b
++ abc61        Xtags3.txt      /\82`\82a\82b
++ abc62        Xtags3.txt      /\82`\82a\82b
++ abc63        Xtags3.txt      /\82`\82a\82b
++ abc64        Xtags3.txt      /\82`\82a\82b
++ abc65        Xtags3.txt      /\82`\82a\82b
++ abc66        Xtags3.txt      /\82`\82a\82b
++ abc67        Xtags3.txt      /\82`\82a\82b
++ abc68        Xtags3.txt      /\82`\82a\82b
++ abc69        Xtags3.txt      /\82`\82a\82b
++ abc70        Xtags3.txt      /\82`\82a\82b
++ abc71        Xtags3.txt      /\82`\82a\82b
++ abc72        Xtags3.txt      /\82`\82a\82b
++ abc73        Xtags3.txt      /\82`\82a\82b
++ abc74        Xtags3.txt      /\82`\82a\82b
++ abc75        Xtags3.txt      /\82`\82a\82b
++ abc76        Xtags3.txt      /\82`\82a\82b
++ abc77        Xtags3.txt      /\82`\82a\82b
++ abc78        Xtags3.txt      /\82`\82a\82b
++ abc79        Xtags3.txt      /\82`\82a\82b
++ abc80        Xtags3.txt      /\82`\82a\82b
++ abc81        Xtags3.txt      /\82`\82a\82b
++ abc82        Xtags3.txt      /\82`\82a\82b
++ abc83        Xtags3.txt      /\82`\82a\82b
++ abc84        Xtags3.txt      /\82`\82a\82b
++ abc85        Xtags3.txt      /\82`\82a\82b
++ abc86        Xtags3.txt      /\82`\82a\82b
++ abc87        Xtags3.txt      /\82`\82a\82b
++ abc88        Xtags3.txt      /\82`\82a\82b
++ abc89        Xtags3.txt      /\82`\82a\82b
++ abc90        Xtags3.txt      /\82`\82a\82b
++ abc91        Xtags3.txt      /\82`\82a\82b
++ abc92        Xtags3.txt      /\82`\82a\82b
++ abc93        Xtags3.txt      /\82`\82a\82b
++ abc94        Xtags3.txt      /\82`\82a\82b
++ abc95        Xtags3.txt      /\82`\82a\82b
++ abc96        Xtags3.txt      /\82`\82a\82b
++ abc97        Xtags3.txt      /\82`\82a\82b
++ abc98        Xtags3.txt      /\82`\82a\82b
++ abc99        Xtags3.txt      /\82`\82a\82b
++ abc100       Xtags3.txt      /\82`\82a\82b
+*** ../vim-7.3.335/src/testdir/test83.in       2011-10-12 19:49:38.000000000 +0200
+--- src/testdir/test83.in      2011-10-12 19:40:47.000000000 +0200
+***************
+*** 0 ****
+--- 1,76 ----
++ Tests for tag search with !_TAG_FILE_ENCODING.
++ 
++ STARTTEST
++ :so mbyte.vim
++ :if !has('iconv')
++ : e! test.ok
++ : w! test.out
++ : qa!
++ :endif
++ :set enc=utf8
++ 
++ :/^text for tags1$/,/^text for tags1$/+1w! Xtags1.txt
++ :/^text for tags2$/,/^text for tags2$/+1w! Xtags2.txt
++ :/^text for tags3$/,/^text for tags3$/+1w! Xtags3.txt
++ :/^tags1$/+1,/^tags1-end$/-1w! Xtags1
++ 
++ ggdG
++ 
++ :call setline('.', 'Results of test83')
++ 
++ :" case1:
++ :new
++ :set tags=Xtags1
++ :let v:errmsg = ''
++ :tag abcdefghijklmnopqrs
++ :if v:errmsg =~ 'E426:' || getline('.') != 'abcdefghijklmnopqrs'
++ : close
++ : put ='case1: failed'
++ :else
++ : close
++ : put ='case1: ok'
++ :endif
++ 
++ :" case2:
++ :new
++ :set tags=test83-tags2
++ :let v:errmsg = ''
++ :tag /.BC
++ :if v:errmsg =~ 'E426:' || getline('.') != 'ABC'
++ : close
++ : put ='case2: failed'
++ :else
++ : close
++ : put ='case2: ok'
++ :endif
++ 
++ :" case3:
++ :new
++ :set tags=test83-tags3
++ :let v:errmsg = ''
++ :tag abc50
++ :if v:errmsg =~ 'E426:' || getline('.') != 'ABC'
++ : close
++ : put ='case3: failed'
++ :else
++ : close
++ : put ='case3: ok'
++ :endif
++ :close
++ 
++ :wq! test.out
++ ENDTEST
++ 
++ text for tags1
++ abcdefghijklmnopqrs
++ 
++ text for tags2
++ ï¼¡ï¼¢ï¼£
++ 
++ text for tags3
++ ï¼¡ï¼¢ï¼£
++ 
++ tags1
++ !_TAG_FILE_ENCODING  utf-8   //
++ abcdefghijklmnopqrs  Xtags1.txt      /abcdefghijklmnopqrs
++ tags1-end
+*** ../vim-7.3.335/src/testdir/test83.ok       2011-10-12 19:49:38.000000000 +0200
+--- src/testdir/test83.ok      2011-10-12 17:39:03.000000000 +0200
+***************
+*** 0 ****
+--- 1,4 ----
++ Results of test83
++ case1: ok
++ case2: ok
++ case3: ok
+*** ../vim-7.3.335/src/version.c       2011-10-12 16:57:07.000000000 +0200
+--- src/version.c      2011-10-12 19:45:46.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     336,
+  /**/
+
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+62. If your doorbell rings, you think that new mail has arrived.  And then
+    you're disappointed that it's only someone at the door.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.337.patch0 b/vim/patches/vim-7.3.337.patch0
new file mode 100644 (file)
index 0000000..a2aeb04
--- /dev/null
@@ -0,0 +1,58 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.337
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.337 (after 7.3.295)
+Problem:    Screen doesn't update after resizing the xterm until a character
+           is typed.
+Solution:   When the select call is interrupted check do_resize. (Taylor
+           Hedberg)
+Files:     src/os_unix.c
+
+
+*** ../vim-7.3.336/src/os_unix.c       2011-09-08 23:24:09.000000000 +0200
+--- src/os_unix.c      2011-10-12 20:57:15.000000000 +0200
+***************
+*** 5146,5156 ****
+--- 5146,5163 ----
+  # endif
+  # ifdef EINTR
+       if (ret == -1 && errno == EINTR)
++      {
++          /* Check whether window has been resized, EINTR may be caused by
++           * SIGWINCH. */
++          if (do_resize)
++              handle_resize();
++ 
+           /* Interrupted by a signal, need to try again.  We ignore msec
+            * here, because we do want to check even after a timeout if
+            * characters are available.  Needed for reading output of an
+            * external command after the process has finished. */
+           goto select_eintr;
++      }
+  # endif
+  # ifdef __TANDEM
+       if (ret == -1 && errno == ENOTSUP)
+*** ../vim-7.3.336/src/version.c       2011-10-12 19:53:31.000000000 +0200
+--- src/version.c      2011-10-12 21:03:47.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     337,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+64. The remote to the T.V. is missing...and you don't even care.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.338.patch0 b/vim/patches/vim-7.3.338.patch0
new file mode 100644 (file)
index 0000000..f273212
--- /dev/null
@@ -0,0 +1,100 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.338
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.338
+Problem:    Using getchar() in an expression mapping doesn't work well.
+Solution:   Don't save and restore the typeahead. (James Vega)
+Files:     src/getchar.c, src/testdir/test34.ok
+
+
+*** ../vim-7.3.337/src/getchar.c       2011-08-17 20:33:18.000000000 +0200
+--- src/getchar.c      2011-10-12 21:53:27.000000000 +0200
+***************
+*** 2460,2486 ****
+  
+                       /*
+                        * Handle ":map <expr>": evaluate the {rhs} as an
+!                       * expression.  Save and restore the typeahead so that
+!                       * getchar() can be used.  Also save and restore the
+!                       * command line for "normal :".
+                        */
+                       if (mp->m_expr)
+                       {
+-                          tasave_T    tabuf;
+                           int         save_vgetc_busy = vgetc_busy;
+  
+!                          save_typeahead(&tabuf);
+!                          if (tabuf.typebuf_valid)
+!                          {
+!                              vgetc_busy = 0;
+!                              save_m_keys = vim_strsave(mp->m_keys);
+!                              save_m_str = vim_strsave(mp->m_str);
+!                              s = eval_map_expr(save_m_str, NUL);
+!                              vgetc_busy = save_vgetc_busy;
+!                          }
+!                          else
+!                              s = NULL;
+!                          restore_typeahead(&tabuf);
+                       }
+                       else
+  #endif
+--- 2460,2477 ----
+  
+                       /*
+                        * Handle ":map <expr>": evaluate the {rhs} as an
+!                       * expression.  Also save and restore the command line
+!                       * for "normal :".
+                        */
+                       if (mp->m_expr)
+                       {
+                           int         save_vgetc_busy = vgetc_busy;
+  
+!                          vgetc_busy = 0;
+!                          save_m_keys = vim_strsave(mp->m_keys);
+!                          save_m_str = vim_strsave(mp->m_str);
+!                          s = eval_map_expr(save_m_str, NUL);
+!                          vgetc_busy = save_vgetc_busy;
+                       }
+                       else
+  #endif
+*** ../vim-7.3.337/src/testdir/test34.ok       2010-08-15 21:57:29.000000000 +0200
+--- src/testdir/test34.ok      2011-10-12 21:59:39.000000000 +0200
+***************
+*** 1,5 ****
+  xxx4asdf fail nop ok 9 333
+! XX111XX
+  ---222---
+  1. one
+  2. two
+--- 1,5 ----
+  xxx4asdf fail nop ok 9 333
+! XX111-XX
+  ---222---
+  1. one
+  2. two
+*** ../vim-7.3.337/src/version.c       2011-10-12 21:04:15.000000000 +0200
+--- src/version.c      2011-10-12 21:20:31.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     338,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+65. The last time you looked at the clock it was 11:30pm, and in what
+    seems like only a few seconds later, your sister runs past you to
+    catch her 7am school bus.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.339.patch0 b/vim/patches/vim-7.3.339.patch0
new file mode 100644 (file)
index 0000000..f108ad6
--- /dev/null
@@ -0,0 +1,57 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.339
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.339
+Problem:    "make shadow" doesn't link all test files.
+Solution:   Add a line in Makefile and Filelist.
+Files:     src/Makefile, Filelist
+
+
+*** ../vim-7.3.338/Filelist    2011-09-30 16:56:00.000000000 +0200
+--- Filelist   2011-10-16 14:00:42.000000000 +0200
+***************
+*** 81,86 ****
+--- 81,87 ----
+               src/testdir/test[0-9]*.ok \
+               src/testdir/test49.vim \
+               src/testdir/test60.vim \
++              src/testdir/test83-tags? \
+               src/proto.h \
+               src/proto/blowfish.pro \
+               src/proto/buffer.pro \
+*** ../vim-7.3.338/src/Makefile        2011-05-19 13:40:47.000000000 +0200
+--- src/Makefile       2011-10-16 13:59:40.000000000 +0200
+***************
+*** 2328,2333 ****
+--- 2328,2334 ----
+                                ../../testdir/vimrc.unix \
+                                ../../testdir/*.in \
+                                ../../testdir/*.vim \
++                               ../../testdir/test83-tags? \
+                                ../../testdir/*.ok .
+  
+  # Link needed for doing "make install" in a shadow directory.
+*** ../vim-7.3.338/src/version.c       2011-10-12 22:02:07.000000000 +0200
+--- src/version.c      2011-10-20 16:34:28.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     339,
+  /**/
+
+-- 
+From "know your smileys":
+ :-O>-o   Smiley American tourist (note big mouth and camera)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.340.patch0 b/vim/patches/vim-7.3.340.patch0
new file mode 100644 (file)
index 0000000..fb0b842
--- /dev/null
@@ -0,0 +1,62 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.340
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.340
+Problem:    When 'verbosefile' is set ftplugof.vim can give an error.
+Solution:   Only remove filetypeplugin autocommands when they exist. (Yasuhiro
+           Matsumoto)
+Files:     runtime/ftplugof.vim
+
+
+*** ../vim-7.3.339/runtime/ftplugof.vim        2010-08-15 21:57:11.000000000 +0200
+--- runtime/ftplugof.vim       2011-10-20 16:51:00.000000000 +0200
+***************
+*** 1,11 ****
+  " Vim support file to switch off loading plugins for file types
+  "
+  " Maintainer:        Bram Moolenaar <Bram@vim.org>
+! " Last Change:       2002 Apr 04
+  
+  if exists("did_load_ftplugin")
+    unlet did_load_ftplugin
+  endif
+  
+! " Remove all autocommands in the filetypeplugin group
+! silent! au! filetypeplugin *
+--- 1,13 ----
+  " Vim support file to switch off loading plugins for file types
+  "
+  " Maintainer:        Bram Moolenaar <Bram@vim.org>
+! " Last Change:       2011 Oct 20
+  
+  if exists("did_load_ftplugin")
+    unlet did_load_ftplugin
+  endif
+  
+! " Remove all autocommands in the filetypeplugin group, if any exist.
+! if exists("#filetypeplugin")
+!   silent! au! filetypeplugin *
+! endif
+*** ../vim-7.3.339/src/version.c       2011-10-20 16:35:25.000000000 +0200
+--- src/version.c      2011-10-20 18:01:18.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     340,
+  /**/
+
+-- 
+How many light bulbs does it take to change a person?
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.341.patch0 b/vim/patches/vim-7.3.341.patch0
new file mode 100644 (file)
index 0000000..6ea3860
--- /dev/null
@@ -0,0 +1,360 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.341
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.341
+Problem:    Local help files are only listed in help.txt, not in translated
+           help files.
+Solution:   Also find translated help files. (Yasuhiro Matsumoto)
+Files:     src/ex_cmds.c
+
+
+*** ../vim-7.3.340/src/ex_cmds.c       2011-09-30 17:30:27.000000000 +0200
+--- src/ex_cmds.c      2011-10-20 17:39:45.000000000 +0200
+***************
+*** 5982,5987 ****
+--- 5982,5988 ----
+      char_u   *line;
+      int              in_example = FALSE;
+      int              len;
++     char_u   *fname;
+      char_u   *p;
+      char_u   *rt;
+      int              mustfree;
+***************
+*** 6028,6151 ****
+      }
+  
+      /*
+!      * In the "help.txt" file, add the locally added help files.
+!      * This uses the very first line in the help file.
+       */
+!     if (fnamecmp(gettail(curbuf->b_fname), "help.txt") == 0)
+      {
+       for (lnum = 1; lnum < curbuf->b_ml.ml_line_count; ++lnum)
+       {
+           line = ml_get_buf(curbuf, lnum, FALSE);
+!          if (strstr((char *)line, "*local-additions*") != NULL)
+           {
+!              /* Go through all directories in 'runtimepath', skipping
+!               * $VIMRUNTIME. */
+!              p = p_rtp;
+!              while (*p != NUL)
+               {
+!                  copy_option_part(&p, NameBuff, MAXPATHL, ",");
+!                  mustfree = FALSE;
+!                  rt = vim_getenv((char_u *)"VIMRUNTIME", &mustfree);
+!                  if (fullpathcmp(rt, NameBuff, FALSE) != FPC_SAME)
+!                  {
+!                      int     fcount;
+!                      char_u  **fnames;
+!                      FILE    *fd;
+!                      char_u  *s;
+!                      int     fi;
+  #ifdef FEAT_MBYTE
+!                      vimconv_T       vc;
+!                      char_u          *cp;
+  #endif
+  
+!                      /* Find all "doc/ *.txt" files in this directory. */
+!                      add_pathsep(NameBuff);
+!                      STRCAT(NameBuff, "doc/*.txt");
+!                      if (gen_expand_wildcards(1, &NameBuff, &fcount,
+!                                           &fnames, EW_FILE|EW_SILENT) == OK
+!                              && fcount > 0)
+                       {
+!                          for (fi = 0; fi < fcount; ++fi)
+                           {
+!                              fd = mch_fopen((char *)fnames[fi], "r");
+!                              if (fd != NULL)
+                               {
+!                                  vim_fgets(IObuff, IOSIZE, fd);
+!                                  if (IObuff[0] == '*'
+!                                          && (s = vim_strchr(IObuff + 1, '*'))
+!                                                                    != NULL)
+!                                  {
+! #ifdef FEAT_MBYTE
+!                                      int     this_utf = MAYBE;
+  #endif
+!                                      /* Change tag definition to a
+!                                       * reference and remove <CR>/<NL>. */
+!                                      IObuff[0] = '|';
+!                                      *s = '|';
+!                                      while (*s != NUL)
+!                                      {
+!                                          if (*s == '\r' || *s == '\n')
+!                                              *s = NUL;
+  #ifdef FEAT_MBYTE
+!                                          /* The text is utf-8 when a byte
+!                                           * above 127 is found and no
+!                                           * illegal byte sequence is found.
+!                                           */
+!                                          if (*s >= 0x80 && this_utf != FALSE)
+!                                          {
+!                                              int     l;
+! 
+!                                              this_utf = TRUE;
+!                                              l = utf_ptr2len(s);
+!                                              if (l == 1)
+!                                                  this_utf = FALSE;
+!                                              s += l - 1;
+!                                          }
+  #endif
+!                                          ++s;
+!                                      }
+  #ifdef FEAT_MBYTE
+!                                      /* The help file is latin1 or utf-8;
+!                                       * conversion to the current
+!                                       * 'encoding' may be required. */
+!                                      vc.vc_type = CONV_NONE;
+!                                      convert_setup(&vc, (char_u *)(
+!                                                  this_utf == TRUE ? "utf-8"
+!                                                        : "latin1"), p_enc);
+!                                      if (vc.vc_type == CONV_NONE)
+!                                          /* No conversion needed. */
+!                                          cp = IObuff;
+!                                      else
+                                       {
+!                                          /* Do the conversion.  If it fails
+!                                           * use the unconverted text. */
+!                                          cp = string_convert(&vc, IObuff,
+!                                                                      NULL);
+!                                          if (cp == NULL)
+!                                              cp = IObuff;
+                                       }
+!                                      convert_setup(&vc, NULL, NULL);
+  
+!                                      ml_append(lnum, cp, (colnr_T)0, FALSE);
+!                                      if (cp != IObuff)
+!                                          vim_free(cp);
+  #else
+!                                      ml_append(lnum, IObuff, (colnr_T)0,
+!                                                                     FALSE);
+  #endif
+!                                      ++lnum;
+!                                  }
+!                                  fclose(fd);
+                               }
+                           }
+-                          FreeWild(fcount, fnames);
+                       }
+                   }
+-                  if (mustfree)
+-                      vim_free(rt);
+               }
+!              break;
+           }
+       }
+      }
+  }
+--- 6029,6215 ----
+      }
+  
+      /*
+!      * In the "help.txt" and "help.abx" file, add the locally added help
+!      * files.  This uses the very first line in the help file.
+       */
+!     fname = gettail(curbuf->b_fname);
+!     if (fnamecmp(fname, "help.txt") == 0
+! #ifdef FEAT_MULTI_LANG
+!      || (fnamencmp(fname, "help.", 5) == 0
+!          && ASCII_ISALPHA(fname[5])
+!          && ASCII_ISALPHA(fname[6])
+!          && TOLOWER_ASC(fname[7]) == 'x'
+!          && fname[8] == NUL)
+! #endif
+!      )
+      {
+       for (lnum = 1; lnum < curbuf->b_ml.ml_line_count; ++lnum)
+       {
+           line = ml_get_buf(curbuf, lnum, FALSE);
+!          if (strstr((char *)line, "*local-additions*") == NULL)
+!              continue;
+! 
+!          /* Go through all directories in 'runtimepath', skipping
+!           * $VIMRUNTIME. */
+!          p = p_rtp;
+!          while (*p != NUL)
+           {
+!              copy_option_part(&p, NameBuff, MAXPATHL, ",");
+!              mustfree = FALSE;
+!              rt = vim_getenv((char_u *)"VIMRUNTIME", &mustfree);
+!              if (fullpathcmp(rt, NameBuff, FALSE) != FPC_SAME)
+               {
+!                  int         fcount;
+!                  char_u      **fnames;
+!                  FILE        *fd;
+!                  char_u      *s;
+!                  int         fi;
+  #ifdef FEAT_MBYTE
+!                  vimconv_T   vc;
+!                  char_u      *cp;
+  #endif
+  
+!                  /* Find all "doc/ *.txt" files in this directory. */
+!                  add_pathsep(NameBuff);
+! #ifdef FEAT_MULTI_LANG
+!                  STRCAT(NameBuff, "doc/*.??[tx]");
+! #else
+!                  STRCAT(NameBuff, "doc/*.txt");
+! #endif
+!                  if (gen_expand_wildcards(1, &NameBuff, &fcount,
+!                                       &fnames, EW_FILE|EW_SILENT) == OK
+!                          && fcount > 0)
+!                  {
+! #ifdef FEAT_MULTI_LANG
+!                      int     i1;
+!                      int     i2;
+!                      char_u  *f1;
+!                      char_u  *f2;
+!                      char_u  *t1;
+!                      char_u  *e1;
+!                      char_u  *e2;
+! 
+!                      /* If foo.abx is found use it instead of foo.txt in
+!                       * the same directory. */
+!                      for (i1 = 0; i1 < fcount; ++i1)
+                       {
+!                          for (i2 = 0; i2 < fcount; ++i2)
+                           {
+!                              if (i1 == i2)
+!                                  continue;
+!                              if (fnames[i1] == NULL || fnames[i2] == NULL)
+!                                  continue;
+!                              f1 = fnames[i1];
+!                              f2 = fnames[i2];
+!                              t1 = gettail(f1);
+!                              if (fnamencmp(f1, f2, t1 - f1) != 0)
+!                                  continue;
+!                              e1 = vim_strrchr(t1, '.');
+!                              e2 = vim_strrchr(gettail(f2), '.');
+!                              if (e1 == NUL || e2 == NUL)
+!                                  continue;
+!                              if (fnamecmp(e1, ".txt") != 0
+!                                  && fnamecmp(e1, fname + 4) != 0)
+                               {
+!                                  /* Not .txt and not .abx, remove it. */
+!                                  vim_free(fnames[i1]);
+!                                  fnames[i1] = NULL;
+!                                  continue;
+!                              }
+!                              if (fnamencmp(f1, f2, e1 - f1) != 0)
+!                                  continue;
+!                              if (fnamecmp(e1, ".txt") == 0
+!                                  && fnamecmp(e2, fname + 4) == 0)
+!                              {
+!                                  /* use .abx instead of .txt */
+!                                  vim_free(fnames[i1]);
+!                                  fnames[i1] = NULL;
+!                              }
+!                          }
+!                      }
+  #endif
+!                      for (fi = 0; fi < fcount; ++fi)
+!                      {
+!                          if (fnames[fi] == NULL)
+!                              continue;
+!                          fd = mch_fopen((char *)fnames[fi], "r");
+!                          if (fd != NULL)
+!                          {
+!                              vim_fgets(IObuff, IOSIZE, fd);
+!                              if (IObuff[0] == '*'
+!                                      && (s = vim_strchr(IObuff + 1, '*'))
+!                                                                != NULL)
+!                              {
+  #ifdef FEAT_MBYTE
+!                                  int this_utf = MAYBE;
+  #endif
+!                                  /* Change tag definition to a
+!                                   * reference and remove <CR>/<NL>. */
+!                                  IObuff[0] = '|';
+!                                  *s = '|';
+!                                  while (*s != NUL)
+!                                  {
+!                                      if (*s == '\r' || *s == '\n')
+!                                          *s = NUL;
+  #ifdef FEAT_MBYTE
+!                                      /* The text is utf-8 when a byte
+!                                       * above 127 is found and no
+!                                       * illegal byte sequence is found.
+!                                       */
+!                                      if (*s >= 0x80 && this_utf != FALSE)
+                                       {
+!                                          int l;
+! 
+!                                          this_utf = TRUE;
+!                                          l = utf_ptr2len(s);
+!                                          if (l == 1)
+!                                              this_utf = FALSE;
+!                                          s += l - 1;
+                                       }
+! #endif
+!                                      ++s;
+!                                  }
+! #ifdef FEAT_MBYTE
+!                                  /* The help file is latin1 or utf-8;
+!                                   * conversion to the current
+!                                   * 'encoding' may be required. */
+!                                  vc.vc_type = CONV_NONE;
+!                                  convert_setup(&vc, (char_u *)(
+!                                              this_utf == TRUE ? "utf-8"
+!                                                    : "latin1"), p_enc);
+!                                  if (vc.vc_type == CONV_NONE)
+!                                      /* No conversion needed. */
+!                                      cp = IObuff;
+!                                  else
+!                                  {
+!                                      /* Do the conversion.  If it fails
+!                                       * use the unconverted text. */
+!                                      cp = string_convert(&vc, IObuff,
+!                                                                  NULL);
+!                                      if (cp == NULL)
+!                                          cp = IObuff;
+!                                  }
+!                                  convert_setup(&vc, NULL, NULL);
+  
+!                                  ml_append(lnum, cp, (colnr_T)0, FALSE);
+!                                  if (cp != IObuff)
+!                                      vim_free(cp);
+  #else
+!                                  ml_append(lnum, IObuff, (colnr_T)0,
+!                                                                 FALSE);
+  #endif
+!                                  ++lnum;
+                               }
++                              fclose(fd);
+                           }
+                       }
++                      FreeWild(fcount, fnames);
+                   }
+               }
+!              if (mustfree)
+!                  vim_free(rt);
+           }
++          break;
+       }
+      }
+  }
+*** ../vim-7.3.340/src/version.c       2011-10-20 18:12:27.000000000 +0200
+--- src/version.c      2011-10-20 18:13:46.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     341,
+  /**/
+
+-- 
+From "know your smileys":
+ :-)-O Smiling doctor with stethoscope
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.342.patch0 b/vim/patches/vim-7.3.342.patch0
new file mode 100644 (file)
index 0000000..2deb7e3
--- /dev/null
@@ -0,0 +1,93 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.342
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.342
+Problem:    Code not in Vim style.
+Solution:   Fix the style. (Elias Diem)
+Files:     src/os_amiga.c, src/os_mac_conv.c, src/os_win16.c
+
+
+*** ../vim-7.3.341/src/os_amiga.c      2010-08-15 21:57:27.000000000 +0200
+--- src/os_amiga.c     2011-10-20 18:19:45.000000000 +0200
+***************
+*** 1022,1028 ****
+  
+      /* insure longword alignment */
+  #ifdef __amigaos4__
+!     if(!(id = AllocDosObject(DOS_INFODATA, 0)))
+       goto out;
+  #else
+      id = (struct InfoData *)(((long)id_a + 3L) & ~3L);
+--- 1022,1028 ----
+  
+      /* insure longword alignment */
+  #ifdef __amigaos4__
+!     if (!(id = AllocDosObject(DOS_INFODATA, 0)))
+       goto out;
+  #else
+      id = (struct InfoData *)(((long)id_a + 3L) & ~3L);
+*** ../vim-7.3.341/src/os_mac_conv.c   2011-06-13 02:03:55.000000000 +0200
+--- src/os_mac_conv.c  2011-10-20 18:19:45.000000000 +0200
+***************
+*** 77,83 ****
+       *unconvlenp = 0;
+      cfstr = CFStringCreateWithBytes(NULL, ptr, len, from, 0);
+  
+!     if(cfstr == NULL)
+       fprintf(stderr, "Encoding failed\n");
+      /* When conversion failed, try excluding bytes from the end, helps when
+       * there is an incomplete byte sequence.  Only do up to 6 bytes to avoid
+--- 77,83 ----
+       *unconvlenp = 0;
+      cfstr = CFStringCreateWithBytes(NULL, ptr, len, from, 0);
+  
+!     if (cfstr == NULL)
+       fprintf(stderr, "Encoding failed\n");
+      /* When conversion failed, try excluding bytes from the end, helps when
+       * there is an incomplete byte sequence.  Only do up to 6 bytes to avoid
+*** ../vim-7.3.341/src/os_win16.c      2010-12-17 20:23:56.000000000 +0100
+--- src/os_win16.c     2011-10-20 18:19:45.000000000 +0200
+***************
+*** 243,251 ****
+       /* Wait for the command to terminate before continuing */
+       while (GetModuleUsage((HINSTANCE)h_module) > 0 && again )
+       {
+!          while( PeekMessage( &msg, NULL, 0, 0, PM_REMOVE ) && again )
+           {
+!              if(msg.message == WM_QUIT)
+  
+               {
+                   PostQuitMessage(msg.wParam);
+--- 243,251 ----
+       /* Wait for the command to terminate before continuing */
+       while (GetModuleUsage((HINSTANCE)h_module) > 0 && again )
+       {
+!          while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE) && again)
+           {
+!              if (msg.message == WM_QUIT)
+  
+               {
+                   PostQuitMessage(msg.wParam);
+*** ../vim-7.3.341/src/version.c       2011-10-20 18:17:38.000000000 +0200
+--- src/version.c      2011-10-20 18:21:43.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+  {   /* Add new patch number below this line */
++ /**/
++     342,
+  /**/
+
+-- 
+You are only young once, but you can stay immature indefinitely.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.343.patch0 b/vim/patches/vim-7.3.343.patch0
new file mode 100644 (file)
index 0000000..db62264
--- /dev/null
@@ -0,0 +1,252 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.343
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.343
+Problem:    No mouse support for urxvt.
+Solution:   Implement urxvt mouse support, also for > 252 columns.  (Yiding
+           Jia)
+Files:     src/feature.h, src/keymap.h, src/option.h, src/os_unix.c,
+           src/term.c, src/version.c
+
+
+*** ../vim-7.3.342/src/feature.h       2011-05-19 13:40:47.000000000 +0200
+--- src/feature.h      2011-10-20 21:02:15.000000000 +0200
+***************
+*** 1053,1058 ****
+--- 1053,1061 ----
+  # ifdef FEAT_BIG
+  #  define FEAT_MOUSE_DEC
+  # endif
++ # ifdef FEAT_BIG
++ #  define FEAT_MOUSE_URXVT
++ # endif
+  # if defined(FEAT_NORMAL) && (defined(MSDOS) || defined(WIN3264))
+  #  define DOS_MOUSE
+  # endif
+***************
+*** 1068,1080 ****
+  #if defined(FEAT_NORMAL) && defined(HAVE_SYSMOUSE)
+  # define FEAT_SYSMOUSE
+  #endif
+  /* Define FEAT_MOUSE when any of the above is defined or FEAT_GUI. */
+  #if !defined(FEAT_MOUSE_TTY) \
+       && (defined(FEAT_MOUSE_XTERM) \
+!          || defined(FEAT_MOUSE_NET) || defined(FEAT_MOUSE_DEC) \
+!          || defined(DOS_MOUSE) || defined(FEAT_MOUSE_GPM) \
+!          || defined(FEAT_MOUSE_JSB) || defined(FEAT_MOUSE_PTERM) \
+!          || defined(FEAT_SYSMOUSE))
+  # define FEAT_MOUSE_TTY              /* include non-GUI mouse support */
+  #endif
+  #if !defined(FEAT_MOUSE) && (defined(FEAT_MOUSE_TTY) || defined(FEAT_GUI))
+--- 1071,1093 ----
+  #if defined(FEAT_NORMAL) && defined(HAVE_SYSMOUSE)
+  # define FEAT_SYSMOUSE
+  #endif
++ 
++ /* urxvt is a small variation of mouse_xterm, and shares its code */
++ #if defined(FEAT_MOUSE_URXVT) && !defined(FEAT_MOUSE_XTERM)
++ # define FEAT_MOUSE_XTERM
++ #endif
++ 
+  /* Define FEAT_MOUSE when any of the above is defined or FEAT_GUI. */
+  #if !defined(FEAT_MOUSE_TTY) \
+       && (defined(FEAT_MOUSE_XTERM) \
+!          || defined(FEAT_MOUSE_NET) \
+!          || defined(FEAT_MOUSE_DEC) \
+!          || defined(DOS_MOUSE) \
+!          || defined(FEAT_MOUSE_GPM) \
+!          || defined(FEAT_MOUSE_JSB) \
+!          || defined(FEAT_MOUSE_PTERM) \
+!          || defined(FEAT_SYSMOUSE) \
+!          || defined(FEAT_MOUSE_URXVT))
+  # define FEAT_MOUSE_TTY              /* include non-GUI mouse support */
+  #endif
+  #if !defined(FEAT_MOUSE) && (defined(FEAT_MOUSE_TTY) || defined(FEAT_GUI))
+*** ../vim-7.3.342/src/keymap.h        2010-08-15 21:57:32.000000000 +0200
+--- src/keymap.h       2011-10-20 21:00:37.000000000 +0200
+***************
+*** 92,104 ****
+   */
+  #define KS_TEAROFF           244
+  
+! /* used for JSB term mouse */
+  #define KS_JSBTERM_MOUSE     243
+  
+! /* used a termcap entry that produces a normal character */
+  #define KS_KEY                       242
+  
+! /* Used for the qnx pterm mouse */
+  #define KS_PTERM_MOUSE               241
+  
+  /* Used for click in a tab pages label. */
+--- 92,104 ----
+   */
+  #define KS_TEAROFF           244
+  
+! /* Used for JSB term mouse. */
+  #define KS_JSBTERM_MOUSE     243
+  
+! /* Used a termcap entry that produces a normal character. */
+  #define KS_KEY                       242
+  
+! /* Used for the qnx pterm mouse. */
+  #define KS_PTERM_MOUSE               241
+  
+  /* Used for click in a tab pages label. */
+***************
+*** 107,112 ****
+--- 107,115 ----
+  /* Used for menu in a tab pages line. */
+  #define KS_TABMENU           239
+  
++ /* Used for the urxvt mouse. */
++ #define KS_URXVT_MOUSE               238
++ 
+  /*
+   * Filler used after KS_SPECIAL and others
+   */
+*** ../vim-7.3.342/src/option.h        2011-09-30 14:44:49.000000000 +0200
+--- src/option.h       2011-10-20 19:38:59.000000000 +0200
+***************
+*** 819,825 ****
+  EXTERN char_u        *p_ttym;        /* 'ttymouse' */
+  EXTERN unsigned ttym_flags;
+  # ifdef IN_OPTION_C
+! static char *(p_ttym_values[]) = {"xterm", "xterm2", "dec", "netterm", "jsbterm", "pterm", NULL};
+  # endif
+  # define TTYM_XTERM          0x01
+  # define TTYM_XTERM2         0x02
+--- 819,825 ----
+  EXTERN char_u        *p_ttym;        /* 'ttymouse' */
+  EXTERN unsigned ttym_flags;
+  # ifdef IN_OPTION_C
+! static char *(p_ttym_values[]) = {"xterm", "xterm2", "dec", "netterm", "jsbterm", "pterm", "urxvt", NULL};
+  # endif
+  # define TTYM_XTERM          0x01
+  # define TTYM_XTERM2         0x02
+***************
+*** 827,832 ****
+--- 827,833 ----
+  # define TTYM_NETTERM                0x08
+  # define TTYM_JSBTERM                0x10
+  # define TTYM_PTERM          0x20
++ # define TTYM_URXVT          0x40
+  #endif
+  EXTERN char_u        *p_udir;        /* 'undodir' */
+  EXTERN long  p_ul;           /* 'undolevels' */
+*** ../vim-7.3.342/src/os_unix.c       2011-10-12 21:04:15.000000000 +0200
+--- src/os_unix.c      2011-10-20 21:02:00.000000000 +0200
+***************
+*** 2158,2167 ****
+--- 2158,2170 ----
+   * Return non-zero when using an xterm mouse, according to 'ttymouse'.
+   * Return 1 for "xterm".
+   * Return 2 for "xterm2".
++  * Return 3 for "urxvt".
+   */
+      int
+  use_xterm_mouse()
+  {
++     if (ttym_flags == TTYM_URXVT)
++      return 3;
+      if (ttym_flags == TTYM_XTERM2)
+       return 2;
+      if (ttym_flags == TTYM_XTERM)
+***************
+*** 3318,3323 ****
+--- 3321,3337 ----
+       return;
+  
+      xterm_mouse_vers = use_xterm_mouse();
++ 
++ # ifdef FEAT_MOUSE_URXVT
++     if (ttym_flags == TTYM_URXVT) {
++      out_str_nf((char_u *)
++                 (on
++                 ? IF_EB("\033[?1015h", ESC_STR "[?1015h")
++                 : IF_EB("\033[?1015l", ESC_STR "[?1015l")));
++      ison = on;
++     }
++ # endif
++ 
+      if (xterm_mouse_vers > 0)
+      {
+       if (on) /* enable mouse events, use mouse tracking if available */
+***************
+*** 3434,3439 ****
+--- 3448,3456 ----
+  {
+  # ifdef FEAT_MOUSE_XTERM
+      if (use_xterm_mouse()
++ # ifdef FEAT_MOUSE_URXVT
++          && use_xterm_mouse() != 3
++ # endif
+  #  ifdef FEAT_GUI
+           && !gui.in_use
+  #  endif
+***************
+*** 3523,3528 ****
+--- 3540,3566 ----
+      else
+       del_mouse_termcode(KS_PTERM_MOUSE);
+  # endif
++ # ifdef FEAT_MOUSE_URXVT
++     /* same as the dec mouse */
++     if (use_xterm_mouse() == 3
++ #  ifdef FEAT_GUI
++          && !gui.in_use
++ #  endif
++          )
++     {
++      set_mouse_termcode(KS_URXVT_MOUSE, (char_u *)(term_is_8bit(T_NAME)
++                  ? IF_EB("\233", CSI_STR)
++                  : IF_EB("\033[", ESC_STR "[")));
++ 
++      if (*p_mouse != NUL)
++      {
++          mch_setmouse(FALSE);
++          setmouse();
++      }
++     }
++     else
++      del_mouse_termcode(KS_URXVT_MOUSE);
++ # endif
+  }
+  #endif
+  
+*** ../vim-7.3.342/src/version.c       2011-10-20 18:24:16.000000000 +0200
+--- src/version.c      2011-10-20 19:40:48.000000000 +0200
+***************
+*** 380,383 ****
+--- 380,388 ----
+       "-mouse_xterm",
+  # endif
++ # ifdef FEAT_MOUSE_URXVT
++      "+mouse_urxvt",
++ # else
++      "-mouse_urxvt",
++ # endif
+  #endif
+  #ifdef __QNX__
+***************
+*** 711,712 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     343,
+  /**/
+
+-- 
+Warning label on a superhero Halloween costume:
+"Caution: Cape does not enable user to fly."
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.344.patch0 b/vim/patches/vim-7.3.344.patch0
new file mode 100644 (file)
index 0000000..d2bb1db
--- /dev/null
@@ -0,0 +1,121 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.344
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.344
+Problem:    Problem with GUI startup related to XInitThreads.
+Solution:   Use read() and write() instead of fputs() and fread(). (James
+           Vega)
+Files:     src/gui.c
+
+
+*** ../vim-7.3.343/src/gui.c   2011-09-14 19:04:35.000000000 +0200
+--- src/gui.c  2011-10-20 21:23:43.000000000 +0200
+***************
+*** 212,218 ****
+      int              status;
+      int              exit_status;
+      pid_t    pid = -1;
+-     FILE     *parent_file;
+  
+      /* Setup a pipe between the child and the parent, so that the parent
+       * knows when the child has done the setsid() call and is allowed to
+--- 212,217 ----
+***************
+*** 290,308 ****
+      gui_mch_forked();
+  # endif
+  
+-     if (!pipe_error)
+-      parent_file = fdopen(pipefd[1], "w");
+-     else
+-      parent_file = NULL;
+- 
+      /* Try to start the GUI */
+      gui_attempt_start();
+  
+      /* Notify the parent */
+!     if (parent_file != NULL)
+      {
+!      fputs(gui.in_use ? "ok" : "fail", parent_file);
+!      fclose(parent_file);
+      }
+  
+      /* If we failed to start the GUI, exit now. */
+--- 289,305 ----
+      gui_mch_forked();
+  # endif
+  
+      /* Try to start the GUI */
+      gui_attempt_start();
+  
+      /* Notify the parent */
+!     if (!pipe_error)
+      {
+!      if (gui.in_use)
+!          write_eintr(pipefd[1], "ok", 3);
+!      else
+!          write_eintr(pipefd[1], "fail", 5);
+!      close(pipefd[1]);
+      }
+  
+      /* If we failed to start the GUI, exit now. */
+***************
+*** 323,339 ****
+      static int
+  gui_read_child_pipe(int fd)
+  {
+!     size_t   bytes_read;
+!     FILE     *file;
+!     char     buffer[10];
+! 
+!     file = fdopen(fd, "r");
+!     if (!file)
+       return GUI_CHILD_IO_ERROR;
+! 
+!     bytes_read = fread(buffer, sizeof(char), sizeof(buffer)-1, file);
+!     buffer[bytes_read] = '\0';
+!     fclose(file);
+      if (strcmp(buffer, "ok") == 0)
+       return GUI_CHILD_OK;
+      return GUI_CHILD_FAILED;
+--- 320,335 ----
+      static int
+  gui_read_child_pipe(int fd)
+  {
+!     long     bytes_read;
+! #define READ_BUFFER_SIZE 10
+!     char     buffer[READ_BUFFER_SIZE];
+! 
+!     bytes_read = read_eintr(fd, buffer, READ_BUFFER_SIZE - 1);
+! #undef READ_BUFFER_SIZE
+!     close(fd);
+!     if (bytes_read < 0)
+       return GUI_CHILD_IO_ERROR;
+!     buffer[bytes_read] = NUL;
+      if (strcmp(buffer, "ok") == 0)
+       return GUI_CHILD_OK;
+      return GUI_CHILD_FAILED;
+*** ../vim-7.3.343/src/version.c       2011-10-20 21:09:25.000000000 +0200
+--- src/version.c      2011-10-20 21:27:31.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     344,
+  /**/
+
+-- 
+From "know your smileys":
+ *<|:-)        Santa Claus (Ho Ho Ho)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.345.patch0 b/vim/patches/vim-7.3.345.patch0
new file mode 100644 (file)
index 0000000..99dd074
--- /dev/null
@@ -0,0 +1,48 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.345
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.345
+Problem:    When switching language with ":lang" the window title doesn't
+           change until later.
+Solution:   Update the window title right away. (Dominique Pelle)
+Files:     src/ex_cmds2.c
+
+
+*** ../vim-7.3.344/src/ex_cmds2.c      2011-06-26 04:25:24.000000000 +0200
+--- src/ex_cmds2.c     2011-10-20 21:31:09.000000000 +0200
+***************
+*** 4154,4159 ****
+--- 4154,4162 ----
+           /* Set v:lang, v:lc_time and v:ctype to the final result. */
+           set_lang_var();
+  # endif
++ # ifdef FEAT_TITLE
++          maketitle();
++ # endif
+       }
+      }
+  }
+*** ../vim-7.3.344/src/version.c       2011-10-20 21:27:57.000000000 +0200
+--- src/version.c      2011-10-20 21:38:32.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     345,
+  /**/
+
+-- 
+You can't have everything.  Where would you put it?
+               -- Steven Wright
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.346.patch0 b/vim/patches/vim-7.3.346.patch0
new file mode 100644 (file)
index 0000000..e6b1a2b
--- /dev/null
@@ -0,0 +1,143 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.346
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.346
+Problem:    It's hard to test netbeans commands.
+Solution:   Process netbeans commands after :sleep. (Xavier de Gaye)
+Files:     runtime/doc/netbeans.txt, src/ex_docmd.c, src/netbeans.c
+
+
+*** ../vim-7.3.345/runtime/doc/netbeans.txt    2010-09-29 17:26:57.000000000 +0200
+--- runtime/doc/netbeans.txt   2011-10-20 21:51:41.000000000 +0200
+***************
+*** 1,4 ****
+! *netbeans.txt*  For Vim version 7.3.  Last change: 2010 Aug 20
+  
+  
+                 VIM REFERENCE MANUAL    by Gordon Prieur et al.
+--- 1,4 ----
+! *netbeans.txt*  For Vim version 7.3.  Last change: 2011 Oct 20
+  
+  
+                 VIM REFERENCE MANUAL    by Gordon Prieur et al.
+***************
+*** 263,268 ****
+--- 263,274 ----
+  plain UTF-8 text this protocol could also be used with any other communication
+  mechanism.
+  
++ Netbeans messages are processed when Vim is idle, waiting for user input.
++ When Vim is run in non-interactive mode, for example when running an automated
++ test case that sources a Vim script, the idle loop may not be called often
++ enough. In that case, insert |sleep| commands in the Vim script. The |sleep|
++ command does invoke Netbeans messages processing.
++ 
+  6.1 Kinds of messages                |nb-messages|
+  6.2 Terms                    |nb-terms|
+  6.3 Commands                 |nb-commands|
+***************
+*** 820,826 ****
+  ==============================================================================
+  7. NetBeans commands                                 *netbeans-commands*
+  
+!                                                      *:nbstart* *E511*
+  :nbs[tart] {connection}      Start a new Netbeans session with {connection} as the
+                       socket connection parameters.  The format of
+                       {connection} is described in |netbeans-parameters|.
+--- 826,832 ----
+  ==============================================================================
+  7. NetBeans commands                                 *netbeans-commands*
+  
+!                                                      *:nbstart* *E511* *E838*
+  :nbs[tart] {connection}      Start a new Netbeans session with {connection} as the
+                       socket connection parameters.  The format of
+                       {connection} is described in |netbeans-parameters|.
+***************
+*** 833,843 ****
+                       signs.
+  
+                                                       *:nbkey*
+! :nb[key] {key}               Pass the {key} to the Vim Controller for processing
+! 
+! When a hot-key has been installed with the specialKeys command, this command
+! can be used to generate a hotkey messages to the Vim Controller. The events
+! newDotAndMark, keyCommand and keyAtPos are generated (in this order).
+  
+  
+  ==============================================================================
+--- 839,854 ----
+                       signs.
+  
+                                                       *:nbkey*
+! :nb[key] {key}               Pass the {key} to the Vim Controller for processing.
+!                      When a hot-key has been installed with the specialKeys
+!                      command, this command can be used to generate a hotkey
+!                      message to the Vim Controller.
+!                      This command can also be used to pass any text to the
+!                      Vim  Controller. It is used by Pyclewn, for example,
+!                      to build the complete set of gdb commands as Vim user
+!                      commands.
+!                      The events newDotAndMark, keyCommand and keyAtPos are
+!                      generated (in this order).
+  
+  
+  ==============================================================================
+*** ../vim-7.3.345/src/ex_docmd.c      2011-09-30 18:35:49.000000000 +0200
+--- src/ex_docmd.c     2011-10-20 21:50:06.000000000 +0200
+***************
+*** 8205,8210 ****
+--- 8205,8216 ----
+      {
+       ui_delay(msec - done > 1000L ? 1000L : msec - done, TRUE);
+       ui_breakcheck();
++ #ifdef FEAT_NETBEANS_INTG
++      /* Process the netbeans messages that may have been received in the
++       * call to ui_breakcheck() when the GUI is in use. This may occur when
++       * running a test case. */
++      netbeans_parse_messages();
++ #endif
+      }
+  }
+  
+*** ../vim-7.3.345/src/netbeans.c      2011-04-11 21:35:03.000000000 +0200
+--- src/netbeans.c     2011-10-20 21:47:17.000000000 +0200
+***************
+*** 14,19 ****
+--- 14,26 ----
+   * which are *between* characters, whereas vim uses line number
+   * and column number which are *on* characters.
+   * See ":help netbeans-protocol" for explanation.
++  *
++  * The Netbeans messages are received and queued in the gui event loop, or in
++  * the select loop when Vim runs in a terminal. These messages are processed
++  * by netbeans_parse_messages() which is invoked in the idle loop when Vim is
++  * waiting for user input. The function netbeans_parse_messages() is also
++  * called from the ":sleep" command, to allow the execution of test cases that
++  * may not invoke the idle loop.
+   */
+  
+  #include "vim.h"
+*** ../vim-7.3.345/src/version.c       2011-10-20 21:57:43.000000000 +0200
+--- src/version.c      2011-10-20 21:50:23.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     346,
+  /**/
+
+-- 
+From "know your smileys":
+ ...---...   SOS
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.347.patch0 b/vim/patches/vim-7.3.347.patch0
new file mode 100644 (file)
index 0000000..85b0feb
--- /dev/null
@@ -0,0 +1,54 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.347
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.347
+Problem:    When dropping text from a browser on Vim it receives HTML even
+           though "html" is excluded from 'clipboard'. (Andrei Avk)
+Solution:   Fix the condition for TARGET_HTML.
+Files:     src/gui_gtk_x11.c
+
+
+*** ../vim-7.3.346/src/gui_gtk_x11.c   2011-08-10 17:44:41.000000000 +0200
+--- src/gui_gtk_x11.c  2011-10-23 20:56:38.000000000 +0200
+***************
+*** 3081,3087 ****
+  
+      for (i = 0; i < (int)N_DND_TARGETS; ++i)
+      {
+!      if (!clip_html && selection_targets[i].info == TARGET_HTML)
+           n_targets--;
+       else
+           targets[j++] = dnd_targets[i];
+--- 3081,3087 ----
+  
+      for (i = 0; i < (int)N_DND_TARGETS; ++i)
+      {
+!      if (!clip_html && dnd_targets[i].info == TARGET_HTML)
+           n_targets--;
+       else
+           targets[j++] = dnd_targets[i];
+*** ../vim-7.3.346/src/version.c       2011-10-20 21:58:20.000000000 +0200
+--- src/version.c      2011-10-26 11:35:23.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     347,
+  /**/
+
+-- 
+I AM THANKFUL...
+...for a lawn that needs mowing, windows that need cleaning
+and gutters that need fixing because it means I have a home.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.348.patch0 b/vim/patches/vim-7.3.348.patch0
new file mode 100644 (file)
index 0000000..e92febb
--- /dev/null
@@ -0,0 +1,57 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.348
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.348
+Problem:    "call range(1, 947948399)" causes a crash. (ZyX)
+Solution:   Avoid a loop in the out of memory message.
+Files:     src/misc2.c
+
+
+*** ../vim-7.3.347/src/misc2.c 2011-08-19 22:28:58.000000000 +0200
+--- src/misc2.c        2011-10-26 11:17:26.000000000 +0200
+***************
+*** 1012,1019 ****
+      {
+       /* Don't hide this message */
+       emsg_silent = 0;
+!      EMSGN(_("E342: Out of memory!  (allocating %lu bytes)"), size);
+       did_outofmem_msg = TRUE;
+      }
+  }
+  
+--- 1012,1023 ----
+      {
+       /* Don't hide this message */
+       emsg_silent = 0;
+! 
+!      /* Must come first to avoid coming back here when printing the error
+!       * message fails, e.g. when setting v:errmsg. */
+       did_outofmem_msg = TRUE;
++ 
++      EMSGN(_("E342: Out of memory!  (allocating %lu bytes)"), size);
+      }
+  }
+  
+*** ../vim-7.3.347/src/version.c       2011-10-26 11:36:21.000000000 +0200
+--- src/version.c      2011-10-26 11:38:33.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     348,
+  /**/
+
+-- 
+A fool learns from his mistakes, a wise man from someone else's.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.349.patch0 b/vim/patches/vim-7.3.349.patch0
new file mode 100644 (file)
index 0000000..ac519af
--- /dev/null
@@ -0,0 +1,88 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.349
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.349
+Problem:    When running out of memory during startup trying to open a
+           swapfile will loop forever.
+Solution:   Let findswapname() set dirp to NULL if out of memory.
+Files:     src/memline.c
+
+
+*** ../vim-7.3.348/src/memline.c       2011-06-13 01:07:22.000000000 +0200
+--- src/memline.c      2011-10-26 11:26:06.000000000 +0200
+***************
+*** 621,626 ****
+--- 621,628 ----
+           break;
+       fname = findswapname(buf, &dirp, mfp->mf_fname);
+                                                   /* alloc's fname */
++      if (dirp == NULL)           /* out of memory */
++          break;
+       if (fname == NULL)          /* no file name found for this dir */
+           continue;
+  
+***************
+*** 744,749 ****
+--- 746,753 ----
+        * and creating it, another Vim creates the file.  In that case the
+        * creation will fail and we will use another directory. */
+       fname = findswapname(buf, &dirp, NULL); /* allocates fname */
++      if (dirp == NULL)
++          break;  /* out of memory */
+       if (fname == NULL)
+           continue;
+       if (mf_open_file(mfp, fname) == OK)     /* consumes fname! */
+***************
+*** 4114,4119 ****
+--- 4118,4124 ----
+   *
+   * Several names are tried to find one that does not exist
+   * Returns the name in allocated memory or NULL.
++  * When out of memory "dirp" is set to NULL.
+   *
+   * Note: If BASENAMELEN is not correct, you will get error messages for
+   *    not being able to open the swap or undo file
+***************
+*** 4157,4163 ****
+       * First allocate some memory to put the directory name in.
+       */
+      dir_name = alloc((unsigned)STRLEN(*dirp) + 1);
+!     if (dir_name != NULL)
+       (void)copy_option_part(dirp, dir_name, 31000, ",");
+  
+      /*
+--- 4162,4170 ----
+       * First allocate some memory to put the directory name in.
+       */
+      dir_name = alloc((unsigned)STRLEN(*dirp) + 1);
+!     if (dir_name == NULL)
+!      *dirp = NULL;
+!     else
+       (void)copy_option_part(dirp, dir_name, 31000, ",");
+  
+      /*
+*** ../vim-7.3.348/src/version.c       2011-10-26 11:40:56.000000000 +0200
+--- src/version.c      2011-10-26 11:43:05.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     349,
+  /**/
+
+-- 
+I AM THANKFUL...
+...for all the complaining I hear about the government
+because it means we have freedom of speech.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.350.patch0 b/vim/patches/vim-7.3.350.patch0
new file mode 100644 (file)
index 0000000..5a1f332
--- /dev/null
@@ -0,0 +1,46 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.350
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.350
+Problem:    Block of code after ":lua << EOF" may not work. (Paul Isambert)
+Solution:   Recognize the ":lua" command, skip to EOF.
+Files:     src/eval.c
+
+
+*** ../vim-7.3.349/src/eval.c  2011-09-30 18:35:49.000000000 +0200
+--- src/eval.c 2011-10-26 13:12:06.000000000 +0200
+***************
+*** 20899,20904 ****
+--- 20899,20906 ----
+                                   && (!ASCII_ISALPHA(p[2]) || p[2] == 'r'))
+                       || (p[0] == 't' && p[1] == 'c'
+                                   && (!ASCII_ISALPHA(p[2]) || p[2] == 'l'))
++                      || (p[0] == 'l' && p[1] == 'u' && p[2] == 'a'
++                                  && !ASCII_ISALPHA(p[3]))
+                       || (p[0] == 'r' && p[1] == 'u' && p[2] == 'b'
+                                   && (!ASCII_ISALPHA(p[3]) || p[3] == 'y'))
+                       || (p[0] == 'm' && p[1] == 'z'
+*** ../vim-7.3.349/src/version.c       2011-10-26 11:44:15.000000000 +0200
+--- src/version.c      2011-10-26 13:13:21.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     350,
+  /**/
+
+-- 
+From "know your smileys":
+ :-| :-|   Deja' vu!
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.351.patch0 b/vim/patches/vim-7.3.351.patch0
new file mode 100644 (file)
index 0000000..15b2194
--- /dev/null
@@ -0,0 +1,46 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.351
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.351
+Problem:    Text formatting uses start of insert position when it should not.
+           (Peter Wagenaar)
+Solution:   Do not use Insstart when intentionally formatting.
+Files:     src/edit.c
+
+
+*** ../vim-7.3.350/src/edit.c  2011-09-21 18:23:02.000000000 +0200
+--- src/edit.c 2011-10-26 16:58:21.000000000 +0200
+***************
+*** 6078,6083 ****
+--- 6078,6084 ----
+        * Stop at first entered white when 'formatoptions' has 'v'
+        */
+       while ((!fo_ins_blank && !has_format_option(FO_INS_VI))
++                  || (flags & INSCHAR_FORMAT)
+                   || curwin->w_cursor.lnum != Insstart.lnum
+                   || curwin->w_cursor.col >= Insstart.col)
+       {
+*** ../vim-7.3.350/src/version.c       2011-10-26 13:19:23.000000000 +0200
+--- src/version.c      2011-10-26 17:03:37.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     351,
+  /**/
+
+-- 
+From "know your smileys":
+ :-*   A big kiss!
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.352.patch0 b/vim/patches/vim-7.3.352.patch0
new file mode 100644 (file)
index 0000000..52842cf
--- /dev/null
@@ -0,0 +1,108 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.352
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.352
+Problem:    When completing methods dict functions and script-local functions
+           get in the way.
+Solution:   Sort function names starting with "<" to the end. (Yasuhiro
+           Matsumoto)
+Files:     src/ex_getln.c
+
+
+*** ../vim-7.3.351/src/ex_getln.c      2011-09-30 17:46:14.000000000 +0200
+--- src/ex_getln.c     2011-10-26 21:37:53.000000000 +0200
+***************
+*** 121,126 ****
+--- 121,134 ----
+  static int   ex_window __ARGS((void));
+  #endif
+  
++ #if defined(FEAT_CMDL_COMPL) || defined(PROTO)
++ static int
++ #ifdef __BORLANDC__
++ _RTLENTRYF
++ #endif
++ sort_func_compare __ARGS((const void *s1, const void *s2));
++ #endif
++ 
+  /*
+   * getcmdline() - accept a command line starting with firstc.
+   *
+***************
+*** 3286,3291 ****
+--- 3294,3317 ----
+      return check_abbr(c, ccline.cmdbuff, ccline.cmdpos, 0);
+  }
+  
++ #if defined(FEAT_CMDL_COMPL) || defined(PROTO)
++     static int
++ #ifdef __BORLANDC__
++ _RTLENTRYF
++ #endif
++ sort_func_compare(s1, s2)
++     const void *s1;
++     const void *s2;
++ {
++     char_u *p1 = *(char_u **)s1;
++     char_u *p2 = *(char_u **)s2;
++ 
++     if (*p1 != '<' && *p2 == '<') return -1;
++     if (*p1 == '<' && *p2 != '<') return 1;
++     return STRCMP(p1, p2);
++ }
++ #endif
++ 
+  /*
+   * Return FAIL if this is not an appropriate context in which to do
+   * completion of anything, return OK if it is (even if there are no matches).
+***************
+*** 4735,4741 ****
+  
+      /* Sort the results.  Keep menu's in the specified order. */
+      if (xp->xp_context != EXPAND_MENUNAMES && xp->xp_context != EXPAND_MENUS)
+!      sort_strings(*file, *num_file);
+  
+  #ifdef FEAT_CMDL_COMPL
+      /* Reset the variables used for special highlight names expansion, so that
+--- 4761,4776 ----
+  
+      /* Sort the results.  Keep menu's in the specified order. */
+      if (xp->xp_context != EXPAND_MENUNAMES && xp->xp_context != EXPAND_MENUS)
+!     {
+!      if (xp->xp_context == EXPAND_EXPRESSION
+!              || xp->xp_context == EXPAND_FUNCTIONS
+!              || xp->xp_context == EXPAND_USER_FUNC)
+!          /* <SNR> functions should be sorted to the end. */
+!          qsort((void *)*file, (size_t)*num_file, sizeof(char_u *),
+!                                                         sort_func_compare);
+!      else
+!          sort_strings(*file, *num_file);
+!     }
+  
+  #ifdef FEAT_CMDL_COMPL
+      /* Reset the variables used for special highlight names expansion, so that
+*** ../vim-7.3.351/src/version.c       2011-10-26 17:04:23.000000000 +0200
+--- src/version.c      2011-10-26 21:49:53.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     352,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+94. Now admit it... How many of you have made "modem noises" into
+    the phone just to see if it was possible? :-)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.353.patch0 b/vim/patches/vim-7.3.353.patch0
new file mode 100644 (file)
index 0000000..1846243
--- /dev/null
@@ -0,0 +1,155 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.353
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.353 (after 7.3.343)
+Problem:    Missing part of the urxvt patch.
+Solution:   Add the change in term.c
+Files:     src/term.c
+
+
+*** ../vim-7.3.352/src/term.c  2011-09-14 14:43:21.000000000 +0200
+--- src/term.c 2011-10-26 23:48:01.000000000 +0200
+***************
+*** 4008,4014 ****
+       }
+  
+  #ifdef FEAT_TERMRESPONSE
+!      if (key_name[0] == NUL)
+       {
+           /* Check for xterm version string: "<Esc>[>{x};{vers};{y}c".  Also
+            * eat other possible responses to t_RV, rxvt returns
+--- 4008,4016 ----
+       }
+  
+  #ifdef FEAT_TERMRESPONSE
+!      if (key_name[0] == NUL
+!          /* URXVT mouse uses <ESC>[#;#;#M, but we are matching <ESC>[ */
+!          || key_name[0] == KS_URXVT_MOUSE)
+       {
+           /* Check for xterm version string: "<Esc>[>{x};{vers};{y}c".  Also
+            * eat other possible responses to t_RV, rxvt returns
+***************
+*** 4047,4053 ****
+                   if (tp[1 + (tp[0] != CSI)] == '>' && j == 2)
+                   {
+                       /* if xterm version >= 95 use mouse dragging */
+!                      if (extra >= 95)
+                           set_option_value((char_u *)"ttym", 0L,
+                                                      (char_u *)"xterm2", 0);
+                       /* if xterm version >= 141 try to get termcap codes */
+--- 4049,4055 ----
+                   if (tp[1 + (tp[0] != CSI)] == '>' && j == 2)
+                   {
+                       /* if xterm version >= 95 use mouse dragging */
+!                      if (extra >= 95 && ttym_flags != TTYM_URXVT)
+                           set_option_value((char_u *)"ttym", 0L,
+                                                      (char_u *)"xterm2", 0);
+                       /* if xterm version >= 141 try to get termcap codes */
+***************
+*** 4141,4146 ****
+--- 4143,4151 ----
+  # ifdef FEAT_MOUSE_PTERM
+               || key_name[0] == (int)KS_PTERM_MOUSE
+  # endif
++ # ifdef FEAT_MOUSE_URXVT
++              || key_name[0] == (int)KS_URXVT_MOUSE
++ # endif
+               )
+       {
+           is_click = is_drag = FALSE;
+***************
+*** 4219,4225 ****
+--- 4224,4292 ----
+                   else
+                       break;
+               }
++          }
++ 
++ # ifdef FEAT_MOUSE_URXVT
++          if (key_name[0] == (int)KS_URXVT_MOUSE)
++          {
++              for (;;)
++              {
++                  /* URXVT 1015 mouse reporting mode:
++                   * Almost identical to xterm mouse mode, except the values
++                   * are decimal instead of bytes.
++                   *
++                   * \033[%d;%d;%dM
++                   *            ^-- row
++                   *         ^----- column
++                   *      ^-------- code
++                   */
++                  p = tp + slen;
++ 
++                  mouse_code = getdigits(&p);
++                  if (*p++ != ';')
++                      return -1;
++ 
++                  mouse_col = getdigits(&p) - 1;
++                  if (*p++ != ';')
++                      return -1;
++ 
++                  mouse_row = getdigits(&p) - 1;
++                  if (*p++ != 'M')
++                      return -1;
++ 
++                  slen += (int)(p - (tp + slen));
++ 
++                  /* skip this one if next one has same code (like xterm
++                   * case) */
++                  j = termcodes[idx].len;
++                  if (STRNCMP(tp, tp + slen, (size_t)j) == 0) {
++                      /* check if the command is complete by looking for the
++                       * M */
++                      int slen2;
++                      int cmd_complete = 0;
++                      for (slen2 = slen; slen2 < len; slen2++) {
++                          if (tp[slen2] == 'M') {
++                              cmd_complete = 1;
++                              break;
++                          }
++                      }
++                      p += j;
++                      if (cmd_complete && getdigits(&p) == mouse_code) {
++                          slen += j; /* skip the \033[ */
++                          continue;
++                      }
++                  }
++                  break;
++              }
++          }
++ # endif
+  
++      if (key_name[0] == (int)KS_MOUSE
++ #ifdef FEAT_MOUSE_URXVT
++          || key_name[0] == (int)KS_URXVT_MOUSE
++ #endif
++          )
++      {
+  #  if !defined(MSWIN) && !defined(MSDOS)
+               /*
+                * Handle mouse events.
+*** ../vim-7.3.352/src/version.c       2011-10-26 22:02:10.000000000 +0200
+--- src/version.c      2011-10-26 23:43:26.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     353,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+99. The hum of a cooling fan and the click of keys is comforting to you.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.354.patch0 b/vim/patches/vim-7.3.354.patch0
new file mode 100644 (file)
index 0000000..8250f9a
--- /dev/null
@@ -0,0 +1,71 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.354
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.354
+Problem:    ":set backspace+=eol" doesn't work when 'backspace' has a 
+            backwards compatible value of 2.
+Solution:   Convert the number to a string. (Hirohito Higashi)
+Files:      src/option.c
+
+
+*** ../vim-7.3.353/src/option.c        2011-10-12 16:57:07.000000000 +0200
+--- src/option.c       2011-11-30 11:11:15.000000000 +0100
+***************
+*** 4567,4572 ****
+--- 4567,4597 ----
+                               arg = errbuf;
+                           }
+                           /*
++                           * Convert 'backspace' number to string, for
++                           * adding, prepending and removing string.
++                           */
++                          else if (varp == (char_u *)&p_bs
++                                       && VIM_ISDIGIT(**(char_u **)varp))
++                          {
++                              i = getdigits((char_u **)varp);
++                              switch (i)
++                              {
++                                  case 0:
++                                      *(char_u **)varp = empty_option;
++                                      break;
++                                  case 1:
++                                      *(char_u **)varp = vim_strsave(
++                                                    (char_u *)"indent,eol");
++                                      break;
++                                  case 2:
++                                      *(char_u **)varp = vim_strsave(
++                                              (char_u *)"indent,eol,start");
++                                      break;
++                              }
++                              vim_free(oldval);
++                              oldval = *(char_u **)varp;
++                          }
++                          /*
+                            * Convert 'whichwrap' number to string, for
+                            * backwards compatibility with Vim 3.0.
+                            * Misuse errbuf[] for the resulting string.
+*** ../vim-7.3.353/src/version.c       2011-10-26 23:48:17.000000000 +0200
+--- src/version.c      2011-11-30 11:14:44.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     354,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+206. You religiously respond immediately to e-mail, while ignoring
+     your growing pile of snail mail.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.355.patch0 b/vim/patches/vim-7.3.355.patch0
new file mode 100644 (file)
index 0000000..51bc3b7
--- /dev/null
@@ -0,0 +1,56 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.355
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.355
+Problem:    GTK warnings when using netrw.vim. (Ivan Krasilnikov)
+Solution:   Do not remove the beval event handler twice.
+Files:     src/option.c
+
+
+*** ../vim-7.3.354/src/option.c        2011-11-30 11:15:40.000000000 +0100
+--- src/option.c       2011-11-30 11:11:15.000000000 +0100
+***************
+*** 7796,7804 ****
+  #ifdef FEAT_BEVAL
+      else if ((int *)varp == &p_beval)
+      {
+!      if (p_beval == TRUE)
+           gui_mch_enable_beval_area(balloonEval);
+!      else
+           gui_mch_disable_beval_area(balloonEval);
+      }
+  #endif
+--- 7796,7804 ----
+  #ifdef FEAT_BEVAL
+      else if ((int *)varp == &p_beval)
+      {
+!      if (p_beval && !old_value)
+           gui_mch_enable_beval_area(balloonEval);
+!      else if (!p_beval && old_value)
+           gui_mch_disable_beval_area(balloonEval);
+      }
+  #endif
+*** ../vim-7.3.354/src/version.c       2011-11-30 11:15:40.000000000 +0100
+--- src/version.c      2011-11-30 11:30:55.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     355,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+209. Your house stinks because you haven't cleaned it in a week.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.356.patch0 b/vim/patches/vim-7.3.356.patch0
new file mode 100644 (file)
index 0000000..8b5572b
--- /dev/null
@@ -0,0 +1,79 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.356
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.356
+Problem:    Using "o" with 'cindent' set may freeze Vim. (lolilolicon)
+Solution:   Skip over {} correctly. (Hari G)
+Files:     src/misc1.c
+
+
+*** ../vim-7.3.355/src/misc1.c 2011-10-04 18:03:43.000000000 +0200
+--- src/misc1.c        2011-11-30 12:56:55.000000000 +0100
+***************
+*** 6127,6133 ****
+  
+  /*
+   * Set w_cursor.col to the column number of the last unmatched ')' or '{' in
+!  * line "l".
+   */
+      static int
+  find_last_paren(l, start, end)
+--- 6127,6133 ----
+  
+  /*
+   * Set w_cursor.col to the column number of the last unmatched ')' or '{' in
+!  * line "l".  "l" must point to the start of the line.
+   */
+      static int
+  find_last_paren(l, start, end)
+***************
+*** 6140,6146 ****
+  
+      curwin->w_cursor.col = 0;                    /* default is start of line */
+  
+!     for (i = 0; l[i]; i++)
+      {
+       i = (int)(cin_skipcomment(l + i) - l); /* ignore parens in comments */
+       i = (int)(skip_string(l + i) - l);    /* ignore parens in quotes */
+--- 6140,6146 ----
+  
+      curwin->w_cursor.col = 0;                    /* default is start of line */
+  
+!     for (i = 0; l[i] != NUL; i++)
+      {
+       i = (int)(cin_skipcomment(l + i) - l); /* ignore parens in comments */
+       i = (int)(skip_string(l + i) - l);    /* ignore parens in quotes */
+***************
+*** 7953,7958 ****
+--- 7953,7959 ----
+                        * If we're at the end of a block, skip to the start of
+                        * that block.
+                        */
++                      l = ml_get_curline();
+                       if (find_last_paren(l, '{', '}')
+                               && (trypos = find_start_brace(ind_maxcomment))
+                                                           != NULL) /* XXX */
+*** ../vim-7.3.355/src/version.c       2011-11-30 11:31:25.000000000 +0100
+--- src/version.c      2011-11-30 13:02:52.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     356,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+213. Your kids start referring to you as "that guy in front of the monitor."
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.357.patch0 b/vim/patches/vim-7.3.357.patch0
new file mode 100644 (file)
index 0000000..893a6bb
--- /dev/null
@@ -0,0 +1,52 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.357
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.357
+Problem:    Compiler warning in MS-Windows console build.
+Solution:   Adjust return type of PrintHookProc(). (Mike Williams)
+Files:     src/os_mswin.c
+
+
+*** ../vim-7.3.356/src/os_mswin.c      2011-09-21 20:09:38.000000000 +0200
+--- src/os_mswin.c     2011-11-30 13:41:13.000000000 +0100
+***************
+*** 1869,1875 ****
+  
+  #ifndef FEAT_GUI
+  
+!     static UINT CALLBACK
+  PrintHookProc(
+       HWND hDlg,      // handle to dialog box
+       UINT uiMsg,     // message identifier
+--- 1869,1875 ----
+  
+  #ifndef FEAT_GUI
+  
+!     static UINT_PTR CALLBACK
+  PrintHookProc(
+       HWND hDlg,      // handle to dialog box
+       UINT uiMsg,     // message identifier
+*** ../vim-7.3.356/src/version.c       2011-11-30 13:03:24.000000000 +0100
+--- src/version.c      2011-11-30 13:41:55.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     357,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+215. Your mouse-clicking forearm rivals Popeye's.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.358.patch0 b/vim/patches/vim-7.3.358.patch0
new file mode 100644 (file)
index 0000000..b9b385f
--- /dev/null
@@ -0,0 +1,74 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.358
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.358 (after 7.3.353)
+Problem:    Mouse support doesn't work properly.
+Solution:   Add HMT_URXVT. (lilydjwg, James McCoy)
+Files:     src/term.c
+
+
+*** ../vim-7.3.357/src/term.c  2011-10-26 23:48:17.000000000 +0200
+--- src/term.c 2011-11-30 14:42:22.000000000 +0100
+***************
+*** 1996,2001 ****
+--- 1996,2002 ----
+  #  define HMT_DEC    4
+  #  define HMT_JSBTERM        8
+  #  define HMT_PTERM  16
++ #  define HMT_URXVT  32
+  static int has_mouse_termcode = 0;
+  # endif
+  
+***************
+*** 2031,2036 ****
+--- 2032,2042 ----
+       has_mouse_termcode |= HMT_PTERM;
+      else
+  #   endif
++ #   ifdef FEAT_MOUSE_URXVT
++     if (n == KS_URXVT_MOUSE)
++      has_mouse_termcode |= HMT_URXVT;
++     else
++ #   endif
+       has_mouse_termcode |= HMT_NORMAL;
+  #  endif
+  }
+***************
+*** 2068,2073 ****
+--- 2074,2084 ----
+       has_mouse_termcode &= ~HMT_PTERM;
+      else
+  #   endif
++ #   ifdef FEAT_MOUSE_URXVT
++     if (n == KS_URXVT_MOUSE)
++      has_mouse_termcode &= ~HMT_URXVT;
++     else
++ #   endif
+       has_mouse_termcode &= ~HMT_NORMAL;
+  #  endif
+  }
+*** ../vim-7.3.357/src/version.c       2011-11-30 13:42:40.000000000 +0100
+--- src/version.c      2011-11-30 14:45:06.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     358,
+  /**/
+
+-- 
+I noticed my daughter's Disney-net password on a sticky note:
+"MickeyMinnieGoofyPluto".  I asked her why it was so long.
+"Because they say it has to have at least four characters."
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.359.patch0 b/vim/patches/vim-7.3.359.patch0
new file mode 100644 (file)
index 0000000..7fbd3f6
--- /dev/null
@@ -0,0 +1,64 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.359
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.359
+Problem:    Command line completion shows dict functions.
+Solution:   Skip dict functions for completion. (Yasuhiro Matsumoto)
+Files:     src/eval.c
+
+
+*** ../vim-7.3.358/src/eval.c  2011-10-26 13:19:23.000000000 +0200
+--- src/eval.c 2011-11-30 14:53:38.000000000 +0100
+***************
+*** 875,881 ****
+  
+  #ifdef EBCDIC
+      /*
+!      * Sort the function table, to enable binary sort.
+       */
+      sortFunctions();
+  #endif
+--- 875,881 ----
+  
+  #ifdef EBCDIC
+      /*
+!      * Sort the function table, to enable binary search.
+       */
+      sortFunctions();
+  #endif
+***************
+*** 21737,21742 ****
+--- 21737,21745 ----
+           ++hi;
+       fp = HI2UF(hi);
+  
++      if (fp->uf_flags & FC_DICT)
++          return NULL; /* don't show dict functions */
++ 
+       if (STRLEN(fp->uf_name) + 4 >= IOSIZE)
+           return fp->uf_name; /* prevents overflow */
+  
+*** ../vim-7.3.358/src/version.c       2011-11-30 14:47:12.000000000 +0100
+--- src/version.c      2011-11-30 14:56:57.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     359,
+  /**/
+
+-- 
+'Psychologist' -- Someone who looks at everyone else when
+an attractive woman enters the room.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.360.patch0 b/vim/patches/vim-7.3.360.patch0
new file mode 100644 (file)
index 0000000..de153c8
--- /dev/null
@@ -0,0 +1,61 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.360
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.360
+Problem:    Interrupting the load of an autoload function may cause a crash.
+Solution:   Do not use the hashitem when not valid. (Yukihiro Nakadaira)
+Files:     src/eval.c
+
+
+*** ../vim-7.3.359/src/eval.c  2011-11-30 14:57:26.000000000 +0100
+--- src/eval.c 2011-11-30 15:06:53.000000000 +0100
+***************
+*** 19589,19597 ****
+        * worked find the variable again.  Don't auto-load a script if it was
+        * loaded already, otherwise it would be loaded every time when
+        * checking if a function name is a Funcref variable. */
+!      if (ht == &globvarht && !writing
+!                          && script_autoload(varname, FALSE) && !aborting())
+           hi = hash_find(ht, varname);
+       if (HASHITEM_EMPTY(hi))
+           return NULL;
+      }
+--- 19589,19602 ----
+        * worked find the variable again.  Don't auto-load a script if it was
+        * loaded already, otherwise it would be loaded every time when
+        * checking if a function name is a Funcref variable. */
+!      if (ht == &globvarht && !writing)
+!      {
+!          /* Note: script_autoload() may make "hi" invalid. It must either
+!           * be obtained again or not used. */
+!          if (!script_autoload(varname, FALSE) || aborting())
+!              return NULL;
+           hi = hash_find(ht, varname);
++      }
+       if (HASHITEM_EMPTY(hi))
+           return NULL;
+      }
+*** ../vim-7.3.359/src/version.c       2011-11-30 14:57:26.000000000 +0100
+--- src/version.c      2011-11-30 15:17:28.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     360,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+217. Your sex life has drastically improved...so what if it's only cyber-sex!
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.361.patch0 b/vim/patches/vim-7.3.361.patch0
new file mode 100644 (file)
index 0000000..c128057
--- /dev/null
@@ -0,0 +1,55 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.361
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.361
+Problem:    Accessing memory after it is freed when EXITFREE is defined.
+Solution:   Don't access curwin when firstwin is NULL. (Dominique Pelle)
+Files:     src/buffer.c
+
+*** ../vim-7.3.360/src/buffer.c        2011-09-14 17:50:05.000000000 +0200
+--- src/buffer.c       2011-11-30 15:38:00.000000000 +0100
+***************
+*** 567,574 ****
+      diff_buf_delete(buf);        /* Can't use 'diff' for unloaded buffer. */
+  #endif
+  #ifdef FEAT_SYN_HL
+!     if (curwin->w_buffer == buf)
+!      reset_synblock(curwin);     /* remove any ownsyntax */
+  #endif
+  
+  #ifdef FEAT_FOLDING
+--- 567,575 ----
+      diff_buf_delete(buf);        /* Can't use 'diff' for unloaded buffer. */
+  #endif
+  #ifdef FEAT_SYN_HL
+!     /* Remove any ownsyntax, unless exiting. */
+!     if (firstwin != NULL && curwin->w_buffer == buf)
+!      reset_synblock(curwin);
+  #endif
+  
+  #ifdef FEAT_FOLDING
+*** ../vim-7.3.360/src/version.c       2011-11-30 15:19:25.000000000 +0100
+--- src/version.c      2011-11-30 15:40:22.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     361,
+  /**/
+
+
+-- 
+From the classified section of a city newspaper:
+Dog for sale: eats anything and is fond of children.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.362.patch0 b/vim/patches/vim-7.3.362.patch0
new file mode 100644 (file)
index 0000000..0056886
--- /dev/null
@@ -0,0 +1,59 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.362
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.362
+Problem:    ml_get error when using ":g" with folded lines.
+Solution:   Adjust the line number for changed_lines(). (Christian Brabandt)
+Files:     src/ex_cmds.c
+
+
+*** ../vim-7.3.361/src/ex_cmds.c       2011-10-20 18:17:38.000000000 +0200
+--- src/ex_cmds.c      2011-11-30 16:58:34.000000000 +0100
+***************
+*** 820,826 ****
+       curwin->w_cursor.lnum = dest + (line2 - line1) + 1;
+  
+      if (line1 < dest)
+!      changed_lines(line1, 0, dest + num_lines + 1, 0L);
+      else
+       changed_lines(dest + 1, 0, line1 + num_lines, 0L);
+  
+--- 820,832 ----
+       curwin->w_cursor.lnum = dest + (line2 - line1) + 1;
+  
+      if (line1 < dest)
+!     {
+!      dest += num_lines + 1;
+!      last_line = curbuf->b_ml.ml_line_count;
+!      if (dest > last_line + 1)
+!          dest = last_line + 1;
+!      changed_lines(line1, 0, dest, 0L);
+!     }
+      else
+       changed_lines(dest + 1, 0, line1 + num_lines, 0L);
+  
+*** ../vim-7.3.361/src/version.c       2011-11-30 15:40:51.000000000 +0100
+--- src/version.c      2011-11-30 17:01:07.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     362,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+218. Your spouse hands you a gift wrapped magnet with your PC's name
+     on it and you accuse him or her of genocide.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.363.patch0 b/vim/patches/vim-7.3.363.patch0
new file mode 100644 (file)
index 0000000..10ab548
--- /dev/null
@@ -0,0 +1,110 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.363
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.363
+Problem:    C indenting is wrong after #endif followed by a semicolon.
+Solution:   Add special handling for a semicolon in a line by itself. (Lech
+           Lorens)
+Files:     src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok
+
+
+*** ../vim-7.3.362/src/misc1.c 2011-11-30 13:03:24.000000000 +0100
+--- src/misc1.c        2011-11-30 17:10:59.000000000 +0100
+***************
+*** 8143,8148 ****
+--- 8143,8171 ----
+                   break;
+  
+               /*
++               * Find a line only has a semicolon that belongs to a previous
++               * line ending in '}', e.g. before an #endif.  Don't increase
++               * indent then.
++               */
++              if (*(look = skipwhite(l)) == ';' && cin_nocode(look + 1))
++              {
++                  pos_T curpos_save = curwin->w_cursor;
++ 
++                  while (curwin->w_cursor.lnum > 1)
++                  {
++                      look = ml_get(--curwin->w_cursor.lnum);
++                      if (!(cin_nocode(look) || cin_ispreproc_cont(
++                                            &look, &curwin->w_cursor.lnum)))
++                          break;
++                  }
++                  if (curwin->w_cursor.lnum > 0
++                                  && cin_ends_in(look, (char_u *)"}", NULL))
++                      break;
++ 
++                  curwin->w_cursor = curpos_save;
++              }
++ 
++              /*
+                * If the PREVIOUS line is a function declaration, the current
+                * line (and the ones that follow) needs to be indented as
+                * parameters.
+*** ../vim-7.3.362/src/testdir/test3.in        2011-10-04 18:03:43.000000000 +0200
+--- src/testdir/test3.in       2011-11-30 17:05:20.000000000 +0100
+***************
+*** 1454,1459 ****
+--- 1454,1469 ----
+               printf("This line used to be indented incorrectly.\n");
+  }
+  
++ int foo[]
++ #ifdef BAR
++ 
++ = { 1, 2, 3,
++      4, 5, 6 }
++ 
++ #endif
++ ;
++      int baz;
++ 
+  void func3(void)
+  {
+       int tab[] = {
+*** ../vim-7.3.362/src/testdir/test3.ok        2011-10-04 18:03:43.000000000 +0200
+--- src/testdir/test3.ok       2011-11-30 17:05:20.000000000 +0100
+***************
+*** 1307,1312 ****
+--- 1307,1322 ----
+       printf("This line used to be indented incorrectly.\n");
+  }
+  
++ int foo[]
++ #ifdef BAR
++ 
++ = { 1, 2, 3,
++      4, 5, 6 }
++ 
++ #endif
++      ;
++ int baz;
++ 
+  void func3(void)
+  {
+       int tab[] = {
+*** ../vim-7.3.362/src/version.c       2011-11-30 17:01:55.000000000 +0100
+--- src/version.c      2011-11-30 17:06:57.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     363,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+220. Your wife asks for sex and you tell her where to find you on IRC.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.364.patch0 b/vim/patches/vim-7.3.364.patch0
new file mode 100644 (file)
index 0000000..e62ef76
--- /dev/null
@@ -0,0 +1,57 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.364
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.364 (after 7.3.353)
+Problem:    Can't compile on HP-UX. (John Marriott)
+Solution:   Only use TTYM_URXVT when it is defined.
+Files:     src/term.c
+
+
+*** ../vim-7.3.363/src/term.c  2011-11-30 14:47:12.000000000 +0100
+--- src/term.c 2011-12-01 20:53:57.000000000 +0100
+***************
+*** 4060,4066 ****
+                   if (tp[1 + (tp[0] != CSI)] == '>' && j == 2)
+                   {
+                       /* if xterm version >= 95 use mouse dragging */
+!                      if (extra >= 95 && ttym_flags != TTYM_URXVT)
+                           set_option_value((char_u *)"ttym", 0L,
+                                                      (char_u *)"xterm2", 0);
+                       /* if xterm version >= 141 try to get termcap codes */
+--- 4060,4070 ----
+                   if (tp[1 + (tp[0] != CSI)] == '>' && j == 2)
+                   {
+                       /* if xterm version >= 95 use mouse dragging */
+!                      if (extra >= 95
+! # ifdef TTYM_URXVT
+!                              && ttym_flags != TTYM_URXVT
+! # endif
+!                              )
+                           set_option_value((char_u *)"ttym", 0L,
+                                                      (char_u *)"xterm2", 0);
+                       /* if xterm version >= 141 try to get termcap codes */
+*** ../vim-7.3.363/src/version.c       2011-11-30 17:20:18.000000000 +0100
+--- src/version.c      2011-12-01 20:56:55.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     364,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+224. You set up your own Web page. You set up a Web page for each
+     of your kids... and your pets.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.365.patch0 b/vim/patches/vim-7.3.365.patch0
new file mode 100644 (file)
index 0000000..16d5ad1
--- /dev/null
@@ -0,0 +1,131 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.365
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.365
+Problem:    Crash when using a large Unicode character in a file that has
+           syntax highlighting. (ngollan)
+Solution:   Check for going past the end of the utf tables. (Dominique Pelle)
+Files:     src/mbyte.c
+
+
+*** ../vim-7.3.364/src/mbyte.c 2011-08-10 13:21:30.000000000 +0200
+--- src/mbyte.c        2011-12-08 15:09:13.000000000 +0100
+***************
+*** 2764,2782 ****
+      int                      tableSize;
+  {
+      int start, mid, end; /* indices into table */
+  
+      start = 0;
+!     end = tableSize / sizeof(convertStruct);
+      while (start < end)
+      {
+       /* need to search further */
+!      mid = (end + start) /2;
+       if (table[mid].rangeEnd < a)
+           start = mid + 1;
+       else
+           end = mid;
+      }
+!     if (table[start].rangeStart <= a && a <= table[start].rangeEnd
+           && (a - table[start].rangeStart) % table[start].step == 0)
+       return (a + table[start].offset);
+      else
+--- 2764,2785 ----
+      int                      tableSize;
+  {
+      int start, mid, end; /* indices into table */
++     int entries = tableSize / sizeof(convertStruct);
+  
+      start = 0;
+!     end = entries;
+      while (start < end)
+      {
+       /* need to search further */
+!      mid = (end + start) / 2;
+       if (table[mid].rangeEnd < a)
+           start = mid + 1;
+       else
+           end = mid;
+      }
+!     if (start < entries
+!          && table[start].rangeStart <= a
+!          && a <= table[start].rangeEnd
+           && (a - table[start].rangeStart) % table[start].step == 0)
+       return (a + table[start].offset);
+      else
+***************
+*** 2791,2797 ****
+  utf_fold(a)
+      int              a;
+  {
+!     return utf_convert(a, foldCase, sizeof(foldCase));
+  }
+  
+  static convertStruct toLower[] =
+--- 2794,2800 ----
+  utf_fold(a)
+      int              a;
+  {
+!     return utf_convert(a, foldCase, (int)sizeof(foldCase));
+  }
+  
+  static convertStruct toLower[] =
+***************
+*** 3119,3125 ****
+       return TOUPPER_LOC(a);
+  
+      /* For any other characters use the above mapping table. */
+!     return utf_convert(a, toUpper, sizeof(toUpper));
+  }
+  
+      int
+--- 3122,3128 ----
+       return TOUPPER_LOC(a);
+  
+      /* For any other characters use the above mapping table. */
+!     return utf_convert(a, toUpper, (int)sizeof(toUpper));
+  }
+  
+      int
+***************
+*** 3152,3158 ****
+       return TOLOWER_LOC(a);
+  
+      /* For any other characters use the above mapping table. */
+!     return utf_convert(a, toLower, sizeof(toLower));
+  }
+  
+      int
+--- 3155,3161 ----
+       return TOLOWER_LOC(a);
+  
+      /* For any other characters use the above mapping table. */
+!     return utf_convert(a, toLower, (int)sizeof(toLower));
+  }
+  
+      int
+*** ../vim-7.3.364/src/version.c       2011-12-01 20:59:16.000000000 +0100
+--- src/version.c      2011-12-08 15:07:53.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     365,
+  /**/
+
+-- 
+Hear about the guy who played a blank tape at full blast?
+The mime next door went nuts.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.366.patch0 b/vim/patches/vim-7.3.366.patch0
new file mode 100644 (file)
index 0000000..ddf3990
--- /dev/null
@@ -0,0 +1,76 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.366
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.366
+Problem:    A tags file with an extremely long name causes errors.
+Solution:   Ignore tags that are too long. (Arno Renevier)
+Files:     src/tag.c
+
+
+*** ../vim-7.3.365/src/tag.c   2011-10-12 19:53:31.000000000 +0200
+--- src/tag.c  2011-12-08 13:32:51.000000000 +0100
+***************
+*** 1906,1917 ****
+               tagp.tagname = lbuf;
+  #ifdef FEAT_TAG_ANYWHITE
+               tagp.tagname_end = skiptowhite(lbuf);
+!              if (*tagp.tagname_end == NUL)       /* corrupted tag line */
+  #else
+               tagp.tagname_end = vim_strchr(lbuf, TAB);
+!              if (tagp.tagname_end == NULL)       /* corrupted tag line */
+  #endif
+               {
+                   line_error = TRUE;
+                   break;
+               }
+--- 1906,1931 ----
+               tagp.tagname = lbuf;
+  #ifdef FEAT_TAG_ANYWHITE
+               tagp.tagname_end = skiptowhite(lbuf);
+!              if (*tagp.tagname_end == NUL)
+  #else
+               tagp.tagname_end = vim_strchr(lbuf, TAB);
+!              if (tagp.tagname_end == NULL)
+  #endif
+               {
++                  if (vim_strchr(lbuf, NL) == NULL)
++                  {
++                      /* Truncated line, ignore it.  Has been reported for
++                       * Mozilla JS with extremely long names. */
++                      if (p_verbose >= 5)
++                      {
++                          verbose_enter();
++                          MSG(_("Ignoring long line in tags file"));
++                          verbose_leave();
++                      }
++                      continue;
++                  }
++ 
++                  /* Corrupted tag line. */
+                   line_error = TRUE;
+                   break;
+               }
+*** ../vim-7.3.365/src/version.c       2011-12-08 15:09:46.000000000 +0100
+--- src/version.c      2011-12-08 15:11:10.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     366,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+246. You use up your free 100 hours in less than a week.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.367.patch0 b/vim/patches/vim-7.3.367.patch0
new file mode 100644 (file)
index 0000000..2452d53
--- /dev/null
@@ -0,0 +1,53 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.367
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.367
+Problem:    :wundo and :rundo use a wrong checksum.
+Solution:   Include the last line when computing the hash. (Christian Brabandt)
+Files:     src/undo.c
+
+
+*** ../vim-7.3.366/src/undo.c  2011-01-22 21:25:07.000000000 +0100
+--- src/undo.c 2011-12-08 14:19:03.000000000 +0100
+***************
+*** 719,725 ****
+      char_u           *p;
+  
+      sha256_start(&ctx);
+!     for (lnum = 1; lnum < curbuf->b_ml.ml_line_count; ++lnum)
+      {
+       p = ml_get(lnum);
+       sha256_update(&ctx, p, (UINT32_T)(STRLEN(p) + 1));
+--- 719,725 ----
+      char_u           *p;
+  
+      sha256_start(&ctx);
+!     for (lnum = 1; lnum <= curbuf->b_ml.ml_line_count; ++lnum)
+      {
+       p = ml_get(lnum);
+       sha256_update(&ctx, p, (UINT32_T)(STRLEN(p) + 1));
+*** ../vim-7.3.366/src/version.c       2011-12-08 15:12:08.000000000 +0100
+--- src/version.c      2011-12-08 15:13:32.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     367,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+247. You use www.switchboard.com instead of dialing 411 and 555-12-12
+     for directory assistance.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.368.patch0 b/vim/patches/vim-7.3.368.patch0
new file mode 100644 (file)
index 0000000..958c69e
--- /dev/null
@@ -0,0 +1,103 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.368
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.368
+Problem:    Gcc complains about redefining _FORTIFY_SOURCE.
+Solution:   Undefine it before redefining it.
+Files:     src/Makefile, src/configure.in, src/auto/configure
+
+
+*** ../vim-7.3.367/src/Makefile        2011-10-20 16:35:25.000000000 +0200
+--- src/Makefile       2011-12-08 15:16:13.000000000 +0100
+***************
+*** 561,568 ****
+  #CFLAGS = -g -O2 '-DSTARTUPTIME="vimstartup"' -fno-strength-reduce -Wall -Wmissing-prototypes
+  
+  # Use this with GCC to check for mistakes, unused arguments, etc.
+! #CFLAGS = -g -Wall -Wextra -Wmissing-prototypes -Wunreachable-code -D_FORTIFY_SOURCE=1
+! #CFLAGS = -g -O2 -Wall -Wextra -Wmissing-prototypes -D_FORTIFY_SOURCE=1 -DU_DEBUG
+  #PYTHON_CFLAGS_EXTRA = -Wno-missing-field-initializers
+  #MZSCHEME_CFLAGS_EXTRA = -Wno-unreachable-code -Wno-unused-parameter
+  
+--- 561,568 ----
+  #CFLAGS = -g -O2 '-DSTARTUPTIME="vimstartup"' -fno-strength-reduce -Wall -Wmissing-prototypes
+  
+  # Use this with GCC to check for mistakes, unused arguments, etc.
+! #CFLAGS = -g -Wall -Wextra -Wmissing-prototypes -Wunreachable-code -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1
+! #CFLAGS = -g -O2 -Wall -Wextra -Wmissing-prototypes -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1 -DU_DEBUG
+  #PYTHON_CFLAGS_EXTRA = -Wno-missing-field-initializers
+  #MZSCHEME_CFLAGS_EXTRA = -Wno-unreachable-code -Wno-unused-parameter
+  
+*** ../vim-7.3.367/src/configure.in    2011-09-02 12:27:20.000000000 +0200
+--- src/configure.in   2011-12-01 20:23:22.000000000 +0100
+***************
+*** 3584,3592 ****
+    dnl -D_FORTIFY_SOURCE=2 crashes Vim on strcpy(buf, "000") when buf is
+    dnl declared as char x[1] but actually longer.  Introduced in gcc 4.0.
+    dnl Also remove duplicate _FORTIFY_SOURCE arguments.
+    AC_MSG_CHECKING(whether we need -D_FORTIFY_SOURCE=1)
+    if test "$gccmajor" -gt "3"; then
+!     CFLAGS=`echo "$CFLAGS" | sed -e 's/-Wp,-D_FORTIFY_SOURCE=.//g' -e 's/-D_FORTIFY_SOURCE=.//g' -e 's/$/ -D_FORTIFY_SOURCE=1/'`
+      AC_MSG_RESULT(yes)
+    else
+      AC_MSG_RESULT(no)
+--- 3584,3593 ----
+    dnl -D_FORTIFY_SOURCE=2 crashes Vim on strcpy(buf, "000") when buf is
+    dnl declared as char x[1] but actually longer.  Introduced in gcc 4.0.
+    dnl Also remove duplicate _FORTIFY_SOURCE arguments.
++   dnl And undefine it first to avoid a warning.
+    AC_MSG_CHECKING(whether we need -D_FORTIFY_SOURCE=1)
+    if test "$gccmajor" -gt "3"; then
+!     CFLAGS=`echo "$CFLAGS" | sed -e 's/-Wp,-D_FORTIFY_SOURCE=.//g' -e 's/-D_FORTIFY_SOURCE=.//g' -e 's/$/ -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1/'`
+      AC_MSG_RESULT(yes)
+    else
+      AC_MSG_RESULT(no)
+*** ../vim-7.3.367/src/auto/configure  2011-09-02 12:27:20.000000000 +0200
+--- src/auto/configure 2011-12-01 20:24:02.000000000 +0100
+***************
+*** 12483,12492 ****
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+  $as_echo "no" >&6; }
+    fi
+!         { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we need -D_FORTIFY_SOURCE=1" >&5
+  $as_echo_n "checking whether we need -D_FORTIFY_SOURCE=1... " >&6; }
+    if test "$gccmajor" -gt "3"; then
+!     CFLAGS=`echo "$CFLAGS" | sed -e 's/-Wp,-D_FORTIFY_SOURCE=.//g' -e 's/-D_FORTIFY_SOURCE=.//g' -e 's/$/ -D_FORTIFY_SOURCE=1/'`
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+  $as_echo "yes" >&6; }
+    else
+--- 12483,12492 ----
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+  $as_echo "no" >&6; }
+    fi
+!           { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we need -D_FORTIFY_SOURCE=1" >&5
+  $as_echo_n "checking whether we need -D_FORTIFY_SOURCE=1... " >&6; }
+    if test "$gccmajor" -gt "3"; then
+!     CFLAGS=`echo "$CFLAGS" | sed -e 's/-Wp,-D_FORTIFY_SOURCE=.//g' -e 's/-D_FORTIFY_SOURCE=.//g' -e 's/$/ -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1/'`
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+  $as_echo "yes" >&6; }
+    else
+*** ../vim-7.3.367/src/version.c       2011-12-08 15:14:04.000000000 +0100
+--- src/version.c      2011-12-08 15:15:13.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     368,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+248. You sign your letters with your e-mail address instead of your name.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.369.patch0 b/vim/patches/vim-7.3.369.patch0
new file mode 100644 (file)
index 0000000..af6e7e6
--- /dev/null
@@ -0,0 +1,48 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.369
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.369
+Problem:    When compiled with Gnome get an error message when using --help.
+Solution:   Don't fork. (Ivan Krasilnikov)
+Files:     src/main.c
+
+
+*** ../vim-7.3.368/src/main.c  2011-10-04 16:43:49.000000000 +0200
+--- src/main.c 2011-12-01 20:27:11.000000000 +0100
+***************
+*** 3294,3300 ****
+--- 3294,3303 ----
+  #ifdef FEAT_GUI_GNOME
+      /* Gnome gives extra messages for --help if we continue, but not for -h. */
+      if (gui.starting)
++     {
+       mch_msg("\n");
++      gui.dofork = FALSE;
++     }
+      else
+  #endif
+       mch_exit(0);
+*** ../vim-7.3.368/src/version.c       2011-12-08 15:17:28.000000000 +0100
+--- src/version.c      2011-12-08 15:57:03.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     369,
+  /**/
+
+-- 
+Vi is clearly superior to emacs, since "vi" has only two characters
+(and two keystrokes), while "emacs" has five.  (Randy C. Ford)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.370.patch0 b/vim/patches/vim-7.3.370.patch0
new file mode 100644 (file)
index 0000000..26bce4d
--- /dev/null
@@ -0,0 +1,63 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.370
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.370
+Problem:    Compiler warns for unused variable in Lua interface.
+Solution:   Remove the variable.
+Files:     src/if_lua.c
+
+
+*** ../vim-7.3.369/src/if_lua.c        2011-09-21 17:15:34.000000000 +0200
+--- src/if_lua.c       2011-12-01 20:19:17.000000000 +0100
+***************
+*** 1044,1056 ****
+      static int
+  luaV_open(lua_State *L)
+  {
+-     luaV_Buffer *b;
+      char_u *s = NULL;
+  #ifdef HAVE_SANDBOX
+      luaV_checksandbox(L);
+  #endif
+      if (lua_isstring(L, 1)) s = (char_u *) lua_tostring(L, 1);
+!     b = luaV_pushbuffer(L, buflist_new(s, NULL, 1L, BLN_LISTED));
+      return 1;
+  }
+  
+--- 1044,1055 ----
+      static int
+  luaV_open(lua_State *L)
+  {
+      char_u *s = NULL;
+  #ifdef HAVE_SANDBOX
+      luaV_checksandbox(L);
+  #endif
+      if (lua_isstring(L, 1)) s = (char_u *) lua_tostring(L, 1);
+!     luaV_pushbuffer(L, buflist_new(s, NULL, 1L, BLN_LISTED));
+      return 1;
+  }
+  
+*** ../vim-7.3.369/src/version.c       2011-12-08 15:57:54.000000000 +0100
+--- src/version.c      2011-12-08 15:59:35.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     370,
+  /**/
+
+-- 
+Emacs is a nice OS - but it lacks a good text editor.
+That's why I am using Vim.  --Anonymous
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.371.patch0 b/vim/patches/vim-7.3.371.patch0
new file mode 100644 (file)
index 0000000..1701c11
--- /dev/null
@@ -0,0 +1,75 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.371
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.371
+Problem:    Crash in autocomplete. (Greg Weber)
+Solution:   Check not going over allocated buffer size.
+Files:     src/misc2.c
+
+
+*** ../vim-7.3.370/src/misc2.c 2011-10-26 11:40:56.000000000 +0200
+--- src/misc2.c        2011-12-08 17:49:23.000000000 +0100
+***************
+*** 4293,4298 ****
+--- 4293,4300 ----
+  static int ff_path_in_stoplist __ARGS((char_u *, int, char_u **));
+  #endif
+  
++ static char_u e_pathtoolong[] = N_("E854: path too long for completion");
++ 
+  #if 0
+  /*
+   * if someone likes findfirst/findnext, here are the functions
+***************
+*** 4589,4594 ****
+--- 4591,4601 ----
+       len = 0;
+       while (*wc_part != NUL)
+       {
++          if (len + 5 >= MAXPATHL)
++          {
++              EMSG(_(e_pathtoolong));
++              break;
++          }
+           if (STRNCMP(wc_part, "**", 2) == 0)
+           {
+               ff_expand_buffer[len++] = *wc_part++;
+***************
+*** 4634,4639 ****
+--- 4641,4652 ----
+      }
+  
+      /* create an absolute path */
++     if (STRLEN(search_ctx->ffsc_start_dir)
++                        + STRLEN(search_ctx->ffsc_fix_path) + 3 >= MAXPATHL)
++     {
++      EMSG(_(e_pathtoolong));
++      goto error_return;
++     }
+      STRCPY(ff_expand_buffer, search_ctx->ffsc_start_dir);
+      add_pathsep(ff_expand_buffer);
+      STRCAT(ff_expand_buffer, search_ctx->ffsc_fix_path);
+*** ../vim-7.3.370/src/version.c       2011-12-08 16:00:12.000000000 +0100
+--- src/version.c      2011-12-08 17:46:41.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     371,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+253. You wait for a slow loading web page before going to the toilet.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.372.patch0 b/vim/patches/vim-7.3.372.patch0
new file mode 100644 (file)
index 0000000..c9978c3
--- /dev/null
@@ -0,0 +1,52 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.372
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.372
+Problem:    When using a command line mapping to <Up> with file name 
+            completion to go one directory up, 'wildchar' is inserted.
+            (Yasuhiro Matsumoto) 
+Solution:   Set the KeyTyped flag.
+Files:      src/ex_getln.c
+
+
+*** ../vim-7.3.371/src/ex_getln.c      2011-10-26 22:02:10.000000000 +0200
+--- src/ex_getln.c     2011-12-08 18:40:49.000000000 +0100
+***************
+*** 645,651 ****
+--- 645,655 ----
+               }
+               else if (ccline.cmdpos > i)
+                   cmdline_del(i);
++ 
++              /* Now complete in the new directory. Set KeyTyped in case the
++               * Up key came from a mapping. */
+               c = p_wc;
++              KeyTyped = TRUE;
+           }
+       }
+  
+*** ../vim-7.3.371/src/version.c       2011-12-08 17:49:31.000000000 +0100
+--- src/version.c      2011-12-08 18:42:54.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     372,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+255. You work for a newspaper and your editor asks you to write an
+     article about Internet addiction...in the "first person."
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.373.patch0 b/vim/patches/vim-7.3.373.patch0
new file mode 100644 (file)
index 0000000..3e8937a
--- /dev/null
@@ -0,0 +1,78 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.373
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.373 (after 7.3.366)
+Problem:    A tags file with an extremely long name may cause an infinite loop.
+Solution:   When encountering a long name switch to linear search.
+Files:     src/tag.c
+
+
+*** ../vim-7.3.372/src/tag.c   2011-12-08 15:12:08.000000000 +0100
+--- src/tag.c  2011-12-14 14:13:28.000000000 +0100
+***************
+*** 1854,1860 ****
+  
+               if (state == TS_BINARY && orgpat.regmatch.rm_ic && !sortic)
+               {
+!                  /* binary search won't work for ignoring case, use linear
+                    * search. */
+                   linear = TRUE;
+                   state = TS_LINEAR;
+--- 1854,1860 ----
+  
+               if (state == TS_BINARY && orgpat.regmatch.rm_ic && !sortic)
+               {
+!                  /* Binary search won't work for ignoring case, use linear
+                    * search. */
+                   linear = TRUE;
+                   state = TS_LINEAR;
+***************
+*** 1922,1927 ****
+--- 1922,1940 ----
+                           MSG(_("Ignoring long line in tags file"));
+                           verbose_leave();
+                       }
++ #ifdef FEAT_TAG_BINS
++                      if (state != TS_LINEAR)
++                      {
++                          /* Avoid getting stuck. */
++                          linear = TRUE;
++                          state = TS_LINEAR;
++ # ifdef HAVE_FSEEKO
++                          fseeko(fp, search_info.low_offset, SEEK_SET);
++ # else
++                          fseek(fp, (long)search_info.low_offset, SEEK_SET);
++ # endif
++                      }
++ #endif
+                       continue;
+                   }
+  
+*** ../vim-7.3.372/src/version.c       2011-12-08 18:44:47.000000000 +0100
+--- src/version.c      2011-12-14 14:12:06.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     373,
+  /**/
+
+-- 
+ZOOT:  I'm afraid our life must seem very dull and quiet compared to yours.
+       We are but eightscore young blondes, all between sixteen and
+       nineteen-and-a-half, cut off in this castle, with no one to protect us.
+       Oooh.  It is a lonely life ... bathing ...  dressing ... undressing ...
+       making exciting underwear....
+                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.374.patch0 b/vim/patches/vim-7.3.374.patch0
new file mode 100644 (file)
index 0000000..b312828
--- /dev/null
@@ -0,0 +1,59 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.374
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.374
+Problem:    ++encoding does not work properly.
+Solution:   Recognize ++encoding before ++enc. (Charles Cooper)
+Files:     src/ex_docmd.c
+
+
+*** ../vim-7.3.373/src/ex_docmd.c      2011-10-20 21:58:20.000000000 +0200
+--- src/ex_docmd.c     2011-12-14 14:46:05.000000000 +0100
+***************
+*** 4840,4851 ****
+  #ifdef FEAT_MBYTE
+      else if (STRNCMP(arg, "enc", 3) == 0)
+      {
+!      arg += 3;
+!      pp = &eap->force_enc;
+!     }
+!     else if (STRNCMP(arg, "encoding", 8) == 0)
+!     {
+!      arg += 8;
+       pp = &eap->force_enc;
+      }
+      else if (STRNCMP(arg, "bad", 3) == 0)
+--- 4840,4849 ----
+  #ifdef FEAT_MBYTE
+      else if (STRNCMP(arg, "enc", 3) == 0)
+      {
+!      if (STRNCMP(arg, "encoding", 8) == 0)
+!          arg += 8;
+!      else
+!          arg += 3;
+       pp = &eap->force_enc;
+      }
+      else if (STRNCMP(arg, "bad", 3) == 0)
+*** ../vim-7.3.373/src/version.c       2011-12-14 14:15:12.000000000 +0100
+--- src/version.c      2011-12-14 14:44:01.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     374,
+  /**/
+
+-- 
+Linux is just like a wigwam: no Windows, no Gates and an Apache inside.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.375.patch0 b/vim/patches/vim-7.3.375.patch0
new file mode 100644 (file)
index 0000000..6f15fea
--- /dev/null
@@ -0,0 +1,64 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.375
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.375
+Problem:    Duplicate return statement.
+Solution:   Remove the superfluous one. (Dominique Pelle)
+Files:     src/gui_mac.c
+
+
+*** ../vim-7.3.374/src/gui_mac.c       2011-06-19 01:14:22.000000000 +0200
+--- src/gui_mac.c      2011-12-10 17:20:59.000000000 +0100
+***************
+*** 3216,3222 ****
+  {
+      /* TODO:
+       * This proc is called when Normal is set to a value
+!      * so what msut be done? I don't know
+       */
+  }
+  
+--- 3216,3222 ----
+  {
+      /* TODO:
+       * This proc is called when Normal is set to a value
+!      * so what must be done? I don't know
+       */
+  }
+  
+***************
+*** 3303,3309 ****
+      *x = bounds.left;
+      *y = bounds.top;
+      return OK;
+-     return FAIL;
+  }
+  
+  /*
+--- 3303,3308 ----
+*** ../vim-7.3.374/src/version.c       2011-12-14 14:49:41.000000000 +0100
+--- src/version.c      2011-12-14 15:06:01.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     375,
+  /**/
+
+-- 
+GALAHAD: No look, really, this isn't nescess ...
+PIGLET:  We must examine you.
+GALAHAD: There's nothing wrong with ... that.
+                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.376.patch0 b/vim/patches/vim-7.3.376.patch0
new file mode 100644 (file)
index 0000000..1e20743
--- /dev/null
@@ -0,0 +1,57 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.376
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.376
+Problem:    Win32: Toolbar repainting does not work when the mouse pointer
+           hovers over a button.
+Solution:   Call DefWindowProc() when not handling an event. (Sergiu Dotenco)
+Files:     src/gui_w32.c
+
+
+*** ../vim-7.3.375/src/gui_w32.c       2011-08-10 17:07:56.000000000 +0200
+--- src/gui_w32.c      2011-12-14 15:14:48.000000000 +0100
+***************
+*** 1101,1107 ****
+       return MyWindowProc(hwnd, uMsg, wParam, lParam);
+      }
+  
+!     return 1;
+  }
+  
+  /*
+--- 1101,1107 ----
+       return MyWindowProc(hwnd, uMsg, wParam, lParam);
+      }
+  
+!     return DefWindowProc(hwnd, uMsg, wParam, lParam);
+  }
+  
+  /*
+*** ../vim-7.3.375/src/version.c       2011-12-14 15:07:11.000000000 +0100
+--- src/version.c      2011-12-14 15:23:10.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     376,
+  /**/
+
+-- 
+   GALAHAD hurries to the door and pushes through it.  As he leaves the room
+   we CUT TO the reverse to show that he is now in a room full of bathing
+   and romping GIRLIES, all innocent, wide-eyed and beautiful.  They smile
+   enchantingly at him as he tries to keep walking without being diverted by
+   the lovely sights assaulting his eyeballs.
+                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.377.patch0 b/vim/patches/vim-7.3.377.patch0
new file mode 100644 (file)
index 0000000..1a2df1d
--- /dev/null
@@ -0,0 +1,406 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.377
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.377
+Problem:    No support for bitwise AND, OR, XOR and invert.
+Solution:   Add and(), or(), invert() and xor() functions.
+Files:     src/eval.c, src/testdir/test49.in, src/testdir/test65.in,
+           src/testdir/test65.ok, runtime/doc/eval.txt
+
+
+*** ../vim-7.3.376/src/eval.c  2011-11-30 15:19:25.000000000 +0100
+--- src/eval.c 2011-12-11 13:49:31.000000000 +0100
+***************
+*** 474,479 ****
+--- 474,480 ----
+  static void f_acos __ARGS((typval_T *argvars, typval_T *rettv));
+  #endif
+  static void f_add __ARGS((typval_T *argvars, typval_T *rettv));
++ static void f_and __ARGS((typval_T *argvars, typval_T *rettv));
+  static void f_append __ARGS((typval_T *argvars, typval_T *rettv));
+  static void f_argc __ARGS((typval_T *argvars, typval_T *rettv));
+  static void f_argidx __ARGS((typval_T *argvars, typval_T *rettv));
+***************
+*** 602,607 ****
+--- 603,609 ----
+  static void f_inputsave __ARGS((typval_T *argvars, typval_T *rettv));
+  static void f_inputsecret __ARGS((typval_T *argvars, typval_T *rettv));
+  static void f_insert __ARGS((typval_T *argvars, typval_T *rettv));
++ static void f_invert __ARGS((typval_T *argvars, typval_T *rettv));
+  static void f_isdirectory __ARGS((typval_T *argvars, typval_T *rettv));
+  static void f_islocked __ARGS((typval_T *argvars, typval_T *rettv));
+  static void f_items __ARGS((typval_T *argvars, typval_T *rettv));
+***************
+*** 640,645 ****
+--- 642,648 ----
+  #endif
+  static void f_nextnonblank __ARGS((typval_T *argvars, typval_T *rettv));
+  static void f_nr2char __ARGS((typval_T *argvars, typval_T *rettv));
++ static void f_or __ARGS((typval_T *argvars, typval_T *rettv));
+  static void f_pathshorten __ARGS((typval_T *argvars, typval_T *rettv));
+  #ifdef FEAT_FLOAT
+  static void f_pow __ARGS((typval_T *argvars, typval_T *rettv));
+***************
+*** 751,756 ****
+--- 754,760 ----
+  static void f_winsaveview __ARGS((typval_T *argvars, typval_T *rettv));
+  static void f_winwidth __ARGS((typval_T *argvars, typval_T *rettv));
+  static void f_writefile __ARGS((typval_T *argvars, typval_T *rettv));
++ static void f_xor __ARGS((typval_T *argvars, typval_T *rettv));
+  
+  static int list2fpos __ARGS((typval_T *arg, pos_T *posp, int *fnump));
+  static pos_T *var2fpos __ARGS((typval_T *varp, int dollar_lnum, int *fnum));
+***************
+*** 7715,7720 ****
+--- 7719,7725 ----
+      {"acos",         1, 1, f_acos},  /* WJMc */
+  #endif
+      {"add",          2, 2, f_add},
++     {"and",          2, 2, f_and},
+      {"append",               2, 2, f_append},
+      {"argc",         0, 0, f_argc},
+      {"argidx",               0, 0, f_argidx},
+***************
+*** 7850,7855 ****
+--- 7855,7861 ----
+      {"inputsave",    0, 0, f_inputsave},
+      {"inputsecret",  1, 2, f_inputsecret},
+      {"insert",               2, 3, f_insert},
++     {"invert",               1, 1, f_invert},
+      {"isdirectory",  1, 1, f_isdirectory},
+      {"islocked",     1, 1, f_islocked},
+      {"items",                1, 1, f_items},
+***************
+*** 7888,7893 ****
+--- 7894,7900 ----
+  #endif
+      {"nextnonblank", 1, 1, f_nextnonblank},
+      {"nr2char",              1, 1, f_nr2char},
++     {"or",           2, 2, f_or},
+      {"pathshorten",  1, 1, f_pathshorten},
+  #ifdef FEAT_FLOAT
+      {"pow",          2, 2, f_pow},
+***************
+*** 7999,8004 ****
+--- 8006,8012 ----
+      {"winsaveview",  0, 0, f_winsaveview},
+      {"winwidth",     1, 1, f_winwidth},
+      {"writefile",    2, 3, f_writefile},
++     {"xor",          2, 2, f_xor},
+  };
+  
+  #if defined(FEAT_CMDL_COMPL) || defined(PROTO)
+***************
+*** 8572,8577 ****
+--- 8580,8597 ----
+  }
+  
+  /*
++  * "and(expr, expr)" function
++  */
++     static void
++ f_and(argvars, rettv)
++     typval_T *argvars;
++     typval_T *rettv;
++ {
++     rettv->vval.v_number = get_tv_number_chk(&argvars[0], NULL)
++                                      & get_tv_number_chk(&argvars[1], NULL);
++ }
++ 
++ /*
+   * "append(lnum, string/list)" function
+   */
+      static void
+***************
+*** 12958,12963 ****
+--- 12978,12994 ----
+  }
+  
+  /*
++  * "invert(expr)" function
++  */
++     static void
++ f_invert(argvars, rettv)
++     typval_T *argvars;
++     typval_T *rettv;
++ {
++     rettv->vval.v_number = ~get_tv_number_chk(&argvars[0], NULL);
++ }
++ 
++ /*
+   * "isdirectory()" function
+   */
+      static void
+***************
+*** 14108,14113 ****
+--- 14139,14156 ----
+  }
+  
+  /*
++  * "or(expr, expr)" function
++  */
++     static void
++ f_or(argvars, rettv)
++     typval_T *argvars;
++     typval_T *rettv;
++ {
++     rettv->vval.v_number = get_tv_number_chk(&argvars[0], NULL)
++                                      | get_tv_number_chk(&argvars[1], NULL);
++ }
++ 
++ /*
+   * "pathshorten()" function
+   */
+      static void
+***************
+*** 18394,18399 ****
+--- 18437,18455 ----
+  }
+  
+  /*
++  * "xor(expr, expr)" function
++  */
++     static void
++ f_xor(argvars, rettv)
++     typval_T *argvars;
++     typval_T *rettv;
++ {
++     rettv->vval.v_number = get_tv_number_chk(&argvars[0], NULL)
++                                      ^ get_tv_number_chk(&argvars[1], NULL);
++ }
++ 
++ 
++ /*
+   * Translate a String variable into a position.
+   * Returns NULL when there is an error.
+   */
+*** ../vim-7.3.376/src/testdir/test65.in       2010-08-15 21:57:29.000000000 +0200
+--- src/testdir/test65.in      2011-12-11 13:55:06.000000000 +0100
+***************
+*** 1,4 ****
+! Test for floating point.
+  
+  STARTTEST
+  :so small.vim
+--- 1,4 ----
+! Test for floating point and logical operators.
+  
+  STARTTEST
+  :so small.vim
+***************
+*** 72,77 ****
+--- 72,94 ----
+  :$put ='float2nr'
+  :$put =float2nr(123.456)
+  :$put =float2nr(-123.456)
++ :$put ='AND'
++ :$put =and(127, 127)
++ :$put =and(127, 16)
++ :$put =and(127, 128)
++ :$put ='OR'
++ :$put =or(16, 7)
++ :$put =or(8, 7)
++ :$put =or(0, 123)
++ :$put ='XOR'
++ :$put =xor(127, 127)
++ :$put =xor(127, 16)
++ :$put =xor(127, 128)
++ :$put ='invert'
++ :$put =and(invert(127), 65535)
++ :$put =and(invert(16), 65535)
++ :$put =and(invert(128), 65535)
++ :$put =invert(1.0)
+  :/^Results/,$wq! test.out
+  ENDTEST
+  
+*** ../vim-7.3.376/src/testdir/test65.ok       2010-08-15 21:57:29.000000000 +0200
+--- src/testdir/test65.ok      2011-12-11 13:55:30.000000000 +0100
+***************
+*** 54,56 ****
+--- 54,73 ----
+  float2nr
+  123
+  -123
++ AND
++ 127
++ 16
++ 0
++ OR
++ 23
++ 15
++ 123
++ XOR
++ 0
++ 111
++ 255
++ invert
++ 65408
++ 65519
++ 65407
++ 0
+*** ../vim-7.3.376/runtime/doc/eval.txt        2011-06-19 02:55:32.000000000 +0200
+--- runtime/doc/eval.txt       2011-12-14 15:28:23.000000000 +0100
+***************
+*** 798,808 ****
+  For |Lists| only "+" is possible and then both expr6 must be a list.  The
+  result is a new list with the two lists Concatenated.
+  
+! expr7 *       expr7 ..       number multiplication                   *expr-star*
+! expr7 /       expr7 ..       number division                         *expr-/*
+! expr7 %       expr7 ..       number modulo                           *expr-%*
+  
+  For all, except ".", Strings are converted to Numbers.
+  
+  Note the difference between "+" and ".":
+       "123" + "456" = 579
+--- 800,811 ----
+  For |Lists| only "+" is possible and then both expr6 must be a list.  The
+  result is a new list with the two lists Concatenated.
+  
+! expr7 *       expr7 ..       Number multiplication                   *expr-star*
+! expr7 /       expr7 ..       Number division                         *expr-/*
+! expr7 %       expr7 ..       Number modulo                           *expr-%*
+  
+  For all, except ".", Strings are converted to Numbers.
++ For bitwise operators see |and()|, |or()| and |xor()|.
+  
+  Note the difference between "+" and ".":
+       "123" + "456" = 579
+***************
+*** 1679,1684 ****
+--- 1688,1694 ----
+  abs( {expr})                 Float or Number  absolute value of {expr}
+  acos( {expr})                        Float   arc cosine of {expr}
+  add( {list}, {item})         List    append {item} to |List| {list}
++ and( {expr}, {expr})         Number  bitwise AND
+  append( {lnum}, {string})    Number  append {string} below line {lnum}
+  append( {lnum}, {list})              Number  append lines {list} below line {lnum}
+  argc()                               Number  number of files in the argument list
+***************
+*** 1817,1822 ****
+--- 1827,1833 ----
+  inputsave()                  Number  save and clear typeahead
+  inputsecret( {prompt} [, {text}]) String  like input() but hiding the text
+  insert( {list}, {item} [, {idx}]) List       insert {item} in {list} [before {idx}]
++ invert( {expr})                      Number  bitwise invert
+  isdirectory( {directory})    Number  TRUE if {directory} is a directory
+  islocked( {expr})            Number  TRUE if {expr} is locked
+  items( {dict})                       List    key-value pairs in {dict}
+***************
+*** 1856,1861 ****
+--- 1868,1874 ----
+  mzeval( {expr})                      any     evaluate |MzScheme| expression
+  nextnonblank( {lnum})                Number  line nr of non-blank line >= {lnum}
+  nr2char( {expr})             String  single char with ASCII value {expr}
++ or( {expr}, {expr})          Number  bitwise OR
+  pathshorten( {expr})         String  shorten directory names in a path
+  pow( {x}, {y})                       Float   {x} to the power of {y}
+  prevnonblank( {lnum})                Number  line nr of non-blank line <= {lnum}
+***************
+*** 1978,1983 ****
+--- 1992,1998 ----
+  winwidth( {nr})                      Number  width of window {nr}
+  writefile( {list}, {fname} [, {binary}])
+                               Number  write list of lines to file {fname}
++ xor( {expr}, {expr})         Number  bitwise XOR
+  
+  abs({expr})                                                  *abs()*
+               Return the absolute value of {expr}.  When {expr} evaluates to
+***************
+*** 2017,2022 ****
+--- 2032,2044 ----
+               Use |insert()| to add an item at another position.
+  
+  
++ and({expr}, {expr})                                  *and()*
++              Bitwise AND on the two arguments.  The arguments are converted
++              to a number.  A List, Dict or Float argument causes an error.
++              Example: >
++                      :let flag = and(bits, 0x80)
++ 
++ 
+  append({lnum}, {expr})                                       *append()*
+               When {expr} is a |List|: Append each item of the |List| as a
+               text line below line {lnum} in the current buffer.
+***************
+*** 3770,3775 ****
+--- 3798,3808 ----
+               Note that when {item} is a |List| it is inserted as a single
+               item.  Use |extend()| to concatenate |Lists|.
+  
++ invert({expr})                                               *invert()*
++              Bitwise invert.  The argument is converted to a number.  A
++              List, Dict or Float argument causes an error.  Example: >
++                      :let bits = invert(bits)
++ 
+  isdirectory({directory})                             *isdirectory()*
+               The result is a Number, which is non-zero when a directory
+               with the name {directory} exists.  If {directory} doesn't
+***************
+*** 4334,4339 ****
+--- 4368,4380 ----
+                       call setpos('.', save_cursor)
+  <            Also see |setpos()|.
+  
++ or({expr}, {expr})                                   *or()*
++              Bitwise OR on the two arguments.  The arguments are converted
++              to a number.  A List, Dict or Float argument causes an error.
++              Example: >
++                      :let bits = or(bits, 0x80)
++ 
++ 
+  pathshorten({expr})                                  *pathshorten()*
+               Shorten directory names in the path {expr} and return the
+               result.  The tail, the file name, is kept as-is.  The other
+***************
+*** 6097,6103 ****
+               To copy a file byte for byte: >
+                       :let fl = readfile("foo", "b")
+                       :call writefile(fl, "foocopy", "b")
+! <
+  
+                                                       *feature-list*
+  There are three types of features:
+--- 6149,6163 ----
+               To copy a file byte for byte: >
+                       :let fl = readfile("foo", "b")
+                       :call writefile(fl, "foocopy", "b")
+! 
+! 
+! xor({expr}, {expr})                                  *xor()*
+!              Bitwise XOR on the two arguments.  The arguments are converted
+!              to a number.  A List, Dict or Float argument causes an error.
+!              Example: >
+!                      :let bits = xor(bits, 0x80)
+! 
+! 
+  
+                                                       *feature-list*
+  There are three types of features:
+*** ../vim-7.3.376/src/version.c       2011-12-14 15:23:53.000000000 +0100
+--- src/version.c      2011-12-14 15:28:39.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     377,
+  /**/
+
+-- 
+DINGO: Wicked wicked Zoot ... she is a bad person and she must pay the
+       penalty.  And here in Castle Anthrax, we have but one punishment
+       ... you must tie her down on a bed ... and spank her.  Come!
+GIRLS: A spanking!  A spanking!
+                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.378.patch0 b/vim/patches/vim-7.3.378.patch0
new file mode 100644 (file)
index 0000000..8ad3d70
--- /dev/null
@@ -0,0 +1,71 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.378
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.378
+Problem:    When cross-compiling the check for uint32_t fails.
+Solution:   Only give a warning message. (Maksim Melnikau)
+Files:      src/configure.in, src/auto/configure
+
+
+*** ../vim-7.3.377/src/configure.in    2011-12-08 15:17:28.000000000 +0100
+--- src/configure.in   2011-12-14 19:18:36.000000000 +0100
+***************
+*** 3283,3289 ****
+  }],
+  AC_MSG_RESULT(ok),
+  AC_MSG_ERROR([WRONG!  uint32_t not defined correctly.]),
+! AC_MSG_ERROR([could not compile program using uint32_t.]))
+  
+  dnl Check for memmove() before bcopy(), makes memmove() be used when both are
+  dnl present, fixes problem with incompatibility between Solaris 2.4 and 2.5.
+--- 3283,3289 ----
+  }],
+  AC_MSG_RESULT(ok),
+  AC_MSG_ERROR([WRONG!  uint32_t not defined correctly.]),
+! AC_MSG_WARN([cannot check uint32_t when cross-compiling.]))
+  
+  dnl Check for memmove() before bcopy(), makes memmove() be used when both are
+  dnl present, fixes problem with incompatibility between Solaris 2.4 and 2.5.
+*** ../vim-7.3.377/src/auto/configure  2011-12-08 15:17:28.000000000 +0100
+--- src/auto/configure 2011-12-14 19:20:55.000000000 +0100
+***************
+*** 11777,11783 ****
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking uint32_t is 32 bits" >&5
+  $as_echo_n "checking uint32_t is 32 bits... " >&6; }
+  if test "$cross_compiling" = yes; then :
+!   as_fn_error "could not compile program using uint32_t." "$LINENO" 5
+  else
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+  /* end confdefs.h.  */
+--- 11777,11784 ----
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking uint32_t is 32 bits" >&5
+  $as_echo_n "checking uint32_t is 32 bits... " >&6; }
+  if test "$cross_compiling" = yes; then :
+!   { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check uint32_t when cross-compiling." >&5
+! $as_echo "$as_me: WARNING: cannot check uint32_t when cross-compiling." >&2;}
+  else
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+  /* end confdefs.h.  */
+*** ../vim-7.3.377/src/version.c       2011-12-14 15:32:44.000000000 +0100
+--- src/version.c      2011-12-14 19:21:08.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     378,
+  /**/
+
+-- 
+            ### Hiroshima 45, Chernobyl 86, Windows 95 ###
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.379.patch0 b/vim/patches/vim-7.3.379.patch0
new file mode 100644 (file)
index 0000000..fd87f9a
--- /dev/null
@@ -0,0 +1,112 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.379
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.379
+Problem:    C-indenting wrong for static enum.
+Solution:   Skip over "static". (Lech Lorens)
+Files:     src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok
+
+
+*** ../vim-7.3.378/src/misc1.c 2011-11-30 17:20:18.000000000 +0100
+--- src/misc1.c        2011-12-14 19:37:48.000000000 +0100
+***************
+*** 5138,5143 ****
+--- 5138,5146 ----
+      if (STRNCMP(s, "typedef", 7) == 0 && !vim_isIDc(s[7]))
+       s = cin_skipcomment(s + 7);
+  
++     if (STRNCMP(s, "static", 6) == 0 && !vim_isIDc(s[6]))
++      s = cin_skipcomment(s + 6);
++ 
+      if (STRNCMP(s, "enum", 4) == 0 && !vim_isIDc(s[4]))
+       return TRUE;
+  
+*** ../vim-7.3.378/src/testdir/test3.in        2011-11-30 17:20:18.000000000 +0100
+--- src/testdir/test3.in       2011-12-14 20:03:11.000000000 +0100
+***************
+*** 299,316 ****
+  
+  enum soppie
+  {
+!      yes = 0,
+!      no,
+!      maybe
+  };
+  
+  typedef enum soppie
+  {
+!      yes = 0,
+!      no,
+!      maybe
+  };
+  
+  {
+       int a,
+               b;
+--- 299,323 ----
+  
+  enum soppie
+  {
+! yes = 0,
+! no,
+! maybe
+  };
+  
+  typedef enum soppie
+  {
+! yes = 0,
+! no,
+! maybe
+  };
+  
++ static enum
++ {
++ yes = 0,
++ no,
++ maybe
++ } soppie;
++ 
+  {
+       int a,
+               b;
+*** ../vim-7.3.378/src/testdir/test3.ok        2011-11-30 17:20:18.000000000 +0100
+--- src/testdir/test3.ok       2011-12-14 19:37:48.000000000 +0100
+***************
+*** 299,304 ****
+--- 299,311 ----
+       maybe
+  };
+  
++ static enum
++ {
++      yes = 0,
++      no,
++      maybe
++ } soppie;
++ 
+  {
+       int a,
+               b;
+*** ../vim-7.3.378/src/version.c       2011-12-14 19:22:29.000000000 +0100
+--- src/version.c      2011-12-14 20:02:19.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     379,
+  /**/
+
+-- 
+You cannot propel yourself forward by patting yourself on the back.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.380.patch0 b/vim/patches/vim-7.3.380.patch0
new file mode 100644 (file)
index 0000000..a8f4bcf
--- /dev/null
@@ -0,0 +1,318 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.380
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.380
+Problem:    C-indenting wrong for a function header.
+Solution:   Skip to the start paren. (Lech Lorens)
+Files:     src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok
+
+
+*** ../vim-7.3.379/src/misc1.c 2011-12-14 20:05:17.000000000 +0100
+--- src/misc1.c        2011-12-14 20:16:43.000000000 +0100
+***************
+*** 4943,4949 ****
+  static int   cin_islinecomment __ARGS((char_u *));
+  static int   cin_isterminated __ARGS((char_u *, int, int));
+  static int   cin_isinit __ARGS((void));
+! static int   cin_isfuncdecl __ARGS((char_u **, linenr_T));
+  static int   cin_isif __ARGS((char_u *));
+  static int   cin_iselse __ARGS((char_u *));
+  static int   cin_isdo __ARGS((char_u *));
+--- 4943,4949 ----
+  static int   cin_islinecomment __ARGS((char_u *));
+  static int   cin_isterminated __ARGS((char_u *, int, int));
+  static int   cin_isinit __ARGS((void));
+! static int   cin_isfuncdecl __ARGS((char_u **, linenr_T, linenr_T, int, int));
+  static int   cin_isif __ARGS((char_u *));
+  static int   cin_iselse __ARGS((char_u *));
+  static int   cin_isdo __ARGS((char_u *));
+***************
+*** 5585,5605 ****
+   * "sp" points to a string with the line.  When looking at other lines it must
+   * be restored to the line.  When it's NULL fetch lines here.
+   * "lnum" is where we start looking.
+   */
+      static int
+! cin_isfuncdecl(sp, first_lnum)
+      char_u   **sp;
+      linenr_T first_lnum;
+  {
+      char_u   *s;
+      linenr_T lnum = first_lnum;
+      int              retval = FALSE;
+  
+      if (sp == NULL)
+       s = ml_get(lnum);
+      else
+       s = *sp;
+  
+      /* Ignore line starting with #. */
+      if (cin_ispreproc(s))
+       return FALSE;
+--- 5585,5621 ----
+   * "sp" points to a string with the line.  When looking at other lines it must
+   * be restored to the line.  When it's NULL fetch lines here.
+   * "lnum" is where we start looking.
++  * "min_lnum" is the line before which we will not be looking.
+   */
+      static int
+! cin_isfuncdecl(sp, first_lnum, min_lnum, ind_maxparen, ind_maxcomment)
+      char_u   **sp;
+      linenr_T first_lnum;
++     linenr_T min_lnum;
++     int              ind_maxparen;
++     int              ind_maxcomment;
+  {
+      char_u   *s;
+      linenr_T lnum = first_lnum;
+      int              retval = FALSE;
++     pos_T    *trypos;
++     int              just_started = TRUE;
+  
+      if (sp == NULL)
+       s = ml_get(lnum);
+      else
+       s = *sp;
+  
++     if (find_last_paren(s, '(', ')')
++      && (trypos = find_match_paren(ind_maxparen, ind_maxcomment)) != NULL)
++     {
++      lnum = trypos->lnum;
++      if (lnum < min_lnum)
++          return FALSE;
++ 
++      s = ml_get(lnum);
++     }
++ 
+      /* Ignore line starting with #. */
+      if (cin_ispreproc(s))
+       return FALSE;
+***************
+*** 5650,5662 ****
+           /* Require a comma at end of the line or a comma or ')' at the
+            * start of next line. */
+           s = skipwhite(s);
+!          if (!comma && *s != ',' && *s != ')')
+               break;
+       }
+       else if (cin_iscomment(s))      /* ignore comments */
+           s = cin_skipcomment(s);
+       else
+           ++s;
+      }
+  
+  done:
+--- 5666,5682 ----
+           /* Require a comma at end of the line or a comma or ')' at the
+            * start of next line. */
+           s = skipwhite(s);
+!          if (!just_started && (!comma && *s != ',' && *s != ')'))
+               break;
++          just_started = FALSE;
+       }
+       else if (cin_iscomment(s))      /* ignore comments */
+           s = cin_skipcomment(s);
+       else
++      {
+           ++s;
++          just_started = FALSE;
++      }
+      }
+  
+  done:
+***************
+*** 7158,7164 ****
+                        * (it's a variable declaration).
+                        */
+                       if (start_brace != BRACE_IN_COL0
+!                              || !cin_isfuncdecl(&l, curwin->w_cursor.lnum))
+                       {
+                           /* if the line is terminated with another ','
+                            * it is a continued variable initialization.
+--- 7178,7185 ----
+                        * (it's a variable declaration).
+                        */
+                       if (start_brace != BRACE_IN_COL0
+!                              || !cin_isfuncdecl(&l, curwin->w_cursor.lnum,
+!                                           0, ind_maxparen, ind_maxcomment))
+                       {
+                           /* if the line is terminated with another ','
+                            * it is a continued variable initialization.
+***************
+*** 8019,8025 ****
+               && vim_strchr(theline, '}') == NULL
+               && !cin_ends_in(theline, (char_u *)":", NULL)
+               && !cin_ends_in(theline, (char_u *)",", NULL)
+!              && cin_isfuncdecl(NULL, cur_curpos.lnum + 1)
+               && !cin_isterminated(theline, FALSE, TRUE))
+       {
+           amount = ind_func_type;
+--- 8040,8048 ----
+               && vim_strchr(theline, '}') == NULL
+               && !cin_ends_in(theline, (char_u *)":", NULL)
+               && !cin_ends_in(theline, (char_u *)",", NULL)
+!              && cin_isfuncdecl(NULL, cur_curpos.lnum + 1,
+!                                cur_curpos.lnum + 1,
+!                                ind_maxparen, ind_maxcomment)
+               && !cin_isterminated(theline, FALSE, TRUE))
+       {
+           amount = ind_func_type;
+***************
+*** 8125,8131 ****
+                * If the line looks like a function declaration, and we're
+                * not in a comment, put it the left margin.
+                */
+!              if (cin_isfuncdecl(NULL, cur_curpos.lnum))  /* XXX */
+                   break;
+               l = ml_get_curline();
+  
+--- 8148,8155 ----
+                * If the line looks like a function declaration, and we're
+                * not in a comment, put it the left margin.
+                */
+!              if (cin_isfuncdecl(NULL, cur_curpos.lnum, 0,
+!                                 ind_maxparen, ind_maxcomment))  /* XXX */
+                   break;
+               l = ml_get_curline();
+  
+***************
+*** 8173,8179 ****
+                * line (and the ones that follow) needs to be indented as
+                * parameters.
+                */
+!              if (cin_isfuncdecl(&l, curwin->w_cursor.lnum))
+               {
+                   amount = ind_param;
+                   break;
+--- 8197,8204 ----
+                * line (and the ones that follow) needs to be indented as
+                * parameters.
+                */
+!              if (cin_isfuncdecl(&l, curwin->w_cursor.lnum, 0,
+!                                 ind_maxparen, ind_maxcomment))
+               {
+                   amount = ind_param;
+                   break;
+*** ../vim-7.3.379/src/testdir/test3.in        2011-12-14 20:05:17.000000000 +0100
+--- src/testdir/test3.in       2011-12-14 20:11:24.000000000 +0100
+***************
+*** 1429,1435 ****
+  
+  STARTTEST
+  :set cino&
+! 2kdd=4][
+  ENDTEST
+  
+  void func(void)
+--- 1429,1435 ----
+  
+  STARTTEST
+  :set cino&
+! 2kdd=7][
+  ENDTEST
+  
+  void func(void)
+***************
+*** 1478,1484 ****
+       3, 4,
+       5, 6};
+  
+! printf("Don't you dare indent this line incorrectly!\n);
+  }
+  
+  STARTTEST
+--- 1478,1506 ----
+       3, 4,
+       5, 6};
+  
+! printf("Don't you dare indent this line incorrectly!\n");
+! }
+! 
+! void
+! func4(a, b,
+!              c)
+! int a;
+! int b;
+! int c;
+! {
+! }
+! 
+! void
+! func5(
+!              int a,
+!              int b)
+! {
+! }
+! 
+! void
+! func6(
+!              int a)
+! {
+  }
+  
+  STARTTEST
+*** ../vim-7.3.379/src/testdir/test3.ok        2011-12-14 20:05:17.000000000 +0100
+--- src/testdir/test3.ok       2011-12-14 20:11:24.000000000 +0100
+***************
+*** 1331,1337 ****
+               3, 4,
+               5, 6};
+  
+!      printf("Don't you dare indent this line incorrectly!\n);
+  }
+  
+  
+--- 1331,1359 ----
+               3, 4,
+               5, 6};
+  
+!      printf("Don't you dare indent this line incorrectly!\n");
+! }
+! 
+!      void
+! func4(a, b,
+!              c)
+!      int a;
+!      int b;
+!      int c;
+! {
+! }
+! 
+!      void
+! func5(
+!              int a,
+!              int b)
+! {
+! }
+! 
+!      void
+! func6(
+!              int a)
+! {
+  }
+  
+  
+*** ../vim-7.3.379/src/version.c       2011-12-14 20:05:17.000000000 +0100
+--- src/version.c      2011-12-14 20:20:50.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     380,
+  /**/
+
+-- 
+"Intelligence has much less practical application than you'd think."
+                 -- Scott Adams, Dilbert.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.381.patch0 b/vim/patches/vim-7.3.381.patch0
new file mode 100644 (file)
index 0000000..b795737
--- /dev/null
@@ -0,0 +1,260 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.381
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.381
+Problem:    Configure silently skips interfaces that won't work.
+Solution:   Add the --enable-fail_if_missing argument. (Shlomi Fish)
+Files:     src/Makefile, src/configure.in, src/auto/configure
+
+
+*** ../vim-7.3.380/src/Makefile        2011-12-08 15:17:28.000000000 +0100
+--- src/Makefile       2011-12-14 20:49:26.000000000 +0100
+***************
+*** 389,394 ****
+--- 389,399 ----
+  #CONF_OPT_PLTHOME  = --with-plthome=/usr/local/drscheme
+  #CONF_OPT_PLTHOME  = --with-plthome=/home/me/mz
+  
++ # Uncomment the next line to fail if one of the requested language interfaces
++ # cannot be configured.  Without this Vim will be build anyway, without
++ # the failing interfaces.
++ #CONF_OPT_FAIL = --enable-fail-if-missing
++ 
+  # PERL
+  # Uncomment one of these when you want to include the Perl interface.
+  # First one is for static linking, second one for dynamic loading.
+***************
+*** 1648,1654 ****
+               CC="$(CC)" CPPFLAGS="$(CPPFLAGS)" CFLAGS="$(CFLAGS)" \
+               LDFLAGS="$(LDFLAGS)" $(CONF_SHELL) srcdir="$(srcdir)" \
+               ./configure $(CONF_OPT_GUI) $(CONF_OPT_X) $(CONF_OPT_XSMP) \
+!              $(CONF_OPT_DARWIN) $(CONF_OPT_PERL) $(CONF_OPT_PYTHON) $(CONF_OPT_PYTHON3) \
+               $(CONF_OPT_TCL) $(CONF_OPT_RUBY) $(CONF_OPT_NLS) \
+               $(CONF_OPT_CSCOPE) $(CONF_OPT_MULTIBYTE) $(CONF_OPT_INPUT) \
+               $(CONF_OPT_OUTPUT) $(CONF_OPT_GPM) $(CONF_OPT_WORKSHOP) \
+--- 1653,1660 ----
+               CC="$(CC)" CPPFLAGS="$(CPPFLAGS)" CFLAGS="$(CFLAGS)" \
+               LDFLAGS="$(LDFLAGS)" $(CONF_SHELL) srcdir="$(srcdir)" \
+               ./configure $(CONF_OPT_GUI) $(CONF_OPT_X) $(CONF_OPT_XSMP) \
+!              $(CONF_OPT_DARWIN) $(CONF_OPT_FAIL) \
+!              $(CONF_OPT_PERL) $(CONF_OPT_PYTHON) $(CONF_OPT_PYTHON3) \
+               $(CONF_OPT_TCL) $(CONF_OPT_RUBY) $(CONF_OPT_NLS) \
+               $(CONF_OPT_CSCOPE) $(CONF_OPT_MULTIBYTE) $(CONF_OPT_INPUT) \
+               $(CONF_OPT_OUTPUT) $(CONF_OPT_GPM) $(CONF_OPT_WORKSHOP) \
+*** ../vim-7.3.380/src/configure.in    2011-12-14 19:22:29.000000000 +0100
+--- src/configure.in   2011-12-14 20:46:36.000000000 +0100
+***************
+*** 28,33 ****
+--- 28,43 ----
+  AC_HEADER_STDC
+  AC_HEADER_SYS_WAIT
+  
++ dnl Check for the flag that fails if stuff are missing.
++ 
++ AC_MSG_CHECKING(--enable-fail-if-missing argument)
++ AC_ARG_ENABLE(fail_if_missing,
++      [  --enable-fail-if-missing    Fail if dependencies on additional features
++      specified on the command line are missing.], 
++      [fail_if_missing="yes"],
++      [fail_if_missing="no"])
++ AC_MSG_RESULT($fail_if_missing)
++ 
+  dnl Set default value for CFLAGS if none is defined or it's empty
+  if test -z "$CFLAGS"; then
+    CFLAGS="-O"
+***************
+*** 491,496 ****
+--- 501,509 ----
+        LUA_CFLAGS="-DDYNAMIC_LUA_DLL=\\\"liblua${vi_cv_version_lua}.so$LUA_SONAME\\\" $LUA_CFLAGS"
+      fi
+    fi
++   if test "$fail_if_missing" = "yes" -a -z "$LUA_SRC"; then
++     AC_MSG_ERROR([could not configure lua])
++   fi
+    AC_SUBST(LUA_SRC)
+    AC_SUBST(LUA_OBJ)
+    AC_SUBST(LUA_PRO)
+***************
+*** 781,786 ****
+--- 794,803 ----
+        PERL_CFLAGS="-DDYNAMIC_PERL_DLL=\\\"$libperl\\\" $PERL_CFLAGS"
+      fi
+    fi
++ 
++   if test "$fail_if_missing" = "yes" -a "$perl_ok" != "yes"; then
++     AC_MSG_ERROR([could not configure perl])
++   fi
+  fi
+  AC_SUBST(shrpenv)
+  AC_SUBST(PERL_SRC)
+***************
+*** 966,971 ****
+--- 983,992 ----
+        AC_MSG_RESULT(too old)
+      fi
+    fi
++ 
++   if test "$fail_if_missing" = "yes" -a "$python_ok" != "yes"; then
++     AC_MSG_ERROR([could not configure python])
++   fi
+  fi
+  
+  AC_SUBST(PYTHON_CONFDIR)
+***************
+*** 1389,1394 ****
+--- 1410,1418 ----
+        AC_MSG_RESULT(too old; need Tcl version 8.0 or later)
+      fi
+    fi
++   if test "$fail_if_missing" = "yes" -a -z "$TCL_SRC"; then
++     AC_MSG_ERROR([could not configure Tcl])
++   fi
+  fi
+  AC_SUBST(TCL_SRC)
+  AC_SUBST(TCL_OBJ)
+***************
+*** 1469,1474 ****
+--- 1493,1502 ----
+        AC_MSG_RESULT(too old; need Ruby version 1.6.0 or later)
+      fi
+    fi
++ 
++   if test "$fail_if_missing" = "yes" -a -z "$RUBY_OBJ"; then
++     AC_MSG_ERROR([could not configure Ruby])
++   fi
+  fi
+  AC_SUBST(RUBY_SRC)
+  AC_SUBST(RUBY_OBJ)
+*** ../vim-7.3.380/src/auto/configure  2011-12-14 19:22:29.000000000 +0100
+--- src/auto/configure 2011-12-14 20:49:51.000000000 +0100
+***************
+*** 741,746 ****
+--- 741,747 ----
+  ac_subst_files=''
+  ac_user_opts='
+  enable_option_checking
++ enable_fail_if_missing
+  enable_darwin
+  with_mac_arch
+  with_developer_dir
+***************
+*** 1418,1423 ****
+--- 1419,1426 ----
+    --disable-option-checking  ignore unrecognized --enable/--with options
+    --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
+    --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
++   --enable-fail-if-missing    Fail if dependencies on additional features
++      specified on the command line are missing.
+    --disable-darwin        Disable Darwin (Mac OS X) support.
+    --disable-selinux    Don't check for SELinux support.
+    --disable-xsmp          Disable XSMP session management
+***************
+*** 3949,3954 ****
+--- 3952,3970 ----
+  fi
+  
+  
++ 
++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking --enable-fail-if-missing argument" >&5
++ $as_echo_n "checking --enable-fail-if-missing argument... " >&6; }
++ # Check whether --enable-fail_if_missing was given.
++ if test "${enable_fail_if_missing+set}" = set; then :
++   enableval=$enable_fail_if_missing; fail_if_missing="yes"
++ else
++   fail_if_missing="no"
++ fi
++ 
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $fail_if_missing" >&5
++ $as_echo "$fail_if_missing" >&6; }
++ 
+  if test -z "$CFLAGS"; then
+    CFLAGS="-O"
+    test "$GCC" = yes && CFLAGS="-O2 -fno-strength-reduce -Wall"
+***************
+*** 4727,4732 ****
+--- 4743,4751 ----
+        LUA_CFLAGS="-DDYNAMIC_LUA_DLL=\\\"liblua${vi_cv_version_lua}.so$LUA_SONAME\\\" $LUA_CFLAGS"
+      fi
+    fi
++   if test "$fail_if_missing" = "yes" -a -z "$LUA_SRC"; then
++     as_fn_error "could not configure lua" "$LINENO" 5
++   fi
+  
+  
+  
+***************
+*** 5140,5145 ****
+--- 5159,5168 ----
+        PERL_CFLAGS="-DDYNAMIC_PERL_DLL=\\\"$libperl\\\" $PERL_CFLAGS"
+      fi
+    fi
++ 
++   if test "$fail_if_missing" = "yes" -a "$perl_ok" != "yes"; then
++     as_fn_error "could not configure perl" "$LINENO" 5
++   fi
+  fi
+  
+  
+***************
+*** 5429,5434 ****
+--- 5452,5461 ----
+  $as_echo "too old" >&6; }
+      fi
+    fi
++ 
++   if test "$fail_if_missing" = "yes" -a "$python_ok" != "yes"; then
++     as_fn_error "could not configure python" "$LINENO" 5
++   fi
+  fi
+  
+  
+***************
+*** 6216,6221 ****
+--- 6243,6251 ----
+  $as_echo "too old; need Tcl version 8.0 or later" >&6; }
+      fi
+    fi
++   if test "$fail_if_missing" = "yes" -a -z "$TCL_SRC"; then
++     as_fn_error "could not configure Tcl" "$LINENO" 5
++   fi
+  fi
+  
+  
+***************
+*** 6353,6358 ****
+--- 6383,6392 ----
+  $as_echo "too old; need Ruby version 1.6.0 or later" >&6; }
+      fi
+    fi
++ 
++   if test "$fail_if_missing" = "yes" -a -z "$RUBY_OBJ"; then
++     as_fn_error "could not configure Ruby" "$LINENO" 5
++   fi
+  fi
+  
+  
+*** ../vim-7.3.380/src/version.c       2011-12-14 20:21:29.000000000 +0100
+--- src/version.c      2011-12-14 20:50:42.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     381,
+  /**/
+
+-- 
+The psychic said, "God bless you."  I said, "I didn't sneeze."  She
+looked deep into my eyes and said, "You will, eventually."  And, damn
+if she wasn't right.  Two days later, I sneezed.  --Ellen Degeneres
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.382.patch0 b/vim/patches/vim-7.3.382.patch0
new file mode 100644 (file)
index 0000000..7f344e7
--- /dev/null
@@ -0,0 +1,173 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.382
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.382 (after 7.3.376)
+Problem:    IME characters are inserted twice.
+Solution:   Do not call DefWindowProc() if the event was handled. (Yasuhiro
+           Matsumoto)
+Files:     src/gui_w32.c
+
+
+*** ../vim-7.3.381/src/gui_w32.c       2011-12-14 15:23:53.000000000 +0100
+--- src/gui_w32.c      2011-12-15 21:50:51.000000000 +0100
+***************
+*** 798,804 ****
+               if (pt.y < rect.top)
+               {
+                   show_tabline_popup_menu();
+!                  return 0;
+               }
+           }
+           return MyWindowProc(hwnd, uMsg, wParam, lParam);
+--- 798,804 ----
+               if (pt.y < rect.top)
+               {
+                   show_tabline_popup_menu();
+!                  return 0L;
+               }
+           }
+           return MyWindowProc(hwnd, uMsg, wParam, lParam);
+***************
+*** 828,834 ****
+--- 828,837 ----
+  
+      case WM_ENDSESSION:
+       if (wParam)     /* system only really goes down when wParam is TRUE */
++      {
+           _OnEndSession();
++          return 0L;
++      }
+       break;
+  
+      case WM_CHAR:
+***************
+*** 866,872 ****
+        * are received, mouse pointer remains hidden. */
+       return MyWindowProc(hwnd, uMsg, wParam, lParam);
+  #else
+!      return 0;
+  #endif
+  
+      case WM_SIZING:  /* HANDLE_MSG doesn't seem to handle this one */
+--- 869,875 ----
+        * are received, mouse pointer remains hidden. */
+       return MyWindowProc(hwnd, uMsg, wParam, lParam);
+  #else
+!      return 0L;
+  #endif
+  
+      case WM_SIZING:  /* HANDLE_MSG doesn't seem to handle this one */
+***************
+*** 874,880 ****
+  
+      case WM_MOUSEWHEEL:
+       _OnMouseWheel(hwnd, HIWORD(wParam));
+!      break;
+  
+       /* Notification for change in SystemParametersInfo() */
+      case WM_SETTINGCHANGE:
+--- 877,883 ----
+  
+      case WM_MOUSEWHEEL:
+       _OnMouseWheel(hwnd, HIWORD(wParam));
+!      return 0L;
+  
+       /* Notification for change in SystemParametersInfo() */
+      case WM_SETTINGCHANGE:
+***************
+*** 987,999 ****
+--- 990,1008 ----
+           case TCN_SELCHANGE:
+               if (gui_mch_showing_tabline()
+                                 && ((LPNMHDR)lParam)->hwndFrom == s_tabhwnd)
++              {
+                   send_tabline_event(TabCtrl_GetCurSel(s_tabhwnd) + 1);
++                  return 0L;
++              }
+               break;
+  
+           case NM_RCLICK:
+               if (gui_mch_showing_tabline()
+                       && ((LPNMHDR)lParam)->hwndFrom == s_tabhwnd)
++              {
+                   show_tabline_popup_menu();
++                  return 0L;
++              }
+               break;
+  # endif
+           default:
+***************
+*** 1037,1042 ****
+--- 1046,1052 ----
+               out_flush();
+               did_menu_tip = TRUE;
+           }
++          return 0L;
+       }
+       break;
+  #endif
+***************
+*** 1079,1096 ****
+      case WM_IME_NOTIFY:
+       if (!_OnImeNotify(hwnd, (DWORD)wParam, (DWORD)lParam))
+           return MyWindowProc(hwnd, uMsg, wParam, lParam);
+!      break;
+      case WM_IME_COMPOSITION:
+       if (!_OnImeComposition(hwnd, wParam, lParam))
+           return MyWindowProc(hwnd, uMsg, wParam, lParam);
+!      break;
+  #endif
+  
+      default:
+       if (uMsg == msh_msgmousewheel && msh_msgmousewheel != 0)
+       {   /* handle MSH_MOUSEWHEEL messages for Intellimouse */
+           _OnMouseWheel(hwnd, HIWORD(wParam));
+!          break;
+       }
+  #ifdef MSWIN_FIND_REPLACE
+       else if (uMsg == s_findrep_msg && s_findrep_msg != 0)
+--- 1089,1107 ----
+      case WM_IME_NOTIFY:
+       if (!_OnImeNotify(hwnd, (DWORD)wParam, (DWORD)lParam))
+           return MyWindowProc(hwnd, uMsg, wParam, lParam);
+!      return 1L;
+! 
+      case WM_IME_COMPOSITION:
+       if (!_OnImeComposition(hwnd, wParam, lParam))
+           return MyWindowProc(hwnd, uMsg, wParam, lParam);
+!      return 1L;
+  #endif
+  
+      default:
+       if (uMsg == msh_msgmousewheel && msh_msgmousewheel != 0)
+       {   /* handle MSH_MOUSEWHEEL messages for Intellimouse */
+           _OnMouseWheel(hwnd, HIWORD(wParam));
+!          return 0L;
+       }
+  #ifdef MSWIN_FIND_REPLACE
+       else if (uMsg == s_findrep_msg && s_findrep_msg != 0)
+*** ../vim-7.3.381/src/version.c       2011-12-14 20:51:19.000000000 +0100
+--- src/version.c      2011-12-15 21:48:49.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     382,
+  /**/
+
+-- 
+Even got a Datapoint 3600(?) with a DD50 connector instead of the
+usual DB25...  what a nightmare trying to figure out the pinout
+for *that* with no spex...
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.383.patch0 b/vim/patches/vim-7.3.383.patch0
new file mode 100644 (file)
index 0000000..c0ce6d9
--- /dev/null
@@ -0,0 +1,51 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.383
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.383
+Problem:    For EBCDIC pound sign is defined as 't'.
+Solution:   Correctly define POUND.
+Files:     src/ascii.h
+
+
+*** ../vim-7.3.382/src/ascii.h 2011-09-02 14:18:14.000000000 +0200
+--- src/ascii.h        2011-12-17 21:38:36.000000000 +0100
+***************
+*** 123,129 ****
+  #define DCS          0x90    /* Device Control String */
+  #define STERM                0x9c    /* String Terminator */
+  
+! #define POUND                '\xA3'
+  
+  #define CTRL_F_STR   "\056"
+  #define CTRL_H_STR   "\026"
+--- 123,129 ----
+  #define DCS          0x90    /* Device Control String */
+  #define STERM                0x9c    /* String Terminator */
+  
+! #define POUND                0xB1
+  
+  #define CTRL_F_STR   "\056"
+  #define CTRL_H_STR   "\026"
+*** ../vim-7.3.382/src/version.c       2011-12-15 21:51:32.000000000 +0100
+--- src/version.c      2011-12-23 12:46:08.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     383,
+  /**/
+
+-- 
+Vim is like Emacs without all the typing.  (John "Johann" Spetz)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.384.patch0 b/vim/patches/vim-7.3.384.patch0
new file mode 100644 (file)
index 0000000..f75ff40
--- /dev/null
@@ -0,0 +1,53 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.384
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.384
+Problem:    Mapping CTRL-K in Insert mode breaks CTRL-X CTRL-K for dictionary
+           completion.
+Solution:   Add CTRL-K to the list of recognized keys. (James McCoy)
+Files:     src/edit.c
+
+
+*** ../vim-7.3.383/src/edit.c  2011-10-26 17:04:23.000000000 +0200
+--- src/edit.c 2011-12-23 12:36:22.000000000 +0100
+***************
+*** 2183,2189 ****
+                   || c == Ctrl_I || c == Ctrl_D || c == Ctrl_P
+                   || c == Ctrl_N || c == Ctrl_T || c == Ctrl_V
+                   || c == Ctrl_Q || c == Ctrl_U || c == Ctrl_O
+!                  || c == Ctrl_S || c == 's');
+       case CTRL_X_SCROLL:
+           return (c == Ctrl_Y || c == Ctrl_E);
+       case CTRL_X_WHOLE_LINE:
+--- 2183,2189 ----
+                   || c == Ctrl_I || c == Ctrl_D || c == Ctrl_P
+                   || c == Ctrl_N || c == Ctrl_T || c == Ctrl_V
+                   || c == Ctrl_Q || c == Ctrl_U || c == Ctrl_O
+!                  || c == Ctrl_S || c == Ctrl_K || c == 's');
+       case CTRL_X_SCROLL:
+           return (c == Ctrl_Y || c == Ctrl_E);
+       case CTRL_X_WHOLE_LINE:
+*** ../vim-7.3.383/src/version.c       2011-12-23 12:46:56.000000000 +0100
+--- src/version.c      2011-12-23 12:53:38.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     384,
+  /**/
+
+-- 
+Q: Is selling software the same as selling hardware?
+A: No, good hardware is sold new, good software has already been used by many.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.385.patch0 b/vim/patches/vim-7.3.385.patch0
new file mode 100644 (file)
index 0000000..405a77f
--- /dev/null
@@ -0,0 +1,69 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.385
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.385
+Problem:    When using an expression mapping on the command line the cursor
+           ends up in the wrong place. (Yasuhiro Matsumoto)
+Solution:   Save and restore msg_col and msg_row when evaluating the
+           expression.
+Files:     src/getchar.
+
+
+*** ../vim-7.3.384/src/getchar.c       2011-10-12 22:02:07.000000000 +0200
+--- src/getchar.c      2011-12-14 18:37:52.000000000 +0100
+***************
+*** 4510,4515 ****
+--- 4510,4517 ----
+      char_u   *expr;
+      char_u   *save_cmd;
+      pos_T    save_cursor;
++     int              save_msg_col;
++     int              save_msg_row;
+  
+      /* Remove escaping of CSI, because "str" is in a format to be used as
+       * typeahead. */
+***************
+*** 4533,4544 ****
+--- 4535,4550 ----
+  #endif
+      set_vim_var_char(c);  /* set v:char to the typed character */
+      save_cursor = curwin->w_cursor;
++     save_msg_col = msg_col;
++     save_msg_row = msg_row;
+      p = eval_to_string(expr, NULL, FALSE);
+      --textlock;
+  #ifdef FEAT_EX_EXTRA
+      --ex_normal_lock;
+  #endif
+      curwin->w_cursor = save_cursor;
++     msg_col = save_msg_col;
++     msg_row = save_msg_row;
+  
+      restore_cmdline_alloc(save_cmd);
+      vim_free(expr);
+*** ../vim-7.3.384/src/version.c       2011-12-23 13:14:58.000000000 +0100
+--- src/version.c      2011-12-23 14:53:23.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     385,
+  /**/
+
+-- 
+`When any government, or any church for that matter, undertakes to say to
+ its subjects, "This you may not read, this you must not see, this you are
+ forbidden to know," the end result is tyranny and oppression no matter how
+ holy the motives' -- Robert A Heinlein, "If this goes on --"
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.386.patch0 b/vim/patches/vim-7.3.386.patch0
new file mode 100644 (file)
index 0000000..c903505
--- /dev/null
@@ -0,0 +1,55 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.386
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.386
+Problem:    Test 83 fails when iconv does not support cp932. (raf)
+Solution:   Test if conversion works. (Yukihiro Nakadaira)
+Files:     src/testdir/test83.in
+
+
+*** ../vim-7.3.385/src/testdir/test83.in       2011-10-12 19:53:31.000000000 +0200
+--- src/testdir/test83.in      2011-12-21 21:01:44.000000000 +0100
+***************
+*** 2,8 ****
+  
+  STARTTEST
+  :so mbyte.vim
+! :if !has('iconv')
+  : e! test.ok
+  : w! test.out
+  : qa!
+--- 2,8 ----
+  
+  STARTTEST
+  :so mbyte.vim
+! :if !has('iconv') || iconv("\x82\x60", "cp932", "utf-8") != "\uff21"
+  : e! test.ok
+  : w! test.out
+  : qa!
+*** ../vim-7.3.385/src/version.c       2011-12-23 14:54:01.000000000 +0100
+--- src/version.c      2011-12-23 14:55:38.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     386,
+  /**/
+
+-- 
+WOMAN:   King of the who?
+ARTHUR:  The Britons.
+WOMAN:   Who are the Britons?
+ARTHUR:  Well, we all are. we're all Britons and I am your king.
+                                  The Quest for the Holy Grail (Monty Python)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.387.patch0 b/vim/patches/vim-7.3.387.patch0
new file mode 100644 (file)
index 0000000..6b20a58
--- /dev/null
@@ -0,0 +1,61 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.387
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.387 (after 7.3.386)
+Problem:    Test 83 may fail for some encodings.
+Solution:   Set 'encoding' to utf-8 earlier.
+Files:     src/testdir/test83.in
+
+
+*** ../vim-7.3.386/src/testdir/test83.in       2011-12-23 14:56:24.000000000 +0100
+--- src/testdir/test83.in      2011-12-30 13:05:05.000000000 +0100
+***************
+*** 2,13 ****
+  
+  STARTTEST
+  :so mbyte.vim
+  :if !has('iconv') || iconv("\x82\x60", "cp932", "utf-8") != "\uff21"
+  : e! test.ok
+  : w! test.out
+  : qa!
+  :endif
+- :set enc=utf8
+  
+  :/^text for tags1$/,/^text for tags1$/+1w! Xtags1.txt
+  :/^text for tags2$/,/^text for tags2$/+1w! Xtags2.txt
+--- 2,13 ----
+  
+  STARTTEST
+  :so mbyte.vim
++ :set enc=utf8
+  :if !has('iconv') || iconv("\x82\x60", "cp932", "utf-8") != "\uff21"
+  : e! test.ok
+  : w! test.out
+  : qa!
+  :endif
+  
+  :/^text for tags1$/,/^text for tags1$/+1w! Xtags1.txt
+  :/^text for tags2$/,/^text for tags2$/+1w! Xtags2.txt
+*** ../vim-7.3.386/src/version.c       2011-12-23 14:56:24.000000000 +0100
+--- src/version.c      2011-12-30 13:06:17.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     387,
+  /**/
+
+-- 
+Mental Floss prevents moral decay!
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.388.patch0 b/vim/patches/vim-7.3.388.patch0
new file mode 100644 (file)
index 0000000..7a6df89
--- /dev/null
@@ -0,0 +1,45 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.388
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.388
+Problem:    Crash on exit when EXITFREE is defined and using tiny features.
+Solution:   Check for NULL window pointer. (Dominique Pelle)
+Files:     src/buffer.c
+
+
+*** ../vim-7.3.387/src/buffer.c        2011-11-30 15:40:51.000000000 +0100
+--- src/buffer.c       2011-12-30 13:35:26.000000000 +0100
+***************
+*** 419,424 ****
+--- 419,426 ----
+      if (
+  #ifdef FEAT_WINDOWS
+       win_valid(win) &&
++ #else
++      win != NULL &&
+  #endif
+                         win->w_buffer == buf)
+       win->w_buffer = NULL;  /* make sure we don't use the buffer now */
+*** ../vim-7.3.387/src/version.c       2011-12-30 13:09:15.000000000 +0100
+--- src/version.c      2011-12-30 13:37:23.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     388,
+  /**/
+
+-- 
+Be nice to your kids...  they'll be the ones choosing your nursing home.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.389.patch0 b/vim/patches/vim-7.3.389.patch0
new file mode 100644 (file)
index 0000000..c8a968c
--- /dev/null
@@ -0,0 +1,61 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.389
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.389
+Problem:    After typing at a prompt the "MORE" message appears too soon.
+Solution:   reset lines_left in msg_end_prompt(). (Eswald)
+Files:     src/message.c
+
+
+*** ../vim-7.3.388/src/message.c       2011-09-14 15:39:26.000000000 +0200
+--- src/message.c      2011-12-30 14:08:05.000000000 +0100
+***************
+*** 85,91 ****
+   *               need_wait_return to be set.  This is a hack to make ":ts"
+   *               work without an extra prompt.
+   * lines_left            Number of lines available for messages before the
+!  *               more-prompt is to be given.
+   * need_wait_return TRUE when the hit-return prompt is needed.
+   *               Reset: After giving the hit-return prompt, when the user
+   *               has answered some other prompt.
+--- 85,91 ----
+   *               need_wait_return to be set.  This is a hack to make ":ts"
+   *               work without an extra prompt.
+   * lines_left            Number of lines available for messages before the
+!  *               more-prompt is to be given.  -1 when not set.
+   * need_wait_return TRUE when the hit-return prompt is needed.
+   *               Reset: After giving the hit-return prompt, when the user
+   *               has answered some other prompt.
+***************
+*** 855,860 ****
+--- 855,861 ----
+      cmdline_row = msg_row;
+      msg_col = 0;
+      msg_clr_eos();
++     lines_left = -1;
+  }
+  #endif
+  
+*** ../vim-7.3.388/src/version.c       2011-12-30 13:39:04.000000000 +0100
+--- src/version.c      2011-12-30 14:11:00.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     389,
+  /**/
+
+-- 
+Proofread carefully to see if you any words out.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.390.patch0 b/vim/patches/vim-7.3.390.patch0
new file mode 100644 (file)
index 0000000..7199f8e
--- /dev/null
@@ -0,0 +1,155 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.390
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.390
+Problem:    Using NULL buffer pointer in a window.
+Solution:   Check for w_buffer being NULL in more places. (Bjorn Winckler)
+Files:     src/ex_cmds.c, src/quickfix.c, src/window.c
+
+
+*** ../vim-7.3.389/src/ex_cmds.c       2011-11-30 17:01:55.000000000 +0100
+--- src/ex_cmds.c      2011-12-30 14:59:57.000000000 +0100
+***************
+*** 3390,3395 ****
+--- 3390,3402 ----
+                                     (flags & ECMD_HIDE) ? 0 : DOBUF_UNLOAD);
+  
+  #ifdef FEAT_AUTOCMD
++              /* Autocommands may open a new window and leave oldwin open
++               * which leads to crashes since the above call sets
++               * oldwin->w_buffer to NULL. */
++              if (curwin != oldwin && oldwin != aucmd_win
++                           && win_valid(oldwin) && oldwin->w_buffer == NULL)
++                  win_close(oldwin, FALSE);
++ 
+  # ifdef FEAT_EVAL
+               if (aborting())     /* autocmds may abort script processing */
+               {
+*** ../vim-7.3.389/src/quickfix.c      2011-08-10 18:36:49.000000000 +0200
+--- src/quickfix.c     2011-12-30 14:45:19.000000000 +0100
+***************
+*** 2675,2681 ****
+  bt_quickfix(buf)
+      buf_T    *buf;
+  {
+!     return (buf->b_p_bt[0] == 'q');
+  }
+  
+  /*
+--- 2675,2681 ----
+  bt_quickfix(buf)
+      buf_T    *buf;
+  {
+!     return buf != NULL && buf->b_p_bt[0] == 'q';
+  }
+  
+  /*
+***************
+*** 2686,2693 ****
+  bt_nofile(buf)
+      buf_T    *buf;
+  {
+!     return (buf->b_p_bt[0] == 'n' && buf->b_p_bt[2] == 'f')
+!          || buf->b_p_bt[0] == 'a';
+  }
+  
+  /*
+--- 2686,2693 ----
+  bt_nofile(buf)
+      buf_T    *buf;
+  {
+!     return buf != NULL && ((buf->b_p_bt[0] == 'n' && buf->b_p_bt[2] == 'f')
+!          || buf->b_p_bt[0] == 'a');
+  }
+  
+  /*
+***************
+*** 2697,2703 ****
+  bt_dontwrite(buf)
+      buf_T    *buf;
+  {
+!     return (buf->b_p_bt[0] == 'n');
+  }
+  
+      int
+--- 2697,2703 ----
+  bt_dontwrite(buf)
+      buf_T    *buf;
+  {
+!     return buf != NULL && buf->b_p_bt[0] == 'n';
+  }
+  
+      int
+*** ../vim-7.3.389/src/window.c        2011-09-14 14:43:21.000000000 +0200
+--- src/window.c       2011-12-30 14:44:18.000000000 +0100
+***************
+*** 2170,2176 ****
+  
+      /* When closing the help window, try restoring a snapshot after closing
+       * the window.  Otherwise clear the snapshot, it's now invalid. */
+!     if (win->w_buffer->b_help)
+       help_window = TRUE;
+      else
+       clear_snapshot(curtab, SNAP_HELP_IDX);
+--- 2170,2176 ----
+  
+      /* When closing the help window, try restoring a snapshot after closing
+       * the window.  Otherwise clear the snapshot, it's now invalid. */
+!     if (win->w_buffer != NULL && win->w_buffer->b_help)
+       help_window = TRUE;
+      else
+       clear_snapshot(curtab, SNAP_HELP_IDX);
+***************
+*** 2214,2226 ****
+  
+  #ifdef FEAT_SYN_HL
+      /* Free independent synblock before the buffer is freed. */
+!     reset_synblock(win);
+  #endif
+  
+      /*
+       * Close the link to the buffer.
+       */
+!     close_buffer(win, win->w_buffer, free_buf ? DOBUF_UNLOAD : 0);
+  
+      /* Autocommands may have closed the window already, or closed the only
+       * other window or moved to another tab page. */
+--- 2214,2228 ----
+  
+  #ifdef FEAT_SYN_HL
+      /* Free independent synblock before the buffer is freed. */
+!     if (win->w_buffer != NULL)
+!      reset_synblock(win);
+  #endif
+  
+      /*
+       * Close the link to the buffer.
+       */
+!     if (win->w_buffer != NULL)
+!      close_buffer(win, win->w_buffer, free_buf ? DOBUF_UNLOAD : 0);
+  
+      /* Autocommands may have closed the window already, or closed the only
+       * other window or moved to another tab page. */
+*** ../vim-7.3.389/src/version.c       2011-12-30 14:14:16.000000000 +0100
+--- src/version.c      2011-12-30 14:38:39.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     390,
+  /**/
+
+-- 
+There can't be a crisis today, my schedule is already full.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.391.patch0 b/vim/patches/vim-7.3.391.patch0
new file mode 100644 (file)
index 0000000..0a1bcce
--- /dev/null
@@ -0,0 +1,51 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.391
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.391
+Problem:    Can't check if the XPM_W32 feature is enabled.
+Solution:   Add xpm_w32 to the list of features. (kat)
+Files:     src/eval.c
+
+
+*** ../vim-7.3.390/src/eval.c  2011-12-14 15:32:44.000000000 +0100
+--- src/eval.c 2012-01-04 14:33:22.000000000 +0100
+***************
+*** 12260,12265 ****
+--- 12260,12268 ----
+  #ifdef FEAT_XFONTSET
+       "xfontset",
+  #endif
++ #ifdef FEAT_XPM_W32
++      "xpm_w32",
++ #endif
+  #ifdef USE_XSMP
+       "xsmp",
+  #endif
+*** ../vim-7.3.390/src/version.c       2011-12-30 15:01:55.000000000 +0100
+--- src/version.c      2012-01-04 14:34:31.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     391,
+  /**/
+
+-- 
+ROBIN:  The what?
+ARTHUR: The Holy Hand Grenade of Antioch.  'Tis one of the sacred relics
+        Brother Maynard always carries with him.
+ALL:    Yes. Of course.
+ARTHUR: (shouting) Bring up the Holy Hand Grenade!
+                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.392.patch0 b/vim/patches/vim-7.3.392.patch0
new file mode 100644 (file)
index 0000000..a603d90
--- /dev/null
@@ -0,0 +1,115 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.392
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.392
+Problem:    When setting 'undofile' while the file is already loaded but
+           unchanged, try reading the undo file. (Andy Wokula)
+Solution:   Compute a checksum of the text when 'undofile' is set. (Christian
+           Brabandt)
+Files:     src/option.c, src/testdir/test72.in, src/testdir/test72.ok
+
+
+*** ../vim-7.3.391/src/option.c        2011-11-30 11:31:25.000000000 +0100
+--- src/option.c       2012-01-04 19:34:11.000000000 +0100
+***************
+*** 7516,7521 ****
+--- 7516,7545 ----
+       compatible_set();
+      }
+  
++ #ifdef FEAT_PERSISTENT_UNDO
++     /* 'undofile' */
++     else if ((int *)varp == &curbuf->b_p_udf || (int *)varp == &p_udf)
++     {
++      char_u  hash[UNDO_HASH_SIZE];
++      buf_T   *save_curbuf = curbuf;
++ 
++      for (curbuf = firstbuf; curbuf != NULL; curbuf = curbuf->b_next)
++      {
++          /* When 'undofile' is set globally: for every buffer, otherwise
++           * only for the current buffer: Try to read in the undofile, if
++           * one exists and the buffer wasn't changed. */
++          if ((curbuf == save_curbuf
++                              || (opt_flags & OPT_GLOBAL) || opt_flags == 0)
++                  && !curbufIsChanged())
++          {
++              u_compute_hash(hash);
++              u_read_undo(NULL, hash, curbuf->b_fname);
++          }
++      }
++      curbuf = save_curbuf;
++     }
++ #endif
++ 
+      /* 'list', 'number' */
+      else if ((int *)varp == &curwin->w_p_list
+         || (int *)varp == &curwin->w_p_nu
+*** ../vim-7.3.391/src/testdir/test72.in       2010-08-15 21:57:29.000000000 +0200
+--- src/testdir/test72.in      2012-01-04 19:04:17.000000000 +0100
+***************
+*** 51,56 ****
+--- 51,62 ----
+  :e Xtestfile
+  uuu:w >>test.out
+  :"
++ :" Test that reading the undofiles when setting undofile works
++ :set noundofile ul=0
++ i
++ \eu:e! Xtestfile
++ :set undofile ul=100
++ uuuuuu:w >>test.out
+  :" And now with encryption, cryptmethod=zip
+  :e! Xtestfile
+  :set undofile cm=zip
+*** ../vim-7.3.391/src/testdir/test72.ok       2010-08-15 21:57:29.000000000 +0200
+--- src/testdir/test72.ok      2012-01-04 19:04:17.000000000 +0100
+***************
+*** 7,12 ****
+--- 7,22 ----
+  eight
+  nine
+  ten
++ one
++ two
++ three
++ four
++ five
++ six
++ seven
++ eight
++ nine
++ ten
+  monday
+  wednesday
+  thursday
+*** ../vim-7.3.391/src/version.c       2012-01-04 14:35:31.000000000 +0100
+--- src/version.c      2012-01-04 19:33:41.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     392,
+  /**/
+
+-- 
+BROTHER MAYNARD: Armaments Chapter Two Verses Nine to Twenty One.
+ANOTHER MONK:    And St.  Attila raised his hand grenade up on high saying "O
+                 Lord bless this thy hand grenade that with it thou mayest
+                 blow thine enemies to tiny bits, in thy mercy. "and the Lord
+                 did grin and people did feast upon the lambs and sloths and
+                 carp and anchovies and orang-utans and breakfast cereals and
+                 fruit bats and...
+BROTHER MAYNARD: Skip a bit brother ...
+                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.393.patch0 b/vim/patches/vim-7.3.393.patch0
new file mode 100644 (file)
index 0000000..ca6cbc9
--- /dev/null
@@ -0,0 +1,130 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.393
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.393
+Problem:    Win32: When resizing Vim it is always moved to the primary monitor
+           if the secondary monitor is on the left.
+Solution:   Use the nearest monitor. (Yukihiro Nakadaira)
+Files:     src/gui_w32.c
+
+
+*** ../vim-7.3.392/src/gui_w32.c       2011-12-15 21:51:32.000000000 +0100
+--- src/gui_w32.c      2012-01-04 20:25:58.000000000 +0100
+***************
+*** 1661,1669 ****
+  {
+      RECT     workarea_rect;
+      int              win_width, win_height;
+-     int              win_xpos, win_ypos;
+      WINDOWPLACEMENT wndpl;
+-     int              workarea_left;
+  
+      /* Try to keep window completely on screen. */
+      /* Get position of the screen work area.  This is the part that is not
+--- 1661,1667 ----
+***************
+*** 1685,1693 ****
+       GetWindowPlacement(s_hwnd, &wndpl);
+      }
+  
+-     win_xpos = wndpl.rcNormalPosition.left;
+-     win_ypos = wndpl.rcNormalPosition.top;
+- 
+      /* compute the size of the outside of the window */
+      win_width = width + GetSystemMetrics(SM_CXFRAME) * 2;
+      win_height = height + GetSystemMetrics(SM_CYFRAME) * 2
+--- 1683,1688 ----
+***************
+*** 1697,1732 ****
+  #endif
+                       ;
+  
+!     /* There is an inconsistency when using two monitors and Vim is on the
+!      * second (right) one: win_xpos will be the offset from the workarea of
+!      * the left monitor.  While with one monitor it's the offset from the
+!      * workarea (including a possible taskbar on the left).  Detect the second
+!      * monitor by checking for the left offset to be quite big. */
+!     if (workarea_rect.left > 300)
+!      workarea_left = 0;
+!     else
+!      workarea_left = workarea_rect.left;
+  
+!     /* If the window is going off the screen, move it on to the screen.
+!      * win_xpos and win_ypos are relative to the workarea. */
+      if ((direction & RESIZE_HOR)
+!          && workarea_left + win_xpos + win_width > workarea_rect.right)
+!      win_xpos = workarea_rect.right - win_width - workarea_left;
+  
+!     if ((direction & RESIZE_HOR) && win_xpos < 0)
+!      win_xpos = 0;
+  
+      if ((direction & RESIZE_VERT)
+!        && workarea_rect.top + win_ypos + win_height > workarea_rect.bottom)
+!      win_ypos = workarea_rect.bottom - win_height - workarea_rect.top;
+  
+!     if ((direction & RESIZE_VERT) && win_ypos < 0)
+!      win_ypos = 0;
+! 
+!     wndpl.rcNormalPosition.left = win_xpos;
+!     wndpl.rcNormalPosition.right = win_xpos + win_width;
+!     wndpl.rcNormalPosition.top = win_ypos;
+!     wndpl.rcNormalPosition.bottom = win_ypos + win_height;
+  
+      /* set window position - we should use SetWindowPlacement rather than
+       * SetWindowPos as the MSDN docs say the coord systems returned by
+--- 1692,1723 ----
+  #endif
+                       ;
+  
+!     /* The following should take care of keeping Vim on the same monitor, no
+!      * matter if the secondary monitor is left or right of the primary
+!      * monitor. */
+!     wndpl.rcNormalPosition.right = wndpl.rcNormalPosition.left + win_width;
+!     wndpl.rcNormalPosition.bottom = wndpl.rcNormalPosition.top + win_height;
+  
+!     /* If the window is going off the screen, move it on to the screen. */
+      if ((direction & RESIZE_HOR)
+!          && wndpl.rcNormalPosition.right > workarea_rect.right)
+!      OffsetRect(&wndpl.rcNormalPosition,
+!              workarea_rect.right - wndpl.rcNormalPosition.right, 0);
+  
+!     if ((direction & RESIZE_HOR)
+!          && wndpl.rcNormalPosition.left < workarea_rect.left)
+!      OffsetRect(&wndpl.rcNormalPosition,
+!              workarea_rect.left - wndpl.rcNormalPosition.left, 0);
+  
+      if ((direction & RESIZE_VERT)
+!          && wndpl.rcNormalPosition.bottom > workarea_rect.bottom)
+!      OffsetRect(&wndpl.rcNormalPosition,
+!              0, workarea_rect.bottom - wndpl.rcNormalPosition.bottom);
+  
+!     if ((direction & RESIZE_VERT)
+!          && wndpl.rcNormalPosition.top < workarea_rect.top)
+!      OffsetRect(&wndpl.rcNormalPosition,
+!              0, workarea_rect.top - wndpl.rcNormalPosition.top);
+  
+      /* set window position - we should use SetWindowPlacement rather than
+       * SetWindowPos as the MSDN docs say the coord systems returned by
+*** ../vim-7.3.392/src/version.c       2012-01-04 19:34:32.000000000 +0100
+--- src/version.c      2012-01-04 20:28:57.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     393,
+  /**/
+
+-- 
+I wonder, do vegetarians eat fruit bats?
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.394.patch0 b/vim/patches/vim-7.3.394.patch0
new file mode 100644 (file)
index 0000000..20c7cff
--- /dev/null
@@ -0,0 +1,62 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.394
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.394
+Problem:    When placing a mark while starting up a screen redraw messes up
+           the screen. (lith)
+Solution:   Don't redraw while still starting up. (Christian Brabandt)
+Files:     src/screen.c
+
+
+*** ../vim-7.3.393/src/screen.c        2011-09-02 14:07:31.000000000 +0200
+--- src/screen.c       2012-01-10 12:36:52.000000000 +0100
+***************
+*** 764,772 ****
+           doit = TRUE;
+      }
+  
+!     /* Return when there is nothing to do or screen updating already
+!      * happening. */
+!     if (!doit || updating_screen)
+       return;
+  
+      /* update all windows that need updating */
+--- 764,776 ----
+           doit = TRUE;
+      }
+  
+!     /* Return when there is nothing to do, screen updating is already
+!      * happening (recursive call) or still starting up. */
+!     if (!doit || updating_screen
+! #ifdef FEAT_GUI
+!          || gui.starting
+! #endif
+!          || starting)
+       return;
+  
+      /* update all windows that need updating */
+*** ../vim-7.3.393/src/version.c       2012-01-04 20:29:18.000000000 +0100
+--- src/version.c      2012-01-10 12:41:32.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     394,
+  /**/
+
+-- 
+It is illegal for anyone to try and stop a child from playfully jumping over
+puddles of water.
+               [real standing law in California, United States of America]
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.395.patch0 b/vim/patches/vim-7.3.395.patch0
new file mode 100644 (file)
index 0000000..cb26893
--- /dev/null
@@ -0,0 +1,115 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.395
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.395 (after 7.3.251)
+Problem:    "dv?bar" in the last line deletes too much and breaks undo.
+Solution:   Only adjust the cursor position when it's after the last line of
+           the buffer.  Add a test. (Christian Brabandt)
+Files:     src/ops.c, src/testdir/test43.in, src/testdir/test43.ok
+
+
+*** ../vim-7.3.394/src/ops.c   2011-09-21 17:33:49.000000000 +0200
+--- src/ops.c  2012-01-10 13:28:05.000000000 +0100
+***************
+*** 1961,1968 ****
+               /* Special case: gH<Del> deletes the last line. */
+               del_lines(1L, FALSE);
+               curwin->w_cursor = curpos;      /* restore curwin->w_cursor */
+!              if (curwin->w_cursor.lnum > 1)
+!                  --curwin->w_cursor.lnum;
+           }
+           else
+           {
+--- 1962,1969 ----
+               /* Special case: gH<Del> deletes the last line. */
+               del_lines(1L, FALSE);
+               curwin->w_cursor = curpos;      /* restore curwin->w_cursor */
+!              if (curwin->w_cursor.lnum > curbuf->b_ml.ml_line_count)
+!                  curwin->w_cursor.lnum = curbuf->b_ml.ml_line_count;
+           }
+           else
+           {
+***************
+*** 4434,4440 ****
+  #endif
+  
+  /*
+!  * implementation of the format operator 'gq'
+   */
+      void
+  op_format(oap, keep_cursor)
+--- 4435,4441 ----
+  #endif
+  
+  /*
+!  * Implementation of the format operator 'gq'.
+   */
+      void
+  op_format(oap, keep_cursor)
+*** ../vim-7.3.394/src/testdir/test43.in       2010-08-15 21:57:29.000000000 +0200
+--- src/testdir/test43.in      2012-01-10 13:41:13.000000000 +0100
+***************
+*** 13,19 ****
+  x:set magic
+  /\v(a)(b)\2\1\1/e
+  x/\V[ab]\(\[xy]\)\1
+! x:?^1?,$w! test.out
+  :qa!
+  ENDTEST
+  
+--- 13,23 ----
+  x:set magic
+  /\v(a)(b)\2\1\1/e
+  x/\V[ab]\(\[xy]\)\1
+! x:$
+! :set undolevels=100
+! dv?bar?
+! Yup:"
+! :?^1?,$w! test.out
+  :qa!
+  ENDTEST
+  
+***************
+*** 25,27 ****
+--- 29,33 ----
+  6 x ^aa$ x
+  7 (a)(b) abbaa
+  8 axx [ab]xx
++ 9 foobar
++ 
+*** ../vim-7.3.394/src/testdir/test43.ok       2010-08-15 21:57:29.000000000 +0200
+--- src/testdir/test43.ok      2012-01-10 13:42:39.000000000 +0100
+***************
+*** 6,8 ****
+--- 6,11 ----
+  6 x aa$ x
+  7 (a)(b) abba
+  8 axx ab]xx
++ 9 foobar
++ 9 foo
++ 
+*** ../vim-7.3.394/src/version.c       2012-01-10 12:42:05.000000000 +0100
+--- src/version.c      2012-01-10 13:30:40.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     395,
+  /**/
+
+-- 
+The Law, in its majestic equality, forbids the rich, as well as the
+poor, to sleep under the bridges, to beg in the streets, and to steal
+bread.                       -- Anatole France
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.396.patch0 b/vim/patches/vim-7.3.396.patch0
new file mode 100644 (file)
index 0000000..72b55a2
--- /dev/null
@@ -0,0 +1,49 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.396
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.396
+Problem:    After forcing an operator to be characterwise it can still become
+           linewise when spanning whole lines.
+Solution:   Don't make the operator linewise when motion_force was set.
+           (Christian Brabandt)
+Files:     src/ops.c
+
+
+*** ../vim-7.3.395/src/ops.c   2012-01-10 13:44:23.000000000 +0100
+--- src/ops.c  2012-01-10 13:28:05.000000000 +0100
+***************
+*** 1648,1653 ****
+--- 1648,1654 ----
+           && !oap->block_mode
+  #endif
+           && oap->line_count > 1
++          && oap->motion_force == NUL
+           && oap->op_type == OP_DELETE)
+      {
+       ptr = ml_get(oap->end.lnum) + oap->end.col;
+*** ../vim-7.3.395/src/version.c       2012-01-10 13:44:23.000000000 +0100
+--- src/version.c      2012-01-10 13:45:31.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     396,
+  /**/
+
+-- 
+Any sufficiently advanced technology is indistinguishable from magic.
+                                       Arthur C. Clarke
+Any sufficiently advanced bug is indistinguishable from a feature.
+                                        Rich Kulawiec
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.397.patch0 b/vim/patches/vim-7.3.397.patch0
new file mode 100644 (file)
index 0000000..866b3aa
--- /dev/null
@@ -0,0 +1,224 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.397
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.397
+Problem:    ":helpgrep" does not work properly when 'encoding' is not utf-8 or
+           latin1.
+Solution:   Convert non-ascii lines to 'encoding'. (Yasuhiro Matsumoto)
+Files:     src/quickfix.c, src/spell.c, src/misc2.c, src/proto/misc2.pro
+
+
+*** ../vim-7.3.396/src/quickfix.c      2011-12-30 15:01:55.000000000 +0100
+--- src/quickfix.c     2012-01-10 16:18:51.000000000 +0100
+***************
+*** 3914,3919 ****
+--- 3914,3929 ----
+      regmatch.rm_ic = FALSE;
+      if (regmatch.regprog != NULL)
+      {
++ #ifdef FEAT_MBYTE
++      vimconv_T vc;
++ 
++      /* Help files are in utf-8 or latin1, convert lines when 'encoding'
++       * differs. */
++      vc.vc_type = CONV_NONE;
++      if (!enc_utf8)
++          convert_setup(&vc, (char_u *)"utf-8", p_enc);
++ #endif
++ 
+       /* create a new quickfix list */
+       qf_new_list(qi, *eap->cmdlinep);
+  
+***************
+*** 3948,3968 ****
+                       lnum = 1;
+                       while (!vim_fgets(IObuff, IOSIZE, fd) && !got_int)
+                       {
+!                          if (vim_regexec(&regmatch, IObuff, (colnr_T)0))
+                           {
+!                              int     l = (int)STRLEN(IObuff);
+  
+                               /* remove trailing CR, LF, spaces, etc. */
+!                              while (l > 0 && IObuff[l - 1] <= ' ')
+!                                   IObuff[--l] = NUL;
+  
+                               if (qf_add_entry(qi, &prevp,
+                                           NULL,       /* dir */
+                                           fnames[fi],
+                                           0,
+!                                          IObuff,
+                                           lnum,
+!                                          (int)(regmatch.startp[0] - IObuff)
+                                                               + 1, /* col */
+                                           FALSE,      /* vis_col */
+                                           NULL,       /* search pattern */
+--- 3958,3990 ----
+                       lnum = 1;
+                       while (!vim_fgets(IObuff, IOSIZE, fd) && !got_int)
+                       {
+!                          char_u    *line = IObuff;
+! #ifdef FEAT_MBYTE
+!                          /* Convert a line if 'encoding' is not utf-8 and
+!                           * the line contains a non-ASCII character. */
+!                          if (vc.vc_type != CONV_NONE
+!                                                 && has_non_ascii(IObuff)) {
+!                              line = string_convert(&vc, IObuff, NULL);
+!                              if (line == NULL)
+!                                  line = IObuff;
+!                          }
+! #endif
+! 
+!                          if (vim_regexec(&regmatch, line, (colnr_T)0))
+                           {
+!                              int     l = (int)STRLEN(line);
+  
+                               /* remove trailing CR, LF, spaces, etc. */
+!                              while (l > 0 && line[l - 1] <= ' ')
+!                                   line[--l] = NUL;
+  
+                               if (qf_add_entry(qi, &prevp,
+                                           NULL,       /* dir */
+                                           fnames[fi],
+                                           0,
+!                                          line,
+                                           lnum,
+!                                          (int)(regmatch.startp[0] - line)
+                                                               + 1, /* col */
+                                           FALSE,      /* vis_col */
+                                           NULL,       /* search pattern */
+***************
+*** 3972,3980 ****
+--- 3994,4010 ----
+                                           ) == FAIL)
+                               {
+                                   got_int = TRUE;
++ #ifdef FEAT_MBYTE
++                                  if (line != IObuff)
++                                      vim_free(line);
++ #endif
+                                   break;
+                               }
+                           }
++ #ifdef FEAT_MBYTE
++                          if (line != IObuff)
++                              vim_free(line);
++ #endif
+                           ++lnum;
+                           line_breakcheck();
+                       }
+***************
+*** 3984,3990 ****
+--- 4014,4025 ----
+               FreeWild(fcount, fnames);
+           }
+       }
++ 
+       vim_free(regmatch.regprog);
++ #ifdef FEAT_MBYTE
++      if (vc.vc_type != CONV_NONE)
++          convert_setup(&vc, NULL, NULL);
++ #endif
+  
+       qi->qf_lists[qi->qf_curlist].qf_nonevalid = FALSE;
+       qi->qf_lists[qi->qf_curlist].qf_ptr =
+*** ../vim-7.3.396/src/spell.c 2011-09-02 14:18:14.000000000 +0200
+--- src/spell.c        2012-01-10 16:19:33.000000000 +0100
+***************
+*** 5020,5026 ****
+  static int str_equal __ARGS((char_u *s1, char_u      *s2));
+  static void add_fromto __ARGS((spellinfo_T *spin, garray_T *gap, char_u      *from, char_u *to));
+  static int sal_to_bool __ARGS((char_u *s));
+- static int has_non_ascii __ARGS((char_u *s));
+  static void spell_free_aff __ARGS((afffile_T *aff));
+  static int spell_read_dic __ARGS((spellinfo_T *spin, char_u *fname, afffile_T *affile));
+  static int get_affix_flags __ARGS((afffile_T *affile, char_u *afflist));
+--- 5020,5025 ----
+***************
+*** 6485,6507 ****
+  }
+  
+  /*
+-  * Return TRUE if string "s" contains a non-ASCII character (128 or higher).
+-  * When "s" is NULL FALSE is returned.
+-  */
+-     static int
+- has_non_ascii(s)
+-     char_u   *s;
+- {
+-     char_u   *p;
+- 
+-     if (s != NULL)
+-      for (p = s; *p != NUL; ++p)
+-          if (*p >= 128)
+-              return TRUE;
+-     return FALSE;
+- }
+- 
+- /*
+   * Free the structure filled by spell_read_aff().
+   */
+      static void
+--- 6484,6489 ----
+*** ../vim-7.3.396/src/misc2.c 2011-12-08 17:49:31.000000000 +0100
+--- src/misc2.c        2012-01-10 16:25:53.000000000 +0100
+***************
+*** 6541,6543 ****
+--- 6541,6563 ----
+  #endif
+  
+  #endif
++ 
++ #if (defined(FEAT_MBYTE) && defined(FEAT_QUICKFIX)) \
++      || defined(FEAT_SPELL) || defined(PROTO)
++ /*
++  * Return TRUE if string "s" contains a non-ASCII character (128 or higher).
++  * When "s" is NULL FALSE is returned.
++  */
++     int
++ has_non_ascii(s)
++     char_u   *s;
++ {
++     char_u   *p;
++ 
++     if (s != NULL)
++      for (p = s; *p != NUL; ++p)
++          if (*p >= 128)
++              return TRUE;
++     return FALSE;
++ }
++ #endif
+*** ../vim-7.3.396/src/proto/misc2.pro 2011-07-07 16:20:45.000000000 +0200
+--- src/proto/misc2.pro        2012-01-10 16:20:03.000000000 +0100
+***************
+*** 116,119 ****
+--- 116,120 ----
+  char_u *read_string __ARGS((FILE *fd, int cnt));
+  int put_bytes __ARGS((FILE *fd, long_u nr, int len));
+  void put_time __ARGS((FILE *fd, time_t the_time));
++ int has_non_ascii __ARGS((char_u *s));
+  /* vim: set ft=c : */
+*** ../vim-7.3.396/src/version.c       2012-01-10 13:46:18.000000000 +0100
+--- src/version.c      2012-01-10 16:26:32.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     397,
+  /**/
+
+-- 
+Biting someone with your natural teeth is "simple assault," while biting
+someone with your false teeth is "aggravated assault."
+               [real standing law in Louisana, United States of America]
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.398.patch0 b/vim/patches/vim-7.3.398.patch0
new file mode 100644 (file)
index 0000000..8d4b213
--- /dev/null
@@ -0,0 +1,65 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.398
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.398
+Problem:    When creating more than 10 location lists and adding items one by
+           one a previous location may be used. (Audrius Kažukauskas)
+Solution:   Clear the location list completely when adding the tenth one.
+Files:     src/quickfix.c
+
+
+*** ../vim-7.3.397/src/quickfix.c      2012-01-10 16:28:41.000000000 +0100
+--- src/quickfix.c     2012-01-10 16:58:52.000000000 +0100
+***************
+*** 899,906 ****
+      }
+      else
+       qi->qf_curlist = qi->qf_listcount++;
+!     qi->qf_lists[qi->qf_curlist].qf_index = 0;
+!     qi->qf_lists[qi->qf_curlist].qf_count = 0;
+      if (qf_title != NULL)
+      {
+       char_u *p = alloc((int)STRLEN(qf_title) + 2);
+--- 899,905 ----
+      }
+      else
+       qi->qf_curlist = qi->qf_listcount++;
+!     vim_memset(&qi->qf_lists[qi->qf_curlist], 0, (size_t)(sizeof(qf_list_T)));
+      if (qf_title != NULL)
+      {
+       char_u *p = alloc((int)STRLEN(qf_title) + 2);
+***************
+*** 909,916 ****
+       if (p != NULL)
+           sprintf((char *)p, ":%s", (char *)qf_title);
+      }
+-     else
+-      qi->qf_lists[qi->qf_curlist].qf_title = NULL;
+  }
+  
+  /*
+--- 908,913 ----
+*** ../vim-7.3.397/src/version.c       2012-01-10 16:28:41.000000000 +0100
+--- src/version.c      2012-01-10 17:13:09.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     398,
+  /**/
+
+-- 
+Why don't cannibals eat clowns?
+Because they taste funny.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.399.patch0 b/vim/patches/vim-7.3.399.patch0
new file mode 100644 (file)
index 0000000..33d0630
--- /dev/null
@@ -0,0 +1,137 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.399
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.399
+Problem:    ":cd" doesn't work when the path contains wildcards. (Yukihiro
+           Nakadaira)
+Solution:   Ignore wildcard errors when the EW_NOTWILD flag is used.
+Files:     src/misc1.c
+
+
+*** ../vim-7.3.398/src/misc1.c 2011-12-14 20:21:29.000000000 +0100
+--- src/misc1.c        2012-01-10 17:57:42.000000000 +0100
+***************
+*** 9103,9117 ****
+      }
+  
+      /* compile the regexp into a program */
+!     if (flags & EW_NOERROR)
+       ++emsg_silent;
+      regmatch.rm_ic = TRUE;           /* Always ignore case */
+      regmatch.regprog = vim_regcomp(pat, RE_MAGIC);
+!     if (flags & EW_NOERROR)
+       --emsg_silent;
+      vim_free(pat);
+  
+!     if (regmatch.regprog == NULL)
+      {
+       vim_free(buf);
+       return 0;
+--- 9103,9117 ----
+      }
+  
+      /* compile the regexp into a program */
+!     if (flags & (EW_NOERROR | EW_NOTWILD))
+       ++emsg_silent;
+      regmatch.rm_ic = TRUE;           /* Always ignore case */
+      regmatch.regprog = vim_regcomp(pat, RE_MAGIC);
+!     if (flags & (EW_NOERROR | EW_NOTWILD))
+       --emsg_silent;
+      vim_free(pat);
+  
+!     if (regmatch.regprog == NULL && (flags & EW_NOTWILD) == 0)
+      {
+       vim_free(buf);
+       return 0;
+***************
+*** 9179,9185 ****
+        * all entries found with "matchname". */
+       if ((p[0] != '.' || starts_with_dot)
+               && (matchname == NULL
+!                || vim_regexec(&regmatch, p, (colnr_T)0)
+                 || ((flags & EW_NOTWILD)
+                    && fnamencmp(path + (s - buf), p, e - s) == 0)))
+       {
+--- 9179,9186 ----
+        * all entries found with "matchname". */
+       if ((p[0] != '.' || starts_with_dot)
+               && (matchname == NULL
+!                || (regmatch.regprog != NULL
+!                                   && vim_regexec(&regmatch, p, (colnr_T)0))
+                 || ((flags & EW_NOTWILD)
+                    && fnamencmp(path + (s - buf), p, e - s) == 0)))
+       {
+***************
+*** 9419,9428 ****
+      else
+       regmatch.rm_ic = FALSE;         /* Don't ignore case */
+  #endif
+      regmatch.regprog = vim_regcomp(pat, RE_MAGIC);
+      vim_free(pat);
+  
+!     if (regmatch.regprog == NULL)
+      {
+       vim_free(buf);
+       return 0;
+--- 9420,9433 ----
+      else
+       regmatch.rm_ic = FALSE;         /* Don't ignore case */
+  #endif
++     if (flags & (EW_NOERROR | EW_NOTWILD))
++      ++emsg_silent;
+      regmatch.regprog = vim_regcomp(pat, RE_MAGIC);
++     if (flags & (EW_NOERROR | EW_NOTWILD))
++      --emsg_silent;
+      vim_free(pat);
+  
+!     if (regmatch.regprog == NULL && (flags & EW_NOTWILD) == 0)
+      {
+       vim_free(buf);
+       return 0;
+***************
+*** 9452,9458 ****
+           if (dp == NULL)
+               break;
+           if ((dp->d_name[0] != '.' || starts_with_dot)
+!               && (vim_regexec(&regmatch, (char_u *)dp->d_name, (colnr_T)0)
+                  || ((flags & EW_NOTWILD)
+                    && fnamencmp(path + (s - buf), dp->d_name, e - s) == 0)))
+           {
+--- 9457,9464 ----
+           if (dp == NULL)
+               break;
+           if ((dp->d_name[0] != '.' || starts_with_dot)
+!               && ((regmatch.regprog != NULL && vim_regexec(&regmatch,
+!                                           (char_u *)dp->d_name, (colnr_T)0))
+                  || ((flags & EW_NOTWILD)
+                    && fnamencmp(path + (s - buf), dp->d_name, e - s) == 0)))
+           {
+*** ../vim-7.3.398/src/version.c       2012-01-10 17:13:48.000000000 +0100
+--- src/version.c      2012-01-10 18:21:05.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     399,
+  /**/
+
+-- 
+Close your shells, or I'll kill -9 you
+Tomorrow I'll quota you
+Remember the disks'll always be full
+And then while I'm away
+I'll write ~ everyday
+And I'll send-pr all my buggings to you.
+    [ CVS log "Beatles style" for FreeBSD ports/INDEX, Satoshi Asami ]
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.400.patch0 b/vim/patches/vim-7.3.400.patch0
new file mode 100644 (file)
index 0000000..c621a88
--- /dev/null
@@ -0,0 +1,1762 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.400
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.400
+Problem:    Compiler warnings for shadowed variables.
+Solution:   Remove or rename the variables.
+Files:     src/charset.c, src/digraph.c, src/edit.c, src/eval.c, src/fold.c,
+           src/getchar.c, src/message.c, src/misc2.c, src/move.c,
+           src/netbeans.c, src/option.c, src/os_unix.c, src/screen.c,
+           src/search.c, src/spell.c, src/syntax.c, src/tag.c, src/window.c
+
+
+*** ../vim-7.3.399/src/charset.c       2010-08-15 21:57:25.000000000 +0200
+--- src/charset.c      2012-01-10 21:55:50.000000000 +0100
+***************
+*** 463,503 ****
+           if (enc_utf8)
+           {
+               int     c = utf_ptr2char(STR_PTR(i));
+!              int     ol = utf_ptr2len(STR_PTR(i));
+               int     lc = utf_tolower(c);
+  
+               /* Only replace the character when it is not an invalid
+                * sequence (ASCII character or more than one byte) and
+                * utf_tolower() doesn't return the original character. */
+!              if ((c < 0x80 || ol > 1) && c != lc)
+               {
+!                  int     nl = utf_char2len(lc);
+  
+                   /* If the byte length changes need to shift the following
+                    * characters forward or backward. */
+!                  if (ol != nl)
+                   {
+!                      if (nl > ol)
+                       {
+!                          if (buf == NULL ? ga_grow(&ga, nl - ol + 1) == FAIL
+!                                                  : len + nl - ol >= buflen)
+                           {
+                               /* out of memory, keep old char */
+                               lc = c;
+!                              nl = ol;
+                           }
+                       }
+!                      if (ol != nl)
+                       {
+                           if (buf == NULL)
+                           {
+!                              STRMOVE(GA_PTR(i) + nl, GA_PTR(i) + ol);
+!                              ga.ga_len += nl - ol;
+                           }
+                           else
+                           {
+!                              STRMOVE(buf + i + nl, buf + i + ol);
+!                              len += nl - ol;
+                           }
+                       }
+                   }
+--- 463,504 ----
+           if (enc_utf8)
+           {
+               int     c = utf_ptr2char(STR_PTR(i));
+!              int     olen = utf_ptr2len(STR_PTR(i));
+               int     lc = utf_tolower(c);
+  
+               /* Only replace the character when it is not an invalid
+                * sequence (ASCII character or more than one byte) and
+                * utf_tolower() doesn't return the original character. */
+!              if ((c < 0x80 || olen > 1) && c != lc)
+               {
+!                  int     nlen = utf_char2len(lc);
+  
+                   /* If the byte length changes need to shift the following
+                    * characters forward or backward. */
+!                  if (olen != nlen)
+                   {
+!                      if (nlen > olen)
+                       {
+!                          if (buf == NULL
+!                                  ? ga_grow(&ga, nlen - olen + 1) == FAIL
+!                                  : len + nlen - olen >= buflen)
+                           {
+                               /* out of memory, keep old char */
+                               lc = c;
+!                              nlen = olen;
+                           }
+                       }
+!                      if (olen != nlen)
+                       {
+                           if (buf == NULL)
+                           {
+!                              STRMOVE(GA_PTR(i) + nlen, GA_PTR(i) + olen);
+!                              ga.ga_len += nlen - olen;
+                           }
+                           else
+                           {
+!                              STRMOVE(buf + i + nlen, buf + i + olen);
+!                              len += nlen - olen;
+                           }
+                       }
+                   }
+*** ../vim-7.3.399/src/digraph.c       2010-08-15 21:57:28.000000000 +0200
+--- src/digraph.c      2012-01-10 21:57:16.000000000 +0100
+***************
+*** 2080,2092 ****
+  /*
+   * Lookup the pair "char1", "char2" in the digraph tables.
+   * If no match, return "char2".
+!  * If "meta" is TRUE and "char1" is a space, return "char2" | 0x80.
+   */
+      static int
+! getexactdigraph(char1, char2, meta)
+      int              char1;
+      int              char2;
+!     int              meta;
+  {
+      int              i;
+      int              retval = 0;
+--- 2080,2092 ----
+  /*
+   * Lookup the pair "char1", "char2" in the digraph tables.
+   * If no match, return "char2".
+!  * If "meta_char" is TRUE and "char1" is a space, return "char2" | 0x80.
+   */
+      static int
+! getexactdigraph(char1, char2, meta_char)
+      int              char1;
+      int              char2;
+!     int              meta_char;
+  {
+      int              i;
+      int              retval = 0;
+***************
+*** 2159,2165 ****
+  
+      if (retval == 0)         /* digraph deleted or not found */
+      {
+!      if (char1 == ' ' && meta)       /* <space> <char> --> meta-char */
+           return (char2 | 0x80);
+       return char2;
+      }
+--- 2159,2165 ----
+  
+      if (retval == 0)         /* digraph deleted or not found */
+      {
+!      if (char1 == ' ' && meta_char)  /* <space> <char> --> meta-char */
+           return (char2 | 0x80);
+       return char2;
+      }
+***************
+*** 2171,2186 ****
+   * Allow for both char1-char2 and char2-char1
+   */
+      int
+! getdigraph(char1, char2, meta)
+      int      char1;
+      int      char2;
+!     int      meta;
+  {
+      int          retval;
+  
+!     if (((retval = getexactdigraph(char1, char2, meta)) == char2)
+           && (char1 != char2)
+!          && ((retval = getexactdigraph(char2, char1, meta)) == char1))
+       return char2;
+      return retval;
+  }
+--- 2171,2186 ----
+   * Allow for both char1-char2 and char2-char1
+   */
+      int
+! getdigraph(char1, char2, meta_char)
+      int      char1;
+      int      char2;
+!     int      meta_char;
+  {
+      int          retval;
+  
+!     if (((retval = getexactdigraph(char1, char2, meta_char)) == char2)
+           && (char1 != char2)
+!          && ((retval = getexactdigraph(char2, char1, meta_char)) == char1))
+       return char2;
+      return retval;
+  }
+*** ../vim-7.3.399/src/edit.c  2011-12-23 13:14:58.000000000 +0100
+--- src/edit.c 2012-01-10 21:58:28.000000000 +0100
+***************
+*** 4003,4026 ****
+  ins_compl_add_dict(dict)
+      dict_T   *dict;
+  {
+!     dictitem_T       *refresh;
+!     dictitem_T       *words;
+  
+      /* Check for optional "refresh" item. */
+      compl_opt_refresh_always = FALSE;
+!     refresh = dict_find(dict, (char_u *)"refresh", 7);
+!     if (refresh != NULL && refresh->di_tv.v_type == VAR_STRING)
+      {
+!      char_u  *v = refresh->di_tv.vval.v_string;
+  
+       if (v != NULL && STRCMP(v, (char_u *)"always") == 0)
+           compl_opt_refresh_always = TRUE;
+      }
+  
+      /* Add completions from a "words" list. */
+!     words = dict_find(dict, (char_u *)"words", 5);
+!     if (words != NULL && words->di_tv.v_type == VAR_LIST)
+!      ins_compl_add_list(words->di_tv.vval.v_list);
+  }
+  
+  /*
+--- 4003,4026 ----
+  ins_compl_add_dict(dict)
+      dict_T   *dict;
+  {
+!     dictitem_T       *di_refresh;
+!     dictitem_T       *di_words;
+  
+      /* Check for optional "refresh" item. */
+      compl_opt_refresh_always = FALSE;
+!     di_refresh = dict_find(dict, (char_u *)"refresh", 7);
+!     if (di_refresh != NULL && di_refresh->di_tv.v_type == VAR_STRING)
+      {
+!      char_u  *v = di_refresh->di_tv.vval.v_string;
+  
+       if (v != NULL && STRCMP(v, (char_u *)"always") == 0)
+           compl_opt_refresh_always = TRUE;
+      }
+  
+      /* Add completions from a "words" list. */
+!     di_words = dict_find(dict, (char_u *)"words", 5);
+!     if (di_words != NULL && di_words->di_tv.v_type == VAR_LIST)
+!      ins_compl_add_list(di_words->di_tv.vval.v_list);
+  }
+  
+  /*
+*** ../vim-7.3.399/src/eval.c  2012-01-04 14:35:31.000000000 +0100
+--- src/eval.c 2012-01-10 22:00:50.000000000 +0100
+***************
+*** 6573,6587 ****
+  
+  /*
+   * Join list "l" into a string in "*gap", using separator "sep".
+!  * When "echo" is TRUE use String as echoed, otherwise as inside a List.
+   * Return FAIL or OK.
+   */
+      static int
+! list_join(gap, l, sep, echo, copyID)
+      garray_T *gap;
+      list_T   *l;
+      char_u   *sep;
+!     int              echo;
+      int              copyID;
+  {
+      int              first = TRUE;
+--- 6573,6587 ----
+  
+  /*
+   * Join list "l" into a string in "*gap", using separator "sep".
+!  * When "echo_style" is TRUE use String as echoed, otherwise as inside a List.
+   * Return FAIL or OK.
+   */
+      static int
+! list_join(gap, l, sep, echo_style, copyID)
+      garray_T *gap;
+      list_T   *l;
+      char_u   *sep;
+!     int              echo_style;
+      int              copyID;
+  {
+      int              first = TRUE;
+***************
+*** 6597,6603 ****
+       else
+           ga_concat(gap, sep);
+  
+!      if (echo)
+           s = echo_string(&item->li_tv, &tofree, numbuf, copyID);
+       else
+           s = tv2string(&item->li_tv, &tofree, numbuf, copyID);
+--- 6597,6603 ----
+       else
+           ga_concat(gap, sep);
+  
+!      if (echo_style)
+           s = echo_string(&item->li_tv, &tofree, numbuf, copyID);
+       else
+           s = tv2string(&item->li_tv, &tofree, numbuf, copyID);
+***************
+*** 17893,17899 ****
+      typval_T *argvars;
+      typval_T *rettv;
+  {
+!     char_u   *instr;
+      char_u   *fromstr;
+      char_u   *tostr;
+      char_u   *p;
+--- 17893,17899 ----
+      typval_T *argvars;
+      typval_T *rettv;
+  {
+!     char_u   *in_str;
+      char_u   *fromstr;
+      char_u   *tostr;
+      char_u   *p;
+***************
+*** 17910,17916 ****
+      char_u   buf2[NUMBUFLEN];
+      garray_T ga;
+  
+!     instr = get_tv_string(&argvars[0]);
+      fromstr = get_tv_string_buf_chk(&argvars[1], buf);
+      tostr = get_tv_string_buf_chk(&argvars[2], buf2);
+  
+--- 17910,17916 ----
+      char_u   buf2[NUMBUFLEN];
+      garray_T ga;
+  
+!     in_str = get_tv_string(&argvars[0]);
+      fromstr = get_tv_string_buf_chk(&argvars[1], buf);
+      tostr = get_tv_string_buf_chk(&argvars[2], buf2);
+  
+***************
+*** 17936,17954 ****
+       }
+  
+      /* fromstr and tostr have to contain the same number of chars */
+!     while (*instr != NUL)
+      {
+  #ifdef FEAT_MBYTE
+       if (has_mbyte)
+       {
+!          inlen = (*mb_ptr2len)(instr);
+!          cpstr = instr;
+           cplen = inlen;
+           idx = 0;
+           for (p = fromstr; *p != NUL; p += fromlen)
+           {
+               fromlen = (*mb_ptr2len)(p);
+!              if (fromlen == inlen && STRNCMP(instr, p, inlen) == 0)
+               {
+                   for (p = tostr; *p != NUL; p += tolen)
+                   {
+--- 17936,17954 ----
+       }
+  
+      /* fromstr and tostr have to contain the same number of chars */
+!     while (*in_str != NUL)
+      {
+  #ifdef FEAT_MBYTE
+       if (has_mbyte)
+       {
+!          inlen = (*mb_ptr2len)(in_str);
+!          cpstr = in_str;
+           cplen = inlen;
+           idx = 0;
+           for (p = fromstr; *p != NUL; p += fromlen)
+           {
+               fromlen = (*mb_ptr2len)(p);
+!              if (fromlen == inlen && STRNCMP(in_str, p, inlen) == 0)
+               {
+                   for (p = tostr; *p != NUL; p += tolen)
+                   {
+***************
+*** 17967,17977 ****
+               ++idx;
+           }
+  
+!          if (first && cpstr == instr)
+           {
+               /* Check that fromstr and tostr have the same number of
+                * (multi-byte) characters.  Done only once when a character
+!               * of instr doesn't appear in fromstr. */
+               first = FALSE;
+               for (p = tostr; *p != NUL; p += tolen)
+               {
+--- 17967,17977 ----
+               ++idx;
+           }
+  
+!          if (first && cpstr == in_str)
+           {
+               /* Check that fromstr and tostr have the same number of
+                * (multi-byte) characters.  Done only once when a character
+!               * of in_str doesn't appear in fromstr. */
+               first = FALSE;
+               for (p = tostr; *p != NUL; p += tolen)
+               {
+***************
+*** 17986,18003 ****
+           mch_memmove((char *)ga.ga_data + ga.ga_len, cpstr, (size_t)cplen);
+           ga.ga_len += cplen;
+  
+!          instr += inlen;
+       }
+       else
+  #endif
+       {
+           /* When not using multi-byte chars we can do it faster. */
+!          p = vim_strchr(fromstr, *instr);
+           if (p != NULL)
+               ga_append(&ga, tostr[p - fromstr]);
+           else
+!              ga_append(&ga, *instr);
+!          ++instr;
+       }
+      }
+  
+--- 17986,18003 ----
+           mch_memmove((char *)ga.ga_data + ga.ga_len, cpstr, (size_t)cplen);
+           ga.ga_len += cplen;
+  
+!          in_str += inlen;
+       }
+       else
+  #endif
+       {
+           /* When not using multi-byte chars we can do it faster. */
+!          p = vim_strchr(fromstr, *in_str);
+           if (p != NULL)
+               ga_append(&ga, tostr[p - fromstr]);
+           else
+!              ga_append(&ga, *in_str);
+!          ++in_str;
+       }
+      }
+  
+*** ../vim-7.3.399/src/fold.c  2011-08-26 16:12:55.000000000 +0200
+--- src/fold.c 2012-01-10 22:01:26.000000000 +0100
+***************
+*** 1033,1042 ****
+   * Init the fold info in a new window.
+   */
+      void
+! foldInitWin(newwin)
+!     win_T    *newwin;
+  {
+!     ga_init2(&newwin->w_folds, (int)sizeof(fold_T), 10);
+  }
+  
+  /* find_wl_entry() {{{2 */
+--- 1033,1042 ----
+   * Init the fold info in a new window.
+   */
+      void
+! foldInitWin(new_win)
+!     win_T    *new_win;
+  {
+!     ga_init2(&new_win->w_folds, (int)sizeof(fold_T), 10);
+  }
+  
+  /* find_wl_entry() {{{2 */
+*** ../vim-7.3.399/src/getchar.c       2011-12-23 14:54:01.000000000 +0100
+--- src/getchar.c      2012-01-10 22:02:30.000000000 +0100
+***************
+*** 418,429 ****
+  
+  /*
+   * Remove the contents of the stuff buffer and the mapped characters in the
+!  * typeahead buffer (used in case of an error).  If 'typeahead' is true,
+   * flush all typeahead characters (used when interrupted by a CTRL-C).
+   */
+      void
+! flush_buffers(typeahead)
+!     int typeahead;
+  {
+      init_typebuf();
+  
+--- 418,429 ----
+  
+  /*
+   * Remove the contents of the stuff buffer and the mapped characters in the
+!  * typeahead buffer (used in case of an error).  If "flush_typeahead" is true,
+   * flush all typeahead characters (used when interrupted by a CTRL-C).
+   */
+      void
+! flush_buffers(flush_typeahead)
+!     int flush_typeahead;
+  {
+      init_typebuf();
+  
+***************
+*** 431,437 ****
+      while (read_stuff(TRUE) != NUL)
+       ;
+  
+!     if (typeahead)       /* remove all typeahead */
+      {
+       /*
+        * We have to get all characters, because we may delete the first part
+--- 431,437 ----
+      while (read_stuff(TRUE) != NUL)
+       ;
+  
+!     if (flush_typeahead)         /* remove all typeahead */
+      {
+       /*
+        * We have to get all characters, because we may delete the first part
+*** ../vim-7.3.399/src/message.c       2011-12-30 14:14:16.000000000 +0100
+--- src/message.c      2012-01-10 22:03:56.000000000 +0100
+***************
+*** 2487,2493 ****
+  #ifdef FEAT_CON_DIALOG
+      int              retval = FALSE;
+  #endif
+!     int              scroll;
+      msgchunk_T       *mp_last = NULL;
+      msgchunk_T       *mp;
+      int              i;
+--- 2487,2493 ----
+  #ifdef FEAT_CON_DIALOG
+      int              retval = FALSE;
+  #endif
+!     int              toscroll;
+      msgchunk_T       *mp_last = NULL;
+      msgchunk_T       *mp;
+      int              i;
+***************
+*** 2538,2586 ****
+       }
+  #endif
+  
+!      scroll = 0;
+       switch (c)
+       {
+       case BS:                /* scroll one line back */
+       case K_BS:
+       case 'k':
+       case K_UP:
+!          scroll = -1;
+           break;
+  
+       case CAR:               /* one extra line */
+       case NL:
+       case 'j':
+       case K_DOWN:
+!          scroll = 1;
+           break;
+  
+       case 'u':               /* Up half a page */
+!          scroll = -(Rows / 2);
+           break;
+  
+       case 'd':               /* Down half a page */
+!          scroll = Rows / 2;
+           break;
+  
+       case 'b':               /* one page back */
+       case K_PAGEUP:
+!          scroll = -(Rows - 1);
+           break;
+  
+       case ' ':               /* one extra page */
+       case 'f':
+       case K_PAGEDOWN:
+       case K_LEFTMOUSE:
+!          scroll = Rows - 1;
+           break;
+  
+       case 'g':               /* all the way back to the start */
+!          scroll = -999999;
+           break;
+  
+       case 'G':               /* all the way to the end */
+!          scroll = 999999;
+           lines_left = 999999;
+           break;
+  
+--- 2538,2586 ----
+       }
+  #endif
+  
+!      toscroll = 0;
+       switch (c)
+       {
+       case BS:                /* scroll one line back */
+       case K_BS:
+       case 'k':
+       case K_UP:
+!          toscroll = -1;
+           break;
+  
+       case CAR:               /* one extra line */
+       case NL:
+       case 'j':
+       case K_DOWN:
+!          toscroll = 1;
+           break;
+  
+       case 'u':               /* Up half a page */
+!          toscroll = -(Rows / 2);
+           break;
+  
+       case 'd':               /* Down half a page */
+!          toscroll = Rows / 2;
+           break;
+  
+       case 'b':               /* one page back */
+       case K_PAGEUP:
+!          toscroll = -(Rows - 1);
+           break;
+  
+       case ' ':               /* one extra page */
+       case 'f':
+       case K_PAGEDOWN:
+       case K_LEFTMOUSE:
+!          toscroll = Rows - 1;
+           break;
+  
+       case 'g':               /* all the way back to the start */
+!          toscroll = -999999;
+           break;
+  
+       case 'G':               /* all the way to the end */
+!          toscroll = 999999;
+           lines_left = 999999;
+           break;
+  
+***************
+*** 2633,2641 ****
+           continue;
+       }
+  
+!      if (scroll != 0)
+       {
+!          if (scroll < 0)
+           {
+               /* go to start of last line */
+               if (mp_last == NULL)
+--- 2633,2641 ----
+           continue;
+       }
+  
+!      if (toscroll != 0)
+       {
+!          if (toscroll < 0)
+           {
+               /* go to start of last line */
+               if (mp_last == NULL)
+***************
+*** 2653,2659 ****
+               if (mp != NULL && mp->sb_prev != NULL)
+               {
+                   /* Find line to be displayed at top. */
+!                  for (i = 0; i > scroll; --i)
+                   {
+                       if (mp == NULL || mp->sb_prev == NULL)
+                           break;
+--- 2653,2659 ----
+               if (mp != NULL && mp->sb_prev != NULL)
+               {
+                   /* Find line to be displayed at top. */
+!                  for (i = 0; i > toscroll; --i)
+                   {
+                       if (mp == NULL || mp->sb_prev == NULL)
+                           break;
+***************
+*** 2664,2670 ****
+                           mp_last = msg_sb_start(mp_last->sb_prev);
+                   }
+  
+!                  if (scroll == -1 && screen_ins_lines(0, 0, 1,
+                                                      (int)Rows, NULL) == OK)
+                   {
+                       /* display line at top */
+--- 2664,2670 ----
+                           mp_last = msg_sb_start(mp_last->sb_prev);
+                   }
+  
+!                  if (toscroll == -1 && screen_ins_lines(0, 0, 1,
+                                                      (int)Rows, NULL) == OK)
+                   {
+                       /* display line at top */
+***************
+*** 2680,2692 ****
+                           ++msg_scrolled;
+                       }
+                   }
+!                  scroll = 0;
+               }
+           }
+           else
+           {
+               /* First display any text that we scrolled back. */
+!              while (scroll > 0 && mp_last != NULL)
+               {
+                   /* scroll up, display line at bottom */
+                   msg_scroll_up();
+--- 2680,2692 ----
+                           ++msg_scrolled;
+                       }
+                   }
+!                  toscroll = 0;
+               }
+           }
+           else
+           {
+               /* First display any text that we scrolled back. */
+!              while (toscroll > 0 && mp_last != NULL)
+               {
+                   /* scroll up, display line at bottom */
+                   msg_scroll_up();
+***************
+*** 2694,2704 ****
+                   screen_fill((int)Rows - 2, (int)Rows - 1, 0,
+                                                  (int)Columns, ' ', ' ', 0);
+                   mp_last = disp_sb_line((int)Rows - 2, mp_last);
+!                  --scroll;
+               }
+           }
+  
+!          if (scroll <= 0)
+           {
+               /* displayed the requested text, more prompt again */
+               screen_fill((int)Rows - 1, (int)Rows, 0,
+--- 2694,2704 ----
+                   screen_fill((int)Rows - 2, (int)Rows - 1, 0,
+                                                  (int)Columns, ' ', ' ', 0);
+                   mp_last = disp_sb_line((int)Rows - 2, mp_last);
+!                  --toscroll;
+               }
+           }
+  
+!          if (toscroll <= 0)
+           {
+               /* displayed the requested text, more prompt again */
+               screen_fill((int)Rows - 1, (int)Rows, 0,
+***************
+*** 2708,2714 ****
+           }
+  
+           /* display more text, return to caller */
+!          lines_left = scroll;
+       }
+  
+       break;
+--- 2708,2714 ----
+           }
+  
+           /* display more text, return to caller */
+!          lines_left = toscroll;
+       }
+  
+       break;
+*** ../vim-7.3.399/src/misc2.c 2012-01-10 16:28:41.000000000 +0100
+--- src/misc2.c        2012-01-10 22:04:25.000000000 +0100
+***************
+*** 1559,1565 ****
+           if (enc_utf8)
+           {
+               int     c, uc;
+!              int     nl;
+               char_u  *s;
+  
+               c = utf_ptr2char(p);
+--- 1559,1565 ----
+           if (enc_utf8)
+           {
+               int     c, uc;
+!              int     newl;
+               char_u  *s;
+  
+               c = utf_ptr2char(p);
+***************
+*** 1568,1588 ****
+               /* Reallocate string when byte count changes.  This is rare,
+                * thus it's OK to do another malloc()/free(). */
+               l = utf_ptr2len(p);
+!              nl = utf_char2len(uc);
+!              if (nl != l)
+               {
+!                  s = alloc((unsigned)STRLEN(res) + 1 + nl - l);
+                   if (s == NULL)
+                       break;
+                   mch_memmove(s, res, p - res);
+!                  STRCPY(s + (p - res) + nl, p + l);
+                   p = s + (p - res);
+                   vim_free(res);
+                   res = s;
+               }
+  
+               utf_char2bytes(uc, p);
+!              p += nl;
+           }
+           else if (has_mbyte && (l = (*mb_ptr2len)(p)) > 1)
+               p += l;         /* skip multi-byte character */
+--- 1568,1588 ----
+               /* Reallocate string when byte count changes.  This is rare,
+                * thus it's OK to do another malloc()/free(). */
+               l = utf_ptr2len(p);
+!              newl = utf_char2len(uc);
+!              if (newl != l)
+               {
+!                  s = alloc((unsigned)STRLEN(res) + 1 + newl - l);
+                   if (s == NULL)
+                       break;
+                   mch_memmove(s, res, p - res);
+!                  STRCPY(s + (p - res) + newl, p + l);
+                   p = s + (p - res);
+                   vim_free(res);
+                   res = s;
+               }
+  
+               utf_char2bytes(uc, p);
+!              p += newl;
+           }
+           else if (has_mbyte && (l = (*mb_ptr2len)(p)) > 1)
+               p += l;         /* skip multi-byte character */
+*** ../vim-7.3.399/src/move.c  2011-02-01 18:01:06.000000000 +0100
+--- src/move.c 2012-01-10 22:05:22.000000000 +0100
+***************
+*** 926,933 ****
+   * Also updates curwin->w_leftcol.
+   */
+      void
+! curs_columns(scroll)
+!     int              scroll;         /* when TRUE, may scroll horizontally */
+  {
+      int              diff;
+      int              extra;          /* offset for first screen line */
+--- 926,933 ----
+   * Also updates curwin->w_leftcol.
+   */
+      void
+! curs_columns(may_scroll)
+!     int              may_scroll;     /* when TRUE, may scroll horizontally */
+  {
+      int              diff;
+      int              extra;          /* offset for first screen line */
+***************
+*** 1014,1020 ****
+      /* No line wrapping: compute curwin->w_leftcol if scrolling is on and line
+       * is not folded.
+       * If scrolling is off, curwin->w_leftcol is assumed to be 0 */
+!     else if (scroll
+  #ifdef FEAT_FOLDING
+           && !curwin->w_cline_folded
+  #endif
+--- 1014,1020 ----
+      /* No line wrapping: compute curwin->w_leftcol if scrolling is on and line
+       * is not folded.
+       * If scrolling is off, curwin->w_leftcol is assumed to be 0 */
+!     else if (may_scroll
+  #ifdef FEAT_FOLDING
+           && !curwin->w_cline_folded
+  #endif
+*** ../vim-7.3.399/src/netbeans.c      2011-10-20 21:58:20.000000000 +0200
+--- src/netbeans.c     2012-01-10 22:16:26.000000000 +0100
+***************
+*** 1395,1401 ****
+      int              cmdno,
+      char_u   *args)      /* points to space before arguments or NUL */
+  {
+!     int              doupdate = 0;
+      long     off = 0;
+      nbbuf_T  *buf = nb_get_buf(bufno);
+      static int       skip = 0;
+--- 1395,1401 ----
+      int              cmdno,
+      char_u   *args)      /* points to space before arguments or NUL */
+  {
+!     int              do_update = 0;
+      long     off = 0;
+      nbbuf_T  *buf = nb_get_buf(bufno);
+      static int       skip = 0;
+***************
+*** 1600,1606 ****
+                                                       last.lnum, last.col));
+               del_from_lnum = first.lnum;
+               del_to_lnum = last.lnum;
+!              doupdate = 1;
+  
+               /* Get the position of the first byte after the deleted
+                * section.  "next" is NULL when deleting to the end of the
+--- 1600,1606 ----
+                                                       last.lnum, last.col));
+               del_from_lnum = first.lnum;
+               del_to_lnum = last.lnum;
+!              do_update = 1;
+  
+               /* Get the position of the first byte after the deleted
+                * section.  "next" is NULL when deleting to the end of the
+***************
+*** 1777,1783 ****
+               lnum = lnum_start;
+  
+               /* Loop over the "\n" separated lines of the argument. */
+!              doupdate = 1;
+               while (*args != NUL)
+               {
+                   nl = vim_strchr(args, '\n');
+--- 1777,1783 ----
+               lnum = lnum_start;
+  
+               /* Loop over the "\n" separated lines of the argument. */
+!              do_update = 1;
+               while (*args != NUL)
+               {
+                   nl = vim_strchr(args, '\n');
+***************
+*** 1992,1998 ****
+               EMSG("E640: invalid buffer identifier in initDone");
+               return FAIL;
+           }
+!          doupdate = 1;
+           buf->initDone = TRUE;
+           nb_set_curbuf(buf->bufp);
+  #if defined(FEAT_AUTOCMD)
+--- 1992,1998 ----
+               EMSG("E640: invalid buffer identifier in initDone");
+               return FAIL;
+           }
+!          do_update = 1;
+           buf->initDone = TRUE;
+           nb_set_curbuf(buf->bufp);
+  #if defined(FEAT_AUTOCMD)
+***************
+*** 2081,2087 ****
+                                            ECMD_HIDE + ECMD_OLDBUF, curwin);
+           buf->bufp = curbuf;
+           buf->initDone = TRUE;
+!          doupdate = 1;
+  #if defined(FEAT_TITLE)
+           maketitle();
+  #endif
+--- 2081,2087 ----
+                                            ECMD_HIDE + ECMD_OLDBUF, curwin);
+           buf->bufp = curbuf;
+           buf->initDone = TRUE;
+!          do_update = 1;
+  #if defined(FEAT_TITLE)
+           maketitle();
+  #endif
+***************
+*** 2109,2115 ****
+               exarg.forceit = FALSE;
+               dosetvisible = TRUE;
+               goto_buffer(&exarg, DOBUF_FIRST, FORWARD, buf->bufp->b_fnum);
+!              doupdate = 1;
+               dosetvisible = FALSE;
+  
+  #ifdef FEAT_GUI
+--- 2109,2115 ----
+               exarg.forceit = FALSE;
+               dosetvisible = TRUE;
+               goto_buffer(&exarg, DOBUF_FIRST, FORWARD, buf->bufp->b_fnum);
+!              do_update = 1;
+               dosetvisible = FALSE;
+  
+  #ifdef FEAT_GUI
+***************
+*** 2309,2315 ****
+                                                    buf->bufp->b_fnum, TRUE);
+           buf->bufp = NULL;
+           buf->initDone = FALSE;
+!          doupdate = 1;
+  /* =====================================================================*/
+       }
+       else if (streq((char *)cmd, "setStyle")) /* obsolete... */
+--- 2309,2315 ----
+                                                    buf->bufp->b_fnum, TRUE);
+           buf->bufp = NULL;
+           buf->initDone = FALSE;
+!          do_update = 1;
+  /* =====================================================================*/
+       }
+       else if (streq((char *)cmd, "setStyle")) /* obsolete... */
+***************
+*** 2400,2406 ****
+               return FAIL;
+           }
+  
+!          doupdate = 1;
+  
+           cp = (char *)args;
+           serNum = strtol(cp, &cp, 10);
+--- 2400,2406 ----
+               return FAIL;
+           }
+  
+!          do_update = 1;
+  
+           cp = (char *)args;
+           serNum = strtol(cp, &cp, 10);
+***************
+*** 2448,2454 ****
+               nbdebug(("    invalid buffer identifier in removeAnno\n"));
+               return FAIL;
+           }
+!          doupdate = 1;
+           cp = (char *)args;
+           serNum = strtol(cp, &cp, 10);
+           args = (char_u *)cp;
+--- 2448,2454 ----
+               nbdebug(("    invalid buffer identifier in removeAnno\n"));
+               return FAIL;
+           }
+!          do_update = 1;
+           cp = (char *)args;
+           serNum = strtol(cp, &cp, 10);
+           args = (char_u *)cp;
+***************
+*** 2493,2499 ****
+           len = strtol(cp, NULL, 10);
+           args = (char_u *)cp;
+           pos = off2pos(buf->bufp, off);
+!          doupdate = 1;
+           if (!pos)
+               nbdebug(("    no such start pos in %s, %ld\n", cmd, off));
+           else
+--- 2493,2499 ----
+           len = strtol(cp, NULL, 10);
+           args = (char_u *)cp;
+           pos = off2pos(buf->bufp, off);
+!          do_update = 1;
+           if (!pos)
+               nbdebug(("    no such start pos in %s, %ld\n", cmd, off));
+           else
+***************
+*** 2555,2561 ****
+           inAtomic = 0;
+           if (needupdate)
+           {
+!              doupdate = 1;
+               needupdate = 0;
+           }
+  /* =====================================================================*/
+--- 2555,2561 ----
+           inAtomic = 0;
+           if (needupdate)
+           {
+!              do_update = 1;
+               needupdate = 0;
+           }
+  /* =====================================================================*/
+***************
+*** 2636,2653 ****
+        * Unrecognized command is ignored.
+        */
+      }
+!     if (inAtomic && doupdate)
+      {
+       needupdate = 1;
+!      doupdate = 0;
+      }
+  
+      /*
+       * Is this needed? I moved the netbeans_Xt_connect() later during startup
+       * and it may no longer be necessary. If its not needed then needupdate
+!      * and doupdate can also be removed.
+       */
+!     if (buf != NULL && buf->initDone && doupdate)
+      {
+       update_screen(NOT_VALID);
+       setcursor();
+--- 2636,2653 ----
+        * Unrecognized command is ignored.
+        */
+      }
+!     if (inAtomic && do_update)
+      {
+       needupdate = 1;
+!      do_update = 0;
+      }
+  
+      /*
+       * Is this needed? I moved the netbeans_Xt_connect() later during startup
+       * and it may no longer be necessary. If its not needed then needupdate
+!      * and do_update can also be removed.
+       */
+!     if (buf != NULL && buf->initDone && do_update)
+      {
+       update_screen(NOT_VALID);
+       setcursor();
+*** ../vim-7.3.399/src/option.c        2012-01-04 19:34:32.000000000 +0100
+--- src/option.c       2012-01-10 22:06:03.000000000 +0100
+***************
+*** 8584,8591 ****
+      long_u   flags;
+  {
+      /* Careful: P_RCLR and P_RALL are a combination of other P_ flags */
+!     int              clear = (flags & P_RCLR) == P_RCLR;
+!     int              all = ((flags & P_RALL) == P_RALL || clear);
+  
+  #ifdef FEAT_WINDOWS
+      if ((flags & P_RSTAT) || all)    /* mark all status lines dirty */
+--- 8584,8591 ----
+      long_u   flags;
+  {
+      /* Careful: P_RCLR and P_RALL are a combination of other P_ flags */
+!     int              doclear = (flags & P_RCLR) == P_RCLR;
+!     int              all = ((flags & P_RALL) == P_RALL || doclear);
+  
+  #ifdef FEAT_WINDOWS
+      if ((flags & P_RSTAT) || all)    /* mark all status lines dirty */
+***************
+*** 8596,8602 ****
+       changed_window_setting();
+      if (flags & P_RBUF)
+       redraw_curbuf_later(NOT_VALID);
+!     if (clear)
+       redraw_all_later(CLEAR);
+      else if (all)
+       redraw_all_later(NOT_VALID);
+--- 8596,8602 ----
+       changed_window_setting();
+      if (flags & P_RBUF)
+       redraw_curbuf_later(NOT_VALID);
+!     if (doclear)
+       redraw_all_later(CLEAR);
+      else if (all)
+       redraw_all_later(NOT_VALID);
+*** ../vim-7.3.399/src/os_unix.c       2011-10-20 21:09:25.000000000 +0200
+--- src/os_unix.c      2012-01-10 21:48:49.000000000 +0100
+***************
+*** 3884,3890 ****
+      char_u   *p_shcf_copy = NULL;
+      int              i;
+      char_u   *p;
+-     char_u   *s;
+      int              inquote;
+      int              pty_master_fd = -1;         /* for pty's */
+  # ifdef FEAT_GUI
+--- 3884,3889 ----
+***************
+*** 3963,3968 ****
+--- 3962,3969 ----
+      }
+      if (cmd != NULL)
+      {
++      char_u  *s;
++ 
+       if (extra_shell_arg != NULL)
+           argv[argc++] = (char *)extra_shell_arg;
+  
+***************
+*** 4325,4331 ****
+                       linenr_T    lnum = curbuf->b_op_start.lnum;
+                       int         written = 0;
+                       char_u      *lp = ml_get(lnum);
+-                      char_u      *s;
+                       size_t      l;
+  
+                       close(fromshell_fd);
+--- 4326,4331 ----
+***************
+*** 4339,4345 ****
+                               len = write(toshell_fd, "", (size_t)1);
+                           else
+                           {
+!                              s = vim_strchr(lp + written, NL);
+                               len = write(toshell_fd, (char *)lp + written,
+                                          s == NULL ? l
+                                             : (size_t)(s - (lp + written)));
+--- 4339,4346 ----
+                               len = write(toshell_fd, "", (size_t)1);
+                           else
+                           {
+!                              char_u  *s = vim_strchr(lp + written, NL);
+! 
+                               len = write(toshell_fd, (char *)lp + written,
+                                          s == NULL ? l
+                                             : (size_t)(s - (lp + written)));
+*** ../vim-7.3.399/src/screen.c        2012-01-10 12:42:05.000000000 +0100
+--- src/screen.c       2012-01-10 22:06:51.000000000 +0100
+***************
+*** 7849,7863 ****
+  
+  /*
+   * screen_valid -  allocate screen buffers if size changed
+!  *   If "clear" is TRUE: clear screen if it has been resized.
+   *   Returns TRUE if there is a valid screen to write to.
+   *   Returns FALSE when starting up and screen not initialized yet.
+   */
+      int
+! screen_valid(clear)
+!     int          clear;
+  {
+!     screenalloc(clear);          /* allocate screen buffers if size changed */
+      return (ScreenLines != NULL);
+  }
+  
+--- 7849,7863 ----
+  
+  /*
+   * screen_valid -  allocate screen buffers if size changed
+!  *   If "doclear" is TRUE: clear screen if it has been resized.
+   *   Returns TRUE if there is a valid screen to write to.
+   *   Returns FALSE when starting up and screen not initialized yet.
+   */
+      int
+! screen_valid(doclear)
+!     int          doclear;
+  {
+!     screenalloc(doclear);       /* allocate screen buffers if size changed */
+      return (ScreenLines != NULL);
+  }
+  
+***************
+*** 7872,7879 ****
+   * final size of the shell is needed.
+   */
+      void
+! screenalloc(clear)
+!     int          clear;
+  {
+      int                  new_row, old_row;
+  #ifdef FEAT_GUI
+--- 7872,7879 ----
+   * final size of the shell is needed.
+   */
+      void
+! screenalloc(doclear)
+!     int          doclear;
+  {
+      int                  new_row, old_row;
+  #ifdef FEAT_GUI
+***************
+*** 8069,8075 ****
+            * (used when resizing the window at the "--more--" prompt or when
+            * executing an external command, for the GUI).
+            */
+!          if (!clear)
+           {
+               (void)vim_memset(new_ScreenLines + new_row * Columns,
+                                     ' ', (size_t)Columns * sizeof(schar_T));
+--- 8069,8075 ----
+            * (used when resizing the window at the "--more--" prompt or when
+            * executing an external command, for the GUI).
+            */
+!          if (!doclear)
+           {
+               (void)vim_memset(new_ScreenLines + new_row * Columns,
+                                     ' ', (size_t)Columns * sizeof(schar_T));
+***************
+*** 8159,8165 ****
+      screen_Columns = Columns;
+  
+      must_redraw = CLEAR;     /* need to clear the screen later */
+!     if (clear)
+       screenclear2();
+  
+  #ifdef FEAT_GUI
+--- 8159,8165 ----
+      screen_Columns = Columns;
+  
+      must_redraw = CLEAR;     /* need to clear the screen later */
+!     if (doclear)
+       screenclear2();
+  
+  #ifdef FEAT_GUI
+*** ../vim-7.3.399/src/search.c        2011-10-04 17:00:13.000000000 +0200
+--- src/search.c       2012-01-10 22:07:16.000000000 +0100
+***************
+*** 2402,2425 ****
+      {
+       if (vim_strchr(p, ';') != NULL) /* there may be comments */
+       {
+!          int instr = FALSE;  /* inside of string */
+  
+           p = line;           /* scan from start */
+           while ((p = vim_strpbrk(p, (char_u *)"\";")) != NULL)
+           {
+               if (*p == '"')
+               {
+!                  if (instr)
+                   {
+                       if (*(p - 1) != '\\') /* skip escaped quote */
+!                          instr = FALSE;
+                   }
+                   else if (p == line || ((p - line) >= 2
+                                     /* skip #\" form */
+                                     && *(p - 1) != '\\' && *(p - 2) != '#'))
+!                      instr = TRUE;
+               }
+!              else if (!instr && ((p - line) < 2
+                                   || (*(p - 1) != '\\' && *(p - 2) != '#')))
+                   break;      /* found! */
+               ++p;
+--- 2402,2425 ----
+      {
+       if (vim_strchr(p, ';') != NULL) /* there may be comments */
+       {
+!          int in_str = FALSE; /* inside of string */
+  
+           p = line;           /* scan from start */
+           while ((p = vim_strpbrk(p, (char_u *)"\";")) != NULL)
+           {
+               if (*p == '"')
+               {
+!                  if (in_str)
+                   {
+                       if (*(p - 1) != '\\') /* skip escaped quote */
+!                          in_str = FALSE;
+                   }
+                   else if (p == line || ((p - line) >= 2
+                                     /* skip #\" form */
+                                     && *(p - 1) != '\\' && *(p - 2) != '#'))
+!                      in_str = TRUE;
+               }
+!              else if (!in_str && ((p - line) < 2
+                                   || (*(p - 1) != '\\' && *(p - 2) != '#')))
+                   break;      /* found! */
+               ++p;
+*** ../vim-7.3.399/src/spell.c 2012-01-10 16:28:41.000000000 +0100
+--- src/spell.c        2012-01-10 22:09:23.000000000 +0100
+***************
+*** 5049,5055 ****
+  static int offset2bytes __ARGS((int nr, char_u *buf));
+  static int bytes2offset __ARGS((char_u **pp));
+  static void sug_write __ARGS((spellinfo_T *spin, char_u *fname));
+! static void mkspell __ARGS((int fcount, char_u **fnames, int ascii, int overwrite, int added_word));
+  static void spell_message __ARGS((spellinfo_T *spin, char_u *str));
+  static void init_spellfile __ARGS((void));
+  
+--- 5049,5055 ----
+  static int offset2bytes __ARGS((int nr, char_u *buf));
+  static int bytes2offset __ARGS((char_u **pp));
+  static void sug_write __ARGS((spellinfo_T *spin, char_u *fname));
+! static void mkspell __ARGS((int fcount, char_u **fnames, int ascii, int over_write, int added_word));
+  static void spell_message __ARGS((spellinfo_T *spin, char_u *str));
+  static void init_spellfile __ARGS((void));
+  
+***************
+*** 9085,9095 ****
+   * and ".spl" is appended to make the output file name.
+   */
+      static void
+! mkspell(fcount, fnames, ascii, overwrite, added_word)
+      int              fcount;
+      char_u   **fnames;
+      int              ascii;              /* -ascii argument given */
+!     int              overwrite;          /* overwrite existing output file */
+      int              added_word;         /* invoked through "zg" */
+  {
+      char_u   *fname = NULL;
+--- 9085,9095 ----
+   * and ".spl" is appended to make the output file name.
+   */
+      static void
+! mkspell(fcount, fnames, ascii, over_write, added_word)
+      int              fcount;
+      char_u   **fnames;
+      int              ascii;              /* -ascii argument given */
+!     int              over_write;         /* overwrite existing output file */
+      int              added_word;         /* invoked through "zg" */
+  {
+      char_u   *fname = NULL;
+***************
+*** 9173,9179 ****
+      {
+       /* Check for overwriting before doing things that may take a lot of
+        * time. */
+!      if (!overwrite && mch_stat((char *)wfname, &st) >= 0)
+       {
+           EMSG(_(e_exists));
+           goto theend;
+--- 9173,9179 ----
+      {
+       /* Check for overwriting before doing things that may take a lot of
+        * time. */
+!      if (!over_write && mch_stat((char *)wfname, &st) >= 0)
+       {
+           EMSG(_(e_exists));
+           goto theend;
+*** ../vim-7.3.399/src/syntax.c        2011-06-19 04:54:17.000000000 +0200
+--- src/syntax.c       2012-01-10 22:10:23.000000000 +0100
+***************
+*** 4006,4022 ****
+  }
+  
+      static void
+! syn_list_flags(nl, flags, attr)
+!     struct name_list *nl;
+      int                      flags;
+      int                      attr;
+  {
+      int              i;
+  
+!     for (i = 0; nl[i].flag != 0; ++i)
+!      if (flags & nl[i].flag)
+       {
+!          msg_puts_attr((char_u *)nl[i].name, attr);
+           msg_putchar(' ');
+       }
+  }
+--- 4006,4022 ----
+  }
+  
+      static void
+! syn_list_flags(nlist, flags, attr)
+!     struct name_list *nlist;
+      int                      flags;
+      int                      attr;
+  {
+      int              i;
+  
+!     for (i = 0; nlist[i].flag != 0; ++i)
+!      if (flags & nlist[i].flag)
+       {
+!          msg_puts_attr((char_u *)nlist[i].name, attr);
+           msg_putchar(' ');
+       }
+  }
+*** ../vim-7.3.399/src/tag.c   2011-12-14 14:15:12.000000000 +0100
+--- src/tag.c  2012-01-10 21:51:05.000000000 +0100
+***************
+*** 1353,1359 ****
+      int              match_count = 0;                /* number of matches found */
+      char_u   **matches;
+      int              mtt;
+-     int              len;
+      int              help_save;
+  #ifdef FEAT_MULTI_LANG
+      int              help_pri = 0;
+--- 1353,1358 ----
+***************
+*** 2235,2240 ****
+--- 2234,2241 ----
+                */
+               if (ga_grow(&ga_match[mtt], 1) == OK)
+               {
++                  int len;
++ 
+                   if (help_only)
+                   {
+  #ifdef FEAT_MULTI_LANG
+*** ../vim-7.3.399/src/window.c        2011-12-30 15:01:55.000000000 +0100
+--- src/window.c       2012-01-10 22:11:41.000000000 +0100
+***************
+*** 683,701 ****
+  }
+  
+  /*
+!  * When "newwin" is NULL: split the current window in two.
+!  * When "newwin" is not NULL: insert this window at the far
+   * top/left/right/bottom.
+   * return FAIL for failure, OK otherwise
+   */
+      int
+! win_split_ins(size, flags, newwin, dir)
+      int              size;
+      int              flags;
+!     win_T    *newwin;
+      int              dir;
+  {
+!     win_T    *wp = newwin;
+      win_T    *oldwin;
+      int              new_size = size;
+      int              i;
+--- 683,701 ----
+  }
+  
+  /*
+!  * When "new_wp" is NULL: split the current window in two.
+!  * When "new_wp" is not NULL: insert this window at the far
+   * top/left/right/bottom.
+   * return FAIL for failure, OK otherwise
+   */
+      int
+! win_split_ins(size, flags, new_wp, dir)
+      int              size;
+      int              flags;
+!     win_T    *new_wp;
+      int              dir;
+  {
+!     win_T    *wp = new_wp;
+      win_T    *oldwin;
+      int              new_size = size;
+      int              i;
+***************
+*** 718,724 ****
+      /* add a status line when p_ls == 1 and splitting the first window */
+      if (lastwin == firstwin && p_ls == 1 && oldwin->w_status_height == 0)
+      {
+!      if (oldwin->w_height <= p_wmh && newwin == NULL)
+       {
+           EMSG(_(e_noroom));
+           return FAIL;
+--- 718,724 ----
+      /* add a status line when p_ls == 1 and splitting the first window */
+      if (lastwin == firstwin && p_ls == 1 && oldwin->w_status_height == 0)
+      {
+!      if (oldwin->w_height <= p_wmh && new_wp == NULL)
+       {
+           EMSG(_(e_noroom));
+           return FAIL;
+***************
+*** 751,757 ****
+       }
+       else
+           available = oldwin->w_width;
+!      if (available < needed && newwin == NULL)
+       {
+           EMSG(_(e_noroom));
+           return FAIL;
+--- 751,757 ----
+       }
+       else
+           available = oldwin->w_width;
+!      if (available < needed && new_wp == NULL)
+       {
+           EMSG(_(e_noroom));
+           return FAIL;
+***************
+*** 815,821 ****
+           available = oldwin->w_height;
+           needed += p_wmh;
+       }
+!      if (available < needed && newwin == NULL)
+       {
+           EMSG(_(e_noroom));
+           return FAIL;
+--- 815,821 ----
+           available = oldwin->w_height;
+           needed += p_wmh;
+       }
+!      if (available < needed && new_wp == NULL)
+       {
+           EMSG(_(e_noroom));
+           return FAIL;
+***************
+*** 888,907 ****
+                       p_sb))))
+      {
+       /* new window below/right of current one */
+!      if (newwin == NULL)
+           wp = win_alloc(oldwin, FALSE);
+       else
+           win_append(oldwin, wp);
+      }
+      else
+      {
+!      if (newwin == NULL)
+           wp = win_alloc(oldwin->w_prev, FALSE);
+       else
+           win_append(oldwin->w_prev, wp);
+      }
+  
+!     if (newwin == NULL)
+      {
+       if (wp == NULL)
+           return FAIL;
+--- 888,907 ----
+                       p_sb))))
+      {
+       /* new window below/right of current one */
+!      if (new_wp == NULL)
+           wp = win_alloc(oldwin, FALSE);
+       else
+           win_append(oldwin, wp);
+      }
+      else
+      {
+!      if (new_wp == NULL)
+           wp = win_alloc(oldwin->w_prev, FALSE);
+       else
+           win_append(oldwin->w_prev, wp);
+      }
+  
+!     if (new_wp == NULL)
+      {
+       if (wp == NULL)
+           return FAIL;
+***************
+*** 972,981 ****
+               frp->fr_parent = curfrp;
+      }
+  
+!     if (newwin == NULL)
+       frp = wp->w_frame;
+      else
+!      frp = newwin->w_frame;
+      frp->fr_parent = curfrp->fr_parent;
+  
+      /* Insert the new frame at the right place in the frame list. */
+--- 972,981 ----
+               frp->fr_parent = curfrp;
+      }
+  
+!     if (new_wp == NULL)
+       frp = wp->w_frame;
+      else
+!      frp = new_wp->w_frame;
+      frp->fr_parent = curfrp->fr_parent;
+  
+      /* Insert the new frame at the right place in the frame list. */
+***************
+*** 4284,4302 ****
+      win_T    *after UNUSED;
+      int              hidden UNUSED;
+  {
+!     win_T    *newwin;
+  
+      /*
+       * allocate window structure and linesizes arrays
+       */
+!     newwin = (win_T *)alloc_clear((unsigned)sizeof(win_T));
+!     if (newwin != NULL && win_alloc_lines(newwin) == FAIL)
+      {
+!      vim_free(newwin);
+!      newwin = NULL;
+      }
+  
+!     if (newwin != NULL)
+      {
+  #ifdef FEAT_AUTOCMD
+       /* Don't execute autocommands while the window is not properly
+--- 4284,4302 ----
+      win_T    *after UNUSED;
+      int              hidden UNUSED;
+  {
+!     win_T    *new_wp;
+  
+      /*
+       * allocate window structure and linesizes arrays
+       */
+!     new_wp = (win_T *)alloc_clear((unsigned)sizeof(win_T));
+!     if (new_wp != NULL && win_alloc_lines(new_wp) == FAIL)
+      {
+!      vim_free(new_wp);
+!      new_wp = NULL;
+      }
+  
+!     if (new_wp != NULL)
+      {
+  #ifdef FEAT_AUTOCMD
+       /* Don't execute autocommands while the window is not properly
+***************
+*** 4309,4361 ****
+        */
+  #ifdef FEAT_WINDOWS
+       if (!hidden)
+!          win_append(after, newwin);
+  #endif
+  #ifdef FEAT_VERTSPLIT
+!      newwin->w_wincol = 0;
+!      newwin->w_width = Columns;
+  #endif
+  
+       /* position the display and the cursor at the top of the file. */
+!      newwin->w_topline = 1;
+  #ifdef FEAT_DIFF
+!      newwin->w_topfill = 0;
+  #endif
+!      newwin->w_botline = 2;
+!      newwin->w_cursor.lnum = 1;
+  #ifdef FEAT_SCROLLBIND
+!      newwin->w_scbind_pos = 1;
+  #endif
+  
+       /* We won't calculate w_fraction until resizing the window */
+!      newwin->w_fraction = 0;
+!      newwin->w_prev_fraction_row = -1;
+  
+  #ifdef FEAT_GUI
+       if (gui.in_use)
+       {
+!          gui_create_scrollbar(&newwin->w_scrollbars[SBAR_LEFT],
+!                  SBAR_LEFT, newwin);
+!          gui_create_scrollbar(&newwin->w_scrollbars[SBAR_RIGHT],
+!                  SBAR_RIGHT, newwin);
+       }
+  #endif
+  #ifdef FEAT_EVAL
+       /* init w: variables */
+!      init_var_dict(&newwin->w_vars, &newwin->w_winvar);
+  #endif
+  #ifdef FEAT_FOLDING
+!      foldInitWin(newwin);
+  #endif
+  #ifdef FEAT_AUTOCMD
+       unblock_autocmds();
+  #endif
+  #ifdef FEAT_SEARCH_EXTRA
+!      newwin->w_match_head = NULL;
+!      newwin->w_next_match_id = 4;
+  #endif
+      }
+!     return newwin;
+  }
+  
+  #if defined(FEAT_WINDOWS) || defined(PROTO)
+--- 4309,4361 ----
+        */
+  #ifdef FEAT_WINDOWS
+       if (!hidden)
+!          win_append(after, new_wp);
+  #endif
+  #ifdef FEAT_VERTSPLIT
+!      new_wp->w_wincol = 0;
+!      new_wp->w_width = Columns;
+  #endif
+  
+       /* position the display and the cursor at the top of the file. */
+!      new_wp->w_topline = 1;
+  #ifdef FEAT_DIFF
+!      new_wp->w_topfill = 0;
+  #endif
+!      new_wp->w_botline = 2;
+!      new_wp->w_cursor.lnum = 1;
+  #ifdef FEAT_SCROLLBIND
+!      new_wp->w_scbind_pos = 1;
+  #endif
+  
+       /* We won't calculate w_fraction until resizing the window */
+!      new_wp->w_fraction = 0;
+!      new_wp->w_prev_fraction_row = -1;
+  
+  #ifdef FEAT_GUI
+       if (gui.in_use)
+       {
+!          gui_create_scrollbar(&new_wp->w_scrollbars[SBAR_LEFT],
+!                  SBAR_LEFT, new_wp);
+!          gui_create_scrollbar(&new_wp->w_scrollbars[SBAR_RIGHT],
+!                  SBAR_RIGHT, new_wp);
+       }
+  #endif
+  #ifdef FEAT_EVAL
+       /* init w: variables */
+!      init_var_dict(&new_wp->w_vars, &new_wp->w_winvar);
+  #endif
+  #ifdef FEAT_FOLDING
+!      foldInitWin(new_wp);
+  #endif
+  #ifdef FEAT_AUTOCMD
+       unblock_autocmds();
+  #endif
+  #ifdef FEAT_SEARCH_EXTRA
+!      new_wp->w_match_head = NULL;
+!      new_wp->w_next_match_id = 4;
+  #endif
+      }
+!     return new_wp;
+  }
+  
+  #if defined(FEAT_WINDOWS) || defined(PROTO)
+*** ../vim-7.3.399/src/version.c       2012-01-10 18:37:53.000000000 +0100
+--- src/version.c      2012-01-10 22:23:10.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     400,
+  /**/
+
+-- 
+A parent can be arrested if his child cannot hold back a burp during a church
+service.
+               [real standing law in Nebraska, United States of America]
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.401.patch0 b/vim/patches/vim-7.3.401.patch0
new file mode 100644 (file)
index 0000000..6a473c5
--- /dev/null
@@ -0,0 +1,191 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.401
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.401
+Problem:    A couple more shadowed variables.
+Solution:   Rename the variables.
+Files:     src/netbeans.c
+
+
+*** ../vim-7.3.400/src/netbeans.c      2012-01-10 22:26:12.000000000 +0100
+--- src/netbeans.c     2012-01-10 22:30:17.000000000 +0100
+***************
+*** 443,449 ****
+      FILE *fp;
+      char_u buf[BUFSIZ];
+      char_u *lp;
+!     char_u *nl;
+  #ifdef UNIX
+      struct stat      st;
+  
+--- 443,449 ----
+      FILE *fp;
+      char_u buf[BUFSIZ];
+      char_u *lp;
+!     char_u *nlp;
+  #ifdef UNIX
+      struct stat      st;
+  
+***************
+*** 472,479 ****
+      /* Read the file. There should be one of each parameter */
+      while ((lp = (char_u *)fgets((char *)buf, BUFSIZ, fp)) != NULL)
+      {
+!      if ((nl = vim_strchr(lp, '\n')) != NULL)
+!          *nl = 0;        /* strip off the trailing newline */
+  
+       if (STRNCMP(lp, "host=", 5) == 0)
+       {
+--- 472,479 ----
+      /* Read the file. There should be one of each parameter */
+      while ((lp = (char_u *)fgets((char *)buf, BUFSIZ, fp)) != NULL)
+      {
+!      if ((nlp = vim_strchr(lp, '\n')) != NULL)
+!          *nlp = 0;       /* strip off the trailing newline */
+  
+       if (STRNCMP(lp, "host=", 5) == 0)
+       {
+***************
+*** 1740,1746 ****
+               int     added = 0;
+               int     oldFire = netbeansFireChanges;
+               int     old_b_changed;
+!              char_u  *nl;
+               linenr_T lnum;
+               linenr_T lnum_start;
+               pos_T   *pos;
+--- 1740,1746 ----
+               int     added = 0;
+               int     oldFire = netbeansFireChanges;
+               int     old_b_changed;
+!              char_u  *nlp;
+               linenr_T lnum;
+               linenr_T lnum_start;
+               pos_T   *pos;
+***************
+*** 1780,1787 ****
+               do_update = 1;
+               while (*args != NUL)
+               {
+!                  nl = vim_strchr(args, '\n');
+!                  if (nl == NULL)
+                   {
+                       /* Incomplete line, probably truncated.  Next "insert"
+                        * command should append to this one. */
+--- 1780,1787 ----
+               do_update = 1;
+               while (*args != NUL)
+               {
+!                  nlp = vim_strchr(args, '\n');
+!                  if (nlp == NULL)
+                   {
+                       /* Incomplete line, probably truncated.  Next "insert"
+                        * command should append to this one. */
+***************
+*** 1789,1801 ****
+                   }
+                   else
+                   {
+!                      len = nl - args;
+  
+                       /*
+                        * We need to detect EOL style, because the commands
+                        * use a character offset.
+                        */
+!                      if (nl > args && nl[-1] == '\r')
+                       {
+                           ff_detected = EOL_DOS;
+                           --len;
+--- 1789,1801 ----
+                   }
+                   else
+                   {
+!                      len = nlp - args;
+  
+                       /*
+                        * We need to detect EOL style, because the commands
+                        * use a character offset.
+                        */
+!                      if (nlp > args && nlp[-1] == '\r')
+                       {
+                           ff_detected = EOL_DOS;
+                           --len;
+***************
+*** 1814,1820 ****
+  
+                       /* Insert halfway a line.  For simplicity we assume we
+                        * need to append to the line. */
+!                      newline = alloc_check((unsigned)(STRLEN(oldline) + len + 1));
+                       if (newline != NULL)
+                       {
+                           STRCPY(newline, oldline);
+--- 1814,1821 ----
+  
+                       /* Insert halfway a line.  For simplicity we assume we
+                        * need to append to the line. */
+!                      newline = alloc_check(
+!                                     (unsigned)(STRLEN(oldline) + len + 1));
+                       if (newline != NULL)
+                       {
+                           STRCPY(newline, oldline);
+***************
+*** 1826,1839 ****
+                   {
+                       /* Append a new line.  Not that we always do this,
+                        * also when the text doesn't end in a "\n". */
+!                      ml_append((linenr_T)(lnum - 1), args, (colnr_T)(len + 1), FALSE);
+                       ++added;
+                   }
+  
+!                  if (nl == NULL)
+                       break;
+                   ++lnum;
+!                  args = nl + 1;
+               }
+  
+               /* Adjust the marks below the inserted lines. */
+--- 1827,1841 ----
+                   {
+                       /* Append a new line.  Not that we always do this,
+                        * also when the text doesn't end in a "\n". */
+!                      ml_append((linenr_T)(lnum - 1), args,
+!                                                 (colnr_T)(len + 1), FALSE);
+                       ++added;
+                   }
+  
+!                  if (nlp == NULL)
+                       break;
+                   ++lnum;
+!                  args = nlp + 1;
+               }
+  
+               /* Adjust the marks below the inserted lines. */
+*** ../vim-7.3.400/src/version.c       2012-01-10 22:26:12.000000000 +0100
+--- src/version.c      2012-01-10 22:30:47.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     401,
+  /**/
+
+-- 
+So when I saw the post to comp.editors, I rushed over to the FTP site to
+grab it.  So I yank apart the tarball, light x candles, where x= the
+vim version multiplied by the md5sum of the source divided by the MAC of
+my NIC (8A3FA78155A8A1D346C3C4A), put on black robes, dim the lights,
+wave a dead chicken over the hard drive, and summon the power of GNU GCC
+with the magic words "make config ; make!".
+               [Jason Spence, compiling Vim 5.0]
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.402.patch0 b/vim/patches/vim-7.3.402.patch0
new file mode 100644 (file)
index 0000000..a5501f8
--- /dev/null
@@ -0,0 +1,59 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.402
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.402
+Problem:    When jumping to the first error a line of the buffer is sometimes
+           redrawn on top of the list of errors.
+Solution:   Do not call update_topline_redraw() if the display was scrolled
+           up.
+Files:     src/quickfix.c
+
+
+*** ../vim-7.3.401/src/quickfix.c      2012-01-10 17:13:48.000000000 +0100
+--- src/quickfix.c     2012-01-20 13:13:25.000000000 +0100
+***************
+*** 1842,1849 ****
+  #endif
+       if (print_message)
+       {
+!          /* Update the screen before showing the message */
+!          update_topline_redraw();
+           sprintf((char *)IObuff, _("(%d of %d)%s%s: "), qf_index,
+                   qi->qf_lists[qi->qf_curlist].qf_count,
+                   qf_ptr->qf_cleared ? _(" (line deleted)") : "",
+--- 1842,1851 ----
+  #endif
+       if (print_message)
+       {
+!          /* Update the screen before showing the message, unless the screen
+!           * scrolled up. */
+!          if (!msg_scrolled)
+!              update_topline_redraw();
+           sprintf((char *)IObuff, _("(%d of %d)%s%s: "), qf_index,
+                   qi->qf_lists[qi->qf_curlist].qf_count,
+                   qf_ptr->qf_cleared ? _(" (line deleted)") : "",
+*** ../vim-7.3.401/src/version.c       2012-01-10 22:31:26.000000000 +0100
+--- src/version.c      2012-01-20 13:17:50.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     402,
+  /**/
+
+-- 
+If all you have is a hammer, everything looks like a nail.
+When your hammer is C++, everything begins to look like a thumb.
+                       -- Steve Hoflich, comp.lang.c++
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.403.patch0 b/vim/patches/vim-7.3.403.patch0
new file mode 100644 (file)
index 0000000..bc3bf54
--- /dev/null
@@ -0,0 +1,108 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.403
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.403
+Problem:    ":helpgrep" does not trigger QuickFixCmd* autocommands.
+Solution:   Trigger the autocommands. (Christian Brabandt)
+Files:     src/quickfix.c
+
+
+*** ../vim-7.3.402/src/quickfix.c      2012-01-20 13:28:28.000000000 +0100
+--- src/quickfix.c     2012-01-20 13:37:10.000000000 +0100
+***************
+*** 3878,3893 ****
+      qf_info_T        *qi = &ql_info;
+      int              new_qi = FALSE;
+      win_T    *wp;
+! 
+!     /* Make 'cpoptions' empty, the 'l' flag should not be used here. */
+!     save_cpo = p_cpo;
+!     p_cpo = empty_option;
+  
+  #ifdef FEAT_MULTI_LANG
+      /* Check for a specified language */
+      lang = check_help_lang(eap->arg);
+  #endif
+  
+      if (eap->cmdidx == CMD_lhelpgrep)
+      {
+       /* Find an existing help window */
+--- 3878,3912 ----
+      qf_info_T        *qi = &ql_info;
+      int              new_qi = FALSE;
+      win_T    *wp;
+! #ifdef FEAT_AUTOCMD
+!     char_u   *au_name =  NULL;
+! #endif
+  
+  #ifdef FEAT_MULTI_LANG
+      /* Check for a specified language */
+      lang = check_help_lang(eap->arg);
+  #endif
+  
++ #ifdef FEAT_AUTOCMD
++     switch (eap->cmdidx)
++     {
++      case CMD_helpgrep:  au_name = (char_u *)"helpgrep"; break;
++      case CMD_lhelpgrep: au_name = (char_u *)"lhelpgrep"; break;
++      default: break;
++     }
++     if (au_name != NULL)
++     {
++      apply_autocmds(EVENT_QUICKFIXCMDPRE, au_name,
++                                             curbuf->b_fname, TRUE, curbuf);
++      if (did_throw || force_abort)
++          return;
++     }
++ #endif
++ 
++     /* Make 'cpoptions' empty, the 'l' flag should not be used here. */
++     save_cpo = p_cpo;
++     p_cpo = empty_option;
++ 
+      if (eap->cmdidx == CMD_lhelpgrep)
+      {
+       /* Find an existing help window */
+***************
+*** 4036,4041 ****
+--- 4055,4071 ----
+      qf_update_buffer(qi);
+  #endif
+  
++ #ifdef FEAT_AUTOCMD
++     if (au_name != NULL)
++     {
++      apply_autocmds(EVENT_QUICKFIXCMDPOST, au_name,
++                                             curbuf->b_fname, TRUE, curbuf);
++      if (!new_qi && qi != &ql_info && qf_find_buf(qi) == NULL)
++          /* autocommands made "qi" invalid */
++          return;
++     }
++ #endif
++ 
+      /* Jump to first match. */
+      if (qi->qf_lists[qi->qf_curlist].qf_count > 0)
+       qf_jump(qi, 0, 0, FALSE);
+*** ../vim-7.3.402/src/version.c       2012-01-20 13:28:28.000000000 +0100
+--- src/version.c      2012-01-20 13:30:37.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     403,
+  /**/
+
+-- 
+Looking at Perl through Lisp glasses, Perl looks atrocious.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.404.patch0 b/vim/patches/vim-7.3.404.patch0
new file mode 100644 (file)
index 0000000..445d705
--- /dev/null
@@ -0,0 +1,85 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.404
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.404
+Problem:    When a complete function uses refresh "always" redo will not work
+           properly.
+Solution:   Do not reset compl_leader when compl_opt_refresh_always is set.
+           (Yasuhiro Matsumoto)
+Files:     src/edit.c
+
+
+*** ../vim-7.3.403/src/edit.c  2012-01-10 22:26:12.000000000 +0100
+--- src/edit.c 2012-01-20 14:26:06.000000000 +0100
+***************
+*** 3465,3475 ****
+      if (ins_compl_need_restart())
+       ins_compl_restart();
+  
+!     vim_free(compl_leader);
+!     compl_leader = vim_strnsave(ml_get_curline() + compl_col,
+                                    (int)(curwin->w_cursor.col - compl_col));
+!     if (compl_leader != NULL)
+!      ins_compl_new_leader();
+  }
+  
+  /*
+--- 3465,3481 ----
+      if (ins_compl_need_restart())
+       ins_compl_restart();
+  
+!     /* When 'always' is set, don't reset compl_leader. While completing,
+!      * cursor don't point original position, changing compl_leader would
+!      * break redo. */
+!     if (!compl_opt_refresh_always)
+!     {
+!      vim_free(compl_leader);
+!      compl_leader = vim_strnsave(ml_get_curline() + compl_col,
+                                    (int)(curwin->w_cursor.col - compl_col));
+!      if (compl_leader != NULL)
+!          ins_compl_new_leader();
+!     }
+  }
+  
+  /*
+***************
+*** 4554,4559 ****
+--- 4560,4570 ----
+      int          found_end = FALSE;
+      int          advance;
+  
++     /* When user complete function return -1 for findstart which is next
++      * time of 'always', compl_shown_match become NULL. */
++     if (compl_shown_match == NULL)
++      return -1;
++ 
+      if (compl_leader != NULL
+                       && (compl_shown_match->cp_flags & ORIGINAL_TEXT) == 0)
+      {
+*** ../vim-7.3.403/src/version.c       2012-01-20 13:39:03.000000000 +0100
+--- src/version.c      2012-01-20 14:31:26.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     404,
+  /**/
+
+-- 
+ARTHUR: I've said I'm sorry about the old woman, but from the behind you
+        looked ...
+DENNIS: What I object to is that you automatically treat me like an inferior...
+ARTHUR: Well ... I AM king.
+                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.405.patch0 b/vim/patches/vim-7.3.405.patch0
new file mode 100644 (file)
index 0000000..087aecc
--- /dev/null
@@ -0,0 +1,101 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.405
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.405
+Problem:    When xterm gets back the function keys it may delete the urxvt
+           mouse termcap code.
+Solution:   Check for the whole code, not just the start. (Egmont Koblinger)
+Files:     src/keymap.h, src/misc2.c, src/term.c
+
+
+*** ../vim-7.3.404/src/keymap.h        2011-10-20 21:09:25.000000000 +0200
+--- src/keymap.h       2012-01-20 16:35:43.000000000 +0100
+***************
+*** 411,416 ****
+--- 411,417 ----
+  #define K_DEC_MOUSE  TERMCAP2KEY(KS_DEC_MOUSE, KE_FILLER)
+  #define K_JSBTERM_MOUSE      TERMCAP2KEY(KS_JSBTERM_MOUSE, KE_FILLER)
+  #define K_PTERM_MOUSE        TERMCAP2KEY(KS_PTERM_MOUSE, KE_FILLER)
++ #define K_URXVT_MOUSE        TERMCAP2KEY(KS_URXVT_MOUSE, KE_FILLER)
+  
+  #define K_SELECT     TERMCAP2KEY(KS_SELECT, KE_FILLER)
+  #define K_TEAROFF    TERMCAP2KEY(KS_TEAROFF, KE_FILLER)
+*** ../vim-7.3.404/src/misc2.c 2012-01-10 22:26:12.000000000 +0100
+--- src/misc2.c        2012-01-20 16:38:27.000000000 +0100
+***************
+*** 2416,2425 ****
+--- 2416,2436 ----
+      {'<',            (char_u *)"lt"},
+  
+      {K_MOUSE,                (char_u *)"Mouse"},
++ #ifdef FEAT_MOUSE_NET
+      {K_NETTERM_MOUSE,        (char_u *)"NetMouse"},
++ #endif
++ #ifdef FEAT_MOUSE_DEC
+      {K_DEC_MOUSE,    (char_u *)"DecMouse"},
++ #endif
++ #ifdef FEAT_MOUSE_JSB
+      {K_JSBTERM_MOUSE,        (char_u *)"JsbMouse"},
++ #endif
++ #ifdef FEAT_MOUSE_PTERM
+      {K_PTERM_MOUSE,  (char_u *)"PtermMouse"},
++ #endif
++ #ifdef FEAT_MOUSE_URXVT
++     {K_URXVT_MOUSE,  (char_u *)"UrxvtMouse"},
++ #endif
+      {K_LEFTMOUSE,    (char_u *)"LeftMouse"},
+      {K_LEFTMOUSE_NM, (char_u *)"LeftMouseNM"},
+      {K_LEFTDRAG,     (char_u *)"LeftDrag"},
+*** ../vim-7.3.404/src/term.c  2011-12-01 20:59:16.000000000 +0100
+--- src/term.c 2012-01-20 16:50:41.000000000 +0100
+***************
+*** 5252,5263 ****
+      char_u   *src;
+  {
+      int              i;
+!     int              slen;
+  
+      for (i = 0; i < tc_len; ++i)
+      {
+!      slen = termcodes[i].len;
+!      if (slen > 1 && STRNCMP(termcodes[i].code, src, (size_t)slen) == 0)
+           return i;
+      }
+      return -1;
+--- 5252,5263 ----
+      char_u   *src;
+  {
+      int              i;
+!     int              slen = STRLEN(src);
+  
+      for (i = 0; i < tc_len; ++i)
+      {
+!      if (slen == termcodes[i].len
+!                      && STRNCMP(termcodes[i].code, src, (size_t)slen) == 0)
+           return i;
+      }
+      return -1;
+*** ../vim-7.3.404/src/version.c       2012-01-20 14:32:22.000000000 +0100
+--- src/version.c      2012-01-20 16:59:47.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     405,
+  /**/
+
+-- 
+"The future's already arrived - it's just not evenly distributed yet."
+               -- William Gibson
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.406.patch0 b/vim/patches/vim-7.3.406.patch0
new file mode 100644 (file)
index 0000000..dceca0e
--- /dev/null
@@ -0,0 +1,103 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.406
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.406
+Problem:    Multi-byte characters in b:browsefilter are not handled correctly.
+Solution:   First use convert_filter() normally and then convert to wide
+           characters. (Taro Muraoka)
+Files:     src/gui_w48.c
+
+
+*** ../vim-7.3.405/src/gui_w48.c       2011-09-07 18:58:24.000000000 +0200
+--- src/gui_w48.c      2012-01-20 17:54:19.000000000 +0100
+***************
+*** 328,333 ****
+--- 328,337 ----
+  static LRESULT _OnImeNotify(HWND hWnd, DWORD dwCommand, DWORD dwData);
+  #endif
+  
++ #if defined(FEAT_MBYTE) && defined(WIN3264)
++ static char_u *convert_filter(char_u *s);
++ #endif
++ 
+  #ifdef DEBUG_PRINT_ERROR
+  /*
+   * Print out the last Windows error message
+***************
+*** 3275,3302 ****
+  
+  # if defined(FEAT_MBYTE) && defined(WIN3264)
+  /*
+!  * Wide version of convert_filter().  Keep in sync!
+   */
+      static WCHAR *
+  convert_filterW(char_u *s)
+  {
+!     WCHAR    *res;
+!     unsigned s_len = (unsigned)STRLEN(s);
+!     unsigned i;
+  
+!     res = (WCHAR *)alloc((s_len + 3) * sizeof(WCHAR));
+!     if (res != NULL)
+!     {
+!      for (i = 0; i < s_len; ++i)
+!          if (s[i] == '\t' || s[i] == '\n')
+!              res[i] = '\0';
+!          else
+!              res[i] = s[i];
+!      res[s_len] = NUL;
+!      /* Add two extra NULs to make sure it's properly terminated. */
+!      res[s_len + 1] = NUL;
+!      res[s_len + 2] = NUL;
+!     }
+      return res;
+  }
+  
+--- 3279,3298 ----
+  
+  # if defined(FEAT_MBYTE) && defined(WIN3264)
+  /*
+!  * Wide version of convert_filter().
+   */
+      static WCHAR *
+  convert_filterW(char_u *s)
+  {
+!     char_u *tmp;
+!     int len;
+  
+!     tmp = convert_filter(s);
+!     if (tmp == NULL)
+!      return NULL;
+!     len = (int)STRLEN(s) + 3;
+!     res = enc_to_utf16(tmp, &len);
+!     vim_free(tmp);
+      return res;
+  }
+  
+*** ../vim-7.3.405/src/version.c       2012-01-20 17:15:47.000000000 +0100
+--- src/version.c      2012-01-20 17:57:09.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     406,
+  /**/
+
+-- 
+DENNIS: Look,  strange women lying on their backs in ponds handing out
+        swords ... that's no basis for a system of government.  Supreme
+        executive power derives from a mandate from the masses, not from some
+        farcical aquatic ceremony.
+                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.407.patch0 b/vim/patches/vim-7.3.407.patch0
new file mode 100644 (file)
index 0000000..d5ac133
--- /dev/null
@@ -0,0 +1,270 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.407
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.407
+Problem:    ":12verbose call F()" may duplicate text while trying to truncate.
+           (Thinca)
+Solution:   Only truncate when there is not enough room.  Also check the byte
+           length of the buffer.
+Files:     src/buffer.c, src/eval.c, src/ex_getln.c, src/message.c,
+           src/proto/message.pro
+
+
+*** ../vim-7.3.406/src/buffer.c        2011-12-30 13:39:04.000000000 +0100
+--- src/buffer.c       2012-01-20 18:37:43.000000000 +0100
+***************
+*** 3258,3266 ****
+           if (maxlen > 0)
+           {
+               /* make it shorter by removing a bit in the middle */
+!              len = vim_strsize(buf);
+!              if (len > maxlen)
+!                  trunc_string(buf, buf, maxlen);
+           }
+       }
+      }
+--- 3258,3265 ----
+           if (maxlen > 0)
+           {
+               /* make it shorter by removing a bit in the middle */
+!              if (vim_strsize(buf) > maxlen)
+!                  trunc_string(buf, buf, maxlen, IOSIZE);
+           }
+       }
+      }
+*** ../vim-7.3.406/src/eval.c  2012-01-10 22:26:12.000000000 +0100
+--- src/eval.c 2012-01-20 20:43:32.000000000 +0100
+***************
+*** 22163,22170 ****
+                       s = tv2string(&argvars[i], &tofree, numbuf2, 0);
+                       if (s != NULL)
+                       {
+!                          trunc_string(s, buf, MSG_BUF_CLEN);
+!                          msg_puts(buf);
+                           vim_free(tofree);
+                       }
+                   }
+--- 22163,22174 ----
+                       s = tv2string(&argvars[i], &tofree, numbuf2, 0);
+                       if (s != NULL)
+                       {
+!                          if (vim_strsize(s) > MSG_BUF_CLEN)
+!                          {
+!                              trunc_string(s, buf, MSG_BUF_CLEN, MSG_BUF_LEN);
+!                              s = buf;
+!                          }
+!                          msg_puts(s);
+                           vim_free(tofree);
+                       }
+                   }
+***************
+*** 22252,22259 ****
+           s = tv2string(fc->rettv, &tofree, numbuf2, 0);
+           if (s != NULL)
+           {
+!              trunc_string(s, buf, MSG_BUF_CLEN);
+!              smsg((char_u *)_("%s returning %s"), sourcing_name, buf);
+               vim_free(tofree);
+           }
+       }
+--- 22256,22267 ----
+           s = tv2string(fc->rettv, &tofree, numbuf2, 0);
+           if (s != NULL)
+           {
+!              if (vim_strsize(s) > MSG_BUF_CLEN)
+!              {
+!                  trunc_string(s, buf, MSG_BUF_CLEN, MSG_BUF_LEN);
+!                  s = buf;
+!              }
+!              smsg((char_u *)_("%s returning %s"), sourcing_name, s);
+               vim_free(tofree);
+           }
+       }
+*** ../vim-7.3.406/src/ex_getln.c      2011-12-08 18:44:47.000000000 +0100
+--- src/ex_getln.c     2012-01-20 18:40:46.000000000 +0100
+***************
+*** 5923,5929 ****
+                                                             hist[i].hisnum);
+                   if (vim_strsize(hist[i].hisstr) > (int)Columns - 10)
+                       trunc_string(hist[i].hisstr, IObuff + STRLEN(IObuff),
+!                                                         (int)Columns - 10);
+                   else
+                       STRCAT(IObuff, hist[i].hisstr);
+                   msg_outtrans(IObuff);
+--- 5923,5929 ----
+                                                             hist[i].hisnum);
+                   if (vim_strsize(hist[i].hisstr) > (int)Columns - 10)
+                       trunc_string(hist[i].hisstr, IObuff + STRLEN(IObuff),
+!                                (int)Columns - 10, IOSIZE - STRLEN(IObuff));
+                   else
+                       STRCAT(IObuff, hist[i].hisstr);
+                   msg_outtrans(IObuff);
+*** ../vim-7.3.406/src/message.c       2012-01-10 22:26:12.000000000 +0100
+--- src/message.c      2012-01-20 20:38:29.000000000 +0100
+***************
+*** 222,236 ****
+           if (enc_utf8)
+               /* may have up to 18 bytes per cell (6 per char, up to two
+                * composing chars) */
+!              buf = alloc((room + 2) * 18);
+           else if (enc_dbcs == DBCS_JPNU)
+               /* may have up to 2 bytes per cell for euc-jp */
+!              buf = alloc((room + 2) * 2);
+           else
+  #endif
+!              buf = alloc(room + 2);
+           if (buf != NULL)
+!              trunc_string(s, buf, room);
+       }
+      }
+      return buf;
+--- 222,237 ----
+           if (enc_utf8)
+               /* may have up to 18 bytes per cell (6 per char, up to two
+                * composing chars) */
+!              len = (room + 2) * 18;
+           else if (enc_dbcs == DBCS_JPNU)
+               /* may have up to 2 bytes per cell for euc-jp */
+!              len = (room + 2) * 2;
+           else
+  #endif
+!              len = room + 2;
+!          buf = alloc(len);
+           if (buf != NULL)
+!              trunc_string(s, buf, room, len);
+       }
+      }
+      return buf;
+***************
+*** 241,250 ****
+   * "s" and "buf" may be equal.
+   */
+      void
+! trunc_string(s, buf, room)
+      char_u   *s;
+      char_u   *buf;
+      int              room;
+  {
+      int              half;
+      int              len;
+--- 242,252 ----
+   * "s" and "buf" may be equal.
+   */
+      void
+! trunc_string(s, buf, room, buflen)
+      char_u   *s;
+      char_u   *buf;
+      int              room;
++     int              buflen;
+  {
+      int              half;
+      int              len;
+***************
+*** 257,263 ****
+      len = 0;
+  
+      /* First part: Start of the string. */
+!     for (e = 0; len < half; ++e)
+      {
+       if (s[e] == NUL)
+       {
+--- 259,265 ----
+      len = 0;
+  
+      /* First part: Start of the string. */
+!     for (e = 0; len < half && e < buflen; ++e)
+      {
+       if (s[e] == NUL)
+       {
+***************
+*** 274,280 ****
+       if (has_mbyte)
+           for (n = (*mb_ptr2len)(s + e); --n > 0; )
+           {
+!              ++e;
+               buf[e] = s[e];
+           }
+  #endif
+--- 276,283 ----
+       if (has_mbyte)
+           for (n = (*mb_ptr2len)(s + e); --n > 0; )
+           {
+!              if (++e == buflen)
+!                  break;
+               buf[e] = s[e];
+           }
+  #endif
+***************
+*** 319,326 ****
+      }
+  
+      /* Set the middle and copy the last part. */
+!     mch_memmove(buf + e, "...", (size_t)3);
+!     STRMOVE(buf + e + 3, s + i);
+  }
+  
+  /*
+--- 322,340 ----
+      }
+  
+      /* Set the middle and copy the last part. */
+!     if (e + 3 < buflen)
+!     {
+!      mch_memmove(buf + e, "...", (size_t)3);
+!      len = STRLEN(s + i) + 1;
+!      if (len >= buflen - e - 3)
+!          len = buflen - e - 3 - 1;
+!      mch_memmove(buf + e + 3, s + i, len);
+!      buf[e + 3 + len - 1] = NUL;
+!     }
+!     else
+!     {
+!      buf[e - 1] = NUL;  // make sure it is truncated
+!     }
+  }
+  
+  /*
+*** ../vim-7.3.406/src/proto/message.pro       2011-01-17 20:08:03.000000000 +0100
+--- src/proto/message.pro      2012-01-20 18:51:19.000000000 +0100
+***************
+*** 4,10 ****
+  int msg_attr __ARGS((char_u *s, int attr));
+  int msg_attr_keep __ARGS((char_u *s, int attr, int keep));
+  char_u *msg_strtrunc __ARGS((char_u *s, int force));
+! void trunc_string __ARGS((char_u *s, char_u *buf, int room));
+  void reset_last_sourcing __ARGS((void));
+  void msg_source __ARGS((int attr));
+  int emsg_not_now __ARGS((void));
+--- 4,10 ----
+  int msg_attr __ARGS((char_u *s, int attr));
+  int msg_attr_keep __ARGS((char_u *s, int attr, int keep));
+  char_u *msg_strtrunc __ARGS((char_u *s, int force));
+! void trunc_string __ARGS((char_u *s, char_u *buf, int room, int buflen));
+  void reset_last_sourcing __ARGS((void));
+  void msg_source __ARGS((int attr));
+  int emsg_not_now __ARGS((void));
+*** ../vim-7.3.406/src/version.c       2012-01-20 17:57:47.000000000 +0100
+--- src/version.c      2012-01-20 20:42:23.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     407,
+  /**/
+
+-- 
+Hanson's Treatment of Time:
+       There are never enough hours in a day, but always too
+       many days before Saturday.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.408.patch0 b/vim/patches/vim-7.3.408.patch0
new file mode 100644 (file)
index 0000000..0227608
--- /dev/null
@@ -0,0 +1,48 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.408
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.408 (after 7.3.406)
+Problem:    Missing declaration.
+Solution:   Add the declaration. (John Marriott)
+Files:     src/gui_w48.c
+
+
+*** ../vim-7.3.407/src/gui_w48.c       2012-01-20 17:57:47.000000000 +0100
+--- src/gui_w48.c      2012-01-20 20:51:57.000000000 +0100
+***************
+*** 3286,3291 ****
+--- 3286,3292 ----
+  {
+      char_u *tmp;
+      int len;
++     WCHAR *res;
+  
+      tmp = convert_filter(s);
+      if (tmp == NULL)
+*** ../vim-7.3.407/src/version.c       2012-01-20 20:44:38.000000000 +0100
+--- src/version.c      2012-01-20 20:52:56.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     408,
+  /**/
+
+-- 
+BLACK KNIGHT: None shall pass.
+ARTHUR:       I have no quarrel with you, brave Sir knight, but I must cross
+              this bridge.
+BLACK KNIGHT: Then you shall die.
+                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.409.patch0 b/vim/patches/vim-7.3.409.patch0
new file mode 100644 (file)
index 0000000..a00fdcb
--- /dev/null
@@ -0,0 +1,48 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.409
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.409
+Problem:    The license in pty.c is unclear.
+Solution:   Add a comment about the license.
+Files:     src/pty.c
+
+
+*** ../vim-7.3.408/src/pty.c   2011-05-19 13:40:47.000000000 +0200
+--- src/pty.c  2012-01-20 21:07:56.000000000 +0100
+***************
+*** 14,19 ****
+--- 14,23 ----
+   * It has been modified to work better with Vim.
+   * The parts that are not used in Vim have been deleted.
+   * See the "screen" sources for the complete stuff.
++  *
++  * This specific version is distibuted under the Vim license (attribution by
++  * Juergen Weigert), the GPL applies to the original version, see the
++  * copyright notice below.
+   */
+  
+  /* Copyright (c) 1993
+*** ../vim-7.3.408/src/version.c       2012-01-20 20:54:15.000000000 +0100
+--- src/version.c      2012-01-20 21:13:11.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     409,
+  /**/
+
+-- 
+ARTHUR: What are you going to do. bleed on me?
+                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.410.patch0 b/vim/patches/vim-7.3.410.patch0
new file mode 100644 (file)
index 0000000..f40e06f
--- /dev/null
@@ -0,0 +1,54 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.410
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.410
+Problem:    Compiler error for // comment. (Joachim Schmitz)
+Solution:   Turn into /* comment */.
+Files:     src/message.c
+
+
+*** ../vim-7.3.409/src/message.c       2012-01-20 20:44:38.000000000 +0100
+--- src/message.c      2012-01-23 20:46:36.000000000 +0100
+***************
+*** 333,339 ****
+      }
+      else
+      {
+!      buf[e - 1] = NUL;  // make sure it is truncated
+      }
+  }
+  
+--- 333,339 ----
+      }
+      else
+      {
+!      buf[e - 1] = NUL;  /* make sure it is truncated */
+      }
+  }
+  
+*** ../vim-7.3.409/src/version.c       2012-01-20 21:13:55.000000000 +0100
+--- src/version.c      2012-01-23 20:47:30.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     410,
+  /**/
+
+
+-- 
+Are leaders born or made?  And if they're made, can we return them under
+warranty?
+                               (Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.411.patch0 b/vim/patches/vim-7.3.411.patch0
new file mode 100644 (file)
index 0000000..fe75995
--- /dev/null
@@ -0,0 +1,55 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.411
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.411
+Problem:    Pasting in Visual mode using the "" register does not work. (John
+           Beckett)
+Solution:   Detect that the write is overwriting the pasted register.
+           (Christian Brabandt)
+Files:     src/normal.c
+
+
+*** ../vim-7.3.410/src/normal.c        2011-10-04 21:22:40.000000000 +0200
+--- src/normal.c       2012-01-23 22:13:44.000000000 +0100
+***************
+*** 9329,9335 ****
+  # ifdef FEAT_CLIPBOARD
+           adjust_clip_reg(&regname);
+  # endif
+!          if (regname == 0 || VIM_ISDIGIT(regname)
+  # ifdef FEAT_CLIPBOARD
+                   || (clip_unnamed && (regname == '*' || regname == '+'))
+  # endif
+--- 9329,9335 ----
+  # ifdef FEAT_CLIPBOARD
+           adjust_clip_reg(&regname);
+  # endif
+!          if (regname == 0 || regname == '"' || VIM_ISDIGIT(regname)
+  # ifdef FEAT_CLIPBOARD
+                   || (clip_unnamed && (regname == '*' || regname == '+'))
+  # endif
+*** ../vim-7.3.410/src/version.c       2012-01-23 20:48:34.000000000 +0100
+--- src/version.c      2012-01-26 11:42:33.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     411,
+  /**/
+
+-- 
+Engineers understand that their appearance only bothers other people and
+therefore it is not worth optimizing.
+                               (Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.412.patch0 b/vim/patches/vim-7.3.412.patch0
new file mode 100644 (file)
index 0000000..3b18188
--- /dev/null
@@ -0,0 +1,51 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.412
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.412
+Problem:    Storing a float in a session file has an additional '&'.
+Solution:   Remove the '&'. (Yasuhiro Matsumoto)
+Files:     src/eval.c
+
+
+*** ../vim-7.3.411/src/eval.c  2012-01-20 20:44:38.000000000 +0100
+--- src/eval.c 2012-01-26 11:39:39.000000000 +0100
+***************
+*** 22929,22935 ****
+                   f = -f;
+                   sign = '-';
+               }
+!              if ((fprintf(fd, "let %s = %c&%f",
+                                              this_var->di_key, sign, f) < 0)
+                       || put_eol(fd) == FAIL)
+                   return FAIL;
+--- 22929,22935 ----
+                   f = -f;
+                   sign = '-';
+               }
+!              if ((fprintf(fd, "let %s = %c%f",
+                                              this_var->di_key, sign, f) < 0)
+                       || put_eol(fd) == FAIL)
+                   return FAIL;
+*** ../vim-7.3.411/src/version.c       2012-01-26 11:43:04.000000000 +0100
+--- src/version.c      2012-01-26 11:44:56.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     412,
+  /**/
+
+-- 
+Imagine a world without hypothetical situations.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.413.patch0 b/vim/patches/vim-7.3.413.patch0
new file mode 100644 (file)
index 0000000..c32c9b1
--- /dev/null
@@ -0,0 +1,90 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.413
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.413
+Problem:    Build warnings on MS-Windows.
+Solution:   Add type casts. (Mike Williams)
+Files:     src/ex_getln.c, src/message.c, src/term.c
+
+
+*** ../vim-7.3.412/src/ex_getln.c      2012-01-20 20:44:38.000000000 +0100
+--- src/ex_getln.c     2012-01-26 12:58:54.000000000 +0100
+***************
+*** 5923,5929 ****
+                                                             hist[i].hisnum);
+                   if (vim_strsize(hist[i].hisstr) > (int)Columns - 10)
+                       trunc_string(hist[i].hisstr, IObuff + STRLEN(IObuff),
+!                                (int)Columns - 10, IOSIZE - STRLEN(IObuff));
+                   else
+                       STRCAT(IObuff, hist[i].hisstr);
+                   msg_outtrans(IObuff);
+--- 5923,5929 ----
+                                                             hist[i].hisnum);
+                   if (vim_strsize(hist[i].hisstr) > (int)Columns - 10)
+                       trunc_string(hist[i].hisstr, IObuff + STRLEN(IObuff),
+!                           (int)Columns - 10, IOSIZE - (int)STRLEN(IObuff));
+                   else
+                       STRCAT(IObuff, hist[i].hisstr);
+                   msg_outtrans(IObuff);
+*** ../vim-7.3.412/src/message.c       2012-01-23 20:48:34.000000000 +0100
+--- src/message.c      2012-01-26 12:58:54.000000000 +0100
+***************
+*** 325,331 ****
+      if (e + 3 < buflen)
+      {
+       mch_memmove(buf + e, "...", (size_t)3);
+!      len = STRLEN(s + i) + 1;
+       if (len >= buflen - e - 3)
+           len = buflen - e - 3 - 1;
+       mch_memmove(buf + e + 3, s + i, len);
+--- 325,331 ----
+      if (e + 3 < buflen)
+      {
+       mch_memmove(buf + e, "...", (size_t)3);
+!      len = (int)STRLEN(s + i) + 1;
+       if (len >= buflen - e - 3)
+           len = buflen - e - 3 - 1;
+       mch_memmove(buf + e + 3, s + i, len);
+*** ../vim-7.3.412/src/term.c  2012-01-20 17:15:47.000000000 +0100
+--- src/term.c 2012-01-26 12:58:54.000000000 +0100
+***************
+*** 5252,5258 ****
+      char_u   *src;
+  {
+      int              i;
+!     int              slen = STRLEN(src);
+  
+      for (i = 0; i < tc_len; ++i)
+      {
+--- 5252,5258 ----
+      char_u   *src;
+  {
+      int              i;
+!     int              slen = (int)STRLEN(src);
+  
+      for (i = 0; i < tc_len; ++i)
+      {
+*** ../vim-7.3.412/src/version.c       2012-01-26 11:45:25.000000000 +0100
+--- src/version.c      2012-01-26 12:59:14.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     413,
+  /**/
+
+-- 
+It doesn't really matter what you are able to do if you don't do it.
+                               (Bram Moolenaar)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.414.patch0 b/vim/patches/vim-7.3.414.patch0
new file mode 100644 (file)
index 0000000..6f6c307
--- /dev/null
@@ -0,0 +1,90 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.414
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.414
+Problem:    Using CTRL-A on "000" drops the leading zero, while on "001" it
+           doesn't.
+Solution:   Detect "000" as an octal number. (James McCoy)
+Files:     src/charset.c
+
+
+*** ../vim-7.3.413/src/charset.c       2012-01-10 22:26:12.000000000 +0100
+--- src/charset.c      2012-01-26 13:33:45.000000000 +0100
+***************
+*** 764,770 ****
+  }
+  
+  /*
+!  * Return the number of characters string "s" will take on the screen,
+   * counting TABs as two characters: "^I".
+   */
+      int
+--- 764,770 ----
+  }
+  
+  /*
+!  * Return the number of character cells string "s" will take on the screen,
+   * counting TABs as two characters: "^I".
+   */
+      int
+***************
+*** 775,782 ****
+  }
+  
+  /*
+!  * Return the number of characters string "s[len]" will take on the screen,
+!  * counting TABs as two characters: "^I".
+   */
+      int
+  vim_strnsize(s, len)
+--- 775,782 ----
+  }
+  
+  /*
+!  * Return the number of character cells string "s[len]" will take on the
+!  * screen, counting TABs as two characters: "^I".
+   */
+      int
+  vim_strnsize(s, len)
+***************
+*** 1830,1836 ****
+                       hex = 0;        /* can't be octal */
+                       break;
+                   }
+!                  if (ptr[n] > '0')
+                       hex = '0';      /* assume octal */
+               }
+           }
+--- 1830,1836 ----
+                       hex = 0;        /* can't be octal */
+                       break;
+                   }
+!                  if (ptr[n] >= '0')
+                       hex = '0';      /* assume octal */
+               }
+           }
+*** ../vim-7.3.413/src/version.c       2012-01-26 13:01:54.000000000 +0100
+--- src/version.c      2012-01-26 13:38:04.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     414,
+  /**/
+
+-- 
+No engineer can take a shower without wondering if some sort of Teflon coating
+would make showering unnecessary.
+                               (Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.415.patch0 b/vim/patches/vim-7.3.415.patch0
new file mode 100644 (file)
index 0000000..74e757b
--- /dev/null
@@ -0,0 +1,54 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.415
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.415 (after 7.3.359)
+Problem:    Completion of functions stops once a dictionary is encountered.
+           (James McCoy)
+Solution:   Return an empty string instead of NULL.
+Files:     src/eval.c
+
+
+*** ../vim-7.3.414/src/eval.c  2012-01-26 11:45:25.000000000 +0100
+--- src/eval.c 2012-01-26 13:45:52.000000000 +0100
+***************
+*** 21802,21808 ****
+       fp = HI2UF(hi);
+  
+       if (fp->uf_flags & FC_DICT)
+!          return NULL; /* don't show dict functions */
+  
+       if (STRLEN(fp->uf_name) + 4 >= IOSIZE)
+           return fp->uf_name; /* prevents overflow */
+--- 21802,21808 ----
+       fp = HI2UF(hi);
+  
+       if (fp->uf_flags & FC_DICT)
+!          return ""; /* don't show dict functions */
+  
+       if (STRLEN(fp->uf_name) + 4 >= IOSIZE)
+           return fp->uf_name; /* prevents overflow */
+*** ../vim-7.3.414/src/version.c       2012-01-26 13:40:04.000000000 +0100
+--- src/version.c      2012-01-26 14:32:16.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     415,
+  /**/
+
+-- 
+Normal people believe that if it ain't broke, don't fix it.  Engineers believe
+that if it ain't broke, it doesn't have enough features yet.
+                               (Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.416.patch0 b/vim/patches/vim-7.3.416.patch0
new file mode 100644 (file)
index 0000000..f65bb0d
--- /dev/null
@@ -0,0 +1,54 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.416
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.416 (after 7.3.415)
+Problem:    Compiler warning for wrong pointer.
+Solution:   Add type cast.
+Files:     src/eval.c
+
+
+*** ../vim-7.3.415/src/eval.c  2012-01-26 14:32:26.000000000 +0100
+--- src/eval.c 2012-01-26 15:42:56.000000000 +0100
+***************
+*** 21802,21808 ****
+       fp = HI2UF(hi);
+  
+       if (fp->uf_flags & FC_DICT)
+!          return ""; /* don't show dict functions */
+  
+       if (STRLEN(fp->uf_name) + 4 >= IOSIZE)
+           return fp->uf_name; /* prevents overflow */
+--- 21802,21808 ----
+       fp = HI2UF(hi);
+  
+       if (fp->uf_flags & FC_DICT)
+!          return (char_u *)""; /* don't show dict functions */
+  
+       if (STRLEN(fp->uf_name) + 4 >= IOSIZE)
+           return fp->uf_name; /* prevents overflow */
+*** ../vim-7.3.415/src/version.c       2012-01-26 14:32:26.000000000 +0100
+--- src/version.c      2012-01-26 15:43:31.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     416,
+  /**/
+
+-- 
+It's totally unfair to suggest - as many have - that engineers are socially
+inept.  Engineers simply have different objectives when it comes to social
+interaction.
+                               (Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.417.patch0 b/vim/patches/vim-7.3.417.patch0
new file mode 100644 (file)
index 0000000..489d27e
--- /dev/null
@@ -0,0 +1,47 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.417
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.417 (after 7.3.395)
+Problem:    Test 43 fails with a tiny build.
+Solution:   Only run test 43 with at least a small build.
+Files:     src/testdir/test43.in
+
+
+*** ../vim-7.3.415/src/testdir/test43.in       2012-01-10 13:44:23.000000000 +0100
+--- src/testdir/test43.in      2012-01-26 18:00:06.000000000 +0100
+***************
+*** 1,6 ****
+--- 1,7 ----
+  Tests for regexp with various magic settings.
+  
+  STARTTEST
++ :so small.vim
+  :set nocompatible viminfo+=nviminfo
+  /^1
+  /a*b\{2}c\+/e
+*** ../vim-7.3.415/src/version.c       2012-01-26 14:32:26.000000000 +0100
+--- src/version.c      2012-01-26 18:02:30.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     417,
+  /**/
+
+-- 
+I learned the customs and mannerisms of engineers by observing them, much the
+way Jane Goodall learned about the great apes, but without the hassle of
+grooming.
+                               (Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.418.patch0 b/vim/patches/vim-7.3.418.patch0
new file mode 100644 (file)
index 0000000..6ff486b
--- /dev/null
@@ -0,0 +1,53 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.418
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.418
+Problem:    When a user complete function returns -1 an error message is
+           given.
+Solution:   When -2 is returned stop completion silently. (Yasuhiro Matsumoto)
+Files:     src/edit.c
+
+
+*** ../vim-7.3.417/src/edit.c  2012-01-20 14:32:22.000000000 +0100
+--- src/edit.c 2012-01-26 18:32:23.000000000 +0100
+***************
+*** 5189,5194 ****
+--- 5189,5199 ----
+               return FAIL;
+           }
+  
++          /* Return value -2 means the user complete function wants to
++           * cancel the complete without an error. */
++          if (col == -2)
++              return FAIL;
++ 
+           /*
+            * Reset extended parameters of completion, when start new
+            * completion.
+*** ../vim-7.3.417/src/version.c       2012-01-26 18:58:13.000000000 +0100
+--- src/version.c      2012-01-26 18:42:14.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     418,
+  /**/
+
+-- 
+If someone questions your market projections, simply point out that your
+target market is "People who are nuts" and "People who will buy any damn
+thing".  Nobody is going to tell you there aren't enough of those people
+to go around.
+                               (Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.419.patch0 b/vim/patches/vim-7.3.419.patch0
new file mode 100644 (file)
index 0000000..865a47c
--- /dev/null
@@ -0,0 +1,85 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.419
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.419
+Problem:    DBCS encoding in a user command does not always work.
+Solution:   Skip over DBCS characters. (Yasuhiro Matsumoto)
+Files:     src/ex_docmd.c
+
+
+*** ../vim-7.3.418/src/ex_docmd.c      2011-12-14 14:49:41.000000000 +0100
+--- src/ex_docmd.c     2012-01-26 20:04:01.000000000 +0100
+***************
+*** 5967,5973 ****
+           result = STRLEN(eap->arg) + 2;
+           for (p = eap->arg; *p; ++p)
+           {
+!              if (*p == '\\' || *p == '"')
+                   ++result;
+           }
+  
+--- 5967,5980 ----
+           result = STRLEN(eap->arg) + 2;
+           for (p = eap->arg; *p; ++p)
+           {
+! #ifdef  FEAT_MBYTE
+!              if (enc_dbcs != 0 && (*mb_ptr2len)(p) == 2)
+!                  /* DBCS can contain \ in a trail byte, skip the
+!                   * double-byte character. */
+!                  ++p;
+!              else
+! #endif
+!                   if (*p == '\\' || *p == '"')
+                   ++result;
+           }
+  
+***************
+*** 5976,5982 ****
+               *buf++ = '"';
+               for (p = eap->arg; *p; ++p)
+               {
+!                  if (*p == '\\' || *p == '"')
+                       *buf++ = '\\';
+                   *buf++ = *p;
+               }
+--- 5983,5996 ----
+               *buf++ = '"';
+               for (p = eap->arg; *p; ++p)
+               {
+! #ifdef  FEAT_MBYTE
+!                  if (enc_dbcs != 0 && (*mb_ptr2len)(p) == 2)
+!                      /* DBCS can contain \ in a trail byte, copy the
+!                       * double-byte character to avoid escaping. */
+!                      *buf++ = *p++;
+!                  else
+! #endif
+!                       if (*p == '\\' || *p == '"')
+                       *buf++ = '\\';
+                   *buf++ = *p;
+               }
+*** ../vim-7.3.418/src/version.c       2012-01-26 18:58:25.000000000 +0100
+--- src/version.c      2012-01-26 20:40:34.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     419,
+  /**/
+
+-- 
+You have heard the saying that if you put a thousand monkeys in a room with a
+thousand typewriters and waited long enough, eventually you would have a room
+full of dead monkeys.
+                               (Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.420.patch0 b/vim/patches/vim-7.3.420.patch0
new file mode 100644 (file)
index 0000000..d698d0b
--- /dev/null
@@ -0,0 +1,70 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.420
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.420
+Problem:    "it" and "at" don't work properly with a dash in the tag name.
+Solution:   Require a space to match the tag name. (Christian Brabandt)
+Files:     src/search.c
+
+
+*** ../vim-7.3.419/src/search.c        2012-01-10 22:26:12.000000000 +0100
+--- src/search.c       2012-01-26 20:51:43.000000000 +0100
+***************
+*** 3918,3924 ****
+       curwin->w_cursor = old_pos;
+       goto theend;
+      }
+!     spat = alloc(len + 29);
+      epat = alloc(len + 9);
+      if (spat == NULL || epat == NULL)
+      {
+--- 3918,3924 ----
+       curwin->w_cursor = old_pos;
+       goto theend;
+      }
+!     spat = alloc(len + 31);
+      epat = alloc(len + 9);
+      if (spat == NULL || epat == NULL)
+      {
+***************
+*** 3927,3933 ****
+       curwin->w_cursor = old_pos;
+       goto theend;
+      }
+!     sprintf((char *)spat, "<%.*s\\>\\%%(\\_[^>]\\{-}[^/]>\\|>\\)\\c", len, p);
+      sprintf((char *)epat, "</%.*s>\\c", len, p);
+  
+      r = do_searchpair(spat, (char_u *)"", epat, FORWARD, (char_u *)"",
+--- 3927,3933 ----
+       curwin->w_cursor = old_pos;
+       goto theend;
+      }
+!     sprintf((char *)spat, "<%.*s\\>\\%%(\\s\\_[^>]\\{-}[^/]>\\|>\\)\\c", len, p);
+      sprintf((char *)epat, "</%.*s>\\c", len, p);
+  
+      r = do_searchpair(spat, (char_u *)"", epat, FORWARD, (char_u *)"",
+*** ../vim-7.3.419/src/version.c       2012-01-26 20:41:22.000000000 +0100
+--- src/version.c      2012-01-26 20:51:16.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     420,
+  /**/
+
+-- 
+All good vision statements are created by groups of people with bloated
+bladders who would rather be doing anything else.
+                               (Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.421.patch0 b/vim/patches/vim-7.3.421.patch0
new file mode 100644 (file)
index 0000000..eadc29d
--- /dev/null
@@ -0,0 +1,60 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.421
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.421
+Problem:    Get E832 when setting 'undofile' in vimrc and there is a file to
+           be edited on the command line. (Toothpik)
+Solution:   Do not try reading the undo file for a file that wasn't loaded.
+Files:     src/option.c
+
+
+*** ../vim-7.3.420/src/option.c        2012-01-10 22:26:12.000000000 +0100
+--- src/option.c       2012-01-28 17:55:24.000000000 +0100
+***************
+*** 7527,7536 ****
+       {
+           /* When 'undofile' is set globally: for every buffer, otherwise
+            * only for the current buffer: Try to read in the undofile, if
+!           * one exists and the buffer wasn't changed. */
+           if ((curbuf == save_curbuf
+                               || (opt_flags & OPT_GLOBAL) || opt_flags == 0)
+!                  && !curbufIsChanged())
+           {
+               u_compute_hash(hash);
+               u_read_undo(NULL, hash, curbuf->b_fname);
+--- 7527,7537 ----
+       {
+           /* When 'undofile' is set globally: for every buffer, otherwise
+            * only for the current buffer: Try to read in the undofile, if
+!           * one exists and the buffer wasn't changed and the buffer was
+!           * loaded. */
+           if ((curbuf == save_curbuf
+                               || (opt_flags & OPT_GLOBAL) || opt_flags == 0)
+!                  && !curbufIsChanged() && curbuf->b_ml.ml_mfp != NULL)
+           {
+               u_compute_hash(hash);
+               u_read_undo(NULL, hash, curbuf->b_fname);
+*** ../vim-7.3.420/src/version.c       2012-01-26 20:58:21.000000000 +0100
+--- src/version.c      2012-01-28 18:03:09.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     421,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+4. Your eyeglasses have a web site burned in on them.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.422.patch0 b/vim/patches/vim-7.3.422.patch0
new file mode 100644 (file)
index 0000000..7be4aeb
--- /dev/null
@@ -0,0 +1,94 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.422
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.422
+Problem:    Python 3 does not have __members__.
+Solution:   Add "name" and "number" in another way. (lilydjwg)
+Files:      src/if_py_both.h, src/if_python3.c
+
+
+*** ../vim-7.3.421/src/if_py_both.h    2011-09-07 19:30:17.000000000 +0200
+--- src/if_py_both.h   2012-02-04 19:59:43.000000000 +0100
+***************
+*** 1479,1484 ****
+--- 1479,1487 ----
+      {"append",           BufferAppend,       1,          "Append data to Vim buffer" },
+      {"mark",     BufferMark,         1,          "Return (row,col) representing position of named mark" },
+      {"range",            BufferRange,        1,          "Return a range object which represents the part of the given buffer between line numbers s and e" },
++ #if PY_VERSION_HEX >= 0x03000000
++     {"__dir__",          BufferDir,          4,          "List its attributes" },
++ #endif
+      { NULL,      NULL,               0,          NULL }
+  };
+  
+*** ../vim-7.3.421/src/if_python3.c    2011-09-14 18:59:35.000000000 +0200
+--- src/if_python3.c   2012-02-04 20:13:00.000000000 +0100
+***************
+*** 468,473 ****
+--- 468,474 ----
+  static PyObject *BufferNew (buf_T *);
+  static PyObject *WindowNew(win_T *);
+  static PyObject *LineToString(const char *);
++ static PyObject *BufferDir(PyObject *, PyObject *);
+  
+  static PyTypeObject RangeType;
+  
+***************
+*** 961,973 ****
+       return Py_BuildValue("s", this->buf->b_ffname);
+      else if (strcmp(name, "number") == 0)
+       return Py_BuildValue("n", this->buf->b_fnum);
+-     else if (strcmp(name,"__members__") == 0)
+-      return Py_BuildValue("[ss]", "name", "number");
+      else
+       return PyObject_GenericGetAttr(self, nameobj);
+  }
+  
+      static PyObject *
+  BufferRepr(PyObject *self)
+  {
+      static char repr[100];
+--- 962,979 ----
+       return Py_BuildValue("s", this->buf->b_ffname);
+      else if (strcmp(name, "number") == 0)
+       return Py_BuildValue("n", this->buf->b_fnum);
+      else
+       return PyObject_GenericGetAttr(self, nameobj);
+  }
+  
+      static PyObject *
++ BufferDir(PyObject *self UNUSED, PyObject *args UNUSED)
++ {
++     return Py_BuildValue("[sssss]", "name", "number",
++                                                 "append", "mark", "range");
++ }
++ 
++     static PyObject *
+  BufferRepr(PyObject *self)
+  {
+      static char repr[100];
+*** ../vim-7.3.421/src/version.c       2012-01-28 18:03:30.000000000 +0100
+--- src/version.c      2012-02-04 20:14:58.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     422,
+  /**/
+
+-- 
+How To Keep A Healthy Level Of Insanity:
+15. Five days in advance, tell your friends you can't attend their
+    party because you're not in the mood.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.423.patch0 b/vim/patches/vim-7.3.423.patch0
new file mode 100644 (file)
index 0000000..74bf62d
--- /dev/null
@@ -0,0 +1,130 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.423
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.423 
+Problem:    Small mistakes in comments, proto and indent. 
+Solution:   Fix the mistakes. 
+Files:      src/ex_cmds2.c, src/structs.h, src/ui.c, src/proto/ex_docmd.pro 
+
+
+*** ../vim-7.3.422/src/ex_cmds2.c      2011-10-20 21:38:37.000000000 +0200
+--- src/ex_cmds2.c     2011-11-30 11:02:20.000000000 +0100
+***************
+*** 1939,1945 ****
+  }
+  
+  /*
+!  * Return TRUE if window "win" is editing then file at the current argument
+   * index.
+   */
+      static int
+--- 1939,1945 ----
+  }
+  
+  /*
+!  * Return TRUE if window "win" is editing the file at the current argument
+   * index.
+   */
+      static int
+*** ../vim-7.3.422/src/structs.h       2011-05-19 13:40:47.000000000 +0200
+--- src/structs.h      2011-09-10 13:48:53.000000000 +0200
+***************
+*** 1846,1852 ****
+                                      often, keep it the first item!) */
+  
+  #if defined(FEAT_SYN_HL) || defined(FEAT_SPELL)
+!     synblock_T       *w_s;
+  #endif
+  
+  #ifdef FEAT_WINDOWS
+--- 1846,1852 ----
+                                      often, keep it the first item!) */
+  
+  #if defined(FEAT_SYN_HL) || defined(FEAT_SPELL)
+!     synblock_T       *w_s;               /* for :ownsyntax */
+  #endif
+  
+  #ifdef FEAT_WINDOWS
+*** ../vim-7.3.422/src/ui.c    2011-07-07 16:20:45.000000000 +0200
+--- src/ui.c   2012-01-21 14:03:42.000000000 +0100
+***************
+*** 2363,2376 ****
+              XtLastTimestampProcessed(XtDisplay(myShell)),
+              clip_x11_convert_selection_cb, clip_x11_lose_ownership_cb,
+              NULL) == False)
+!      return FAIL;
+      }
+      else
+  #endif
+      {
+       if (!XChangeProperty(XtDisplay(myShell), XtWindow(myShell),
+                 cbd->sel_atom, timestamp_atom, 32, PropModeAppend, NULL, 0))
+!      return FAIL;
+      }
+      /* Flush is required in a terminal as nothing else is doing it. */
+      XFlush(XtDisplay(myShell));
+--- 2363,2376 ----
+              XtLastTimestampProcessed(XtDisplay(myShell)),
+              clip_x11_convert_selection_cb, clip_x11_lose_ownership_cb,
+              NULL) == False)
+!          return FAIL;
+      }
+      else
+  #endif
+      {
+       if (!XChangeProperty(XtDisplay(myShell), XtWindow(myShell),
+                 cbd->sel_atom, timestamp_atom, 32, PropModeAppend, NULL, 0))
+!          return FAIL;
+      }
+      /* Flush is required in a terminal as nothing else is doing it. */
+      XFlush(XtDisplay(myShell));
+*** ../vim-7.3.422/src/proto/ex_docmd.pro      2010-08-15 21:57:28.000000000 +0200
+--- src/proto/ex_docmd.pro     2011-01-16 00:22:21.000000000 +0100
+***************
+*** 1,7 ****
+  /* ex_docmd.c */
+  void do_exmode __ARGS((int improved));
+  int do_cmdline_cmd __ARGS((char_u *cmd));
+! int do_cmdline __ARGS((char_u *cmdline, char_u *(*getline)(int, void *, int), void *cookie, int flags));
+  int getline_equal __ARGS((char_u *(*fgetline)(int, void *, int), void *cookie, char_u *(*func)(int, void *, int)));
+  void *getline_cookie __ARGS((char_u *(*fgetline)(int, void *, int), void *cookie));
+  int checkforcmd __ARGS((char_u **pp, char *cmd, int len));
+--- 1,7 ----
+  /* ex_docmd.c */
+  void do_exmode __ARGS((int improved));
+  int do_cmdline_cmd __ARGS((char_u *cmd));
+! int do_cmdline __ARGS((char_u *cmdline, char_u *(*fgetline)(int, void *, int), void *cookie, int flags));
+  int getline_equal __ARGS((char_u *(*fgetline)(int, void *, int), void *cookie, char_u *(*func)(int, void *, int)));
+  void *getline_cookie __ARGS((char_u *(*fgetline)(int, void *, int), void *cookie));
+  int checkforcmd __ARGS((char_u **pp, char *cmd, int len));
+*** ../vim-7.3.422/src/version.c       2012-02-04 20:17:21.000000000 +0100
+--- src/version.c      2012-02-04 21:56:43.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     423,
+  /**/
+
+-- 
+In many of the more relaxed civilizations on the Outer Eastern Rim of the
+Galaxy, "The Hitchhiker's Guide to the Galaxy" has already supplanted the
+great "Encyclopedia Galactica" as the standard repository of all knowledge
+and wisdom, for though it has many omissions and contains much that is
+apocryphal, or at least wildly inaccurate, it scores over the older, more
+pedestrian work in two important respects.
+First, it is slightly cheaper; and second, it has the words "DON'T PANIC"
+inscribed in large friendly letters on its cover.
+               -- Douglas Adams, "The Hitchhiker's Guide to the Galaxy"
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.424.patch0 b/vim/patches/vim-7.3.424.patch0
new file mode 100644 (file)
index 0000000..61786ed
--- /dev/null
@@ -0,0 +1,62 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.424
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.424
+Problem:    Win16 version missing some functions.
+Solution:   Add #defines for the functions.
+Files:      src/gui_w16.c
+
+
+*** ../vim-7.3.423/src/gui_w16.c       2011-01-17 20:08:03.000000000 +0100
+--- src/gui_w16.c      2011-08-10 16:50:21.000000000 +0200
+***************
+*** 21,26 ****
+--- 21,32 ----
+   *
+   */
+  
++ /* Win16 doesn't use the "W" methods. */
++ #define pDispatchMessage DispatchMessage
++ #define pGetMessage GetMessage
++ #define pIsDialogMessage IsDialogMessage
++ #define pPeekMessage PeekMessage
++ 
+  /*
+   * Include the common stuff for MS-Windows GUI.
+   */
+*** ../vim-7.3.423/src/version.c       2012-02-04 21:57:44.000000000 +0100
+--- src/version.c      2012-02-04 22:01:13.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     424,
+  /**/
+
+-- 
+Now it is such a bizarrely improbable coincidence that anything as
+mind-bogglingly useful as the Babel fish could have evolved purely by chance
+that some thinkers have chosen to see it as a final and clinching proof of the
+NON-existence of God.
+The argument goes something like this: 'I refuse to prove that I exist,' says
+God, 'for proof denies faith, and without faith I am nothing.'
+'But,' says Man, 'the Babel fish is a dead giveaway, isn't it?  It could not
+have evolved by chance.  It proves you exist, and so therefore, by your own
+arguments, you don't.  QED.'
+'Oh dear,' says God, 'I hadn't thought of that,' and promptly vanishes in a
+puff of logic.
+'Oh, that was easy,' says Man, and for an encore goes on to prove that black
+is white and gets himself killed on the next pedestrian crossing.
+               -- Douglas Adams, "The Hitchhiker's Guide to the Galaxy"
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.425.patch0 b/vim/patches/vim-7.3.425.patch0
new file mode 100644 (file)
index 0000000..aeadf3a
--- /dev/null
@@ -0,0 +1,78 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.425
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.425 (after 7.3.265)
+Problem:    Search history lines are duplicated. (Edwin Steiner)
+Solution:   Convert separator character from space to NUL.
+Files:      src/ex_getln.c
+
+
+*** ../vim-7.3.424/src/ex_getln.c      2012-01-26 13:01:54.000000000 +0100
+--- src/ex_getln.c     2012-02-04 22:27:43.000000000 +0100
+***************
+*** 6027,6034 ****
+       val = viminfo_readstring(virp, 1, TRUE);
+       if (val != NULL && *val != NUL)
+       {
+           if (!in_history(type, val + (type == HIST_SEARCH),
+!                                                viminfo_add_at_front, *val))
+           {
+               /* Need to re-allocate to append the separator byte. */
+               len = STRLEN(val);
+--- 6027,6036 ----
+       val = viminfo_readstring(virp, 1, TRUE);
+       if (val != NULL && *val != NUL)
+       {
++          int sep = (*val == ' ' ? NUL : *val);
++ 
+           if (!in_history(type, val + (type == HIST_SEARCH),
+!                                                 viminfo_add_at_front, sep))
+           {
+               /* Need to re-allocate to append the separator byte. */
+               len = STRLEN(val);
+***************
+*** 6040,6046 ****
+                       /* Search entry: Move the separator from the first
+                        * column to after the NUL. */
+                       mch_memmove(p, val + 1, (size_t)len);
+!                      p[len] = (*val == ' ' ? NUL : *val);
+                   }
+                   else
+                   {
+--- 6042,6048 ----
+                       /* Search entry: Move the separator from the first
+                        * column to after the NUL. */
+                       mch_memmove(p, val + 1, (size_t)len);
+!                      p[len] = sep;
+                   }
+                   else
+                   {
+*** ../vim-7.3.424/src/version.c       2012-02-04 22:01:44.000000000 +0100
+--- src/version.c      2012-02-04 22:30:36.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     425,
+  /**/
+
+-- 
+"So this is it," said Arthur, "we are going to die."
+"Yes," said Ford, "except...no!  Wait a minute!"  He suddenly lunged across
+the chamber at something behind Arthur's line of vision.  "What's this
+switch?" he cried.
+"What?   Where?" cried Arthur, twisting around.
+"No, I was only fooling," said Ford, "we are going to die after all."
+               -- Douglas Adams, "The Hitchhiker's Guide to the Galaxy"
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.426.patch0 b/vim/patches/vim-7.3.426.patch0
new file mode 100644 (file)
index 0000000..76380af
--- /dev/null
@@ -0,0 +1,279 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.426
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.426
+Problem:    With '$' in 'cpoptions' the $ is not displayed in the first
+            column.
+Solution:   Use -1 instead of 0 as a special value. (Hideki Eiraku and
+            Hirohito Higashi)
+Files:      src/edit.c, src/globals.h, src/move.c, src/screen.c, src/search.c 
+    
+
+*** ../vim-7.3.425/src/edit.c  2012-01-26 18:58:25.000000000 +0100
+--- src/edit.c 2012-02-04 23:23:45.000000000 +0100
+***************
+*** 1763,1771 ****
+      static void
+  undisplay_dollar()
+  {
+!     if (dollar_vcol)
+      {
+!      dollar_vcol = 0;
+       redrawWinline(curwin->w_cursor.lnum, FALSE);
+      }
+  }
+--- 1763,1771 ----
+      static void
+  undisplay_dollar()
+  {
+!     if (dollar_vcol >= 0)
+      {
+!      dollar_vcol = -1;
+       redrawWinline(curwin->w_cursor.lnum, FALSE);
+      }
+  }
+***************
+*** 5441,5447 ****
+                               compl_curr_match->cp_number);
+               edit_submode_extra = match_ref;
+               edit_submode_highl = HLF_R;
+!              if (dollar_vcol)
+                   curs_columns(FALSE);
+           }
+       }
+--- 5441,5447 ----
+                               compl_curr_match->cp_number);
+               edit_submode_extra = match_ref;
+               edit_submode_highl = HLF_R;
+!              if (dollar_vcol >= 0)
+                   curs_columns(FALSE);
+           }
+       }
+***************
+*** 8961,8967 ****
+       * We can emulate the vi behaviour by pretending there is a dollar
+       * displayed even when there isn't.
+       *  --pkv Sun Jan 19 01:56:40 EST 2003 */
+!     if (vim_strchr(p_cpo, CPO_BACKSPACE) != NULL && dollar_vcol == 0)
+       dollar_vcol = curwin->w_virtcol;
+  
+  #ifdef FEAT_FOLDING
+--- 8961,8967 ----
+       * We can emulate the vi behaviour by pretending there is a dollar
+       * displayed even when there isn't.
+       *  --pkv Sun Jan 19 01:56:40 EST 2003 */
+!     if (vim_strchr(p_cpo, CPO_BACKSPACE) != NULL && dollar_vcol == -1)
+       dollar_vcol = curwin->w_virtcol;
+  
+  #ifdef FEAT_FOLDING
+*** ../vim-7.3.425/src/globals.h       2011-05-10 16:41:13.000000000 +0200
+--- src/globals.h      2012-02-04 23:24:07.000000000 +0100
+***************
+*** 113,121 ****
+   * When '$' is included in 'cpoptions' option set:
+   * When a change command is given that deletes only part of a line, a dollar
+   * is put at the end of the changed text. dollar_vcol is set to the virtual
+!  * column of this '$'.
+   */
+! EXTERN colnr_T       dollar_vcol INIT(= 0);
+  
+  #ifdef FEAT_INS_EXPAND
+  /*
+--- 113,121 ----
+   * When '$' is included in 'cpoptions' option set:
+   * When a change command is given that deletes only part of a line, a dollar
+   * is put at the end of the changed text. dollar_vcol is set to the virtual
+!  * column of this '$'.  -1 is used to indicate no $ is being displayed.
+   */
+! EXTERN colnr_T       dollar_vcol INIT(= -1);
+  
+  #ifdef FEAT_INS_EXPAND
+  /*
+*** ../vim-7.3.425/src/move.c  2012-01-10 22:26:12.000000000 +0100
+--- src/move.c 2012-02-04 23:21:08.000000000 +0100
+***************
+*** 362,368 ****
+  #endif
+           )
+      {
+!      dollar_vcol = 0;
+       if (curwin->w_skipcol != 0)
+       {
+           curwin->w_skipcol = 0;
+--- 362,368 ----
+  #endif
+           )
+      {
+!      dollar_vcol = -1;
+       if (curwin->w_skipcol != 0)
+       {
+           curwin->w_skipcol = 0;
+***************
+*** 966,972 ****
+  
+      /* remove '$' from change command when cursor moves onto it */
+      if (startcol > dollar_vcol)
+!      dollar_vcol = 0;
+  
+      extra = curwin_col_off();
+      curwin->w_wcol = curwin->w_virtcol + extra;
+--- 966,972 ----
+  
+      /* remove '$' from change command when cursor moves onto it */
+      if (startcol > dollar_vcol)
+!      dollar_vcol = -1;
+  
+      extra = curwin_col_off();
+      curwin->w_wcol = curwin->w_virtcol + extra;
+*** ../vim-7.3.425/src/screen.c        2012-01-10 22:26:12.000000000 +0100
+--- src/screen.c       2012-02-04 23:22:44.000000000 +0100
+***************
+*** 1637,1647 ****
+            * When at start of changed lines: May scroll following lines
+            * up or down to minimize redrawing.
+            * Don't do this when the change continues until the end.
+!           * Don't scroll when dollar_vcol is non-zero, keep the "$".
+            */
+           if (lnum == mod_top
+                   && mod_bot != MAXLNUM
+!                  && !(dollar_vcol != 0 && mod_bot == mod_top + 1))
+           {
+               int             old_rows = 0;
+               int             new_rows = 0;
+--- 1637,1647 ----
+            * When at start of changed lines: May scroll following lines
+            * up or down to minimize redrawing.
+            * Don't do this when the change continues until the end.
+!           * Don't scroll when dollar_vcol >= 0, keep the "$".
+            */
+           if (lnum == mod_top
+                   && mod_bot != MAXLNUM
+!                  && !(dollar_vcol >= 0 && mod_bot == mod_top + 1))
+           {
+               int             old_rows = 0;
+               int             new_rows = 0;
+***************
+*** 1868,1879 ****
+           if (row > wp->w_height)     /* past end of screen */
+           {
+               /* we may need the size of that too long line later on */
+!              if (dollar_vcol == 0)
+                   wp->w_lines[idx].wl_size = plines_win(wp, lnum, TRUE);
+               ++idx;
+               break;
+           }
+!          if (dollar_vcol == 0)
+               wp->w_lines[idx].wl_size = row - srow;
+           ++idx;
+  #ifdef FEAT_FOLDING
+--- 1868,1879 ----
+           if (row > wp->w_height)     /* past end of screen */
+           {
+               /* we may need the size of that too long line later on */
+!              if (dollar_vcol == -1)
+                   wp->w_lines[idx].wl_size = plines_win(wp, lnum, TRUE);
+               ++idx;
+               break;
+           }
+!          if (dollar_vcol == -1)
+               wp->w_lines[idx].wl_size = row - srow;
+           ++idx;
+  #ifdef FEAT_FOLDING
+***************
+*** 1990,1996 ****
+           }
+  #endif
+       }
+!      else if (dollar_vcol == 0)
+           wp->w_botline = lnum;
+  
+       /* make sure the rest of the screen is blank */
+--- 1990,1996 ----
+           }
+  #endif
+       }
+!      else if (dollar_vcol == -1)
+           wp->w_botline = lnum;
+  
+       /* make sure the rest of the screen is blank */
+***************
+*** 2005,2011 ****
+      wp->w_old_botfill = wp->w_botfill;
+  #endif
+  
+!     if (dollar_vcol == 0)
+      {
+       /*
+        * There is a trick with w_botline.  If we invalidate it on each
+--- 2005,2011 ----
+      wp->w_old_botfill = wp->w_botfill;
+  #endif
+  
+!     if (dollar_vcol == -1)
+      {
+       /*
+        * There is a trick with w_botline.  If we invalidate it on each
+***************
+*** 3564,3570 ****
+       }
+  
+       /* When still displaying '$' of change command, stop at cursor */
+!      if (dollar_vcol != 0 && wp == curwin
+                  && lnum == wp->w_cursor.lnum && vcol >= (long)wp->w_virtcol
+  #ifdef FEAT_DIFF
+                                  && filler_todo <= 0
+--- 3564,3570 ----
+       }
+  
+       /* When still displaying '$' of change command, stop at cursor */
+!      if (dollar_vcol >= 0 && wp == curwin
+                  && lnum == wp->w_cursor.lnum && vcol >= (long)wp->w_virtcol
+  #ifdef FEAT_DIFF
+                                  && filler_todo <= 0
+*** ../vim-7.3.425/src/search.c        2012-01-26 20:58:21.000000000 +0100
+--- src/search.c       2012-02-04 23:23:10.000000000 +0100
+***************
+*** 2501,2508 ****
+           save_siso = p_siso;
+           /* Handle "$" in 'cpo': If the ')' is typed on top of the "$",
+            * stop displaying the "$". */
+!          if (dollar_vcol > 0 && dollar_vcol == curwin->w_virtcol)
+!              dollar_vcol = 0;
+           ++curwin->w_virtcol;        /* do display ')' just before "$" */
+           update_screen(VALID);       /* show the new char first */
+  
+--- 2501,2508 ----
+           save_siso = p_siso;
+           /* Handle "$" in 'cpo': If the ')' is typed on top of the "$",
+            * stop displaying the "$". */
+!          if (dollar_vcol >= 0 && dollar_vcol == curwin->w_virtcol)
+!              dollar_vcol = -1;
+           ++curwin->w_virtcol;        /* do display ')' just before "$" */
+           update_screen(VALID);       /* show the new char first */
+  
+*** ../vim-7.3.425/src/version.c       2012-02-04 22:44:27.000000000 +0100
+--- src/version.c      2012-02-04 23:32:55.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     426,
+  /**/
+
+
+-- 
+I am also told that there is a logical proof out there somewhere
+that demonstrates that there is no task which duct tape cannot handle.
+                                       -- Paul Brannan
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.427.patch0 b/vim/patches/vim-7.3.427.patch0
new file mode 100644 (file)
index 0000000..61df881
--- /dev/null
@@ -0,0 +1,378 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.427
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.427
+Problem:    readfile() can be slow with long lines.
+Solution:   Use realloc() instead of alloc(). (John Little)
+Files:      src/eval.c
+
+
+*** ../vim-7.3.426/src/eval.c  2012-01-26 14:32:26.000000000 +0100
+--- src/eval.c 2012-02-05 00:25:39.000000000 +0100
+***************
+*** 14325,14346 ****
+      typval_T *rettv;
+  {
+      int              binary = FALSE;
+      char_u   *fname;
+      FILE     *fd;
+!     listitem_T       *li;
+! #define FREAD_SIZE 200           /* optimized for text lines */
+!     char_u   buf[FREAD_SIZE];
+!     int              readlen;    /* size of last fread() */
+!     int              buflen;     /* nr of valid chars in buf[] */
+!     int              filtd;      /* how much in buf[] was NUL -> '\n' filtered */
+!     int              tolist;     /* first byte in buf[] still to be put in list */
+!     int              chop;       /* how many CR to chop off */
+!     char_u   *prev = NULL;   /* previously read bytes, if any */
+!     int              prevlen = 0;    /* length of "prev" if not NULL */
+!     char_u   *s;
+!     int              len;
+!     long     maxline = MAXLNUM;
+!     long     cnt = 0;
+  
+      if (argvars[1].v_type != VAR_UNKNOWN)
+      {
+--- 14325,14343 ----
+      typval_T *rettv;
+  {
+      int              binary = FALSE;
++     int              failed = FALSE;
+      char_u   *fname;
+      FILE     *fd;
+!     char_u   buf[(IOSIZE/256)*256];  /* rounded to avoid odd + 1 */
+!     int              io_size = sizeof(buf);
+!     int              readlen;                /* size of last fread() */
+!     char_u   *prev    = NULL;        /* previously read bytes, if any */
+!     long     prevlen  = 0;           /* length of data in prev */
+!     long     prevsize = 0;           /* size of prev buffer */
+!     long     maxline  = MAXLNUM;
+!     long     cnt      = 0;
+!     char_u   *p;                     /* position in buf */
+!     char_u   *start;                 /* start of current line */
+  
+      if (argvars[1].v_type != VAR_UNKNOWN)
+      {
+***************
+*** 14362,14410 ****
+       return;
+      }
+  
+-     filtd = 0;
+      while (cnt < maxline || maxline < 0)
+      {
+!      readlen = (int)fread(buf + filtd, 1, FREAD_SIZE - filtd, fd);
+!      buflen = filtd + readlen;
+!      tolist = 0;
+!      for ( ; filtd < buflen || readlen <= 0; ++filtd)
+!      {
+!          if (readlen <= 0 || buf[filtd] == '\n')
+!          {
+!              /* In binary mode add an empty list item when the last
+!               * non-empty line ends in a '\n'. */
+!              if (!binary && readlen == 0 && filtd == 0 && prev == NULL)
+!                  break;
+  
+!              /* Found end-of-line or end-of-file: add a text line to the
+!               * list. */
+!              chop = 0;
+!              if (!binary)
+!                  while (filtd - chop - 1 >= tolist
+!                                        && buf[filtd - chop - 1] == '\r')
+!                      ++chop;
+!              len = filtd - tolist - chop;
+!              if (prev == NULL)
+!                  s = vim_strnsave(buf + tolist, len);
+               else
+               {
+!                  s = alloc((unsigned)(prevlen + len + 1));
+!                  if (s != NULL)
+                   {
+!                      mch_memmove(s, prev, prevlen);
+!                      vim_free(prev);
+!                      prev = NULL;
+!                      mch_memmove(s + prevlen, buf + tolist, len);
+                       s[prevlen + len] = NUL;
+                   }
+               }
+!              tolist = filtd + 1;
+  
+!              li = listitem_alloc();
+!              if (li == NULL)
+               {
+                   vim_free(s);
+                   break;
+               }
+               li->li_tv.v_type = VAR_STRING;
+--- 14359,14419 ----
+       return;
+      }
+  
+      while (cnt < maxline || maxline < 0)
+      {
+!      readlen = (int)fread(buf, 1, io_size, fd);
+! 
+!      /* This for loop processes what was read, but is also entered at end
+!       * of file so that either:
+!       * - an incomplete line gets written
+!       * - a "binary" file gets an empty line at the end if it ends in a
+!       *   newline.  */
+!      for (p = buf, start = buf;
+!              p < buf + readlen || (readlen <= 0 && (prevlen > 0 || binary));
+!              ++p)
+!      {
+!          if (*p == '\n' || readlen <= 0)
+!          {
+!              listitem_T  *li;
+!              char_u      *s  = NULL;
+!              long_u      len = p - start;
+  
+!              /* Finished a line.  Remove CRs before NL. */
+!              if (readlen > 0 && !binary)
+!              {
+!                  while (len > 0 && start[len - 1] == '\r')
+!                      --len;
+!                  /* removal may cross back to the "prev" string */
+!                  if (len == 0)
+!                      while (prevlen > 0 && prev[prevlen - 1] == '\r')
+!                          --prevlen;
+!              }
+!              if (prevlen == 0)
+!                  s = vim_strnsave(start, len);
+               else
+               {
+!                  /* Change "prev" buffer to be the right size.  This way
+!                   * the bytes are only copied once, and very long lines are
+!                   * allocated only once.  */
+!                  if ((s = vim_realloc(prev, prevlen + len + 1)) != NULL)
+                   {
+!                      mch_memmove(s + prevlen, start, len);
+                       s[prevlen + len] = NUL;
++                      prev = NULL; /* the list will own the string */
++                      prevlen = prevsize = 0;
+                   }
+               }
+!              if (s == NULL)
+!              {
+!                  do_outofmem_msg((long_u) prevlen + len + 1);
+!                  failed = TRUE;
+!                  break;
+!              }
+  
+!              if ((li = listitem_alloc()) == NULL)
+               {
+                   vim_free(s);
++                  failed = TRUE;
+                   break;
+               }
+               li->li_tv.v_type = VAR_STRING;
+***************
+*** 14412,14485 ****
+               li->li_tv.vval.v_string = s;
+               list_append(rettv->vval.v_list, li);
+  
+!              if (++cnt >= maxline && maxline >= 0)
+!                  break;
+!              if (readlen <= 0)
+                   break;
+           }
+!          else if (buf[filtd] == NUL)
+!              buf[filtd] = '\n';
+  #ifdef FEAT_MBYTE
+!          else if (buf[filtd] == 0xef
+!                  && enc_utf8
+!                  && filtd + 2 < buflen
+!                  && !binary
+!                  && buf[filtd + 1] == 0xbb
+!                  && buf[filtd + 2] == 0xbf)
+!          {
+!              /* remove utf-8 byte order mark */
+!              mch_memmove(buf + filtd, buf + filtd + 3, buflen - filtd - 3);
+!              --filtd;
+!              buflen -= 3;
+           }
+  #endif
+!      }
+!      if (readlen <= 0)
+!          break;
+  
+!      if (tolist == 0)
+       {
+!          if (buflen >= FREAD_SIZE / 2)
+           {
+!              /* "buf" is full, need to move text to an allocated buffer */
+!              if (prev == NULL)
+               {
+!                  prev = vim_strnsave(buf, buflen);
+!                  prevlen = buflen;
+               }
+!              else
+               {
+!                  s = alloc((unsigned)(prevlen + buflen));
+!                  if (s != NULL)
+!                  {
+!                      mch_memmove(s, prev, prevlen);
+!                      mch_memmove(s + prevlen, buf, buflen);
+!                      vim_free(prev);
+!                      prev = s;
+!                      prevlen += buflen;
+!                  }
+               }
+!              filtd = 0;
+           }
+       }
+!      else
+!      {
+!          mch_memmove(buf, buf + tolist, buflen - tolist);
+!          filtd -= tolist;
+!      }
+!     }
+  
+      /*
+       * For a negative line count use only the lines at the end of the file,
+       * free the rest.
+       */
+!     if (maxline < 0)
+       while (cnt > -maxline)
+       {
+           listitem_remove(rettv->vval.v_list, rettv->vval.v_list->lv_first);
+           --cnt;
+       }
+  
+      vim_free(prev);
+      fclose(fd);
+  }
+--- 14421,14529 ----
+               li->li_tv.vval.v_string = s;
+               list_append(rettv->vval.v_list, li);
+  
+!              start = p + 1; /* step over newline */
+!              if ((++cnt >= maxline && maxline >= 0) || readlen <= 0)
+                   break;
+           }
+!          else if (*p == NUL)
+!              *p = '\n';
+  #ifdef FEAT_MBYTE
+!          /* Check for utf8 "bom"; U+FEFF is encoded as EF BB BF.  Do this
+!           * when finding the BF and check the previous two bytes. */
+!          else if (*p == 0xbf && enc_utf8 && !binary)
+!          {
+!              /* Find the two bytes before the 0xbf.  If p is at buf, or buf
+!               * + 1, these may be in the "prev" string. */
+!              char_u back1 = p >= buf + 1 ? p[-1]
+!                                   : prevlen >= 1 ? prev[prevlen - 1] : NUL;
+!              char_u back2 = p >= buf + 2 ? p[-2]
+!                        : p == buf + 1 && prevlen >= 1 ? prev[prevlen - 1]
+!                        : prevlen >= 2 ? prev[prevlen - 2] : NUL;
+! 
+!              if (back2 == 0xef && back1 == 0xbb)
+!              {
+!                  char_u *dest = p - 2;
+! 
+!                  /* Usually a BOM is at the beginning of a file, and so at
+!                   * the beginning of a line; then we can just step over it.
+!                   */
+!                  if (start == dest)
+!                      start = p + 1;
+!                  else
+!                  {
+!                      /* have to shuffle buf to close gap */
+!                      int adjust_prevlen = 0;
+! 
+!                      if (dest < buf)
+!                      {
+!                          adjust_prevlen = buf - dest; /* must be 1 or 2 */
+!                          dest = buf;
+!                      }
+!                      if (readlen > p - buf + 1)
+!                          mch_memmove(dest, p + 1, readlen - (p - buf) - 1);
+!                      readlen -= 3 - adjust_prevlen;
+!                      prevlen -= adjust_prevlen;
+!                      p = dest - 1;
+!                  }
+!              }
+           }
+  #endif
+!      } /* for */
+  
+!      if (failed || (cnt >= maxline && maxline >= 0) || readlen <= 0)
+!          break;
+!      if (start < p)
+       {
+!          /* There's part of a line in buf, store it in "prev". */
+!          if (p - start + prevlen >= prevsize)
+           {
+!              /* need bigger "prev" buffer */
+!              char_u *newprev;
+! 
+!              /* A common use case is ordinary text files and "prev" gets a
+!               * fragment of a line, so the first allocation is made
+!               * small, to avoid repeatedly 'allocing' large and
+!               * 'reallocing' small. */
+!              if (prevsize == 0)
+!                  prevsize = p - start;
+!              else
+               {
+!                  long grow50pc = (prevsize * 3) / 2;
+!                  long growmin  = (p - start) * 2 + prevlen;
+!                  prevsize = grow50pc > growmin ? grow50pc : growmin;
+               }
+!              if ((newprev = vim_realloc(prev, prevsize)) == NULL)
+               {
+!                  do_outofmem_msg((long_u)prevsize);
+!                  failed = TRUE;
+!                  break;
+               }
+!              prev = newprev;
+           }
++          /* Add the line part to end of "prev". */
++          mch_memmove(prev + prevlen, start, p - start);
++          prevlen += p - start;
+       }
+!     } /* while */
+  
+      /*
+       * For a negative line count use only the lines at the end of the file,
+       * free the rest.
+       */
+!     if (!failed && maxline < 0)
+       while (cnt > -maxline)
+       {
+           listitem_remove(rettv->vval.v_list, rettv->vval.v_list->lv_first);
+           --cnt;
+       }
+  
++     if (failed)
++     {
++      list_free(rettv->vval.v_list, TRUE);
++      /* readfile doc says an empty list is returned on error */
++      rettv->vval.v_list = list_alloc();
++     }
++ 
+      vim_free(prev);
+      fclose(fd);
+  }
+*** ../vim-7.3.426/src/version.c       2012-02-04 23:34:57.000000000 +0100
+--- src/version.c      2012-02-05 00:38:34.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     427,
+  /**/
+
+-- 
+One difference between a man and a machine is that a machine is quiet
+when well oiled.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.428.patch0 b/vim/patches/vim-7.3.428.patch0
new file mode 100644 (file)
index 0000000..89567ed
--- /dev/null
@@ -0,0 +1,113 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.428
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.428 
+Problem:    Win32: an xpm file without a mask crashes Vim.
+Solution:   Fail when the mask is missing. (Dave Bodenstab)
+Files:      src/xpm_w32.c
+
+*** ../vim-7.3.427/src/xpm_w32.c       2010-08-15 21:57:25.000000000 +0200
+--- src/xpm_w32.c      2012-02-05 00:46:13.000000000 +0100
+***************
+*** 1,4 ****
+! /*
+   * Load XPM image.
+   *
+   * This function is placed in separate file because Xpm headers conflict with
+--- 1,5 ----
+! /* vi:set ts=8 sts=4 sw=4:
+!  *
+   * Load XPM image.
+   *
+   * This function is placed in separate file because Xpm headers conflict with
+***************
+*** 30,38 ****
+  #include "xpm.h"
+  
+  /*
+!  * Tries to load Xpm image from file 'filename'.
+!  * If fails return -1.
+!  * success - 0 and image and mask BITMAPS
+   */
+      int
+  LoadXpmImage(filename, hImage, hShape)
+--- 31,40 ----
+  #include "xpm.h"
+  
+  /*
+!  * Tries to load an Xpm image from the file "filename".
+!  * Returns -1 on failure.
+!  * Returns 0 on success and stores image and mask BITMAPS in "hImage" and
+!  * "hShape".
+   */
+      int
+  LoadXpmImage(filename, hImage, hShape)
+***************
+*** 40,46 ****
+      HBITMAP *hImage;
+      HBITMAP *hShape;
+  {
+!     XImage       *img;   /* loaded image */
+      XImage       *shp;  /* shapeimage */
+      XpmAttributes   attr;
+      int                  res;
+--- 42,48 ----
+      HBITMAP *hImage;
+      HBITMAP *hShape;
+  {
+!     XImage       *img;  /* loaded image */
+      XImage       *shp;  /* shapeimage */
+      XpmAttributes   attr;
+      int                  res;
+***************
+*** 51,60 ****
+      DeleteDC(hdc);
+      if (res < 0)
+       return -1;
+!     else
+      {
+!      *hImage = img->bitmap;
+!      *hShape = shp->bitmap;
+!      return 0;
+      }
+  }
+--- 53,65 ----
+      DeleteDC(hdc);
+      if (res < 0)
+       return -1;
+!     if (shp == NULL)
+      {
+!         if (img)
+!          XDestroyImage(img);
+!      return -1;
+      }
++     *hImage = img->bitmap;
++     *hShape = shp->bitmap;
++     return 0;
+  }
+*** ../vim-7.3.427/src/version.c       2012-02-05 00:39:14.000000000 +0100
+--- src/version.c      2012-02-05 00:47:08.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     428,
+  /**/
+
+-- 
+I'm not familiar with this proof, but I'm aware of a significant
+following of toddlers who believe that peanut butter is the solution
+to all of life's problems...           -- Tim Hammerquist
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.429.patch0 b/vim/patches/vim-7.3.429.patch0
new file mode 100644 (file)
index 0000000..801e25f
--- /dev/null
@@ -0,0 +1,192 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.429
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.429
+Problem:    When 'cpoptions' includes "E" "c0" in the first column is an
+            error. The redo register is then set to the errornous command.
+Solution:   Do not set the redo register if the command fails because of an
+            empty region. (Hideki Eiraku)
+Files:      src/getchar.c, src/normal.c, src/proto/getchar.pro
+
+
+*** ../vim-7.3.428/src/getchar.c       2012-01-10 22:26:12.000000000 +0100
+--- src/getchar.c      2012-02-05 01:05:09.000000000 +0100
+***************
+*** 470,475 ****
+--- 470,493 ----
+      }
+  }
+  
++ /*
++  * Discard the contents of the redo buffer and restore the previous redo
++  * buffer.
++  */
++     void
++ CancelRedo()
++ {
++     if (!block_redo)
++     {
++      free_buff(&redobuff);
++      redobuff = old_redobuff;
++      old_redobuff.bh_first.b_next = NULL;
++      start_stuff();
++      while (read_stuff(TRUE) != NUL)
++          ;
++     }
++ }
++ 
+  #if defined(FEAT_AUTOCMD) || defined(FEAT_EVAL) || defined(PROTO)
+  /*
+   * Save redobuff and old_redobuff to save_redobuff and save_old_redobuff.
+***************
+*** 691,699 ****
+   * Read a character from the redo buffer.  Translates K_SPECIAL, CSI and
+   * multibyte characters.
+   * The redo buffer is left as it is.
+!  * if init is TRUE, prepare for redo, return FAIL if nothing to redo, OK
+!  * otherwise
+!  * if old is TRUE, use old_redobuff instead of redobuff
+   */
+      static int
+  read_redo(init, old_redo)
+--- 709,717 ----
+   * Read a character from the redo buffer.  Translates K_SPECIAL, CSI and
+   * multibyte characters.
+   * The redo buffer is left as it is.
+!  * If init is TRUE, prepare for redo, return FAIL if nothing to redo, OK
+!  * otherwise.
+!  * If old is TRUE, use old_redobuff instead of redobuff.
+   */
+      static int
+  read_redo(init, old_redo)
+*** ../vim-7.3.428/src/normal.c        2012-01-26 11:43:04.000000000 +0100
+--- src/normal.c       2012-02-05 01:06:01.000000000 +0100
+***************
+*** 1978,1984 ****
+--- 1978,1987 ----
+           VIsual_reselect = FALSE;        /* don't reselect now */
+  #endif
+           if (empty_region_error)
++          {
+               vim_beep();
++              CancelRedo();
++          }
+           else
+           {
+               (void)op_delete(oap);
+***************
+*** 1992,1998 ****
+--- 1995,2004 ----
+           if (empty_region_error)
+           {
+               if (!gui_yank)
++              {
+                   vim_beep();
++                  CancelRedo();
++              }
+           }
+           else
+               (void)op_yank(oap, FALSE, !gui_yank);
+***************
+*** 2004,2010 ****
+--- 2010,2019 ----
+           VIsual_reselect = FALSE;        /* don't reselect now */
+  #endif
+           if (empty_region_error)
++          {
+               vim_beep();
++              CancelRedo();
++          }
+           else
+           {
+               /* This is a new edit command, not a restart.  Need to
+***************
+*** 2066,2072 ****
+--- 2075,2084 ----
+       case OP_LOWER:
+       case OP_ROT13:
+           if (empty_region_error)
++          {
+               vim_beep();
++              CancelRedo();
++          }
+           else
+               op_tilde(oap);
+           check_cursor_col();
+***************
+*** 2099,2105 ****
+--- 2111,2120 ----
+  #endif
+  #ifdef FEAT_VISUALEXTRA
+           if (empty_region_error)
++          {
+               vim_beep();
++              CancelRedo();
++          }
+           else
+           {
+               /* This is a new edit command, not a restart.  Need to
+***************
+*** 2129,2135 ****
+--- 2144,2153 ----
+  #ifdef FEAT_VISUALEXTRA
+           if (empty_region_error)
+  #endif
++          {
+               vim_beep();
++              CancelRedo();
++          }
+  #ifdef FEAT_VISUALEXTRA
+           else
+               op_replace(oap, cap->nchar);
+*** ../vim-7.3.428/src/proto/getchar.pro       2010-10-20 21:22:17.000000000 +0200
+--- src/proto/getchar.pro      2012-02-05 01:05:20.000000000 +0100
+***************
+*** 4,11 ****
+  char_u *get_inserted __ARGS((void));
+  int stuff_empty __ARGS((void));
+  void typeahead_noflush __ARGS((int c));
+! void flush_buffers __ARGS((int typeahead));
+  void ResetRedobuff __ARGS((void));
+  void saveRedobuff __ARGS((void));
+  void restoreRedobuff __ARGS((void));
+  void AppendToRedobuff __ARGS((char_u *s));
+--- 4,12 ----
+  char_u *get_inserted __ARGS((void));
+  int stuff_empty __ARGS((void));
+  void typeahead_noflush __ARGS((int c));
+! void flush_buffers __ARGS((int flush_typeahead));
+  void ResetRedobuff __ARGS((void));
++ void CancelRedo __ARGS((void));
+  void saveRedobuff __ARGS((void));
+  void restoreRedobuff __ARGS((void));
+  void AppendToRedobuff __ARGS((char_u *s));
+*** ../vim-7.3.428/src/version.c       2012-02-05 00:47:56.000000000 +0100
+--- src/version.c      2012-02-05 01:09:23.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     429,
+  /**/
+
+-- 
+The History of every major Galactic Civilization tends to pass through
+three distinct and recognizable phases, those of Survival, Inquiry and
+Sophistication, otherwise known as the How, Why and Where phases.
+For instance, the first phase is characterized by the question 'How can
+we eat?' the second by the question 'Why do we eat?' and the third by
+the question 'Where shall we have lunch?'
+               -- Douglas Adams, "The Hitchhiker's Guide to the Galaxy"
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.430.patch0 b/vim/patches/vim-7.3.430.patch0
new file mode 100644 (file)
index 0000000..c67e7fb
--- /dev/null
@@ -0,0 +1,80 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.430
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.430
+Problem:    When a custom filetype detection uses "augroup END" the conf
+            fileytpe detection does not have the filetypedetect group.
+Solution:   Always end the group and include filetypedetect in the conf
+            autocommand. (Lech Lorens)
+Files:      runtime/filetype.vim
+    
+
+*** ../vim-7.3.429/runtime/filetype.vim        2012-02-05 20:08:08.000000000 +0100
+--- runtime/filetype.vim       2012-02-05 19:59:40.000000000 +0100
+***************
+*** 2545,2561 ****
+  " detected filetypes.
+  runtime! ftdetect/*.vim
+  
+  
+  " Generic configuration file (check this last, it's just guessing!)
+! au BufNewFile,BufRead,StdinReadPost *
+       \ if !did_filetype() && expand("<amatch>") !~ g:ft_ignore_pat
+       \    && (getline(1) =~ '^#' || getline(2) =~ '^#' || getline(3) =~ '^#'
+       \       || getline(4) =~ '^#' || getline(5) =~ '^#') |
+       \   setf conf |
+       \ endif
+  
+- augroup END
+- 
+  
+  " If the GUI is already running, may still need to install the Syntax menu.
+  " Don't do it when the 'M' flag is included in 'guioptions'.
+--- 2545,2563 ----
+  " detected filetypes.
+  runtime! ftdetect/*.vim
+  
++ " NOTE: The above command could have ended the filetypedetect autocmd group
++ " and started another one. Let's make sure it has ended to get to a consistant
++ " state.
++ augroup END
+  
+  " Generic configuration file (check this last, it's just guessing!)
+! au filetypedetect BufNewFile,BufRead,StdinReadPost *
+       \ if !did_filetype() && expand("<amatch>") !~ g:ft_ignore_pat
+       \    && (getline(1) =~ '^#' || getline(2) =~ '^#' || getline(3) =~ '^#'
+       \       || getline(4) =~ '^#' || getline(5) =~ '^#') |
+       \   setf conf |
+       \ endif
+  
+  
+  " If the GUI is already running, may still need to install the Syntax menu.
+  " Don't do it when the 'M' flag is included in 'guioptions'.
+*** ../vim-7.3.429/src/version.c       2012-02-05 01:18:41.000000000 +0100
+--- src/version.c      2012-02-05 20:02:18.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     430,
+  /**/
+
+-- 
+The technology involved in making anything invisible is so infinitely
+complex that nine hundred and ninety-nine billion, nine hundred and
+ninety-nine million, nine hundred and ninety-nine thousand, nine hundred
+and ninety-nine times out of a trillion it is much simpler and more
+effective just to take the thing away and do without it.
+               -- Douglas Adams, "The Hitchhiker's Guide to the Galaxy"
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.431.patch0 b/vim/patches/vim-7.3.431.patch0
new file mode 100644 (file)
index 0000000..2e4e62b
--- /dev/null
@@ -0,0 +1,280 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.431
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.431
+Problem:    Fetching a key at a prompt may be confused by escape sequences.
+            Especially when getting a prompt at a VimEnter autocommand.
+            (Alex Efros)
+Solution:   Properly handle escape sequences deleted by check_termcode().
+Files:      src/getchar.c, src/misc1.c, src/term.c, src/proto/term.pro
+
+
+*** ../vim-7.3.430/src/getchar.c       2012-02-05 01:18:41.000000000 +0100
+--- src/getchar.c      2012-02-05 22:04:33.000000000 +0100
+***************
+*** 2282,2288 ****
+                                                  typebuf.tb_off] == RM_YES))
+                               && !timedout)
+                       {
+!                          keylen = check_termcode(max_mlen + 1, NULL, 0);
+  
+                           /* If no termcode matched but 'pastetoggle'
+                            * matched partially it's like an incomplete key
+--- 2282,2289 ----
+                                                  typebuf.tb_off] == RM_YES))
+                               && !timedout)
+                       {
+!                          keylen = check_termcode(max_mlen + 1,
+!                                                             NULL, 0, NULL);
+  
+                           /* If no termcode matched but 'pastetoggle'
+                            * matched partially it's like an incomplete key
+*** ../vim-7.3.430/src/misc1.c 2012-01-10 18:37:53.000000000 +0100
+--- src/misc1.c        2012-02-05 21:59:53.000000000 +0100
+***************
+*** 3105,3112 ****
+      int
+  get_keystroke()
+  {
+! #define CBUFLEN 151
+!     char_u   buf[CBUFLEN];
+      int              len = 0;
+      int              n;
+      int              save_mapped_ctrl_c = mapped_ctrl_c;
+--- 3105,3113 ----
+      int
+  get_keystroke()
+  {
+!     char_u   *buf = NULL;
+!     int              buflen = 150;
+!     int              maxlen;
+      int              len = 0;
+      int              n;
+      int              save_mapped_ctrl_c = mapped_ctrl_c;
+***************
+*** 3118,3129 ****
+       cursor_on();
+       out_flush();
+  
+       /* First time: blocking wait.  Second time: wait up to 100ms for a
+!       * terminal code to complete.  Leave some room for check_termcode() to
+!       * insert a key code into (max 5 chars plus NUL).  And
+!       * fix_input_buffer() can triple the number of bytes. */
+!      n = ui_inchar(buf + len, (CBUFLEN - 6 - len) / 3,
+!                                                  len == 0 ? -1L : 100L, 0);
+       if (n > 0)
+       {
+           /* Replace zero and CSI by a special key code. */
+--- 3119,3147 ----
+       cursor_on();
+       out_flush();
+  
++      /* Leave some room for check_termcode() to insert a key code into (max
++       * 5 chars plus NUL).  And fix_input_buffer() can triple the number of
++       * bytes. */
++      maxlen = (buflen - 6 - len) / 3;
++      if (buf == NULL)
++          buf = alloc(buflen);
++      else if (maxlen < 10)
++      {
++          /* Need some more space. This migth happen when receiving a long
++           * escape sequence. */
++          buflen += 100;
++          buf = vim_realloc(buf, buflen);
++          maxlen = (buflen - 6 - len) / 3;
++      }
++      if (buf == NULL)
++      {
++          do_outofmem_msg((long_u)buflen);
++          return ESC;  /* panic! */
++      }
++ 
+       /* First time: blocking wait.  Second time: wait up to 100ms for a
+!       * terminal code to complete. */
+!      n = ui_inchar(buf + len, maxlen, len == 0 ? -1L : 100L, 0);
+       if (n > 0)
+       {
+           /* Replace zero and CSI by a special key code. */
+***************
+*** 3135,3141 ****
+           ++waited;       /* keep track of the waiting time */
+  
+       /* Incomplete termcode and not timed out yet: get more characters */
+!      if ((n = check_termcode(1, buf, len)) < 0
+              && (!p_ttimeout || waited * 100L < (p_ttm < 0 ? p_tm : p_ttm)))
+           continue;
+  
+--- 3153,3159 ----
+           ++waited;       /* keep track of the waiting time */
+  
+       /* Incomplete termcode and not timed out yet: get more characters */
+!      if ((n = check_termcode(1, buf, buflen, &len)) < 0
+              && (!p_ttimeout || waited * 100L < (p_ttm < 0 ? p_tm : p_ttm)))
+           continue;
+  
+***************
+*** 3203,3209 ****
+       {
+           if (MB_BYTE2LEN(n) > len)
+               continue;       /* more bytes to get */
+!          buf[len >= CBUFLEN ? CBUFLEN - 1 : len] = NUL;
+           n = (*mb_ptr2char)(buf);
+       }
+  #endif
+--- 3221,3227 ----
+       {
+           if (MB_BYTE2LEN(n) > len)
+               continue;       /* more bytes to get */
+!          buf[len >= buflen ? buflen - 1 : len] = NUL;
+           n = (*mb_ptr2char)(buf);
+       }
+  #endif
+***************
+*** 3213,3218 ****
+--- 3231,3237 ----
+  #endif
+       break;
+      }
++     vim_free(buf);
+  
+      mapped_ctrl_c = save_mapped_ctrl_c;
+      return n;
+*** ../vim-7.3.430/src/term.c  2012-01-26 13:01:54.000000000 +0100
+--- src/term.c 2012-02-05 21:45:09.000000000 +0100
+***************
+*** 3785,3798 ****
+   * With a match, the match is removed, the replacement code is inserted in
+   * typebuf.tb_buf[] and the number of characters in typebuf.tb_buf[] is
+   * returned.
+!  * When "buf" is not NULL, it is used instead of typebuf.tb_buf[]. "buflen" is
+!  * then the length of the string in buf[].
+   */
+      int
+! check_termcode(max_offset, buf, buflen)
+      int              max_offset;
+      char_u   *buf;
+!     int              buflen;
+  {
+      char_u   *tp;
+      char_u   *p;
+--- 3785,3800 ----
+   * With a match, the match is removed, the replacement code is inserted in
+   * typebuf.tb_buf[] and the number of characters in typebuf.tb_buf[] is
+   * returned.
+!  * When "buf" is not NULL, buf[bufsize] is used instead of typebuf.tb_buf[].
+!  * "buflen" is then the length of the string in buf[] and is updated for
+!  * inserts and deletes.
+   */
+      int
+! check_termcode(max_offset, buf, bufsize, buflen)
+      int              max_offset;
+      char_u   *buf;
+!     int              bufsize;
+!     int              *buflen;
+  {
+      char_u   *tp;
+      char_u   *p;
+***************
+*** 3864,3873 ****
+       }
+       else
+       {
+!          if (offset >= buflen)
+               break;
+           tp = buf + offset;
+!          len = buflen - offset;
+       }
+  
+       /*
+--- 3866,3875 ----
+       }
+       else
+       {
+!          if (offset >= *buflen)
+               break;
+           tp = buf + offset;
+!          len = *buflen - offset;
+       }
+  
+       /*
+***************
+*** 5002,5013 ****
+           if (extra < 0)
+               /* remove matched characters */
+               mch_memmove(buf + offset, buf + offset - extra,
+!                                         (size_t)(buflen + offset + extra));
+           else if (extra > 0)
+!              /* insert the extra space we need */
+               mch_memmove(buf + offset + extra, buf + offset,
+!                                                 (size_t)(buflen - offset));
+           mch_memmove(buf + offset, string, (size_t)new_slen);
+       }
+       return retval == 0 ? (len + extra + offset) : retval;
+      }
+--- 5004,5021 ----
+           if (extra < 0)
+               /* remove matched characters */
+               mch_memmove(buf + offset, buf + offset - extra,
+!                                         (size_t)(*buflen + offset + extra));
+           else if (extra > 0)
+!          {
+!              /* Insert the extra space we need.  If there is insufficient
+!               * space return -1. */
+!              if (*buflen + extra + new_slen >= bufsize)
+!                  return -1;
+               mch_memmove(buf + offset + extra, buf + offset,
+!                                                 (size_t)(*buflen - offset));
+!          }
+           mch_memmove(buf + offset, string, (size_t)new_slen);
++          *buflen = *buflen + extra + new_slen;
+       }
+       return retval == 0 ? (len + extra + offset) : retval;
+      }
+*** ../vim-7.3.430/src/proto/term.pro  2010-08-15 21:57:28.000000000 +0200
+--- src/proto/term.pro 2012-02-05 21:45:16.000000000 +0100
+***************
+*** 50,56 ****
+  char_u *get_termcode __ARGS((int i));
+  void del_termcode __ARGS((char_u *name));
+  void set_mouse_topline __ARGS((win_T *wp));
+! int check_termcode __ARGS((int max_offset, char_u *buf, int buflen));
+  char_u *replace_termcodes __ARGS((char_u *from, char_u **bufp, int from_part, int do_lt, int special));
+  int find_term_bykeys __ARGS((char_u *src));
+  void show_termcodes __ARGS((void));
+--- 50,56 ----
+  char_u *get_termcode __ARGS((int i));
+  void del_termcode __ARGS((char_u *name));
+  void set_mouse_topline __ARGS((win_T *wp));
+! int check_termcode __ARGS((int max_offset, char_u *buf, int bufsize, int *buflen));
+  char_u *replace_termcodes __ARGS((char_u *from, char_u **bufp, int from_part, int do_lt, int special));
+  int find_term_bykeys __ARGS((char_u *src));
+  void show_termcodes __ARGS((void));
+*** ../vim-7.3.430/src/version.c       2012-02-05 20:08:30.000000000 +0100
+--- src/version.c      2012-02-05 22:03:43.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     431,
+  /**/
+
+-- 
+"You know, it's at times like this when I'm trapped in a Vogon airlock with
+a man from Betelgeuse and about to die of asphyxiation in deep space that I
+really wish I'd listened to what my mother told me when I was young!"
+"Why, what did she tell you?"
+"I don't know, I didn't listen!"
+               -- Arthur Dent and Ford Prefect in Douglas Adams'
+                  "The Hitchhiker's Guide to the Galaxy"
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.432.patch0 b/vim/patches/vim-7.3.432.patch0
new file mode 100644 (file)
index 0000000..c01dd59
--- /dev/null
@@ -0,0 +1,228 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.432
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.432
+Problem:    ACLs are not supported for ZFS or NFSv4 on Solaris.
+Solution:   Add configure check and code. (Danek Duvall)
+Files:      src/configure.in, src/auto/configure, src/config.h.in,
+            src/os_unix.c
+
+
+*** ../vim-7.3.431/src/configure.in    2011-12-14 20:51:19.000000000 +0100
+--- src/configure.in   2012-02-05 22:40:22.000000000 +0100
+***************
+*** 3106,3111 ****
+--- 3106,3112 ----
+  
+  dnl Link with -lposix1e for ACL stuff; if not found, try -lacl for SGI
+  dnl when -lacl works, also try to use -lattr (required for Debian).
++ dnl On Solaris, use the acl_get/set functions in libsec, if present.
+  AC_MSG_CHECKING(--disable-acl argument)
+  AC_ARG_ENABLE(acl,
+       [  --disable-acl           Don't check for ACL support.],
+***************
+*** 3128,3133 ****
+--- 3129,3135 ----
+       AC_MSG_RESULT(yes); AC_DEFINE(HAVE_POSIX_ACL),
+       AC_MSG_RESULT(no))
+  
++ AC_CHECK_LIB(sec, acl_get, [LIBS="$LIBS -lsec"; AC_DEFINE(HAVE_SOLARIS_ZFS_ACL)],
+  AC_MSG_CHECKING(for Solaris ACL support)
+  AC_TRY_LINK([
+  #ifdef HAVE_SYS_ACL_H
+***************
+*** 3135,3141 ****
+  #endif], [acl("foo", GETACLCNT, 0, NULL);
+       ],
+       AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOLARIS_ACL),
+!      AC_MSG_RESULT(no))
+  
+  AC_MSG_CHECKING(for AIX ACL support)
+  AC_TRY_LINK([
+--- 3137,3143 ----
+  #endif], [acl("foo", GETACLCNT, 0, NULL);
+       ],
+       AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOLARIS_ACL),
+!      AC_MSG_RESULT(no)))
+  
+  AC_MSG_CHECKING(for AIX ACL support)
+  AC_TRY_LINK([
+*** ../vim-7.3.431/src/auto/configure  2011-12-14 20:51:19.000000000 +0100
+--- src/auto/configure 2012-02-05 22:41:01.000000000 +0100
+***************
+*** 11328,11334 ****
+  rm -f core conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+  
+! { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Solaris ACL support" >&5
+  $as_echo_n "checking for Solaris ACL support... " >&6; }
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+  /* end confdefs.h.  */
+--- 11328,11374 ----
+  rm -f core conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+  
+! { $as_echo "$as_me:${as_lineno-$LINENO}: checking for acl_get in -lsec" >&5
+! $as_echo_n "checking for acl_get in -lsec... " >&6; }
+! if test "${ac_cv_lib_sec_acl_get+set}" = set; then :
+!   $as_echo_n "(cached) " >&6
+! else
+!   ac_check_lib_save_LIBS=$LIBS
+! LIBS="-lsec  $LIBS"
+! cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+! /* end confdefs.h.  */
+! 
+! /* Override any GCC internal prototype to avoid an error.
+!    Use char because int might match the return type of a GCC
+!    builtin and then its argument prototype would still apply.  */
+! #ifdef __cplusplus
+! extern "C"
+! #endif
+! char acl_get ();
+! int
+! main ()
+! {
+! return acl_get ();
+!   ;
+!   return 0;
+! }
+! _ACEOF
+! if ac_fn_c_try_link "$LINENO"; then :
+!   ac_cv_lib_sec_acl_get=yes
+! else
+!   ac_cv_lib_sec_acl_get=no
+! fi
+! rm -f core conftest.err conftest.$ac_objext \
+!     conftest$ac_exeext conftest.$ac_ext
+! LIBS=$ac_check_lib_save_LIBS
+! fi
+! { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sec_acl_get" >&5
+! $as_echo "$ac_cv_lib_sec_acl_get" >&6; }
+! if test "x$ac_cv_lib_sec_acl_get" = x""yes; then :
+!   LIBS="$LIBS -lsec"; $as_echo "#define HAVE_SOLARIS_ZFS_ACL 1" >>confdefs.h
+! 
+! else
+!   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Solaris ACL support" >&5
+  $as_echo_n "checking for Solaris ACL support... " >&6; }
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+  /* end confdefs.h.  */
+***************
+*** 11355,11360 ****
+--- 11395,11402 ----
+  fi
+  rm -f core conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
++ fi
++ 
+  
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for AIX ACL support" >&5
+  $as_echo_n "checking for AIX ACL support... " >&6; }
+*** ../vim-7.3.431/src/config.h.in     2011-09-02 12:27:20.000000000 +0200
+--- src/config.h.in    2012-02-05 22:40:22.000000000 +0100
+***************
+*** 363,368 ****
+--- 363,369 ----
+  
+  /* Define if you want to add support for ACL */
+  #undef HAVE_POSIX_ACL
++ #undef HAVE_SOLARIS_ZFS_ACL
+  #undef HAVE_SOLARIS_ACL
+  #undef HAVE_AIX_ACL
+  
+*** ../vim-7.3.431/src/os_unix.c       2012-01-10 22:26:12.000000000 +0100
+--- src/os_unix.c      2012-02-05 22:40:22.000000000 +0100
+***************
+*** 2746,2751 ****
+--- 2746,2758 ----
+  #ifdef HAVE_POSIX_ACL
+      ret = (vim_acl_T)acl_get_file((char *)fname, ACL_TYPE_ACCESS);
+  #else
++ #ifdef HAVE_SOLARIS_ZFS_ACL
++     acl_t *aclent;
++ 
++     if (acl_get((char *)fname, 0, &aclent) < 0)
++      return NULL;
++     ret = (vim_acl_T)aclent;
++ #else
+  #ifdef HAVE_SOLARIS_ACL
+      vim_acl_solaris_T   *aclent;
+  
+***************
+*** 2791,2796 ****
+--- 2798,2804 ----
+      ret = (vim_acl_T)aclent;
+  #endif /* HAVE_AIX_ACL */
+  #endif /* HAVE_SOLARIS_ACL */
++ #endif /* HAVE_SOLARIS_ZFS_ACL */
+  #endif /* HAVE_POSIX_ACL */
+      return ret;
+  }
+***************
+*** 2808,2813 ****
+--- 2816,2824 ----
+  #ifdef HAVE_POSIX_ACL
+      acl_set_file((char *)fname, ACL_TYPE_ACCESS, (acl_t)aclent);
+  #else
++ #ifdef HAVE_SOLARIS_ZFS_ACL
++     acl_set((char *)fname, (acl_t *)aclent);
++ #else
+  #ifdef HAVE_SOLARIS_ACL
+      acl((char *)fname, SETACL, ((vim_acl_solaris_T *)aclent)->acl_cnt,
+           ((vim_acl_solaris_T *)aclent)->acl_entry);
+***************
+*** 2816,2821 ****
+--- 2827,2833 ----
+      chacl((char *)fname, aclent, ((struct acl *)aclent)->acl_len);
+  #endif /* HAVE_AIX_ACL */
+  #endif /* HAVE_SOLARIS_ACL */
++ #endif /* HAVE_SOLARIS_ZFS_ACL */
+  #endif /* HAVE_POSIX_ACL */
+  }
+  
+***************
+*** 2828,2833 ****
+--- 2840,2848 ----
+  #ifdef HAVE_POSIX_ACL
+      acl_free((acl_t)aclent);
+  #else
++ #ifdef HAVE_SOLARIS_ZFS_ACL
++     acl_free((acl_t *)aclent);
++ #else
+  #ifdef HAVE_SOLARIS_ACL
+      free(((vim_acl_solaris_T *)aclent)->acl_entry);
+      free(aclent);
+***************
+*** 2836,2841 ****
+--- 2851,2857 ----
+      free(aclent);
+  #endif /* HAVE_AIX_ACL */
+  #endif /* HAVE_SOLARIS_ACL */
++ #endif /* HAVE_SOLARIS_ZFS_ACL */
+  #endif /* HAVE_POSIX_ACL */
+  }
+  #endif
+*** ../vim-7.3.431/src/version.c       2012-02-05 22:05:44.000000000 +0100
+--- src/version.c      2012-02-05 22:44:10.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     432,
+  /**/
+
+-- 
+If you put 7 of the most talented OSS developers in a room for a week
+and asked them to fix a bug in a spreadsheet program, in 1 week
+you'd have 2 new mail readers and a text-based web browser.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.433.patch0 b/vim/patches/vim-7.3.433.patch0
new file mode 100644 (file)
index 0000000..bb83828
--- /dev/null
@@ -0,0 +1,92 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.433
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.433
+Problem:    Using continued lines in a Vim script can be slow.
+Solution:   Instead of reallocating for every line use a growarray. (Yasuhiro
+            Matsumoto)
+Files:      src/ex_cmds2.c
+
+
+*** ../vim-7.3.432/src/ex_cmds2.c      2012-02-04 21:57:44.000000000 +0100
+--- src/ex_cmds2.c     2012-02-05 23:06:31.000000000 +0100
+***************
+*** 3439,3460 ****
+      {
+       /* compensate for the one line read-ahead */
+       --sourcing_lnum;
+!      for (;;)
+       {
+!          sp->nextline = get_one_sourceline(sp);
+!          if (sp->nextline == NULL)
+!              break;
+!          p = skipwhite(sp->nextline);
+!          if (*p != '\\')
+!              break;
+!          s = alloc((unsigned)(STRLEN(line) + STRLEN(p)));
+!          if (s == NULL)      /* out of memory */
+!              break;
+!          STRCPY(s, line);
+!          STRCAT(s, p + 1);
+           vim_free(line);
+!          line = s;
+!          vim_free(sp->nextline);
+       }
+      }
+  
+--- 3439,3470 ----
+      {
+       /* compensate for the one line read-ahead */
+       --sourcing_lnum;
+! 
+!      /* Get the next line and concatenate it when it starts with a
+!       * backslash. We always need to read the next line, keep it in
+!       * sp->nextline. */
+!      sp->nextline = get_one_sourceline(sp);
+!      if (sp->nextline != NULL && *(p = skipwhite(sp->nextline)) == '\\')
+       {
+!          garray_T    ga;
+! 
+!          ga_init2(&ga, (int)sizeof(char_u), 200);
+!          ga_concat(&ga, line);
+!          ga_concat(&ga, p + 1);
+!          for (;;)
+!          {
+!              vim_free(sp->nextline);
+!              sp->nextline = get_one_sourceline(sp);
+!              if (sp->nextline == NULL)
+!                  break;
+!              p = skipwhite(sp->nextline);
+!              if (*p != '\\')
+!                  break;
+!              ga_concat(&ga, p + 1);
+!          }
+!          ga_append(&ga, NUL);
+           vim_free(line);
+!          line = ga.ga_data;
+       }
+      }
+  
+*** ../vim-7.3.432/src/version.c       2012-02-05 22:51:27.000000000 +0100
+--- src/version.c      2012-02-05 23:09:21.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     433,
+  /**/
+
+-- 
+Due knot trussed yore spell chequer two fined awl miss steaks.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.434.patch0 b/vim/patches/vim-7.3.434.patch0
new file mode 100644 (file)
index 0000000..52c14b9
--- /dev/null
@@ -0,0 +1,233 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.434
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.434
+Problem:    Using join() can be slow.
+Solution:   Compute the size of the result before allocation to avoid a lot of
+            allocations and copies. (Taro Muraoka)
+Files:      src/eval.c
+
+
+*** ../vim-7.3.433/src/eval.c  2012-02-05 00:39:14.000000000 +0100
+--- src/eval.c 2012-02-06 00:05:31.000000000 +0100
+***************
+*** 442,447 ****
+--- 442,448 ----
+  static list_T *list_copy __ARGS((list_T *orig, int deep, int copyID));
+  static void list_remove __ARGS((list_T *l, listitem_T *item, listitem_T *item2));
+  static char_u *list2string __ARGS((typval_T *tv, int copyID));
++ static int list_join_inner __ARGS((garray_T *gap, list_T *l, char_u *sep, int echo_style, int copyID, garray_T *join_gap));
+  static int list_join __ARGS((garray_T *gap, list_T *l, char_u *sep, int echo, int copyID));
+  static int free_unref_items __ARGS((int copyID));
+  static void set_ref_in_ht __ARGS((hashtab_T *ht, int copyID));
+***************
+*** 6571,6617 ****
+      return (char_u *)ga.ga_data;
+  }
+  
+! /*
+!  * Join list "l" into a string in "*gap", using separator "sep".
+!  * When "echo_style" is TRUE use String as echoed, otherwise as inside a List.
+!  * Return FAIL or OK.
+!  */
+      static int
+! list_join(gap, l, sep, echo_style, copyID)
+!     garray_T *gap;
+      list_T   *l;
+      char_u   *sep;
+      int              echo_style;
+      int              copyID;
+  {
+      int              first = TRUE;
+      char_u   *tofree;
+      char_u   numbuf[NUMBUFLEN];
+      listitem_T       *item;
+      char_u   *s;
+  
+      for (item = l->lv_first; item != NULL && !got_int; item = item->li_next)
+      {
+-      if (first)
+-          first = FALSE;
+-      else
+-          ga_concat(gap, sep);
+- 
+       if (echo_style)
+           s = echo_string(&item->li_tv, &tofree, numbuf, copyID);
+       else
+           s = tv2string(&item->li_tv, &tofree, numbuf, copyID);
+-      if (s != NULL)
+-          ga_concat(gap, s);
+-      vim_free(tofree);
+       if (s == NULL)
+           return FAIL;
+       line_breakcheck();
+      }
+      return OK;
+  }
+  
+  /*
+   * Garbage collection for lists and dictionaries.
+   *
+   * We use reference counts to be able to free most items right away when they
+--- 6572,6690 ----
+      return (char_u *)ga.ga_data;
+  }
+  
+! typedef struct join_S {
+!     char_u   *s;
+!     char_u   *tofree;
+! } join_T;
+! 
+      static int
+! list_join_inner(gap, l, sep, echo_style, copyID, join_gap)
+!     garray_T *gap;           /* to store the result in */
+      list_T   *l;
+      char_u   *sep;
+      int              echo_style;
+      int              copyID;
++     garray_T *join_gap;      /* to keep each list item string */
+  {
++     int              i;
++     join_T   *p;
++     int              len;
++     int              sumlen = 0;
+      int              first = TRUE;
+      char_u   *tofree;
+      char_u   numbuf[NUMBUFLEN];
+      listitem_T       *item;
+      char_u   *s;
+  
++     /* Stringify each item in the list. */
+      for (item = l->lv_first; item != NULL && !got_int; item = item->li_next)
+      {
+       if (echo_style)
+           s = echo_string(&item->li_tv, &tofree, numbuf, copyID);
+       else
+           s = tv2string(&item->li_tv, &tofree, numbuf, copyID);
+       if (s == NULL)
+           return FAIL;
++ 
++      len = (int)STRLEN(s);
++      sumlen += len;
++ 
++      ga_grow(join_gap, 1);
++      p = ((join_T *)join_gap->ga_data) + (join_gap->ga_len++);
++      if (tofree != NULL || s != numbuf)
++      {
++          p->s = s;
++          p->tofree = tofree;
++      }
++      else
++      {
++          p->s = vim_strnsave(s, len);
++          p->tofree = p->s;
++      }
++ 
++      line_breakcheck();
++     }
++ 
++     /* Allocate result buffer with its total size, avoid re-allocation and
++      * multiple copy operations.  Add 2 for a tailing ']' and NUL. */
++     if (join_gap->ga_len >= 2)
++      sumlen += (int)STRLEN(sep) * (join_gap->ga_len - 1);
++     if (ga_grow(gap, sumlen + 2) == FAIL)
++      return FAIL;
++ 
++     for (i = 0; i < join_gap->ga_len && !got_int; ++i)
++     {
++      if (first)
++          first = FALSE;
++      else
++          ga_concat(gap, sep);
++      p = ((join_T *)join_gap->ga_data) + i;
++ 
++      if (p->s != NULL)
++          ga_concat(gap, p->s);
+       line_breakcheck();
+      }
++ 
+      return OK;
+  }
+  
+  /*
++  * Join list "l" into a string in "*gap", using separator "sep".
++  * When "echo_style" is TRUE use String as echoed, otherwise as inside a List.
++  * Return FAIL or OK.
++  */
++     static int
++ list_join(gap, l, sep, echo_style, copyID)
++     garray_T *gap;
++     list_T   *l;
++     char_u   *sep;
++     int              echo_style;
++     int              copyID;
++ {
++     garray_T join_ga;
++     int              retval;
++     join_T   *p;
++     int              i;
++ 
++     ga_init2(&join_ga, (int)sizeof(join_T), l->lv_len);
++     retval = list_join_inner(gap, l, sep, echo_style, copyID, &join_ga);
++ 
++     /* Dispose each item in join_ga. */
++     if (join_ga.ga_data != NULL)
++     {
++      p = (join_T *)join_ga.ga_data;
++      for (i = 0; i < join_ga.ga_len; ++i)
++      {
++          vim_free(p->tofree);
++          ++p;
++      }
++      ga_clear(&join_ga);
++     }
++ 
++     return retval;
++ }
++ 
++ /*
+   * Garbage collection for lists and dictionaries.
+   *
+   * We use reference counts to be able to free most items right away when they
+***************
+*** 13406,13412 ****
+      char_u   *rhs;
+      int              mode;
+      int              abbr = FALSE;
+!     int         get_dict = FALSE;
+      mapblock_T       *mp;
+      int              buffer_local;
+  
+--- 13479,13485 ----
+      char_u   *rhs;
+      int              mode;
+      int              abbr = FALSE;
+!     int              get_dict = FALSE;
+      mapblock_T       *mp;
+      int              buffer_local;
+  
+*** ../vim-7.3.433/src/version.c       2012-02-05 23:10:25.000000000 +0100
+--- src/version.c      2012-02-06 00:10:23.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     434,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+30. Even though you died last week, you've managed to retain OPS on your
+    favorite IRC channel.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.435.patch0 b/vim/patches/vim-7.3.435.patch0
new file mode 100644 (file)
index 0000000..e1b1370
--- /dev/null
@@ -0,0 +1,63 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.435
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.435
+Problem:    Compiler warning for unused variable.
+Solution:   Move the variable inside #ifdef.
+Files:      src/ex_cmds2.c
+
+
+*** ../vim-7.3.434/src/ex_cmds2.c      2012-02-05 23:10:25.000000000 +0100
+--- src/ex_cmds2.c     2012-02-06 06:16:28.000000000 +0100
+***************
+*** 3400,3406 ****
+  {
+      struct source_cookie *sp = (struct source_cookie *)cookie;
+      char_u           *line;
+!     char_u           *p, *s;
+  
+  #ifdef FEAT_EVAL
+      /* If breakpoints have been added/deleted need to check for it. */
+--- 3400,3406 ----
+  {
+      struct source_cookie *sp = (struct source_cookie *)cookie;
+      char_u           *line;
+!     char_u           *p;
+  
+  #ifdef FEAT_EVAL
+      /* If breakpoints have been added/deleted need to check for it. */
+***************
+*** 3471,3476 ****
+--- 3471,3478 ----
+  #ifdef FEAT_MBYTE
+      if (line != NULL && sp->conv.vc_type != CONV_NONE)
+      {
++      char_u  *s;
++ 
+       /* Convert the encoding of the script line. */
+       s = string_convert(&sp->conv, line, NULL);
+       if (s != NULL)
+*** ../vim-7.3.434/src/version.c       2012-02-06 00:13:16.000000000 +0100
+--- src/version.c      2012-02-11 20:38:49.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     435,
+  /**/
+
+-- 
+Light travels faster than sound.  This is why some people
+appear bright until you hear them speak
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.436.patch0 b/vim/patches/vim-7.3.436.patch0
new file mode 100644 (file)
index 0000000..777371c
--- /dev/null
@@ -0,0 +1,111 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.436
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.436
+Problem:    Compiler warnings for types on Windows.
+Solution:   Add type casts. (Mike Williams)
+Files:      src/eval.c
+
+
+*** ../vim-7.3.435/src/eval.c  2012-02-06 00:13:16.000000000 +0100
+--- src/eval.c 2012-02-11 20:38:16.000000000 +0100
+***************
+*** 14462,14468 ****
+                           --prevlen;
+               }
+               if (prevlen == 0)
+!                  s = vim_strnsave(start, len);
+               else
+               {
+                   /* Change "prev" buffer to be the right size.  This way
+--- 14462,14468 ----
+                           --prevlen;
+               }
+               if (prevlen == 0)
+!                  s = vim_strnsave(start, (int)len);
+               else
+               {
+                   /* Change "prev" buffer to be the right size.  This way
+***************
+*** 14529,14535 ****
+  
+                       if (dest < buf)
+                       {
+!                          adjust_prevlen = buf - dest; /* must be 1 or 2 */
+                           dest = buf;
+                       }
+                       if (readlen > p - buf + 1)
+--- 14529,14535 ----
+  
+                       if (dest < buf)
+                       {
+!                          adjust_prevlen = (int)(buf - dest); /* must be 1 or 2 */
+                           dest = buf;
+                       }
+                       if (readlen > p - buf + 1)
+***************
+*** 14558,14568 ****
+                * small, to avoid repeatedly 'allocing' large and
+                * 'reallocing' small. */
+               if (prevsize == 0)
+!                  prevsize = p - start;
+               else
+               {
+                   long grow50pc = (prevsize * 3) / 2;
+!                  long growmin  = (p - start) * 2 + prevlen;
+                   prevsize = grow50pc > growmin ? grow50pc : growmin;
+               }
+               if ((newprev = vim_realloc(prev, prevsize)) == NULL)
+--- 14558,14568 ----
+                * small, to avoid repeatedly 'allocing' large and
+                * 'reallocing' small. */
+               if (prevsize == 0)
+!                  prevsize = (long)(p - start);
+               else
+               {
+                   long grow50pc = (prevsize * 3) / 2;
+!                  long growmin  = (long)((p - start) * 2 + prevlen);
+                   prevsize = grow50pc > growmin ? grow50pc : growmin;
+               }
+               if ((newprev = vim_realloc(prev, prevsize)) == NULL)
+***************
+*** 14575,14581 ****
+           }
+           /* Add the line part to end of "prev". */
+           mch_memmove(prev + prevlen, start, p - start);
+!          prevlen += p - start;
+       }
+      } /* while */
+  
+--- 14575,14581 ----
+           }
+           /* Add the line part to end of "prev". */
+           mch_memmove(prev + prevlen, start, p - start);
+!          prevlen += (long)(p - start);
+       }
+      } /* while */
+  
+*** ../vim-7.3.435/src/version.c       2012-02-11 20:40:49.000000000 +0100
+--- src/version.c      2012-02-11 20:43:18.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     436,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+39. You move into a new house and decide to Netscape before you landscape.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.437.patch0 b/vim/patches/vim-7.3.437.patch0
new file mode 100644 (file)
index 0000000..889efe7
--- /dev/null
@@ -0,0 +1,73 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.437
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.437
+Problem:    Continue looping inside FOR_ALL_TAB_WINDOWS even when already done.
+Solution:   Use goto instead of break. (Hirohito Higashi)
+Files:      src/fileio.c, src/globals.h
+
+
+*** ../vim-7.3.436/src/fileio.c        2011-09-02 11:56:15.000000000 +0200
+--- src/fileio.c       2012-02-11 23:40:23.000000000 +0100
+***************
+*** 8898,8907 ****
+                   if (tp != curtab)
+                       goto_tabpage_tp(tp);
+                   win_goto(aucmd_win);
+!                  break;
+               }
+           }
+       }
+  
+       /* Remove the window and frame from the tree of frames. */
+       (void)winframe_remove(curwin, &dummy, NULL);
+--- 8898,8908 ----
+                   if (tp != curtab)
+                       goto_tabpage_tp(tp);
+                   win_goto(aucmd_win);
+!                  goto win_found;
+               }
+           }
+       }
++ win_found:
+  
+       /* Remove the window and frame from the tree of frames. */
+       (void)winframe_remove(curwin, &dummy, NULL);
+*** ../vim-7.3.436/src/globals.h       2012-02-04 23:34:57.000000000 +0100
+--- src/globals.h      2012-02-11 23:43:45.000000000 +0100
+***************
+*** 535,540 ****
+--- 535,544 ----
+  EXTERN win_T *prevwin INIT(= NULL);  /* previous window */
+  # define W_NEXT(wp) ((wp)->w_next)
+  # define FOR_ALL_WINDOWS(wp) for (wp = firstwin; wp != NULL; wp = wp->w_next)
++ /*
++  * When using this macro "break" only breaks out of the inner loop. Use "goto"
++  * to break out of the tabpage loop.
++  */
+  # define FOR_ALL_TAB_WINDOWS(tp, wp) \
+      for ((tp) = first_tabpage; (tp) != NULL; (tp) = (tp)->tp_next) \
+       for ((wp) = ((tp) == curtab) \
+*** ../vim-7.3.436/src/version.c       2012-02-11 20:44:01.000000000 +0100
+--- src/version.c      2012-02-11 23:40:47.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     437,
+  /**/
+
+-- 
+The future isn't what it used to be.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.438.patch0 b/vim/patches/vim-7.3.438.patch0
new file mode 100644 (file)
index 0000000..94786d7
--- /dev/null
@@ -0,0 +1,126 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.438
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.438
+Problem:    There is no way to avoid ":doautoall" reading modelines.
+Solution:   Add the <nomodeline> argument. Adjust documentation.
+Files:     src/fileio.c, runtime/doc/autocmd.txt
+
+
+*** ../vim-7.3.437/src/fileio.c        2012-02-11 23:45:30.000000000 +0100
+--- src/fileio.c       2012-02-12 00:08:17.000000000 +0100
+***************
+*** 8739,8744 ****
+--- 8739,8752 ----
+      int              retval;
+      aco_save_T       aco;
+      buf_T    *buf;
++     char_u   *arg = eap->arg;
++     int              call_do_modelines = TRUE;
++ 
++     if (STRNCMP(arg, "<nomodeline>", 12) == 0)
++     {
++      call_do_modelines = FALSE;
++      arg = skipwhite(arg + 12);
++     }
+  
+      /*
+       * This is a bit tricky: For some commands curwin->w_buffer needs to be
+***************
+*** 8755,8765 ****
+           aucmd_prepbuf(&aco, buf);
+  
+           /* execute the autocommands for this buffer */
+!          retval = do_doautocmd(eap->arg, FALSE);
+  
+!          /* Execute the modeline settings, but don't set window-local
+!           * options if we are using the current window for another buffer. */
+!          do_modelines(curwin == aucmd_win ? OPT_NOWIN : 0);
+  
+           /* restore the current window */
+           aucmd_restbuf(&aco);
+--- 8763,8777 ----
+           aucmd_prepbuf(&aco, buf);
+  
+           /* execute the autocommands for this buffer */
+!          retval = do_doautocmd(arg, FALSE);
+  
+!          if (call_do_modelines)
+!          {
+!              /* Execute the modeline settings, but don't set window-local
+!               * options if we are using the current window for another
+!               * buffer. */
+!              do_modelines(curwin == aucmd_win ? OPT_NOWIN : 0);
+!          }
+  
+           /* restore the current window */
+           aucmd_restbuf(&aco);
+*** ../vim-7.3.437/runtime/doc/autocmd.txt     2011-05-19 17:25:36.000000000 +0200
+--- runtime/doc/autocmd.txt    2012-02-12 00:03:45.000000000 +0100
+***************
+*** 1065,1077 ****
+                       autocommands for that group.  Note: if you use an
+                       undefined group name, Vim gives you an error message.
+  
+-                      After applying the autocommands the modelines are
+-                      processed, so that their settings overrule the
+-                      settings from autocommands, like what happens when
+-                      editing a file.
+- 
+                                               *:doautoa* *:doautoall*
+! :doautoa[ll] [group] {event} [fname]
+                       Like ":doautocmd", but apply the autocommands to each
+                       loaded buffer.  Note that [fname] is used to select
+                       the autocommands, not the buffers to which they are
+--- 1073,1080 ----
+                       autocommands for that group.  Note: if you use an
+                       undefined group name, Vim gives you an error message.
+  
+                                               *:doautoa* *:doautoall*
+! :doautoa[ll] [<nomodeline>] [group] {event} [fname]
+                       Like ":doautocmd", but apply the autocommands to each
+                       loaded buffer.  Note that [fname] is used to select
+                       the autocommands, not the buffers to which they are
+***************
+*** 1082,1087 ****
+--- 1085,1096 ----
+                       This command is intended for autocommands that set
+                       options, change highlighting, and things like that.
+  
++                      After applying the autocommands the modelines are
++                      processed, so that their settings overrule the
++                      settings from autocommands, like what happens when
++                      editing a file. This is skipped when the <nomodeline>
++                      argument is present.
++ 
+  ==============================================================================
+  10. Using autocommands                                       *autocmd-use*
+  
+*** ../vim-7.3.437/src/version.c       2012-02-11 23:45:30.000000000 +0100
+--- src/version.c      2012-02-12 00:16:04.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     438,
+  /**/
+
+-- 
+"Oh, no!  NOT the Spanish Inquisition!"
+"NOBODY expects the Spanish Inquisition!!!"
+                               -- Monty Python sketch --
+"Oh, no!  NOT another option!"
+"EVERYBODY expects another option!!!"
+                               -- Discussion in vim-dev mailing list --
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.439.patch0 b/vim/patches/vim-7.3.439.patch0
new file mode 100644 (file)
index 0000000..63d8f69
--- /dev/null
@@ -0,0 +1,87 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.439
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.439
+Problem:    Compiler warnings to size casts in Perl interface.
+Solution:   Use XS macros. (James McCoy)
+Files:      src/if_perl.xs, src/typemap
+
+
+*** ../vim-7.3.438/src/if_perl.xs      2011-09-07 18:47:19.000000000 +0200
+--- src/if_perl.xs     2012-02-12 00:28:52.000000000 +0100
+***************
+*** 611,617 ****
+      if (ptr->w_perl_private == NULL)
+      {
+       ptr->w_perl_private = newSV(0);
+!      sv_setiv(ptr->w_perl_private, (IV)ptr);
+      }
+      else
+       SvREFCNT_inc(ptr->w_perl_private);
+--- 611,617 ----
+      if (ptr->w_perl_private == NULL)
+      {
+       ptr->w_perl_private = newSV(0);
+!      sv_setiv(ptr->w_perl_private, PTR2IV(ptr));
+      }
+      else
+       SvREFCNT_inc(ptr->w_perl_private);
+***************
+*** 629,635 ****
+      if (ptr->b_perl_private == NULL)
+      {
+       ptr->b_perl_private = newSV(0);
+!      sv_setiv(ptr->b_perl_private, (IV)ptr);
+      }
+      else
+       SvREFCNT_inc(ptr->b_perl_private);
+--- 629,635 ----
+      if (ptr->b_perl_private == NULL)
+      {
+       ptr->b_perl_private = newSV(0);
+!      sv_setiv(ptr->b_perl_private, PTR2IV(ptr));
+      }
+      else
+       SvREFCNT_inc(ptr->b_perl_private);
+*** ../vim-7.3.438/src/typemap 2010-08-15 21:57:29.000000000 +0200
+--- src/typemap        2012-02-12 00:28:52.000000000 +0100
+***************
+*** 6,12 ****
+  T_VIOBJNOMUNGE
+       if (sv_isa($arg, \"${ntype}\")) {
+           IV tmp = SvIV((SV*)SvRV($arg));
+!          $var = ($type) tmp;
+           if (!tmp)
+               croak(\"$ntype no longer exists\");
+       }
+--- 6,12 ----
+  T_VIOBJNOMUNGE
+       if (sv_isa($arg, \"${ntype}\")) {
+           IV tmp = SvIV((SV*)SvRV($arg));
+!          $var = INT2PTR($type, tmp);
+           if (!tmp)
+               croak(\"$ntype no longer exists\");
+       }
+*** ../vim-7.3.438/src/version.c       2012-02-12 00:18:54.000000000 +0100
+--- src/version.c      2012-02-12 00:31:18.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     439,
+  /**/
+
+-- 
+Microsoft is to software what McDonalds is to gourmet cooking
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.440.patch0 b/vim/patches/vim-7.3.440.patch0
new file mode 100644 (file)
index 0000000..39313b0
--- /dev/null
@@ -0,0 +1,211 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.440
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.440
+Problem:    Vim does not support UTF8_STRING for the X selection.
+Solution:   Add UTF8_STRING atom support. (Alex Efros) Use it only when
+            'encoding' is set to Unicode.
+Files:      src/ui.c
+
+
+*** ../vim-7.3.439/src/ui.c    2012-02-04 21:57:44.000000000 +0100
+--- src/ui.c   2012-02-12 01:28:30.000000000 +0100
+***************
+*** 1917,1922 ****
+--- 1917,1923 ----
+  static Atom  vim_atom;       /* Vim's own special selection format */
+  #ifdef FEAT_MBYTE
+  static Atom  vimenc_atom;    /* Vim's extended selection format */
++ static Atom  utf8_atom;
+  #endif
+  static Atom  compound_text_atom;
+  static Atom  text_atom;
+***************
+*** 1930,1935 ****
+--- 1931,1937 ----
+      vim_atom        = XInternAtom(dpy, VIM_ATOM_NAME,   False);
+  #ifdef FEAT_MBYTE
+      vimenc_atom             = XInternAtom(dpy, VIMENC_ATOM_NAME,False);
++     utf8_atom               = XInternAtom(dpy, "UTF8_STRING",   False);
+  #endif
+      compound_text_atom = XInternAtom(dpy, "COMPOUND_TEXT", False);
+      text_atom               = XInternAtom(dpy, "TEXT",          False);
+***************
+*** 2074,2080 ****
+      }
+  #endif
+  
+!     else if (*type == compound_text_atom || (
+  #ifdef FEAT_MBYTE
+               enc_dbcs != 0 &&
+  #endif
+--- 2076,2086 ----
+      }
+  #endif
+  
+!     else if (*type == compound_text_atom
+! #ifdef FEAT_MBYTE
+!          || *type == utf8_atom
+! #endif
+!          || (
+  #ifdef FEAT_MBYTE
+               enc_dbcs != 0 &&
+  #endif
+***************
+*** 2128,2134 ****
+  #else
+           1
+  #endif
+!          ; i < 5; i++)
+      {
+       switch (i)
+       {
+--- 2134,2140 ----
+  #else
+           1
+  #endif
+!          ; i < 6; i++)
+      {
+       switch (i)
+       {
+***************
+*** 2136,2145 ****
+           case 0:  type = vimenc_atom;        break;
+  #endif
+           case 1:  type = vim_atom;           break;
+!          case 2:  type = compound_text_atom; break;
+!          case 3:  type = text_atom;          break;
+           default: type = XA_STRING;
+       }
+       success = MAYBE;
+       XtGetSelectionValue(myShell, cbd->sel_atom, type,
+           clip_x11_request_selection_cb, (XtPointer)&success, CurrentTime);
+--- 2142,2159 ----
+           case 0:  type = vimenc_atom;        break;
+  #endif
+           case 1:  type = vim_atom;           break;
+! #ifdef FEAT_MBYTE
+!          case 2:  type = utf8_atom;          break;
+! #endif
+!          case 3:  type = compound_text_atom; break;
+!          case 4:  type = text_atom;          break;
+           default: type = XA_STRING;
+       }
++ #ifdef FEAT_MBYTE
++      if (type == utf8_atom && !enc_utf8)
++          /* Only request utf-8 when 'encoding' is utf8. */
++          continue;
++ #endif
+       success = MAYBE;
+       XtGetSelectionValue(myShell, cbd->sel_atom, type,
+           clip_x11_request_selection_cb, (XtPointer)&success, CurrentTime);
+***************
+*** 2230,2247 ****
+      {
+       Atom *array;
+  
+!      if ((array = (Atom *)XtMalloc((unsigned)(sizeof(Atom) * 6))) == NULL)
+           return False;
+       *value = (XtPointer)array;
+       i = 0;
+-      array[i++] = XA_STRING;
+       array[i++] = targets_atom;
+  #ifdef FEAT_MBYTE
+       array[i++] = vimenc_atom;
+  #endif
+       array[i++] = vim_atom;
+       array[i++] = text_atom;
+       array[i++] = compound_text_atom;
+       *type = XA_ATOM;
+       /* This used to be: *format = sizeof(Atom) * 8; but that caused
+        * crashes on 64 bit machines. (Peter Derr) */
+--- 2244,2266 ----
+      {
+       Atom *array;
+  
+!      if ((array = (Atom *)XtMalloc((unsigned)(sizeof(Atom) * 7))) == NULL)
+           return False;
+       *value = (XtPointer)array;
+       i = 0;
+       array[i++] = targets_atom;
+  #ifdef FEAT_MBYTE
+       array[i++] = vimenc_atom;
+  #endif
+       array[i++] = vim_atom;
++ #ifdef FEAT_MBYTE
++      if (enc_utf8)
++          array[i++] = utf8_atom;
++ #endif
++      array[i++] = XA_STRING;
+       array[i++] = text_atom;
+       array[i++] = compound_text_atom;
++ 
+       *type = XA_ATOM;
+       /* This used to be: *format = sizeof(Atom) * 8; but that caused
+        * crashes on 64 bit machines. (Peter Derr) */
+***************
+*** 2253,2258 ****
+--- 2272,2278 ----
+      if (       *target != XA_STRING
+  #ifdef FEAT_MBYTE
+           && *target != vimenc_atom
++          && *target != utf8_atom
+  #endif
+           && *target != vim_atom
+           && *target != text_atom
+***************
+*** 2282,2294 ****
+       return False;
+      }
+  
+!     if (*target == XA_STRING)
+      {
+       mch_memmove(result, string, (size_t)(*length));
+!      *type = XA_STRING;
+      }
+!     else if (*target == compound_text_atom
+!          || *target == text_atom)
+      {
+       XTextProperty   text_prop;
+       char            *string_nt = (char *)alloc((unsigned)*length + 1);
+--- 2302,2317 ----
+       return False;
+      }
+  
+!     if (*target == XA_STRING
+! #ifdef FEAT_MBYTE
+!          || (*target == utf8_atom && enc_utf8)
+! #endif
+!          )
+      {
+       mch_memmove(result, string, (size_t)(*length));
+!      *type = *target;
+      }
+!     else if (*target == compound_text_atom || *target == text_atom)
+      {
+       XTextProperty   text_prop;
+       char            *string_nt = (char *)alloc((unsigned)*length + 1);
+*** ../vim-7.3.439/src/version.c       2012-02-12 00:31:47.000000000 +0100
+--- src/version.c      2012-02-12 01:34:22.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     440,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+42. Your virtual girlfriend finds a new net sweetheart with a larger bandwidth.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.441.patch0 b/vim/patches/vim-7.3.441.patch0
new file mode 100644 (file)
index 0000000..9a7539b
--- /dev/null
@@ -0,0 +1,341 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.441
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.441
+Problem:    Newer versions of MzScheme (Racket) require earlier (trampolined)
+            initialisation.
+Solution:   Call mzscheme_main() early in main(). (Sergey Khorev)
+Files:      src/Make_mvc.mak, src/if_mzsch.c, src/main.c,
+            src/proto/if_mzsch.pro
+    
+
+*** ../vim-7.3.440/src/Make_mvc.mak    2011-09-14 19:01:38.000000000 +0200
+--- src/Make_mvc.mak   2012-02-12 01:46:05.000000000 +0100
+***************
+*** 740,745 ****
+--- 740,747 ----
+  !endif
+  !endif
+  MZSCHEME_OBJ = $(OUTDIR)\if_mzsch.obj
++ # increase stack size
++ MZSCHEME_LIB = $(MZSCHEME_LIB) /STACK:8388608
+  !endif
+  
+  # Perl interface
+*** ../vim-7.3.440/src/if_mzsch.c      2010-11-03 21:59:23.000000000 +0100
+--- src/if_mzsch.c     2012-02-12 01:47:31.000000000 +0100
+***************
+*** 31,38 ****
+   * depend". */
+  #if defined(FEAT_MZSCHEME) || defined(PROTO)
+  
+- #include <assert.h>
+- 
+  /* Base data structures */
+  #define SCHEME_VIMBUFFERP(obj)  SAME_TYPE(SCHEME_TYPE(obj), mz_buffer_type)
+  #define SCHEME_VIMWINDOWP(obj)  SAME_TYPE(SCHEME_TYPE(obj), mz_window_type)
+--- 31,36 ----
+***************
+*** 559,575 ****
+      hMzSch = vimLoadLib(sch_dll);
+      hMzGC = vimLoadLib(gc_dll);
+  
+!     if (!hMzSch)
+      {
+       if (verbose)
+!          EMSG2(_(e_loadlib), sch_dll);
+       return FAIL;
+      }
+  
+!     if (!hMzGC)
+      {
+       if (verbose)
+!          EMSG2(_(e_loadlib), gc_dll);
+       return FAIL;
+      }
+  
+--- 557,573 ----
+      hMzSch = vimLoadLib(sch_dll);
+      hMzGC = vimLoadLib(gc_dll);
+  
+!     if (!hMzGC)
+      {
+       if (verbose)
+!          EMSG2(_(e_loadlib), gc_dll);
+       return FAIL;
+      }
+  
+!     if (!hMzSch)
+      {
+       if (verbose)
+!          EMSG2(_(e_loadlib), sch_dll);
+       return FAIL;
+      }
+  
+***************
+*** 798,862 ****
+  static __declspec(thread) void *tls_space;
+  #endif
+  
+!     void
+! mzscheme_main(void)
+  {
+  #if MZSCHEME_VERSION_MAJOR >= 500 && defined(WIN32) && defined(USE_THREAD_LOCAL)
+      scheme_register_tls_space(&tls_space, 0);
+  #endif
+! #if defined(MZ_PRECISE_GC) && MZSCHEME_VERSION_MAJOR >= 400
+!     /* use trampoline for precise GC in MzScheme >= 4.x */
+!     scheme_main_setup(TRUE, mzscheme_env_main, 0, NULL);
+  #else
+!     mzscheme_env_main(NULL, 0, NULL);
+  #endif
+  }
+  
+      static int
+! mzscheme_env_main(Scheme_Env *env, int argc UNUSED, char **argv UNUSED)
+  {
+!     /* neither argument nor return values are used */
+! #ifdef MZ_PRECISE_GC
+! # if MZSCHEME_VERSION_MAJOR < 400
+!     /*
+!      * Starting from version 4.x, embedding applications must use
+!      * scheme_main_setup/scheme_main_stack_setup trampolines
+!      * rather than setting stack base directly with scheme_set_stack_base
+!      */
+      Scheme_Object   *dummy = NULL;
+      MZ_GC_DECL_REG(1);
+      MZ_GC_VAR_IN_REG(0, dummy);
+  
+      stack_base = &__gc_var_stack__;
+  # else
+-     /* environment has been created by us by Scheme */
+-     environment = env;
+- # endif
+-     /*
+-      * In 4.x, all activities must be performed inside trampoline
+-      * so we are forced to initialise GC immediately
+-      * This can be postponed in 3.x but I see no point in implementing
+-      * a feature which will work in older versions only.
+-      * One would better use conservative GC if he needs dynamic MzScheme
+-      */
+-     mzscheme_init();
+- #else
+      int dummy = 0;
+      stack_base = (void *)&dummy;
+  #endif
+!     main_loop(FALSE, FALSE);
+! #if defined(MZ_PRECISE_GC) && MZSCHEME_VERSION_MAJOR < 400
+      /* releasing dummy */
+      MZ_GC_REG();
+      MZ_GC_UNREG();
+  #endif
+!     return 0;
+  }
+  
+      static void
+  startup_mzscheme(void)
+  {
+! #if !defined(MZ_PRECISE_GC) || MZSCHEME_VERSION_MAJOR < 400
+      scheme_set_stack_base(stack_base, 1);
+  #endif
+  
+--- 796,863 ----
+  static __declspec(thread) void *tls_space;
+  #endif
+  
+! /*
+!  * Since version 4.x precise GC requires trampolined startup.
+!  * Futures and places in version 5.x need it too.
+!  */
+! #if defined(MZ_PRECISE_GC) && MZSCHEME_VERSION_MAJOR >= 400 \
+!     || MZSCHEME_VERSION_MAJOR >= 500 && (defined(MZ_USE_FUTURES) || defined(MZ_USE_PLACES))
+! # ifdef DYNAMIC_MZSCHEME
+! #  error Precise GC v.4+ or Racket with futures/places do not support dynamic MzScheme
+! # endif
+! # define TRAMPOLINED_MZVIM_STARTUP
+! #endif
+! 
+!     int
+! mzscheme_main(int argc, char** argv)
+  {
+  #if MZSCHEME_VERSION_MAJOR >= 500 && defined(WIN32) && defined(USE_THREAD_LOCAL)
+      scheme_register_tls_space(&tls_space, 0);
+  #endif
+! #ifdef TRAMPOLINED_MZVIM_STARTUP
+!     return scheme_main_setup(TRUE, mzscheme_env_main, argc, argv);
+  #else
+!     return mzscheme_env_main(NULL, argc, argv);
+  #endif
+  }
+  
+      static int
+! mzscheme_env_main(Scheme_Env *env, int argc, char **argv)
+  {
+!     int vim_main_result;
+! #ifdef TRAMPOLINED_MZVIM_STARTUP
+!     /* Scheme has created the environment for us */
+!     environment = env;
+! #else
+! # ifdef MZ_PRECISE_GC
+      Scheme_Object   *dummy = NULL;
+      MZ_GC_DECL_REG(1);
+      MZ_GC_VAR_IN_REG(0, dummy);
+  
+      stack_base = &__gc_var_stack__;
+  # else
+      int dummy = 0;
+      stack_base = (void *)&dummy;
++ # endif
+  #endif
+! 
+!     /* mzscheme_main is called as a trampoline from main.
+!      * We trampoline into vim_main2
+!      * Passing argc, argv through from mzscheme_main
+!      */
+!     vim_main_result = vim_main2(argc, argv);
+! #if !defined(TRAMPOLINED_MZVIM_STARTUP) && defined(MZ_PRECISE_GC)
+      /* releasing dummy */
+      MZ_GC_REG();
+      MZ_GC_UNREG();
+  #endif
+!     return vim_main_result;
+  }
+  
+      static void
+  startup_mzscheme(void)
+  {
+! #ifndef TRAMPOLINED_MZVIM_STARTUP
+      scheme_set_stack_base(stack_base, 1);
+  #endif
+  
+***************
+*** 868,874 ****
+      MZ_REGISTER_STATIC(exn_message);
+      MZ_REGISTER_STATIC(vim_exn);
+  
+! #if !defined(MZ_PRECISE_GC) || MZSCHEME_VERSION_MAJOR < 400
+      /* in newer versions of precise GC the initial env has been created */
+      environment = scheme_basic_env();
+  #endif
+--- 869,875 ----
+      MZ_REGISTER_STATIC(exn_message);
+      MZ_REGISTER_STATIC(vim_exn);
+  
+! #ifndef TRAMPOLINED_MZVIM_STARTUP
+      /* in newer versions of precise GC the initial env has been created */
+      environment = scheme_basic_env();
+  #endif
+***************
+*** 3013,3019 ****
+       MZ_GC_REG();
+  
+       tmp = scheme_make_struct_names(exn_name, scheme_null, 0, &nc);
+-      assert(nc <= 5);
+       mch_memmove(exn_names, tmp, nc * sizeof(Scheme_Object *));
+       MZ_GC_CHECK();
+  
+--- 3014,3019 ----
+*** ../vim-7.3.440/src/main.c  2011-12-08 15:57:54.000000000 +0100
+--- src/main.c 2012-02-12 01:49:50.000000000 +0100
+***************
+*** 554,559 ****
+--- 554,584 ----
+      debug_break_level = params.use_debug_break_level;
+  #endif
+  
++ #ifdef FEAT_MZSCHEME
++     /*
++      * Newer version of MzScheme (Racket) require earlier (trampolined)
++      * initialisation via scheme_main_setup.
++      * Implement this by initialising it as early as possible
++      * and splitting off remaining Vim main into vim_main2
++      */
++     {
++      /* Pack up preprocessed command line arguments.
++       * It is safe because Scheme does not access argc/argv. */
++      char *args[2];
++      args[0] = (char *)fname;
++      args[1] = (char *)&params;
++      return mzscheme_main(2, args);
++     }
++ }
++ 
++ int vim_main2(int argc, char **argv)
++ {
++     char_u   *fname = (char_u *)argv[0];
++     mparm_T  params;
++ 
++     memcpy(&params, argv[1], sizeof(params));
++ #endif
++ 
+      /* Execute --cmd arguments. */
+      exe_pre_commands(&params);
+  
+***************
+*** 957,970 ****
+  
+      /*
+       * Call the main command loop.  This never returns.
+!      * For embedded MzScheme the main_loop will be called by Scheme
+!      * for proper stack tracking
+!      */
+! #ifndef FEAT_MZSCHEME
+      main_loop(FALSE, FALSE);
+- #else
+-     mzscheme_main();
+- #endif
+  
+      return 0;
+  }
+--- 982,989 ----
+  
+      /*
+       * Call the main command loop.  This never returns.
+!     */
+      main_loop(FALSE, FALSE);
+  
+      return 0;
+  }
+*** ../vim-7.3.440/src/proto/if_mzsch.pro      2010-08-15 21:57:28.000000000 +0200
+--- src/proto/if_mzsch.pro     2012-02-12 01:50:57.000000000 +0100
+***************
+*** 14,19 ****
+  void mzvim_reset_timer __ARGS((void));
+  void *mzvim_eval_string __ARGS((char_u *str));
+  int mzthreads_allowed __ARGS((void));
+! void mzscheme_main __ARGS((void));
+  void do_mzeval __ARGS((char_u *str, typval_T *rettv));
+  /* vim: set ft=c : */
+--- 14,20 ----
+  void mzvim_reset_timer __ARGS((void));
+  void *mzvim_eval_string __ARGS((char_u *str));
+  int mzthreads_allowed __ARGS((void));
+! int mzscheme_main __ARGS((int argc, char **argv));
+  void do_mzeval __ARGS((char_u *str, typval_T *rettv));
++ int vim_main2 __ARGS((int argc, char **argv));
+  /* vim: set ft=c : */
+*** ../vim-7.3.440/src/version.c       2012-02-12 01:35:06.000000000 +0100
+--- src/version.c      2012-02-12 01:54:14.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     441,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+43. You tell the kids they can't use the computer because "Daddy's got work to
+    do" and you don't even have a job.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.442.patch0 b/vim/patches/vim-7.3.442.patch0
new file mode 100644 (file)
index 0000000..58b58b4
--- /dev/null
@@ -0,0 +1,186 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.442
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.442 (after 7.3.438) 
+Problem:    Still read modelines for ":doautocmd". 
+Solution:   Move check for <nomodeline> to separate function. 
+Files:      src/fileio.c, src/ex_docmd.c, src/proto/fileio.pro, 
+            runtime/doc/autocmd.txt 
+
+
+*** ../vim-7.3.441/src/fileio.c        2012-02-12 00:18:54.000000000 +0100
+--- src/fileio.c       2012-02-12 20:05:35.000000000 +0100
+***************
+*** 8740,8752 ****
+      aco_save_T       aco;
+      buf_T    *buf;
+      char_u   *arg = eap->arg;
+!     int              call_do_modelines = TRUE;
+! 
+!     if (STRNCMP(arg, "<nomodeline>", 12) == 0)
+!     {
+!      call_do_modelines = FALSE;
+!      arg = skipwhite(arg + 12);
+!     }
+  
+      /*
+       * This is a bit tricky: For some commands curwin->w_buffer needs to be
+--- 8740,8746 ----
+      aco_save_T       aco;
+      buf_T    *buf;
+      char_u   *arg = eap->arg;
+!     int              call_do_modelines = check_nomodeline(&arg);
+  
+      /*
+       * This is a bit tricky: For some commands curwin->w_buffer needs to be
+***************
+*** 8786,8791 ****
+--- 8780,8802 ----
+  }
+  
+  /*
++  * Check *argp for <nomodeline>.  When it is present return FALSE, otherwise
++  * return TRUE and advance *argp to after it.
++  * Thus return TRUE when do_modelines() should be called.
++  */
++     int
++ check_nomodeline(argp)
++     char_u **argp;
++ {
++     if (STRNCMP(*argp, "<nomodeline>", 12) == 0)
++     {
++      *argp = skipwhite(*argp + 12);
++      return FALSE;
++     }
++     return TRUE;
++ }
++ 
++ /*
+   * Prepare for executing autocommands for (hidden) buffer "buf".
+   * Search for a visible window containing the current buffer.  If there isn't
+   * one then use "aucmd_win".
+*** ../vim-7.3.441/src/ex_docmd.c      2012-01-26 20:41:22.000000000 +0100
+--- src/ex_docmd.c     2012-02-12 20:05:18.000000000 +0100
+***************
+*** 4955,4961 ****
+      map_clear(eap->cmd, eap->arg, TRUE, TRUE);
+  }
+  
+! #ifdef FEAT_AUTOCMD
+      static void
+  ex_autocmd(eap)
+      exarg_T  *eap;
+--- 4955,4961 ----
+      map_clear(eap->cmd, eap->arg, TRUE, TRUE);
+  }
+  
+! #if defined(FEAT_AUTOCMD) || defined(PROTO)
+      static void
+  ex_autocmd(eap)
+      exarg_T  *eap;
+***************
+*** 4982,4989 ****
+  ex_doautocmd(eap)
+      exarg_T  *eap;
+  {
+!     (void)do_doautocmd(eap->arg, TRUE);
+!     do_modelines(0);
+  }
+  #endif
+  
+--- 4982,4993 ----
+  ex_doautocmd(eap)
+      exarg_T  *eap;
+  {
+!     char_u   *arg = eap->arg;
+!     int              call_do_modelines = check_nomodeline(&arg);
+! 
+!     (void)do_doautocmd(arg, TRUE);
+!     if (call_do_modelines)  /* Only when there is no <nomodeline>. */
+!      do_modelines(0);
+  }
+  #endif
+  
+*** ../vim-7.3.441/src/proto/fileio.pro        2010-12-17 16:27:10.000000000 +0100
+--- src/proto/fileio.pro       2012-02-12 20:05:26.000000000 +0100
+***************
+*** 35,40 ****
+--- 35,41 ----
+  void do_autocmd __ARGS((char_u *arg, int forceit));
+  int do_doautocmd __ARGS((char_u *arg, int do_msg));
+  void ex_doautoall __ARGS((exarg_T *eap));
++ int check_nomodeline __ARGS((char_u **argp));
+  void aucmd_prepbuf __ARGS((aco_save_T *aco, buf_T *buf));
+  void aucmd_restbuf __ARGS((aco_save_T *aco));
+  int apply_autocmds __ARGS((event_T event, char_u *fname, char_u *fname_io, int force, buf_T *buf));
+*** ../vim-7.3.441/runtime/doc/autocmd.txt     2012-02-12 00:18:54.000000000 +0100
+--- runtime/doc/autocmd.txt    2012-02-12 20:11:05.000000000 +0100
+***************
+*** 1064,1069 ****
+--- 1072,1085 ----
+                       argument is included, Vim executes only the matching
+                       autocommands for that group.  Note: if you use an
+                       undefined group name, Vim gives you an error message.
++                                                      *<nomodeline>*
++                      After applying the autocommands the modelines are
++                      processed, so that their settings overrule the
++                      settings from autocommands, like what happens when
++                      editing a file. This is skipped when the <nomodeline>
++                      argument is present. You probably want to use
++                      <nomodeline> for events that are not used when loading
++                      a buffer, such as |User|.
+  
+                                               *:doautoa* *:doautoall*
+  :doautoa[ll] [<nomodeline>] [group] {event} [fname]
+***************
+*** 1077,1088 ****
+                       This command is intended for autocommands that set
+                       options, change highlighting, and things like that.
+  
+-                      After applying the autocommands the modelines are
+-                      processed, so that their settings overrule the
+-                      settings from autocommands, like what happens when
+-                      editing a file. This is skipped when the <nomodeline>
+-                      argument is present.
+- 
+  ==============================================================================
+  10. Using autocommands                                       *autocmd-use*
+  
+--- 1093,1098 ----
+*** ../vim-7.3.441/src/version.c       2012-02-12 01:55:50.000000000 +0100
+--- src/version.c      2012-02-12 20:11:34.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     442,
+  /**/
+
+-- 
+The real
+trick is
+this: to
+keep the
+lines as
+short as
+possible
+and keep
+the size
+the same
+yet free
+from the
+need for
+hyphena-
+Dammit!!  (Matthew Winn)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.443.patch0 b/vim/patches/vim-7.3.443.patch0
new file mode 100644 (file)
index 0000000..84b45ba
--- /dev/null
@@ -0,0 +1,206 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.443
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.443
+Problem:    MS-Windows: 'shcf' and 'shellxquote' defaults are not very good.
+Solution:   Make a better guess when 'shell' is set to "cmd.exe". (Ben Fritz)
+Files:      src/option.c, runtime/doc/options.txt
+
+
+*** ../vim-7.3.442/src/option.c        2012-01-28 18:03:30.000000000 +0100
+--- src/option.c       2012-02-12 23:17:55.000000000 +0100
+***************
+*** 3883,3889 ****
+  
+  #if defined(MSDOS) || defined(WIN3264) || defined(OS2)
+      /*
+!      * Set 'shellcmdflag and 'shellquote' depending on the 'shell' option.
+       * This is done after other initializations, where 'shell' might have been
+       * set, but only if they have not been set before.  Default for p_shcf is
+       * "/c", for p_shq is "".  For "sh" like  shells it is changed here to
+--- 3883,3890 ----
+  
+  #if defined(MSDOS) || defined(WIN3264) || defined(OS2)
+      /*
+!      * Set 'shellcmdflag', 'shellxquote', and 'shellquote' depending on the
+!      * 'shell' option.
+       * This is done after other initializations, where 'shell' might have been
+       * set, but only if they have not been set before.  Default for p_shcf is
+       * "/c", for p_shq is "".  For "sh" like  shells it is changed here to
+***************
+*** 3920,3925 ****
+--- 3921,3962 ----
+  #  endif
+  # endif
+      }
++     else if (strstr((char *)gettail(p_sh), "cmd.exe") != NULL)
++     {
++      int     idx3;
++ 
++      /*
++       * cmd.exe on Windows will strip the first and last double quote given
++       * on the command line, e.g. most of the time things like:
++       *   cmd /c "my path/to/echo" "my args to echo"
++       * become:
++       *   my path/to/echo" "my args to echo
++       * when executed.
++       *
++       * To avoid this, use the /s argument in addition to /c to force the
++       * stripping behavior, and also set shellxquote to automatically
++       * surround the entire command in quotes (which get stripped as
++       * noted).
++       */
++ 
++      /* Set shellxquote default to add the quotes to be stripped. */
++      idx3 = findoption((char_u *)"sxq");
++      if (idx3 >= 0 && !(options[idx3].flags & P_WAS_SET))
++      {
++          p_sxq = (char_u *)"\"";
++          options[idx3].def_val[VI_DEFAULT] = p_sxq;
++      }
++ 
++      /* Set shellcmdflag default to always strip the quotes, note the order
++       * between /s and /c is important or cmd.exe will treat the /s as part
++       * of the command to be executed.  */
++      idx3 = findoption((char_u *)"shcf");
++      if (idx3 >= 0 && !(options[idx3].flags & P_WAS_SET))
++      {
++          p_shcf = (char_u *)"/s /c";
++          options[idx3].def_val[VI_DEFAULT] = p_shcf;
++      }
++     }
+  #endif
+  
+  #ifdef FEAT_TITLE
+*** ../vim-7.3.442/runtime/doc/options.txt     2011-06-26 05:36:07.000000000 +0200
+--- runtime/doc/options.txt    2012-02-12 23:21:59.000000000 +0100
+***************
+*** 5880,5895 ****
+       security reasons.
+  
+                                               *'shellcmdflag'* *'shcf'*
+! 'shellcmdflag' 'shcf'        string  (default: "-c", MS-DOS and Win32, when 'shell'
+!                                      does not contain "sh" somewhere: "/c")
+                       global
+                       {not in Vi}
+       Flag passed to the shell to execute "!" and ":!" commands; e.g.,
+       "bash.exe -c ls" or "command.com /c dir".  For the MS-DOS-like
+       systems, the default is set according to the value of 'shell', to
+       reduce the need to set this option by the user.  It's not used for
+!      OS/2 (EMX figures this out itself).  See |option-backslash| about
+!      including spaces and backslashes.  See |dos-shell|.
+       This option cannot be set from a |modeline| or in the |sandbox|, for
+       security reasons.
+  
+--- 5899,5919 ----
+       security reasons.
+  
+                                               *'shellcmdflag'* *'shcf'*
+! 'shellcmdflag' 'shcf'        string  (default: "-c";
+!                               Win32, when 'shell' is cmd.exe: "/s /c";
+!                               MS-DOS and Win32, when 'shell' neither is
+!                               cmd.exe nor contains "sh" somewhere: "/c")
+                       global
+                       {not in Vi}
+       Flag passed to the shell to execute "!" and ":!" commands; e.g.,
+       "bash.exe -c ls" or "command.com /c dir".  For the MS-DOS-like
+       systems, the default is set according to the value of 'shell', to
+       reduce the need to set this option by the user.  It's not used for
+!      OS/2 (EMX figures this out itself).
+!      On Unix it can have more than one flag.  Each white space separated
+!      part is passed as an argument to the shell command.
+!      See |option-backslash| about including spaces and backslashes.
+!      Also see |dos-shell| for MS-DOS and MS-Windows.
+       This option cannot be set from a |modeline| or in the |sandbox|, for
+       security reasons.
+  
+***************
+*** 5910,5918 ****
+       For Unix the default it "| tee".  The stdout of the compiler is saved
+       in a file and echoed to the screen.  If the 'shell' option is "csh" or
+       "tcsh" after initializations, the default becomes "|& tee".  If the
+!      'shell' option is "sh", "ksh", "zsh" or "bash" the default becomes
+!      "2>&1| tee".  This means that stderr is also included.  Before using
+!      the 'shell' option a path is removed, thus "/bin/sh" uses "sh".
+       The initialization of this option is done after reading the ".vimrc"
+       and the other initializations, so that when the 'shell' option is set
+       there, the 'shellpipe' option changes automatically, unless it was
+--- 5934,5943 ----
+       For Unix the default it "| tee".  The stdout of the compiler is saved
+       in a file and echoed to the screen.  If the 'shell' option is "csh" or
+       "tcsh" after initializations, the default becomes "|& tee".  If the
+!      'shell' option is "sh", "ksh", "mksh", "pdksh", "zsh" or "bash" the
+!      default becomes "2>&1| tee".  This means that stderr is also included.
+!      Before using the 'shell' option a path is removed, thus "/bin/sh" uses
+!      "sh".
+       The initialization of this option is done after reading the ".vimrc"
+       and the other initializations, so that when the 'shell' option is set
+       there, the 'shellpipe' option changes automatically, unless it was
+***************
+*** 6017,6024 ****
+  
+                                               *'shellxquote'* *'sxq'*
+  'shellxquote' 'sxq'  string  (default: "";
+!                                      for Win32, when 'shell' contains "sh"
+!                                      somewhere: "\""
+                                       for Unix, when using system(): "\"")
+                       global
+                       {not in Vi}
+--- 6043,6050 ----
+  
+                                               *'shellxquote'* *'sxq'*
+  'shellxquote' 'sxq'  string  (default: "";
+!                                      for Win32, when 'shell' is cmd.exe or
+!                                      contains "sh" somewhere: "\""
+                                       for Unix, when using system(): "\"")
+                       global
+                       {not in Vi}
+***************
+*** 6026,6036 ****
+       the "!" and ":!" commands.  Includes the redirection.  See
+       'shellquote' to exclude the redirection.  It's probably not useful
+       to set both options.
+!      This is an empty string by default.  Known to be useful for
+!      third-party shells when using the Win32 version, such as the MKS Korn
+!      Shell or bash, where it should be "\"".  The default is adjusted
+!      according the value of 'shell', to reduce the need to set this option
+!      by the user.  See |dos-shell|.
+       This option cannot be set from a |modeline| or in the |sandbox|, for
+       security reasons.
+  
+--- 6052,6063 ----
+       the "!" and ":!" commands.  Includes the redirection.  See
+       'shellquote' to exclude the redirection.  It's probably not useful
+       to set both options.
+!      This is an empty string by default on most systems, but is known to be
+!      useful for on Win32 version, either for cmd.exe which automatically
+!      strips off the first and last quote on a command, or 3rd-party shells
+!      such as the MKS Korn Shell or bash, where it should be "\"".  The
+!      default is adjusted according the value of 'shell', to reduce the need
+!      to set this option by the user.  See |dos-shell|.
+       This option cannot be set from a |modeline| or in the |sandbox|, for
+       security reasons.
+  
+*** ../vim-7.3.442/src/version.c       2012-02-12 20:13:55.000000000 +0100
+--- src/version.c      2012-02-12 23:18:40.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     443,
+  /**/
+
+-- 
+CVS sux, men don't like commitment
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.444.patch0 b/vim/patches/vim-7.3.444.patch0
new file mode 100644 (file)
index 0000000..64ed88b
--- /dev/null
@@ -0,0 +1,96 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.444
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.444
+Problem:    ":all!" and ":sall!" give error E477, even though the
+            documentation says these are valid commands.
+Solution:   Support the exclamation mark. (Hirohito Higashi)
+Files:      src/ex_cmds.h, src/testdir/test31.in, src/testdir/test31.ok
+
+
+*** ../vim-7.3.443/src/ex_cmds.h       2011-06-20 05:02:53.000000000 +0200
+--- src/ex_cmds.h      2012-02-12 23:53:31.000000000 +0100
+***************
+*** 102,108 ****
+  EX(CMD_aboveleft,    "aboveleft",    ex_wrongmodifier,
+                       NEEDARG|EXTRA|NOTRLCOM),
+  EX(CMD_all,          "all",          ex_all,
+!                      RANGE|NOTADR|COUNT|TRLBAR),
+  EX(CMD_amenu,                "amenu",        ex_menu,
+                       RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
+  EX(CMD_anoremenu,    "anoremenu",    ex_menu,
+--- 102,108 ----
+  EX(CMD_aboveleft,    "aboveleft",    ex_wrongmodifier,
+                       NEEDARG|EXTRA|NOTRLCOM),
+  EX(CMD_all,          "all",          ex_all,
+!                      BANG|RANGE|NOTADR|COUNT|TRLBAR),
+  EX(CMD_amenu,                "amenu",        ex_menu,
+                       RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
+  EX(CMD_anoremenu,    "anoremenu",    ex_menu,
+***************
+*** 798,804 ****
+  EX(CMD_sargument,    "sargument",    ex_argument,
+                       BANG|RANGE|NOTADR|COUNT|EXTRA|EDITCMD|ARGOPT|TRLBAR),
+  EX(CMD_sall,         "sall",         ex_all,
+!                      RANGE|NOTADR|COUNT|TRLBAR),
+  EX(CMD_sandbox,              "sandbox",      ex_wrongmodifier,
+                       NEEDARG|EXTRA|NOTRLCOM),
+  EX(CMD_saveas,               "saveas",       ex_write,
+--- 798,804 ----
+  EX(CMD_sargument,    "sargument",    ex_argument,
+                       BANG|RANGE|NOTADR|COUNT|EXTRA|EDITCMD|ARGOPT|TRLBAR),
+  EX(CMD_sall,         "sall",         ex_all,
+!                      BANG|RANGE|NOTADR|COUNT|TRLBAR),
+  EX(CMD_sandbox,              "sandbox",      ex_wrongmodifier,
+                       NEEDARG|EXTRA|NOTRLCOM),
+  EX(CMD_saveas,               "saveas",       ex_write,
+*** ../vim-7.3.443/src/testdir/test31.in       2010-08-15 21:57:29.000000000 +0200
+--- src/testdir/test31.in      2012-02-12 23:57:42.000000000 +0100
+***************
+*** 63,68 ****
+--- 63,74 ----
+  :" write "testtext 1"
+  A 3\e:close!
+  :w >>test.out
++ :set nohidden
++ :" test ":all!" hides changed buffer; write "testtext 2 2 2"
++ :sp Xtest4
++ GA 4\e:all!
++ :1wincmd w
++ :w >>test.out
+  :qa!
+  ENDTEST
+  
+*** ../vim-7.3.443/src/testdir/test31.ok       2010-08-15 21:57:29.000000000 +0200
+--- src/testdir/test31.ok      2012-02-13 00:00:13.000000000 +0100
+***************
+*** 9,11 ****
+--- 9,12 ----
+  testtext 1
+  testtext 3 3 3
+  testtext 1
++ testtext 2 2 2
+*** ../vim-7.3.443/src/version.c       2012-02-12 23:23:25.000000000 +0100
+--- src/version.c      2012-02-12 23:52:47.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     444,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+50. The last girl you picked up was only a jpeg.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.445.patch0 b/vim/patches/vim-7.3.445.patch0
new file mode 100644 (file)
index 0000000..8d7c337
--- /dev/null
@@ -0,0 +1,199 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.445
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.445 (after 7.3.443)
+Problem:    Can't properly escape commands for cmd.exe.
+Solution:   Default 'shellxquote' to '('.  Append ')' to make '(command)'.
+           No need to use "/s" for 'shellcmdflag'.
+Files:     src/misc2.c, src/option.c, src/os_win32.c
+
+
+*** ../vim-7.3.444/src/misc2.c 2012-01-20 17:15:47.000000000 +0100
+--- src/misc2.c        2012-02-16 05:34:37.000000000 +0100
+***************
+*** 3230,3236 ****
+           {
+               STRCPY(ncmd, p_sxq);
+               STRCAT(ncmd, cmd);
+!              STRCAT(ncmd, p_sxq);
+               retval = mch_call_shell(ncmd, opt);
+               vim_free(ncmd);
+           }
+--- 3230,3240 ----
+           {
+               STRCPY(ncmd, p_sxq);
+               STRCAT(ncmd, cmd);
+!              /* When 'shellxquote' is ( append ).
+!               * When 'shellxquote' is "( append )". */
+!              STRCAT(ncmd, STRCMP(p_sxq, "(") == 0 ? (char_u *)")"
+!                         : STRCMP(p_sxq, "\"(") == 0 ? (char_u *)")\""
+!                         : p_sxq);
+               retval = mch_call_shell(ncmd, opt);
+               vim_free(ncmd);
+           }
+*** ../vim-7.3.444/src/option.c        2012-02-12 23:23:25.000000000 +0100
+--- src/option.c       2012-02-19 18:08:48.000000000 +0100
+***************
+*** 3933,3959 ****
+        *   my path/to/echo" "my args to echo
+        * when executed.
+        *
+!       * To avoid this, use the /s argument in addition to /c to force the
+!       * stripping behavior, and also set shellxquote to automatically
+!       * surround the entire command in quotes (which get stripped as
+!       * noted).
+        */
+- 
+-      /* Set shellxquote default to add the quotes to be stripped. */
+       idx3 = findoption((char_u *)"sxq");
+       if (idx3 >= 0 && !(options[idx3].flags & P_WAS_SET))
+       {
+!          p_sxq = (char_u *)"\"";
+           options[idx3].def_val[VI_DEFAULT] = p_sxq;
+       }
+  
+-      /* Set shellcmdflag default to always strip the quotes, note the order
+-       * between /s and /c is important or cmd.exe will treat the /s as part
+-       * of the command to be executed.  */
+       idx3 = findoption((char_u *)"shcf");
+       if (idx3 >= 0 && !(options[idx3].flags & P_WAS_SET))
+       {
+!          p_shcf = (char_u *)"/s /c";
+           options[idx3].def_val[VI_DEFAULT] = p_shcf;
+       }
+      }
+--- 3933,3954 ----
+        *   my path/to/echo" "my args to echo
+        * when executed.
+        *
+!       * To avoid this, set shellxquote to surround the command in
+!       * parenthesis.  This appears to make most commands work, without
+!       * breaking commands that worked previously, such as
+!       * '"path with spaces/cmd" "a&b"'.
+        */
+       idx3 = findoption((char_u *)"sxq");
+       if (idx3 >= 0 && !(options[idx3].flags & P_WAS_SET))
+       {
+!          p_sxq = (char_u *)"(";
+           options[idx3].def_val[VI_DEFAULT] = p_sxq;
+       }
+  
+       idx3 = findoption((char_u *)"shcf");
+       if (idx3 >= 0 && !(options[idx3].flags & P_WAS_SET))
+       {
+!          p_shcf = (char_u *)"/c";
+           options[idx3].def_val[VI_DEFAULT] = p_shcf;
+       }
+      }
+*** ../vim-7.3.444/src/os_win32.c      2011-08-27 15:10:00.000000000 +0200
+--- src/os_win32.c     2012-02-19 18:11:23.000000000 +0100
+***************
+*** 3908,3915 ****
+       newcmd = lalloc(cmdlen, TRUE);
+       if (newcmd != NULL)
+       {
+!          char_u *cmdbase = (*cmd == '"' ? cmd + 1 : cmd);
+  
+           if ((STRNICMP(cmdbase, "start", 5) == 0) && vim_iswhite(cmdbase[5]))
+           {
+               STARTUPINFO             si;
+--- 3908,3920 ----
+       newcmd = lalloc(cmdlen, TRUE);
+       if (newcmd != NULL)
+       {
+!          char_u *cmdbase = cmd;
+  
++          /* Skip a leading ", ( and "(. */
++          if (*cmdbase == '"' )
++              ++cmdbase;
++          if (*cmdbase == '(')
++              ++cmdbase;
+           if ((STRNICMP(cmdbase, "start", 5) == 0) && vim_iswhite(cmdbase[5]))
+           {
+               STARTUPINFO             si;
+***************
+*** 3953,3968 ****
+                * empty, keep the double quotes around the command.
+                * Otherwise remove the double quotes, they aren't needed
+                * here, because we don't use a shell to run the command. */
+!              if (*cmd == '"' && *p_sxq == NUL)
+               {
+!                  newcmd[0] = '"';
+!                  STRCPY(newcmd + 1, cmdbase);
+!              }
+!              else
+!              {
+!                  STRCPY(newcmd, cmdbase);
+!                  if (*cmd == '"' && *newcmd != NUL)
+!                      newcmd[STRLEN(newcmd) - 1] = NUL;
+               }
+  
+               /*
+--- 3958,3983 ----
+                * empty, keep the double quotes around the command.
+                * Otherwise remove the double quotes, they aren't needed
+                * here, because we don't use a shell to run the command. */
+!              if (cmdbase > cmd)
+               {
+!                  if (STRNCMP(cmd, p_sxq, cmd - cmdbase) != 0)
+!                  {
+!                      STRCPY(newcmd, cmd);
+!                  }
+!                  else
+!                  {
+!                      char_u *p;
+! 
+!                      STRCPY(newcmd, cmdbase);
+!                      /* Remove a trailing ", ) and )" if they have a match
+!                       * at the start of the command. */
+!                      p = newcmd + STRLEN(newcmd);
+!                      if (p > newcmd && p[-1] == '"' && *cmd == '"')
+!                          *--p = NUL;
+!                      if (p > newcmd && p[-1] == ')'
+!                                           && (*cmd =='(' || cmd[1] == '('))
+!                          *--p = NUL;
+!                  }
+               }
+  
+               /*
+***************
+*** 3970,3976 ****
+                * inherit our handles which causes unpleasant dangling swap
+                * files if we exit before the spawned process
+                */
+!              if (CreateProcess (NULL,        // Executable name
+                       newcmd,                 // Command to execute
+                       NULL,                   // Process security attributes
+                       NULL,                   // Thread security attributes
+--- 3985,3991 ----
+                * inherit our handles which causes unpleasant dangling swap
+                * files if we exit before the spawned process
+                */
+!              if (CreateProcess(NULL,         // Executable name
+                       newcmd,                 // Command to execute
+                       NULL,                   // Process security attributes
+                       NULL,                   // Thread security attributes
+*** ../vim-7.3.444/src/version.c       2012-02-13 00:01:38.000000000 +0100
+--- src/version.c      2012-02-19 18:01:46.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     445,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+80. At parties, you introduce your spouse as your "service provider."
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.446.patch0 b/vim/patches/vim-7.3.446.patch0
new file mode 100644 (file)
index 0000000..59a2b25
--- /dev/null
@@ -0,0 +1,164 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.446
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.446 (after 7.3.445)
+Problem:    Win32: External commands with special characters don't work.
+Solution:   Add the 'shellxescape' option.
+Files:     src/misc2.c, src/option.c, src/option.h, runtime/doc/options.txt
+
+
+*** ../vim-7.3.445/src/misc2.c 2012-02-19 18:19:24.000000000 +0100
+--- src/misc2.c        2012-02-20 22:05:22.000000000 +0100
+***************
+*** 3225,3235 ****
+           retval = mch_call_shell(cmd, opt);
+       else
+       {
+!          ncmd = alloc((unsigned)(STRLEN(cmd) + STRLEN(p_sxq) * 2 + 1));
+           if (ncmd != NULL)
+           {
+               STRCPY(ncmd, p_sxq);
+!              STRCAT(ncmd, cmd);
+               /* When 'shellxquote' is ( append ).
+                * When 'shellxquote' is "( append )". */
+               STRCAT(ncmd, STRCMP(p_sxq, "(") == 0 ? (char_u *)")"
+--- 3225,3243 ----
+           retval = mch_call_shell(cmd, opt);
+       else
+       {
+!          char_u *ecmd = cmd;
+! 
+!          if (*p_sxe != NUL && STRCMP(p_sxq, "(") == 0)
+!          {
+!              ecmd = vim_strsave_escaped_ext(cmd, p_sxe, '^', FALSE);
+!              if (ecmd == NULL)
+!                  ecmd = cmd;
+!          }
+!          ncmd = alloc((unsigned)(STRLEN(ecmd) + STRLEN(p_sxq) * 2 + 1));
+           if (ncmd != NULL)
+           {
+               STRCPY(ncmd, p_sxq);
+!              STRCAT(ncmd, ecmd);
+               /* When 'shellxquote' is ( append ).
+                * When 'shellxquote' is "( append )". */
+               STRCAT(ncmd, STRCMP(p_sxq, "(") == 0 ? (char_u *)")"
+***************
+*** 3240,3245 ****
+--- 3248,3255 ----
+           }
+           else
+               retval = -1;
++          if (ecmd != cmd)
++              vim_free(ecmd);
+       }
+  #ifdef FEAT_GUI
+       --hold_gui_events;
+*** ../vim-7.3.445/src/option.c        2012-02-19 18:19:24.000000000 +0100
+--- src/option.c       2012-02-20 22:01:07.000000000 +0100
+***************
+*** 2273,2278 ****
+--- 2273,2287 ----
+                           (char_u *)"",
+  #endif
+                               (char_u *)0L} SCRIPTID_INIT},
++     {"shellxescape", "sxe", P_STRING|P_VI_DEF|P_SECURE,
++                          (char_u *)&p_sxe, PV_NONE,
++                          {
++ #if defined(MSDOS) || defined(WIN16) || defined(WIN3264)
++                          (char_u *)"\"&|<>()@^",
++ #else
++                          (char_u *)"",
++ #endif
++                              (char_u *)0L} SCRIPTID_INIT},
+      {"shiftround",  "sr",   P_BOOL|P_VI_DEF|P_VIM,
+                           (char_u *)&p_sr, PV_NONE,
+                           {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+*** ../vim-7.3.445/src/option.h        2011-10-20 21:09:25.000000000 +0200
+--- src/option.h       2012-02-20 21:45:31.000000000 +0100
+***************
+*** 712,717 ****
+--- 712,718 ----
+  #endif
+  EXTERN char_u        *p_shq;         /* 'shellquote' */
+  EXTERN char_u        *p_sxq;         /* 'shellxquote' */
++ EXTERN char_u        *p_sxe;         /* 'shellxescape' */
+  EXTERN char_u        *p_srr;         /* 'shellredir' */
+  #ifdef AMIGA
+  EXTERN long  p_st;           /* 'shelltype' */
+*** ../vim-7.3.445/runtime/doc/options.txt     2012-02-12 23:23:25.000000000 +0100
+--- runtime/doc/options.txt    2012-02-20 22:09:19.000000000 +0100
+***************
+*** 6023,6030 ****
+  
+                                               *'shellxquote'* *'sxq'*
+  'shellxquote' 'sxq'  string  (default: "";
+!                                      for Win32, when 'shell' is cmd.exe or
+!                                      contains "sh" somewhere: "\""
+                                       for Unix, when using system(): "\"")
+                       global
+                       {not in Vi}
+--- 6042,6050 ----
+  
+                                               *'shellxquote'* *'sxq'*
+  'shellxquote' 'sxq'  string  (default: "";
+!                                      for Win32, when 'shell' is cmd.exe: "("
+!                                      for Win32, when 'shell' contains "sh"
+!                                      somewhere: "\""
+                                       for Unix, when using system(): "\"")
+                       global
+                       {not in Vi}
+***************
+*** 6032,6037 ****
+--- 6052,6060 ----
+       the "!" and ":!" commands.  Includes the redirection.  See
+       'shellquote' to exclude the redirection.  It's probably not useful
+       to set both options.
++      When the value is '(' then ')' is appended. When the value is '"('
++      then ')"' is appended.
++      When the value is '(' then also see 'shellxescape'.
+       This is an empty string by default on most systems, but is known to be
+       useful for on Win32 version, either for cmd.exe which automatically
+       strips off the first and last quote on a command, or 3rd-party shells
+***************
+*** 6041,6046 ****
+--- 6064,6079 ----
+       This option cannot be set from a |modeline| or in the |sandbox|, for
+       security reasons.
+  
++                                              *'shellxescape'* *'sxe'*
++ 'shellxescape' 'sxe' string  (default: "";
++                               for MS-DOS and MS-Windows: "\"&|<>()@^")
++                      global
++                      {not in Vi}
++      When 'shellxquote' is set to "(" then the characters listed in this
++      option will be escaped with a '^' character.  This makes it possible
++      to execute most external commands with cmd.exe.
++ 
++ 
+                       *'shiftround'* *'sr'* *'noshiftround'* *'nosr'*
+  'shiftround' 'sr'    boolean (default off)
+                       global
+*** ../vim-7.3.445/src/version.c       2012-02-19 18:19:24.000000000 +0100
+--- src/version.c      2012-02-20 22:12:32.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     446,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+86. E-mail Deficiency Depression (EDD) forces you to e-mail yourself.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.447.patch0 b/vim/patches/vim-7.3.447.patch0
new file mode 100644 (file)
index 0000000..9c0af9f
--- /dev/null
@@ -0,0 +1,377 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.447
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.447 (after 7.3.446)
+Problem:    Win32: External commands with "start" do not work.
+Solution:   Unescape part of the command. (Yasuhiro Matsumoto)
+Files:     src/os_win32.c
+
+
+*** ../vim-7.3.446/src/os_win32.c      2012-02-19 18:19:24.000000000 +0100
+--- src/os_win32.c     2012-02-21 20:56:51.000000000 +0100
+***************
+*** 259,264 ****
+--- 259,287 ----
+  }
+  
+  /*
++  * Unescape characters in "p" that appear in "escaped".
++  */
++     static void
++ unescape_shellxquote(char_u *p, char_u *escaped)
++ {
++     int          l = STRLEN(p);
++     int          n;
++ 
++     while (*p != NUL)
++     {
++      if (*p == '^' && vim_strchr(escaped, p[1]) != NULL)
++          mch_memmove(p, p + 1, l--);
++ #ifdef FEAT_MBYTE
++      n = (*mb_ptr2len)(p);
++ #else
++      n = 1;
++ #endif
++      p += n;
++      l -= n;
++     }
++ }
++ 
++ /*
+   * Load library "name".
+   */
+      HINSTANCE
+***************
+*** 3559,3564 ****
+--- 3582,3588 ----
+      garray_T ga;
+      int          delay = 1;
+      DWORD    buffer_off = 0; /* valid bytes in buffer[] */
++     char     *p = NULL;
+  
+      SECURITY_ATTRIBUTES saAttr;
+  
+***************
+*** 3599,3607 ****
+      if (options & SHELL_READ)
+       ga_init2(&ga, 1, BUFLEN);
+  
+      /* Now, run the command */
+      CreateProcess(NULL,                      /* Executable name */
+!                cmd,                  /* Command to execute */
+                 NULL,                 /* Process security attributes */
+                 NULL,                 /* Thread security attributes */
+  
+--- 3623,3640 ----
+      if (options & SHELL_READ)
+       ga_init2(&ga, 1, BUFLEN);
+  
++     if (cmd != NULL)
++     {
++      p = (char *)vim_strsave((char_u *)cmd);
++      if (p != NULL)
++          unescape_shellxquote((char_u *)p, p_sxe);
++      else
++          p = cmd;
++     }
++ 
+      /* Now, run the command */
+      CreateProcess(NULL,                      /* Executable name */
+!                p,                    /* Command to execute */
+                 NULL,                 /* Process security attributes */
+                 NULL,                 /* Thread security attributes */
+  
+***************
+*** 3616,3621 ****
+--- 3649,3656 ----
+                 &si,                  /* Startup information */
+                 &pi);                 /* Process information */
+  
++     if (p != cmd)
++      vim_free(p);
+  
+      /* Close our unused side of the pipes */
+      CloseHandle(g_hChildStd_IN_Rd);
+***************
+*** 3898,4018 ****
+      else
+      {
+       /* we use "command" or "cmd" to start the shell; slow but easy */
+!      char_u *newcmd;
+!      long_u cmdlen =  (
+! #ifdef FEAT_GUI_W32
+!              (allowPiping && !p_stmp ? 0 : STRLEN(vimrun_path)) +
+! #endif
+!              STRLEN(p_sh) + STRLEN(p_shcf) + STRLEN(cmd) + 10);
+! 
+!      newcmd = lalloc(cmdlen, TRUE);
+!      if (newcmd != NULL)
+!      {
+!          char_u *cmdbase = cmd;
+! 
+!          /* Skip a leading ", ( and "(. */
+!          if (*cmdbase == '"' )
+!              ++cmdbase;
+!          if (*cmdbase == '(')
+!              ++cmdbase;
+!          if ((STRNICMP(cmdbase, "start", 5) == 0) && vim_iswhite(cmdbase[5]))
+!          {
+!              STARTUPINFO             si;
+!              PROCESS_INFORMATION     pi;
+!              DWORD                   flags = CREATE_NEW_CONSOLE;
+! 
+!              si.cb = sizeof(si);
+!              si.lpReserved = NULL;
+!              si.lpDesktop = NULL;
+!              si.lpTitle = NULL;
+!              si.dwFlags = 0;
+!              si.cbReserved2 = 0;
+!              si.lpReserved2 = NULL;
+! 
+!              cmdbase = skipwhite(cmdbase + 5);
+!              if ((STRNICMP(cmdbase, "/min", 4) == 0)
+!                      && vim_iswhite(cmdbase[4]))
+!              {
+!                  cmdbase = skipwhite(cmdbase + 4);
+!                  si.dwFlags = STARTF_USESHOWWINDOW;
+!                  si.wShowWindow = SW_SHOWMINNOACTIVE;
+!              }
+!              else if ((STRNICMP(cmdbase, "/b", 2) == 0)
+!                      && vim_iswhite(cmdbase[2]))
+!              {
+!                  cmdbase = skipwhite(cmdbase + 2);
+!                  flags = CREATE_NO_WINDOW;
+!                  si.dwFlags = STARTF_USESTDHANDLES;
+!                  si.hStdInput = CreateFile("\\\\.\\NUL",     // File name
+!                      GENERIC_READ,                           // Access flags
+!                      0,                                      // Share flags
+!                      NULL,                                   // Security att.
+!                      OPEN_EXISTING,                          // Open flags
+!                      FILE_ATTRIBUTE_NORMAL,                  // File att.
+!                      NULL);                                  // Temp file
+!                  si.hStdOutput = si.hStdInput;
+!                  si.hStdError = si.hStdInput;
+!              }
+  
+!              /* When the command is in double quotes, but 'shellxquote' is
+!               * empty, keep the double quotes around the command.
+!               * Otherwise remove the double quotes, they aren't needed
+!               * here, because we don't use a shell to run the command. */
+!              if (cmdbase > cmd)
+!              {
+!                  if (STRNCMP(cmd, p_sxq, cmd - cmdbase) != 0)
+!                  {
+!                      STRCPY(newcmd, cmd);
+!                  }
+!                  else
+!                  {
+!                      char_u *p;
+  
+!                      STRCPY(newcmd, cmdbase);
+!                      /* Remove a trailing ", ) and )" if they have a match
+!                       * at the start of the command. */
+!                      p = newcmd + STRLEN(newcmd);
+!                      if (p > newcmd && p[-1] == '"' && *cmd == '"')
+!                          *--p = NUL;
+!                      if (p > newcmd && p[-1] == ')'
+!                                           && (*cmd =='(' || cmd[1] == '('))
+!                          *--p = NUL;
+!                  }
+!              }
+  
+!              /*
+!               * Now, start the command as a process, so that it doesn't
+!               * inherit our handles which causes unpleasant dangling swap
+!               * files if we exit before the spawned process
+!               */
+!              if (CreateProcess(NULL,         // Executable name
+!                      newcmd,                 // Command to execute
+!                      NULL,                   // Process security attributes
+!                      NULL,                   // Thread security attributes
+!                      FALSE,                  // Inherit handles
+!                      flags,                  // Creation flags
+!                      NULL,                   // Environment
+!                      NULL,                   // Current directory
+!                      &si,                    // Startup information
+!                      &pi))                   // Process information
+!                  x = 0;
+!              else
+!              {
+!                  x = -1;
+  #ifdef FEAT_GUI_W32
+!                  EMSG(_("E371: Command not found"));
+  #endif
+-              }
+-              if (si.hStdInput != NULL)
+-              {
+-                  /* Close the handle to \\.\NUL */
+-                  CloseHandle(si.hStdInput);
+-              }
+-              /* Close the handles to the subprocess, so that it goes away */
+-              CloseHandle(pi.hThread);
+-              CloseHandle(pi.hProcess);
+           }
+!          else
+           {
+  #if defined(FEAT_GUI_W32)
+               if (need_vimrun_warning)
+--- 3933,4048 ----
+      else
+      {
+       /* we use "command" or "cmd" to start the shell; slow but easy */
+!      char_u *cmdbase = cmd;
+  
+!      /* Skip a leading ", ( and "(. */
+!      if (*cmdbase == '"' )
+!          ++cmdbase;
+!      if (*cmdbase == '(')
+!          ++cmdbase;
+! 
+!      if ((STRNICMP(cmdbase, "start", 5) == 0) && vim_iswhite(cmdbase[5]))
+!      {
+!          STARTUPINFO         si;
+!          PROCESS_INFORMATION pi;
+!          DWORD               flags = CREATE_NEW_CONSOLE;
+!          char_u              *p;
+! 
+!          si.cb = sizeof(si);
+!          si.lpReserved = NULL;
+!          si.lpDesktop = NULL;
+!          si.lpTitle = NULL;
+!          si.dwFlags = 0;
+!          si.cbReserved2 = 0;
+!          si.lpReserved2 = NULL;
+! 
+!          cmdbase = skipwhite(cmdbase + 5);
+!          if ((STRNICMP(cmdbase, "/min", 4) == 0)
+!                  && vim_iswhite(cmdbase[4]))
+!          {
+!              cmdbase = skipwhite(cmdbase + 4);
+!              si.dwFlags = STARTF_USESHOWWINDOW;
+!              si.wShowWindow = SW_SHOWMINNOACTIVE;
+!          }
+!          else if ((STRNICMP(cmdbase, "/b", 2) == 0)
+!                  && vim_iswhite(cmdbase[2]))
+!          {
+!              cmdbase = skipwhite(cmdbase + 2);
+!              flags = CREATE_NO_WINDOW;
+!              si.dwFlags = STARTF_USESTDHANDLES;
+!              si.hStdInput = CreateFile("\\\\.\\NUL", // File name
+!                  GENERIC_READ,                               // Access flags
+!                  0,                                  // Share flags
+!                  NULL,                                       // Security att.
+!                  OPEN_EXISTING,                              // Open flags
+!                  FILE_ATTRIBUTE_NORMAL,                      // File att.
+!                  NULL);                                      // Temp file
+!              si.hStdOutput = si.hStdInput;
+!              si.hStdError = si.hStdInput;
+!          }
+! 
+!          /* Remove a trailing ", ) and )" if they have a match
+!           * at the start of the command. */
+!          if (cmdbase > cmd)
+!          {
+!              p = cmdbase + STRLEN(cmdbase);
+!              if (p > cmdbase && p[-1] == '"' && *cmd == '"')
+!                  *--p = NUL;
+!              if (p > cmdbase && p[-1] == ')'
+!                      && (*cmd =='(' || cmd[1] == '('))
+!                  *--p = NUL;
+!          }
+  
+!          /*
+!           * Unescape characters in shellxescape. This is workaround for
+!           * /b option. Only redirect character should be unescaped.
+!           */
+!          unescape_shellxquote(cmdbase,
+!                      (flags & CREATE_NEW_CONSOLE) ? p_sxe : "<>");
+  
+!          /*
+!           * Now, start the command as a process, so that it doesn't
+!           * inherit our handles which causes unpleasant dangling swap
+!           * files if we exit before the spawned process
+!           */
+!          if (CreateProcess(NULL,             // Executable name
+!                  cmdbase,                    // Command to execute
+!                  NULL,                       // Process security attributes
+!                  NULL,                       // Thread security attributes
+!                  FALSE,                      // Inherit handles
+!                  flags,                      // Creation flags
+!                  NULL,                       // Environment
+!                  NULL,                       // Current directory
+!                  &si,                        // Startup information
+!                  &pi))                       // Process information
+!              x = 0;
+!          else
+!          {
+!              x = -1;
+  #ifdef FEAT_GUI_W32
+!              EMSG(_("E371: Command not found"));
+  #endif
+           }
+!          if (si.hStdInput != NULL)
+!          {
+!              /* Close the handle to \\.\NUL */
+!              CloseHandle(si.hStdInput);
+!          }
+!          /* Close the handles to the subprocess, so that it goes away */
+!          CloseHandle(pi.hThread);
+!          CloseHandle(pi.hProcess);
+!      }
+!      else
+!      {
+!          char_u *newcmd;
+!          long_u cmdlen =  (
+! #ifdef FEAT_GUI_W32
+!              (allowPiping && !p_stmp ? 0 : STRLEN(vimrun_path)) +
+! #endif
+!              STRLEN(p_sh) + STRLEN(p_shcf) + STRLEN(cmd) + 10);
+! 
+!          newcmd = lalloc(cmdlen, TRUE);
+!          if (newcmd != NULL)
+           {
+  #if defined(FEAT_GUI_W32)
+               if (need_vimrun_warning)
+***************
+*** 4038,4045 ****
+                   vim_snprintf((char *)newcmd, cmdlen, "%s %s %s",
+                                                          p_sh, p_shcf, cmd);
+               x = mch_system((char *)newcmd, options);
+           }
+-          vim_free(newcmd);
+       }
+      }
+  
+--- 4068,4075 ----
+                   vim_snprintf((char *)newcmd, cmdlen, "%s %s %s",
+                                                          p_sh, p_shcf, cmd);
+               x = mch_system((char *)newcmd, options);
++              vim_free(newcmd);
+           }
+       }
+      }
+  
+*** ../vim-7.3.446/src/version.c       2012-02-20 22:18:23.000000000 +0100
+--- src/version.c      2012-02-21 21:20:05.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     447,
+  /**/
+
+-- 
+From "know your smileys":
+ :----}  You lie like Pinocchio
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.448.patch0 b/vim/patches/vim-7.3.448.patch0
new file mode 100644 (file)
index 0000000..91d8f26
--- /dev/null
@@ -0,0 +1,180 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.448
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.448 (after 7.3.447)
+Problem:    Win32: Still a problem with "!start /b".
+Solution:   Escape only '|'. (Yasuhiro Matsumoto)
+Files:     src/os_win32.c
+
+
+*** ../vim-7.3.447/src/os_win32.c      2012-02-21 21:22:40.000000000 +0100
+--- src/os_win32.c     2012-02-22 13:06:55.000000000 +0100
+***************
+*** 3933,3939 ****
+      else
+      {
+       /* we use "command" or "cmd" to start the shell; slow but easy */
+!      char_u *cmdbase = cmd;
+  
+       /* Skip a leading ", ( and "(. */
+       if (*cmdbase == '"' )
+--- 3933,3941 ----
+      else
+      {
+       /* we use "command" or "cmd" to start the shell; slow but easy */
+!      char_u  *newcmd = NULL;
+!      char_u  *cmdbase = cmd;
+!      long_u  cmdlen;
+  
+       /* Skip a leading ", ( and "(. */
+       if (*cmdbase == '"' )
+***************
+*** 3971,3982 ****
+               flags = CREATE_NO_WINDOW;
+               si.dwFlags = STARTF_USESTDHANDLES;
+               si.hStdInput = CreateFile("\\\\.\\NUL", // File name
+!                  GENERIC_READ,                               // Access flags
+                   0,                                  // Share flags
+!                  NULL,                                       // Security att.
+!                  OPEN_EXISTING,                              // Open flags
+!                  FILE_ATTRIBUTE_NORMAL,                      // File att.
+!                  NULL);                                      // Temp file
+               si.hStdOutput = si.hStdInput;
+               si.hStdError = si.hStdInput;
+           }
+--- 3973,3984 ----
+               flags = CREATE_NO_WINDOW;
+               si.dwFlags = STARTF_USESTDHANDLES;
+               si.hStdInput = CreateFile("\\\\.\\NUL", // File name
+!                  GENERIC_READ,                       // Access flags
+                   0,                                  // Share flags
+!                  NULL,                               // Security att.
+!                  OPEN_EXISTING,                      // Open flags
+!                  FILE_ATTRIBUTE_NORMAL,              // File att.
+!                  NULL);                              // Temp file
+               si.hStdOutput = si.hStdInput;
+               si.hStdError = si.hStdInput;
+           }
+***************
+*** 3993,4004 ****
+                   *--p = NUL;
+           }
+  
+           /*
+!           * Unescape characters in shellxescape. This is workaround for
+!           * /b option. Only redirect character should be unescaped.
+            */
+!          unescape_shellxquote(cmdbase,
+!                      (flags & CREATE_NEW_CONSOLE) ? p_sxe : "<>");
+  
+           /*
+            * Now, start the command as a process, so that it doesn't
+--- 3995,4030 ----
+                   *--p = NUL;
+           }
+  
++          newcmd = cmdbase;
++          unescape_shellxquote(cmdbase, p_sxe);
++ 
+           /*
+!           * If creating new console, arguments are passed to the
+!           * 'cmd.exe' as-is. If it's not, arguments are not treated
+!           * correctly for current 'cmd.exe'. So unescape characters in
+!           * shellxescape except '|' for avoiding to be treated as
+!           * argument to them. Pass the arguments to sub-shell.
+            */
+!          if (flags != CREATE_NEW_CONSOLE)
+!          {
+!              char_u  *subcmd;
+!              char_u  *cmd_shell = default_shell();
+! 
+!              subcmd = vim_strsave_escaped_ext(cmdbase, "|", '^', FALSE);
+!              if (subcmd != NULL)
+!              {
+!                  /* make "cmd.exe /c arguments" */
+!                  cmdlen = STRLEN(cmd_shell) + STRLEN(subcmd) + 5;
+!                  vim_free(subcmd);
+! 
+!                  newcmd = lalloc(cmdlen, TRUE);
+!                  if (newcmd != NULL)
+!                      vim_snprintf((char *)newcmd, cmdlen, "%s /c %s",
+!                                                     default_shell, subcmd);
+!                  else
+!                      newcmd = cmdbase;
+!              }
+!          }
+  
+           /*
+            * Now, start the command as a process, so that it doesn't
+***************
+*** 4006,4012 ****
+            * files if we exit before the spawned process
+            */
+           if (CreateProcess(NULL,             // Executable name
+!                  cmdbase,                    // Command to execute
+                   NULL,                       // Process security attributes
+                   NULL,                       // Thread security attributes
+                   FALSE,                      // Inherit handles
+--- 4032,4038 ----
+            * files if we exit before the spawned process
+            */
+           if (CreateProcess(NULL,             // Executable name
+!                  newcmd,                     // Command to execute
+                   NULL,                       // Process security attributes
+                   NULL,                       // Thread security attributes
+                   FALSE,                      // Inherit handles
+***************
+*** 4023,4028 ****
+--- 4049,4058 ----
+               EMSG(_("E371: Command not found"));
+  #endif
+           }
++ 
++          if (newcmd != cmdbase)
++              vim_free(newcmd);
++ 
+           if (si.hStdInput != NULL)
+           {
+               /* Close the handle to \\.\NUL */
+***************
+*** 4034,4041 ****
+       }
+       else
+       {
+!          char_u *newcmd;
+!          long_u cmdlen =  (
+  #ifdef FEAT_GUI_W32
+               (allowPiping && !p_stmp ? 0 : STRLEN(vimrun_path)) +
+  #endif
+--- 4064,4070 ----
+       }
+       else
+       {
+!          cmdlen = (
+  #ifdef FEAT_GUI_W32
+               (allowPiping && !p_stmp ? 0 : STRLEN(vimrun_path)) +
+  #endif
+*** ../vim-7.3.447/src/version.c       2012-02-21 21:22:40.000000000 +0100
+--- src/version.c      2012-02-22 13:02:15.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     448,
+  /**/
+
+-- 
+From "know your smileys":
+ ~#:-( I just washed my hair, and I can't do nuthin' with it.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.449.patch0 b/vim/patches/vim-7.3.449.patch0
new file mode 100644 (file)
index 0000000..9b5bdea
--- /dev/null
@@ -0,0 +1,455 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.449
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.449
+Problem:    Crash when a BufWinLeave autocommand closes the only other window.
+           (Daniel Hunt)
+Solution:   Abort closing a buffer when it becomes the only one.
+Files:     src/buffer.c, src/proto/buffer.pro, src/ex_cmds.c, src/ex_getln.c,
+           src/misc2.c, src/quickfix.c, src/window.c, src/proto/window.pro
+
+
+*** ../vim-7.3.448/src/buffer.c        2012-01-20 20:44:38.000000000 +0100
+--- src/buffer.c       2012-02-22 14:50:42.000000000 +0100
+***************
+*** 64,69 ****
+--- 64,72 ----
+  static char *msg_loclist = N_("[Location List]");
+  static char *msg_qflist = N_("[Quickfix List]");
+  #endif
++ #ifdef FEAT_AUTOCMD
++ static char *e_auabort = N_("E855: Autocommands caused command to abort");
++ #endif
+  
+  /*
+   * Open current buffer, that is: open the memfile and read the file into
+***************
+*** 96,102 ****
+        * There MUST be a memfile, otherwise we can't do anything
+        * If we can't create one for the current buffer, take another buffer
+        */
+!      close_buffer(NULL, curbuf, 0);
+       for (curbuf = firstbuf; curbuf != NULL; curbuf = curbuf->b_next)
+           if (curbuf->b_ml.ml_mfp != NULL)
+               break;
+--- 99,105 ----
+        * There MUST be a memfile, otherwise we can't do anything
+        * If we can't create one for the current buffer, take another buffer
+        */
+!      close_buffer(NULL, curbuf, 0, FALSE);
+       for (curbuf = firstbuf; curbuf != NULL; curbuf = curbuf->b_next)
+           if (curbuf->b_ml.ml_mfp != NULL)
+               break;
+***************
+*** 316,327 ****
+   * get a new buffer very soon!
+   *
+   * The 'bufhidden' option can force freeing and deleting.
+   */
+      void
+! close_buffer(win, buf, action)
+      win_T    *win;           /* if not NULL, set b_last_cursor */
+      buf_T    *buf;
+      int              action;
+  {
+  #ifdef FEAT_AUTOCMD
+      int              is_curbuf;
+--- 319,335 ----
+   * get a new buffer very soon!
+   *
+   * The 'bufhidden' option can force freeing and deleting.
++  *
++  * When "abort_if_last" is TRUE then do not close the buffer if autocommands
++  * cause there to be only one window with this buffer.  e.g. when ":quit" is
++  * supposed to close the window but autocommands close all other windows.
+   */
+      void
+! close_buffer(win, buf, action, abort_if_last)
+      win_T    *win;           /* if not NULL, set b_last_cursor */
+      buf_T    *buf;
+      int              action;
++     int              abort_if_last;
+  {
+  #ifdef FEAT_AUTOCMD
+      int              is_curbuf;
+***************
+*** 371,378 ****
+      {
+       apply_autocmds(EVENT_BUFWINLEAVE, buf->b_fname, buf->b_fname,
+                                                                 FALSE, buf);
+!      if (!buf_valid(buf))        /* autocommands may delete the buffer */
+           return;
+  
+       /* When the buffer becomes hidden, but is not unloaded, trigger
+        * BufHidden */
+--- 379,390 ----
+      {
+       apply_autocmds(EVENT_BUFWINLEAVE, buf->b_fname, buf->b_fname,
+                                                                 FALSE, buf);
+!      /* Return if autocommands deleted the buffer or made it the only one. */
+!      if (!buf_valid(buf) || (abort_if_last && one_window()))
+!      {
+!          EMSG(_(e_auabort));
+           return;
++      }
+  
+       /* When the buffer becomes hidden, but is not unloaded, trigger
+        * BufHidden */
+***************
+*** 380,387 ****
+       {
+           apply_autocmds(EVENT_BUFHIDDEN, buf->b_fname, buf->b_fname,
+                                                                 FALSE, buf);
+!          if (!buf_valid(buf))        /* autocmds may delete the buffer */
+               return;
+       }
+  # ifdef FEAT_EVAL
+       if (aborting())     /* autocmds may abort script processing */
+--- 392,404 ----
+       {
+           apply_autocmds(EVENT_BUFHIDDEN, buf->b_fname, buf->b_fname,
+                                                                 FALSE, buf);
+!          /* Return if autocommands deleted the buffer or made it the only
+!           * one. */
+!          if (!buf_valid(buf) || (abort_if_last && one_window()))
+!          {
+!              EMSG(_(e_auabort));
+               return;
++          }
+       }
+  # ifdef FEAT_EVAL
+       if (aborting())     /* autocmds may abort script processing */
+***************
+*** 775,781 ****
+        * open a new, empty buffer. */
+       swap_exists_action = SEA_NONE;  /* don't want it again */
+       swap_exists_did_quit = TRUE;
+!      close_buffer(curwin, curbuf, DOBUF_UNLOAD);
+       if (!buf_valid(old_curbuf) || old_curbuf == curbuf)
+           old_curbuf = buflist_new(NULL, NULL, 1L, BLN_CURBUF | BLN_LISTED);
+       if (old_curbuf != NULL)
+--- 792,798 ----
+        * open a new, empty buffer. */
+       swap_exists_action = SEA_NONE;  /* don't want it again */
+       swap_exists_did_quit = TRUE;
+!      close_buffer(curwin, curbuf, DOBUF_UNLOAD, FALSE);
+       if (!buf_valid(old_curbuf) || old_curbuf == curbuf)
+           old_curbuf = buflist_new(NULL, NULL, 1L, BLN_CURBUF | BLN_LISTED);
+       if (old_curbuf != NULL)
+***************
+*** 1122,1128 ****
+            * if the buffer still exists.
+            */
+           if (buf != curbuf && buf_valid(buf) && buf->b_nwindows == 0)
+!              close_buffer(NULL, buf, action);
+           return retval;
+       }
+  
+--- 1139,1145 ----
+            * if the buffer still exists.
+            */
+           if (buf != curbuf && buf_valid(buf) && buf->b_nwindows == 0)
+!              close_buffer(NULL, buf, action, FALSE);
+           return retval;
+       }
+  
+***************
+*** 1146,1152 ****
+           close_windows(buf, FALSE);
+  #endif
+           if (buf != curbuf && buf_valid(buf) && buf->b_nwindows <= 0)
+!              close_buffer(NULL, buf, action);
+           return OK;
+       }
+  
+--- 1163,1169 ----
+           close_windows(buf, FALSE);
+  #endif
+           if (buf != curbuf && buf_valid(buf) && buf->b_nwindows <= 0)
+!              close_buffer(NULL, buf, action, FALSE);
+           return OK;
+       }
+  
+***************
+*** 1378,1384 ****
+           close_buffer(prevbuf == curwin->w_buffer ? curwin : NULL, prevbuf,
+                   unload ? action : (action == DOBUF_GOTO
+                       && !P_HID(prevbuf)
+!                      && !bufIsChanged(prevbuf)) ? DOBUF_UNLOAD : 0);
+       }
+      }
+  #ifdef FEAT_AUTOCMD
+--- 1395,1401 ----
+           close_buffer(prevbuf == curwin->w_buffer ? curwin : NULL, prevbuf,
+                   unload ? action : (action == DOBUF_GOTO
+                       && !P_HID(prevbuf)
+!                      && !bufIsChanged(prevbuf)) ? DOBUF_UNLOAD : 0, FALSE);
+       }
+      }
+  #ifdef FEAT_AUTOCMD
+***************
+*** 2708,2714 ****
+               vim_free(ffname);
+               return FAIL;
+           }
+!          close_buffer(NULL, obuf, DOBUF_WIPE); /* delete from the list */
+       }
+       sfname = vim_strsave(sfname);
+       if (ffname == NULL || sfname == NULL)
+--- 2725,2732 ----
+               vim_free(ffname);
+               return FAIL;
+           }
+!          /* delete from the list */
+!          close_buffer(NULL, obuf, DOBUF_WIPE, FALSE);
+       }
+       sfname = vim_strsave(sfname);
+       if (ffname == NULL || sfname == NULL)
+***************
+*** 5638,5644 ****
+      if (!aucmd)                  /* Don't trigger BufDelete autocommands here. */
+       block_autocmds();
+  #endif
+!     close_buffer(NULL, buf, DOBUF_WIPE);
+  #ifdef FEAT_AUTOCMD
+      if (!aucmd)
+       unblock_autocmds();
+--- 5656,5662 ----
+      if (!aucmd)                  /* Don't trigger BufDelete autocommands here. */
+       block_autocmds();
+  #endif
+!     close_buffer(NULL, buf, DOBUF_WIPE, FALSE);
+  #ifdef FEAT_AUTOCMD
+      if (!aucmd)
+       unblock_autocmds();
+*** ../vim-7.3.448/src/proto/buffer.pro        2010-08-15 21:57:28.000000000 +0200
+--- src/proto/buffer.pro       2012-02-22 14:04:26.000000000 +0100
+***************
+*** 1,7 ****
+  /* buffer.c */
+  int open_buffer __ARGS((int read_stdin, exarg_T *eap, int flags));
+  int buf_valid __ARGS((buf_T *buf));
+! void close_buffer __ARGS((win_T *win, buf_T *buf, int action));
+  void buf_clear_file __ARGS((buf_T *buf));
+  void buf_freeall __ARGS((buf_T *buf, int flags));
+  void goto_buffer __ARGS((exarg_T *eap, int start, int dir, int count));
+--- 1,7 ----
+  /* buffer.c */
+  int open_buffer __ARGS((int read_stdin, exarg_T *eap, int flags));
+  int buf_valid __ARGS((buf_T *buf));
+! void close_buffer __ARGS((win_T *win, buf_T *buf, int action, int abort_if_last));
+  void buf_clear_file __ARGS((buf_T *buf));
+  void buf_freeall __ARGS((buf_T *buf, int flags));
+  void goto_buffer __ARGS((exarg_T *eap, int start, int dir, int count));
+*** ../vim-7.3.448/src/ex_cmds.c       2011-12-30 15:01:55.000000000 +0100
+--- src/ex_cmds.c      2012-02-22 14:00:32.000000000 +0100
+***************
+*** 3387,3393 ****
+               /* close the link to the current buffer */
+               u_sync(FALSE);
+               close_buffer(oldwin, curbuf,
+!                                    (flags & ECMD_HIDE) ? 0 : DOBUF_UNLOAD);
+  
+  #ifdef FEAT_AUTOCMD
+               /* Autocommands may open a new window and leave oldwin open
+--- 3387,3393 ----
+               /* close the link to the current buffer */
+               u_sync(FALSE);
+               close_buffer(oldwin, curbuf,
+!                             (flags & ECMD_HIDE) ? 0 : DOBUF_UNLOAD, FALSE);
+  
+  #ifdef FEAT_AUTOCMD
+               /* Autocommands may open a new window and leave oldwin open
+*** ../vim-7.3.448/src/ex_getln.c      2012-02-04 22:44:27.000000000 +0100
+--- src/ex_getln.c     2012-02-22 14:01:56.000000000 +0100
+***************
+*** 6443,6449 ****
+       /* win_close() may have already wiped the buffer when 'bh' is
+        * set to 'wipe' */
+       if (buf_valid(bp))
+!          close_buffer(NULL, bp, DOBUF_WIPE);
+  
+       /* Restore window sizes. */
+       win_size_restore(&winsizes);
+--- 6443,6449 ----
+       /* win_close() may have already wiped the buffer when 'bh' is
+        * set to 'wipe' */
+       if (buf_valid(bp))
+!          close_buffer(NULL, bp, DOBUF_WIPE, FALSE);
+  
+       /* Restore window sizes. */
+       win_size_restore(&winsizes);
+*** ../vim-7.3.448/src/misc2.c 2012-02-20 22:18:22.000000000 +0100
+--- src/misc2.c        2012-02-22 14:02:12.000000000 +0100
+***************
+*** 1173,1179 ****
+      for (buf = firstbuf; buf != NULL; )
+      {
+       nextbuf = buf->b_next;
+!      close_buffer(NULL, buf, DOBUF_WIPE);
+       if (buf_valid(buf))
+           buf = nextbuf;      /* didn't work, try next one */
+       else
+--- 1173,1179 ----
+      for (buf = firstbuf; buf != NULL; )
+      {
+       nextbuf = buf->b_next;
+!      close_buffer(NULL, buf, DOBUF_WIPE, FALSE);
+       if (buf_valid(buf))
+           buf = nextbuf;      /* didn't work, try next one */
+       else
+*** ../vim-7.3.448/src/quickfix.c      2012-01-20 13:39:03.000000000 +0100
+--- src/quickfix.c     2012-02-22 14:02:20.000000000 +0100
+***************
+*** 3565,3571 ****
+      buf_T    *buf;
+  {
+      if (curbuf != buf)               /* safety check */
+!      close_buffer(NULL, buf, DOBUF_UNLOAD);
+  }
+  
+  #if defined(FEAT_EVAL) || defined(PROTO)
+--- 3565,3571 ----
+      buf_T    *buf;
+  {
+      if (curbuf != buf)               /* safety check */
+!      close_buffer(NULL, buf, DOBUF_UNLOAD, FALSE);
+  }
+  
+  #if defined(FEAT_EVAL) || defined(PROTO)
+*** ../vim-7.3.448/src/window.c        2012-01-10 22:26:12.000000000 +0100
+--- src/window.c       2012-02-22 14:08:13.000000000 +0100
+***************
+*** 23,29 ****
+  static void win_totop __ARGS((int size, int flags));
+  static void win_equal_rec __ARGS((win_T *next_curwin, int current, frame_T *topfr, int dir, int col, int row, int width, int height));
+  static int last_window __ARGS((void));
+- static int one_window __ARGS((void));
+  static win_T *win_free_mem __ARGS((win_T *win, int *dirp, tabpage_T *tp));
+  static frame_T *win_altframe __ARGS((win_T *win, tabpage_T *tp));
+  static tabpage_T *alt_tabpage __ARGS((void));
+--- 23,28 ----
+***************
+*** 2083,2089 ****
+   * Return TRUE if there is only one window other than "aucmd_win" in the
+   * current tab page.
+   */
+!     static int
+  one_window()
+  {
+  #ifdef FEAT_AUTOCMD
+--- 2082,2088 ----
+   * Return TRUE if there is only one window other than "aucmd_win" in the
+   * current tab page.
+   */
+!     int
+  one_window()
+  {
+  #ifdef FEAT_AUTOCMD
+***************
+*** 2109,2115 ****
+   * Close window "win".  Only works for the current tab page.
+   * If "free_buf" is TRUE related buffer may be unloaded.
+   *
+!  * called by :quit, :close, :xit, :wq and findtag()
+   */
+      void
+  win_close(win, free_buf)
+--- 2108,2114 ----
+   * Close window "win".  Only works for the current tab page.
+   * If "free_buf" is TRUE related buffer may be unloaded.
+   *
+!  * Called by :quit, :close, :xit, :wq and findtag().
+   */
+      void
+  win_close(win, free_buf)
+***************
+*** 2222,2228 ****
+       * Close the link to the buffer.
+       */
+      if (win->w_buffer != NULL)
+!      close_buffer(win, win->w_buffer, free_buf ? DOBUF_UNLOAD : 0);
+  
+      /* Autocommands may have closed the window already, or closed the only
+       * other window or moved to another tab page. */
+--- 2221,2227 ----
+       * Close the link to the buffer.
+       */
+      if (win->w_buffer != NULL)
+!      close_buffer(win, win->w_buffer, free_buf ? DOBUF_UNLOAD : 0, TRUE);
+  
+      /* Autocommands may have closed the window already, or closed the only
+       * other window or moved to another tab page. */
+***************
+*** 2328,2334 ****
+      int              free_tp = FALSE;
+  
+      /* Close the link to the buffer. */
+!     close_buffer(win, win->w_buffer, free_buf ? DOBUF_UNLOAD : 0);
+  
+      /* Careful: Autocommands may have closed the tab page or made it the
+       * current tab page.  */
+--- 2327,2333 ----
+      int              free_tp = FALSE;
+  
+      /* Close the link to the buffer. */
+!     close_buffer(win, win->w_buffer, free_buf ? DOBUF_UNLOAD : 0, FALSE);
+  
+      /* Careful: Autocommands may have closed the tab page or made it the
+       * current tab page.  */
+*** ../vim-7.3.448/src/proto/window.pro        2010-08-15 21:57:28.000000000 +0200
+--- src/proto/window.pro       2012-02-22 14:08:28.000000000 +0100
+***************
+*** 1,13 ****
+  /* window.c */
+  void do_window __ARGS((int nchar, long Prenum, int xchar));
+  int win_split __ARGS((int size, int flags));
+! int win_split_ins __ARGS((int size, int flags, win_T *newwin, int dir));
+  int win_valid __ARGS((win_T *win));
+  int win_count __ARGS((void));
+  int make_windows __ARGS((int count, int vertical));
+  void win_move_after __ARGS((win_T *win1, win_T *win2));
+  void win_equal __ARGS((win_T *next_curwin, int current, int dir));
+  void close_windows __ARGS((buf_T *buf, int keep_curwin));
+  void win_close __ARGS((win_T *win, int free_buf));
+  void win_close_othertab __ARGS((win_T *win, int free_buf, tabpage_T *tp));
+  void win_free_all __ARGS((void));
+--- 1,14 ----
+  /* window.c */
+  void do_window __ARGS((int nchar, long Prenum, int xchar));
+  int win_split __ARGS((int size, int flags));
+! int win_split_ins __ARGS((int size, int flags, win_T *new_wp, int dir));
+  int win_valid __ARGS((win_T *win));
+  int win_count __ARGS((void));
+  int make_windows __ARGS((int count, int vertical));
+  void win_move_after __ARGS((win_T *win1, win_T *win2));
+  void win_equal __ARGS((win_T *next_curwin, int current, int dir));
+  void close_windows __ARGS((buf_T *buf, int keep_curwin));
++ int one_window __ARGS((void));
+  void win_close __ARGS((win_T *win, int free_buf));
+  void win_close_othertab __ARGS((win_T *win, int free_buf, tabpage_T *tp));
+  void win_free_all __ARGS((void));
+*** ../vim-7.3.448/src/version.c       2012-02-22 13:07:02.000000000 +0100
+--- src/version.c      2012-02-22 14:55:21.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     449,
+  /**/
+
+-- 
+From "know your smileys":
+ :-)-O Smiling doctor with stethoscope
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.450.patch0 b/vim/patches/vim-7.3.450.patch0
new file mode 100644 (file)
index 0000000..7112668
--- /dev/null
@@ -0,0 +1,81 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.450
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.450 (after 7.3.448)
+Problem:    Win32: Still a problem with "!start /b".
+Solution:   Fix pointer use. (Yasuhiro Matsumoto)
+Files:     src/os_win32.c
+
+
+*** ../vim-7.3.449/src/os_win32.c      2012-02-22 13:07:02.000000000 +0100
+--- src/os_win32.c     2012-02-22 15:29:56.000000000 +0100
+***************
+*** 4008,4028 ****
+           if (flags != CREATE_NEW_CONSOLE)
+           {
+               char_u  *subcmd;
+!              char_u  *cmd_shell = default_shell();
+  
+               subcmd = vim_strsave_escaped_ext(cmdbase, "|", '^', FALSE);
+               if (subcmd != NULL)
+               {
+                   /* make "cmd.exe /c arguments" */
+                   cmdlen = STRLEN(cmd_shell) + STRLEN(subcmd) + 5;
+-                  vim_free(subcmd);
+- 
+                   newcmd = lalloc(cmdlen, TRUE);
+                   if (newcmd != NULL)
+                       vim_snprintf((char *)newcmd, cmdlen, "%s /c %s",
+!                                                     default_shell, subcmd);
+                   else
+                       newcmd = cmdbase;
+               }
+           }
+  
+--- 4008,4030 ----
+           if (flags != CREATE_NEW_CONSOLE)
+           {
+               char_u  *subcmd;
+!              char_u  *cmd_shell = mch_getenv("COMSPEC");
+! 
+!              if (cmd_shell == NULL || *cmd_shell == NUL)
+!                  cmd_shell = default_shell();
+  
+               subcmd = vim_strsave_escaped_ext(cmdbase, "|", '^', FALSE);
+               if (subcmd != NULL)
+               {
+                   /* make "cmd.exe /c arguments" */
+                   cmdlen = STRLEN(cmd_shell) + STRLEN(subcmd) + 5;
+                   newcmd = lalloc(cmdlen, TRUE);
+                   if (newcmd != NULL)
+                       vim_snprintf((char *)newcmd, cmdlen, "%s /c %s",
+!                                                     cmd_shell, subcmd);
+                   else
+                       newcmd = cmdbase;
++                  vim_free(subcmd);
+               }
+           }
+  
+*** ../vim-7.3.449/src/version.c       2012-02-22 14:58:24.000000000 +0100
+--- src/version.c      2012-02-22 15:33:53.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     450,
+  /**/
+
+-- 
+You are only young once, but you can stay immature indefinitely.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.451.patch0 b/vim/patches/vim-7.3.451.patch0
new file mode 100644 (file)
index 0000000..25d1b04
--- /dev/null
@@ -0,0 +1,363 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.451
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.451
+Problem:    Tcl doesn't work on 64 bit MS-Windows.
+Solution:   Make it work. (Dave Bodenstab)
+Files:     src/Make_mvc.mak, src/if_tcl.c
+
+
+*** ../vim-7.3.450/src/Make_mvc.mak    2012-02-12 01:55:50.000000000 +0100
+--- src/Make_mvc.mak   2012-02-22 15:43:01.000000000 +0100
+***************
+*** 616,622 ****
+               -DDYNAMIC_TCL_VER=\"$(TCL_VER_LONG)\"
+  TCL_OBJ      = $(OUTDIR)\if_tcl.obj
+  TCL_INC      = /I "$(TCL)\Include" /I "$(TCL)"
+! TCL_LIB = $(TCL)\lib\tclstub$(TCL_VER).lib
+  !else
+  CFLAGS  = $(CFLAGS) -DFEAT_TCL
+  TCL_OBJ      = $(OUTDIR)\if_tcl.obj
+--- 616,622 ----
+               -DDYNAMIC_TCL_VER=\"$(TCL_VER_LONG)\"
+  TCL_OBJ      = $(OUTDIR)\if_tcl.obj
+  TCL_INC      = /I "$(TCL)\Include" /I "$(TCL)"
+! TCL_LIB = "$(TCL)\lib\tclstub$(TCL_VER).lib"
+  !else
+  CFLAGS  = $(CFLAGS) -DFEAT_TCL
+  TCL_OBJ      = $(OUTDIR)\if_tcl.obj
+*** ../vim-7.3.450/src/if_tcl.c        2011-07-27 14:15:41.000000000 +0200
+--- src/if_tcl.c       2012-02-22 15:47:00.000000000 +0100
+***************
+*** 79,90 ****
+  typedef struct
+  {
+      Tcl_Interp *interp;
+      int range_start, range_end;
+      int lbase;
+      char *curbuf, *curwin;
+  } tcl_info;
+  
+! static tcl_info tclinfo = { NULL, 0, 0, 0, NULL, NULL };
+  
+  #define VAR_RANGE1   "::vim::range(start)"
+  #define VAR_RANGE2   "::vim::range(begin)"
+--- 79,91 ----
+  typedef struct
+  {
+      Tcl_Interp *interp;
++     int exitvalue;
+      int range_start, range_end;
+      int lbase;
+      char *curbuf, *curwin;
+  } tcl_info;
+  
+! static tcl_info tclinfo = { NULL, 0, 0, 0, 0, NULL, NULL };
+  
+  #define VAR_RANGE1   "::vim::range(start)"
+  #define VAR_RANGE2   "::vim::range(begin)"
+***************
+*** 279,294 ****
+   ****************************************************************************/
+  
+  /*
+!  * Replace standard "exit" and "catch" commands.
+   *
+!  * This is a design flaw in Tcl -  the standard "exit" command just calls
+!  * exit() and kills the application.  It should return TCL_EXIT to the
+!  * app, which then decides if it wants to terminate or not.  In our case,
+!  * we just delete the Tcl interpreter (and create a new one with the next
+!  * :tcl command).
+   */
+- #define TCL_EXIT     5
+- 
+      static int
+  exitcmd(dummy, interp, objc, objv)
+      ClientData dummy UNUSED;
+--- 280,298 ----
+   ****************************************************************************/
+  
+  /*
+!  * Replace standard "exit" command.
+   *
+!  * Delete the Tcl interpreter; a new one will be created with the next
+!  * :tcl command). The exit code is saved (and retrieved in tclexit()).
+!  * Since Tcl's exit is never expected to return and this replacement
+!  * does, then (except for a trivial case) additional Tcl commands will
+!  * be run. Since the interpreter is now marked as deleted, an error
+!  * will be returned -- typically "attempt to call eval in deleted
+!  * interpreter". Hopefully, at this point, checks for TCL_ERROR take
+!  * place and control percolates back up to Vim -- but with this new error
+!  * string in the interpreter's result value. Therefore it would be
+!  * useless for this routine to return the exit code via Tcl_SetResult().
+   */
+      static int
+  exitcmd(dummy, interp, objc, objv)
+      ClientData dummy UNUSED;
+***************
+*** 305,351 ****
+               break;
+           /* FALLTHROUGH */
+       case 1:
+!          Tcl_SetObjResult(interp, Tcl_NewIntObj(value));
+!          return TCL_EXIT;
+!      default:
+!          Tcl_WrongNumArgs(interp, 1, objv, "?returnCode?");
+!     }
+!     return TCL_ERROR;
+! }
+  
+!     static int
+! catchcmd(dummy, interp, objc, objv)
+!     ClientData       dummy UNUSED;
+!     Tcl_Interp       *interp;
+!     int              objc;
+!     Tcl_Obj  *CONST objv[];
+! {
+!     char    *varname = NULL;
+!     int          result;
+! 
+!     switch (objc)
+!     {
+!      case 3:
+!          varname = Tcl_GetStringFromObj(objv[2], NULL);
+!          /* fallthrough */
+!      case 2:
+!          Tcl_ResetResult(interp);
+!          Tcl_AllowExceptions(interp);
+!          result = Tcl_EvalObj(interp, objv[1]);
+!          if (result == TCL_EXIT)
+!              return result;
+!          if (varname)
+!          {
+!              if (Tcl_SetVar(interp, varname, Tcl_GetStringResult(interp), 0) == NULL)
+!              {
+!                  Tcl_SetResult(interp, "couldn't save command result in variable", TCL_STATIC);
+!                  return TCL_ERROR;
+!              }
+!          }
+!          Tcl_SetObjResult(interp, Tcl_NewIntObj(result));
+!          return TCL_OK;
+       default:
+!          Tcl_WrongNumArgs(interp, 1, objv, "command ?varName?");
+      }
+      return TCL_ERROR;
+  }
+--- 309,320 ----
+               break;
+           /* FALLTHROUGH */
+       case 1:
+!          tclinfo.exitvalue = value;
+  
+!          Tcl_DeleteInterp(interp);
+!          break;
+       default:
+!          Tcl_WrongNumArgs(interp, 1, objv, "?returnCode?");
+      }
+      return TCL_ERROR;
+  }
+***************
+*** 372,377 ****
+--- 341,347 ----
+  /*
+   *  "::vim::buffer list" - create a list of buffer commands.
+   *  "::vim::buffer {N}" - create buffer command for buffer N.
++  *  "::vim::buffer exists {N}" - test if buffer N exists.
+   *  "::vim::buffer new" - create a new buffer (not implemented)
+   */
+      static int
+***************
+*** 1663,1669 ****
+  static Tcl_ChannelType channel_type =
+  {
+      "vimmessage",    /* typeName */
+!     NULL,            /* version */
+      channel_close,   /* closeProc */
+      channel_input,   /* inputProc */
+      channel_output,  /* outputProc */
+--- 1633,1639 ----
+  static Tcl_ChannelType channel_type =
+  {
+      "vimmessage",    /* typeName */
+!     TCL_CHANNEL_VERSION_2, /* version */
+      channel_close,   /* closeProc */
+      channel_input,   /* inputProc */
+      channel_output,  /* outputProc */
+***************
+*** 1678,1683 ****
+--- 1648,1655 ----
+      NULL,            /* flushProc */
+      NULL,            /* handlerProc */
+  #endif
++ /* The following should not be necessary since TCL_CHANNEL_VERSION_2 was
++  * set above */
+  #ifdef TCL_CHANNEL_VERSION_3
+      NULL,            /* wideSeekProc */
+  #endif
+***************
+*** 1741,1747 ****
+       Tcl_Interp *interp;
+       static Tcl_Channel ch1, ch2;
+  
+!      /* replace stdout and stderr */
+       ch1 = Tcl_CreateChannel(&channel_type, "vimout", VIMOUT, TCL_WRITABLE);
+       ch2 = Tcl_CreateChannel(&channel_type, "vimerr", VIMERR, TCL_WRITABLE);
+       Tcl_SetStdChannel(ch1, TCL_STDOUT);
+--- 1713,1721 ----
+       Tcl_Interp *interp;
+       static Tcl_Channel ch1, ch2;
+  
+!      /* Create replacement channels for stdout and stderr; this has to be
+!       * done each time an interpreter is created since the channels are closed
+!       * when the interpreter is deleted */
+       ch1 = Tcl_CreateChannel(&channel_type, "vimout", VIMOUT, TCL_WRITABLE);
+       ch2 = Tcl_CreateChannel(&channel_type, "vimerr", VIMERR, TCL_WRITABLE);
+       Tcl_SetStdChannel(ch1, TCL_STDOUT);
+***************
+*** 1761,1775 ****
+  #endif
+  
+       Tcl_SetChannelOption(interp, ch1, "-buffering", "line");
+       Tcl_SetChannelOption(interp, ch2, "-buffering", "line");
+  
+!      /* replace some standard Tcl commands */
+       Tcl_DeleteCommand(interp, "exit");
+       Tcl_CreateObjCommand(interp, "exit", exitcmd,
+           (ClientData)NULL, (Tcl_CmdDeleteProc *)NULL);
+-      Tcl_DeleteCommand(interp, "catch");
+-      Tcl_CreateObjCommand(interp, "catch", catchcmd,
+-          (ClientData)NULL, (Tcl_CmdDeleteProc *)NULL);
+  
+       /* new commands, in ::vim namespace */
+       Tcl_CreateObjCommand(interp, "::vim::buffer", buffercmd,
+--- 1735,1752 ----
+  #endif
+  
+       Tcl_SetChannelOption(interp, ch1, "-buffering", "line");
++ #ifdef WIN3264
++      Tcl_SetChannelOption(interp, ch1, "-translation", "lf");
++ #endif
+       Tcl_SetChannelOption(interp, ch2, "-buffering", "line");
++ #ifdef WIN3264
++      Tcl_SetChannelOption(interp, ch2, "-translation", "lf");
++ #endif
+  
+!      /* replace standard Tcl exit command */
+       Tcl_DeleteCommand(interp, "exit");
+       Tcl_CreateObjCommand(interp, "exit", exitcmd,
+           (ClientData)NULL, (Tcl_CmdDeleteProc *)NULL);
+  
+       /* new commands, in ::vim namespace */
+       Tcl_CreateObjCommand(interp, "::vim::buffer", buffercmd,
+***************
+*** 1821,1826 ****
+--- 1798,1805 ----
+       tclinfo.range_end = row2tcl(eap->line2);
+       tclupdatevars();
+      }
++ 
++     tclinfo.exitvalue = 0;
+      return OK;
+  }
+  
+***************
+*** 1884,1913 ****
+  {
+      int newerr = OK;
+  
+!     if (error == TCL_EXIT)
+      {
+-      int retval;
+       char buf[50];
+-      Tcl_Obj *robj;
+  
+!      robj = Tcl_GetObjResult(tclinfo.interp);
+!      if (Tcl_GetIntFromObj(tclinfo.interp, robj, &retval) != TCL_OK)
+       {
+!          EMSG(_("E281: TCL ERROR: exit code is not int!? Please report this to vim-dev@vim.org"));
+!          newerr = FAIL;
+       }
+       else
+!      {
+!          sprintf(buf, _("E572: exit code %d"), retval);
+!          tclerrmsg(buf);
+!          if (retval == 0)
+!          {
+!              did_emsg = 0;
+!              newerr = OK;
+!          }
+!          else
+!              newerr = FAIL;
+!      }
+  
+       tcldelthisinterp();
+      }
+--- 1863,1885 ----
+  {
+      int newerr = OK;
+  
+!     if (Tcl_InterpDeleted(tclinfo.interp)     /* True if we intercepted Tcl's exit command */
+! #if (TCL_MAJOR_VERSION == 8 && TCL_MINOR_VERSION >= 5) || TCL_MAJOR_VERSION > 8
+!      || Tcl_LimitExceeded(tclinfo.interp)  /* True if the interpreter cannot continue */
+! #endif
+!      )
+      {
+       char buf[50];
+  
+!      sprintf(buf, _("E572: exit code %d"), tclinfo.exitvalue);
+!      tclerrmsg(buf);
+!      if (tclinfo.exitvalue == 0)
+       {
+!          did_emsg = 0;
+!          newerr = OK;
+       }
+       else
+!          newerr = FAIL;
+  
+       tcldelthisinterp();
+      }
+***************
+*** 2021,2027 ****
+       Tcl_SetVar(tclinfo.interp, var_line, line, 0);
+       Tcl_AllowExceptions(tclinfo.interp);
+       err = Tcl_Eval(tclinfo.interp, script);
+!      if (err != TCL_OK)
+           break;
+       line = (char *)Tcl_GetVar(tclinfo.interp, var_line, 0);
+       if (line)
+--- 1993,2004 ----
+       Tcl_SetVar(tclinfo.interp, var_line, line, 0);
+       Tcl_AllowExceptions(tclinfo.interp);
+       err = Tcl_Eval(tclinfo.interp, script);
+!      if (err != TCL_OK
+!          || Tcl_InterpDeleted(tclinfo.interp)
+! #if (TCL_MAJOR_VERSION == 8 && TCL_MINOR_VERSION >= 5) || TCL_MAJOR_VERSION > 8
+!          || Tcl_LimitExceeded(tclinfo.interp)
+! #endif
+!         )
+           break;
+       line = (char *)Tcl_GetVar(tclinfo.interp, var_line, 0);
+       if (line)
+*** ../vim-7.3.450/src/version.c       2012-02-22 15:34:05.000000000 +0100
+--- src/version.c      2012-02-22 16:00:49.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     451,
+  /**/
+
+-- 
+Where do you want to crash today?
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.452.patch0 b/vim/patches/vim-7.3.452.patch0
new file mode 100644 (file)
index 0000000..295b2fe
--- /dev/null
@@ -0,0 +1,70 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.452
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.452
+Problem:    Undo broken when pasting close to the last line. (Andrey Radev)
+Solution:   Use a flag to remember if the deleted included the last line.
+           (Christian Brabandt)
+Files:     src/ops.c
+
+
+*** ../vim-7.3.451/src/ops.c   2012-01-10 13:46:18.000000000 +0100
+--- src/ops.c  2012-02-22 17:32:40.000000000 +0100
+***************
+*** 1943,1954 ****
+--- 1943,1956 ----
+       else                            /* delete characters between lines */
+       {
+           pos_T   curpos;
++          int     delete_last_line;
+  
+           /* save deleted and changed lines for undo */
+           if (u_save((linenr_T)(curwin->w_cursor.lnum - 1),
+                (linenr_T)(curwin->w_cursor.lnum + oap->line_count)) == FAIL)
+               return FAIL;
+  
++          delete_last_line = (oap->end.lnum == curbuf->b_ml.ml_line_count);
+           truncate_line(TRUE);        /* delete from cursor to end of line */
+  
+           curpos = curwin->w_cursor;  /* remember curwin->w_cursor */
+***************
+*** 1956,1962 ****
+           del_lines((long)(oap->line_count - 2), FALSE);
+  
+           n = (oap->end.col + 1 - !oap->inclusive);
+!          if (oap->inclusive && oap->end.lnum == curbuf->b_ml.ml_line_count
+                   && n > (int)STRLEN(ml_get(oap->end.lnum)))
+           {
+               /* Special case: gH<Del> deletes the last line. */
+--- 1958,1964 ----
+           del_lines((long)(oap->line_count - 2), FALSE);
+  
+           n = (oap->end.col + 1 - !oap->inclusive);
+!          if (oap->inclusive && delete_last_line
+                   && n > (int)STRLEN(ml_get(oap->end.lnum)))
+           {
+               /* Special case: gH<Del> deletes the last line. */
+*** ../vim-7.3.451/src/version.c       2012-02-22 16:01:53.000000000 +0100
+--- src/version.c      2012-02-22 17:37:18.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     452,
+  /**/
+
+-- 
+From "know your smileys":
+ =):-) Uncle Sam
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.453.patch0 b/vim/patches/vim-7.3.453.patch0
new file mode 100644 (file)
index 0000000..cf0f0e7
--- /dev/null
@@ -0,0 +1,58 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.453
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.453
+Problem:    Pasting in the command line is slow.
+Solution:   Don't redraw if there is another character to read. (Dominique
+           Pelle)
+Files:     src/ex_getln.c
+
+
+*** ../vim-7.3.452/src/ex_getln.c      2012-02-22 14:58:24.000000000 +0100
+--- src/ex_getln.c     2012-02-22 17:53:32.000000000 +0100
+***************
+*** 1852,1859 ****
+  # endif
+               )
+           /* Always redraw the whole command line to fix shaping and
+!           * right-left typing.  Not efficient, but it works. */
+!          redrawcmd();
+  #endif
+      }
+  
+--- 1852,1862 ----
+  # endif
+               )
+           /* Always redraw the whole command line to fix shaping and
+!           * right-left typing.  Not efficient, but it works.
+!           * Do it only when there are no characters left to read
+!           * to avoid useless intermediate redraws. */
+!          if (vpeekc() == NUL)
+!              redrawcmd();
+  #endif
+      }
+  
+*** ../vim-7.3.452/src/version.c       2012-02-22 17:37:55.000000000 +0100
+--- src/version.c      2012-02-22 17:56:59.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     453,
+  /**/
+
+-- 
+From "know your smileys":
+ <<<:-{    Worf (Never smiles anyways, so he's a bad smiley)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.454.patch0 b/vim/patches/vim-7.3.454.patch0
new file mode 100644 (file)
index 0000000..8658926
--- /dev/null
@@ -0,0 +1,84 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.454
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.454
+Problem:    Re-allocating memory slows Vim down.
+Solution:   Use realloc() in ga_grow(). (Dominique Pelle)
+Files:     src/misc2.c
+
+
+*** ../vim-7.3.453/src/misc2.c 2012-02-22 14:58:24.000000000 +0100
+--- src/misc2.c        2012-02-22 18:07:45.000000000 +0100
+***************
+*** 2064,2087 ****
+      garray_T *gap;
+      int              n;
+  {
+!     size_t   len;
+      char_u   *pp;
+  
+      if (gap->ga_maxlen - gap->ga_len < n)
+      {
+       if (n < gap->ga_growsize)
+           n = gap->ga_growsize;
+!      len = gap->ga_itemsize * (gap->ga_len + n);
+!      pp = alloc_clear((unsigned)len);
+       if (pp == NULL)
+           return FAIL;
+       gap->ga_maxlen = gap->ga_len + n;
+-      if (gap->ga_data != NULL)
+-      {
+-          mch_memmove(pp, gap->ga_data,
+-                                    (size_t)(gap->ga_itemsize * gap->ga_len));
+-          vim_free(gap->ga_data);
+-      }
+       gap->ga_data = pp;
+      }
+      return OK;
+--- 2064,2085 ----
+      garray_T *gap;
+      int              n;
+  {
+!     size_t   old_len;
+!     size_t   new_len;
+      char_u   *pp;
+  
+      if (gap->ga_maxlen - gap->ga_len < n)
+      {
+       if (n < gap->ga_growsize)
+           n = gap->ga_growsize;
+!      new_len = gap->ga_itemsize * (gap->ga_len + n);
+!      pp = (gap->ga_data == NULL)
+!                      ? alloc(new_len) : vim_realloc(gap->ga_data, new_len);
+       if (pp == NULL)
+           return FAIL;
++      old_len = gap->ga_itemsize * gap->ga_maxlen;
++      vim_memset(pp + old_len, 0, new_len - old_len);
+       gap->ga_maxlen = gap->ga_len + n;
+       gap->ga_data = pp;
+      }
+      return OK;
+*** ../vim-7.3.453/src/version.c       2012-02-22 17:58:00.000000000 +0100
+--- src/version.c      2012-02-22 18:09:42.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     454,
+  /**/
+
+-- 
+From "know your smileys":
+ (X0||)   Double hamburger with lettuce and tomato
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.455.patch0 b/vim/patches/vim-7.3.455.patch0
new file mode 100644 (file)
index 0000000..217b00d
--- /dev/null
@@ -0,0 +1,70 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.455
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.455
+Problem:    Using many continuation lines can be slow.
+Solution:   Adjust the reallocation size to the current length.
+Files:     src/ex_cmds2.c
+
+
+*** ../vim-7.3.454/src/ex_cmds2.c      2012-02-11 20:40:49.000000000 +0100
+--- src/ex_cmds2.c     2012-02-22 18:24:11.000000000 +0100
+***************
+*** 3448,3454 ****
+       {
+           garray_T    ga;
+  
+!          ga_init2(&ga, (int)sizeof(char_u), 200);
+           ga_concat(&ga, line);
+           ga_concat(&ga, p + 1);
+           for (;;)
+--- 3448,3454 ----
+       {
+           garray_T    ga;
+  
+!          ga_init2(&ga, (int)sizeof(char_u), 400);
+           ga_concat(&ga, line);
+           ga_concat(&ga, p + 1);
+           for (;;)
+***************
+*** 3460,3465 ****
+--- 3460,3474 ----
+               p = skipwhite(sp->nextline);
+               if (*p != '\\')
+                   break;
++              /* Adjust the growsize to the current length to speed up
++               * concatenating many lines. */
++              if (ga.ga_len > 400)
++              {
++                  if (ga.ga_len > 8000)
++                      ga.ga_growsize = 8000;
++                  else
++                      ga.ga_growsize = ga.ga_len;
++              }
+               ga_concat(&ga, p + 1);
+           }
+           ga_append(&ga, NUL);
+*** ../vim-7.3.454/src/version.c       2012-02-22 18:12:29.000000000 +0100
+--- src/version.c      2012-02-22 18:24:58.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     455,
+  /**/
+
+-- 
+From "know your smileys":
+ :-X   My lips are sealed
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.456.patch0 b/vim/patches/vim-7.3.456.patch0
new file mode 100644 (file)
index 0000000..26fc2a9
--- /dev/null
@@ -0,0 +1,376 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.456
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.456
+Problem:    ":tab drop file" has several problems, including moving the
+           current window and opening a new tab for a file that already has a
+           window.
+Solution:   Refactor ":tab drop" handling. (Hirohito Higashi)
+Files:     src/buffer.c, src/testdir/test62.in, src/testdir/test62.ok
+
+
+*** ../vim-7.3.455/src/buffer.c        2012-02-22 14:58:24.000000000 +0100
+--- src/buffer.c       2012-02-22 19:08:34.000000000 +0100
+***************
+*** 4405,4411 ****
+  {
+      int              i;
+      win_T    *wp, *wpnext;
+!     char_u   *opened;        /* array of flags for which args are open */
+      int              opened_len;     /* length of opened[] */
+      int              use_firstwin = FALSE;   /* use first window for arglist */
+      int              split_ret = OK;
+--- 4405,4416 ----
+  {
+      int              i;
+      win_T    *wp, *wpnext;
+!     char_u   *opened;        /* Array of weight for which args are open:
+!                               *  0: not opened
+!                               *  1: opened in other tab
+!                               *  2: opened in curtab
+!                               *  3: opened in curtab and curwin
+!                               */
+      int              opened_len;     /* length of opened[] */
+      int              use_firstwin = FALSE;   /* use first window for arglist */
+      int              split_ret = OK;
+***************
+*** 4414,4419 ****
+--- 4419,4426 ----
+      buf_T    *buf;
+      tabpage_T        *tpnext;
+      int              had_tab = cmdmod.tab;
++     win_T    *old_curwin, *last_curwin;
++     tabpage_T        *old_curtab, *last_curtab;
+      win_T    *new_curwin = NULL;
+      tabpage_T        *new_curtab = NULL;
+  
+***************
+*** 4430,4435 ****
+--- 4437,4451 ----
+      if (opened == NULL)
+       return;
+  
++     /* Autocommands may do anything to the argument list.  Make sure it's not
++      * freed while we are working here by "locking" it.  We still have to
++      * watch out for its size to be changed. */
++     alist = curwin->w_alist;
++     ++alist->al_refcount;
++ 
++     old_curwin = curwin;
++     old_curtab = curtab;
++ 
+  #ifdef FEAT_GUI
+      need_mouse_correct = TRUE;
+  #endif
+***************
+*** 4451,4486 ****
+           wpnext = wp->w_next;
+           buf = wp->w_buffer;
+           if (buf->b_ffname == NULL
+!                  || buf->b_nwindows > 1
+  #ifdef FEAT_VERTSPLIT
+                   || wp->w_width != Columns
+  #endif
+                   )
+!              i = ARGCOUNT;
+           else
+           {
+               /* check if the buffer in this window is in the arglist */
+!              for (i = 0; i < ARGCOUNT; ++i)
+               {
+!                  if (ARGLIST[i].ae_fnum == buf->b_fnum
+!                          || fullpathcmp(alist_name(&ARGLIST[i]),
+!                                            buf->b_ffname, TRUE) & FPC_SAME)
+                   {
+!                      if (i < opened_len)
+                       {
+!                          opened[i] = TRUE;
+                           if (i == 0)
+                           {
+                               new_curwin = wp;
+                               new_curtab = curtab;
+                           }
+                       }
+!                      if (wp->w_alist != curwin->w_alist)
+                       {
+                           /* Use the current argument list for all windows
+                            * containing a file from it. */
+                           alist_unlink(wp->w_alist);
+!                          wp->w_alist = curwin->w_alist;
+                           ++wp->w_alist->al_refcount;
+                       }
+                       break;
+--- 4467,4517 ----
+           wpnext = wp->w_next;
+           buf = wp->w_buffer;
+           if (buf->b_ffname == NULL
+!                  || (!keep_tabs && buf->b_nwindows > 1)
+  #ifdef FEAT_VERTSPLIT
+                   || wp->w_width != Columns
+  #endif
+                   )
+!              i = opened_len;
+           else
+           {
+               /* check if the buffer in this window is in the arglist */
+!              for (i = 0; i < opened_len; ++i)
+               {
+!                  if (i < alist->al_ga.ga_len
+!                          && (AARGLIST(alist)[i].ae_fnum == buf->b_fnum
+!                              || fullpathcmp(alist_name(&AARGLIST(alist)[i]),
+!                                            buf->b_ffname, TRUE) & FPC_SAME))
+                   {
+!                      int weight = 1;
+! 
+!                      if (old_curtab == curtab)
+!                      {
+!                          ++weight;
+!                          if (old_curwin == wp)
+!                              ++weight;
+!                      }
+! 
+!                      if (weight > (int)opened[i])
+                       {
+!                          opened[i] = (char_u)weight;
+                           if (i == 0)
+                           {
++                              if (new_curwin != NULL)
++                                  new_curwin->w_arg_idx = opened_len;
+                               new_curwin = wp;
+                               new_curtab = curtab;
+                           }
+                       }
+!                      else if (keep_tabs)
+!                          i = opened_len;
+! 
+!                      if (wp->w_alist != alist)
+                       {
+                           /* Use the current argument list for all windows
+                            * containing a file from it. */
+                           alist_unlink(wp->w_alist);
+!                          wp->w_alist = alist;
+                           ++wp->w_alist->al_refcount;
+                       }
+                       break;
+***************
+*** 4489,4495 ****
+           }
+           wp->w_arg_idx = i;
+  
+!          if (i == ARGCOUNT && !keep_tabs)    /* close this window */
+           {
+               if (P_HID(buf) || forceit || buf->b_nwindows > 1
+                                                       || !bufIsChanged(buf))
+--- 4520,4526 ----
+           }
+           wp->w_arg_idx = i;
+  
+!          if (i == opened_len && !keep_tabs)/* close this window */
+           {
+               if (P_HID(buf) || forceit || buf->b_nwindows > 1
+                                                       || !bufIsChanged(buf))
+***************
+*** 4511,4517 ****
+                   }
+  #ifdef FEAT_WINDOWS
+                   /* don't close last window */
+!                  if (firstwin == lastwin && first_tabpage->tp_next == NULL)
+  #endif
+                       use_firstwin = TRUE;
+  #ifdef FEAT_WINDOWS
+--- 4542,4549 ----
+                   }
+  #ifdef FEAT_WINDOWS
+                   /* don't close last window */
+!                  if (firstwin == lastwin
+!                          && (first_tabpage->tp_next == NULL || !had_tab))
+  #endif
+                       use_firstwin = TRUE;
+  #ifdef FEAT_WINDOWS
+***************
+*** 4545,4564 ****
+       * Open a window for files in the argument list that don't have one.
+       * ARGCOUNT may change while doing this, because of autocommands.
+       */
+!     if (count > ARGCOUNT || count <= 0)
+!      count = ARGCOUNT;
+! 
+!     /* Autocommands may do anything to the argument list.  Make sure it's not
+!      * freed while we are working here by "locking" it.  We still have to
+!      * watch out for its size to be changed. */
+!     alist = curwin->w_alist;
+!     ++alist->al_refcount;
+  
+  #ifdef FEAT_AUTOCMD
+      /* Don't execute Win/Buf Enter/Leave autocommands here. */
+      ++autocmd_no_enter;
+      ++autocmd_no_leave;
+  #endif
+      win_enter(lastwin, FALSE);
+  #ifdef FEAT_WINDOWS
+      /* ":drop all" should re-use an empty window to avoid "--remote-tab"
+--- 4577,4592 ----
+       * Open a window for files in the argument list that don't have one.
+       * ARGCOUNT may change while doing this, because of autocommands.
+       */
+!     if (count > opened_len || count <= 0)
+!      count = opened_len;
+  
+  #ifdef FEAT_AUTOCMD
+      /* Don't execute Win/Buf Enter/Leave autocommands here. */
+      ++autocmd_no_enter;
+      ++autocmd_no_leave;
+  #endif
++     last_curwin = curwin;
++     last_curtab = curtab;
+      win_enter(lastwin, FALSE);
+  #ifdef FEAT_WINDOWS
+      /* ":drop all" should re-use an empty window to avoid "--remote-tab"
+***************
+*** 4568,4578 ****
+       use_firstwin = TRUE;
+  #endif
+  
+!     for (i = 0; i < count && i < alist->al_ga.ga_len && !got_int; ++i)
+      {
+       if (alist == &global_alist && i == global_alist.al_ga.ga_len - 1)
+           arg_had_last = TRUE;
+!      if (i < opened_len && opened[i])
+       {
+           /* Move the already present window to below the current window */
+           if (curwin->w_arg_idx != i)
+--- 4596,4606 ----
+       use_firstwin = TRUE;
+  #endif
+  
+!     for (i = 0; i < count && i < opened_len && !got_int; ++i)
+      {
+       if (alist == &global_alist && i == global_alist.al_ga.ga_len - 1)
+           arg_had_last = TRUE;
+!      if (opened[i] > 0)
+       {
+           /* Move the already present window to below the current window */
+           if (curwin->w_arg_idx != i)
+***************
+*** 4581,4587 ****
+               {
+                   if (wpnext->w_arg_idx == i)
+                   {
+!                      win_move_after(wpnext, curwin);
+                       break;
+                   }
+               }
+--- 4609,4621 ----
+               {
+                   if (wpnext->w_arg_idx == i)
+                   {
+!                      if (keep_tabs)
+!                      {
+!                          new_curwin = wpnext;
+!                          new_curtab = curtab;
+!                      }
+!                      else
+!                          win_move_after(wpnext, curwin);
+                       break;
+                   }
+               }
+***************
+*** 4636,4641 ****
+--- 4670,4683 ----
+  #ifdef FEAT_AUTOCMD
+      --autocmd_no_enter;
+  #endif
++     /* restore last referenced tabpage's curwin */
++     if (last_curtab != new_curtab)
++     {
++      if (valid_tabpage(last_curtab))
++          goto_tabpage_tp(last_curtab);
++      if (win_valid(last_curwin))
++          win_enter(last_curwin, FALSE);
++     }
+      /* to window with first arg */
+      if (valid_tabpage(new_curtab))
+       goto_tabpage_tp(new_curtab);
+*** ../vim-7.3.455/src/testdir/test62.in       2010-08-15 21:57:29.000000000 +0200
+--- src/testdir/test62.in      2012-02-22 18:45:10.000000000 +0100
+***************
+*** 50,55 ****
+--- 50,92 ----
+  :call append(line('$'), test_status)
+  :"
+  :"
++ :" Test for ":tab drop exist-file" to keep current window.
++ :sp test1
++ :tab drop test1
++ :let test_status = 'tab drop 1: fail'
++ :if tabpagenr('$') == 1 && winnr('$') == 2 && winnr() == 1
++ :    let test_status = 'tab drop 1: pass'
++ :endif
++ :close
++ :call append(line('$'), test_status)
++ :"
++ :"
++ :" Test for ":tab drop new-file" to keep current window of tabpage 1.
++ :split
++ :tab drop newfile
++ :let test_status = 'tab drop 2: fail'
++ :if tabpagenr('$') == 2 && tabpagewinnr(1, '$') == 2 && tabpagewinnr(1) == 1
++ :    let test_status = 'tab drop 2: pass'
++ :endif
++ :tabclose
++ :q
++ :call append(line('$'), test_status)
++ :"
++ :"
++ :" Test for ":tab drop multi-opend-file" to keep current tabpage and window.
++ :new test1
++ :tabnew
++ :new test1
++ :tab drop test1
++ :let test_status = 'tab drop 3: fail'
++ :if tabpagenr() == 2 && tabpagewinnr(2, '$') == 2 && tabpagewinnr(2) == 1
++ :    let test_status = 'tab drop 3: pass'
++ :endif
++ :tabclose
++ :q
++ :call append(line('$'), test_status)
++ :"
++ :"
+  :/^Results/,$w! test.out
+  :qa!
+  ENDTEST
+*** ../vim-7.3.455/src/testdir/test62.ok       2010-08-15 21:57:29.000000000 +0200
+--- src/testdir/test62.ok      2012-02-22 18:45:10.000000000 +0100
+***************
+*** 5,7 ****
+--- 5,10 ----
+  this is tab page 4
+  gettabvar: pass
+  settabvar: pass
++ tab drop 1: pass
++ tab drop 2: pass
++ tab drop 3: pass
+*** ../vim-7.3.455/src/version.c       2012-02-22 18:29:29.000000000 +0100
+--- src/version.c      2012-02-22 19:11:52.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     456,
+  /**/
+
+-- 
+% cat /usr/include/life.h
+void life(void);
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.457.patch0 b/vim/patches/vim-7.3.457.patch0
new file mode 100644 (file)
index 0000000..e60d624
--- /dev/null
@@ -0,0 +1,81 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.457
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.457
+Problem:    When setting $VIMRUNTIME later the directory for fetching
+            translated messages is not adjusted.
+Solution:   Put bindtextdomain() in vim_setenv().
+Files:      src/misc1.c
+
+
+*** ../vim-7.3.456/src/misc1.c 2012-02-05 22:05:44.000000000 +0100
+--- src/misc1.c        2012-02-26 13:27:28.000000000 +0100
+***************
+*** 4133,4149 ****
+       {
+           vim_setenv((char_u *)"VIMRUNTIME", p);
+           didset_vimruntime = TRUE;
+- #ifdef FEAT_GETTEXT
+-          {
+-              char_u  *buf = concat_str(p, (char_u *)"/lang");
+- 
+-              if (buf != NULL)
+-              {
+-                  bindtextdomain(VIMPACKAGE, (char *)buf);
+-                  vim_free(buf);
+-              }
+-          }
+- #endif
+       }
+       else
+       {
+--- 4133,4138 ----
+***************
+*** 4221,4226 ****
+--- 4210,4231 ----
+       putenv((char *)envbuf);
+      }
+  #endif
++ #ifdef FEAT_GETTEXT
++     /*
++      * When setting $VIMRUNTIME adjust the directory to find message
++      * translations to $VIMRUNTIME/lang.
++      */
++     if (*val != NUL && STRICMP(name, "VIMRUNTIME") == 0)
++     {
++      char_u  *buf = concat_str(val, (char_u *)"/lang");
++ 
++      if (buf != NULL)
++      {
++          bindtextdomain(VIMPACKAGE, (char *)buf);
++          vim_free(buf);
++      }
++     }
++ #endif
+  }
+  
+  #if defined(FEAT_CMDL_COMPL) || defined(PROTO)
+*** ../vim-7.3.456/src/version.c       2012-02-22 19:13:00.000000000 +0100
+--- src/version.c      2012-02-29 13:47:09.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     457,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+118. You are on a first-name basis with your ISP's staff.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.458.patch0 b/vim/patches/vim-7.3.458.patch0
new file mode 100644 (file)
index 0000000..9bd4407
--- /dev/null
@@ -0,0 +1,52 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.458
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.458
+Problem:    Crash when calling smsg() during startup.
+Solution:   Don't use 'shortmess' when it is not set yet.
+Files:     src/option.c
+
+
+*** ../vim-7.3.457/src/option.c        2012-02-20 22:18:22.000000000 +0100
+--- src/option.c       2012-02-26 13:14:48.000000000 +0100
+***************
+*** 10984,10990 ****
+  shortmess(x)
+      int          x;
+  {
+!     return (   vim_strchr(p_shm, x) != NULL
+           || (vim_strchr(p_shm, 'a') != NULL
+               && vim_strchr((char_u *)SHM_A, x) != NULL));
+  }
+--- 10984,10991 ----
+  shortmess(x)
+      int          x;
+  {
+!     return p_shm != NULL &&
+!          (   vim_strchr(p_shm, x) != NULL
+           || (vim_strchr(p_shm, 'a') != NULL
+               && vim_strchr((char_u *)SHM_A, x) != NULL));
+  }
+*** ../vim-7.3.457/src/version.c       2012-02-29 13:49:03.000000000 +0100
+--- src/version.c      2012-02-29 13:50:52.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     458,
+  /**/
+
+-- 
+Support your right to bare arms!  Wear short sleeves!
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.459.patch0 b/vim/patches/vim-7.3.459.patch0
new file mode 100644 (file)
index 0000000..d75a38b
--- /dev/null
@@ -0,0 +1,71 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.459
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.459
+Problem:    Win32: Warnings for type conversion.
+Solution:   Add type casts. (Mike Williams)
+Files:     src/misc2.c, src/os_win32.c
+
+
+*** ../vim-7.3.458/src/misc2.c 2012-02-22 18:12:29.000000000 +0100
+--- src/misc2.c        2012-02-29 13:44:17.000000000 +0100
+***************
+*** 2074,2080 ****
+           n = gap->ga_growsize;
+       new_len = gap->ga_itemsize * (gap->ga_len + n);
+       pp = (gap->ga_data == NULL)
+!                      ? alloc(new_len) : vim_realloc(gap->ga_data, new_len);
+       if (pp == NULL)
+           return FAIL;
+       old_len = gap->ga_itemsize * gap->ga_maxlen;
+--- 2074,2080 ----
+           n = gap->ga_growsize;
+       new_len = gap->ga_itemsize * (gap->ga_len + n);
+       pp = (gap->ga_data == NULL)
+!            ? alloc((unsigned)new_len) : vim_realloc(gap->ga_data, new_len);
+       if (pp == NULL)
+           return FAIL;
+       old_len = gap->ga_itemsize * gap->ga_maxlen;
+*** ../vim-7.3.458/src/os_win32.c      2012-02-22 15:34:05.000000000 +0100
+--- src/os_win32.c     2012-02-29 13:43:39.000000000 +0100
+***************
+*** 264,270 ****
+      static void
+  unescape_shellxquote(char_u *p, char_u *escaped)
+  {
+!     int          l = STRLEN(p);
+      int          n;
+  
+      while (*p != NUL)
+--- 264,270 ----
+      static void
+  unescape_shellxquote(char_u *p, char_u *escaped)
+  {
+!     int          l = (int)STRLEN(p);
+      int          n;
+  
+      while (*p != NUL)
+*** ../vim-7.3.458/src/version.c       2012-02-29 13:51:32.000000000 +0100
+--- src/version.c      2012-02-29 13:58:08.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     459,
+  /**/
+
+-- 
+"A clear conscience is usually the sign of a bad memory."
+                             -- Steven Wright
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.460.patch0 b/vim/patches/vim-7.3.460.patch0
new file mode 100644 (file)
index 0000000..c1d7e85
--- /dev/null
@@ -0,0 +1,89 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.460
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.460
+Problem:    Win32: UPX does not compress 64 bit binaries.
+Solution:   Mention and add the alternative: mpress. (Dave Bodenstab)
+Files:     src/INSTALLpc.txt, src/Make_ming.mak
+
+
+*** ../vim-7.3.459/src/INSTALLpc.txt   2011-07-15 13:51:57.000000000 +0200
+--- src/INSTALLpc.txt  2012-02-29 14:01:34.000000000 +0100
+***************
+*** 239,244 ****
+--- 239,250 ----
+  found at
+      http://www.upx.org/
+  
++ As of 2011, UPX still does not support compressing 64-bit EXE's; if you have
++ built a 64-bit vim then an alternative to UPX is 'MPRESS'. MPRESS can be found
++ at:
++     http://www.matcode.com/mpress.htm
++ 
++ 
+  ADDITION: NLS support with MinGW
+  
+  (by Eduardo F. Amatria <eferna1@platea.pntic.mec.es>)
+*** ../vim-7.3.459/src/Make_ming.mak   2011-10-12 14:11:43.000000000 +0200
+--- src/Make_ming.mak  2012-02-29 16:54:09.000000000 +0100
+***************
+*** 14,22 ****
+  # it's just run out of memory or something.  Run again, and it will continue
+  # with 'xxd'.
+  #
+! # "make upx" makes *compressed* versions of the GUI and console EXEs, using the
+! # excellent UPX compressor:
+  #     http://upx.sourceforge.net/
+  #
+  # Maintained by Ron Aaron <ronaharon@yahoo.com>
+  # updated 2003 Jan 20
+--- 14,24 ----
+  # it's just run out of memory or something.  Run again, and it will continue
+  # with 'xxd'.
+  #
+! # "make upx" makes *compressed* versions of the 32 bit GUI and console EXEs,
+! # using the excellent UPX compressor:
+  #     http://upx.sourceforge.net/
++ # "make mpress" uses the MPRESS compressor for 32- and 64-bit EXEs:
++ #     http://www.matcode.com/mpress.htm
+  #
+  # Maintained by Ron Aaron <ronaharon@yahoo.com>
+  # updated 2003 Jan 20
+***************
+*** 640,645 ****
+--- 642,651 ----
+       upx gvim.exe
+       upx vim.exe
+  
++ mpress: exes
++      mpress gvim.exe
++      mpress vim.exe
++ 
+  xxd/xxd.exe: xxd/xxd.c
+       $(MAKE) -C xxd -f Make_ming.mak CC=$(CC)
+  
+*** ../vim-7.3.459/src/version.c       2012-02-29 13:58:43.000000000 +0100
+--- src/version.c      2012-02-29 16:54:40.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     460,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+119. You are reading a book and look for the scroll bar to get to
+     the next page.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.461.patch0 b/vim/patches/vim-7.3.461.patch0
new file mode 100644 (file)
index 0000000..53c83c0
--- /dev/null
@@ -0,0 +1,243 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.461
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.461
+Problem:    The InsertCharPre autocommand event is not triggered during
+           completion and when typing several characters quickly.
+Solution:   Also trigger InsertCharPre during completion.  Do not read ahead
+           when an InsertCharPre autocommand is defined. (Yasuhiro Matsumoto)
+Files:     src/edit.c, src/fileio.c, src/proto/fileio.pro
+
+
+*** ../vim-7.3.460/src/edit.c  2012-02-04 23:34:57.000000000 +0100
+--- src/edit.c 2012-02-29 18:17:31.000000000 +0100
+***************
+*** 259,264 ****
+--- 259,267 ----
+  static void ins_try_si __ARGS((int c));
+  #endif
+  static colnr_T get_nolist_virtcol __ARGS((void));
++ #ifdef FEAT_AUTOCMD
++ static char_u *do_insert_char_pre __ARGS((int c));
++ #endif
+  
+  static colnr_T       Insstart_textlen;       /* length of line when insert started */
+  static colnr_T       Insstart_blank_vcol;    /* vcol for first inserted blank */
+***************
+*** 784,790 ****
+                * completion: Add to "compl_leader". */
+               if (ins_compl_accept_char(c))
+               {
+!                  ins_compl_addleader(c);
+                   continue;
+               }
+  
+--- 787,806 ----
+                * completion: Add to "compl_leader". */
+               if (ins_compl_accept_char(c))
+               {
+! #ifdef FEAT_AUTOCMD
+!                  /* Trigger InsertCharPre. */
+!                  char_u *str = do_insert_char_pre(c);
+!                  char_u *p;
+! 
+!                  if (str != NULL)
+!                  {
+!                      for (p = str; *p != NUL; mb_ptr_adv(p))
+!                          ins_compl_addleader(PTR2CHAR(p));
+!                      vim_free(str);
+!                  }
+!                  else
+! #endif
+!                      ins_compl_addleader(c);
+                   continue;
+               }
+  
+***************
+*** 1393,1426 ****
+  #ifdef FEAT_AUTOCMD
+           if (!p_paste)
+           {
+!              /* Trigger the InsertCharPre event.  Lock the text to avoid
+!               * weird things from happening. */
+!              set_vim_var_char(c);
+!              ++textlock;
+!              if (apply_autocmds(EVENT_INSERTCHARPRE, NULL, NULL,
+!                                                             FALSE, curbuf))
+!              {
+!                  /* Get the new value of v:char.  If it is more than one
+!                   * character insert it literally. */
+!                  char_u *s = get_vim_var_str(VV_CHAR);
+!                  if (MB_CHARLEN(s) > 1)
+                   {
+!                      if (stop_arrow() != FAIL)
+                       {
+!                          ins_str(s);
+!                          AppendToRedobuffLit(s, -1);
+                       }
+!                      c = NUL;
+                   }
+!                  else
+!                      c = PTR2CHAR(s);
+               }
+  
+!              set_vim_var_string(VV_CHAR, NULL, -1);
+!              --textlock;
+! 
+!              /* If the new value is an empty string then don't insert a
+!               * char. */
+               if (c == NUL)
+                   break;
+           }
+--- 1409,1439 ----
+  #ifdef FEAT_AUTOCMD
+           if (!p_paste)
+           {
+!              /* Trigger InsertCharPre. */
+!              char_u *str = do_insert_char_pre(c);
+!              char_u *p;
+! 
+!              if (str != NULL)
+!              {
+!                  if (*str != NUL && stop_arrow() != FAIL)
+                   {
+!                      /* Insert the new value of v:char literally. */
+!                      for (p = str; *p != NUL; mb_ptr_adv(p))
+                       {
+!                          c = PTR2CHAR(p);
+!                          if (c == CAR || c == K_KENTER || c == NL)
+!                              ins_eol(c);
+!                          else
+!                              ins_char(c);
+                       }
+!                      AppendToRedobuffLit(str, -1);
+                   }
+!                  vim_free(str);
+!                  c = NUL;
+               }
+  
+!              /* If the new value is already inserted or an empty string
+!               * then don't insert any character. */
+               if (c == NUL)
+                   break;
+           }
+***************
+*** 5883,5888 ****
+--- 5896,5903 ----
+       * Don't do this when 'cindent' or 'indentexpr' is set, because we might
+       * need to re-indent at a ':', or any other character (but not what
+       * 'paste' is set)..
++      * Don't do this when there an InsertCharPre autocommand is defined,
++      * because we need to fire the event for every character.
+       */
+  #ifdef USE_ON_FLY_SCROLL
+      dont_scroll = FALSE;             /* allow scrolling here */
+***************
+*** 5900,5905 ****
+--- 5915,5923 ----
+  #ifdef FEAT_RIGHTLEFT
+           && !p_ri
+  #endif
++ #ifdef FEAT_AUTOCMD
++          && !has_insertcharpre()
++ #endif
+              )
+      {
+  #define INPUT_BUFLEN 100
+***************
+*** 10068,10070 ****
+--- 10086,10123 ----
+      validate_virtcol();
+      return curwin->w_virtcol;
+  }
++ 
++ #ifdef FEAT_AUTOCMD
++ /*
++  * Handle the InsertCharPre autocommand.
++  * "c" is the character that was typed.
++  * Return a pointer to allocated memory with the replacement string.
++  * Return NULL to continue inserting "c".
++  */
++     static char_u *
++ do_insert_char_pre(c)
++     int c;
++ {
++     char_u *res;
++ 
++     /* Return quickly when there is nothing to do. */
++     if (!has_insertcharpre())
++      return NULL;
++ 
++     /* Lock the text to avoid weird things from happening. */
++     ++textlock;
++     set_vim_var_char(c);  /* set v:char */
++ 
++     if (apply_autocmds(EVENT_INSERTCHARPRE, NULL, NULL, FALSE, curbuf))
++      /* Get the new value of v:char.  It may be empty or more than one
++       * character. */
++      res = vim_strsave(get_vim_var_str(VV_CHAR));
++     else
++      res = NULL;
++ 
++     set_vim_var_string(VV_CHAR, NULL, -1);  /* clear v:char */
++     --textlock;
++ 
++     return res;
++ }
++ #endif
+*** ../vim-7.3.460/src/fileio.c        2012-02-12 20:13:55.000000000 +0100
+--- src/fileio.c       2012-02-29 17:50:32.000000000 +0100
+***************
+*** 9116,9121 ****
+--- 9116,9130 ----
+      return (first_autopat[(int)EVENT_CURSORMOVEDI] != NULL);
+  }
+  
++ /*
++  * Return TRUE when there is an InsertCharPre autocommand defined.
++  */
++     int
++ has_insertcharpre()
++ {
++     return (first_autopat[(int)EVENT_INSERTCHARPRE] != NULL);
++ }
++ 
+      static int
+  apply_autocmds_group(event, fname, fname_io, force, group, buf, eap)
+      event_T  event;
+*** ../vim-7.3.460/src/proto/fileio.pro        2012-02-12 20:13:55.000000000 +0100
+--- src/proto/fileio.pro       2012-02-29 17:50:38.000000000 +0100
+***************
+*** 44,49 ****
+--- 44,50 ----
+  int trigger_cursorhold __ARGS((void));
+  int has_cursormoved __ARGS((void));
+  int has_cursormovedI __ARGS((void));
++ int has_insertcharpre __ARGS((void));
+  void block_autocmds __ARGS((void));
+  void unblock_autocmds __ARGS((void));
+  int has_autocmd __ARGS((event_T event, char_u *sfname, buf_T *buf));
+*** ../vim-7.3.460/src/version.c       2012-02-29 16:56:35.000000000 +0100
+--- src/version.c      2012-02-29 18:15:34.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     461,
+  /**/
+
+-- 
+"Computers in the future may weigh no more than 1.5 tons."
+                                   Popular Mechanics, 1949
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.462.patch0 b/vim/patches/vim-7.3.462.patch0
new file mode 100644 (file)
index 0000000..df03724
--- /dev/null
@@ -0,0 +1,191 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.462
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.462
+Problem:    When using ":loadview" folds may be closed unexpectedly.
+Solution:   Take into account foldlevel. (Xavier de Gaye)
+Files:     src/fold.c
+
+
+*** ../vim-7.3.461/src/fold.c  2012-01-10 22:26:12.000000000 +0100
+--- src/fold.c 2012-02-29 19:18:07.000000000 +0100
+***************
+*** 3292,3298 ****
+  /* put_folds() {{{2 */
+  #if defined(FEAT_SESSION) || defined(PROTO)
+  static int put_folds_recurse __ARGS((FILE *fd, garray_T *gap, linenr_T off));
+! static int put_foldopen_recurse __ARGS((FILE *fd, garray_T *gap, linenr_T off));
+  
+  /*
+   * Write commands to "fd" to restore the manual folds in window "wp".
+--- 3292,3299 ----
+  /* put_folds() {{{2 */
+  #if defined(FEAT_SESSION) || defined(PROTO)
+  static int put_folds_recurse __ARGS((FILE *fd, garray_T *gap, linenr_T off));
+! static int put_foldopen_recurse __ARGS((FILE *fd, win_T *wp, garray_T *gap, linenr_T off));
+! static int put_fold_open_close __ARGS((FILE *fd, fold_T *fp, linenr_T off));
+  
+  /*
+   * Write commands to "fd" to restore the manual folds in window "wp".
+***************
+*** 3312,3318 ****
+  
+      /* If some folds are manually opened/closed, need to restore that. */
+      if (wp->w_fold_manual)
+!      return put_foldopen_recurse(fd, &wp->w_folds, (linenr_T)0);
+  
+      return OK;
+  }
+--- 3313,3319 ----
+  
+      /* If some folds are manually opened/closed, need to restore that. */
+      if (wp->w_fold_manual)
+!      return put_foldopen_recurse(fd, wp, &wp->w_folds, (linenr_T)0);
+  
+      return OK;
+  }
+***************
+*** 3352,3363 ****
+   * Returns FAIL when writing failed.
+   */
+      static int
+! put_foldopen_recurse(fd, gap, off)
+      FILE     *fd;
+      garray_T *gap;
+      linenr_T off;
+  {
+      int              i;
+      fold_T   *fp;
+  
+      fp = (fold_T *)gap->ga_data;
+--- 3353,3366 ----
+   * Returns FAIL when writing failed.
+   */
+      static int
+! put_foldopen_recurse(fd, wp, gap, off)
+      FILE     *fd;
++     win_T    *wp;
+      garray_T *gap;
+      linenr_T off;
+  {
+      int              i;
++     int              level;
+      fold_T   *fp;
+  
+      fp = (fold_T *)gap->ga_data;
+***************
+*** 3367,3393 ****
+       {
+           if (fp->fd_nested.ga_len > 0)
+           {
+!              /* open/close nested folds while this fold is open */
+               if (fprintf(fd, "%ld", fp->fd_top + off) < 0
+                       || put_eol(fd) == FAIL
+                       || put_line(fd, "normal zo") == FAIL)
+                   return FAIL;
+!              if (put_foldopen_recurse(fd, &fp->fd_nested, off + fp->fd_top)
+                       == FAIL)
+                   return FAIL;
+           }
+-          if (fprintf(fd, "%ld", fp->fd_top + off) < 0
+-                  || put_eol(fd) == FAIL
+-                  || fprintf(fd, "normal z%c",
+-                                  fp->fd_flags == FD_CLOSED ? 'c' : 'o') < 0
+-                  || put_eol(fd) == FAIL)
+-              return FAIL;
+       }
+       ++fp;
+      }
+  
+      return OK;
+  }
+  #endif /* FEAT_SESSION */
+  
+  /* }}}1 */
+--- 3370,3429 ----
+       {
+           if (fp->fd_nested.ga_len > 0)
+           {
+!              /* open nested folds while this fold is open */
+               if (fprintf(fd, "%ld", fp->fd_top + off) < 0
+                       || put_eol(fd) == FAIL
+                       || put_line(fd, "normal zo") == FAIL)
+                   return FAIL;
+!              if (put_foldopen_recurse(fd, wp, &fp->fd_nested,
+!                                                           off + fp->fd_top)
+                       == FAIL)
+                   return FAIL;
++              /* close the parent when needed */
++              if (fp->fd_flags == FD_CLOSED)
++              {
++                  if (put_fold_open_close(fd, fp, off) == FAIL)
++                      return FAIL;
++              }
++          }
++          else
++          {
++              /* Open or close the leaf according to the window foldlevel.
++               * Do not close a leaf that is already closed, as it will close
++               * the parent. */
++              level = foldLevelWin(wp, off + fp->fd_top);
++              if ((fp->fd_flags == FD_CLOSED && wp->w_p_fdl >= level)
++                      || (fp->fd_flags != FD_CLOSED && wp->w_p_fdl < level))
++              if (put_fold_open_close(fd, fp, off) == FAIL)
++                  return FAIL;
+           }
+       }
+       ++fp;
+      }
+  
+      return OK;
+  }
++ 
++ /* put_fold_open_close() {{{2 */
++ /*
++  * Write the open or close command to "fd".
++  * Returns FAIL when writing failed.
++  */
++     static int
++ put_fold_open_close(fd, fp, off)
++     FILE     *fd;
++     fold_T   *fp;
++     linenr_T off;
++ {
++     if (fprintf(fd, "%ld", fp->fd_top + off) < 0
++          || put_eol(fd) == FAIL
++          || fprintf(fd, "normal z%c",
++                         fp->fd_flags == FD_CLOSED ? 'c' : 'o') < 0
++          || put_eol(fd) == FAIL)
++      return FAIL;
++ 
++     return OK;
++ }
+  #endif /* FEAT_SESSION */
+  
+  /* }}}1 */
+*** ../vim-7.3.461/src/version.c       2012-02-29 18:22:03.000000000 +0100
+--- src/version.c      2012-02-29 18:40:43.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     462,
+  /**/
+
+-- 
+~
+~
+~
+".signature" 4 lines, 50 characters written
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.463.patch0 b/vim/patches/vim-7.3.463.patch0
new file mode 100644 (file)
index 0000000..1e7cb23
--- /dev/null
@@ -0,0 +1,63 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.463
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.463
+Problem:    When using ":s///c" the cursor is moved away from the match.
+           (Lawman)
+Solution:   Don't move the cursor when do_ask is set. (Christian Brabandt)
+Files:     src/ex_cmds.c
+
+
+*** ../vim-7.3.462/src/ex_cmds.c       2012-02-22 14:58:24.000000000 +0100
+--- src/ex_cmds.c      2012-03-07 14:54:21.000000000 +0100
+***************
+*** 5151,5160 ****
+  
+       if (!global_busy)
+       {
+!          if (endcolumn)
+!              coladvance((colnr_T)MAXCOL);
+!          else
+!              beginline(BL_WHITE | BL_FIX);
+           if (!do_sub_msg(do_count) && do_ask)
+               MSG("");
+       }
+--- 5151,5163 ----
+  
+       if (!global_busy)
+       {
+!          if (!do_ask)  /* when interactive leave cursor on the match */
+!          {
+!              if (endcolumn)
+!                  coladvance((colnr_T)MAXCOL);
+!              else
+!                  beginline(BL_WHITE | BL_FIX);
+!          }
+           if (!do_sub_msg(do_count) && do_ask)
+               MSG("");
+       }
+*** ../vim-7.3.462/src/version.c       2012-02-29 19:19:57.000000000 +0100
+--- src/version.c      2012-03-07 14:55:39.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     463,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+151. You find yourself engaged to someone you've never actually met,
+     except through e-mail.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.464.patch0 b/vim/patches/vim-7.3.464.patch0
new file mode 100644 (file)
index 0000000..fdfdfff
--- /dev/null
@@ -0,0 +1,60 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.464
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.464
+Problem:    Compiler warning for sprintf.
+Solution:   Put the length in a variable. (Dominique Pelle)
+Files:     src/version.c
+
+
+*** ../vim-7.3.463/src/version.c       2012-03-07 14:57:50.000000000 +0100
+--- src/version.c      2012-03-07 17:58:41.000000000 +0100
+***************
+*** 2187,2198 ****
+           /* Check for 9.9x or 9.9xx, alpha/beta version */
+           if (isalpha((int)vers[3]))
+           {
+!              if (isalpha((int)vers[4]))
+!                  sprintf((char *)vers + 5, ".%d%s", highest_patch(),
+!                                                         mediumVersion + 5);
+!              else
+!                  sprintf((char *)vers + 4, ".%d%s", highest_patch(),
+!                                                         mediumVersion + 4);
+           }
+           else
+               sprintf((char *)vers + 3, ".%d", highest_patch());
+--- 2189,2197 ----
+           /* Check for 9.9x or 9.9xx, alpha/beta version */
+           if (isalpha((int)vers[3]))
+           {
+!              int len = (isalpha((int)vers[4])) ? 5 : 4;
+!              sprintf((char *)vers + len, ".%d%s", highest_patch(),
+!                                                       mediumVersion + len);
+           }
+           else
+               sprintf((char *)vers + 3, ".%d", highest_patch());
+*** ../vim-7.3.463/src/version.c       2012-03-07 14:57:50.000000000 +0100
+--- src/version.c      2012-03-07 17:58:41.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     464,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+152. You find yourself falling for someone you've never seen or hardly
+     know, but, boy can he/she TYPE!!!!!!
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.465.patch0 b/vim/patches/vim-7.3.465.patch0
new file mode 100644 (file)
index 0000000..c4a857a
--- /dev/null
@@ -0,0 +1,398 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.465
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.465
+Problem:    Cannot get file name with newline from glob().
+Solution:   Add argument to glob() and expand() to indicate they must return a
+           list. (Christian Brabandt)
+Files:     runtime/doc/eval.txt, src/eval.c, src/ex_getln.c, src/vim.h
+
+
+*** ../vim-7.3.464/runtime/doc/eval.txt        2011-12-14 15:32:44.000000000 +0100
+--- runtime/doc/eval.txt       2012-03-07 18:49:26.000000000 +0100
+***************
+*** 1738,1744 ****
+  extend( {expr1}, {expr2} [, {expr3}])
+                               List/Dict insert items of {expr2} into {expr1}
+  exp( {expr})                 Float   exponential of {expr}
+! expand( {expr} [, {flag}])   String  expand special keywords in {expr}
+  feedkeys( {string} [, {mode}])       Number  add key sequence to typeahead buffer
+  filereadable( {file})                Number  TRUE if {file} is a readable file
+  filewritable( {file})                Number  TRUE if {file} is a writable file
+--- 1746,1753 ----
+  extend( {expr1}, {expr2} [, {expr3}])
+                               List/Dict insert items of {expr2} into {expr1}
+  exp( {expr})                 Float   exponential of {expr}
+! expand( {expr} [, {nosuf} [, {list}]])
+!                              any     expand special keywords in {expr}
+  feedkeys( {string} [, {mode}])       Number  add key sequence to typeahead buffer
+  filereadable( {file})                Number  TRUE if {file} is a readable file
+  filewritable( {file})                Number  TRUE if {file} is a writable file
+***************
+*** 1792,1798 ****
+  getwinposx()                 Number  X coord in pixels of GUI Vim window
+  getwinposy()                 Number  Y coord in pixels of GUI Vim window
+  getwinvar( {nr}, {varname})  any     variable {varname} in window {nr}
+! glob( {expr} [, {flag}])     String  expand file wildcards in {expr}
+  globpath( {path}, {expr} [, {flag}])
+                               String  do glob({expr}) for all dirs in {path}
+  has( {feature})                      Number  TRUE if feature {feature} supported
+--- 1801,1808 ----
+  getwinposx()                 Number  X coord in pixels of GUI Vim window
+  getwinposy()                 Number  Y coord in pixels of GUI Vim window
+  getwinvar( {nr}, {varname})  any     variable {varname} in window {nr}
+! glob( {expr} [, {nosuf} [, {list}]])
+!                              any     expand file wildcards in {expr}
+  globpath( {path}, {expr} [, {flag}])
+                               String  do glob({expr}) for all dirs in {path}
+  has( {feature})                      Number  TRUE if feature {feature} supported
+***************
+*** 2731,2743 ****
+               {only available when compiled with the |+float| feature}
+  
+  
+! expand({expr} [, {flag}])                            *expand()*
+               Expand wildcards and the following special keywords in {expr}.
+!              The result is a String.
+  
+!              When there are several matches, they are separated by <NL>
+!              characters.  [Note: in version 5.0 a space was used, which
+!              caused problems when a file name contains a space]
+  
+               If the expansion fails, the result is an empty string.  A name
+               for a non-existing file is not included.
+--- 2744,2758 ----
+               {only available when compiled with the |+float| feature}
+  
+  
+! expand({expr} [, {nosuf} [, {list}]])                                *expand()*
+               Expand wildcards and the following special keywords in {expr}.
+!              'wildignorecase' applies.
+  
+!              If {list} is given and it is non-zero, a List will be returned.
+!              Otherwise the result is a String and when there are several
+!              matches, they are separated by <NL> characters.  [Note: in
+!              version 5.0 a space was used, which caused problems when a
+!              file name contains a space]
+  
+               If the expansion fails, the result is an empty string.  A name
+               for a non-existing file is not included.
+***************
+*** 2754,2759 ****
+--- 2769,2775 ----
+                       <abuf>          autocmd buffer number (as a String!)
+                       <amatch>        autocmd matched name
+                       <sfile>         sourced script file name
++                      <slnum>         sourced script file line number
+                       <cword>         word under the cursor
+                       <cWORD>         WORD under the cursor
+                       <client>        the {clientid} of the last received
+***************
+*** 2790,2799 ****
+               When {expr} does not start with '%', '#' or '<', it is
+               expanded like a file name is expanded on the command line.
+               'suffixes' and 'wildignore' are used, unless the optional
+!              {flag} argument is given and it is non-zero.  Names for
+!              non-existing files are included.  The "**" item can be used to
+!              search in a directory tree.  For example, to find all "README"
+!              files in the current directory and below: >
+                       :echo expand("**/README")
+  <
+               Expand() can also be used to expand variables and environment
+--- 2806,2815 ----
+               When {expr} does not start with '%', '#' or '<', it is
+               expanded like a file name is expanded on the command line.
+               'suffixes' and 'wildignore' are used, unless the optional
+!              {nosuf} argument is given and it is non-zero.
+!              Names for non-existing files are included.  The "**" item can
+!              be used to search in a directory tree.  For example, to find
+!              all "README" files in the current directory and below: >
+                       :echo expand("**/README")
+  <
+               Expand() can also be used to expand variables and environment
+***************
+*** 3437,3453 ****
+                       :let list_is_on = getwinvar(2, '&list')
+                       :echo "myvar = " . getwinvar(1, 'myvar')
+  <
+! glob({expr} [, {flag}])                                      *glob()*
+               Expand the file wildcards in {expr}.  See |wildcards| for the
+               use of special characters.
+!              The result is a String.
+!              When there are several matches, they are separated by <NL>
+!              characters.
+!              Unless the optional {flag} argument is given and is non-zero,
+               the 'suffixes' and 'wildignore' options apply: Names matching
+               one of the patterns in 'wildignore' will be skipped and
+               'suffixes' affect the ordering of matches.
+!              If the expansion fails, the result is an empty string.
+               A name for a non-existing file is not included.
+  
+               For most systems backticks can be used to get files names from
+--- 3456,3478 ----
+                       :let list_is_on = getwinvar(2, '&list')
+                       :echo "myvar = " . getwinvar(1, 'myvar')
+  <
+! glob({expr} [, {nosuf} [, {list}]])                          *glob()*
+               Expand the file wildcards in {expr}.  See |wildcards| for the
+               use of special characters.
+! 
+!              Unless the optional {nosuf} argument is given and is non-zero,
+               the 'suffixes' and 'wildignore' options apply: Names matching
+               one of the patterns in 'wildignore' will be skipped and
+               'suffixes' affect the ordering of matches.
+!              'wildignorecase' always applies.
+! 
+!              When {list} is present and it is non-zero the result is a List
+!              with all matching files. The advantage of using a List is,
+!              you also get filenames containing newlines correctly.
+!              Otherwise the result is a String and when there are several
+!              matches, they are separated by <NL> characters.
+! 
+!              If the expansion fails, the result is an empty String or List.
+               A name for a non-existing file is not included.
+  
+               For most systems backticks can be used to get files names from
+*** ../vim-7.3.464/src/eval.c  2012-02-11 20:44:01.000000000 +0100
+--- src/eval.c 2012-03-07 19:08:36.000000000 +0100
+***************
+*** 7852,7858 ****
+  #ifdef FEAT_FLOAT
+      {"exp",          1, 1, f_exp},
+  #endif
+!     {"expand",               1, 2, f_expand},
+      {"extend",               2, 3, f_extend},
+      {"feedkeys",     1, 2, f_feedkeys},
+      {"file_readable",        1, 1, f_filereadable},  /* obsolete */
+--- 7852,7858 ----
+  #ifdef FEAT_FLOAT
+      {"exp",          1, 1, f_exp},
+  #endif
+!     {"expand",               1, 3, f_expand},
+      {"extend",               2, 3, f_extend},
+      {"feedkeys",     1, 2, f_feedkeys},
+      {"file_readable",        1, 1, f_filereadable},  /* obsolete */
+***************
+*** 7903,7909 ****
+      {"getwinposx",   0, 0, f_getwinposx},
+      {"getwinposy",   0, 0, f_getwinposy},
+      {"getwinvar",    2, 2, f_getwinvar},
+!     {"glob",         1, 2, f_glob},
+      {"globpath",     2, 3, f_globpath},
+      {"has",          1, 1, f_has},
+      {"has_key",              2, 2, f_has_key},
+--- 7903,7909 ----
+      {"getwinposx",   0, 0, f_getwinposx},
+      {"getwinposy",   0, 0, f_getwinposy},
+      {"getwinvar",    2, 2, f_getwinvar},
+!     {"glob",         1, 3, f_glob},
+      {"globpath",     2, 3, f_globpath},
+      {"has",          1, 1, f_has},
+      {"has_key",              2, 2, f_has_key},
+***************
+*** 10019,10032 ****
+      int              options = WILD_SILENT|WILD_USE_NL|WILD_LIST_NOTFOUND;
+      expand_T xpc;
+      int              error = FALSE;
+  
+      rettv->v_type = VAR_STRING;
+      s = get_tv_string(&argvars[0]);
+      if (*s == '%' || *s == '#' || *s == '<')
+      {
+       ++emsg_off;
+!      rettv->vval.v_string = eval_vars(s, s, &len, NULL, &errormsg, NULL);
+       --emsg_off;
+      }
+      else
+      {
+--- 10019,10051 ----
+      int              options = WILD_SILENT|WILD_USE_NL|WILD_LIST_NOTFOUND;
+      expand_T xpc;
+      int              error = FALSE;
++     char_u   *result;
+  
+      rettv->v_type = VAR_STRING;
++     if (argvars[1].v_type != VAR_UNKNOWN
++          && argvars[2].v_type != VAR_UNKNOWN
++          && get_tv_number_chk(&argvars[2], &error)
++          && !error)
++     {
++      rettv->v_type = VAR_LIST;
++      rettv->vval.v_list = NULL;
++     }
++ 
+      s = get_tv_string(&argvars[0]);
+      if (*s == '%' || *s == '#' || *s == '<')
+      {
+       ++emsg_off;
+!      result = eval_vars(s, s, &len, NULL, &errormsg, NULL);
+       --emsg_off;
++      if (rettv->v_type == VAR_LIST)
++      {
++          if (rettv_list_alloc(rettv) != FAIL && result != NULL)
++              list_append_string(rettv->vval.v_list, result, -1);
++          else
++              vim_free(result);
++      }
++      else
++          rettv->vval.v_string = result;
+      }
+      else
+      {
+***************
+*** 10041,10047 ****
+           xpc.xp_context = EXPAND_FILES;
+           if (p_wic)
+               options += WILD_ICASE;
+!          rettv->vval.v_string = ExpandOne(&xpc, s, NULL, options, WILD_ALL);
+       }
+       else
+           rettv->vval.v_string = NULL;
+--- 10060,10077 ----
+           xpc.xp_context = EXPAND_FILES;
+           if (p_wic)
+               options += WILD_ICASE;
+!          if (rettv->v_type == VAR_STRING)
+!              rettv->vval.v_string = ExpandOne(&xpc, s, NULL,
+!                                                         options, WILD_ALL);
+!          else if (rettv_list_alloc(rettv) != FAIL)
+!          {
+!              int i;
+! 
+!              ExpandOne(&xpc, s, NULL, options, WILD_ALL_KEEP);
+!              for (i = 0; i < xpc.xp_numfiles; i++)
+!                  list_append_string(rettv->vval.v_list, xpc.xp_files[i], -1);
+!              ExpandCleanup(&xpc);
+!          }
+       }
+       else
+           rettv->vval.v_string = NULL;
+***************
+*** 11833,11851 ****
+      int              error = FALSE;
+  
+      /* When the optional second argument is non-zero, don't remove matches
+!     * for 'wildignore' and don't put matches for 'suffixes' at the end. */
+!     if (argvars[1].v_type != VAR_UNKNOWN
+!                              && get_tv_number_chk(&argvars[1], &error))
+!      options |= WILD_KEEP_ALL;
+      rettv->v_type = VAR_STRING;
+      if (!error)
+      {
+       ExpandInit(&xpc);
+       xpc.xp_context = EXPAND_FILES;
+       if (p_wic)
+           options += WILD_ICASE;
+!      rettv->vval.v_string = ExpandOne(&xpc, get_tv_string(&argvars[0]),
+                                                    NULL, options, WILD_ALL);
+      }
+      else
+       rettv->vval.v_string = NULL;
+--- 11863,11901 ----
+      int              error = FALSE;
+  
+      /* When the optional second argument is non-zero, don't remove matches
+!      * for 'wildignore' and don't put matches for 'suffixes' at the end. */
+      rettv->v_type = VAR_STRING;
++     if (argvars[1].v_type != VAR_UNKNOWN)
++     {
++      if (get_tv_number_chk(&argvars[1], &error))
++          options |= WILD_KEEP_ALL;
++      if (argvars[2].v_type != VAR_UNKNOWN
++                                  && get_tv_number_chk(&argvars[2], &error))
++      {
++          rettv->v_type = VAR_LIST;
++          rettv->vval.v_list = NULL;
++      }
++     }
+      if (!error)
+      {
+       ExpandInit(&xpc);
+       xpc.xp_context = EXPAND_FILES;
+       if (p_wic)
+           options += WILD_ICASE;
+!      if (rettv->v_type == VAR_STRING)
+!          rettv->vval.v_string = ExpandOne(&xpc, get_tv_string(&argvars[0]),
+                                                    NULL, options, WILD_ALL);
++      else if (rettv_list_alloc(rettv) != FAIL)
++      {
++        int i;
++ 
++        ExpandOne(&xpc, get_tv_string(&argvars[0]),
++                                              NULL, options, WILD_ALL_KEEP);
++        for (i = 0; i < xpc.xp_numfiles; i++)
++            list_append_string(rettv->vval.v_list, xpc.xp_files[i], -1);
++ 
++        ExpandCleanup(&xpc);
++      }
+      }
+      else
+       rettv->vval.v_string = NULL;
+*** ../vim-7.3.464/src/ex_getln.c      2012-02-22 17:58:00.000000000 +0100
+--- src/ex_getln.c     2012-03-07 19:07:01.000000000 +0100
+***************
+*** 3461,3466 ****
+--- 3461,3467 ----
+   * mode = WILD_PREV:     use previous match in multiple match, wrap to first
+   * mode = WILD_ALL:      return all matches concatenated
+   * mode = WILD_LONGEST:          return longest matched part
++  * mode = WILD_ALL_KEEP:    get all matches, keep matches
+   *
+   * options = WILD_LIST_NOTFOUND:    list entries without a match
+   * options = WILD_HOME_REPLACE:          do home_replace() for buffer names
+***************
+*** 3584,3590 ****
+           /*
+            * Check for matching suffixes in file names.
+            */
+!          if (mode != WILD_ALL && mode != WILD_LONGEST)
+           {
+               if (xp->xp_numfiles)
+                   non_suf_match = xp->xp_numfiles;
+--- 3585,3592 ----
+           /*
+            * Check for matching suffixes in file names.
+            */
+!          if (mode != WILD_ALL && mode != WILD_ALL_KEEP
+!                                                    && mode != WILD_LONGEST)
+           {
+               if (xp->xp_numfiles)
+                   non_suf_match = xp->xp_numfiles;
+*** ../vim-7.3.464/src/vim.h   2011-07-27 17:31:42.000000000 +0200
+--- src/vim.h  2012-03-07 19:03:43.000000000 +0100
+***************
+*** 794,799 ****
+--- 794,800 ----
+  #define WILD_PREV            5
+  #define WILD_ALL             6
+  #define WILD_LONGEST         7
++ #define WILD_ALL_KEEP                8
+  
+  #define WILD_LIST_NOTFOUND   1
+  #define WILD_HOME_REPLACE    2
+*** ../vim-7.3.464/src/version.c       2012-03-07 18:04:00.000000000 +0100
+--- src/version.c      2012-03-07 19:14:39.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     465,
+  /**/
+
+-- 
+Although the scythe isn't pre-eminent among the weapons of war, anyone who
+has been on the wrong end of, say, a peasants' revolt will know that in
+skilled hands it is fearsome.
+                                       -- (Terry Pratchett, Mort)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.466.patch0 b/vim/patches/vim-7.3.466.patch0
new file mode 100644 (file)
index 0000000..0dc4293
--- /dev/null
@@ -0,0 +1,49 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.466
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.466
+Problem:    Get ml_get error when ":behave mswin" was used and selecting
+           several lines.  (A. Sinan Unur)
+Solution:   Adjust the end of the operation. (Christian Brabandt)
+Files:     src/ops.c
+
+
+*** ../vim-7.3.465/src/ops.c   2012-02-22 17:37:55.000000000 +0100
+--- src/ops.c  2012-03-07 19:27:08.000000000 +0100
+***************
+*** 1957,1962 ****
+--- 1957,1965 ----
+           ++curwin->w_cursor.lnum;
+           del_lines((long)(oap->line_count - 2), FALSE);
+  
++          if (delete_last_line)
++              oap->end.lnum = curbuf->b_ml.ml_line_count;
++ 
+           n = (oap->end.col + 1 - !oap->inclusive);
+           if (oap->inclusive && delete_last_line
+                   && n > (int)STRLEN(ml_get(oap->end.lnum)))
+*** ../vim-7.3.465/src/version.c       2012-03-07 19:16:49.000000000 +0100
+--- src/version.c      2012-03-07 19:29:52.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     466,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+153. You find yourself staring at your "inbox" waiting for new e-mail
+     to arrive.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.467.patch0 b/vim/patches/vim-7.3.467.patch0
new file mode 100644 (file)
index 0000000..7764217
--- /dev/null
@@ -0,0 +1,54 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.467
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.467
+Problem:    Cursor positioned wrong at the command line when regaining focus
+           and using some input method.
+Solution:   Do not position the cursor in command line mode.
+Files:     src/mbyte.c
+
+
+*** ../vim-7.3.466/src/mbyte.c 2011-12-08 15:09:46.000000000 +0100
+--- src/mbyte.c        2012-03-07 19:36:44.000000000 +0100
+***************
+*** 4504,4510 ****
+      vgetc_busy = TRUE;
+      showmode();
+      vgetc_busy = old_vgetc_busy;
+!     setcursor();
+      out_flush();
+  }
+  
+--- 4504,4511 ----
+      vgetc_busy = TRUE;
+      showmode();
+      vgetc_busy = old_vgetc_busy;
+!     if ((State & NORMAL) || (State & INSERT))
+!      setcursor();
+      out_flush();
+  }
+  
+*** ../vim-7.3.466/src/version.c       2012-03-07 19:30:32.000000000 +0100
+--- src/version.c      2012-03-07 19:38:22.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     467,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+154. You fondle your mouse.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.468.patch0 b/vim/patches/vim-7.3.468.patch0
new file mode 100644 (file)
index 0000000..e078f9e
--- /dev/null
@@ -0,0 +1,144 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.468
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.468
+Problem:    For some compilers the error file is not easily readable.
+Solution:   Use QuickFixCmdPre for more commands. (Marcin Szamotulski)
+Files:     runtime/doc/autocmd.txt, src/quickfix.c
+
+
+*** ../vim-7.3.467/runtime/doc/autocmd.txt     2012-02-12 20:13:55.000000000 +0100
+--- runtime/doc/autocmd.txt    2012-03-07 20:07:23.000000000 +0100
+***************
+*** 695,701 ****
+  QuickFixCmdPre                       Before a quickfix command is run (|:make|,
+                               |:lmake|, |:grep|, |:lgrep|, |:grepadd|,
+                               |:lgrepadd|, |:vimgrep|, |:lvimgrep|,
+!                              |:vimgrepadd|, |:lvimgrepadd|, |:cscope|).
+                               The pattern is matched against the command
+                               being run.  When |:grep| is used but 'grepprg'
+                               is set to "internal" it still matches "grep".
+--- 699,708 ----
+  QuickFixCmdPre                       Before a quickfix command is run (|:make|,
+                               |:lmake|, |:grep|, |:lgrep|, |:grepadd|,
+                               |:lgrepadd|, |:vimgrep|, |:lvimgrep|,
+!                              |:vimgrepadd|, |:lvimgrepadd|, |:cscope|,
+!                              |:cfile|, |:cgetfile|, |:caddfile|, |:lfile|,
+!                              |:lgetfile|, |:laddfile|, |:helpgrep|,
+!                              |:lhelpgrep|).
+                               The pattern is matched against the command
+                               being run.  When |:grep| is used but 'grepprg'
+                               is set to "internal" it still matches "grep".
+***************
+*** 706,712 ****
+                                                       *QuickFixCmdPost*
+  QuickFixCmdPost                      Like QuickFixCmdPre, but after a quickfix
+                               command is run, before jumping to the first
+!                              location.  See |QuickFixCmdPost-example|.
+                                                       *RemoteReply*
+  RemoteReply                  When a reply from a Vim that functions as
+                               server was received |server2client()|.  The
+--- 713,722 ----
+                                                       *QuickFixCmdPost*
+  QuickFixCmdPost                      Like QuickFixCmdPre, but after a quickfix
+                               command is run, before jumping to the first
+!                              location. For |:cfile| and |:lfile| commands
+!                              it is run after error file is read and before
+!                              moving to the first error. 
+!                              See |QuickFixCmdPost-example|.
+                                                       *RemoteReply*
+  RemoteReply                  When a reply from a Vim that functions as
+                               server was received |server2client()|.  The
+*** ../vim-7.3.467/src/quickfix.c      2012-02-22 14:58:24.000000000 +0100
+--- src/quickfix.c     2012-03-07 20:10:07.000000000 +0100
+***************
+*** 2995,3005 ****
+  {
+      win_T    *wp = NULL;
+      qf_info_T        *qi = &ql_info;
+  
+      if (eap->cmdidx == CMD_lfile || eap->cmdidx == CMD_lgetfile
+!      || eap->cmdidx == CMD_laddfile)
+       wp = curwin;
+  
+  #ifdef FEAT_BROWSE
+      if (cmdmod.browse)
+      {
+--- 2995,3022 ----
+  {
+      win_T    *wp = NULL;
+      qf_info_T        *qi = &ql_info;
++ #ifdef FEAT_AUTOCMD
++     char_u   *au_name = NULL;
++ #endif
+  
+      if (eap->cmdidx == CMD_lfile || eap->cmdidx == CMD_lgetfile
+!                                             || eap->cmdidx == CMD_laddfile)
+       wp = curwin;
+  
++ #ifdef FEAT_AUTOCMD
++     switch (eap->cmdidx)
++     {
++      case CMD_cfile:     au_name = (char_u *)"cfile"; break;
++      case CMD_cgetfile:  au_name = (char_u *)"cgetfile"; break;
++      case CMD_caddfile:  au_name = (char_u *)"caddfile"; break;
++      case CMD_lfile:     au_name = (char_u *)"lfile"; break;
++      case CMD_lgetfile:  au_name = (char_u *)"lgetfile"; break;
++      case CMD_laddfile:  au_name = (char_u *)"laddfile"; break;
++      default: break;
++     }
++     if (au_name != NULL)
++      apply_autocmds(EVENT_QUICKFIXCMDPRE, au_name, NULL, FALSE, curbuf);
++ #endif
+  #ifdef FEAT_BROWSE
+      if (cmdmod.browse)
+      {
+***************
+*** 3031,3040 ****
+--- 3048,3069 ----
+                                 && (eap->cmdidx == CMD_cfile
+                                            || eap->cmdidx == CMD_lfile))
+      {
++ #ifdef FEAT_AUTOCMD
++      if (au_name != NULL)
++          apply_autocmds(EVENT_QUICKFIXCMDPOST, au_name, NULL, FALSE, curbuf);
++ #endif
+       if (wp != NULL)
+           qi = GET_LOC_LIST(wp);
+       qf_jump(qi, 0, 0, eap->forceit);        /* display first error */
+      }
++ 
++     else
++     {
++ #ifdef FEAT_AUTOCMD
++      if (au_name != NULL)
++          apply_autocmds(EVENT_QUICKFIXCMDPOST, au_name, NULL, FALSE, curbuf);
++ #endif
++     }
+  }
+  
+  /*
+*** ../vim-7.3.467/src/version.c       2012-03-07 19:38:52.000000000 +0100
+--- src/version.c      2012-03-07 20:11:54.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     468,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+155. You forget to eat because you're too busy surfing the net.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.469.patch0 b/vim/patches/vim-7.3.469.patch0
new file mode 100644 (file)
index 0000000..77ca4a0
--- /dev/null
@@ -0,0 +1,53 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.469
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.469
+Problem:    Compiler warning for unused argument without some features.
+Solution:   Add UNUSED.
+Files:     src/buffer.c
+
+
+*** ../vim-7.3.468/src/buffer.c        2012-02-22 19:13:00.000000000 +0100
+--- src/buffer.c       2012-03-07 22:30:56.000000000 +0100
+***************
+*** 329,335 ****
+      win_T    *win;           /* if not NULL, set b_last_cursor */
+      buf_T    *buf;
+      int              action;
+!     int              abort_if_last;
+  {
+  #ifdef FEAT_AUTOCMD
+      int              is_curbuf;
+--- 329,335 ----
+      win_T    *win;           /* if not NULL, set b_last_cursor */
+      buf_T    *buf;
+      int              action;
+!     int              abort_if_last UNUSED;
+  {
+  #ifdef FEAT_AUTOCMD
+      int              is_curbuf;
+*** ../vim-7.3.468/src/version.c       2012-03-07 20:13:44.000000000 +0100
+--- src/version.c      2012-03-07 22:51:54.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     469,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+157. You fum through a magazine, you first check to see if it has a web
+     address.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.470.patch0 b/vim/patches/vim-7.3.470.patch0
new file mode 100644 (file)
index 0000000..80bec15
--- /dev/null
@@ -0,0 +1,67 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.470
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.470
+Problem:    Test 62 fails when compiled without GUI and X11.
+Solution:   Don't test :drop when it is not supported.
+Files:     src/testdir/test62.in
+
+
+*** ../vim-7.3.469/src/testdir/test62.in       2012-02-22 19:13:00.000000000 +0100
+--- src/testdir/test62.in      2012-03-07 22:46:17.000000000 +0100
+***************
+*** 49,55 ****
+  :tabclose
+  :call append(line('$'), test_status)
+  :"
+! :"
+  :" Test for ":tab drop exist-file" to keep current window.
+  :sp test1
+  :tab drop test1
+--- 49,55 ----
+  :tabclose
+  :call append(line('$'), test_status)
+  :"
+! :if has('gui') || has('clientserver')
+  :" Test for ":tab drop exist-file" to keep current window.
+  :sp test1
+  :tab drop test1
+***************
+*** 85,90 ****
+--- 85,96 ----
+  :tabclose
+  :q
+  :call append(line('$'), test_status)
++ :else
++ :" :drop not supported
++ :call append(line('$'), 'tab drop 1: pass')
++ :call append(line('$'), 'tab drop 2: pass')
++ :call append(line('$'), 'tab drop 3: pass')
++ :endif
+  :"
+  :"
+  :/^Results/,$w! test.out
+*** ../vim-7.3.469/src/version.c       2012-03-07 22:52:30.000000000 +0100
+--- src/version.c      2012-03-07 22:53:40.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     470,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+158. You get a tuner card so you can watch TV while surfing.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.471.patch0 b/vim/patches/vim-7.3.471.patch0
new file mode 100644 (file)
index 0000000..be81432
--- /dev/null
@@ -0,0 +1,92 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.471
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.471
+Problem:    Can't abort listing placed signs.
+Solution:   Check "got_int". (Christian Brabandt)
+Files:     src/buffer.c, src/ex_cmds.c
+
+
+*** ../vim-7.3.470/src/buffer.c        2012-03-07 22:52:30.000000000 +0100
+--- src/buffer.c       2012-03-16 13:54:48.000000000 +0100
+***************
+*** 5557,5563 ****
+       buf = firstbuf;
+      else
+       buf = rbuf;
+!     while (buf != NULL)
+      {
+       if (buf->b_signlist != NULL)
+       {
+--- 5557,5563 ----
+       buf = firstbuf;
+      else
+       buf = rbuf;
+!     while (buf != NULL && !got_int)
+      {
+       if (buf->b_signlist != NULL)
+       {
+***************
+*** 5565,5571 ****
+           MSG_PUTS_ATTR(lbuf, hl_attr(HLF_D));
+           msg_putchar('\n');
+       }
+!      for (p = buf->b_signlist; p != NULL; p = p->next)
+       {
+           vim_snprintf(lbuf, BUFSIZ, _("    line=%ld  id=%d  name=%s"),
+                          (long)p->lnum, p->id, sign_typenr2name(p->typenr));
+--- 5565,5571 ----
+           MSG_PUTS_ATTR(lbuf, hl_attr(HLF_D));
+           msg_putchar('\n');
+       }
+!      for (p = buf->b_signlist; p != NULL && !got_int; p = p->next)
+       {
+           vim_snprintf(lbuf, BUFSIZ, _("    line=%ld  id=%d  name=%s"),
+                          (long)p->lnum, p->id, sign_typenr2name(p->typenr));
+*** ../vim-7.3.470/src/ex_cmds.c       2012-03-07 14:57:50.000000000 +0100
+--- src/ex_cmds.c      2012-03-16 13:58:50.000000000 +0100
+***************
+*** 6729,6735 ****
+       if (idx == SIGNCMD_LIST && *arg == NUL)
+       {
+           /* ":sign list": list all defined signs */
+!          for (sp = first_sign; sp != NULL; sp = sp->sn_next)
+               sign_list_defined(sp);
+       }
+       else if (*arg == NUL)
+--- 6729,6735 ----
+       if (idx == SIGNCMD_LIST && *arg == NUL)
+       {
+           /* ":sign list": list all defined signs */
+!          for (sp = first_sign; sp != NULL && !got_int; sp = sp->sn_next)
+               sign_list_defined(sp);
+       }
+       else if (*arg == NUL)
+*** ../vim-7.3.470/src/version.c       2012-03-07 22:55:17.000000000 +0100
+--- src/version.c      2012-03-16 13:55:28.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     471,
+  /**/
+
+-- 
+Some of the well know MS-Windows errors:
+       EMEMORY         Memory error caused by..., eh...
+       ELICENSE        Your license has expired, give us more money!
+       EMOUSE          Mouse moved, reinstall Windows
+       EILLEGAL        Illegal error, you are not allowed to see this
+       EVIRUS          Undetectable virus found
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.472.patch0 b/vim/patches/vim-7.3.472.patch0
new file mode 100644 (file)
index 0000000..217b2fc
--- /dev/null
@@ -0,0 +1,88 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.472
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.472
+Problem:    Crash when using ":redraw" in a BufEnter autocommand and
+            switching to another tab. (驼峰)
+Solution:   Move triggering the the autocommands to after correcting the
+            option values. Also check the row value to be out of bounds.
+            (Christian Brabandt, Sergey Khorev)
+Files:      src/screen.c, src/window.c
+
+
+*** ../vim-7.3.471/src/screen.c        2012-02-04 23:34:57.000000000 +0100
+--- src/screen.c       2012-03-16 18:59:20.000000000 +0100
+***************
+*** 5371,5376 ****
+--- 5371,5382 ----
+  # define CHAR_CELLS 1
+  #endif
+  
++     /* Check for illegal row and col, just in case. */
++     if (row >= Rows)
++      row = Rows - 1;
++     if (endcol > Columns)
++      endcol = Columns;
++ 
+  # ifdef FEAT_CLIPBOARD
+      clip_may_clear_selection(row, row);
+  # endif
+*** ../vim-7.3.471/src/window.c        2012-02-22 14:58:24.000000000 +0100
+--- src/window.c       2012-03-16 18:43:01.000000000 +0100
+***************
+*** 3676,3688 ****
+      win_enter_ext(tp->tp_curwin, FALSE, TRUE);
+      prevwin = next_prevwin;
+  
+- #ifdef FEAT_AUTOCMD
+-     apply_autocmds(EVENT_TABENTER, NULL, NULL, FALSE, curbuf);
+- 
+-     if (old_curbuf != curbuf)
+-      apply_autocmds(EVENT_BUFENTER, NULL, NULL, FALSE, curbuf);
+- #endif
+- 
+      last_status(FALSE);              /* status line may appear or disappear */
+      (void)win_comp_pos();    /* recompute w_winrow for all windows */
+      must_redraw = CLEAR;     /* need to redraw everything */
+--- 3676,3681 ----
+***************
+*** 3712,3717 ****
+--- 3705,3718 ----
+      gui_may_update_scrollbars();
+  #endif
+  
++ #ifdef FEAT_AUTOCMD
++     /* Apply autocommands after updating the display, when 'rows' and
++      * 'columns' have been set correctly. */
++     apply_autocmds(EVENT_TABENTER, NULL, NULL, FALSE, curbuf);
++     if (old_curbuf != curbuf)
++      apply_autocmds(EVENT_BUFENTER, NULL, NULL, FALSE, curbuf);
++ #endif
++ 
+      redraw_all_later(CLEAR);
+  }
+  
+*** ../vim-7.3.471/src/version.c       2012-03-16 14:32:10.000000000 +0100
+--- src/version.c      2012-03-16 19:02:53.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     472,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+200. You really believe in the concept of a "paperless" office.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.473.patch0 b/vim/patches/vim-7.3.473.patch0
new file mode 100644 (file)
index 0000000..571f85d
--- /dev/null
@@ -0,0 +1,68 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.473
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.473
+Problem:    'cursorbind' does not work correctly in combination with
+           'virtualedit' set to "all".
+Solution:   Copy coladd. (Gary Johnson)
+Files:     src/move.c
+
+
+*** ../vim-7.3.472/src/move.c  2012-02-04 23:34:57.000000000 +0100
+--- src/move.c 2012-03-16 19:20:57.000000000 +0100
+***************
+*** 2843,2849 ****
+  do_check_cursorbind()
+  {
+      linenr_T line = curwin->w_cursor.lnum;
+!     colnr_T  col =  curwin->w_cursor.col;
+      win_T    *old_curwin = curwin;
+      buf_T    *old_curbuf = curbuf;
+      int              restart_edit_save;
+--- 2843,2852 ----
+  do_check_cursorbind()
+  {
+      linenr_T line = curwin->w_cursor.lnum;
+!     colnr_T  col = curwin->w_cursor.col;
+! # ifdef FEAT_VIRTUALEDIT
+!     colnr_T  coladd = curwin->w_cursor.coladd;
+! # endif
+      win_T    *old_curwin = curwin;
+      buf_T    *old_curbuf = curbuf;
+      int              restart_edit_save;
+***************
+*** 2875,2880 ****
+--- 2878,2886 ----
+  # endif
+               curwin->w_cursor.lnum = line;
+           curwin->w_cursor.col = col;
++ # ifdef FEAT_VIRTUALEDIT
++          curwin->w_cursor.coladd = coladd;
++ # endif
+  
+           /* Make sure the cursor is in a valid position.  Temporarily set
+            * "restart_edit" to allow the cursor to be beyond the EOL. */
+*** ../vim-7.3.472/src/version.c       2012-03-16 19:07:54.000000000 +0100
+--- src/version.c      2012-03-16 19:24:06.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     473,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+201. When somebody asks you where you are, you tell them in which chat room.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.474.patch0 b/vim/patches/vim-7.3.474.patch0
new file mode 100644 (file)
index 0000000..dc6b1d6
--- /dev/null
@@ -0,0 +1,62 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.474
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.474
+Problem:    Perl build with gcc 4 fails.
+Solution:   Remove XS() statements. (Yasuhiro Matsumoto)
+Files:     src/if_perl.xs
+
+
+*** ../vim-7.3.473/src/if_perl.xs      2012-02-12 00:31:47.000000000 +0100
+--- src/if_perl.xs     2012-03-16 19:33:23.000000000 +0100
+***************
+*** 913,936 ****
+  win_T *win_find_nr(int n) { return curwin; }
+  #endif
+  
+- XS(XS_VIM_Msg);
+- XS(XS_VIM_SetOption);
+- XS(XS_VIM_DoCommand);
+- XS(XS_VIM_Eval);
+- XS(XS_VIM_Buffers);
+- XS(XS_VIM_Windows);
+- XS(XS_VIWIN_DESTROY);
+- XS(XS_VIWIN_Buffer);
+- XS(XS_VIWIN_SetHeight);
+- XS(XS_VIWIN_Cursor);
+- XS(XS_VIBUF_DESTROY);
+- XS(XS_VIBUF_Name);
+- XS(XS_VIBUF_Number);
+- XS(XS_VIBUF_Count);
+- XS(XS_VIBUF_Get);
+- XS(XS_VIBUF_Set);
+- XS(XS_VIBUF_Delete);
+- XS(XS_VIBUF_Append);
+  XS(boot_VIM);
+  
+      static void
+--- 913,918 ----
+*** ../vim-7.3.473/src/version.c       2012-03-16 19:24:21.000000000 +0100
+--- src/version.c      2012-03-16 19:28:03.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     474,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+202. You're amazed to find out Spam is a food.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.475.patch0 b/vim/patches/vim-7.3.475.patch0
new file mode 100644 (file)
index 0000000..54c27a2
--- /dev/null
@@ -0,0 +1,98 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.475
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.475
+Problem:    In a terminal with few colors the omnicomplete menu may be hard to
+           see when using the default colors.
+Solution:   Use more explicit colors. (suggested by Alex Henrie)
+Files:     src/syntax.c
+
+
+*** ../vim-7.3.474/src/syntax.c        2012-01-10 22:26:12.000000000 +0100
+--- src/syntax.c       2012-03-16 20:14:22.000000000 +0100
+***************
+*** 6516,6523 ****
+            "DiffText term=reverse cterm=bold ctermbg=Red gui=bold guibg=Red"),
+  #endif
+  #ifdef FEAT_INS_EXPAND
+-      CENT("PmenuThumb cterm=reverse",
+-           "PmenuThumb cterm=reverse gui=reverse"),
+       CENT("PmenuSbar ctermbg=Grey",
+            "PmenuSbar ctermbg=Grey guibg=Grey"),
+  #endif
+--- 6516,6521 ----
+***************
+*** 6557,6566 ****
+            "SpellLocal term=underline ctermbg=Cyan guisp=DarkCyan gui=undercurl"),
+  #endif
+  #ifdef FEAT_INS_EXPAND
+!      CENT("Pmenu ctermbg=LightMagenta",
+!           "Pmenu ctermbg=LightMagenta guibg=LightMagenta"),
+!      CENT("PmenuSel ctermbg=LightGrey",
+!           "PmenuSel ctermbg=LightGrey guibg=Grey"),
+  #endif
+       CENT("SpecialKey term=bold ctermfg=DarkBlue",
+            "SpecialKey term=bold ctermfg=DarkBlue guifg=Blue"),
+--- 6555,6566 ----
+            "SpellLocal term=underline ctermbg=Cyan guisp=DarkCyan gui=undercurl"),
+  #endif
+  #ifdef FEAT_INS_EXPAND
+!      CENT("PmenuThumb ctermbg=Black",
+!           "PmenuThumb ctermbg=Black guibg=Black"),
+!      CENT("Pmenu ctermbg=LightMagenta ctermfg=Black",
+!           "Pmenu ctermbg=LightMagenta ctermfg=Black guibg=LightMagenta"),
+!      CENT("PmenuSel ctermbg=LightGrey ctermfg=Black",
+!           "PmenuSel ctermbg=LightGrey ctermfg=Black guibg=Grey"),
+  #endif
+       CENT("SpecialKey term=bold ctermfg=DarkBlue",
+            "SpecialKey term=bold ctermfg=DarkBlue guifg=Blue"),
+***************
+*** 6645,6654 ****
+            "SpellLocal term=underline ctermbg=Cyan guisp=Cyan gui=undercurl"),
+  #endif
+  #ifdef FEAT_INS_EXPAND
+!      CENT("Pmenu ctermbg=Magenta",
+!           "Pmenu ctermbg=Magenta guibg=Magenta"),
+!      CENT("PmenuSel ctermbg=DarkGrey",
+!           "PmenuSel ctermbg=DarkGrey guibg=DarkGrey"),
+  #endif
+       CENT("Title term=bold ctermfg=LightMagenta",
+            "Title term=bold ctermfg=LightMagenta gui=bold guifg=Magenta"),
+--- 6645,6656 ----
+            "SpellLocal term=underline ctermbg=Cyan guisp=Cyan gui=undercurl"),
+  #endif
+  #ifdef FEAT_INS_EXPAND
+!      CENT("PmenuThumb ctermbg=White",
+!           "PmenuThumb ctermbg=White guibg=White"),
+!      CENT("Pmenu ctermbg=Magenta ctermfg=Black",
+!           "Pmenu ctermbg=Magenta ctermfg=Black guibg=Magenta"),
+!      CENT("PmenuSel ctermbg=DarkGrey ctermfg=Black",
+!           "PmenuSel ctermbg=DarkGrey ctermfg=Black guibg=DarkGrey"),
+  #endif
+       CENT("Title term=bold ctermfg=LightMagenta",
+            "Title term=bold ctermfg=LightMagenta gui=bold guifg=Magenta"),
+*** ../vim-7.3.474/src/version.c       2012-03-16 19:34:43.000000000 +0100
+--- src/version.c      2012-03-16 20:05:35.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     475,
+  /**/
+
+-- 
+Spam seems to be something useful to novices.  Later you realize that
+it's a bunch of indigestable junk that only clogs your system.
+Applies to both the food and the e-mail!
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.476.patch0 b/vim/patches/vim-7.3.476.patch0
new file mode 100644 (file)
index 0000000..959b906
--- /dev/null
@@ -0,0 +1,56 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.476
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.476
+Problem:    When selecting a block, using "$" to include the end of each line
+           and using "A" and typing a backspace strange things happen.
+           (Yuangchen Xie)
+Solution:   Avoid using a negative length. (Christian Brabandt)
+Files:     src/ops.c
+
+
+*** ../vim-7.3.475/src/ops.c   2012-03-07 19:30:32.000000000 +0100
+--- src/ops.c  2012-03-23 12:22:36.000000000 +0100
+***************
+*** 2602,2608 ****
+       firstline = ml_get(oap->start.lnum) + bd.textcol;
+       if (oap->op_type == OP_APPEND)
+           firstline += bd.textlen;
+!      if ((ins_len = (long)STRLEN(firstline) - pre_textlen) > 0)
+       {
+           ins_text = vim_strnsave(firstline, (int)ins_len);
+           if (ins_text != NULL)
+--- 2602,2609 ----
+       firstline = ml_get(oap->start.lnum) + bd.textcol;
+       if (oap->op_type == OP_APPEND)
+           firstline += bd.textlen;
+!      if (pre_textlen >= 0
+!                   && (ins_len = (long)STRLEN(firstline) - pre_textlen) > 0)
+       {
+           ins_text = vim_strnsave(firstline, (int)ins_len);
+           if (ins_text != NULL)
+*** ../vim-7.3.475/src/version.c       2012-03-16 20:16:42.000000000 +0100
+--- src/version.c      2012-03-23 14:14:49.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     476,
+  /**/
+
+-- 
+"Marriage is a wonderful institution...
+but who wants to live in an institution?"
+ - Groucho Marx
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.477.patch0 b/vim/patches/vim-7.3.477.patch0
new file mode 100644 (file)
index 0000000..8030ee6
--- /dev/null
@@ -0,0 +1,52 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.477
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.477
+Problem:    Using ":echo" to output enough lines to scroll, then using "j" and
+           "k" at the more prompt, displays the command on top of the output.
+           (Marcin Szamotulski) 
+Solution:   Put the output below the command. (Christian Brabandt)
+Files:     src/eval.c
+
+
+*** ../vim-7.3.476/src/eval.c  2012-03-07 19:16:49.000000000 +0100
+--- src/eval.c 2012-03-23 15:11:30.000000000 +0100
+***************
+*** 20492,20498 ****
+--- 20492,20503 ----
+               /* Call msg_start() after eval1(), evaluating the expression
+                * may cause a message to appear. */
+               if (eap->cmdidx == CMD_echo)
++              {
++                  /* Put the output below the command, makes scrolling back
++                   * at more prompt work. */
++                  msg_didout = TRUE;
+                   msg_start();
++              }
+           }
+           else if (eap->cmdidx == CMD_echo)
+               msg_puts_attr((char_u *)" ", echo_attr);
+*** ../vim-7.3.476/src/version.c       2012-03-23 14:16:19.000000000 +0100
+--- src/version.c      2012-03-23 15:13:58.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     477,
+  /**/
+
+-- 
+"Marriage is when a man and woman become as one; the trouble starts
+when they try to decide which one"
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.478.patch0 b/vim/patches/vim-7.3.478.patch0
new file mode 100644 (file)
index 0000000..bad69ef
--- /dev/null
@@ -0,0 +1,46 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.478
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.478
+Problem:    Memory leak using the ':rv!' command when reading dictionary or
+           list global variables i.e. with 'viminfo' containing !.
+Solution:   Free the typeval. (Dominique Pelle)
+Files:     src/eval.c
+
+
+*** ../vim-7.3.477/src/eval.c  2012-03-23 15:18:20.000000000 +0100
+--- src/eval.c 2012-03-23 15:28:42.000000000 +0100
+***************
+*** 22976,22981 ****
+--- 22976,22982 ----
+                   {
+                       vim_free(tv.vval.v_string);
+                       tv = *etv;
++                      vim_free(etv);
+                   }
+               }
+  
+*** ../vim-7.3.477/src/version.c       2012-03-23 15:18:20.000000000 +0100
+--- src/version.c      2012-03-23 15:29:22.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     478,
+  /**/
+
+-- 
+"Marriage is the process of finding out what kind of man your wife
+would have preferred"
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.479.patch0 b/vim/patches/vim-7.3.479.patch0
new file mode 100644 (file)
index 0000000..fc256c1
--- /dev/null
@@ -0,0 +1,134 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.479
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.479
+Problem:    When 'cursorline' is set the line number highlighting can't be set
+           separately.
+Solution:   Add "CursorLineNr". (Howard Buchholz)
+Files:     src/option.c, src/screen.c, src/syntax.c, src/vim.h
+
+
+*** ../vim-7.3.478/src/option.c        2012-02-29 13:51:32.000000000 +0100
+--- src/option.c       2012-03-23 15:44:57.000000000 +0100
+***************
+*** 460,468 ****
+  #if defined(FEAT_DIFF) || defined(FEAT_FOLDING) || defined(FEAT_SPELL) \
+       || defined(FEAT_VERTSPLIT) || defined(FEAT_CLIPBOARD) \
+       || defined(FEAT_INS_EXPAND) || defined(FEAT_SYN_HL) || defined(FEAT_CONCEAL)
+! # define HIGHLIGHT_INIT "8:SpecialKey,@:NonText,d:Directory,e:ErrorMsg,i:IncSearch,l:Search,m:MoreMsg,M:ModeMsg,n:LineNr,r:Question,s:StatusLine,S:StatusLineNC,c:VertSplit,t:Title,v:Visual,V:VisualNOS,w:WarningMsg,W:WildMenu,f:Folded,F:FoldColumn,A:DiffAdd,C:DiffChange,D:DiffDelete,T:DiffText,>:SignColumn,-:Conceal,B:SpellBad,P:SpellCap,R:SpellRare,L:SpellLocal,+:Pmenu,=:PmenuSel,x:PmenuSbar,X:PmenuThumb,*:TabLine,#:TabLineSel,_:TabLineFill,!:CursorColumn,.:CursorLine,o:ColorColumn"
+  #else
+! # define HIGHLIGHT_INIT "8:SpecialKey,@:NonText,d:Directory,e:ErrorMsg,i:IncSearch,l:Search,m:MoreMsg,M:ModeMsg,n:LineNr,r:Question,s:StatusLine,S:StatusLineNC,t:Title,v:Visual,w:WarningMsg,W:WildMenu,>:SignColumn,*:TabLine,#:TabLineSel,_:TabLineFill"
+  #endif
+  
+  /*
+--- 460,468 ----
+  #if defined(FEAT_DIFF) || defined(FEAT_FOLDING) || defined(FEAT_SPELL) \
+       || defined(FEAT_VERTSPLIT) || defined(FEAT_CLIPBOARD) \
+       || defined(FEAT_INS_EXPAND) || defined(FEAT_SYN_HL) || defined(FEAT_CONCEAL)
+! # define HIGHLIGHT_INIT "8:SpecialKey,@:NonText,d:Directory,e:ErrorMsg,i:IncSearch,l:Search,m:MoreMsg,M:ModeMsg,n:LineNr,N:CursorLineNr,r:Question,s:StatusLine,S:StatusLineNC,c:VertSplit,t:Title,v:Visual,V:VisualNOS,w:WarningMsg,W:WildMenu,f:Folded,F:FoldColumn,A:DiffAdd,C:DiffChange,D:DiffDelete,T:DiffText,>:SignColumn,-:Conceal,B:SpellBad,P:SpellCap,R:SpellRare,L:SpellLocal,+:Pmenu,=:PmenuSel,x:PmenuSbar,X:PmenuThumb,*:TabLine,#:TabLineSel,_:TabLineFill,!:CursorColumn,.:CursorLine,o:ColorColumn"
+  #else
+! # define HIGHLIGHT_INIT "8:SpecialKey,@:NonText,d:Directory,e:ErrorMsg,i:IncSearch,l:Search,m:MoreMsg,M:ModeMsg,n:LineNr,N:CursorLineNr,r:Question,s:StatusLine,S:StatusLineNC,t:Title,v:Visual,w:WarningMsg,W:WildMenu,>:SignColumn,*:TabLine,#:TabLineSel,_:TabLineFill"
+  #endif
+  
+  /*
+*** ../vim-7.3.478/src/screen.c        2012-03-16 19:07:54.000000000 +0100
+--- src/screen.c       2012-03-23 16:09:15.000000000 +0100
+***************
+*** 3501,3509 ****
+                   char_attr = hl_attr(HLF_N);
+  #ifdef FEAT_SYN_HL
+                   /* When 'cursorline' is set highlight the line number of
+!                   * the current line differently. */
+                   if (wp->w_p_cul && lnum == wp->w_cursor.lnum)
+!                      char_attr = hl_combine_attr(hl_attr(HLF_CUL), char_attr);
+  #endif
+               }
+           }
+--- 3501,3511 ----
+                   char_attr = hl_attr(HLF_N);
+  #ifdef FEAT_SYN_HL
+                   /* When 'cursorline' is set highlight the line number of
+!                   * the current line differently.
+!                   * TODO: Can we use CursorLine instead of CursorLineNr
+!                   * when CursorLineNr isn't set? */
+                   if (wp->w_p_cul && lnum == wp->w_cursor.lnum)
+!                      char_attr = hl_attr(HLF_CLN);
+  #endif
+               }
+           }
+*** ../vim-7.3.478/src/syntax.c        2012-03-16 20:16:42.000000000 +0100
+--- src/syntax.c       2012-03-23 16:23:57.000000000 +0100
+***************
+*** 6538,6543 ****
+--- 6538,6545 ----
+            "Directory term=bold ctermfg=DarkBlue guifg=Blue"),
+       CENT("LineNr term=underline ctermfg=Brown",
+            "LineNr term=underline ctermfg=Brown guifg=Brown"),
++      CENT("CursorLineNr term=bold ctermfg=Brown",
++           "CursorLineNr term=bold ctermfg=Brown gui=bold guifg=Brown"),
+       CENT("MoreMsg term=bold ctermfg=DarkGreen",
+            "MoreMsg term=bold ctermfg=DarkGreen gui=bold guifg=SeaGreen"),
+       CENT("Question term=standout ctermfg=DarkGreen",
+***************
+*** 6626,6631 ****
+--- 6628,6635 ----
+            "Directory term=bold ctermfg=LightCyan guifg=Cyan"),
+       CENT("LineNr term=underline ctermfg=Yellow",
+            "LineNr term=underline ctermfg=Yellow guifg=Yellow"),
++      CENT("CursorLineNr term=bold ctermfg=Yellow",
++           "CursorLineNr term=bold ctermfg=Yellow gui=bold guifg=Yellow"),
+       CENT("MoreMsg term=bold ctermfg=LightGreen",
+            "MoreMsg term=bold ctermfg=LightGreen gui=bold guifg=SeaGreen"),
+       CENT("Question term=standout ctermfg=LightGreen",
+*** ../vim-7.3.478/src/vim.h   2012-03-07 19:16:49.000000000 +0100
+--- src/vim.h  2012-03-23 15:44:57.000000000 +0100
+***************
+*** 1318,1323 ****
+--- 1318,1324 ----
+      , HLF_M      /* "--More--" message */
+      , HLF_CM     /* Mode (e.g., "-- INSERT --") */
+      , HLF_N      /* line number for ":number" and ":#" commands */
++     , HLF_CLN            /* current line number */
+      , HLF_R      /* return to continue message and yes/no questions */
+      , HLF_S      /* status lines */
+      , HLF_SNC            /* status lines of not-current windows */
+***************
+*** 1355,1361 ****
+  /* The HL_FLAGS must be in the same order as the HLF_ enums!
+   * When changing this also adjust the default for 'highlight'. */
+  #define HL_FLAGS {'8', '@', 'd', 'e', 'h', 'i', 'l', 'm', 'M', \
+!                'n', 'r', 's', 'S', 'c', 't', 'v', 'V', 'w', 'W', \
+                 'f', 'F', 'A', 'C', 'D', 'T', '-', '>', \
+                 'B', 'P', 'R', 'L', \
+                 '+', '=', 'x', 'X', '*', '#', '_', '!', '.', 'o'}
+--- 1356,1362 ----
+  /* The HL_FLAGS must be in the same order as the HLF_ enums!
+   * When changing this also adjust the default for 'highlight'. */
+  #define HL_FLAGS {'8', '@', 'd', 'e', 'h', 'i', 'l', 'm', 'M', \
+!                'n', 'N', 'r', 's', 'S', 'c', 't', 'v', 'V', 'w', 'W', \
+                 'f', 'F', 'A', 'C', 'D', 'T', '-', '>', \
+                 'B', 'P', 'R', 'L', \
+                 '+', '=', 'x', 'X', '*', '#', '_', '!', '.', 'o'}
+*** ../vim-7.3.478/src/version.c       2012-03-23 15:36:57.000000000 +0100
+--- src/version.c      2012-03-23 16:16:41.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     479,
+  /**/
+
+-- 
+If you're sending someone Styrofoam, what do you pack it in?
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.480.patch0 b/vim/patches/vim-7.3.480.patch0
new file mode 100644 (file)
index 0000000..6d1e21d
--- /dev/null
@@ -0,0 +1,237 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.480
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.480
+Problem:    When using ":qa" and there is a changed buffer picking the buffer
+           to jump to is not very good.
+Solution:   Consider current and other tab pages. (Hirohito Higashi)
+Files:     src/ex_cmds2.c
+
+
+*** ../vim-7.3.479/src/ex_cmds2.c      2012-02-22 18:29:29.000000000 +0100
+--- src/ex_cmds2.c     2012-03-23 17:01:31.000000000 +0100
+***************
+*** 1569,1574 ****
+--- 1569,1594 ----
+               || forceit);
+  }
+  
++ static void add_bufnum __ARGS((int *bufnrs, int *bufnump, int nr));
++ 
++ /*
++  * Add a buffer number to "bufnrs", unless it's already there.
++  */
++     static void
++ add_bufnum(bufnrs, bufnump, nr)
++     int          *bufnrs;
++     int          *bufnump;
++     int          nr;
++ {
++     int i;
++ 
++     for (i = 0; i < *bufnump; ++i)
++      if (bufnrs[i] == nr)
++          return;
++     bufnrs[*bufnump] = nr;
++     *bufnump = *bufnump + 1;
++ }
++ 
+  /*
+   * Return TRUE if any buffer was changed and cannot be abandoned.
+   * That changed buffer becomes the current buffer.
+***************
+*** 1577,1608 ****
+  check_changed_any(hidden)
+      int              hidden;         /* Only check hidden buffers */
+  {
+      buf_T    *buf;
+      int              save;
+  #ifdef FEAT_WINDOWS
+      win_T    *wp;
+  #endif
+  
+!     for (;;)
+      {
+!      /* check curbuf first: if it was changed we can't abandon it */
+!      if (!hidden && curbufIsChanged())
+!          buf = curbuf;
+!      else
+       {
+!          for (buf = firstbuf; buf != NULL; buf = buf->b_next)
+!              if ((!hidden || buf->b_nwindows == 0) && bufIsChanged(buf))
+!                  break;
+       }
+-      if (buf == NULL)    /* No buffers changed */
+-          return FALSE;
+- 
+-      /* Try auto-writing the buffer.  If this fails but the buffer no
+-       * longer exists it's not changed, that's OK. */
+-      if (check_changed(buf, p_awa, TRUE, FALSE, TRUE) && buf_valid(buf))
+-          break;          /* didn't save - still changes */
+      }
+  
+      exiting = FALSE;
+  #if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG)
+      /*
+--- 1597,1660 ----
+  check_changed_any(hidden)
+      int              hidden;         /* Only check hidden buffers */
+  {
++     int              ret = FALSE;
+      buf_T    *buf;
+      int              save;
++     int              i;
++     int              bufnum = 0;
++     int              bufcount = 0;
++     int              *bufnrs;
+  #ifdef FEAT_WINDOWS
++     tabpage_T   *tp;
+      win_T    *wp;
+  #endif
+  
+!     for (buf = firstbuf; buf != NULL; buf = buf->b_next)
+!      ++bufcount;
+! 
+!     if (bufcount == 0)
+!      return FALSE;
+! 
+!     bufnrs = (int *)alloc(sizeof(int) * bufcount);
+!     if (bufnrs == NULL)
+!      return FALSE;
+! 
+!     /* curbuf */
+!     bufnrs[bufnum++] = curbuf->b_fnum;
+! #ifdef FEAT_WINDOWS
+!     /* buf in curtab */
+!     FOR_ALL_WINDOWS(wp)
+!      if (wp->w_buffer != curbuf)
+!          add_bufnum(bufnrs, &bufnum, wp->w_buffer->b_fnum);
+! 
+!     /* buf in other tab */
+!     for (tp = first_tabpage; tp != NULL; tp = tp->tp_next)
+!      if (tp != curtab)
+!          for (wp = tp->tp_firstwin; wp != NULL; wp = wp->w_next)
+!              add_bufnum(bufnrs, &bufnum, wp->w_buffer->b_fnum);
+! #endif
+!     /* any other buf */
+!     for (buf = firstbuf; buf != NULL; buf = buf->b_next)
+!      add_bufnum(bufnrs, &bufnum, buf->b_fnum);
+! 
+!     for (i = 0; i < bufnum; ++i)
+      {
+!      buf = buflist_findnr(bufnrs[i]);
+!      if (buf == NULL)
+!          continue;
+!      if ((!hidden || buf->b_nwindows == 0) && bufIsChanged(buf))
+       {
+!          /* Try auto-writing the buffer.  If this fails but the buffer no
+!          * longer exists it's not changed, that's OK. */
+!          if (check_changed(buf, p_awa, TRUE, FALSE, TRUE) && buf_valid(buf))
+!              break;      /* didn't save - still changes */
+       }
+      }
+  
++     if (i >= bufnum)
++      goto theend;
++ 
++     ret = TRUE;
+      exiting = FALSE;
+  #if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG)
+      /*
+***************
+*** 1635,1658 ****
+  #ifdef FEAT_WINDOWS
+      /* Try to find a window that contains the buffer. */
+      if (buf != curbuf)
+!      for (wp = firstwin; wp != NULL; wp = wp->w_next)
+           if (wp->w_buffer == buf)
+           {
+!              win_goto(wp);
+  # ifdef FEAT_AUTOCMD
+               /* Paranoia: did autocms wipe out the buffer with changes? */
+               if (!buf_valid(buf))
+!                  return TRUE;
+  # endif
+!              break;
+           }
+  #endif
+  
+      /* Open the changed buffer in the current window. */
+      if (buf != curbuf)
+       set_curbuf(buf, DOBUF_GOTO);
+  
+!     return TRUE;
+  }
+  
+  /*
+--- 1687,1715 ----
+  #ifdef FEAT_WINDOWS
+      /* Try to find a window that contains the buffer. */
+      if (buf != curbuf)
+!      FOR_ALL_TAB_WINDOWS(tp, wp)
+           if (wp->w_buffer == buf)
+           {
+!              goto_tabpage_win(tp, wp);
+  # ifdef FEAT_AUTOCMD
+               /* Paranoia: did autocms wipe out the buffer with changes? */
+               if (!buf_valid(buf))
+!              {
+!                  goto theend;
+!              }
+  # endif
+!              goto buf_found;
+           }
++ buf_found:
+  #endif
+  
+      /* Open the changed buffer in the current window. */
+      if (buf != curbuf)
+       set_curbuf(buf, DOBUF_GOTO);
+  
+! theend:
+!     vim_free(bufnrs);
+!     return ret;
+  }
+  
+  /*
+***************
+*** 3274,3280 ****
+           home_replace(NULL, SCRIPT_ITEM(i).sn_name,
+                                                   NameBuff, MAXPATHL, TRUE);
+           smsg((char_u *)"%3d: %s", i, NameBuff);
+!         }
+  }
+  
+  # if defined(BACKSLASH_IN_FILENAME) || defined(PROTO)
+--- 3331,3337 ----
+           home_replace(NULL, SCRIPT_ITEM(i).sn_name,
+                                                   NameBuff, MAXPATHL, TRUE);
+           smsg((char_u *)"%3d: %s", i, NameBuff);
+!      }
+  }
+  
+  # if defined(BACKSLASH_IN_FILENAME) || defined(PROTO)
+*** ../vim-7.3.479/src/version.c       2012-03-23 16:25:13.000000000 +0100
+--- src/version.c      2012-03-23 16:48:06.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     480,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+243. You unsuccessfully try to download a pizza from www.dominos.com.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.481.patch0 b/vim/patches/vim-7.3.481.patch0
new file mode 100644 (file)
index 0000000..69f6915
--- /dev/null
@@ -0,0 +1,65 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.481
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.481
+Problem:    Changing 'virtualedit' in an operator function to "all" does not
+           have the desired effect. (Aaron Bohannon)
+Solution:   Save, reset and restore virtual_op when executing an operator
+           function.
+Files:     src/normal.c
+
+
+*** ../vim-7.3.480/src/normal.c        2012-02-05 01:18:41.000000000 +0100
+--- src/normal.c       2012-03-28 12:59:46.000000000 +0200
+***************
+*** 2279,2284 ****
+--- 2279,2285 ----
+  {
+  #ifdef FEAT_EVAL
+      char_u   *(argv[1]);
++     int              save_virtual_op = virtual_op;
+  
+      if (*p_opfunc == NUL)
+       EMSG(_("E774: 'operatorfunc' is empty"));
+***************
+*** 2297,2303 ****
+--- 2298,2311 ----
+           argv[0] = (char_u *)"line";
+       else
+           argv[0] = (char_u *)"char";
++ 
++      /* Reset virtual_op so that 'virtualedit' can be changed in the
++       * function. */
++      virtual_op = MAYBE;
++ 
+       (void)call_func_retnr(p_opfunc, 1, argv, FALSE);
++ 
++      virtual_op = save_virtual_op;
+      }
+  #else
+      EMSG(_("E775: Eval feature not available"));
+*** ../vim-7.3.480/src/version.c       2012-03-23 18:39:10.000000000 +0100
+--- src/version.c      2012-03-28 12:50:20.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     481,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+269. You wonder how you can make your dustbin produce Sesame Street's
+     Oscar's the Garbage Monster song when you empty it.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.482.patch0 b/vim/patches/vim-7.3.482.patch0
new file mode 100644 (file)
index 0000000..56ff301
--- /dev/null
@@ -0,0 +1,57 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.482
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.482
+Problem:    With 'cursorbind' set moving up/down does not always keep the same
+           column.
+Solution:   Set curswant appropriately. (Gary Johnson)
+Files:     src/move.c
+
+
+*** ../vim-7.3.481/src/move.c  2012-03-16 19:24:21.000000000 +0100
+--- src/move.c 2012-03-28 14:16:02.000000000 +0200
+***************
+*** 2847,2852 ****
+--- 2847,2854 ----
+  # ifdef FEAT_VIRTUALEDIT
+      colnr_T  coladd = curwin->w_cursor.coladd;
+  # endif
++     colnr_T  curswant = curwin->w_curswant;
++     int              set_curswant = curwin->w_set_curswant;
+      win_T    *old_curwin = curwin;
+      buf_T    *old_curbuf = curbuf;
+      int              restart_edit_save;
+***************
+*** 2881,2886 ****
+--- 2883,2890 ----
+  # ifdef FEAT_VIRTUALEDIT
+           curwin->w_cursor.coladd = coladd;
+  # endif
++          curwin->w_curswant = curswant;
++          curwin->w_set_curswant = set_curswant;
+  
+           /* Make sure the cursor is in a valid position.  Temporarily set
+            * "restart_edit" to allow the cursor to be beyond the EOL. */
+*** ../vim-7.3.481/src/version.c       2012-03-28 12:59:53.000000000 +0200
+--- src/version.c      2012-03-28 14:15:56.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     482,
+  /**/
+
+-- 
+Women are probably the main cause of free software starvation.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.483.patch0 b/vim/patches/vim-7.3.483.patch0
new file mode 100644 (file)
index 0000000..bab488b
--- /dev/null
@@ -0,0 +1,97 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.483
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.483  (after 7.3.477)
+Problem:    More prompt shows up too often.
+Solution:   Instead of adding a line break, only start a new line in the
+           message history. (Christian Brabandt)
+Files:     src/eval.c, src/message.c, src/proto/message.pro
+
+
+*** ../vim-7.3.482/src/eval.c  2012-03-23 15:36:57.000000000 +0100
+--- src/eval.c 2012-03-28 16:41:03.000000000 +0200
+***************
+*** 20493,20501 ****
+                * may cause a message to appear. */
+               if (eap->cmdidx == CMD_echo)
+               {
+!                  /* Put the output below the command, makes scrolling back
+!                   * at more prompt work. */
+!                  msg_didout = TRUE;
+                   msg_start();
+               }
+           }
+--- 20493,20502 ----
+                * may cause a message to appear. */
+               if (eap->cmdidx == CMD_echo)
+               {
+!                  /* Mark the saved text as finishing the line, so that what
+!                   * follows is displayed on a new line when scrolling back
+!                   * at the more prompt. */
+!                  msg_sb_eol();
+                   msg_start();
+               }
+           }
+*** ../vim-7.3.482/src/message.c       2012-01-26 13:01:54.000000000 +0100
+--- src/message.c      2012-03-28 16:35:26.000000000 +0200
+***************
+*** 2348,2353 ****
+--- 2348,2363 ----
+  }
+  
+  /*
++  * Mark the last message chunk as finishing the line.
++  */
++     void
++ msg_sb_eol()
++ {
++     if (last_msgchunk != NULL)
++      last_msgchunk->sb_eol = TRUE;
++ }
++ 
++ /*
+   * Display a screen line from previously displayed text at row "row".
+   * Returns a pointer to the text for the next line (can be NULL).
+   */
+*** ../vim-7.3.482/src/proto/message.pro       2012-01-20 20:44:38.000000000 +0100
+--- src/proto/message.pro      2012-03-28 16:35:33.000000000 +0200
+***************
+*** 45,50 ****
+--- 45,51 ----
+  void may_clear_sb_text __ARGS((void));
+  void clear_sb_text __ARGS((void));
+  void show_sb_text __ARGS((void));
++ void msg_sb_eol __ARGS((void));
+  int msg_use_printf __ARGS((void));
+  void mch_errmsg __ARGS((char *str));
+  void mch_msg __ARGS((char *str));
+*** ../vim-7.3.482/src/version.c       2012-03-28 14:19:46.000000000 +0200
+--- src/version.c      2012-03-28 16:48:53.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     483,
+  /**/
+
+-- 
+       We're knights of the Round Table
+       Our shows are formidable
+       But many times
+       We're given rhymes
+       That are quite unsingable
+       We're opera mad in Camelot
+       We sing from the diaphragm a lot.
+                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.484.patch0 b/vim/patches/vim-7.3.484.patch0
new file mode 100644 (file)
index 0000000..99968eb
--- /dev/null
@@ -0,0 +1,62 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.484
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.484
+Problem:    The -E and --echo-wid command line arguments are not mentioned in
+           "vim --help".
+Solution:   Add the help lines. (Dominique Pelle)
+Files:     src/main.c
+
+
+*** ../vim-7.3.483/src/main.c  2012-02-12 01:55:50.000000000 +0100
+--- src/main.c 2012-03-28 16:55:03.000000000 +0200
+***************
+*** 3181,3186 ****
+--- 3181,3187 ----
+  #endif
+      main_msg(_("-v\t\t\tVi mode (like \"vi\")"));
+      main_msg(_("-e\t\t\tEx mode (like \"ex\")"));
++     main_msg(_("-E\t\t\tImproved Ex mode"));
+      main_msg(_("-s\t\t\tSilent (batch) mode (only for \"ex\")"));
+  #ifdef FEAT_DIFF
+      main_msg(_("-d\t\t\tDiff mode (like \"vimdiff\")"));
+***************
+*** 3304,3309 ****
+--- 3305,3311 ----
+      main_msg(_("-display <display>\tRun vim on <display> (also: --display)"));
+      main_msg(_("--role <role>\tSet a unique role to identify the main window"));
+      main_msg(_("--socketid <xid>\tOpen Vim inside another GTK widget"));
++     main_msg(_("--echo-wid\t\tMake gvim echo the Window ID on stdout"));
+  #endif
+  #ifdef FEAT_GUI_W32
+      main_msg(_("-P <parent title>\tOpen Vim inside parent application"));
+*** ../vim-7.3.483/src/version.c       2012-03-28 16:49:25.000000000 +0200
+--- src/version.c      2012-03-28 17:10:08.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     484,
+  /**/
+
+-- 
+       In war we're tough and able.
+       Quite indefatigable
+       Between our quests
+       We sequin vests
+       And impersonate Clark Gable
+       It's a busy life in Camelot.
+       I have to push the pram a lot.
+                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.485.patch0 b/vim/patches/vim-7.3.485.patch0
new file mode 100644 (file)
index 0000000..46b4cb7
--- /dev/null
@@ -0,0 +1,52 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.485
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.485
+Problem:    When building Vim LDFLAGS isn't passed on to building xxd.
+Solution:   Pass the LDFLAGS value. (James McCoy)
+Files:     src/Makefile
+
+
+*** ../vim-7.3.484/src/Makefile        2011-12-14 20:51:19.000000000 +0100
+--- src/Makefile       2012-03-28 17:16:06.000000000 +0200
+***************
+*** 1720,1726 ****
+               sh $(srcdir)/link.sh
+  
+  xxd/xxd$(EXEEXT): xxd/xxd.c
+!      cd xxd; CC="$(CC)" CFLAGS="$(CPPFLAGS) $(CFLAGS)" \
+               $(MAKE) -f Makefile
+  
+  # Build the language specific files if they were unpacked.
+--- 1720,1726 ----
+               sh $(srcdir)/link.sh
+  
+  xxd/xxd$(EXEEXT): xxd/xxd.c
+!      cd xxd; CC="$(CC)" CFLAGS="$(CPPFLAGS) $(CFLAGS)" LDFLAGS="$(LDFLAGS)" \
+               $(MAKE) -f Makefile
+  
+  # Build the language specific files if they were unpacked.
+*** ../vim-7.3.484/src/version.c       2012-03-28 17:10:26.000000000 +0200
+--- src/version.c      2012-03-28 17:16:15.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     485,
+  /**/
+
+-- 
+GOD: That is your purpose Arthur ... the Quest for the Holy Grail ...
+                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.486.patch0 b/vim/patches/vim-7.3.486.patch0
new file mode 100644 (file)
index 0000000..44e2afe
--- /dev/null
@@ -0,0 +1,58 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.486
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.486
+Problem:    Build error with mingw64 on Windows 7.
+Solution:   Avoid the step of going through vimres.res. (Guopeng Wen)
+Files:     src/Make_ming.mak
+
+
+*** ../vim-7.3.485/src/Make_ming.mak   2012-02-29 16:56:35.000000000 +0100
+--- src/Make_ming.mak  2012-03-28 17:41:55.000000000 +0200
+***************
+*** 681,691 ****
+  $(OUTDIR)/%.o : %.c $(INCL)
+       $(CC) -c $(CFLAGS) $< -o $@
+  
+! $(OUTDIR)/vimres.res: vim.rc version.h gui_w32_rc.h
+!      $(WINDRES) $(WINDRES_FLAGS) $(DEFINES) vim.rc $(OUTDIR)/vimres.res
+! 
+! $(OUTDIR)/vimrc.o: $(OUTDIR)/vimres.res
+!      $(WINDRES) $(WINDRES_FLAGS) $(OUTDIR)/vimres.res $(OUTDIR)/vimrc.o
+  
+  $(OUTDIR):
+       $(MKDIR) $(OUTDIR)
+--- 681,689 ----
+  $(OUTDIR)/%.o : %.c $(INCL)
+       $(CC) -c $(CFLAGS) $< -o $@
+  
+! $(OUTDIR)/vimrc.o: vim.rc version.h gui_w32_rc.h
+!      $(WINDRES) $(WINDRES_FLAGS) $(DEFINES) \
+!          --input-format=rc --output-format=coff -i vim.rc -o $@
+  
+  $(OUTDIR):
+       $(MKDIR) $(OUTDIR)
+*** ../vim-7.3.485/src/version.c       2012-03-28 17:17:45.000000000 +0200
+--- src/version.c      2012-03-28 17:42:25.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     486,
+  /**/
+
+-- 
+There is a fine line between courage and foolishness.
+Unfortunately, it's not a fence.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.487.patch0 b/vim/patches/vim-7.3.487.patch0
new file mode 100644 (file)
index 0000000..3c00349
--- /dev/null
@@ -0,0 +1,572 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.487
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.487
+Problem:    When setting 'timeoutlen' or 'ttimeoutlen' the column for vertical
+           movement is reset unnecessarily.
+Solution:   Do not set w_set_curswant for every option. Add a test for this.
+           (Kana Natsuno) Add the P_CURSWANT flag for options.
+Files:     src/option.c, src/testdir/test84.in, src/testdir/test84.ok,
+           src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak,
+           src/testdir/Make_ming.mak, src/testdir/Make_os2.mak,
+           src/testdir/Make_vms.mms, src/testdir/Makefile
+
+
+*** ../vim-7.3.486/src/option.c        2012-03-23 16:25:13.000000000 +0100
+--- src/option.c       2012-03-28 19:57:46.000000000 +0200
+***************
+*** 433,449 ****
+  #define P_RCLR               0x7000  /* clear and redraw all */
+  
+  #define P_COMMA              0x8000  /* comma separated list */
+! #define P_NODUP              0x10000L/* don't allow duplicate strings */
+! #define P_FLAGLIST   0x20000L/* list of single-char flags */
+  
+! #define P_SECURE     0x40000L/* cannot change in modeline or secure mode */
+! #define P_GETTEXT    0x80000L/* expand default value with _() */
+! #define P_NOGLOB       0x100000L/* do not use local value for global vimrc */
+! #define P_NFNAME       0x200000L/* only normal file name chars allowed */
+! #define P_INSECURE     0x400000L/* option was set from a modeline */
+! #define P_PRI_MKRC     0x800000L/* priority for :mkvimrc (setting option has
+                                  side effects) */
+! #define P_NO_ML       0x1000000L/* not allowed in modeline */
+  
+  #define ISK_LATIN1  (char_u *)"@,48-57,_,192-255"
+  
+--- 433,451 ----
+  #define P_RCLR               0x7000  /* clear and redraw all */
+  
+  #define P_COMMA              0x8000  /* comma separated list */
+! #define P_NODUP              0x10000L /* don't allow duplicate strings */
+! #define P_FLAGLIST   0x20000L /* list of single-char flags */
+  
+! #define P_SECURE     0x40000L /* cannot change in modeline or secure mode */
+! #define P_GETTEXT    0x80000L /* expand default value with _() */
+! #define P_NOGLOB       0x100000L /* do not use local value for global vimrc */
+! #define P_NFNAME       0x200000L /* only normal file name chars allowed */
+! #define P_INSECURE     0x400000L /* option was set from a modeline */
+! #define P_PRI_MKRC     0x800000L /* priority for :mkvimrc (setting option has
+                                  side effects) */
+! #define P_NO_ML       0x1000000L /* not allowed in modeline */
+! #define P_CURSWANT    0x2000000L /* update curswant required; not needed when
+!                                * there is a redraw flag */
+  
+  #define ISK_LATIN1  (char_u *)"@,48-57,_,192-255"
+  
+***************
+*** 479,485 ****
+  #endif
+       options[] =
+  {
+!     {"aleph",            "al",   P_NUM|P_VI_DEF,
+  #ifdef FEAT_RIGHTLEFT
+                           (char_u *)&p_aleph, PV_NONE,
+  #else
+--- 481,487 ----
+  #endif
+       options[] =
+  {
+!     {"aleph",            "al",   P_NUM|P_VI_DEF|P_CURSWANT,
+  #ifdef FEAT_RIGHTLEFT
+                           (char_u *)&p_aleph, PV_NONE,
+  #else
+***************
+*** 501,507 ****
+                           {(char_u *)FALSE, (char_u *)FALSE}
+  #endif
+                           SCRIPTID_INIT},
+!     {"arabic",           "arab", P_BOOL|P_VI_DEF|P_VIM,
+  #ifdef FEAT_ARABIC
+                           (char_u *)VAR_WIN, PV_ARAB,
+  #else
+--- 503,509 ----
+                           {(char_u *)FALSE, (char_u *)FALSE}
+  #endif
+                           SCRIPTID_INIT},
+!     {"arabic",           "arab", P_BOOL|P_VI_DEF|P_VIM|P_CURSWANT,
+  #ifdef FEAT_ARABIC
+                           (char_u *)VAR_WIN, PV_ARAB,
+  #else
+***************
+*** 778,784 ****
+      {"columns",          "co",   P_NUM|P_NODEFAULT|P_NO_MKRC|P_VI_DEF|P_RCLR,
+                           (char_u *)&Columns, PV_NONE,
+                           {(char_u *)80L, (char_u *)0L} SCRIPTID_INIT},
+!     {"comments",    "com",  P_STRING|P_ALLOCED|P_VI_DEF|P_COMMA|P_NODUP,
+  #ifdef FEAT_COMMENTS
+                           (char_u *)&p_com, PV_COM,
+                           {(char_u *)"s1:/*,mb:*,ex:*/,://,b:#,:%,:XCOMM,n:>,fb:-",
+--- 780,786 ----
+      {"columns",          "co",   P_NUM|P_NODEFAULT|P_NO_MKRC|P_VI_DEF|P_RCLR,
+                           (char_u *)&Columns, PV_NONE,
+                           {(char_u *)80L, (char_u *)0L} SCRIPTID_INIT},
+!     {"comments",    "com",  P_STRING|P_ALLOCED|P_VI_DEF|P_COMMA|P_NODUP|P_CURSWANT,
+  #ifdef FEAT_COMMENTS
+                           (char_u *)&p_com, PV_COM,
+                           {(char_u *)"s1:/*,mb:*,ex:*/,://,b:#,:%,:XCOMM,n:>,fb:-",
+***************
+*** 788,794 ****
+                           {(char_u *)0L, (char_u *)0L}
+  #endif
+                           SCRIPTID_INIT},
+!     {"commentstring", "cms", P_STRING|P_ALLOCED|P_VI_DEF,
+  #ifdef FEAT_FOLDING
+                           (char_u *)&p_cms, PV_CMS,
+                           {(char_u *)"/*%s*/", (char_u *)0L}
+--- 790,796 ----
+                           {(char_u *)0L, (char_u *)0L}
+  #endif
+                           SCRIPTID_INIT},
+!     {"commentstring", "cms", P_STRING|P_ALLOCED|P_VI_DEF|P_CURSWANT,
+  #ifdef FEAT_FOLDING
+                           (char_u *)&p_cms, PV_CMS,
+                           {(char_u *)"/*%s*/", (char_u *)0L}
+***************
+*** 953,959 ****
+      {"debug",            NULL,   P_STRING|P_VI_DEF,
+                           (char_u *)&p_debug, PV_NONE,
+                           {(char_u *)"", (char_u *)0L} SCRIPTID_INIT},
+!     {"define",           "def",  P_STRING|P_ALLOCED|P_VI_DEF,
+  #ifdef FEAT_FIND_ID
+                           (char_u *)&p_def, PV_DEF,
+                           {(char_u *)"^\\s*#\\s*define", (char_u *)0L}
+--- 955,961 ----
+      {"debug",            NULL,   P_STRING|P_VI_DEF,
+                           (char_u *)&p_debug, PV_NONE,
+                           {(char_u *)"", (char_u *)0L} SCRIPTID_INIT},
+!     {"define",           "def",  P_STRING|P_ALLOCED|P_VI_DEF|P_CURSWANT,
+  #ifdef FEAT_FIND_ID
+                           (char_u *)&p_def, PV_DEF,
+                           {(char_u *)"^\\s*#\\s*define", (char_u *)0L}
+***************
+*** 983,989 ****
+                           (char_u *)NULL, PV_NONE,
+  #endif
+                           {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+!     {"diffexpr",    "dex",  P_STRING|P_VI_DEF|P_SECURE,
+  #if defined(FEAT_DIFF) && defined(FEAT_EVAL)
+                           (char_u *)&p_dex, PV_NONE,
+                           {(char_u *)"", (char_u *)0L}
+--- 985,991 ----
+                           (char_u *)NULL, PV_NONE,
+  #endif
+                           {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+!     {"diffexpr",    "dex",  P_STRING|P_VI_DEF|P_SECURE|P_CURSWANT,
+  #if defined(FEAT_DIFF) && defined(FEAT_EVAL)
+                           (char_u *)&p_dex, PV_NONE,
+                           {(char_u *)"", (char_u *)0L}
+***************
+*** 1099,1105 ****
+                           {(char_u *)0L, (char_u *)0L}
+  #endif
+                           SCRIPTID_INIT},
+!     {"fileformat",  "ff",   P_STRING|P_ALLOCED|P_VI_DEF|P_RSTAT|P_NO_MKRC,
+                           (char_u *)&p_ff, PV_FF,
+                           {(char_u *)DFLT_FF, (char_u *)0L} SCRIPTID_INIT},
+      {"fileformats", "ffs",  P_STRING|P_VIM|P_COMMA|P_NODUP,
+--- 1101,1107 ----
+                           {(char_u *)0L, (char_u *)0L}
+  #endif
+                           SCRIPTID_INIT},
+!     {"fileformat",  "ff",   P_STRING|P_ALLOCED|P_VI_DEF|P_RSTAT|P_NO_MKRC|P_CURSWANT,
+                           (char_u *)&p_ff, PV_FF,
+                           {(char_u *)DFLT_FF, (char_u *)0L} SCRIPTID_INIT},
+      {"fileformats", "ffs",  P_STRING|P_VIM|P_COMMA|P_NODUP,
+***************
+*** 1159,1165 ****
+      {"foldlevel",   "fdl",  P_NUM|P_VI_DEF|P_RWIN,
+                           (char_u *)VAR_WIN, PV_FDL,
+                           {(char_u *)0L, (char_u *)0L} SCRIPTID_INIT},
+!     {"foldlevelstart","fdls", P_NUM|P_VI_DEF,
+                           (char_u *)&p_fdls, PV_NONE,
+                           {(char_u *)-1L, (char_u *)0L} SCRIPTID_INIT},
+      {"foldmarker",  "fmr",  P_STRING|P_ALLOCED|P_VIM|P_VI_DEF|
+--- 1161,1167 ----
+      {"foldlevel",   "fdl",  P_NUM|P_VI_DEF|P_RWIN,
+                           (char_u *)VAR_WIN, PV_FDL,
+                           {(char_u *)0L, (char_u *)0L} SCRIPTID_INIT},
+!     {"foldlevelstart","fdls", P_NUM|P_VI_DEF|P_CURSWANT,
+                           (char_u *)&p_fdls, PV_NONE,
+                           {(char_u *)-1L, (char_u *)0L} SCRIPTID_INIT},
+      {"foldmarker",  "fmr",  P_STRING|P_ALLOCED|P_VIM|P_VI_DEF|
+***************
+*** 1176,1182 ****
+      {"foldnestmax", "fdn",  P_NUM|P_VI_DEF|P_RWIN,
+                           (char_u *)VAR_WIN, PV_FDN,
+                           {(char_u *)20L, (char_u *)0L} SCRIPTID_INIT},
+!     {"foldopen",    "fdo",  P_STRING|P_VI_DEF|P_COMMA|P_NODUP,
+                           (char_u *)&p_fdo, PV_NONE,
+                {(char_u *)"block,hor,mark,percent,quickfix,search,tag,undo",
+                                                (char_u *)0L} SCRIPTID_INIT},
+--- 1178,1184 ----
+      {"foldnestmax", "fdn",  P_NUM|P_VI_DEF|P_RWIN,
+                           (char_u *)VAR_WIN, PV_FDN,
+                           {(char_u *)20L, (char_u *)0L} SCRIPTID_INIT},
+!     {"foldopen",    "fdo",  P_STRING|P_VI_DEF|P_COMMA|P_NODUP|P_CURSWANT,
+                           (char_u *)&p_fdo, PV_NONE,
+                {(char_u *)"block,hor,mark,percent,quickfix,search,tag,undo",
+                                                (char_u *)0L} SCRIPTID_INIT},
+***************
+*** 1741,1747 ****
+      {"matchtime",   "mat",  P_NUM|P_VI_DEF,
+                           (char_u *)&p_mat, PV_NONE,
+                           {(char_u *)5L, (char_u *)0L} SCRIPTID_INIT},
+!     {"maxcombine",  "mco",  P_NUM|P_VI_DEF,
+  #ifdef FEAT_MBYTE
+                           (char_u *)&p_mco, PV_NONE,
+  #else
+--- 1743,1749 ----
+      {"matchtime",   "mat",  P_NUM|P_VI_DEF,
+                           (char_u *)&p_mat, PV_NONE,
+                           {(char_u *)5L, (char_u *)0L} SCRIPTID_INIT},
+!     {"maxcombine",  "mco",  P_NUM|P_VI_DEF|P_CURSWANT,
+  #ifdef FEAT_MBYTE
+                           (char_u *)&p_mco, PV_NONE,
+  #else
+***************
+*** 2710,2716 ****
+                           {(char_u *)0L, (char_u *)0L}
+  #endif
+                           SCRIPTID_INIT},
+!     {"virtualedit", "ve",   P_STRING|P_COMMA|P_NODUP|P_VI_DEF|P_VIM,
+  #ifdef FEAT_VIRTUALEDIT
+                           (char_u *)&p_ve, PV_NONE,
+                           {(char_u *)"", (char_u *)""}
+--- 2712,2718 ----
+                           {(char_u *)0L, (char_u *)0L}
+  #endif
+                           SCRIPTID_INIT},
+!     {"virtualedit", "ve",   P_STRING|P_COMMA|P_NODUP|P_VI_DEF|P_VIM|P_CURSWANT,
+  #ifdef FEAT_VIRTUALEDIT
+                           (char_u *)&p_ve, PV_NONE,
+                           {(char_u *)"", (char_u *)""}
+***************
+*** 7064,7071 ****
+      }
+  #endif
+  
+!     if (curwin->w_curswant != MAXCOL)
+!      curwin->w_set_curswant = TRUE;  /* in case 'showbreak' changed */
+  #ifdef FEAT_GUI
+      /* check redraw when it's not a GUI option or the GUI is active. */
+      if (!redraw_gui_only || gui.in_use)
+--- 7066,7075 ----
+      }
+  #endif
+  
+!     if (curwin->w_curswant != MAXCOL
+!                   && (options[opt_idx].flags & (P_CURSWANT | P_RCLR)) != 0)
+!      curwin->w_set_curswant = TRUE;
+! 
+  #ifdef FEAT_GUI
+      /* check redraw when it's not a GUI option or the GUI is active. */
+      if (!redraw_gui_only || gui.in_use)
+***************
+*** 7587,7595 ****
+         || (int *)varp == &curwin->w_p_nu
+         || (int *)varp == &curwin->w_p_rnu)
+      {
+-      if (curwin->w_curswant != MAXCOL)
+-          curwin->w_set_curswant = TRUE;
+- 
+       /* If 'number' is set, reset 'relativenumber'. */
+       /* If 'relativenumber' is set, reset 'number'. */
+       if ((int *)varp == &curwin->w_p_nu && curwin->w_p_nu)
+--- 7591,7596 ----
+***************
+*** 7834,7841 ****
+      {
+       if (curwin->w_p_wrap)
+           curwin->w_leftcol = 0;
+-      if (curwin->w_curswant != MAXCOL)
+-          curwin->w_set_curswant = TRUE;
+      }
+  
+  #ifdef FEAT_WINDOWS
+--- 7835,7840 ----
+***************
+*** 8062,8092 ****
+           curbuf->b_p_imsearch = B_IMODE_USE_INSERT;
+  # endif
+       }
+-      if (curwin->w_curswant != MAXCOL)
+-          curwin->w_set_curswant = TRUE;
+      }
+  
+-     else if ((int *)varp == &p_arshape)
+-     {
+-      if (curwin->w_curswant != MAXCOL)
+-          curwin->w_set_curswant = TRUE;
+-     }
+- #endif
+- 
+- #ifdef FEAT_LINEBREAK
+-     if ((int *)varp == &curwin->w_p_lbr)
+-     {
+-      if (curwin->w_curswant != MAXCOL)
+-          curwin->w_set_curswant = TRUE;
+-     }
+- #endif
+- 
+- #ifdef FEAT_RIGHTLEFT
+-     if ((int *)varp == &curwin->w_p_rl)
+-     {
+-      if (curwin->w_curswant != MAXCOL)
+-          curwin->w_set_curswant = TRUE;
+-     }
+  #endif
+  
+      /*
+--- 8061,8068 ----
+***************
+*** 8096,8102 ****
+      options[opt_idx].flags |= P_WAS_SET;
+  
+      comp_col();                          /* in case 'ruler' or 'showcmd' changed */
+! 
+      check_redraw(options[opt_idx].flags);
+  
+      return NULL;
+--- 8072,8080 ----
+      options[opt_idx].flags |= P_WAS_SET;
+  
+      comp_col();                          /* in case 'ruler' or 'showcmd' changed */
+!     if (curwin->w_curswant != MAXCOL
+!                   && (options[opt_idx].flags & (P_CURSWANT | P_RCLR)) != 0)
+!      curwin->w_set_curswant = TRUE;
+      check_redraw(options[opt_idx].flags);
+  
+      return NULL;
+***************
+*** 8611,8618 ****
+      options[opt_idx].flags |= P_WAS_SET;
+  
+      comp_col();                          /* in case 'columns' or 'ls' changed */
+!     if (curwin->w_curswant != MAXCOL)
+!      curwin->w_set_curswant = TRUE;  /* in case 'tabstop' changed */
+      check_redraw(options[opt_idx].flags);
+  
+      return errmsg;
+--- 8589,8597 ----
+      options[opt_idx].flags |= P_WAS_SET;
+  
+      comp_col();                          /* in case 'columns' or 'ls' changed */
+!     if (curwin->w_curswant != MAXCOL
+!                   && (options[opt_idx].flags & (P_CURSWANT | P_RCLR)) != 0)
+!      curwin->w_set_curswant = TRUE;
+      check_redraw(options[opt_idx].flags);
+  
+      return errmsg;
+*** ../vim-7.3.486/src/testdir/test84.in       2012-03-28 19:55:12.000000000 +0200
+--- src/testdir/test84.in      2012-03-28 19:46:53.000000000 +0200
+***************
+*** 0 ****
+--- 1,35 ----
++ Tests for curswant not changing when setting an option
++ 
++ STARTTEST
++ :so small.vim
++ :/^start target options$/+1,/^end target options$/-1 yank
++ :let target_option_names = split(@0)
++ :function TestCurswant(option_name)
++ :  normal! ggf8j
++ :  let curswant_before = winsaveview().curswant
++ :  execute 'let' '&'.a:option_name '=' '&'.a:option_name
++ :  let curswant_after = winsaveview().curswant
++ :  return [a:option_name, curswant_before, curswant_after]
++ :endfunction
++ :
++ :new
++ :put =['1234567890', '12345']
++ :1 delete _
++ :let result = []
++ :for option_name in target_option_names
++ :  call add(result, TestCurswant(option_name))
++ :endfor
++ :
++ :new
++ :put =map(copy(result), 'join(v:val, '' '')')
++ :1 delete _
++ :write test.out
++ :
++ :qall!
++ ENDTEST
++ 
++ start target options
++      tabstop
++      timeoutlen
++      ttimeoutlen
++ end target options
+*** ../vim-7.3.486/src/testdir/test84.ok       2012-03-28 19:55:12.000000000 +0200
+--- src/testdir/test84.ok      2012-03-28 19:48:36.000000000 +0200
+***************
+*** 0 ****
+--- 1,3 ----
++ tabstop 7 4
++ timeoutlen 7 7
++ ttimeoutlen 7 7
+*** ../vim-7.3.486/src/testdir/Make_amiga.mak  2011-10-12 19:53:31.000000000 +0200
+--- src/testdir/Make_amiga.mak 2012-03-28 18:14:08.000000000 +0200
+***************
+*** 29,35 ****
+               test66.out test67.out test68.out test69.out test70.out \
+               test71.out test72.out test73.out test74.out test75.out \
+               test76.out test77.out test78.out test79.out test80.out \
+!              test81.out test82.out test83.out
+  
+  .SUFFIXES: .in .out
+  
+--- 29,35 ----
+               test66.out test67.out test68.out test69.out test70.out \
+               test71.out test72.out test73.out test74.out test75.out \
+               test76.out test77.out test78.out test79.out test80.out \
+!              test81.out test82.out test83.out test84.out
+  
+  .SUFFIXES: .in .out
+  
+***************
+*** 132,134 ****
+--- 132,135 ----
+  test81.out: test81.in
+  test82.out: test82.in
+  test83.out: test83.in
++ test84.out: test84.in
+*** ../vim-7.3.486/src/testdir/Make_dos.mak    2011-10-12 19:53:31.000000000 +0200
+--- src/testdir/Make_dos.mak   2012-03-28 18:14:41.000000000 +0200
+***************
+*** 29,35 ****
+               test42.out test52.out test65.out test66.out test67.out \
+               test68.out test69.out test71.out test72.out test73.out \
+               test74.out test75.out test76.out test77.out test78.out \
+!              test79.out test80.out test81.out test82.out test83.out
+  
+  SCRIPTS32 =  test50.out test70.out
+  
+--- 29,36 ----
+               test42.out test52.out test65.out test66.out test67.out \
+               test68.out test69.out test71.out test72.out test73.out \
+               test74.out test75.out test76.out test77.out test78.out \
+!              test79.out test80.out test81.out test82.out test83.out \
+!              test84.out
+  
+  SCRIPTS32 =  test50.out test70.out
+  
+*** ../vim-7.3.486/src/testdir/Make_ming.mak   2011-10-12 19:53:31.000000000 +0200
+--- src/testdir/Make_ming.mak  2012-03-28 18:14:46.000000000 +0200
+***************
+*** 49,55 ****
+               test42.out test52.out test65.out test66.out test67.out \
+               test68.out test69.out test71.out test72.out test73.out \
+               test74.out test75.out test76.out test77.out test78.out \
+!              test79.out test80.out test81.out test82.out test83.out
+  
+  SCRIPTS32 =  test50.out test70.out
+  
+--- 49,56 ----
+               test42.out test52.out test65.out test66.out test67.out \
+               test68.out test69.out test71.out test72.out test73.out \
+               test74.out test75.out test76.out test77.out test78.out \
+!              test79.out test80.out test81.out test82.out test83.out \
+!              test84.out
+  
+  SCRIPTS32 =  test50.out test70.out
+  
+*** ../vim-7.3.486/src/testdir/Make_os2.mak    2011-10-12 19:53:31.000000000 +0200
+--- src/testdir/Make_os2.mak   2012-03-28 18:15:00.000000000 +0200
+***************
+*** 29,35 ****
+               test66.out test67.out test68.out test69.out test70.out \
+               test71.out test72.out test73.out test74.out test75.out \
+               test76.out test77.out test78.out test79.out test80.out \
+!              test81.out test82.out test83.out
+  
+  .SUFFIXES: .in .out
+  
+--- 29,35 ----
+               test66.out test67.out test68.out test69.out test70.out \
+               test71.out test72.out test73.out test74.out test75.out \
+               test76.out test77.out test78.out test79.out test80.out \
+!              test81.out test82.out test83.out test84.out
+  
+  .SUFFIXES: .in .out
+  
+*** ../vim-7.3.486/src/testdir/Make_vms.mms    2011-10-12 19:53:31.000000000 +0200
+--- src/testdir/Make_vms.mms   2012-03-28 18:15:15.000000000 +0200
+***************
+*** 4,10 ****
+  # Authors:   Zoltan Arpadffy, <arpadffy@polarhome.com>
+  #            Sandor Kopanyi,  <sandor.kopanyi@mailbox.hu>
+  #
+! # Last change:  2011 Jul 15
+  #
+  # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64.
+  # Edit the lines in the Configuration section below to select.
+--- 4,10 ----
+  # Authors:   Zoltan Arpadffy, <arpadffy@polarhome.com>
+  #            Sandor Kopanyi,  <sandor.kopanyi@mailbox.hu>
+  #
+! # Last change:  2012 Mar 28
+  #
+  # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64.
+  # Edit the lines in the Configuration section below to select.
+***************
+*** 76,82 ****
+        test66.out test67.out test68.out test69.out \
+        test71.out test72.out test74.out test75.out test76.out \
+        test77.out test78.out test79.out test80.out test81.out \
+!       test82.out test83.out
+  
+  # Known problems:
+  # Test 30: a problem around mac format - unknown reason
+--- 76,82 ----
+        test66.out test67.out test68.out test69.out \
+        test71.out test72.out test74.out test75.out test76.out \
+        test77.out test78.out test79.out test80.out test81.out \
+!       test82.out test83.out test84.out
+  
+  # Known problems:
+  # Test 30: a problem around mac format - unknown reason
+*** ../vim-7.3.486/src/testdir/Makefile        2011-10-12 19:53:31.000000000 +0200
+--- src/testdir/Makefile       2012-03-28 18:15:29.000000000 +0200
+***************
+*** 26,32 ****
+               test64.out test65.out test66.out test67.out test68.out \
+               test69.out test70.out test71.out test72.out test73.out \
+               test74.out test75.out test76.out test77.out test78.out \
+!              test79.out test80.out test81.out test82.out test83.out
+  
+  SCRIPTS_GUI = test16.out
+  
+--- 26,33 ----
+               test64.out test65.out test66.out test67.out test68.out \
+               test69.out test70.out test71.out test72.out test73.out \
+               test74.out test75.out test76.out test77.out test78.out \
+!              test79.out test80.out test81.out test82.out test83.out \
+!              test84.out
+  
+  SCRIPTS_GUI = test16.out
+  
+*** ../vim-7.3.486/src/version.c       2012-03-28 17:43:06.000000000 +0200
+--- src/version.c      2012-03-28 19:49:41.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     487,
+  /**/
+
+-- 
+"Time flies like an arrow".  So I put an arrow on my desk, now
+awaiting one of these time flies showing up.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.488.patch0 b/vim/patches/vim-7.3.488.patch0
new file mode 100644 (file)
index 0000000..e078740
--- /dev/null
@@ -0,0 +1,52 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.488
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.488
+Problem:    ":help!" in a help file does not work as document.
+Solution:   When in a help file don't give an error message. (thinca)
+Files:     src/ex_cmds.c
+
+
+*** ../vim-7.3.487/src/ex_cmds.c       2012-03-16 14:32:10.000000000 +0100
+--- src/ex_cmds.c      2012-04-01 14:25:35.000000000 +0200
+***************
+*** 5546,5552 ****
+       }
+       arg = eap->arg;
+  
+!      if (eap->forceit && *arg == NUL)
+       {
+           EMSG(_("E478: Don't panic!"));
+           return;
+--- 5546,5552 ----
+       }
+       arg = eap->arg;
+  
+!      if (eap->forceit && *arg == NUL && !curbuf->b_help)
+       {
+           EMSG(_("E478: Don't panic!"));
+           return;
+*** ../vim-7.3.487/src/version.c       2012-03-28 19:58:34.000000000 +0200
+--- src/version.c      2012-04-05 16:04:13.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     488,
+  /**/
+
+
+-- 
+I'd like to meet the man who invented sex and see what he's working on now.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.489.patch0 b/vim/patches/vim-7.3.489.patch0
new file mode 100644 (file)
index 0000000..fbdf2c3
--- /dev/null
@@ -0,0 +1,89 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.489
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.489
+Problem:    CTRL-] in Insert mode does not expand abbreviation when used in a
+           mapping. (Yichao Zhou)
+Solution:   Special case using CTRL-]. (Christian Brabandt)
+Files:     src/getchar.c, src/edit.c
+
+
+*** ../vim-7.3.488/src/getchar.c       2012-02-05 22:05:44.000000000 +0100
+--- src/getchar.c      2012-04-05 15:54:00.000000000 +0200
+***************
+*** 4352,4359 ****
+  
+      if (typebuf.tb_no_abbr_cnt)      /* abbrev. are not recursive */
+       return FALSE;
+!     if ((KeyNoremap & (RM_NONE|RM_SCRIPT)) != 0)
+!      /* no remapping implies no abbreviation */
+       return FALSE;
+  
+      /*
+--- 4352,4360 ----
+  
+      if (typebuf.tb_no_abbr_cnt)      /* abbrev. are not recursive */
+       return FALSE;
+! 
+!     /* no remapping implies no abbreviation, except for CTRL-] */
+!     if ((KeyNoremap & (RM_NONE|RM_SCRIPT)) != 0 && c != Ctrl_RSB)
+       return FALSE;
+  
+      /*
+*** ../vim-7.3.488/src/edit.c  2012-02-29 18:22:03.000000000 +0100
+--- src/edit.c 2012-04-05 15:57:46.000000000 +0200
+***************
+*** 1455,1467 ****
+                   Insstart_blank_vcol = get_nolist_virtcol();
+           }
+  
+!          if (vim_iswordc(c) || !echeck_abbr(
+  #ifdef FEAT_MBYTE
+                       /* Add ABBR_OFF for characters above 0x100, this is
+                        * what check_abbr() expects. */
+                       (has_mbyte && c >= 0x100) ? (c + ABBR_OFF) :
+  #endif
+!                      c))
+           {
+               insert_special(c, FALSE, FALSE);
+  #ifdef FEAT_RIGHTLEFT
+--- 1455,1470 ----
+                   Insstart_blank_vcol = get_nolist_virtcol();
+           }
+  
+!          /* Insert a normal character and check for abbreviations on a
+!           * special character.  Let CTRL-] expand abbreviations without
+!           * inserting it. */
+!          if (vim_iswordc(c) || (!echeck_abbr(
+  #ifdef FEAT_MBYTE
+                       /* Add ABBR_OFF for characters above 0x100, this is
+                        * what check_abbr() expects. */
+                       (has_mbyte && c >= 0x100) ? (c + ABBR_OFF) :
+  #endif
+!                        c) && c != Ctrl_RSB))
+           {
+               insert_special(c, FALSE, FALSE);
+  #ifdef FEAT_RIGHTLEFT
+*** ../vim-7.3.488/src/version.c       2012-04-05 16:04:58.000000000 +0200
+--- src/version.c      2012-04-05 16:06:12.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     489,
+  /**/
+
+-- 
+Just think of all the things we haven't thought of yet.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.490.patch0 b/vim/patches/vim-7.3.490.patch0
new file mode 100644 (file)
index 0000000..6c49a48
--- /dev/null
@@ -0,0 +1,2517 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.490
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.490
+Problem:    Member confusion in Lua interface.
+Solution:   Fix it.  Add luaeval(). (Taro Muraoka, Luis Carvalho)
+Files:     runtime/doc/if_lua.txt, src/eval.c, src/if_lua.c,
+           src/proto/if_lua.pro
+
+
+*** ../vim-7.3.489/runtime/doc/if_lua.txt      2010-08-15 21:57:14.000000000 +0200
+--- runtime/doc/if_lua.txt     2012-04-05 16:41:35.000000000 +0200
+***************
+*** 1,4 ****
+! *if_lua.txt*    For Vim version 7.3.  Last change: 2010 Jul 22
+  
+  
+                 VIM REFERENCE MANUAL    by Luis Carvalho
+--- 1,4 ----
+! *if_lua.txt*    For Vim version 7.3.  Last change: 2012 Jan 16
+  
+  
+                 VIM REFERENCE MANUAL    by Luis Carvalho
+***************
+*** 8,15 ****
+  
+  1. Commands                  |lua-commands|
+  2. The vim module            |lua-vim|
+! 3. Buffer userdata           |lua-buffer|
+! 4. Window userdata           |lua-window|
+  
+  {Vi does not have any of these commands}
+  
+--- 8,18 ----
+  
+  1. Commands                  |lua-commands|
+  2. The vim module            |lua-vim|
+! 3. List userdata             |lua-list|
+! 4. Dict userdata             |lua-dict|
+! 5. Buffer userdata           |lua-buffer|
+! 6. Window userdata           |lua-window|
+! 7. The luaeval function              |lua-luaeval|
+  
+  {Vi does not have any of these commands}
+  
+***************
+*** 88,98 ****
+  All these commands execute a Lua chunk from either the command line (:lua and
+  :luado) or a file (:luafile) with the given line [range]. Similarly to the Lua
+  interpreter, each chunk has its own scope and so only global variables are
+! shared between command calls. Lua default libraries "table", "string", "math",
+! and "package" are available, "io" and "debug" are not, and "os" is restricted
+! to functions "date", "clock", "time", "difftime", and "getenv". In addition,
+! Lua "print" function has its output redirected to the Vim message area, with
+! arguments separated by a white space instead of a tab.
+  
+  Lua uses the "vim" module (see |lua-vim|) to issue commands to Vim
+  and manage buffers (|lua-buffer|) and windows (|lua-window|). However,
+--- 91,99 ----
+  All these commands execute a Lua chunk from either the command line (:lua and
+  :luado) or a file (:luafile) with the given line [range]. Similarly to the Lua
+  interpreter, each chunk has its own scope and so only global variables are
+! shared between command calls. All Lua default libraries are available. In
+! addition, Lua "print" function has its output redirected to the Vim message
+! area, with arguments separated by a white space instead of a tab.
+  
+  Lua uses the "vim" module (see |lua-vim|) to issue commands to Vim
+  and manage buffers (|lua-buffer|) and windows (|lua-window|). However,
+***************
+*** 108,116 ****
+  module also includes routines for buffer, window, and current line queries,
+  Vim evaluation and command execution, and others.
+  
+!      vim.isbuffer(value)     Returns 'true' (boolean, not string) if
+!                              "value" is a buffer userdata and 'false'
+!                              otherwise (see |lua-buffer|).
+  
+       vim.buffer([arg])       If "arg" is a number, returns buffer with
+                               number "arg" in the buffer list or, if "arg"
+--- 109,117 ----
+  module also includes routines for buffer, window, and current line queries,
+  Vim evaluation and command execution, and others.
+  
+!      vim.list()              Returns an empty list (see |List|).
+! 
+!      vim.dict()              Returns an empty dictionary (see |Dictionary|).
+  
+       vim.buffer([arg])       If "arg" is a number, returns buffer with
+                               number "arg" in the buffer list or, if "arg"
+***************
+*** 121,136 ****
+                               'true' returns the first buffer in the buffer
+                               list or else the current buffer.
+  
+-      vim.iswindow(value)     Returns 'true' (boolean, not string) if
+-                              "value" is a window userdata and
+-                              'false' otherwise (see |lua-window|).
+- 
+       vim.window([arg])       If "arg" is a number, returns window with
+                               number "arg" or 'nil' (nil value, not string)
+                               if not found. Otherwise, if "toboolean(arg)"
+                               is 'true' returns the first window or else the
+                               current window.
+  
+       vim.command({cmd})      Executes the vim (ex-mode) command {cmd}.
+                               Examples: >
+                                       :lua vim.command"set tw=60"
+--- 122,142 ----
+                               'true' returns the first buffer in the buffer
+                               list or else the current buffer.
+  
+       vim.window([arg])       If "arg" is a number, returns window with
+                               number "arg" or 'nil' (nil value, not string)
+                               if not found. Otherwise, if "toboolean(arg)"
+                               is 'true' returns the first window or else the
+                               current window.
+  
++      vim.type({arg})         Returns the type of {arg}. It is equivalent to
++                              Lua's "type" function, but returns "list",
++                              "dict", "buffer", or "window" if {arg} is a
++                              list, dictionary, buffer, or window,
++                              respectively. Examples: >
++                                      :lua l = vim.list()
++                                      :lua print(type(l), vim.type(l))
++                                      :" userdata list
++ <
+       vim.command({cmd})      Executes the vim (ex-mode) command {cmd}.
+                               Examples: >
+                                       :lua vim.command"set tw=60"
+***************
+*** 141,147 ****
+                               Vim strings and numbers are directly converted
+                               to Lua strings and numbers respectively. Vim
+                               lists and dictionaries are converted to Lua
+!                              tables (lists become integer-keyed tables).
+                               Examples: >
+                                       :lua tw = vim.eval"&tw"
+                                       :lua print(vim.eval"{'a': 'one'}".a)
+--- 147,153 ----
+                               Vim strings and numbers are directly converted
+                               to Lua strings and numbers respectively. Vim
+                               lists and dictionaries are converted to Lua
+!                              userdata (see |lua-list| and |lua-dict|).
+                               Examples: >
+                                       :lua tw = vim.eval"&tw"
+                                       :lua print(vim.eval"{'a': 'one'}".a)
+***************
+*** 157,163 ****
+  
+  
+  ==============================================================================
+! 3. Buffer userdata                                   *lua-buffer*
+  
+  Buffer userdata represent vim buffers. A buffer userdata "b" has the following
+  properties and methods:
+--- 163,234 ----
+  
+  
+  ==============================================================================
+! 3. List userdata                                     *lua-list*
+! 
+! List userdata represent vim lists, and the interface tries to follow closely
+! Vim's syntax for lists. Since lists are objects, changes in list references in
+! Lua are reflected in Vim and vice-versa. A list "l" has the following
+! properties and methods:
+! 
+! Properties
+! ----------
+!      o "#l" is the number of items in list "l", equivalent to "len(l)"
+!          in Vim.
+!      o "l[k]" returns the k-th item in "l"; "l" is zero-indexed, as in Vim.
+!          To modify the k-th item, simply do "l[k] = newitem"; in
+!          particular, "l[k] = nil" removes the k-th item from "l".
+!      o "l()" returns an iterator for "l".
+! 
+! Methods
+! -------
+!      o "l:add(item)" appends "item" to the end of "l".
+!      o "l:insert(item[, pos])" inserts "item" at (optional)
+!          position "pos" in the list. The default value for "pos" is 0.
+! 
+! Examples:
+! >
+!      :let l = [1, 'item']
+!      :lua l = vim.eval('l') -- same 'l'
+!      :lua l:add(vim.list())
+!      :lua l[0] = math.pi
+!      :echo l[0] " 3.141593
+!      :lua l[0] = nil -- remove first item
+!      :lua l:insert(true, 1)
+!      :lua print(l, #l, l[0], l[1], l[-1])
+!      :lua for item in l() do print(item) end
+! <
+! 
+! ==============================================================================
+! 4. Dict userdata                                     *lua-dict*
+! 
+! Similarly to list userdata, dict userdata represent vim dictionaries; since
+! dictionaries are also objects, references are kept between Lua and Vim. A dict
+! "d" has the following properties:
+! 
+! Properties
+! ----------
+!      o "#d" is the number of items in dict "d", equivalent to "len(d)"
+!          in Vim.
+!      o "d.key" or "d['key']" returns the value at entry "key" in "d".
+!          To modify the entry at this key, simply do "d.key = newvalue"; in
+!          particular, "d.key = nil" removes the entry from "d".
+!      o "d()" returns an iterator for "d" and is equivalent to "items(d)" in
+!          Vim.
+! 
+! Examples:
+! >
+!      :let d = {'n':10}
+!      :lua d = vim.eval('d') -- same 'd'
+!      :lua print(d, d.n, #d)
+!      :let d.self = d
+!      :lua for k, v in d() do print(d, k, v) end
+!      :lua d.x = math.pi
+!      :lua d.self = nil -- remove entry
+!      :echo d
+! <
+! 
+! ==============================================================================
+! 5. Buffer userdata                                   *lua-buffer*
+  
+  Buffer userdata represent vim buffers. A buffer userdata "b" has the following
+  properties and methods:
+***************
+*** 209,215 ****
+  <
+  
+  ==============================================================================
+! 4. Window userdata                                   *lua-window*
+  
+  Window objects represent vim windows. A window userdata "w" has the following
+  properties and methods:
+--- 280,286 ----
+  <
+  
+  ==============================================================================
+! 6. Window userdata                                   *lua-window*
+  
+  Window objects represent vim windows. A window userdata "w" has the following
+  properties and methods:
+***************
+*** 241,244 ****
+  <
+  
+  ==============================================================================
+!  vim:tw=78:ts=8:ft=help:norl:
+--- 312,340 ----
+  <
+  
+  ==============================================================================
+! 7. The luaeval function                                      *lua-luaeval*
+! 
+! The (dual) equivalent of "vim.eval" for passing Lua values to Vim is
+! "luaeval". "luaeval" takes an expression string and an optional argument and
+! returns the result of the expression. It is semantically equivalent in Lua to:
+! >
+!      local chunkheader = "local _A = select(1, ...) return "
+!      function luaeval (expstr, arg)
+!          local chunk = assert(loadstring(chunkheader .. expstr, "luaeval"))
+!          return chunk(arg) -- return typval
+!      end
+! <
+! Note that "_A" receives the argument to "luaeval". Examples: >
+! 
+!      :echo luaeval('math.pi')
+!      :lua a = vim.list():add('newlist')
+!      :let a = luaeval('a')
+!      :echo a[0] " 'newlist'
+!      :function Rand(x,y) " random uniform between x and y
+!      :  return luaeval('(_A.y-_A.x)*math.random()+_A.x', {'x':a:x,'y':a:y})
+!      :  endfunction
+!      :echo Rand(1,10)
+! 
+! 
+! ==============================================================================
+!  vim:tw=78:ts=8:noet:ft=help:norl:
+*** ../vim-7.3.489/src/eval.c  2012-03-28 16:49:25.000000000 +0200
+--- src/eval.c 2012-04-05 16:41:35.000000000 +0200
+***************
+*** 622,627 ****
+--- 622,630 ----
+  static void f_log __ARGS((typval_T *argvars, typval_T *rettv));
+  static void f_log10 __ARGS((typval_T *argvars, typval_T *rettv));
+  #endif
++ #ifdef FEAT_LUA
++ static void f_luaeval __ARGS((typval_T *argvars, typval_T *rettv));
++ #endif
+  static void f_map __ARGS((typval_T *argvars, typval_T *rettv));
+  static void f_maparg __ARGS((typval_T *argvars, typval_T *rettv));
+  static void f_mapcheck __ARGS((typval_T *argvars, typval_T *rettv));
+***************
+*** 6777,6782 ****
+--- 6780,6789 ----
+      /* v: vars */
+      set_ref_in_ht(&vimvarht, copyID);
+  
++ #ifdef FEAT_LUA
++     set_ref_in_lua(copyID);
++ #endif
++ 
+      /*
+       * 2. Free lists and dictionaries that are not referenced.
+       */
+***************
+*** 7946,7951 ****
+--- 7953,7961 ----
+      {"log",          1, 1, f_log},
+      {"log10",                1, 1, f_log10},
+  #endif
++ #ifdef FEAT_LUA
++     {"luaeval",         1, 2, f_luaeval},
++ #endif
+      {"map",          2, 2, f_map},
+      {"maparg",               1, 4, f_maparg},
+      {"mapcheck",     1, 3, f_mapcheck},
+***************
+*** 13626,13631 ****
+--- 13636,13658 ----
+  }
+  #endif
+  
++ #ifdef FEAT_LUA
++ /*
++  * "luaeval()" function
++  */
++     static void
++ f_luaeval(argvars, rettv)
++     typval_T *argvars;
++     typval_T *rettv;
++ {
++     char_u   *str;
++     char_u   buf[NUMBUFLEN];
++ 
++     str = get_tv_string_buf(&argvars[0], buf);
++     do_luaeval(str, argvars + 1, rettv);
++ }
++ #endif
++ 
+  /*
+   * "map()" function
+   */
+*** ../vim-7.3.489/src/if_lua.c        2011-12-08 16:00:12.000000000 +0100
+--- src/if_lua.c       2012-04-05 16:41:35.000000000 +0200
+***************
+*** 1,4 ****
+! /* vi:set ts=8 sts=4 sw=4:
+   *
+   * VIM - Vi IMproved by Bram Moolenaar
+   *
+--- 1,4 ----
+! /* vi:set ts=8 sts=4 sw=4 noet:
+   *
+   * VIM - Vi IMproved by Bram Moolenaar
+   *
+***************
+*** 21,35 ****
+--- 21,53 ----
+  
+  #define LUAVIM_CHUNKNAME "vim chunk"
+  #define LUAVIM_NAME "vim"
++ #define LUAVIM_EVALNAME "luaeval"
++ #define LUAVIM_EVALHEADER "local _A=select(1,...) return "
+  
+  typedef buf_T *luaV_Buffer;
+  typedef win_T *luaV_Window;
++ typedef dict_T *luaV_Dict;
++ typedef list_T *luaV_List;
+  typedef void (*msgfunc_T)(char_u *);
+  
++ static const char LUAVIM_DICT[] = "dict";
++ static const char LUAVIM_LIST[] = "list";
+  static const char LUAVIM_BUFFER[] = "buffer";
+  static const char LUAVIM_WINDOW[] = "window";
+  static const char LUAVIM_FREE[] = "luaV_free";
++ static const char LUAVIM_LUAEVAL[] = "luaV_luaeval";
++ static const char LUAVIM_SETREF[] = "luaV_setref";
+  
++ /* most functions are closures with a cache table as first upvalue;
++  * get/setudata manage references to vim userdata in cache table through
++  * object pointers (light userdata) */
++ #define luaV_getudata(L, v) \
++     lua_pushlightuserdata((L), (void *) (v)); \
++     lua_rawget((L), lua_upvalueindex(1))
++ #define luaV_setudata(L, v) \
++     lua_pushlightuserdata((L), (void *) (v)); \
++     lua_pushvalue((L), -2); \
++     lua_rawset((L), lua_upvalueindex(1))
+  #define luaV_getfield(L, s) \
+      lua_pushlightuserdata((L), (void *)(s)); \
+      lua_rawget((L), LUA_REGISTRYINDEX)
+***************
+*** 38,43 ****
+--- 56,70 ----
+  #define luaV_msg(L) luaV_msgfunc((L), (msgfunc_T) msg)
+  #define luaV_emsg(L) luaV_msgfunc((L), (msgfunc_T) emsg)
+  
++ static luaV_List *luaV_pushlist (lua_State *L, list_T *lis);
++ static luaV_Dict *luaV_pushdict (lua_State *L, dict_T *dic);
++ 
++ #if LUA_VERSION_NUM <= 501
++ #define luaV_openlib(L, l, n) luaL_openlib(L, NULL, l, n)
++ #define luaL_typeerror luaL_typerror
++ #else
++ #define luaV_openlib luaL_setfuncs
++ #endif
+  
+  #ifdef DYNAMIC_LUA
+  
+***************
+*** 54,85 ****
+  #endif
+  
+  /* lauxlib */
+  #define luaL_register dll_luaL_register
+  #define luaL_typerror dll_luaL_typerror
+  #define luaL_checklstring dll_luaL_checklstring
+  #define luaL_checkinteger dll_luaL_checkinteger
+  #define luaL_optinteger dll_luaL_optinteger
+  #define luaL_checktype dll_luaL_checktype
+  #define luaL_error dll_luaL_error
+- #define luaL_loadfile dll_luaL_loadfile
+- #define luaL_loadbuffer dll_luaL_loadbuffer
+  #define luaL_newstate dll_luaL_newstate
+  #define luaL_buffinit dll_luaL_buffinit
+- #define luaL_prepbuffer dll_luaL_prepbuffer
+  #define luaL_addlstring dll_luaL_addlstring
+  #define luaL_pushresult dll_luaL_pushresult
+  /* lua */
+  #define lua_close dll_lua_close
+  #define lua_gettop dll_lua_gettop
+  #define lua_settop dll_lua_settop
+  #define lua_pushvalue dll_lua_pushvalue
+  #define lua_replace dll_lua_replace
+  #define lua_isnumber dll_lua_isnumber
+  #define lua_isstring dll_lua_isstring
+  #define lua_type dll_lua_type
+  #define lua_rawequal dll_lua_rawequal
+- #define lua_tonumber dll_lua_tonumber
+- #define lua_tointeger dll_lua_tointeger
+  #define lua_toboolean dll_lua_toboolean
+  #define lua_tolstring dll_lua_tolstring
+  #define lua_touserdata dll_lua_touserdata
+--- 81,134 ----
+  #endif
+  
+  /* lauxlib */
++ #if LUA_VERSION_NUM <= 501
+  #define luaL_register dll_luaL_register
++ #define luaL_prepbuffer dll_luaL_prepbuffer
++ #define luaL_openlib dll_luaL_openlib
+  #define luaL_typerror dll_luaL_typerror
++ #define luaL_loadfile dll_luaL_loadfile
++ #define luaL_loadbuffer dll_luaL_loadbuffer
++ #else
++ #define luaL_prepbuffsize dll_luaL_prepbuffsize
++ #define luaL_setfuncs dll_luaL_setfuncs
++ #define luaL_loadfilex dll_luaL_loadfilex
++ #define luaL_loadbufferx dll_luaL_loadbufferx
++ #define luaL_argerror dll_luaL_argerror
++ #endif
+  #define luaL_checklstring dll_luaL_checklstring
+  #define luaL_checkinteger dll_luaL_checkinteger
+  #define luaL_optinteger dll_luaL_optinteger
+  #define luaL_checktype dll_luaL_checktype
+  #define luaL_error dll_luaL_error
+  #define luaL_newstate dll_luaL_newstate
+  #define luaL_buffinit dll_luaL_buffinit
+  #define luaL_addlstring dll_luaL_addlstring
+  #define luaL_pushresult dll_luaL_pushresult
+  /* lua */
++ #if LUA_VERSION_NUM <= 501
++ #define lua_tonumber dll_lua_tonumber
++ #define lua_tointeger dll_lua_tointeger
++ #define lua_call dll_lua_call
++ #define lua_pcall dll_lua_pcall
++ #else
++ #define lua_tonumberx dll_lua_tonumberx
++ #define lua_tointegerx dll_lua_tointegerx
++ #define lua_callk dll_lua_callk
++ #define lua_pcallk dll_lua_pcallk
++ #define lua_getglobal dll_lua_getglobal
++ #define lua_setglobal dll_lua_setglobal
++ #define lua_typename dll_lua_typename
++ #endif
+  #define lua_close dll_lua_close
+  #define lua_gettop dll_lua_gettop
+  #define lua_settop dll_lua_settop
+  #define lua_pushvalue dll_lua_pushvalue
+  #define lua_replace dll_lua_replace
++ #define lua_remove dll_lua_remove
+  #define lua_isnumber dll_lua_isnumber
+  #define lua_isstring dll_lua_isstring
+  #define lua_type dll_lua_type
+  #define lua_rawequal dll_lua_rawequal
+  #define lua_toboolean dll_lua_toboolean
+  #define lua_tolstring dll_lua_tolstring
+  #define lua_touserdata dll_lua_touserdata
+***************
+*** 94,109 ****
+  #define lua_pushlightuserdata dll_lua_pushlightuserdata
+  #define lua_getfield dll_lua_getfield
+  #define lua_rawget dll_lua_rawget
+  #define lua_createtable dll_lua_createtable
+  #define lua_newuserdata dll_lua_newuserdata
+  #define lua_getmetatable dll_lua_getmetatable
+  #define lua_setfield dll_lua_setfield
+  #define lua_rawset dll_lua_rawset
+  #define lua_rawseti dll_lua_rawseti
+- #define lua_remove dll_lua_remove
+  #define lua_setmetatable dll_lua_setmetatable
+- #define lua_call dll_lua_call
+- #define lua_pcall dll_lua_pcall
+  /* libs */
+  #define luaopen_base dll_luaopen_base
+  #define luaopen_table dll_luaopen_table
+--- 143,156 ----
+  #define lua_pushlightuserdata dll_lua_pushlightuserdata
+  #define lua_getfield dll_lua_getfield
+  #define lua_rawget dll_lua_rawget
++ #define lua_rawgeti dll_lua_rawgeti
+  #define lua_createtable dll_lua_createtable
+  #define lua_newuserdata dll_lua_newuserdata
+  #define lua_getmetatable dll_lua_getmetatable
+  #define lua_setfield dll_lua_setfield
+  #define lua_rawset dll_lua_rawset
+  #define lua_rawseti dll_lua_rawseti
+  #define lua_setmetatable dll_lua_setmetatable
+  /* libs */
+  #define luaopen_base dll_luaopen_base
+  #define luaopen_table dll_luaopen_table
+***************
+*** 116,147 ****
+  #define luaL_openlibs dll_luaL_openlibs
+  
+  /* lauxlib */
+  void (*dll_luaL_register) (lua_State *L, const char *libname, const luaL_Reg *l);
+  int (*dll_luaL_typerror) (lua_State *L, int narg, const char *tname);
+  const char *(*dll_luaL_checklstring) (lua_State *L, int numArg, size_t *l);
+  lua_Integer (*dll_luaL_checkinteger) (lua_State *L, int numArg);
+  lua_Integer (*dll_luaL_optinteger) (lua_State *L, int nArg, lua_Integer def);
+  void (*dll_luaL_checktype) (lua_State *L, int narg, int t);
+  int (*dll_luaL_error) (lua_State *L, const char *fmt, ...);
+- int (*dll_luaL_loadfile) (lua_State *L, const char *filename);
+- int (*dll_luaL_loadbuffer) (lua_State *L, const char *buff, size_t sz, const char *name);
+  lua_State *(*dll_luaL_newstate) (void);
+  void (*dll_luaL_buffinit) (lua_State *L, luaL_Buffer *B);
+- char *(*dll_luaL_prepbuffer) (luaL_Buffer *B);
+  void (*dll_luaL_addlstring) (luaL_Buffer *B, const char *s, size_t l);
+  void (*dll_luaL_pushresult) (luaL_Buffer *B);
+  /* lua */
+  void       (*dll_lua_close) (lua_State *L);
+  int (*dll_lua_gettop) (lua_State *L);
+  void (*dll_lua_settop) (lua_State *L, int idx);
+  void (*dll_lua_pushvalue) (lua_State *L, int idx);
+  void (*dll_lua_replace) (lua_State *L, int idx);
+  int (*dll_lua_isnumber) (lua_State *L, int idx);
+  int (*dll_lua_isstring) (lua_State *L, int idx);
+  int (*dll_lua_type) (lua_State *L, int idx);
+  int (*dll_lua_rawequal) (lua_State *L, int idx1, int idx2);
+- lua_Number (*dll_lua_tonumber) (lua_State *L, int idx);
+- lua_Integer (*dll_lua_tointeger) (lua_State *L, int idx);
+  int (*dll_lua_toboolean) (lua_State *L, int idx);
+  const char *(*dll_lua_tolstring) (lua_State *L, int idx, size_t *len);
+  void *(*dll_lua_touserdata) (lua_State *L, int idx);
+--- 163,218 ----
+  #define luaL_openlibs dll_luaL_openlibs
+  
+  /* lauxlib */
++ #if LUA_VERSION_NUM <= 501
+  void (*dll_luaL_register) (lua_State *L, const char *libname, const luaL_Reg *l);
++ char *(*dll_luaL_prepbuffer) (luaL_Buffer *B);
++ void (*dll_luaL_openlib) (lua_State *L, const char *libname, const luaL_Reg *l, int nup);
+  int (*dll_luaL_typerror) (lua_State *L, int narg, const char *tname);
++ int (*dll_luaL_loadfile) (lua_State *L, const char *filename);
++ int (*dll_luaL_loadbuffer) (lua_State *L, const char *buff, size_t sz, const char *name);
++ #else
++ char *(*dll_luaL_prepbuffsize) (luaL_Buffer *B, size_t sz);
++ void (*dll_luaL_setfuncs) (lua_State *L, const luaL_Reg *l, int nup);
++ int (*dll_luaL_loadfilex) (lua_State *L, const char *filename, const char *mode);
++ int (*dll_luaL_loadbufferx) (lua_State *L, const char *buff, size_t sz, const char *name, const char *mode);
++ int (*dll_luaL_argerror) (lua_State *L, int numarg, const char *extramsg);
++ #endif
+  const char *(*dll_luaL_checklstring) (lua_State *L, int numArg, size_t *l);
+  lua_Integer (*dll_luaL_checkinteger) (lua_State *L, int numArg);
+  lua_Integer (*dll_luaL_optinteger) (lua_State *L, int nArg, lua_Integer def);
+  void (*dll_luaL_checktype) (lua_State *L, int narg, int t);
+  int (*dll_luaL_error) (lua_State *L, const char *fmt, ...);
+  lua_State *(*dll_luaL_newstate) (void);
+  void (*dll_luaL_buffinit) (lua_State *L, luaL_Buffer *B);
+  void (*dll_luaL_addlstring) (luaL_Buffer *B, const char *s, size_t l);
+  void (*dll_luaL_pushresult) (luaL_Buffer *B);
+  /* lua */
++ #if LUA_VERSION_NUM <= 501
++ lua_Number (*dll_lua_tonumber) (lua_State *L, int idx);
++ lua_Integer (*dll_lua_tointeger) (lua_State *L, int idx);
++ void (*dll_lua_call) (lua_State *L, int nargs, int nresults);
++ int (*dll_lua_pcall) (lua_State *L, int nargs, int nresults, int errfunc);
++ #else
++ lua_Number (*dll_lua_tonumberx) (lua_State *L, int idx, int *isnum);
++ lua_Integer (*dll_lua_tointegerx) (lua_State *L, int idx, int *isnum);
++ void (*dll_lua_callk) (lua_State *L, int nargs, int nresults, int ctx,
++         lua_CFunction k);
++ int (*dll_lua_pcallk) (lua_State *L, int nargs, int nresults, int errfunc,
++         int ctx, lua_CFunction k);
++ void (*dll_lua_getglobal) (lua_State *L, const char *var);
++ void (*dll_lua_setglobal) (lua_State *L, const char *var);
++ const char *(*dll_lua_typename) (lua_State *L, int tp);
++ #endif
+  void       (*dll_lua_close) (lua_State *L);
+  int (*dll_lua_gettop) (lua_State *L);
+  void (*dll_lua_settop) (lua_State *L, int idx);
+  void (*dll_lua_pushvalue) (lua_State *L, int idx);
+  void (*dll_lua_replace) (lua_State *L, int idx);
++ void (*dll_lua_remove) (lua_State *L, int idx);
+  int (*dll_lua_isnumber) (lua_State *L, int idx);
+  int (*dll_lua_isstring) (lua_State *L, int idx);
+  int (*dll_lua_type) (lua_State *L, int idx);
+  int (*dll_lua_rawequal) (lua_State *L, int idx1, int idx2);
+  int (*dll_lua_toboolean) (lua_State *L, int idx);
+  const char *(*dll_lua_tolstring) (lua_State *L, int idx, size_t *len);
+  void *(*dll_lua_touserdata) (lua_State *L, int idx);
+***************
+*** 156,171 ****
+  void (*dll_lua_pushlightuserdata) (lua_State *L, void *p);
+  void (*dll_lua_getfield) (lua_State *L, int idx, const char *k);
+  void (*dll_lua_rawget) (lua_State *L, int idx);
+  void (*dll_lua_createtable) (lua_State *L, int narr, int nrec);
+  void *(*dll_lua_newuserdata) (lua_State *L, size_t sz);
+  int (*dll_lua_getmetatable) (lua_State *L, int objindex);
+  void (*dll_lua_setfield) (lua_State *L, int idx, const char *k);
+  void (*dll_lua_rawset) (lua_State *L, int idx);
+  void (*dll_lua_rawseti) (lua_State *L, int idx, int n);
+- void (*dll_lua_remove) (lua_State *L, int idx);
+  int (*dll_lua_setmetatable) (lua_State *L, int objindex);
+- void (*dll_lua_call) (lua_State *L, int nargs, int nresults);
+- int (*dll_lua_pcall) (lua_State *L, int nargs, int nresults, int errfunc);
+  /* libs */
+  int (*dll_luaopen_base) (lua_State *L);
+  int (*dll_luaopen_table) (lua_State *L);
+--- 227,240 ----
+  void (*dll_lua_pushlightuserdata) (lua_State *L, void *p);
+  void (*dll_lua_getfield) (lua_State *L, int idx, const char *k);
+  void (*dll_lua_rawget) (lua_State *L, int idx);
++ void (*dll_lua_rawgeti) (lua_State *L, int idx, int n);
+  void (*dll_lua_createtable) (lua_State *L, int narr, int nrec);
+  void *(*dll_lua_newuserdata) (lua_State *L, size_t sz);
+  int (*dll_lua_getmetatable) (lua_State *L, int objindex);
+  void (*dll_lua_setfield) (lua_State *L, int idx, const char *k);
+  void (*dll_lua_rawset) (lua_State *L, int idx);
+  void (*dll_lua_rawseti) (lua_State *L, int idx, int n);
+  int (*dll_lua_setmetatable) (lua_State *L, int objindex);
+  /* libs */
+  int (*dll_luaopen_base) (lua_State *L);
+  int (*dll_luaopen_table) (lua_State *L);
+***************
+*** 185,216 ****
+  
+  static const luaV_Reg luaV_dll[] = {
+      /* lauxlib */
+      {"luaL_register", (luaV_function) &dll_luaL_register},
+      {"luaL_typerror", (luaV_function) &dll_luaL_typerror},
+      {"luaL_checklstring", (luaV_function) &dll_luaL_checklstring},
+      {"luaL_checkinteger", (luaV_function) &dll_luaL_checkinteger},
+      {"luaL_optinteger", (luaV_function) &dll_luaL_optinteger},
+      {"luaL_checktype", (luaV_function) &dll_luaL_checktype},
+      {"luaL_error", (luaV_function) &dll_luaL_error},
+-     {"luaL_loadfile", (luaV_function) &dll_luaL_loadfile},
+-     {"luaL_loadbuffer", (luaV_function) &dll_luaL_loadbuffer},
+      {"luaL_newstate", (luaV_function) &dll_luaL_newstate},
+      {"luaL_buffinit", (luaV_function) &dll_luaL_buffinit},
+-     {"luaL_prepbuffer", (luaV_function) &dll_luaL_prepbuffer},
+      {"luaL_addlstring", (luaV_function) &dll_luaL_addlstring},
+      {"luaL_pushresult", (luaV_function) &dll_luaL_pushresult},
+      /* lua */
+      {"lua_close", (luaV_function) &dll_lua_close},
+      {"lua_gettop", (luaV_function) &dll_lua_gettop},
+      {"lua_settop", (luaV_function) &dll_lua_settop},
+      {"lua_pushvalue", (luaV_function) &dll_lua_pushvalue},
+      {"lua_replace", (luaV_function) &dll_lua_replace},
+      {"lua_isnumber", (luaV_function) &dll_lua_isnumber},
+      {"lua_isstring", (luaV_function) &dll_lua_isstring},
+      {"lua_type", (luaV_function) &dll_lua_type},
+      {"lua_rawequal", (luaV_function) &dll_lua_rawequal},
+-     {"lua_tonumber", (luaV_function) &dll_lua_tonumber},
+-     {"lua_tointeger", (luaV_function) &dll_lua_tointeger},
+      {"lua_toboolean", (luaV_function) &dll_lua_toboolean},
+      {"lua_tolstring", (luaV_function) &dll_lua_tolstring},
+      {"lua_touserdata", (luaV_function) &dll_lua_touserdata},
+--- 254,307 ----
+  
+  static const luaV_Reg luaV_dll[] = {
+      /* lauxlib */
++ #if LUA_VERSION_NUM <= 501
+      {"luaL_register", (luaV_function) &dll_luaL_register},
++     {"luaL_prepbuffer", (luaV_function) &dll_luaL_prepbuffer},
++     {"luaL_openlib", (luaV_function) &dll_luaL_openlib},
+      {"luaL_typerror", (luaV_function) &dll_luaL_typerror},
++     {"luaL_loadfile", (luaV_function) &dll_luaL_loadfile},
++     {"luaL_loadbuffer", (luaV_function) &dll_luaL_loadbuffer},
++ #else
++     {"luaL_prepbuffsize", (luaV_function) &dll_luaL_prepbuffsize},
++     {"luaL_setfuncs", (luaV_function) &dll_luaL_setfuncs},
++     {"luaL_loadfilex", (luaV_function) &dll_luaL_loadfilex},
++     {"luaL_loadbufferx", (luaV_function) &dll_luaL_loadbufferx},
++     {"luaL_argerror", (luaV_function) &dll_luaL_argerror},
++ #endif
+      {"luaL_checklstring", (luaV_function) &dll_luaL_checklstring},
+      {"luaL_checkinteger", (luaV_function) &dll_luaL_checkinteger},
+      {"luaL_optinteger", (luaV_function) &dll_luaL_optinteger},
+      {"luaL_checktype", (luaV_function) &dll_luaL_checktype},
+      {"luaL_error", (luaV_function) &dll_luaL_error},
+      {"luaL_newstate", (luaV_function) &dll_luaL_newstate},
+      {"luaL_buffinit", (luaV_function) &dll_luaL_buffinit},
+      {"luaL_addlstring", (luaV_function) &dll_luaL_addlstring},
+      {"luaL_pushresult", (luaV_function) &dll_luaL_pushresult},
+      /* lua */
++ #if LUA_VERSION_NUM <= 501
++     {"lua_tonumber", (luaV_function) &dll_lua_tonumber},
++     {"lua_tointeger", (luaV_function) &dll_lua_tointeger},
++     {"lua_call", (luaV_function) &dll_lua_call},
++     {"lua_pcall", (luaV_function) &dll_lua_pcall},
++ #else
++     {"lua_tonumberx", (luaV_function) &dll_lua_tonumberx},
++     {"lua_tointegerx", (luaV_function) &dll_lua_tointegerx},
++     {"lua_callk", (luaV_function) &dll_lua_callk},
++     {"lua_pcallk", (luaV_function) &dll_lua_pcallk},
++     {"lua_getglobal", (luaV_function) &dll_lua_getglobal},
++     {"lua_setglobal", (luaV_function) &dll_lua_setglobal},
++     {"lua_typename", (luaV_function) &dll_lua_typename},
++ #endif
+      {"lua_close", (luaV_function) &dll_lua_close},
+      {"lua_gettop", (luaV_function) &dll_lua_gettop},
+      {"lua_settop", (luaV_function) &dll_lua_settop},
+      {"lua_pushvalue", (luaV_function) &dll_lua_pushvalue},
+      {"lua_replace", (luaV_function) &dll_lua_replace},
++     {"lua_remove", (luaV_function) &dll_lua_remove},
+      {"lua_isnumber", (luaV_function) &dll_lua_isnumber},
+      {"lua_isstring", (luaV_function) &dll_lua_isstring},
+      {"lua_type", (luaV_function) &dll_lua_type},
+      {"lua_rawequal", (luaV_function) &dll_lua_rawequal},
+      {"lua_toboolean", (luaV_function) &dll_lua_toboolean},
+      {"lua_tolstring", (luaV_function) &dll_lua_tolstring},
+      {"lua_touserdata", (luaV_function) &dll_lua_touserdata},
+***************
+*** 225,240 ****
+      {"lua_pushlightuserdata", (luaV_function) &dll_lua_pushlightuserdata},
+      {"lua_getfield", (luaV_function) &dll_lua_getfield},
+      {"lua_rawget", (luaV_function) &dll_lua_rawget},
+      {"lua_createtable", (luaV_function) &dll_lua_createtable},
+      {"lua_newuserdata", (luaV_function) &dll_lua_newuserdata},
+      {"lua_getmetatable", (luaV_function) &dll_lua_getmetatable},
+      {"lua_setfield", (luaV_function) &dll_lua_setfield},
+      {"lua_rawset", (luaV_function) &dll_lua_rawset},
+      {"lua_rawseti", (luaV_function) &dll_lua_rawseti},
+-     {"lua_remove", (luaV_function) &dll_lua_remove},
+      {"lua_setmetatable", (luaV_function) &dll_lua_setmetatable},
+-     {"lua_call", (luaV_function) &dll_lua_call},
+-     {"lua_pcall", (luaV_function) &dll_lua_pcall},
+      /* libs */
+      {"luaopen_base", (luaV_function) &dll_luaopen_base},
+      {"luaopen_table", (luaV_function) &dll_luaopen_table},
+--- 316,329 ----
+      {"lua_pushlightuserdata", (luaV_function) &dll_lua_pushlightuserdata},
+      {"lua_getfield", (luaV_function) &dll_lua_getfield},
+      {"lua_rawget", (luaV_function) &dll_lua_rawget},
++     {"lua_rawgeti", (luaV_function) &dll_lua_rawgeti},
+      {"lua_createtable", (luaV_function) &dll_lua_createtable},
+      {"lua_newuserdata", (luaV_function) &dll_lua_newuserdata},
+      {"lua_getmetatable", (luaV_function) &dll_lua_getmetatable},
+      {"lua_setfield", (luaV_function) &dll_lua_setfield},
+      {"lua_rawset", (luaV_function) &dll_lua_rawset},
+      {"lua_rawseti", (luaV_function) &dll_lua_rawseti},
+      {"lua_setmetatable", (luaV_function) &dll_lua_setmetatable},
+      /* libs */
+      {"luaopen_base", (luaV_function) &dll_luaopen_base},
+      {"luaopen_table", (luaV_function) &dll_luaopen_table},
+***************
+*** 294,299 ****
+--- 383,398 ----
+  
+  #endif /* DYNAMIC_LUA */
+  
++ #if LUA_VERSION_NUM > 501
++     static int
++ luaL_typeerror (lua_State *L, int narg, const char *tname)
++ {
++     const char *msg = lua_pushfstring(L, "%s expected, got %s",
++             tname, luaL_typename(L, narg));
++     return luaL_argerror(L, narg, msg);
++ }
++ #endif
++ 
+  
+  /* =======   Internal   ======= */
+  
+***************
+*** 327,343 ****
+  }
+  
+      static void *
+  luaV_checkudata(lua_State *L, int ud, const char *tname)
+  {
+      void *p = luaV_toudata(L, ud, tname);
+!     if (p == NULL) luaL_typerror(L, ud, tname);
+      return p;
+  }
+  
+      static void
+  luaV_pushtypval(lua_State *L, typval_T *tv)
+  {
+!     if (tv == NULL) luaL_error(L, "null type");
+      switch (tv->v_type)
+      {
+       case VAR_STRING:
+--- 426,460 ----
+  }
+  
+      static void *
++ luaV_checkcache(lua_State *L, void *p)
++ {
++     luaV_getudata(L, p);
++     if (lua_isnil(L, -1)) luaL_error(L, "invalid object");
++     lua_pop(L, 1);
++     return p;
++ }
++ 
++ #define luaV_unbox(L,luatyp,ud) (*((luatyp *) lua_touserdata((L),(ud))))
++ 
++ #define luaV_checkvalid(L,luatyp,ud) \
++     luaV_checkcache((L), (void *) luaV_unbox((L),luatyp,(ud)))
++ 
++     static void *
+  luaV_checkudata(lua_State *L, int ud, const char *tname)
+  {
+      void *p = luaV_toudata(L, ud, tname);
+!     if (p == NULL) luaL_typeerror(L, ud, tname);
+      return p;
+  }
+  
+      static void
+  luaV_pushtypval(lua_State *L, typval_T *tv)
+  {
+!     if (tv == NULL)
+!     {
+!      lua_pushnil(L);
+!      return;
+!     }
+      switch (tv->v_type)
+      {
+       case VAR_STRING:
+***************
+*** 351,418 ****
+           lua_pushnumber(L, (lua_Number) tv->vval.v_float);
+           break;
+  #endif
+!      case VAR_LIST: {
+!          list_T *l = tv->vval.v_list;
+  
+!          if (l != NULL)
+           {
+!              /* check cache */
+!              lua_pushlightuserdata(L, (void *) l);
+!              lua_rawget(L, LUA_ENVIRONINDEX);
+!              if (lua_isnil(L, -1)) /* not interned? */
+               {
+!                  listitem_T *li;
+!                  int n = 0;
+!                  lua_pop(L, 1); /* nil */
+!                  lua_newtable(L);
+!                  lua_pushlightuserdata(L, (void *) l);
+!                  lua_pushvalue(L, -2);
+!                  lua_rawset(L, LUA_ENVIRONINDEX);
+!                  for (li = l->lv_first; li != NULL; li = li->li_next)
+!                  {
+!                      luaV_pushtypval(L, &li->li_tv);
+!                      lua_rawseti(L, -2, ++n);
+!                  }
+               }
+!          }
+!          else lua_pushnil(L);
+!          break;
+!                     }
+!      case VAR_DICT: {
+!          dict_T *d = tv->vval.v_dict;
+! 
+!          if (d != NULL)
+!          {
+!              /* check cache */
+!              lua_pushlightuserdata(L, (void *) d);
+!              lua_rawget(L, LUA_ENVIRONINDEX);
+!              if (lua_isnil(L, -1)) /* not interned? */
+               {
+!                  hashtab_T *ht = &d->dv_hashtab;
+!                  hashitem_T *hi;
+!                  int n = ht->ht_used; /* remaining items */
+!                  lua_pop(L, 1); /* nil */
+!                  lua_newtable(L);
+!                  lua_pushlightuserdata(L, (void *) d);
+!                  lua_pushvalue(L, -2);
+!                  lua_rawset(L, LUA_ENVIRONINDEX);
+!                  for (hi = ht->ht_array; n > 0; hi++)
+!                  {
+!                      if (!HASHITEM_EMPTY(hi))
+!                      {
+!                          dictitem_T *di = dict_lookup(hi);
+!                          luaV_pushtypval(L, &di->di_tv);
+!                          lua_setfield(L, -2, (char *) hi->hi_key);
+!                          n--;
+!                      }
+!                  }
+               }
+           }
+-          else lua_pushnil(L);
+           break;
+       }
+       default:
+!          luaL_error(L, "invalid type");
+      }
+  }
+  
+--- 468,537 ----
+           lua_pushnumber(L, (lua_Number) tv->vval.v_float);
+           break;
+  #endif
+!      case VAR_LIST:
+!          luaV_pushlist(L, tv->vval.v_list);
+!          break;
+!      case VAR_DICT:
+!          luaV_pushdict(L, tv->vval.v_dict);
+!          break;
+!      default:
+!          lua_pushnil(L);
+!     }
+! }
+  
+! /* converts lua value at 'pos' to typval 'tv' */
+!     static void
+! luaV_totypval (lua_State *L, int pos, typval_T *tv)
+! {
+!     switch(lua_type(L, pos)) {
+!      case LUA_TBOOLEAN:
+!          tv->v_type = VAR_NUMBER;
+!          tv->vval.v_number = (varnumber_T) lua_toboolean(L, pos);
+!          break;
+!      case LUA_TSTRING:
+!          tv->v_type = VAR_STRING;
+!          tv->vval.v_string = vim_strsave((char_u *) lua_tostring(L, pos));
+!          break;
+!      case LUA_TNUMBER:
+! #ifdef FEAT_FLOAT
+!          tv->v_type = VAR_FLOAT;
+!          tv->vval.v_float = (float_T) lua_tonumber(L, pos);
+! #else
+!          tv->v_type = VAR_NUMBER;
+!          tv->vval.v_number = (varnumber_T) lua_tointeger(L, pos);
+! #endif
+!          break;
+!      case LUA_TUSERDATA: {
+!          void *p = lua_touserdata(L, pos);
+!          if (lua_getmetatable(L, pos)) /* has metatable? */
+           {
+!              /* check list */
+!              luaV_getfield(L, LUAVIM_LIST);
+!              if (lua_rawequal(L, -1, -2))
+               {
+!                  tv->v_type = VAR_LIST;
+!                  tv->vval.v_list = *((luaV_List *) p);
+!                  ++tv->vval.v_list->lv_refcount;
+!                  lua_pop(L, 2); /* MTs */
+!                  return;
+               }
+!              /* check dict */
+!              luaV_getfield(L, LUAVIM_DICT);
+!              if (lua_rawequal(L, -1, -3))
+               {
+!                  tv->v_type = VAR_DICT;
+!                  tv->vval.v_dict = *((luaV_Dict *) p);
+!                  ++tv->vval.v_dict->dv_refcount;
+!                  lua_pop(L, 3); /* MTs */
+!                  return;
+               }
++              lua_pop(L, 3); /* MTs */
+           }
+           break;
+       }
+       default:
+!          tv->v_type = VAR_NUMBER;
+!          tv->vval.v_number = 0;
+      }
+  }
+  
+***************
+*** 481,569 ****
+      lua_pop(L, 2); /* original and modified strings */
+  }
+  
+  
+! /* =======   Buffer type   ======= */
+  
+!     static luaV_Buffer *
+! luaV_newbuffer(lua_State *L, buf_T *buf)
+  {
+!     luaV_Buffer *b = (luaV_Buffer *) lua_newuserdata(L, sizeof(luaV_Buffer));
+!     *b = buf;
+!     lua_pushlightuserdata(L, (void *) buf);
+!     lua_pushvalue(L, -2);
+!     lua_rawset(L, LUA_ENVIRONINDEX); /* env[buf] = udata */
+!     /* to avoid GC, store as key in env */
+!     lua_pushvalue(L, -1);
+!     lua_pushboolean(L, 1);
+!     lua_rawset(L, LUA_ENVIRONINDEX); /* env[udata] = true */
+!     /* set metatable */
+!     luaV_getfield(L, LUAVIM_BUFFER);
+      lua_setmetatable(L, -2);
+!     return b;
+  }
+  
+!     static luaV_Buffer *
+! luaV_pushbuffer (lua_State *L, buf_T *buf)
+  {
+!     luaV_Buffer *b = NULL;
+!     if (buf == NULL)
+!      lua_pushnil(L);
+!     else {
+!      lua_pushlightuserdata(L, (void *) buf);
+!      lua_rawget(L, LUA_ENVIRONINDEX);
+!      if (lua_isnil(L, -1)) /* not interned? */
+       {
+!          lua_pop(L, 1);
+!          b = luaV_newbuffer(L, buf);
+       }
+       else
+!          b = (luaV_Buffer *) lua_touserdata(L, -1);
+      }
+!     return b;
+  }
+  
+! /* Buffer metamethods */
+  
+      static int
+! luaV_buffer_tostring(lua_State *L)
+  {
+!     lua_pushfstring(L, "%s: %p", LUAVIM_BUFFER, lua_touserdata(L, 1));
+      return 1;
+  }
+  
+      static int
+  luaV_buffer_len(lua_State *L)
+  {
+!     luaV_Buffer *b = lua_touserdata(L, 1);
+!     lua_pushinteger(L, (*b)->b_ml.ml_line_count);
+      return 1;
+  }
+  
+      static int
+  luaV_buffer_call(lua_State *L)
+  {
+!     luaV_Buffer *b = (luaV_Buffer *) lua_touserdata(L, 1);
+      lua_settop(L, 1);
+!     set_curbuf(*b, DOBUF_SPLIT);
+      return 1;
+  }
+  
+      static int
+  luaV_buffer_index(lua_State *L)
+  {
+!     luaV_Buffer *b = (luaV_Buffer *) lua_touserdata(L, 1);
+      linenr_T n = (linenr_T) lua_tointeger(L, 2);
+!     if (n > 0 && n <= (*b)->b_ml.ml_line_count)
+!      luaV_pushline(L, *b, n);
+      else if (lua_isstring(L, 2))
+      {
+       const char *s = lua_tostring(L, 2);
+       if (strncmp(s, "name", 4) == 0)
+!          lua_pushstring(L, (char *) (*b)->b_sfname);
+       else if (strncmp(s, "fname", 5) == 0)
+!          lua_pushstring(L, (char *) (*b)->b_ffname);
+       else if (strncmp(s, "number", 6) == 0)
+!          lua_pushinteger(L, (*b)->b_fnum);
+       /* methods */
+       else if (strncmp(s,   "insert", 6) == 0
+               || strncmp(s, "next", 4) == 0
+--- 600,1107 ----
+      lua_pop(L, 2); /* original and modified strings */
+  }
+  
++ #define luaV_newtype(typ,tname,luatyp,luatname) \
++      static luatyp * \
++     luaV_new##tname (lua_State *L, typ *obj) \
++     { \
++      luatyp *o = (luatyp *) lua_newuserdata(L, sizeof(luatyp)); \
++      *o = obj; \
++      luaV_setudata(L, obj); /* cache[obj] = udata */ \
++      luaV_getfield(L, luatname); \
++      lua_setmetatable(L, -2); \
++      return o; \
++     }
++ 
++ #define luaV_pushtype(typ,tname,luatyp) \
++      static luatyp * \
++     luaV_push##tname (lua_State *L, typ *obj) \
++     { \
++      luatyp *o = NULL; \
++      if (obj == NULL) \
++          lua_pushnil(L); \
++      else { \
++          luaV_getudata(L, obj); \
++          if (lua_isnil(L, -1)) /* not interned? */ \
++          { \
++              lua_pop(L, 1); \
++              o = luaV_new##tname(L, obj); \
++          } \
++          else \
++              o = (luatyp *) lua_touserdata(L, -1); \
++      } \
++      return o; \
++     }
++ 
++ #define luaV_type_tostring(tname,luatname) \
++      static int \
++     luaV_##tname##_tostring (lua_State *L) \
++     { \
++      lua_pushfstring(L, "%s: %p", luatname, lua_touserdata(L, 1)); \
++      return 1; \
++     }
++ 
+  
+! /* adapted from eval.c */
+! 
+! #define listitem_alloc() (listitem_T *)alloc(sizeof(listitem_T))
+! 
+!     static listitem_T *
+! list_find (list_T *l, long n)
+! {
+!     listitem_T *li;
+!     if (l == NULL || n < -l->lv_len || n >= l->lv_len)
+!      return NULL;
+!     if (n < 0) /* search backward? */
+!      for (li = l->lv_last; n < -1; li = li->li_prev)
+!          n++;
+!     else /* search forward */
+!      for (li = l->lv_first; n > 0; li = li->li_next)
+!          n--;
+!     return li;
+! }
+  
+!     static void
+! list_remove (list_T *l, listitem_T *li)
+  {
+!     listwatch_T *lw;
+!     --l->lv_len;
+!     /* fix watchers */
+!     for (lw = l->lv_watch; lw != NULL; lw = lw->lw_next)
+!      if (lw->lw_item == li)
+!          lw->lw_item = li->li_next;
+!     /* fix list pointers */
+!     if (li->li_next == NULL) /* last? */
+!      l->lv_last = li->li_prev;
+!     else
+!      li->li_next->li_prev = li->li_prev;
+!     if (li->li_prev == NULL) /* first? */
+!      l->lv_first = li->li_next;
+!     else
+!      li->li_prev->li_next = li->li_next;
+!     l->lv_idx_item = NULL;
+! }
+! 
+!     static void
+! list_append(list_T *l, listitem_T *item)
+! {
+!     if (l->lv_last == NULL) /* empty list? */
+!      l->lv_first = item;
+!     else
+!      l->lv_last->li_next = item;
+!     item->li_prev = l->lv_last;
+!     item->li_next = NULL;
+!     l->lv_last = item;
+!     ++l->lv_len;
+! }
+! 
+!     static int
+! list_insert_tv(list_T *l, typval_T *tv, listitem_T *item)
+! {
+!     listitem_T       *ni = listitem_alloc();
+! 
+!     if (ni == NULL)
+!      return FAIL;
+!     copy_tv(tv, &ni->li_tv);
+!     if (item == NULL)
+!      list_append(l, ni);
+!     else
+!     {
+!      ni->li_prev = item->li_prev;
+!      ni->li_next = item;
+!      if (item->li_prev == NULL)
+!      {
+!          l->lv_first = ni;
+!          ++l->lv_idx;
+!      }
+!      else
+!      {
+!          item->li_prev->li_next = ni;
+!          l->lv_idx_item = NULL;
+!      }
+!      item->li_prev = ni;
+!      ++l->lv_len;
+!     }
+!     return OK;
+! }
+! 
+! /* set references */
+! 
+! static void set_ref_in_tv (typval_T *tv, int copyID);
+! 
+!     static void
+! set_ref_in_dict(dict_T *d, int copyID)
+! {
+!     hashtab_T *ht = &d->dv_hashtab;
+!     int n = ht->ht_used;
+!     hashitem_T *hi;
+!     for (hi = ht->ht_array; n > 0; ++hi)
+!      if (!HASHITEM_EMPTY(hi))
+!      {
+!          dictitem_T *di = dict_lookup(hi);
+!          set_ref_in_tv(&di->di_tv, copyID);
+!          --n;
+!      }
+! }
+! 
+!     static void
+! set_ref_in_list(list_T *l, int copyID)
+! {
+!     listitem_T *li;
+!     for (li = l->lv_first; li != NULL; li = li->li_next)
+!      set_ref_in_tv(&li->li_tv, copyID);
+! }
+! 
+!     static void
+! set_ref_in_tv(typval_T *tv, int copyID)
+! {
+!     if (tv->v_type == VAR_LIST)
+!     {
+!      list_T *l = tv->vval.v_list;
+!      if (l != NULL && l->lv_copyID != copyID)
+!      {
+!          l->lv_copyID = copyID;
+!          set_ref_in_list(l, copyID);
+!      }
+!     }
+!     else if (tv->v_type == VAR_DICT)
+!     {
+!      dict_T *d = tv->vval.v_dict;
+!      if (d != NULL && d->dv_copyID != copyID)
+!      {
+!          d->dv_copyID = copyID;
+!          set_ref_in_dict(d, copyID);
+!      }
+!     }
+! }
+! 
+! 
+! /* =======   List type   ======= */
+! 
+!     static luaV_List *
+! luaV_newlist (lua_State *L, list_T *lis)
+! {
+!     luaV_List *l = (luaV_List *) lua_newuserdata(L, sizeof(luaV_List));
+!     *l = lis;
+!     lis->lv_refcount++; /* reference in Lua */
+!     luaV_setudata(L, lis); /* cache[lis] = udata */
+!     luaV_getfield(L, LUAVIM_LIST);
+      lua_setmetatable(L, -2);
+!     return l;
+  }
+  
+! luaV_pushtype(list_T, list, luaV_List)
+! luaV_type_tostring(list, LUAVIM_LIST)
+! 
+!     static int
+! luaV_list_gc (lua_State *L)
+  {
+!     list_unref(luaV_unbox(L, luaV_List, 1));
+!     return 0;
+! }
+! 
+!     static int
+! luaV_list_len (lua_State *L)
+! {
+!     list_T *l = luaV_unbox(L, luaV_List, 1);
+!     lua_pushinteger(L, (l == NULL) ? 0 : (int) l->lv_len);
+!     return 1;
+! }
+! 
+!     static int
+! luaV_list_iter (lua_State *L)
+! {
+!     listitem_T *li = (listitem_T *) lua_touserdata(L, lua_upvalueindex(2));
+!     if (li == NULL) return 0;
+!     luaV_pushtypval(L, &li->li_tv);
+!     lua_pushlightuserdata(L, (void *) li->li_next);
+!     lua_replace(L, lua_upvalueindex(2));
+!     return 1;
+! }
+! 
+!     static int
+! luaV_list_call (lua_State *L)
+! {
+!     list_T *l = luaV_unbox(L, luaV_List, 1);
+!     lua_pushvalue(L, lua_upvalueindex(1)); /* pass cache table along */
+!     lua_pushlightuserdata(L, (void *) l->lv_first);
+!     lua_pushcclosure(L, luaV_list_iter, 2);
+!     return 1;
+! }
+! 
+!     static int
+! luaV_list_index (lua_State *L)
+! {
+!     list_T *l = luaV_unbox(L, luaV_List, 1);
+!     if (lua_isnumber(L, 2)) /* list item? */
+!     {
+!      listitem_T *li = list_find(l, (long) luaL_checkinteger(L, 2));
+!      if (li == NULL)
+!          lua_pushnil(L);
+!      else
+!          luaV_pushtypval(L, &li->li_tv);
+!     }
+!     else if (lua_isstring(L, 2)) /* method? */
+!     {
+!      const char *s = lua_tostring(L, 2);
+!      if (strncmp(s, "add", 3) == 0
+!              || strncmp(s, "insert", 6) == 0
+!              || strncmp(s, "extend", 6) == 0)
+       {
+!          lua_getmetatable(L, 1);
+!          lua_getfield(L, -1, s);
+       }
+       else
+!          lua_pushnil(L);
+      }
+!     else
+!      lua_pushnil(L);
+!     return 1;
+  }
+  
+!     static int
+! luaV_list_newindex (lua_State *L)
+! {
+!     list_T *l = luaV_unbox(L, luaV_List, 1);
+!     long n = (long) luaL_checkinteger(L, 2);
+!     listitem_T *li;
+!     if (l->lv_lock)
+!      luaL_error(L, "list is locked");
+!     li = list_find(l, n);
+!     if (li == NULL) return 0;
+!     if (lua_isnil(L, 3)) /* remove? */
+!     {
+!      list_remove(l, li);
+!      clear_tv(&li->li_tv);
+!      vim_free(li);
+!     }
+!     else
+!     {
+!      typval_T v;
+!      luaV_totypval(L, 3, &v);
+!      clear_tv(&li->li_tv);
+!      copy_tv(&v, &li->li_tv);
+!     }
+!     return 0;
+! }
+  
+      static int
+! luaV_list_add (lua_State *L)
+  {
+!     luaV_List *lis = luaV_checkudata(L, 1, LUAVIM_LIST);
+!     list_T *l = (list_T *) luaV_checkcache(L, (void *) *lis);
+!     listitem_T *li;
+!     if (l->lv_lock)
+!      luaL_error(L, "list is locked");
+!     li = listitem_alloc();
+!     if (li != NULL)
+!     {
+!      typval_T v;
+!      lua_settop(L, 2);
+!      luaV_totypval(L, 2, &v);
+!      copy_tv(&v, &li->li_tv);
+!      list_append(l, li);
+!     }
+!     lua_settop(L, 1);
+      return 1;
+  }
+  
+      static int
++ luaV_list_insert (lua_State *L)
++ {
++     luaV_List *lis = luaV_checkudata(L, 1, LUAVIM_LIST);
++     list_T *l = (list_T *) luaV_checkcache(L, (void *) *lis);
++     long pos = luaL_optlong(L, 3, 0);
++     listitem_T *li = NULL;
++     typval_T v;
++     if (l->lv_lock)
++      luaL_error(L, "list is locked");
++     if (pos < l->lv_len)
++     {
++      li = list_find(l, pos);
++      if (li == NULL)
++          luaL_error(L, "invalid position");
++     }
++     lua_settop(L, 2);
++     luaV_totypval(L, 2, &v);
++     list_insert_tv(l, &v, li);
++     lua_settop(L, 1);
++     return 1;
++ }
++ 
++ static const luaL_Reg luaV_List_mt[] = {
++     {"__tostring", luaV_list_tostring},
++     {"__gc", luaV_list_gc},
++     {"__len", luaV_list_len},
++     {"__call", luaV_list_call},
++     {"__index", luaV_list_index},
++     {"__newindex", luaV_list_newindex},
++     {"add", luaV_list_add},
++     {"insert", luaV_list_insert},
++     {NULL, NULL}
++ };
++ 
++ 
++ /* =======   Dict type   ======= */
++ 
++     static luaV_Dict *
++ luaV_newdict (lua_State *L, dict_T *dic)
++ {
++     luaV_Dict *d = (luaV_Dict *) lua_newuserdata(L, sizeof(luaV_Dict));
++     *d = dic;
++     dic->dv_refcount++; /* reference in Lua */
++     luaV_setudata(L, dic); /* cache[dic] = udata */
++     luaV_getfield(L, LUAVIM_DICT);
++     lua_setmetatable(L, -2);
++     return d;
++ }
++ 
++ luaV_pushtype(dict_T, dict, luaV_Dict)
++ luaV_type_tostring(dict, LUAVIM_DICT)
++ 
++     static int
++ luaV_dict_gc (lua_State *L)
++ {
++     dict_unref(luaV_unbox(L, luaV_Dict, 1));
++     return 0;
++ }
++ 
++     static int
++ luaV_dict_len (lua_State *L)
++ {
++     dict_T *d = luaV_unbox(L, luaV_Dict, 1);
++     lua_pushinteger(L, (d == NULL) ? 0 : (int) d->dv_hashtab.ht_used);
++     return 1;
++ }
++ 
++     static int
++ luaV_dict_iter (lua_State *L)
++ {
++     hashitem_T *hi = (hashitem_T *) lua_touserdata(L, lua_upvalueindex(2));
++     int n = lua_tointeger(L, lua_upvalueindex(3));
++     dictitem_T *di;
++     if (n <= 0) return 0;
++     while (HASHITEM_EMPTY(hi)) hi++;
++     di = dict_lookup(hi);
++     lua_pushstring(L, (char *) hi->hi_key);
++     luaV_pushtypval(L, &di->di_tv);
++     lua_pushlightuserdata(L, (void *) (hi + 1));
++     lua_replace(L, lua_upvalueindex(2));
++     lua_pushinteger(L, n - 1);
++     lua_replace(L, lua_upvalueindex(3));
++     return 2;
++ }
++ 
++     static int
++ luaV_dict_call (lua_State *L)
++ {
++     dict_T *d = luaV_unbox(L, luaV_Dict, 1);
++     hashtab_T *ht = &d->dv_hashtab;
++     lua_pushvalue(L, lua_upvalueindex(1)); /* pass cache table along */
++     lua_pushlightuserdata(L, (void *) ht->ht_array);
++     lua_pushinteger(L, ht->ht_used); /* # remaining items */
++     lua_pushcclosure(L, luaV_dict_iter, 3);
++     return 1;
++ }
++ 
++     static int
++ luaV_dict_index (lua_State *L)
++ {
++     dict_T *d = luaV_unbox(L, luaV_Dict, 1);
++     char_u *key = (char_u *) luaL_checkstring(L, 2);
++     dictitem_T *di = dict_find(d, key, -1);
++     if (di == NULL)
++      lua_pushnil(L);
++     else
++      luaV_pushtypval(L, &di->di_tv);
++     return 1;
++ }
++ 
++     static int
++ luaV_dict_newindex (lua_State *L)
++ {
++     dict_T *d = luaV_unbox(L, luaV_Dict, 1);
++     char_u *key = (char_u *) luaL_checkstring(L, 2);
++     dictitem_T *di;
++     if (d->dv_lock)
++      luaL_error(L, "dict is locked");
++     di = dict_find(d, key, -1);
++     if (di == NULL) /* non-existing key? */
++     {
++      if (lua_isnil(L, 3)) return 0;
++      di = dictitem_alloc(key);
++      if (di == NULL) return 0;
++      if (dict_add(d, di) == FAIL)
++      {
++              vim_free(di);
++              return 0;
++      }
++     }
++     else
++      clear_tv(&di->di_tv);
++     if (lua_isnil(L, 3)) /* remove? */
++     {
++      hashitem_T *hi = hash_find(&d->dv_hashtab, di->di_key);
++      hash_remove(&d->dv_hashtab, hi);
++      dictitem_free(di);
++     }
++     else {
++      typval_T v;
++      luaV_totypval(L, 3, &v);
++      copy_tv(&v, &di->di_tv);
++     }
++     return 0;
++ }
++ 
++ static const luaL_Reg luaV_Dict_mt[] = {
++     {"__tostring", luaV_dict_tostring},
++     {"__gc", luaV_dict_gc},
++     {"__len", luaV_dict_len},
++     {"__call", luaV_dict_call},
++     {"__index", luaV_dict_index},
++     {"__newindex", luaV_dict_newindex},
++     {NULL, NULL}
++ };
++ 
++ 
++ /* =======   Buffer type   ======= */
++ 
++ luaV_newtype(buf_T, buffer, luaV_Buffer, LUAVIM_BUFFER)
++ luaV_pushtype(buf_T, buffer, luaV_Buffer)
++ luaV_type_tostring(buffer, LUAVIM_BUFFER)
++ 
++     static int
+  luaV_buffer_len(lua_State *L)
+  {
+!     buf_T *b = (buf_T *) luaV_checkvalid(L, luaV_Buffer, 1);
+!     lua_pushinteger(L, b->b_ml.ml_line_count);
+      return 1;
+  }
+  
+      static int
+  luaV_buffer_call(lua_State *L)
+  {
+!     buf_T *b = (buf_T *) luaV_checkvalid(L, luaV_Buffer, 1);
+      lua_settop(L, 1);
+!     set_curbuf(b, DOBUF_SPLIT);
+      return 1;
+  }
+  
+      static int
+  luaV_buffer_index(lua_State *L)
+  {
+!     buf_T *b = (buf_T *) luaV_checkvalid(L, luaV_Buffer, 1);
+      linenr_T n = (linenr_T) lua_tointeger(L, 2);
+!     if (n > 0 && n <= b->b_ml.ml_line_count)
+!      luaV_pushline(L, b, n);
+      else if (lua_isstring(L, 2))
+      {
+       const char *s = lua_tostring(L, 2);
+       if (strncmp(s, "name", 4) == 0)
+!          lua_pushstring(L, (char *) b->b_sfname);
+       else if (strncmp(s, "fname", 5) == 0)
+!          lua_pushstring(L, (char *) b->b_ffname);
+       else if (strncmp(s, "number", 6) == 0)
+!          lua_pushinteger(L, b->b_fnum);
+       /* methods */
+       else if (strncmp(s,   "insert", 6) == 0
+               || strncmp(s, "next", 4) == 0
+***************
+*** 584,600 ****
+      static int
+  luaV_buffer_newindex(lua_State *L)
+  {
+!     luaV_Buffer *b = (luaV_Buffer *) lua_touserdata(L, 1);
+      linenr_T n = (linenr_T) luaL_checkinteger(L, 2);
+  #ifdef HAVE_SANDBOX
+      luaV_checksandbox(L);
+  #endif
+!     if (n < 1 || n > (*b)->b_ml.ml_line_count)
+       luaL_error(L, "invalid line number");
+      if (lua_isnil(L, 3)) /* delete line */
+      {
+       buf_T *buf = curbuf;
+!      curbuf = *b;
+       if (u_savedel(n, 1L) == FAIL)
+       {
+           curbuf = buf;
+--- 1122,1138 ----
+      static int
+  luaV_buffer_newindex(lua_State *L)
+  {
+!     buf_T *b = (buf_T *) luaV_checkvalid(L, luaV_Buffer, 1);
+      linenr_T n = (linenr_T) luaL_checkinteger(L, 2);
+  #ifdef HAVE_SANDBOX
+      luaV_checksandbox(L);
+  #endif
+!     if (n < 1 || n > b->b_ml.ml_line_count)
+       luaL_error(L, "invalid line number");
+      if (lua_isnil(L, 3)) /* delete line */
+      {
+       buf_T *buf = curbuf;
+!      curbuf = b;
+       if (u_savedel(n, 1L) == FAIL)
+       {
+           curbuf = buf;
+***************
+*** 607,613 ****
+       }
+       else {
+           deleted_lines_mark(n, 1L);
+!          if (*b == curwin->w_buffer) /* fix cursor in current window? */
+           {
+               if (curwin->w_cursor.lnum >= n)
+               {
+--- 1145,1151 ----
+       }
+       else {
+           deleted_lines_mark(n, 1L);
+!          if (b == curwin->w_buffer) /* fix cursor in current window? */
+           {
+               if (curwin->w_cursor.lnum >= n)
+               {
+***************
+*** 627,633 ****
+      else if (lua_isstring(L, 3)) /* update line */
+      {
+       buf_T *buf = curbuf;
+!      curbuf = *b;
+       if (u_savesub(n) == FAIL)
+       {
+           curbuf = buf;
+--- 1165,1171 ----
+      else if (lua_isstring(L, 3)) /* update line */
+      {
+       buf_T *buf = curbuf;
+!      curbuf = b;
+       if (u_savesub(n) == FAIL)
+       {
+           curbuf = buf;
+***************
+*** 640,646 ****
+       }
+       else changed_bytes(n, 0);
+       curbuf = buf;
+!      if (*b == curwin->w_buffer)
+           check_cursor_col();
+      }
+      else
+--- 1178,1184 ----
+       }
+       else changed_bytes(n, 0);
+       curbuf = buf;
+!      if (b == curwin->w_buffer)
+           check_cursor_col();
+      }
+      else
+***************
+*** 651,658 ****
+      static int
+  luaV_buffer_insert(lua_State *L)
+  {
+!     luaV_Buffer *b = luaV_checkudata(L, 1, LUAVIM_BUFFER);
+!     linenr_T last = (*b)->b_ml.ml_line_count;
+      linenr_T n = (linenr_T) luaL_optinteger(L, 3, last);
+      buf_T *buf;
+      luaL_checktype(L, 2, LUA_TSTRING);
+--- 1189,1197 ----
+      static int
+  luaV_buffer_insert(lua_State *L)
+  {
+!     luaV_Buffer *lb = luaV_checkudata(L, 1, LUAVIM_BUFFER);
+!     buf_T *b = (buf_T *) luaV_checkcache(L, (void *) *lb);
+!     linenr_T last = b->b_ml.ml_line_count;
+      linenr_T n = (linenr_T) luaL_optinteger(L, 3, last);
+      buf_T *buf;
+      luaL_checktype(L, 2, LUA_TSTRING);
+***************
+*** 664,670 ****
+      if (n > last) n = last;
+      /* insert */
+      buf = curbuf;
+!     curbuf = *b;
+      if (u_save(n, n + 1) == FAIL)
+      {
+       curbuf = buf;
+--- 1203,1209 ----
+      if (n > last) n = last;
+      /* insert */
+      buf = curbuf;
+!     curbuf = b;
+      if (u_save(n, n + 1) == FAIL)
+      {
+       curbuf = buf;
+***************
+*** 686,692 ****
+  luaV_buffer_next(lua_State *L)
+  {
+      luaV_Buffer *b = luaV_checkudata(L, 1, LUAVIM_BUFFER);
+!     luaV_pushbuffer(L, (*b)->b_next);
+      return 1;
+  }
+  
+--- 1225,1232 ----
+  luaV_buffer_next(lua_State *L)
+  {
+      luaV_Buffer *b = luaV_checkudata(L, 1, LUAVIM_BUFFER);
+!     buf_T *buf = (buf_T *) luaV_checkcache(L, (void *) *b);
+!     luaV_pushbuffer(L, buf->b_next);
+      return 1;
+  }
+  
+***************
+*** 694,700 ****
+  luaV_buffer_previous(lua_State *L)
+  {
+      luaV_Buffer *b = luaV_checkudata(L, 1, LUAVIM_BUFFER);
+!     luaV_pushbuffer(L, (*b)->b_prev);
+      return 1;
+  }
+  
+--- 1234,1241 ----
+  luaV_buffer_previous(lua_State *L)
+  {
+      luaV_Buffer *b = luaV_checkudata(L, 1, LUAVIM_BUFFER);
+!     buf_T *buf = (buf_T *) luaV_checkcache(L, (void *) *b);
+!     luaV_pushbuffer(L, buf->b_prev);
+      return 1;
+  }
+  
+***************
+*** 702,709 ****
+  luaV_buffer_isvalid(lua_State *L)
+  {
+      luaV_Buffer *b = luaV_checkudata(L, 1, LUAVIM_BUFFER);
+!     lua_pushlightuserdata(L, (void *) (*b));
+!     lua_rawget(L, LUA_ENVIRONINDEX);
+      lua_pushboolean(L, !lua_isnil(L, -1));
+      return 1;
+  }
+--- 1243,1249 ----
+  luaV_buffer_isvalid(lua_State *L)
+  {
+      luaV_Buffer *b = luaV_checkudata(L, 1, LUAVIM_BUFFER);
+!     luaV_getudata(L, *b);
+      lua_pushboolean(L, !lua_isnil(L, -1));
+      return 1;
+  }
+***************
+*** 724,801 ****
+  
+  /* =======   Window type   ======= */
+  
+!     static luaV_Window *
+! luaV_newwindow(lua_State *L, win_T *win)
+! {
+!     luaV_Window *w = (luaV_Window *) lua_newuserdata(L, sizeof(luaV_Window));
+!     *w = win;
+!     lua_pushlightuserdata(L, (void *) win);
+!     lua_pushvalue(L, -2);
+!     lua_rawset(L, LUA_ENVIRONINDEX); /* env[win] = udata */
+!     /* to avoid GC, store as key in env */
+!     lua_pushvalue(L, -1);
+!     lua_pushboolean(L, 1);
+!     lua_rawset(L, LUA_ENVIRONINDEX); /* env[udata] = true */
+!     /* set metatable */
+!     luaV_getfield(L, LUAVIM_WINDOW);
+!     lua_setmetatable(L, -2);
+!     return w;
+! }
+! 
+!     static luaV_Window *
+! luaV_pushwindow(lua_State *L, win_T *win)
+! {
+!     luaV_Window *w = NULL;
+!     if (win == NULL)
+!      lua_pushnil(L);
+!     else {
+!      lua_pushlightuserdata(L, (void *) win);
+!      lua_rawget(L, LUA_ENVIRONINDEX);
+!      if (lua_isnil(L, -1)) /* not interned? */
+!      {
+!          lua_pop(L, 1);
+!          w = luaV_newwindow(L, win);
+!      }
+!      else w = (luaV_Window *) lua_touserdata(L, -1);
+!     }
+!     return w;
+! }
+! 
+! /* Window metamethods */
+! 
+!     static int
+! luaV_window_tostring(lua_State *L)
+! {
+!     lua_pushfstring(L, "%s: %p", LUAVIM_WINDOW, lua_touserdata(L, 1));
+!     return 1;
+! }
+  
+      static int
+  luaV_window_call(lua_State *L)
+  {
+!     luaV_Window *w = (luaV_Window *) lua_touserdata(L, 1);
+      lua_settop(L, 1);
+!     win_goto(*w);
+      return 1;
+  }
+  
+      static int
+  luaV_window_index(lua_State *L)
+  {
+!     luaV_Window *w = (luaV_Window *) lua_touserdata(L, 1);
+      const char *s = luaL_checkstring(L, 2);
+      if (strncmp(s, "buffer", 6) == 0)
+!      luaV_pushbuffer(L, (*w)->w_buffer);
+      else if (strncmp(s, "line", 4) == 0)
+!      lua_pushinteger(L, (*w)->w_cursor.lnum);
+      else if (strncmp(s, "col", 3) == 0)
+!      lua_pushinteger(L, (*w)->w_cursor.col + 1);
+  #ifdef FEAT_VERTSPLIT
+      else if (strncmp(s, "width", 5) == 0)
+!      lua_pushinteger(L, W_WIDTH((*w)));
+  #endif
+      else if (strncmp(s, "height", 6) == 0)
+!      lua_pushinteger(L, (*w)->w_height);
+      /* methods */
+      else if (strncmp(s,   "next", 4) == 0
+           || strncmp(s, "previous", 8) == 0
+--- 1264,1299 ----
+  
+  /* =======   Window type   ======= */
+  
+! luaV_newtype(win_T, window, luaV_Window, LUAVIM_WINDOW)
+! luaV_pushtype(win_T, window, luaV_Window)
+! luaV_type_tostring(window, LUAVIM_WINDOW)
+  
+      static int
+  luaV_window_call(lua_State *L)
+  {
+!     win_T *w = (win_T *) luaV_checkvalid(L, luaV_Window, 1);
+      lua_settop(L, 1);
+!     win_goto(w);
+      return 1;
+  }
+  
+      static int
+  luaV_window_index(lua_State *L)
+  {
+!     win_T *w = (win_T *) luaV_checkvalid(L, luaV_Window, 1);
+      const char *s = luaL_checkstring(L, 2);
+      if (strncmp(s, "buffer", 6) == 0)
+!      luaV_pushbuffer(L, w->w_buffer);
+      else if (strncmp(s, "line", 4) == 0)
+!      lua_pushinteger(L, w->w_cursor.lnum);
+      else if (strncmp(s, "col", 3) == 0)
+!      lua_pushinteger(L, w->w_cursor.col + 1);
+  #ifdef FEAT_VERTSPLIT
+      else if (strncmp(s, "width", 5) == 0)
+!      lua_pushinteger(L, W_WIDTH(w));
+  #endif
+      else if (strncmp(s, "height", 6) == 0)
+!      lua_pushinteger(L, w->w_height);
+      /* methods */
+      else if (strncmp(s,   "next", 4) == 0
+           || strncmp(s, "previous", 8) == 0
+***************
+*** 812,818 ****
+      static int
+  luaV_window_newindex (lua_State *L)
+  {
+!     luaV_Window *w = (luaV_Window *) lua_touserdata(L, 1);
+      const char *s = luaL_checkstring(L, 2);
+      int v = luaL_checkinteger(L, 3);
+      if (strncmp(s, "line", 4) == 0)
+--- 1310,1316 ----
+      static int
+  luaV_window_newindex (lua_State *L)
+  {
+!     win_T *w = (win_T *) luaV_checkvalid(L, luaV_Window, 1);
+      const char *s = luaL_checkstring(L, 2);
+      int v = luaL_checkinteger(L, 3);
+      if (strncmp(s, "line", 4) == 0)
+***************
+*** 820,828 ****
+  #ifdef HAVE_SANDBOX
+       luaV_checksandbox(L);
+  #endif
+!      if (v < 1 || v > (*w)->w_buffer->b_ml.ml_line_count)
+           luaL_error(L, "line out of range");
+!      (*w)->w_cursor.lnum = v;
+       update_screen(VALID);
+      }
+      else if (strncmp(s, "col", 3) == 0)
+--- 1318,1326 ----
+  #ifdef HAVE_SANDBOX
+       luaV_checksandbox(L);
+  #endif
+!      if (v < 1 || v > w->w_buffer->b_ml.ml_line_count)
+           luaL_error(L, "line out of range");
+!      w->w_cursor.lnum = v;
+       update_screen(VALID);
+      }
+      else if (strncmp(s, "col", 3) == 0)
+***************
+*** 830,836 ****
+  #ifdef HAVE_SANDBOX
+       luaV_checksandbox(L);
+  #endif
+!      (*w)->w_cursor.col = v - 1;
+       update_screen(VALID);
+      }
+  #ifdef FEAT_VERTSPLIT
+--- 1328,1334 ----
+  #ifdef HAVE_SANDBOX
+       luaV_checksandbox(L);
+  #endif
+!      w->w_cursor.col = v - 1;
+       update_screen(VALID);
+      }
+  #ifdef FEAT_VERTSPLIT
+***************
+*** 840,846 ****
+  #ifdef FEAT_GUI
+       need_mouse_correct = TRUE;
+  #endif
+!      curwin = *w;
+       win_setwidth(v);
+       curwin = win;
+      }
+--- 1338,1344 ----
+  #ifdef FEAT_GUI
+       need_mouse_correct = TRUE;
+  #endif
+!      curwin = w;
+       win_setwidth(v);
+       curwin = win;
+      }
+***************
+*** 851,857 ****
+  #ifdef FEAT_GUI
+       need_mouse_correct = TRUE;
+  #endif
+!      curwin = *w;
+       win_setheight(v);
+       curwin = win;
+      }
+--- 1349,1355 ----
+  #ifdef FEAT_GUI
+       need_mouse_correct = TRUE;
+  #endif
+!      curwin = w;
+       win_setheight(v);
+       curwin = win;
+      }
+***************
+*** 864,870 ****
+  luaV_window_next(lua_State *L)
+  {
+      luaV_Window *w = luaV_checkudata(L, 1, LUAVIM_WINDOW);
+!     luaV_pushwindow(L, (*w)->w_next);
+      return 1;
+  }
+  
+--- 1362,1369 ----
+  luaV_window_next(lua_State *L)
+  {
+      luaV_Window *w = luaV_checkudata(L, 1, LUAVIM_WINDOW);
+!     win_T *win = (win_T *) luaV_checkcache(L, (void *) *w);
+!     luaV_pushwindow(L, win->w_next);
+      return 1;
+  }
+  
+***************
+*** 872,878 ****
+  luaV_window_previous(lua_State *L)
+  {
+      luaV_Window *w = luaV_checkudata(L, 1, LUAVIM_WINDOW);
+!     luaV_pushwindow(L, (*w)->w_prev);
+      return 1;
+  }
+  
+--- 1371,1378 ----
+  luaV_window_previous(lua_State *L)
+  {
+      luaV_Window *w = luaV_checkudata(L, 1, LUAVIM_WINDOW);
+!     win_T *win = (win_T *) luaV_checkcache(L, (void *) *w);
+!     luaV_pushwindow(L, win->w_prev);
+      return 1;
+  }
+  
+***************
+*** 880,887 ****
+  luaV_window_isvalid(lua_State *L)
+  {
+      luaV_Window *w = luaV_checkudata(L, 1, LUAVIM_WINDOW);
+!     lua_pushlightuserdata(L, (void *) (*w));
+!     lua_rawget(L, LUA_ENVIRONINDEX);
+      lua_pushboolean(L, !lua_isnil(L, -1));
+      return 1;
+  }
+--- 1380,1386 ----
+  luaV_window_isvalid(lua_State *L)
+  {
+      luaV_Window *w = luaV_checkudata(L, 1, LUAVIM_WINDOW);
+!     luaV_getudata(L, *w);
+      lua_pushboolean(L, !lua_isnil(L, -1));
+      return 1;
+  }
+***************
+*** 983,988 ****
+--- 1482,1509 ----
+  }
+  
+      static int
++ luaV_list(lua_State *L)
++ {
++     list_T *l = list_alloc();
++     if (l == NULL)
++      lua_pushnil(L);
++     else
++      luaV_newlist(L, l);
++     return 1;
++ }
++ 
++     static int
++ luaV_dict(lua_State *L)
++ {
++     dict_T *d = dict_alloc();
++     if (d == NULL)
++      lua_pushnil(L);
++     else
++      luaV_newdict(L, d);
++     return 1;
++ }
++ 
++     static int
+  luaV_buffer(lua_State *L)
+  {
+      buf_T *buf;
+***************
+*** 1008,1022 ****
+                   break;
+           }
+       }
+-      if (buf == NULL) /* not found? */
+-          lua_pushnil(L);
+-      else
+-          luaV_pushbuffer(L, buf);
+      }
+!     else {
+       buf = (lua_toboolean(L, 1)) ? firstbuf : curbuf; /* first buffer? */
+!      luaV_pushbuffer(L, buf);
+!     }
+      return 1;
+  }
+  
+--- 1529,1538 ----
+                   break;
+           }
+       }
+      }
+!     else
+       buf = (lua_toboolean(L, 1)) ? firstbuf : curbuf; /* first buffer? */
+!     luaV_pushbuffer(L, buf);
+      return 1;
+  }
+  
+***************
+*** 1029,1043 ****
+       int n = lua_tointeger(L, 1);
+       for (win = firstwin; win != NULL; win = win->w_next, n--)
+           if (n == 1) break;
+-      if (win == NULL) /* not found? */
+-          lua_pushnil(L);
+-      else
+-          luaV_pushwindow(L, win);
+      }
+!     else {
+       win = (lua_toboolean(L, 1)) ? firstwin : curwin; /* first window? */
+!      luaV_pushwindow(L, win);
+!     }
+      return 1;
+  }
+  
+--- 1545,1554 ----
+       int n = lua_tointeger(L, 1);
+       for (win = firstwin; win != NULL; win = win->w_next, n--)
+           if (n == 1) break;
+      }
+!     else
+       win = (lua_toboolean(L, 1)) ? firstwin : curwin; /* first window? */
+!     luaV_pushwindow(L, win);
+      return 1;
+  }
+  
+***************
+*** 1054,1086 ****
+  }
+  
+      static int
+! luaV_isbuffer(lua_State *L)
+! {
+!     lua_pushboolean(L, luaV_toudata(L, 1, LUAVIM_BUFFER) != NULL);
+!     return 1;
+! }
+! 
+!     static int
+! luaV_iswindow(lua_State *L)
+  {
+!     lua_pushboolean(L, luaV_toudata(L, 1, LUAVIM_WINDOW) != NULL);
+!     return 1;
+! }
+! 
+! /* for freeing buffer and window objects; lightuserdata as arg */
+!     static int
+! luaV_free(lua_State *L)
+! {
+!     lua_pushvalue(L, 1); /* lightudata */
+!     lua_rawget(L, LUA_ENVIRONINDEX);
+!     if (!lua_isnil(L, -1))
+      {
+!      lua_pushnil(L);
+!      lua_rawset(L, LUA_ENVIRONINDEX); /* env[udata] = nil */
+!      lua_pushnil(L);
+!      lua_rawset(L, LUA_ENVIRONINDEX); /* env[lightudata] = nil */
+      }
+!     return 0;
+  }
+  
+  static const luaL_Reg luaV_module[] = {
+--- 1565,1606 ----
+  }
+  
+      static int
+! luaV_type(lua_State *L)
+  {
+!     luaL_checkany(L, 1);
+!     if (lua_type(L, 1) == LUA_TUSERDATA) /* check vim udata? */
+      {
+!      lua_settop(L, 1);
+!      if (lua_getmetatable(L, 1))
+!      {
+!          luaV_getfield(L, LUAVIM_LIST);
+!          if (lua_rawequal(L, -1, 2))
+!          {
+!              lua_pushstring(L, "list");
+!              return 1;
+!          }
+!          luaV_getfield(L, LUAVIM_DICT);
+!          if (lua_rawequal(L, -1, 2))
+!          {
+!              lua_pushstring(L, "dict");
+!              return 1;
+!          }
+!          luaV_getfield(L, LUAVIM_BUFFER);
+!          if (lua_rawequal(L, -1, 2))
+!          {
+!              lua_pushstring(L, "buffer");
+!              return 1;
+!          }
+!          luaV_getfield(L, LUAVIM_WINDOW);
+!          if (lua_rawequal(L, -1, 2))
+!          {
+!              lua_pushstring(L, "window");
+!              return 1;
+!          }
+!      }
+      }
+!     lua_pushstring(L, luaL_typename(L, 1)); /* fallback */
+!     return 1;
+  }
+  
+  static const luaL_Reg luaV_module[] = {
+***************
+*** 1088,1111 ****
+      {"eval", luaV_eval},
+      {"beep", luaV_beep},
+      {"line", luaV_line},
+      {"buffer", luaV_buffer},
+      {"window", luaV_window},
+      {"open", luaV_open},
+!     {"isbuffer", luaV_isbuffer},
+!     {"iswindow", luaV_iswindow},
+      {NULL, NULL}
+  };
+  
+      static int
+  luaopen_vim(lua_State *L)
+  {
+!     /* set environment */
+      lua_newtable(L);
+      lua_newtable(L);
+!     lua_pushliteral(L, "v");
+      lua_setfield(L, -2, "__mode");
+!     lua_setmetatable(L, -2);
+!     lua_replace(L, LUA_ENVIRONINDEX);
+      /* print */
+      lua_pushcfunction(L, luaV_print);
+      lua_setglobal(L, "print");
+--- 1608,1695 ----
+      {"eval", luaV_eval},
+      {"beep", luaV_beep},
+      {"line", luaV_line},
++     {"list", luaV_list},
++     {"dict", luaV_dict},
+      {"buffer", luaV_buffer},
+      {"window", luaV_window},
+      {"open", luaV_open},
+!     {"type", luaV_type},
+      {NULL, NULL}
+  };
+  
++ /* for freeing list, dict, buffer and window objects; lightuserdata as arg */
++     static int
++ luaV_free(lua_State *L)
++ {
++     lua_pushnil(L);
++     luaV_setudata(L, lua_touserdata(L, 1));
++     return 0;
++ }
++ 
++     static int
++ luaV_luaeval (lua_State *L)
++ {
++     luaL_Buffer b;
++     size_t l;
++     const char *str = lua_tolstring(L, 1, &l);
++     typval_T *arg = (typval_T *) lua_touserdata(L, 2);
++     typval_T *rettv = (typval_T *) lua_touserdata(L, 3);
++     luaL_buffinit(L, &b);
++     luaL_addlstring(&b, LUAVIM_EVALHEADER, sizeof(LUAVIM_EVALHEADER) - 1);
++     luaL_addlstring(&b, str, l);
++     luaL_pushresult(&b);
++     str = lua_tolstring(L, -1, &l);
++     if (luaL_loadbuffer(L, str, l, LUAVIM_EVALNAME)) /* compile error? */
++     {
++      luaV_emsg(L);
++      return 0;
++     }
++     luaV_pushtypval(L, arg);
++     if (lua_pcall(L, 1, 1, 0)) /* running error? */
++     {
++      luaV_emsg(L);
++      return 0;
++     }
++     luaV_totypval(L, -1, rettv);
++     return 0;
++ }
++ 
++     static int
++ luaV_setref (lua_State *L)
++ {
++     int copyID = lua_tointeger(L, 1);
++     typval_T tv;
++     luaV_getfield(L, LUAVIM_LIST);
++     luaV_getfield(L, LUAVIM_DICT);
++     lua_pushnil(L);
++     while (lua_next(L, lua_upvalueindex(1)) != 0) /* traverse cache table */
++     {
++      lua_getmetatable(L, -1);
++      if (lua_rawequal(L, -1, 2)) /* list? */
++      {
++          tv.v_type = VAR_LIST;
++          tv.vval.v_list = (list_T *) lua_touserdata(L, 4); /* key */
++      }
++      else if (lua_rawequal(L, -1, 3)) /* dict? */
++      {
++          tv.v_type = VAR_DICT;
++          tv.vval.v_dict = (dict_T *) lua_touserdata(L, 4); /* key */
++      }
++      lua_pop(L, 2); /* metatable and value */
++      set_ref_in_tv(&tv, copyID);
++     }
++     return 0;
++ }
++ 
+      static int
+  luaopen_vim(lua_State *L)
+  {
+!     /* set cache table */
+      lua_newtable(L);
+      lua_newtable(L);
+!     lua_pushstring(L, "v");
+      lua_setfield(L, -2, "__mode");
+!     lua_setmetatable(L, -2); /* cache is weak-valued */
+      /* print */
+      lua_pushcfunction(L, luaV_print);
+      lua_setglobal(L, "print");
+***************
+*** 1116,1129 ****
+      lua_pop(L, 1);
+      /* free */
+      lua_pushlightuserdata(L, (void *) LUAVIM_FREE);
+!     lua_pushcfunction(L, luaV_free);
+      lua_rawset(L, LUA_REGISTRYINDEX);
+      /* register */
+      luaV_newmetatable(L, LUAVIM_BUFFER);
+!     luaL_register(L, NULL, luaV_Buffer_mt);
+      luaV_newmetatable(L, LUAVIM_WINDOW);
+!     luaL_register(L, NULL, luaV_Window_mt);
+!     luaL_register(L, LUAVIM_NAME, luaV_module);
+      return 0;
+  }
+  
+--- 1700,1735 ----
+      lua_pop(L, 1);
+      /* free */
+      lua_pushlightuserdata(L, (void *) LUAVIM_FREE);
+!     lua_pushvalue(L, 1); /* cache table */
+!     lua_pushcclosure(L, luaV_free, 1);
+!     lua_rawset(L, LUA_REGISTRYINDEX);
+!     /* luaeval */
+!     lua_pushlightuserdata(L, (void *) LUAVIM_LUAEVAL);
+!     lua_pushvalue(L, 1); /* cache table */
+!     lua_pushcclosure(L, luaV_luaeval, 1);
+!     lua_rawset(L, LUA_REGISTRYINDEX);
+!     /* setref */
+!     lua_pushlightuserdata(L, (void *) LUAVIM_SETREF);
+!     lua_pushvalue(L, 1); /* cache table */
+!     lua_pushcclosure(L, luaV_setref, 1);
+      lua_rawset(L, LUA_REGISTRYINDEX);
+      /* register */
++     luaV_newmetatable(L, LUAVIM_LIST);
++     lua_pushvalue(L, 1);
++     luaV_openlib(L, luaV_List_mt, 1);
++     luaV_newmetatable(L, LUAVIM_DICT);
++     lua_pushvalue(L, 1);
++     luaV_openlib(L, luaV_Dict_mt, 1);
+      luaV_newmetatable(L, LUAVIM_BUFFER);
+!     lua_pushvalue(L, 1); /* cache table */
+!     luaV_openlib(L, luaV_Buffer_mt, 1);
+      luaV_newmetatable(L, LUAVIM_WINDOW);
+!     lua_pushvalue(L, 1); /* cache table */
+!     luaV_openlib(L, luaV_Window_mt, 1);
+!     lua_newtable(L); /* vim table */
+!     lua_pushvalue(L, 1); /* cache table */
+!     luaV_openlib(L, luaV_module, 1);
+!     lua_setglobal(L, LUAVIM_NAME);
+      return 0;
+  }
+  
+***************
+*** 1154,1160 ****
+  static lua_State *L = NULL;
+  
+      static int
+! lua_is_open(void)
+  {
+      return L != NULL;
+  }
+--- 1760,1766 ----
+  static lua_State *L = NULL;
+  
+      static int
+! lua_isopen(void)
+  {
+      return L != NULL;
+  }
+***************
+*** 1162,1168 ****
+      static int
+  lua_init(void)
+  {
+!     if (L == NULL)
+      {
+  #ifdef DYNAMIC_LUA
+       if (!lua_enabled(TRUE))
+--- 1768,1774 ----
+      static int
+  lua_init(void)
+  {
+!     if (!lua_isopen())
+      {
+  #ifdef DYNAMIC_LUA
+       if (!lua_enabled(TRUE))
+***************
+*** 1179,1185 ****
+      void
+  lua_end(void)
+  {
+!     if (L != NULL)
+      {
+       lua_close(L);
+       L = NULL;
+--- 1785,1791 ----
+      void
+  lua_end(void)
+  {
+!     if (lua_isopen())
+      {
+       lua_close(L);
+       L = NULL;
+***************
+*** 1273,1295 ****
+      }
+  }
+  
+! /* buffer */
+      void
+! lua_buffer_free(buf_T *buf)
+  {
+!     if (!lua_is_open()) return;
+!     luaV_getfield(L, LUAVIM_FREE);
+!     lua_pushlightuserdata(L, (void *) buf);
+!     lua_call(L, 1, 0);
+  }
+  
+- /* window */
+      void
+! lua_window_free(win_T *win)
+  {
+!     if (!lua_is_open()) return;
+!     luaV_getfield(L, LUAVIM_FREE);
+!     lua_pushlightuserdata(L, (void *) win);
+      lua_call(L, 1, 0);
+  }
+  
+--- 1879,1914 ----
+      }
+  }
+  
+! #define luaV_freetype(typ,tname) \
+!      void \
+!     lua_##tname##_free(typ *o) \
+!     { \
+!      if (!lua_isopen()) return; \
+!      luaV_getfield(L, LUAVIM_FREE); \
+!      lua_pushlightuserdata(L, (void *) o); \
+!      lua_call(L, 1, 0); \
+!     }
+! 
+! luaV_freetype(buf_T, buffer)
+! luaV_freetype(win_T, window)
+! 
+      void
+! do_luaeval (char_u *str, typval_T *arg, typval_T *rettv)
+  {
+!     lua_init();
+!     luaV_getfield(L, LUAVIM_LUAEVAL);
+!     lua_pushstring(L, (char *) str);
+!     lua_pushlightuserdata(L, (void *) arg);
+!     lua_pushlightuserdata(L, (void *) rettv);
+!     lua_call(L, 3, 0);
+  }
+  
+      void
+! set_ref_in_lua (int copyID)
+  {
+!     if (!lua_isopen()) return;
+!     luaV_getfield(L, LUAVIM_SETREF);
+!     lua_pushinteger(L, copyID);
+      lua_call(L, 1, 0);
+  }
+  
+*** ../vim-7.3.489/src/proto/if_lua.pro        2010-08-15 21:57:28.000000000 +0200
+--- src/proto/if_lua.pro       2012-04-05 16:41:35.000000000 +0200
+***************
+*** 6,9 ****
+--- 6,11 ----
+  void ex_luafile __ARGS((exarg_T *eap));
+  void lua_buffer_free __ARGS((buf_T *buf));
+  void lua_window_free __ARGS((win_T *win));
++ void do_luaeval __ARGS((char_u *str, typval_T *arg, typval_T *rettv));
++ void set_ref_in_lua __ARGS((int copyID));
+  /* vim: set ft=c : */
+*** ../vim-7.3.489/src/version.c       2012-04-05 16:07:01.000000000 +0200
+--- src/version.c      2012-04-05 16:52:08.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     490,
+  /**/
+
+-- 
+Even got a Datapoint 3600(?) with a DD50 connector instead of the
+usual DB25...  what a nightmare trying to figure out the pinout
+for *that* with no spex...
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.491.patch0 b/vim/patches/vim-7.3.491.patch0
new file mode 100644 (file)
index 0000000..b675722
--- /dev/null
@@ -0,0 +1,235 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.491
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.491
+Problem:    No tests for Lua.
+Solution:   Add some simple tests for Lua. (Luis Carvalho)
+Files:      src/testdir/test1.in, src/testdir/test85.in, src/testdir/test85.ok
+            src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak,
+            src/testdir/Make_ming.mak, src/testdir/Make_os2.mak,
+            src/testdir/Make_vms.mms, src/testdir/Makefile
+
+
+*** ../vim-7.3.490/src/testdir/test1.in        2010-08-15 21:57:29.000000000 +0200
+--- src/testdir/test1.in       2012-04-05 16:37:37.000000000 +0200
+***************
+*** 15,20 ****
+--- 15,21 ----
+  be set like small.vim above.  mbyte.vim is sourced by tests that require the
+  +multi_byte feature.
+  Similar logic is applied to the +mzscheme feature, using mzscheme.vim.
++ Similar logic is applied to the +lua feature, using lua.vim.
+  
+  STARTTEST
+  :" Write a single line to test.out to check if testing works at all.
+***************
+*** 28,37 ****
+--- 29,45 ----
+  qa!
+  \e:w! mbyte.vim
+  :w! mzscheme.vim
++ :w! lua.vim
++ :"
+  :" If +multi_byte feature supported, make mbyte.vim empty.
+  :if has("multi_byte") | sp another | w! mbyte.vim | q | endif
++ :"
+  :" If +mzscheme feature supported, make mzscheme.vim empty.
+  :if has("mzscheme") | sp another | w! mzscheme.vim | q | endif
++ :"
++ :" If +lua feature supported, make lua.vim empty.
++ :if has("lua") | sp another | w! lua.vim | q | endif
++ :"
+  :" If +eval feature supported quit here, leaving tiny.vim and small.vim empty.
+  :" Otherwise write small.vim to skip the test.
+  :if 1 | q! | endif
+*** ../vim-7.3.490/src/testdir/test85.in       2012-04-05 16:56:12.000000000 +0200
+--- src/testdir/test85.in      2012-04-05 16:44:00.000000000 +0200
+***************
+*** 0 ****
+--- 1,42 ----
++ Test for Lua interface and luaeval() function
++ 
++ STARTTEST
++ :so small.vim
++ :so lua.vim
++ :set nocompatible viminfo+=nviminfo
++ :lua l = vim.list():add"item0":add"dictionary with list OK":add"item2"
++ :lua h = vim.dict(); h.list = l
++ :call garbagecollect()
++ /^1
++ :" change buffer contents
++ :lua curbuf = vim.buffer()
++ :lua curline = vim.eval"line('.')"
++ :lua curbuf[curline] = "1 changed line 1"
++ :" scalar test
++ :let tmp_string = luaeval('"string"')
++ :let tmp_1000 = luaeval('1000')
++ :if printf("%s%.0f", tmp_string, tmp_1000) == "string1000"
++ :let scalar_res = "OK"
++ :else
++ :let scalar_res = "FAILED"
++ :endif
++ :call append(search("^1"), "scalar test " . scalar_res)
++ :" dictionary containing a list
++ :let tmp = luaeval("h").list[1]
++ :/^2/put =tmp
++ :" circular list (at the same time test lists containing lists)
++ :lua l[2] = l
++ :let l2 = luaeval("h").list
++ :if l2[2] == l2
++ :let res = "OK"
++ :else
++ :let res = "FAILED"
++ :endif
++ :call setline(search("^3"), "circular test " . res)
++ :?^1?,$w! test.out
++ :qa!
++ ENDTEST
++ 
++ 1 line 1
++ 2 line 2
++ 3 line 3
+*** ../vim-7.3.490/src/testdir/test85.ok       2012-04-05 16:56:12.000000000 +0200
+--- src/testdir/test85.ok      2012-04-05 16:18:56.000000000 +0200
+***************
+*** 0 ****
+--- 1,5 ----
++ 1 changed line 1
++ scalar test OK
++ 2 line 2
++ dictionary with list OK
++ circular test OK
+*** ../vim-7.3.490/src/testdir/Make_amiga.mak  2012-03-28 19:58:34.000000000 +0200
+--- src/testdir/Make_amiga.mak 2012-04-05 16:21:55.000000000 +0200
+***************
+*** 13,18 ****
+--- 13,19 ----
+  # test25     uses symbolic link
+  # test27     can't edit file with "*"
+  # test52     only for Win32
++ # test85     no Lua interface
+  
+  SCRIPTS = test1.out test3.out test4.out test5.out test6.out \
+               test7.out test8.out test9.out \
+*** ../vim-7.3.490/src/testdir/Make_dos.mak    2012-03-28 19:58:34.000000000 +0200
+--- src/testdir/Make_dos.mak   2012-04-05 16:22:16.000000000 +0200
+***************
+*** 30,36 ****
+               test68.out test69.out test71.out test72.out test73.out \
+               test74.out test75.out test76.out test77.out test78.out \
+               test79.out test80.out test81.out test82.out test83.out \
+!              test84.out
+  
+  SCRIPTS32 =  test50.out test70.out
+  
+--- 30,36 ----
+               test68.out test69.out test71.out test72.out test73.out \
+               test74.out test75.out test76.out test77.out test78.out \
+               test79.out test80.out test81.out test82.out test83.out \
+!              test84.out test85.out
+  
+  SCRIPTS32 =  test50.out test70.out
+  
+*** ../vim-7.3.490/src/testdir/Make_ming.mak   2012-03-28 19:58:34.000000000 +0200
+--- src/testdir/Make_ming.mak  2012-04-05 16:22:25.000000000 +0200
+***************
+*** 50,56 ****
+               test68.out test69.out test71.out test72.out test73.out \
+               test74.out test75.out test76.out test77.out test78.out \
+               test79.out test80.out test81.out test82.out test83.out \
+!              test84.out
+  
+  SCRIPTS32 =  test50.out test70.out
+  
+--- 50,56 ----
+               test68.out test69.out test71.out test72.out test73.out \
+               test74.out test75.out test76.out test77.out test78.out \
+               test79.out test80.out test81.out test82.out test83.out \
+!              test84.out test85.out
+  
+  SCRIPTS32 =  test50.out test70.out
+  
+*** ../vim-7.3.490/src/testdir/Make_os2.mak    2012-03-28 19:58:34.000000000 +0200
+--- src/testdir/Make_os2.mak   2012-04-05 16:22:38.000000000 +0200
+***************
+*** 13,18 ****
+--- 13,19 ----
+  # test25     uses symbolic link
+  # test27     can't edit file with "*" in file name
+  # test52     only for Win32
++ # test85     no Lua interface
+  
+  SCRIPTS = test1.out test3.out test4.out test5.out test6.out \
+               test7.out test8.out test9.out \
+*** ../vim-7.3.490/src/testdir/Make_vms.mms    2012-03-28 19:58:34.000000000 +0200
+--- src/testdir/Make_vms.mms   2012-04-05 16:23:08.000000000 +0200
+***************
+*** 4,10 ****
+  # Authors:   Zoltan Arpadffy, <arpadffy@polarhome.com>
+  #            Sandor Kopanyi,  <sandor.kopanyi@mailbox.hu>
+  #
+! # Last change:  2012 Mar 28
+  #
+  # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64.
+  # Edit the lines in the Configuration section below to select.
+--- 4,10 ----
+  # Authors:   Zoltan Arpadffy, <arpadffy@polarhome.com>
+  #            Sandor Kopanyi,  <sandor.kopanyi@mailbox.hu>
+  #
+! # Last change:  2012 Apr 05
+  #
+  # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64.
+  # Edit the lines in the Configuration section below to select.
+***************
+*** 89,94 ****
+--- 89,95 ----
+  # with too many dots).
+  #
+  # Test 72: unknown reason
++ # Test 85: no Lua interface
+  
+  .IFDEF WANT_GUI
+  SCRIPT_GUI = test16.out
+*** ../vim-7.3.490/src/testdir/Makefile        2012-03-28 19:58:34.000000000 +0200
+--- src/testdir/Makefile       2012-04-05 16:21:13.000000000 +0200
+***************
+*** 27,33 ****
+               test69.out test70.out test71.out test72.out test73.out \
+               test74.out test75.out test76.out test77.out test78.out \
+               test79.out test80.out test81.out test82.out test83.out \
+!              test84.out
+  
+  SCRIPTS_GUI = test16.out
+  
+--- 27,33 ----
+               test69.out test70.out test71.out test72.out test73.out \
+               test74.out test75.out test76.out test77.out test78.out \
+               test79.out test80.out test81.out test82.out test83.out \
+!              test84.out test85.out
+  
+  SCRIPTS_GUI = test16.out
+  
+*** ../vim-7.3.490/src/version.c       2012-04-05 16:53:56.000000000 +0200
+--- src/version.c      2012-04-05 16:55:27.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     491,
+  /**/
+
+-- 
+You had connectors?  Eeee, when I were a lad we 'ad to carry the
+bits between the computer and the terminal with a spoon...
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.492.patch0 b/vim/patches/vim-7.3.492.patch0
new file mode 100644 (file)
index 0000000..b32b6f6
--- /dev/null
@@ -0,0 +1,718 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.492
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.492
+Problem:    Can't indent conditions separately from function arguments.
+Solution:   Add the 'k' flag in 'cino. (Lech Lorens)
+Files:     runtime/doc/indent.txt, src/misc1.c, src/testdir/test3.in,
+           src/testdir/test3.ok
+
+
+*** ../vim-7.3.491/runtime/doc/indent.txt      2011-06-26 03:16:58.000000000 +0200
+--- runtime/doc/indent.txt     2012-04-05 17:12:14.000000000 +0200
+***************
+*** 459,464 ****
+--- 460,481 ----
+                 a_short_line(argument,    a_short_line(argument,
+                              argument);                argument);
+  <
++                                                      *cino-k*
++      kN    When in unclosed parentheses which follow "if", "for" or
++            "while" and N is non-zero, overrides the behaviour defined by
++            "(N": causes the indent to be N characters relative to the outer
++            context (i.e. the line where "if", "for" or "while" is).  Has
++            no effect on deeper levels of nesting.  Affects flags like "wN"
++            only for the "if", "for" and "while" conditions.  If 0, defaults
++            to behaviour defined by the "(N" flag.  (default: 0).
++ 
++              cino=(0                    cino=(0,ks >
++                if (condition1            if (condition1
++                    && condition2)                && condition2)
++                    action();                 action();
++                function(argument1        function(argument1
++                         && argument2);            && argument2);
++ <
+                                                       *cino-m*
+       mN    When N is non-zero, line up a line starting with a closing
+             parentheses with the first character of the line with the
+***************
+*** 527,540 ****
+  
+                                                               *cino-#*
+       #N    When N is non-zero recognize shell/Perl comments, starting with
+!            '#'.  Default N is zero: don't recognizes '#' comments.  Note
+             that lines starting with # will still be seen as preprocessor
+             lines.
+  
+  
+  The defaults, spelled out in full, are:
+       cinoptions=>s,e0,n0,f0,{0,}0,^0,L-1,:s,=s,l0,b0,gs,hs,N0,ps,ts,is,+s,
+!                      c3,C0,/0,(2s,us,U0,w0,W0,m0,j0,J0,)20,*70,#0
+  
+  Vim puts a line in column 1 if:
+  - It starts with '#' (preprocessor directives), if 'cinkeys' contains '#'.
+--- 546,559 ----
+  
+                                                               *cino-#*
+       #N    When N is non-zero recognize shell/Perl comments, starting with
+!            '#'.  Default N is zero: don't recognize '#' comments.  Note
+             that lines starting with # will still be seen as preprocessor
+             lines.
+  
+  
+  The defaults, spelled out in full, are:
+       cinoptions=>s,e0,n0,f0,{0,}0,^0,L-1,:s,=s,l0,b0,gs,hs,N0,ps,ts,is,+s,
+!                      c3,C0,/0,(2s,us,U0,w0,W0,k0,m0,j0,J0,)20,*70,#0
+  
+  Vim puts a line in column 1 if:
+  - It starts with '#' (preprocessor directives), if 'cinkeys' contains '#'.
+*** ../vim-7.3.491/src/misc1.c 2012-02-29 13:49:03.000000000 +0100
+--- src/misc1.c        2012-04-05 17:12:14.000000000 +0200
+***************
+*** 5771,5776 ****
+--- 5771,5822 ----
+  }
+  
+  /*
++  * Check whether in "p" there is an "if", "for" or "while" before offset.
++  * Return 0 if there is none.
++  * Otherwise return !0 and update "*poffset" to point to the place where the
++  * string was found.
++  */
++     static int
++ cin_is_if_for_while_before_offset(line, offset, poffset)
++     char_u *line;
++     size_t offset;
++     int    *poffset;
++ {
++ 
++     if (offset-- < 2)
++      return 0;
++     while (offset > 2 && vim_iswhite(line[offset]))
++      --offset;
++ 
++     offset -= 1;
++     if (!STRNCMP(line + offset, "if", 2))
++      goto probablyFound;
++ 
++     if (offset >= 1)
++     {
++      offset -= 1;
++      if (!STRNCMP(line + offset, "for", 3))
++          goto probablyFound;
++ 
++      if (offset >= 2)
++      {
++          offset -= 2;
++          if (!STRNCMP(line + offset, "while", 5))
++              goto probablyFound;
++      }
++     }
++ 
++     return 0;
++ probablyFound:
++     if (!offset || !vim_isIDc(line[offset - 1]))
++     {
++      *poffset = offset;
++      return 1;
++     }
++     return 0;
++ }
++ 
++ /*
+   * Return TRUE if we are at the end of a do-while.
+   *    do
+   *       nothing;
+***************
+*** 6124,6130 ****
+  
+  /*
+   * Find the matching '(', failing if it is in a comment.
+!  * Return NULL of no match found.
+   */
+      static pos_T *
+  find_match_paren(ind_maxparen, ind_maxcomment)           /* XXX */
+--- 6170,6176 ----
+  
+  /*
+   * Find the matching '(', failing if it is in a comment.
+!  * Return NULL if no match found.
+   */
+      static pos_T *
+  find_match_paren(ind_maxparen, ind_maxcomment)           /* XXX */
+***************
+*** 6393,6398 ****
+--- 6439,6450 ----
+       */
+      int ind_cpp_namespace = 0;
+  
++     /*
++      * handle continuation lines containing conditions of if(), for() and
++      * while()
++      */
++     int ind_if_for_while = 0;
++ 
+      pos_T    cur_curpos;
+      int              amount;
+      int              scope_amount;
+***************
+*** 6437,6442 ****
+--- 6489,6495 ----
+      int              cont_amount = 0;    /* amount for continuation line */
+      int              original_line_islabel;
+      int              added_to_amount = 0;
++     int              is_if_for_while = 0;
+  
+      for (options = curbuf->b_p_cino; *options; )
+      {
+***************
+*** 6509,6514 ****
+--- 6562,6568 ----
+           case 'l': ind_keep_case_label = n; break;
+           case '#': ind_hash_comment = n; break;
+           case 'N': ind_cpp_namespace = n; break;
++          case 'k': ind_if_for_while = n; break;
+       }
+       if (*options == ',')
+           ++options;
+***************
+*** 6812,6817 ****
+--- 6866,6900 ----
+       if (amount == -1)
+       {
+           int     ignore_paren_col = 0;
++          int     is_if_for_while = 0;
++ 
++          if (ind_if_for_while)
++          {
++              /* Look for the outermost opening parenthesis on this line
++               * and check whether it belongs to an "if", "for" or "while". */
++ 
++              pos_T       cursor_save = curwin->w_cursor;
++              pos_T       outermost;
++              char_u      *line;
++              int         look_col;
++ 
++              trypos = &our_paren_pos;
++              do {
++                  outermost = *trypos;
++                  curwin->w_cursor.lnum = outermost.lnum;
++                  curwin->w_cursor.col = outermost.col;
++ 
++                  trypos = find_match_paren(ind_maxparen, ind_maxcomment);
++              } while (trypos && trypos->lnum == outermost.lnum);
++ 
++              curwin->w_cursor = cursor_save;
++ 
++              line = ml_get(outermost.lnum);
++ 
++              is_if_for_while =
++                  cin_is_if_for_while_before_offset(line, outermost.col,
++                                                    &outermost.col);
++          }
+  
+           amount = skip_label(our_paren_pos.lnum, &look, ind_maxcomment);
+           look = skipwhite(look);
+***************
+*** 6836,6842 ****
+               curwin->w_cursor.lnum = save_lnum;
+               look = ml_get(our_paren_pos.lnum) + look_col;
+           }
+!          if (theline[0] == ')' || ind_unclosed == 0
+                   || (!ind_unclosed_noignore && *look == '('
+                                                   && ignore_paren_col == 0))
+           {
+--- 6919,6925 ----
+               curwin->w_cursor.lnum = save_lnum;
+               look = ml_get(our_paren_pos.lnum) + look_col;
+           }
+!          if (theline[0] == ')' || (ind_unclosed == 0 && is_if_for_while == 0)
+                   || (!ind_unclosed_noignore && *look == '('
+                                                   && ignore_paren_col == 0))
+           {
+***************
+*** 6907,6913 ****
+           {
+               /* Line up with the start of the matching paren line. */
+           }
+!          else if (ind_unclosed == 0 || (!ind_unclosed_noignore
+                                   && *look == '(' && ignore_paren_col == 0))
+           {
+               if (cur_amount != MAXCOL)
+--- 6990,6997 ----
+           {
+               /* Line up with the start of the matching paren line. */
+           }
+!          else if ((ind_unclosed == 0 && is_if_for_while == 0)
+!                   || (!ind_unclosed_noignore
+                                   && *look == '(' && ignore_paren_col == 0))
+           {
+               if (cur_amount != MAXCOL)
+***************
+*** 6943,6949 ****
+                   if (find_match_paren(ind_maxparen, ind_maxcomment) != NULL)
+                       amount += ind_unclosed2;
+                   else
+!                      amount += ind_unclosed;
+               }
+               /*
+                * For a line starting with ')' use the minimum of the two
+--- 7027,7038 ----
+                   if (find_match_paren(ind_maxparen, ind_maxcomment) != NULL)
+                       amount += ind_unclosed2;
+                   else
+!                  {
+!                      if (is_if_for_while)
+!                          amount += ind_if_for_while;
+!                      else
+!                          amount += ind_unclosed;
+!                  }
+               }
+               /*
+                * For a line starting with ')' use the minimum of the two
+*** ../vim-7.3.491/src/testdir/test3.in        2011-12-14 20:21:29.000000000 +0100
+--- src/testdir/test3.in       2012-04-05 17:12:14.000000000 +0200
+***************
+*** 1574,1579 ****
+--- 1574,1793 ----
+  }
+  
+  STARTTEST
++ :set cino=k2s,(0
++ 2kdd3j=][
++ ENDTEST
++ 
++ void func(void)
++ {
++      if (condition1
++      && condition2)
++      action();
++      function(argument1
++      && argument2);
++ 
++      if (c1 && (c2 ||
++      c3))
++      foo;
++      if (c1 &&
++      (c2 || c3))
++      {
++      }
++ 
++      if (   c1
++      && (      c2
++      || c3))
++      foo;
++      func( c1
++      && (     c2
++      || c3))
++      foo;
++ }
++ 
++ STARTTEST
++ :set cino=k2s,(s
++ 2kdd3j=][
++ ENDTEST
++ 
++ void func(void)
++ {
++      if (condition1
++      && condition2)
++      action();
++      function(argument1
++      && argument2);
++ 
++      if (c1 && (c2 ||
++      c3))
++      foo;
++      if (c1 &&
++      (c2 || c3))
++      {
++      }
++ 
++      if (   c1
++      && (      c2
++      || c3))
++      foo;
++      func(   c1
++      && (      c2
++      || c3))
++      foo;
++ }
++ 
++ STARTTEST
++ :set cino=k2s,(s,U1
++ 2kdd3j=][
++ ENDTEST
++ 
++ void func(void)
++ {
++      if (condition1
++      && condition2)
++      action();
++      function(argument1
++      && argument2);
++ 
++      if (c1 && (c2 ||
++      c3))
++      foo;
++      if (c1 &&
++      (c2 || c3))
++      {
++      }
++      if (c123456789
++      && (c22345
++      || c3))
++      printf("foo\n");
++ 
++      c = c1 &&
++      (
++      c2 ||
++      c3
++      ) && c4;
++ }
++ 
++ STARTTEST
++ :set cino=k2s,(0,W4
++ 2kdd3j=][
++ ENDTEST
++ 
++ void func(void)
++ {
++      if (condition1
++      && condition2)
++      action();
++      function(argument1
++      && argument2);
++ 
++      if (c1 && (c2 ||
++      c3))
++      foo;
++      if (c1 &&
++      (c2 || c3))
++      {
++      }
++      if (c123456789
++      && (c22345
++      || c3))
++      printf("foo\n");
++ 
++      if (   c1
++      && (   c2
++      || c3))
++      foo;
++ 
++      a_long_line(
++      argument,
++      argument);
++      a_short_line(argument,
++      argument);
++ }
++ 
++ STARTTEST
++ :set cino=k2s,u2
++ 2kdd3j=][
++ ENDTEST
++ 
++ void func(void)
++ {
++      if (condition1
++      && condition2)
++      action();
++      function(argument1
++      && argument2);
++ 
++      if (c1 && (c2 ||
++      c3))
++      foo;
++      if (c1 &&
++      (c2 || c3))
++      {
++      }
++      if (c123456789
++      && (c22345
++      || c3))
++      printf("foo\n");
++ }
++ 
++ STARTTEST
++ :set cino=k2s,(0,w1
++ 2kdd3j=][
++ ENDTEST
++ 
++ void func(void)
++ {
++      if (condition1
++      && condition2)
++      action();
++      function(argument1
++      && argument2);
++ 
++      if (c1 && (c2 ||
++      c3))
++      foo;
++      if (c1 &&
++      (c2 || c3))
++      {
++      }
++      if (c123456789
++      && (c22345
++      || c3))
++      printf("foo\n");
++ 
++      if (   c1
++      && (      c2
++      || c3))
++      foo;
++      func(   c1
++      && (      c2
++      || c3))
++      foo;
++ }
++ 
++ STARTTEST
++ :set cino=k2,(s
++ 2kdd3j=][
++ ENDTEST
++ 
++ void func(void)
++ {
++      if (condition1
++        && condition2)
++              action();
++      function(argument1
++              && argument2);
++ 
++      if (c1 && (c2 ||
++                c3))
++              foo;
++      if (c1 &&
++        (c2 || c3))
++      {
++      }
++ }
++ 
++ STARTTEST
+  :set cino=N-s
+  /^NAMESPACESTART
+  =/^NAMESPACEEND
+*** ../vim-7.3.491/src/testdir/test3.ok        2011-12-14 20:21:29.000000000 +0100
+--- src/testdir/test3.ok       2012-04-05 17:12:14.000000000 +0200
+***************
+*** 1411,1416 ****
+--- 1411,1602 ----
+  }
+  
+  
++ void func(void)
++ {
++      if (condition1
++                      && condition2)
++              action();
++      function(argument1
++                       && argument2);
++ 
++      if (c1 && (c2 ||
++                              c3))
++              foo;
++      if (c1 &&
++                      (c2 || c3))
++      {
++      }
++ 
++      if (   c1
++                      && (      c2
++                                        || c3))
++              foo;
++      func( c1
++                && (     c2
++                                 || c3))
++              foo;
++ }
++ 
++ 
++ void func(void)
++ {
++      if (condition1
++                      && condition2)
++              action();
++      function(argument1
++              && argument2);
++ 
++      if (c1 && (c2 ||
++                              c3))
++              foo;
++      if (c1 &&
++                      (c2 || c3))
++      {
++      }
++ 
++      if (   c1
++                      && (      c2
++                              || c3))
++              foo;
++      func(   c1
++              && (      c2
++                      || c3))
++              foo;
++ }
++ 
++ 
++ void func(void)
++ {
++      if (condition1
++                      && condition2)
++              action();
++      function(argument1
++              && argument2);
++ 
++      if (c1 && (c2 ||
++                              c3))
++              foo;
++      if (c1 &&
++                      (c2 || c3))
++      {
++      }
++      if (c123456789
++                      && (c22345
++                              || c3))
++              printf("foo\n");
++ 
++      c = c1 &&
++              (
++                      c2 ||
++                      c3
++              ) && c4;
++ }
++ 
++ 
++ void func(void)
++ {
++      if (condition1
++                      && condition2)
++              action();
++      function(argument1
++                       && argument2);
++ 
++      if (c1 && (c2 ||
++                              c3))
++              foo;
++      if (c1 &&
++                      (c2 || c3))
++      {
++      }
++      if (c123456789
++                      && (c22345
++                              || c3))
++              printf("foo\n");
++ 
++      if (   c1
++                      && (   c2
++                                 || c3))
++              foo;
++ 
++      a_long_line(
++              argument,
++              argument);
++      a_short_line(argument,
++                               argument);
++ }
++ 
++ 
++ void func(void)
++ {
++      if (condition1
++                      && condition2)
++              action();
++      function(argument1
++                      && argument2);
++ 
++      if (c1 && (c2 ||
++                        c3))
++              foo;
++      if (c1 &&
++                      (c2 || c3))
++      {
++      }
++      if (c123456789
++                      && (c22345
++                        || c3))
++              printf("foo\n");
++ }
++ 
++ 
++ void func(void)
++ {
++      if (condition1
++                      && condition2)
++              action();
++      function(argument1
++                       && argument2);
++ 
++      if (c1 && (c2 ||
++                              c3))
++              foo;
++      if (c1 &&
++                      (c2 || c3))
++      {
++      }
++      if (c123456789
++                      && (c22345
++                              || c3))
++              printf("foo\n");
++ 
++      if (   c1
++                      && (      c2
++                              || c3))
++              foo;
++      func(   c1
++               && (      c2
++                       || c3))
++              foo;
++ }
++ 
++ 
++ void func(void)
++ {
++      if (condition1
++        && condition2)
++              action();
++      function(argument1
++              && argument2);
++ 
++      if (c1 && (c2 ||
++                c3))
++              foo;
++      if (c1 &&
++        (c2 || c3))
++      {
++      }
++ }
++ 
++ 
+  NAMESPACESTART
+  /* valid namespaces with normal indent */
+  namespace
+*** ../vim-7.3.491/src/version.c       2012-04-05 16:56:38.000000000 +0200
+--- src/version.c      2012-04-05 17:14:18.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     492,
+  /**/
+
+-- 
+You were lucky to have a LAKE! There were a hundred and sixty of
+us living in a small shoebox in the middle of the road.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.493.patch0 b/vim/patches/vim-7.3.493.patch0
new file mode 100644 (file)
index 0000000..ff662b2
--- /dev/null
@@ -0,0 +1,54 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.493
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.493 (after 7.3.492)
+Problem:    Two unused variables.
+Solution:   Remove them. (Hong Xu)
+Files:     src/misc1.c
+
+
+*** ../vim-7.3.492/src/misc1.c 2012-04-05 17:17:38.000000000 +0200
+--- src/misc1.c        2012-04-06 13:49:39.000000000 +0200
+***************
+*** 6489,6495 ****
+      int              cont_amount = 0;    /* amount for continuation line */
+      int              original_line_islabel;
+      int              added_to_amount = 0;
+-     int              is_if_for_while = 0;
+  
+      for (options = curbuf->b_p_cino; *options; )
+      {
+--- 6489,6494 ----
+***************
+*** 6876,6882 ****
+               pos_T       cursor_save = curwin->w_cursor;
+               pos_T       outermost;
+               char_u      *line;
+-              int         look_col;
+  
+               trypos = &our_paren_pos;
+               do {
+--- 6875,6880 ----
+*** ../vim-7.3.492/src/version.c       2012-04-05 17:17:38.000000000 +0200
+--- src/version.c      2012-04-06 13:50:21.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     493,
+  /**/
+
+-- 
+Not too long ago, compress was something you did to garbage...
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.494.patch0 b/vim/patches/vim-7.3.494.patch0
new file mode 100644 (file)
index 0000000..81bd24b
--- /dev/null
@@ -0,0 +1,186 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.494
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.494 (after 7.3.491)
+Problem:    Can't compile with Lua 9.1 or dynamic Lua.
+Solution:   Fix dll_ methods. Fix luado(). (Muraoka Taro, Luis Carvalho)
+Files:     src/if_lua.c
+
+
+*** ../vim-7.3.493/src/if_lua.c        2012-04-05 16:53:56.000000000 +0200
+--- src/if_lua.c       2012-04-06 14:24:06.000000000 +0200
+***************
+*** 95,100 ****
+--- 95,101 ----
+  #define luaL_loadbufferx dll_luaL_loadbufferx
+  #define luaL_argerror dll_luaL_argerror
+  #endif
++ #define luaL_checkany dll_luaL_checkany
+  #define luaL_checklstring dll_luaL_checklstring
+  #define luaL_checkinteger dll_luaL_checkinteger
+  #define luaL_optinteger dll_luaL_optinteger
+***************
+*** 117,124 ****
+  #define lua_pcallk dll_lua_pcallk
+  #define lua_getglobal dll_lua_getglobal
+  #define lua_setglobal dll_lua_setglobal
+- #define lua_typename dll_lua_typename
+  #endif
+  #define lua_close dll_lua_close
+  #define lua_gettop dll_lua_gettop
+  #define lua_settop dll_lua_settop
+--- 118,125 ----
+  #define lua_pcallk dll_lua_pcallk
+  #define lua_getglobal dll_lua_getglobal
+  #define lua_setglobal dll_lua_setglobal
+  #endif
++ #define lua_typename dll_lua_typename
+  #define lua_close dll_lua_close
+  #define lua_gettop dll_lua_gettop
+  #define lua_settop dll_lua_settop
+***************
+*** 151,156 ****
+--- 152,158 ----
+  #define lua_rawset dll_lua_rawset
+  #define lua_rawseti dll_lua_rawseti
+  #define lua_setmetatable dll_lua_setmetatable
++ #define lua_next dll_lua_next
+  /* libs */
+  #define luaopen_base dll_luaopen_base
+  #define luaopen_table dll_luaopen_table
+***************
+*** 177,182 ****
+--- 179,185 ----
+  int (*dll_luaL_loadbufferx) (lua_State *L, const char *buff, size_t sz, const char *name, const char *mode);
+  int (*dll_luaL_argerror) (lua_State *L, int numarg, const char *extramsg);
+  #endif
++ void (*dll_luaL_checkany) (lua_State *L, int narg);
+  const char *(*dll_luaL_checklstring) (lua_State *L, int numArg, size_t *l);
+  lua_Integer (*dll_luaL_checkinteger) (lua_State *L, int numArg);
+  lua_Integer (*dll_luaL_optinteger) (lua_State *L, int nArg, lua_Integer def);
+***************
+*** 201,208 ****
+          int ctx, lua_CFunction k);
+  void (*dll_lua_getglobal) (lua_State *L, const char *var);
+  void (*dll_lua_setglobal) (lua_State *L, const char *var);
+- const char *(*dll_lua_typename) (lua_State *L, int tp);
+  #endif
+  void       (*dll_lua_close) (lua_State *L);
+  int (*dll_lua_gettop) (lua_State *L);
+  void (*dll_lua_settop) (lua_State *L, int idx);
+--- 204,211 ----
+          int ctx, lua_CFunction k);
+  void (*dll_lua_getglobal) (lua_State *L, const char *var);
+  void (*dll_lua_setglobal) (lua_State *L, const char *var);
+  #endif
++ const char *(*dll_lua_typename) (lua_State *L, int tp);
+  void       (*dll_lua_close) (lua_State *L);
+  int (*dll_lua_gettop) (lua_State *L);
+  void (*dll_lua_settop) (lua_State *L, int idx);
+***************
+*** 235,240 ****
+--- 238,244 ----
+  void (*dll_lua_rawset) (lua_State *L, int idx);
+  void (*dll_lua_rawseti) (lua_State *L, int idx, int n);
+  int (*dll_lua_setmetatable) (lua_State *L, int objindex);
++ int (*dll_lua_next) (lua_State *L, int idx);
+  /* libs */
+  int (*dll_luaopen_base) (lua_State *L);
+  int (*dll_luaopen_table) (lua_State *L);
+***************
+*** 268,273 ****
+--- 272,278 ----
+      {"luaL_loadbufferx", (luaV_function) &dll_luaL_loadbufferx},
+      {"luaL_argerror", (luaV_function) &dll_luaL_argerror},
+  #endif
++     {"luaL_checkany", (luaV_function) &dll_luaL_checkany},
+      {"luaL_checklstring", (luaV_function) &dll_luaL_checklstring},
+      {"luaL_checkinteger", (luaV_function) &dll_luaL_checkinteger},
+      {"luaL_optinteger", (luaV_function) &dll_luaL_optinteger},
+***************
+*** 290,297 ****
+      {"lua_pcallk", (luaV_function) &dll_lua_pcallk},
+      {"lua_getglobal", (luaV_function) &dll_lua_getglobal},
+      {"lua_setglobal", (luaV_function) &dll_lua_setglobal},
+-     {"lua_typename", (luaV_function) &dll_lua_typename},
+  #endif
+      {"lua_close", (luaV_function) &dll_lua_close},
+      {"lua_gettop", (luaV_function) &dll_lua_gettop},
+      {"lua_settop", (luaV_function) &dll_lua_settop},
+--- 295,302 ----
+      {"lua_pcallk", (luaV_function) &dll_lua_pcallk},
+      {"lua_getglobal", (luaV_function) &dll_lua_getglobal},
+      {"lua_setglobal", (luaV_function) &dll_lua_setglobal},
+  #endif
++     {"lua_typename", (luaV_function) &dll_lua_typename},
+      {"lua_close", (luaV_function) &dll_lua_close},
+      {"lua_gettop", (luaV_function) &dll_lua_gettop},
+      {"lua_settop", (luaV_function) &dll_lua_settop},
+***************
+*** 324,329 ****
+--- 329,335 ----
+      {"lua_rawset", (luaV_function) &dll_lua_rawset},
+      {"lua_rawseti", (luaV_function) &dll_lua_rawseti},
+      {"lua_setmetatable", (luaV_function) &dll_lua_setmetatable},
++     {"lua_next", (luaV_function) &dll_lua_next},
+      /* libs */
+      {"luaopen_base", (luaV_function) &dll_luaopen_base},
+      {"luaopen_table", (luaV_function) &dll_luaopen_table},
+***************
+*** 1828,1834 ****
+      }
+      luaV_setrange(L, eap->line1, eap->line2);
+      luaL_buffinit(L, &b);
+!     luaL_addlstring(&b, "return function(line) ", 22); /* header */
+      luaL_addlstring(&b, s, strlen(s));
+      luaL_addlstring(&b, " end", 4); /* footer */
+      luaL_pushresult(&b);
+--- 1834,1840 ----
+      }
+      luaV_setrange(L, eap->line1, eap->line2);
+      luaL_buffinit(L, &b);
+!     luaL_addlstring(&b, "return function(line, linenr) ", 30); /* header */
+      luaL_addlstring(&b, s, strlen(s));
+      luaL_addlstring(&b, " end", 4); /* footer */
+      luaL_pushresult(&b);
+***************
+*** 1845,1851 ****
+      {
+       lua_pushvalue(L, -1); /* function */
+       luaV_pushline(L, curbuf, l); /* current line as arg */
+!      if (lua_pcall(L, 1, 1, 0))
+       {
+           luaV_emsg(L);
+           break;
+--- 1851,1858 ----
+      {
+       lua_pushvalue(L, -1); /* function */
+       luaV_pushline(L, curbuf, l); /* current line as arg */
+!      lua_pushinteger(L, l); /* current line number as arg */
+!      if (lua_pcall(L, 2, 1, 0))
+       {
+           luaV_emsg(L);
+           break;
+*** ../vim-7.3.493/src/version.c       2012-04-06 13:56:00.000000000 +0200
+--- src/version.c      2012-04-06 14:25:11.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     494,
+  /**/
+
+-- 
+Why doesn't Tarzan have a beard?
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.495.patch0 b/vim/patches/vim-7.3.495.patch0
new file mode 100644 (file)
index 0000000..54c2306
--- /dev/null
@@ -0,0 +1,124 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.4
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.495 (after 7.3.492)
+Problem:    Compiler warnings.
+Solution:   Add function declaration.  Remove "offset" argument.
+Files:      src/misc1.c
+
+
+*** ../vim-7.3.494/src/misc1.c 2012-04-06 13:56:00.000000000 +0200
+--- src/misc1.c        2012-04-09 20:25:58.000000000 +0200
+***************
+*** 4972,4977 ****
+--- 4972,4978 ----
+  static int   cin_iselse __ARGS((char_u *));
+  static int   cin_isdo __ARGS((char_u *));
+  static int   cin_iswhileofdo __ARGS((char_u *, linenr_T, int));
++ static int   cin_is_if_for_while_before_offset __ARGS((char_u *line, int *poffset));
+  static int   cin_iswhileofdo_end __ARGS((int terminated, int ind_maxparen, int ind_maxcomment));
+  static int   cin_isbreak __ARGS((char_u *));
+  static int   cin_is_cpp_baseclass __ARGS((colnr_T *col));
+***************
+*** 5771,5787 ****
+  }
+  
+  /*
+!  * Check whether in "p" there is an "if", "for" or "while" before offset.
+   * Return 0 if there is none.
+   * Otherwise return !0 and update "*poffset" to point to the place where the
+   * string was found.
+   */
+      static int
+! cin_is_if_for_while_before_offset(line, offset, poffset)
+      char_u *line;
+-     size_t offset;
+      int    *poffset;
+  {
+  
+      if (offset-- < 2)
+       return 0;
+--- 5772,5788 ----
+  }
+  
+  /*
+!  * Check whether in "p" there is an "if", "for" or "while" before "*poffset".
+   * Return 0 if there is none.
+   * Otherwise return !0 and update "*poffset" to point to the place where the
+   * string was found.
+   */
+      static int
+! cin_is_if_for_while_before_offset(line, poffset)
+      char_u *line;
+      int    *poffset;
+  {
++     int offset = *poffset;
+  
+      if (offset-- < 2)
+       return 0;
+***************
+*** 5805,5812 ****
+               goto probablyFound;
+       }
+      }
+- 
+      return 0;
+  probablyFound:
+      if (!offset || !vim_isIDc(line[offset - 1]))
+      {
+--- 5806,5813 ----
+               goto probablyFound;
+       }
+      }
+      return 0;
++ 
+  probablyFound:
+      if (!offset || !vim_isIDc(line[offset - 1]))
+      {
+***************
+*** 6890,6897 ****
+               line = ml_get(outermost.lnum);
+  
+               is_if_for_while =
+!                  cin_is_if_for_while_before_offset(line, outermost.col,
+!                                                    &outermost.col);
+           }
+  
+           amount = skip_label(our_paren_pos.lnum, &look, ind_maxcomment);
+--- 6891,6897 ----
+               line = ml_get(outermost.lnum);
+  
+               is_if_for_while =
+!                  cin_is_if_for_while_before_offset(line, &outermost.col);
+           }
+  
+           amount = skip_label(our_paren_pos.lnum, &look, ind_maxcomment);
+*** ../vim-7.3.494/src/version.c       2012-04-06 14:30:55.000000000 +0200
+--- src/version.c      2012-04-09 20:41:44.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     495,
+  /**/
+
+-- 
+    [clop clop]
+GUARD #1:  Halt!  Who goes there?
+ARTHUR:    It is I, Arthur, son of Uther Pendragon, from the castle of
+           Camelot.  King of the Britons, defeator of the Saxons, sovereign of
+           all England!
+GUARD #1:  Pull the other one!
+                                  The Quest for the Holy Grail (Monty Python)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.496.patch0 b/vim/patches/vim-7.3.496.patch0
new file mode 100644 (file)
index 0000000..8b11051
--- /dev/null
@@ -0,0 +1,69 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.496
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.496
+Problem:    MS-DOS: When "diff" trips over difference in line separators some
+           tests fail.
+Solution:   Make some .ok files use unix line separators. (David Pope)
+Files:     src/testdir/Make_dos.mak, src/testdir/Make_ming.mak
+
+
+*** ../vim-7.3.495/src/testdir/Make_dos.mak    2012-04-05 16:56:38.000000000 +0200
+--- src/testdir/Make_dos.mak   2012-04-09 21:23:43.000000000 +0200
+***************
+*** 52,58 ****
+  
+  fixff:
+       -$(VIMPROG) -u dos.vim --noplugin "+argdo set ff=dos|upd" +q *.in *.ok
+!      -$(VIMPROG) -u dos.vim --noplugin "+argdo set ff=unix|upd" +q dotest.in
+  
+  clean:
+       -del *.out
+--- 52,59 ----
+  
+  fixff:
+       -$(VIMPROG) -u dos.vim --noplugin "+argdo set ff=dos|upd" +q *.in *.ok
+!      -$(VIMPROG) -u dos.vim --noplugin "+argdo set ff=unix|upd" +q \
+!              dotest.in test60.ok test71.ok test74.ok
+  
+  clean:
+       -del *.out
+*** ../vim-7.3.495/src/testdir/Make_ming.mak   2012-04-05 16:56:38.000000000 +0200
+--- src/testdir/Make_ming.mak  2012-04-09 21:25:55.000000000 +0200
+***************
+*** 75,80 ****
+--- 75,82 ----
+  
+  fixff:
+       -$(VIMPROG) -u dos.vim --noplugin "+argdo set ff=dos|upd" +q *.in *.ok
++      -$(VIMPROG) -u dos.vim --noplugin "+argdo set ff=unix|upd" +q \
++              dotest.in test60.ok test71.ok test74.ok
+  
+  clean:
+       -$(DEL) *.out
+*** ../vim-7.3.495/src/version.c       2012-04-09 20:42:20.000000000 +0200
+--- src/version.c      2012-04-13 19:10:04.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     496,
+  /**/
+
+-- 
+There are 2 kinds of people in my world: those who know Unix, Perl, Vim, GNU,
+Linux, etc, and those who know COBOL.  It gets very difficult for me at
+parties, not knowing which group to socialise with :-)
+                                               Sitaram Chamarty
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.497.patch0 b/vim/patches/vim-7.3.497.patch0
new file mode 100644 (file)
index 0000000..5cbffc4
--- /dev/null
@@ -0,0 +1,50 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.497
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.497
+Problem:    Crash when doing ":python print" and compiled with gcc and
+           the optimizer enabled.
+Solution:   Avoid the crash, doesn't really fix the problem. (Christian
+           Brabandt)
+Files:     src/if_py_both.h
+
+
+*** ../vim-7.3.496/src/if_py_both.h    2012-02-04 20:17:21.000000000 +0100
+--- src/if_py_both.h   2012-04-20 13:24:31.000000000 +0200
+***************
+*** 77,82 ****
+--- 77,87 ----
+      if (!PyArg_ParseTuple(args, "et#", ENC_OPT, &str, &len))
+       return NULL;
+  
++     /* TODO: This works around a gcc optimizer problem and avoids Vim
++      * from crashing.  Should find a real solution. */
++     if (str == NULL)
++      return NULL;
++ 
+      Py_BEGIN_ALLOW_THREADS
+      Python_Lock_Vim();
+      writer((writefn)(error ? emsg : msg), (char_u *)str, len);
+*** ../vim-7.3.496/src/version.c       2012-04-13 19:11:16.000000000 +0200
+--- src/version.c      2012-04-20 13:26:22.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     497,
+  /**/
+
+-- 
+There can't be a crisis today, my schedule is already full.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.498.patch0 b/vim/patches/vim-7.3.498.patch0
new file mode 100644 (file)
index 0000000..aa9c621
--- /dev/null
@@ -0,0 +1,63 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.498
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.498
+Problem:    The behavior of the "- register changes depending on value of
+           the 'clipboard' option. (Szamotulski)
+Solution:   Also set the "- register when the register is "*" or "+".
+           (Christian Brabandt)
+Files:     src/ops.c
+
+
+*** ../vim-7.3.497/src/ops.c   2012-03-23 14:16:19.000000000 +0100
+--- src/ops.c  2012-04-20 13:36:32.000000000 +0200
+***************
+*** 1720,1728 ****
+               did_yank = TRUE;
+       }
+  
+!      /* Yank into small delete register when no register specified and the
+!       * delete is within one line. */
+!      if (oap->regname == 0 && oap->motion_type != MLINE
+                                                     && oap->line_count == 1)
+       {
+           oap->regname = '-';
+--- 1720,1733 ----
+               did_yank = TRUE;
+       }
+  
+!      /* Yank into small delete register when no named register specified
+!       * and the delete is within one line. */
+!      if ((
+! #ifdef FEAT_CLIPBOARD
+!             ((clip_unnamed & CLIP_UNNAMED) && oap->regname == '*') ||
+!             ((clip_unnamed & CLIP_UNNAMED_PLUS) && oap->regname == '+') ||
+! #endif
+!          oap->regname == 0) && oap->motion_type != MLINE
+                                                     && oap->line_count == 1)
+       {
+           oap->regname = '-';
+*** ../vim-7.3.497/src/version.c       2012-04-20 13:31:16.000000000 +0200
+--- src/version.c      2012-04-20 13:45:26.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     498,
+  /**/
+
+-- 
+Did you ever stop to think...  and forget to start again?
+                                  -- Steven Wright
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.499.patch0 b/vim/patches/vim-7.3.499.patch0
new file mode 100644 (file)
index 0000000..4e45e4f
--- /dev/null
@@ -0,0 +1,84 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.499
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.499
+Problem:    When using any interface language when Vim is waiting for a child
+           process it gets confused by a child process started through the
+           interface.
+Solution:   Always used waitpid() instead of wait(). (Yasuhiro Matsumoto)
+Files:      src/os_unix.c
+
+
+*** ../vim-7.3.498/src/os_unix.c       2012-02-05 22:51:27.000000000 +0100
+--- src/os_unix.c      2012-04-20 15:47:17.000000000 +0200
+***************
+*** 3734,3757 ****
+  
+      while (wait_pid != child)
+      {
+! # ifdef _THREAD_SAFE
+!      /* Ugly hack: when compiled with Python threads are probably
+!       * used, in which case wait() sometimes hangs for no obvious
+!       * reason.  Use waitpid() instead and loop (like the GUI). */
+! #  ifdef __NeXT__
+       wait_pid = wait4(child, status, WNOHANG, (struct rusage *)0);
+! #  else
+       wait_pid = waitpid(child, status, WNOHANG);
+! #  endif
+       if (wait_pid == 0)
+       {
+           /* Wait for 1/100 sec before trying again. */
+           mch_delay(10L, TRUE);
+           continue;
+       }
+- # else
+-      wait_pid = wait(status);
+- # endif
+       if (wait_pid <= 0
+  # ifdef ECHILD
+               && errno == ECHILD
+--- 3734,3754 ----
+  
+      while (wait_pid != child)
+      {
+!      /* When compiled with Python threads are probably used, in which case
+!       * wait() sometimes hangs for no obvious reason.  Use waitpid()
+!       * instead and loop (like the GUI). Also needed for other interfaces,
+!       * they might call system(). */
+! # ifdef __NeXT__
+       wait_pid = wait4(child, status, WNOHANG, (struct rusage *)0);
+! # else
+       wait_pid = waitpid(child, status, WNOHANG);
+! # endif
+       if (wait_pid == 0)
+       {
+           /* Wait for 1/100 sec before trying again. */
+           mch_delay(10L, TRUE);
+           continue;
+       }
+       if (wait_pid <= 0
+  # ifdef ECHILD
+               && errno == ECHILD
+*** ../vim-7.3.498/src/version.c       2012-04-20 13:46:02.000000000 +0200
+--- src/version.c      2012-04-20 15:54:05.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     499,
+  /**/
+
+-- 
+It's not hard to meet expenses, they're everywhere.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.500.patch0 b/vim/patches/vim-7.3.500.patch0
new file mode 100644 (file)
index 0000000..b3b6a37
--- /dev/null
@@ -0,0 +1,46 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.500
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.500
+Problem:    Ming makefile unconditionally sets WINVER.
+Solution:   Only defined when not already defined. (Yasuhiro Matsumoto)
+Files:     src/Make_ming.mak
+
+
+*** ../vim-7.3.499/src/Make_ming.mak   2012-03-28 17:43:06.000000000 +0200
+--- src/Make_ming.mak  2012-04-20 16:03:50.000000000 +0200
+***************
+*** 51,57 ****
+--- 51,59 ----
+  # set to yes to enable OLE support
+  OLE=no
+  # Set the default $(WINVER) to make it work with pre-Win2k
++ ifndef WINVER
+  WINVER = 0x0400
++ endif
+  # Set to yes to enable Cscope support
+  CSCOPE=yes
+  # Set to yes to enable Netbeans support
+*** ../vim-7.3.499/src/version.c       2012-04-20 15:55:10.000000000 +0200
+--- src/version.c      2012-04-20 16:12:34.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     500,
+  /**/
+
+-- 
+Life is a gift, living is an art.              (Bram Moolenaar)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.501.patch0 b/vim/patches/vim-7.3.501.patch0
new file mode 100644 (file)
index 0000000..a74b028
--- /dev/null
@@ -0,0 +1,63 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.501
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.501
+Problem:    Error for "flush" not being defined when using Ruby command.
+Solution:   Defined "flush" as a no-op method. (Kent Sibilev)
+Files:     src/if_ruby.c
+
+
+*** ../vim-7.3.500/src/if_ruby.c       2011-08-04 19:34:55.000000000 +0200
+--- src/if_ruby.c      2012-04-20 16:18:56.000000000 +0200
+***************
+*** 1238,1243 ****
+--- 1238,1248 ----
+      return Qnil;
+  }
+  
++ static VALUE f_nop(VALUE self)
++ {
++     return Qnil;
++ }
++ 
+  static VALUE f_p(int argc, VALUE *argv, VALUE self UNUSED)
+  {
+      int i;
+***************
+*** 1259,1264 ****
+--- 1264,1270 ----
+  
+      rb_stdout = rb_obj_alloc(rb_cObject);
+      rb_define_singleton_method(rb_stdout, "write", vim_message, 1);
++     rb_define_singleton_method(rb_stdout, "flush", f_nop, 0);
+      rb_define_global_function("p", f_p, -1);
+  }
+  
+*** ../vim-7.3.500/src/version.c       2012-04-20 16:13:21.000000000 +0200
+--- src/version.c      2012-04-20 16:19:03.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     501,
+  /**/
+
+-- 
+Q: What do you call a fish without an eye?
+A: fsh!
+Q: What do you call a deer with no eyes?
+A: no eye deer.
+Q: What do you call a deer with no eyes and no legs?
+A: still no eye deer.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.502.patch0 b/vim/patches/vim-7.3.502.patch0
new file mode 100644 (file)
index 0000000..c9710ab
--- /dev/null
@@ -0,0 +1,67 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.502
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.502
+Problem:    Netbeans insert halfway a line actually appends to the line.
+Solution:   Insert halfway the line. (Brian Victor)
+Files:     src/netbeans.c
+
+
+*** ../vim-7.3.501/src/netbeans.c      2012-01-10 22:31:26.000000000 +0100
+--- src/netbeans.c     2012-04-20 19:44:31.000000000 +0200
+***************
+*** 1812,1825 ****
+                       char_u *oldline = ml_get(lnum);
+                       char_u *newline;
+  
+!                      /* Insert halfway a line.  For simplicity we assume we
+!                       * need to append to the line. */
+                       newline = alloc_check(
+                                      (unsigned)(STRLEN(oldline) + len + 1));
+                       if (newline != NULL)
+                       {
+!                          STRCPY(newline, oldline);
+                           STRCAT(newline, args);
+                           ml_replace(lnum, newline, FALSE);
+                       }
+                   }
+--- 1812,1826 ----
+                       char_u *oldline = ml_get(lnum);
+                       char_u *newline;
+  
+!                      /* Insert halfway a line. */
+                       newline = alloc_check(
+                                      (unsigned)(STRLEN(oldline) + len + 1));
+                       if (newline != NULL)
+                       {
+!                          mch_memmove(newline, oldline, (size_t)pos->col);
+!                          newline[pos->col] = NUL;
+                           STRCAT(newline, args);
++                          STRCAT(newline, oldline + pos->col);
+                           ml_replace(lnum, newline, FALSE);
+                       }
+                   }
+*** ../vim-7.3.501/src/version.c       2012-04-20 18:05:42.000000000 +0200
+--- src/version.c      2012-04-20 19:46:48.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     502,
+  /**/
+
+-- 
+Time flies like an arrow.
+Fruit flies like a banana.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.503.patch0 b/vim/patches/vim-7.3.503.patch0
new file mode 100644 (file)
index 0000000..5b776ae
--- /dev/null
@@ -0,0 +1,51 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.503
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.503 (after 7.3.501)
+Problem:    Warning for unused argument.
+Solution:   Add UNUSED.
+Files:     src/if_ruby.c
+
+
+*** ../vim-7.3.502/src/if_ruby.c       2012-04-20 18:05:42.000000000 +0200
+--- src/if_ruby.c      2012-04-25 12:26:38.000000000 +0200
+***************
+*** 1238,1244 ****
+      return Qnil;
+  }
+  
+! static VALUE f_nop(VALUE self)
+  {
+      return Qnil;
+  }
+--- 1238,1244 ----
+      return Qnil;
+  }
+  
+! static VALUE f_nop(VALUE self UNUSED)
+  {
+      return Qnil;
+  }
+*** ../vim-7.3.502/src/version.c       2012-04-20 19:47:00.000000000 +0200
+--- src/version.c      2012-04-25 12:27:30.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     503,
+  /**/
+
+-- 
+Why isn't there mouse-flavored cat food?
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.504.patch0 b/vim/patches/vim-7.3.504.patch0
new file mode 100644 (file)
index 0000000..7522790
--- /dev/null
@@ -0,0 +1,87 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.504
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.504
+Problem:    Commands in help files are not highlighted.
+Solution:   Allow for commands in backticks.  Adjust CTRL-] to remove the
+           backticks.
+Files:     src/ex_cmds.c
+
+
+*** ../vim-7.3.503/src/ex_cmds.c       2012-04-05 16:04:58.000000000 +0200
+--- src/ex_cmds.c      2012-04-25 12:51:41.000000000 +0200
+***************
+*** 3421,3427 ****
+                    * and re-attach to buffer, perhaps.
+                    */
+                   if (curwin->w_s == &(curwin->w_buffer->b_s))
+!                          curwin->w_s = &(buf->b_s);
+  #endif
+                   curwin->w_buffer = buf;
+                   curbuf = buf;
+--- 3421,3427 ----
+                    * and re-attach to buffer, perhaps.
+                    */
+                   if (curwin->w_s == &(curwin->w_buffer->b_s))
+!                      curwin->w_s = &(buf->b_s);
+  #endif
+                   curwin->w_buffer = buf;
+                   curbuf = buf;
+***************
+*** 5965,5970 ****
+--- 5965,5993 ----
+               break;
+         }
+         *d = NUL;
++ 
++        if (*IObuff == '`')
++        {
++            if (d > IObuff + 2 && d[-1] == '`')
++            {
++                /* remove the backticks from `command` */
++                mch_memmove(IObuff, IObuff + 1, STRLEN(IObuff));
++                d[-2] = NUL;
++            }
++            else if (d > IObuff + 3 && d[-2] == '`' && d[-1] == ',')
++            {
++                /* remove the backticks and comma from `command`, */
++                mch_memmove(IObuff, IObuff + 1, STRLEN(IObuff));
++                d[-3] = NUL;
++            }
++            else if (d > IObuff + 4 && d[-3] == '`'
++                                           && d[-2] == '\\' && d[-1] == '.')
++            {
++                /* remove the backticks and dot from `command`\. */
++                mch_memmove(IObuff, IObuff + 1, STRLEN(IObuff));
++                d[-4] = NUL;
++            }
++        }
+       }
+      }
+  
+*** ../vim-7.3.503/src/version.c       2012-04-25 12:28:05.000000000 +0200
+--- src/version.c      2012-04-25 12:46:43.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     504,
+  /**/
+
+-- 
+TIM:   That is not an ordinary rabbit ... 'tis the most foul cruel and
+       bad-tempered thing you ever set eyes on.
+ROBIN: You tit.  I soiled my armour I was so scared!
+                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.505.patch0 b/vim/patches/vim-7.3.505.patch0
new file mode 100644 (file)
index 0000000..1a8a7ea
--- /dev/null
@@ -0,0 +1,116 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.505
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.505
+Problem:    Test 11 fails on MS-Windows in some versions.
+Solution:   Fix #ifdefs for whether filtering through a pipe is possible. Move
+           setting b_no_eol_lnum back to where it was before patch 7.3.124.
+           (David Pope)
+Files:     src/feature.h, src/eval.c, src/ex_cmds.c, src/fileio.c
+
+
+*** ../vim-7.3.504/src/feature.h       2011-10-20 21:09:25.000000000 +0200
+--- src/feature.h      2012-04-25 16:44:26.000000000 +0200
+***************
+*** 1316,1318 ****
+--- 1316,1326 ----
+  #ifdef FEAT_NORMAL
+  # define FEAT_PERSISTENT_UNDO
+  #endif
++ 
++ /*
++  * +filterpipe
++  */
++ #if (defined(UNIX) && !defined(USE_SYSTEM)) \
++          || (defined(WIN3264) && defined(FEAT_GUI_W32))
++ # define FEAT_FILTERPIPE
++ #endif
+*** ../vim-7.3.504/src/eval.c  2012-04-05 16:53:55.000000000 +0200
+--- src/eval.c 2012-04-25 16:43:53.000000000 +0200
+***************
+*** 12090,12096 ****
+  #ifdef FEAT_SEARCHPATH
+       "file_in_path",
+  #endif
+! #if (defined(UNIX) && !defined(USE_SYSTEM)) || defined(WIN3264)
+       "filterpipe",
+  #endif
+  #ifdef FEAT_FIND_ID
+--- 12090,12096 ----
+  #ifdef FEAT_SEARCHPATH
+       "file_in_path",
+  #endif
+! #ifdef FEAT_FILTERPIPE
+       "filterpipe",
+  #endif
+  #ifdef FEAT_FIND_ID
+*** ../vim-7.3.504/src/ex_cmds.c       2012-04-25 12:57:23.000000000 +0200
+--- src/ex_cmds.c      2012-04-25 16:46:02.000000000 +0200
+***************
+*** 1113,1119 ****
+      if (do_out)
+       shell_flags |= SHELL_DOOUT;
+  
+! #if (!defined(USE_SYSTEM) && defined(UNIX)) || defined(WIN3264)
+      if (!do_in && do_out && !p_stmp)
+      {
+       /* Use a pipe to fetch stdout of the command, do not use a temp file. */
+--- 1113,1119 ----
+      if (do_out)
+       shell_flags |= SHELL_DOOUT;
+  
+! #ifdef FEAT_FILTERPIPE
+      if (!do_in && do_out && !p_stmp)
+      {
+       /* Use a pipe to fetch stdout of the command, do not use a temp file. */
+*** ../vim-7.3.504/src/fileio.c        2012-02-29 18:22:03.000000000 +0100
+--- src/fileio.c       2012-04-25 16:40:37.000000000 +0200
+***************
+*** 2655,2664 ****
+      }
+  #endif
+  
+-     /* Reset now, following writes should not omit the EOL.  Also, the line
+-      * number will become invalid because of edits. */
+-     curbuf->b_no_eol_lnum = 0;
+- 
+      if (recoverymode && error)
+       return FAIL;
+      return OK;
+--- 2655,2660 ----
+***************
+*** 5098,5103 ****
+--- 5094,5101 ----
+      {
+       aco_save_T      aco;
+  
++      curbuf->b_no_eol_lnum = 0;  /* in case it was set by the previous read */
++ 
+       /*
+        * Apply POST autocommands.
+        * Careful: The autocommands may call buf_write() recursively!
+*** ../vim-7.3.504/src/version.c       2012-04-25 12:57:23.000000000 +0200
+--- src/version.c      2012-04-25 16:49:50.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     505,
+  /**/
+
+-- 
+Lose weight, NEVER Diet again with
+                  The "Invisible Weight Loss Patch"
+                                               (spam e-mail)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.506.patch0 b/vim/patches/vim-7.3.506.patch0
new file mode 100644 (file)
index 0000000..32be6fd
--- /dev/null
@@ -0,0 +1,100 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.506
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.506
+Problem:    GTK gives an error when selecting a non-existent file.
+Solution:   Add a handler to avoid the error. (Christian Brabandt)
+Files:     src/gui_gtk.c
+
+
+*** ../vim-7.3.505/src/gui_gtk.c       2011-06-26 04:48:56.000000000 +0200
+--- src/gui_gtk.c      2012-04-25 17:08:58.000000000 +0200
+***************
+*** 90,95 ****
+--- 90,100 ----
+  static void entry_activate_cb(GtkWidget *widget, gpointer data);
+  static void entry_changed_cb(GtkWidget *entry, GtkWidget *dialog);
+  static void find_replace_cb(GtkWidget *widget, gpointer data);
++ static void recent_func_log_func(
++      const gchar *log_domain,
++      GLogLevelFlags log_level,
++      const gchar *message,
++      gpointer user_data);
+  
+  #if defined(FEAT_TOOLBAR)
+  /*
+***************
+*** 839,844 ****
+--- 844,851 ----
+      GtkWidget                *fc;
+  #endif
+      char_u           dirbuf[MAXPATHL];
++     guint            log_handler;
++     const gchar              *domain = "Gtk";
+  
+      title = CONVERT_TO_UTF8(title);
+  
+***************
+*** 853,858 ****
+--- 860,870 ----
+      /* If our pointer is currently hidden, then we should show it. */
+      gui_mch_mousehide(FALSE);
+  
++     /* Hack: The GTK file dialog warns when it can't access a new file, this
++      * makes it shut up. http://bugzilla.gnome.org/show_bug.cgi?id=664587 */
++     log_handler = g_log_set_handler(domain, G_LOG_LEVEL_WARNING,
++                                                recent_func_log_func, NULL);
++ 
+  #ifdef USE_FILE_CHOOSER
+      /* We create the dialog each time, so that the button text can be "Open"
+       * or "Save" according to the action. */
+***************
+*** 916,921 ****
+--- 928,934 ----
+      gtk_widget_show(gui.filedlg);
+      gtk_main();
+  #endif
++     g_log_remove_handler(domain, log_handler);
+  
+      CONVERT_TO_UTF8_FREE(title);
+      if (gui.browse_fname == NULL)
+***************
+*** 1882,1884 ****
+--- 1895,1908 ----
+       * backwards compatibility anyway. */
+      do_cmdline_cmd((char_u *)"emenu ToolBar.FindHelp");
+  }
++ 
++     static void
++ recent_func_log_func(const gchar *log_domain UNUSED,
++                   GLogLevelFlags log_level UNUSED,
++                   const gchar *message UNUSED,
++                   gpointer user_data UNUSED)
++ {
++     /* We just want to suppress the warnings. */
++     /* http://bugzilla.gnome.org/show_bug.cgi?id=664587 */
++ }
++ 
+*** ../vim-7.3.505/src/version.c       2012-04-25 16:50:44.000000000 +0200
+--- src/version.c      2012-04-25 17:08:28.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     506,
+  /**/
+
+-- 
+Compilation process failed successfully.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.507.patch0 b/vim/patches/vim-7.3.507.patch0
new file mode 100644 (file)
index 0000000..c96561c
--- /dev/null
@@ -0,0 +1,149 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.507
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.507
+Problem:    When exiting with unsaved changes, selecting an existing file in
+           the file dialog, there is no dialog to ask whether the existing
+           file should be overwritten. (Felipe G. Nievinski)
+Solution:   Call check_overwrite() before writing. (Christian Brabandt)
+Files:     src/ex_cmds.c, src/ex_cmds2.c, src/proto/ex_cmds.pro
+
+
+*** ../vim-7.3.506/src/ex_cmds.c       2012-04-25 16:50:44.000000000 +0200
+--- src/ex_cmds.c      2012-04-25 17:19:53.000000000 +0200
+***************
+*** 25,31 ****
+  static int read_viminfo_up_to_marks __ARGS((vir_T *virp, int forceit, int writing));
+  #endif
+  
+- static int check_overwrite __ARGS((exarg_T *eap, buf_T *buf, char_u *fname, char_u *ffname, int other));
+  static int check_readonly __ARGS((int *forceit, buf_T *buf));
+  #ifdef FEAT_AUTOCMD
+  static void delbuf_msg __ARGS((char_u *name));
+--- 25,30 ----
+***************
+*** 2722,2728 ****
+   * May set eap->forceit if a dialog says it's OK to overwrite.
+   * Return OK if it's OK, FAIL if it is not.
+   */
+!     static int
+  check_overwrite(eap, buf, fname, ffname, other)
+      exarg_T  *eap;
+      buf_T    *buf;
+--- 2721,2727 ----
+   * May set eap->forceit if a dialog says it's OK to overwrite.
+   * Return OK if it's OK, FAIL if it is not.
+   */
+!     int
+  check_overwrite(eap, buf, fname, ffname, other)
+      exarg_T  *eap;
+      buf_T    *buf;
+*** ../vim-7.3.506/src/ex_cmds2.c      2012-03-23 18:39:10.000000000 +0100
+--- src/ex_cmds2.c     2012-04-25 17:24:37.000000000 +0200
+***************
+*** 1489,1494 ****
+--- 1489,1495 ----
+      char_u   buff[DIALOG_MSG_SIZE];
+      int              ret;
+      buf_T    *buf2;
++     exarg_T     ea;
+  
+      dialog_msg(buff, _("Save changes to \"%s\"?"),
+                       (buf->b_fname != NULL) ?
+***************
+*** 1498,1510 ****
+      else
+       ret = vim_dialog_yesnocancel(VIM_QUESTION, NULL, buff, 1);
+  
+      if (ret == VIM_YES)
+      {
+  #ifdef FEAT_BROWSE
+       /* May get file name, when there is none */
+       browse_save_fname(buf);
+  #endif
+!      if (buf->b_fname != NULL)   /* didn't hit Cancel */
+           (void)buf_write_all(buf, FALSE);
+      }
+      else if (ret == VIM_NO)
+--- 1499,1517 ----
+      else
+       ret = vim_dialog_yesnocancel(VIM_QUESTION, NULL, buff, 1);
+  
++     /* Init ea pseudo-structure, this is needed for the check_overwrite()
++      * function. */
++     ea.append = ea.forceit = FALSE;
++ 
+      if (ret == VIM_YES)
+      {
+  #ifdef FEAT_BROWSE
+       /* May get file name, when there is none */
+       browse_save_fname(buf);
+  #endif
+!      if (buf->b_fname != NULL && check_overwrite(&ea, buf,
+!                                  buf->b_fname, buf->b_ffname, FALSE) == OK)
+!          /* didn't hit Cancel */
+           (void)buf_write_all(buf, FALSE);
+      }
+      else if (ret == VIM_NO)
+***************
+*** 1532,1538 ****
+               /* May get file name, when there is none */
+               browse_save_fname(buf2);
+  #endif
+!              if (buf2->b_fname != NULL)   /* didn't hit Cancel */
+                   (void)buf_write_all(buf2, FALSE);
+  #ifdef FEAT_AUTOCMD
+               /* an autocommand may have deleted the buffer */
+--- 1539,1547 ----
+               /* May get file name, when there is none */
+               browse_save_fname(buf2);
+  #endif
+!              if (buf2->b_fname != NULL && check_overwrite(&ea, buf2,
+!                                buf2->b_fname, buf2->b_ffname, FALSE) == OK)
+!                  /* didn't hit Cancel */
+                   (void)buf_write_all(buf2, FALSE);
+  #ifdef FEAT_AUTOCMD
+               /* an autocommand may have deleted the buffer */
+*** ../vim-7.3.506/src/proto/ex_cmds.pro       2010-08-15 21:57:28.000000000 +0200
+--- src/proto/ex_cmds.pro      2012-04-25 17:25:47.000000000 +0200
+***************
+*** 23,28 ****
+--- 23,29 ----
+  void ex_update __ARGS((exarg_T *eap));
+  void ex_write __ARGS((exarg_T *eap));
+  int do_write __ARGS((exarg_T *eap));
++ int check_overwrite __ARGS((exarg_T *eap, buf_T *buf, char_u *fname, char_u *ffname, int other));
+  void ex_wnext __ARGS((exarg_T *eap));
+  void do_wqall __ARGS((exarg_T *eap));
+  int not_writing __ARGS((void));
+*** ../vim-7.3.506/src/version.c       2012-04-25 17:10:12.000000000 +0200
+--- src/version.c      2012-04-25 17:17:30.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     507,
+  /**/
+
+-- 
+BROTHER MAYNARD: Armaments Chapter Two Verses Nine to Twenty One.
+ANOTHER MONK:    And St.  Attila raised his hand grenade up on high saying "O
+                 Lord bless this thy hand grenade that with it thou mayest
+                 blow thine enemies to tiny bits, in thy mercy. "and the Lord
+                 did grin and people did feast upon the lambs and sloths and
+                 carp and anchovies and orang-utans and breakfast cereals and
+                 fruit bats and...
+BROTHER MAYNARD: Skip a bit brother ...
+                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.508.patch0 b/vim/patches/vim-7.3.508.patch0
new file mode 100644 (file)
index 0000000..7b8e7b2
--- /dev/null
@@ -0,0 +1,85 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.508
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.508
+Problem:    Default for v:register is not set.
+Solution:   Init v:register in eval_init(). Correct for 'clipboard' before the
+           main loop. (Ingo Karkat)
+Files:     src/eval.c, src/main.c
+
+
+*** ../vim-7.3.507/src/eval.c  2012-04-25 16:50:44.000000000 +0200
+--- src/eval.c 2012-04-25 17:56:41.000000000 +0200
+***************
+*** 880,885 ****
+--- 880,886 ----
+           hash_add(&compat_hashtab, p->vv_di.di_key);
+      }
+      set_vim_var_nr(VV_SEARCHFORWARD, 1L);
++     set_reg_var(0);  /* default for v:register is not 0 but '"' */
+  
+  #ifdef EBCDIC
+      /*
+*** ../vim-7.3.507/src/main.c  2012-03-28 17:10:26.000000000 +0200
+--- src/main.c 2012-04-25 18:01:28.000000000 +0200
+***************
+*** 928,933 ****
+--- 928,945 ----
+      TIME_MSG("VimEnter autocommands");
+  #endif
+  
++ #if defined(FEAT_EVAL) && defined(FEAT_CLIPBOARD)
++     /* Adjust default register name for "unnamed" in 'clipboard'. Can only be
++      * done after the clipboard is available and all initial commands that may
++      * modify the 'clipboard' setting have run; i.e. just before entering the
++      * main loop. */
++     {
++      int default_regname = 0;
++      adjust_clip_reg(&default_regname);
++      set_reg_var(default_regname);
++     }
++ #endif
++ 
+  #if defined(FEAT_DIFF) && defined(FEAT_SCROLLBIND)
+      /* When a startup script or session file setup for diff'ing and
+       * scrollbind, sync the scrollbind now. */
+***************
+*** 1357,1363 ****
+               {
+                   apply_autocmds(EVENT_BUFWINLEAVE, buf->b_fname,
+                                                   buf->b_fname, FALSE, buf);
+!                  buf->b_changedtick = -1;    /* note that we did it already */
+                   /* start all over, autocommands may mess up the lists */
+                   next_tp = first_tabpage;
+                   break;
+--- 1369,1375 ----
+               {
+                   apply_autocmds(EVENT_BUFWINLEAVE, buf->b_fname,
+                                                   buf->b_fname, FALSE, buf);
+!                  buf->b_changedtick = -1;  /* note that we did it already */
+                   /* start all over, autocommands may mess up the lists */
+                   next_tp = first_tabpage;
+                   break;
+*** ../vim-7.3.507/src/version.c       2012-04-25 17:32:14.000000000 +0200
+--- src/version.c      2012-04-25 18:00:28.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     508,
+  /**/
+
+-- 
+I wonder, do vegetarians eat fruit bats?
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.509.patch0 b/vim/patches/vim-7.3.509.patch0
new file mode 100644 (file)
index 0000000..8dfe9c0
--- /dev/null
@@ -0,0 +1,304 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.509
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.509
+Problem:    ":vimgrep" fails when 'autochdir' is set.
+Solution:   A more generic solution for changing directory. (Ben Fritz)
+Files:     src/quickfix.c
+
+
+*** ../vim-7.3.508/src/quickfix.c      2012-03-07 20:13:44.000000000 +0100
+--- src/quickfix.c     2012-04-25 18:52:24.000000000 +0200
+***************
+*** 130,138 ****
+  static void  qf_fill_buffer __ARGS((qf_info_T *qi));
+  #endif
+  static char_u        *get_mef_name __ARGS((void));
+! static buf_T *load_dummy_buffer __ARGS((char_u *fname));
+! static void  wipe_dummy_buffer __ARGS((buf_T *buf));
+! static void  unload_dummy_buffer __ARGS((buf_T *buf));
+  static qf_info_T *ll_get_or_alloc_list __ARGS((win_T *));
+  
+  /* Quickfix window check helper macro */
+--- 130,139 ----
+  static void  qf_fill_buffer __ARGS((qf_info_T *qi));
+  #endif
+  static char_u        *get_mef_name __ARGS((void));
+! static void  restore_start_dir __ARGS((char_u *dirname_start));
+! static buf_T *load_dummy_buffer __ARGS((char_u *fname, char_u *dirname_start, char_u *resulting_dir));
+! static void  wipe_dummy_buffer __ARGS((buf_T *buf, char_u *dirname_start));
+! static void  unload_dummy_buffer __ARGS((buf_T *buf, char_u *dirname_start));
+  static qf_info_T *ll_get_or_alloc_list __ARGS((win_T *));
+  
+  /* Quickfix window check helper macro */
+***************
+*** 3237,3255 ****
+  
+           /* Load file into a buffer, so that 'fileencoding' is detected,
+            * autocommands applied, etc. */
+!          buf = load_dummy_buffer(fname);
+! 
+!          /* When autocommands changed directory: go back.  We assume it was
+!           * ":lcd %:p:h". */
+!          mch_dirname(dirname_now, MAXPATHL);
+!          if (STRCMP(dirname_start, dirname_now) != 0)
+!          {
+!              exarg_T ea;
+! 
+!              ea.arg = dirname_start;
+!              ea.cmdidx = CMD_lcd;
+!              ex_cd(&ea);
+!          }
+  
+           p_mls = save_mls;
+  #if defined(FEAT_AUTOCMD) && defined(FEAT_SYN_HL)
+--- 3238,3244 ----
+  
+           /* Load file into a buffer, so that 'fileencoding' is detected,
+            * autocommands applied, etc. */
+!          buf = load_dummy_buffer(fname, dirname_start, dirname_now);
+  
+           p_mls = save_mls;
+  #if defined(FEAT_AUTOCMD) && defined(FEAT_SYN_HL)
+***************
+*** 3320,3326 ****
+               {
+                   /* Never keep a dummy buffer if there is another buffer
+                    * with the same name. */
+!                  wipe_dummy_buffer(buf);
+                   buf = NULL;
+               }
+               else if (!cmdmod.hide
+--- 3309,3315 ----
+               {
+                   /* Never keep a dummy buffer if there is another buffer
+                    * with the same name. */
+!                  wipe_dummy_buffer(buf, dirname_start);
+                   buf = NULL;
+               }
+               else if (!cmdmod.hide
+***************
+*** 3336,3347 ****
+                    * many swap files. */
+                   if (!found_match)
+                   {
+!                      wipe_dummy_buffer(buf);
+                       buf = NULL;
+                   }
+                   else if (buf != first_match_buf || (flags & VGR_NOJUMP))
+                   {
+!                      unload_dummy_buffer(buf);
+                       buf = NULL;
+                   }
+               }
+--- 3325,3336 ----
+                    * many swap files. */
+                   if (!found_match)
+                   {
+!                      wipe_dummy_buffer(buf, dirname_start);
+                       buf = NULL;
+                   }
+                   else if (buf != first_match_buf || (flags & VGR_NOJUMP))
+                   {
+!                      unload_dummy_buffer(buf, dirname_start);
+                       buf = NULL;
+                   }
+               }
+***************
+*** 3487,3499 ****
+  }
+  
+  /*
+!  * Load file "fname" into a dummy buffer and return the buffer pointer.
+   * Returns NULL if it fails.
+-  * Must call unload_dummy_buffer() or wipe_dummy_buffer() later!
+   */
+      static buf_T *
+! load_dummy_buffer(fname)
+      char_u   *fname;
+  {
+      buf_T    *newbuf;
+      buf_T    *newbuf_to_wipe = NULL;
+--- 3476,3523 ----
+  }
+  
+  /*
+!  * Restore current working directory to "dirname_start" if they differ, taking
+!  * into account whether it is set locally or globally.
+!  */
+!     static void
+! restore_start_dir(dirname_start)
+!     char_u   *dirname_start;
+! {
+!     char_u *dirname_now = alloc(MAXPATHL);
+! 
+!     if (NULL != dirname_now)
+!     {
+!      mch_dirname(dirname_now, MAXPATHL);
+!      if (STRCMP(dirname_start, dirname_now) != 0)
+!      {
+!          /* If the directory has changed, change it back by building up an
+!           * appropriate ex command and executing it. */
+!          exarg_T ea;
+! 
+!          ea.arg = dirname_start;
+!          ea.cmdidx = (curwin->w_localdir == NULL) ? CMD_cd : CMD_lcd;
+!          ex_cd(&ea);
+!      }
+!     }
+! }
+! 
+! /*
+!  * Load file "fname" into a dummy buffer and return the buffer pointer,
+!  * placing the directory resulting from the buffer load into the
+!  * "resulting_dir" pointer. "resulting_dir" must be allocated by the caller
+!  * prior to calling this function. Restores directory to "dirname_start" prior
+!  * to returning, if autocmds or the 'autochdir' option have changed it.
+!  *
+!  * If creating the dummy buffer does not fail, must call unload_dummy_buffer()
+!  * or wipe_dummy_buffer() later!
+!  *
+   * Returns NULL if it fails.
+   */
+      static buf_T *
+! load_dummy_buffer(fname, dirname_start, resulting_dir)
+      char_u   *fname;
++     char_u   *dirname_start;  /* in: old directory */
++     char_u   *resulting_dir;  /* out: new directory */
+  {
+      buf_T    *newbuf;
+      buf_T    *newbuf_to_wipe = NULL;
+***************
+*** 3548,3569 ****
+           wipe_buffer(newbuf_to_wipe, FALSE);
+      }
+  
+      if (!buf_valid(newbuf))
+       return NULL;
+      if (failed)
+      {
+!      wipe_dummy_buffer(newbuf);
+       return NULL;
+      }
+      return newbuf;
+  }
+  
+  /*
+!  * Wipe out the dummy buffer that load_dummy_buffer() created.
+   */
+      static void
+! wipe_dummy_buffer(buf)
+      buf_T    *buf;
+  {
+      if (curbuf != buf)               /* safety check */
+      {
+--- 3572,3604 ----
+           wipe_buffer(newbuf_to_wipe, FALSE);
+      }
+  
++     /*
++      * When autocommands/'autochdir' option changed directory: go back.
++      * Let the caller know what the resulting dir was first, in case it is
++      * important.
++      */
++     mch_dirname(resulting_dir, MAXPATHL);
++     restore_start_dir(dirname_start);
++ 
+      if (!buf_valid(newbuf))
+       return NULL;
+      if (failed)
+      {
+!      wipe_dummy_buffer(newbuf, dirname_start);
+       return NULL;
+      }
+      return newbuf;
+  }
+  
+  /*
+!  * Wipe out the dummy buffer that load_dummy_buffer() created. Restores
+!  * directory to "dirname_start" prior to returning, if autocmds or the
+!  * 'autochdir' option have changed it.
+   */
+      static void
+! wipe_dummy_buffer(buf, dirname_start)
+      buf_T    *buf;
++     char_u   *dirname_start;
+  {
+      if (curbuf != buf)               /* safety check */
+      {
+***************
+*** 3583,3600 ****
+        * new aborting error, interrupt, or uncaught exception. */
+       leave_cleanup(&cs);
+  #endif
+      }
+  }
+  
+  /*
+!  * Unload the dummy buffer that load_dummy_buffer() created.
+   */
+      static void
+! unload_dummy_buffer(buf)
+      buf_T    *buf;
+  {
+      if (curbuf != buf)               /* safety check */
+       close_buffer(NULL, buf, DOBUF_UNLOAD, FALSE);
+  }
+  
+  #if defined(FEAT_EVAL) || defined(PROTO)
+--- 3618,3645 ----
+        * new aborting error, interrupt, or uncaught exception. */
+       leave_cleanup(&cs);
+  #endif
++      /* When autocommands/'autochdir' option changed directory: go back. */
++      restore_start_dir(dirname_start);
+      }
+  }
+  
+  /*
+!  * Unload the dummy buffer that load_dummy_buffer() created. Restores
+!  * directory to "dirname_start" prior to returning, if autocmds or the
+!  * 'autochdir' option have changed it.
+   */
+      static void
+! unload_dummy_buffer(buf, dirname_start)
+      buf_T    *buf;
++     char_u   *dirname_start;
+  {
+      if (curbuf != buf)               /* safety check */
++     {
+       close_buffer(NULL, buf, DOBUF_UNLOAD, FALSE);
++ 
++      /* When autocommands/'autochdir' option changed directory: go back. */
++      restore_start_dir(dirname_start);
++     }
+  }
+  
+  #if defined(FEAT_EVAL) || defined(PROTO)
+*** ../vim-7.3.508/src/version.c       2012-04-25 18:24:24.000000000 +0200
+--- src/version.c      2012-04-25 18:43:10.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     509,
+  /**/
+
+-- 
+   Arthur pulls Pin out.  The MONK blesses the grenade as ...
+ARTHUR:  (quietly) One, two, five ...
+GALAHAD: Three, sir!
+ARTHUR:  Three.
+                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.510.patch0 b/vim/patches/vim-7.3.510.patch0
new file mode 100644 (file)
index 0000000..afe1041
--- /dev/null
@@ -0,0 +1,53 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.510
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.510
+Problem:    Test 77 fails on Solaris 7. (Michael Soyka)
+Solution:   Replace any tabs with spaces.
+Files:     src/testdir/test77.in
+
+
+*** ../vim-7.3.509/src/testdir/test77.in       2011-03-22 18:10:34.000000000 +0100
+--- src/testdir/test77.in      2012-04-30 11:30:31.000000000 +0200
+***************
+*** 21,27 ****
+  :while i <= 2000000 | call append(i, range(i, i + 99)) | let i += 100 | endwhile
+  ggdd
+  :w! Xtest
+! :!cksum Xtest > test.out
+  :qa!
+  ENDTEST
+  
+--- 21,29 ----
+  :while i <= 2000000 | call append(i, range(i, i + 99)) | let i += 100 | endwhile
+  ggdd
+  :w! Xtest
+! :r !cksum Xtest
+! :s/\s/ /g
+! :.w! test.out
+  :qa!
+  ENDTEST
+  
+*** ../vim-7.3.509/src/version.c       2012-04-25 18:57:17.000000000 +0200
+--- src/version.c      2012-04-30 11:33:35.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     510,
+  /**/
+
+-- 
+SIGFUN -- signature too funny (core dumped)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.511.patch0 b/vim/patches/vim-7.3.511.patch0
new file mode 100644 (file)
index 0000000..a2b6dce
--- /dev/null
@@ -0,0 +1,49 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.511
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.511
+Problem:    Using a FileReadCmd autocommand that does ":e! {file}" may cause a
+           crash. (Christian Brabandt)
+Solution:   Properly restore curwin->w_s.
+Files:     src/fileio.c
+
+
+*** ../vim-7.3.510/src/fileio.c        2012-04-25 16:50:44.000000000 +0200
+--- src/fileio.c       2012-04-30 17:04:22.000000000 +0200
+***************
+*** 8982,8987 ****
+--- 8982,8991 ----
+                   && buf_valid(aco->new_curbuf)
+                   && aco->new_curbuf->b_ml.ml_mfp != NULL)
+           {
++ # if defined(FEAT_SYN_HL) || defined(FEAT_SPELL)
++              if (curwin->w_s == &curbuf->b_s)
++                  curwin->w_s = &aco->new_curbuf->b_s;
++ # endif
+               --curbuf->b_nwindows;
+               curbuf = aco->new_curbuf;
+               curwin->w_buffer = curbuf;
+*** ../vim-7.3.510/src/version.c       2012-04-30 11:34:20.000000000 +0200
+--- src/version.c      2012-04-30 17:01:05.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     511,
+  /**/
+
+-- 
+There is no right or wrong, there is only your personal opinion.
+                 (Bram Moolenaar)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.512.patch0 b/vim/patches/vim-7.3.512.patch0
new file mode 100644 (file)
index 0000000..838ae3e
--- /dev/null
@@ -0,0 +1,70 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.512
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.512
+Problem:    undofile() returns a useless name when passed an empty string.
+Solution:   Return an empty string. (Christian Brabandt)
+Files:     src/eval.c
+
+
+*** ../vim-7.3.511/src/eval.c  2012-04-25 18:24:24.000000000 +0200
+--- src/eval.c 2012-04-30 17:23:26.000000000 +0200
+***************
+*** 18259,18269 ****
+      rettv->v_type = VAR_STRING;
+  #ifdef FEAT_PERSISTENT_UNDO
+      {
+!      char_u *ffname = FullName_save(get_tv_string(&argvars[0]), FALSE);
+  
+!      if (ffname != NULL)
+!          rettv->vval.v_string = u_get_undo_file_name(ffname, FALSE);
+!      vim_free(ffname);
+      }
+  #else
+      rettv->vval.v_string = NULL;
+--- 18259,18279 ----
+      rettv->v_type = VAR_STRING;
+  #ifdef FEAT_PERSISTENT_UNDO
+      {
+!      char_u *fname = get_tv_string(&argvars[0]);
+  
+!      if (*fname == NUL)
+!      {
+!          /* If there is no file name there will be no undo file. */
+!          rettv->vval.v_string = NULL;
+!      }
+!      else
+!      {
+!          char_u *ffname = FullName_save(fname, FALSE);
+! 
+!          if (ffname != NULL)
+!              rettv->vval.v_string = u_get_undo_file_name(ffname, FALSE);
+!          vim_free(ffname);
+!      }
+      }
+  #else
+      rettv->vval.v_string = NULL;
+*** ../vim-7.3.511/src/version.c       2012-04-30 17:04:47.000000000 +0200
+--- src/version.c      2012-04-30 17:24:42.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     512,
+  /**/
+
+-- 
+It is illegal for a driver to be blindfolded while operating a vehicle.
+               [real standing law in Alabama, United States of America]
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.513.patch0 b/vim/patches/vim-7.3.513.patch0
new file mode 100644 (file)
index 0000000..396969f
--- /dev/null
@@ -0,0 +1,129 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.513
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.513
+Problem:    Cannot use CTRL-E and CTRL-Y with "r".
+Solution:   Make CTRL-E and CTRL-Y work like in Insert mode. (Christian
+           Brabandt)
+Files:     src/edit.c, src/normal.c, src/proto/edit.pro
+
+
+*** ../vim-7.3.512/src/edit.c  2012-04-05 16:07:01.000000000 +0200
+--- src/edit.c 2012-04-30 17:53:47.000000000 +0200
+***************
+*** 253,259 ****
+  #ifdef FEAT_DIGRAPHS
+  static int  ins_digraph __ARGS((void));
+  #endif
+- static int  ins_copychar __ARGS((linenr_T lnum));
+  static int  ins_ctrl_ey __ARGS((int tc));
+  #ifdef FEAT_SMARTINDENT
+  static void ins_try_si __ARGS((int c));
+--- 253,258 ----
+***************
+*** 9899,9905 ****
+   * Handle CTRL-E and CTRL-Y in Insert mode: copy char from other line.
+   * Returns the char to be inserted, or NUL if none found.
+   */
+!     static int
+  ins_copychar(lnum)
+      linenr_T lnum;
+  {
+--- 9898,9904 ----
+   * Handle CTRL-E and CTRL-Y in Insert mode: copy char from other line.
+   * Returns the char to be inserted, or NUL if none found.
+   */
+!     int
+  ins_copychar(lnum)
+      linenr_T lnum;
+  {
+*** ../vim-7.3.512/src/normal.c        2012-03-28 12:59:53.000000000 +0200
+--- src/normal.c       2012-04-30 18:06:13.000000000 +0200
+***************
+*** 7070,7076 ****
+           for (n = cap->count1; n > 0; --n)
+           {
+               State = REPLACE;
+!              ins_char(cap->nchar);
+               State = old_State;
+               if (cap->ncharC1 != 0)
+                   ins_char(cap->ncharC1);
+--- 7070,7087 ----
+           for (n = cap->count1; n > 0; --n)
+           {
+               State = REPLACE;
+!              if (cap->nchar == Ctrl_E || cap->nchar == Ctrl_Y)
+!              {
+!                  int c = ins_copychar(curwin->w_cursor.lnum
+!                                         + (cap->nchar == Ctrl_Y ? -1 : 1));
+!                  if (c != NUL)
+!                      ins_char(c);
+!                  else
+!                      /* will be decremented further down */
+!                      ++curwin->w_cursor.col;
+!              }
+!              else
+!                  ins_char(cap->nchar);
+               State = old_State;
+               if (cap->ncharC1 != 0)
+                   ins_char(cap->ncharC1);
+***************
+*** 7092,7098 ****
+                * line will be changed.
+                */
+               ptr = ml_get_buf(curbuf, curwin->w_cursor.lnum, TRUE);
+!              ptr[curwin->w_cursor.col] = cap->nchar;
+               if (p_sm && msg_silent == 0)
+                   showmatch(cap->nchar);
+               ++curwin->w_cursor.col;
+--- 7103,7117 ----
+                * line will be changed.
+                */
+               ptr = ml_get_buf(curbuf, curwin->w_cursor.lnum, TRUE);
+!              if (cap->nchar == Ctrl_E || cap->nchar == Ctrl_Y)
+!              {
+!                int c = ins_copychar(curwin->w_cursor.lnum
+!                                         + (cap->nchar == Ctrl_Y ? -1 : 1));
+!                if (c != NUL)
+!                  ptr[curwin->w_cursor.col] = c;
+!              }
+!              else
+!                  ptr[curwin->w_cursor.col] = cap->nchar;
+               if (p_sm && msg_silent == 0)
+                   showmatch(cap->nchar);
+               ++curwin->w_cursor.col;
+*** ../vim-7.3.512/src/proto/edit.pro  2010-08-15 21:57:28.000000000 +0200
+--- src/proto/edit.pro 2012-04-30 17:54:41.000000000 +0200
+***************
+*** 39,42 ****
+--- 39,43 ----
+  int hkmap __ARGS((int c));
+  void ins_scroll __ARGS((void));
+  void ins_horscroll __ARGS((void));
++ int ins_copychar __ARGS((linenr_T lnum));
+  /* vim: set ft=c : */
+*** ../vim-7.3.512/src/version.c       2012-04-30 17:35:44.000000000 +0200
+--- src/version.c      2012-04-30 18:17:52.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     513,
+  /**/
+
+-- 
+It is illegal for anyone to try and stop a child from playfully jumping over
+puddles of water.
+               [real standing law in California, United States of America]
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.514.patch0 b/vim/patches/vim-7.3.514.patch0
new file mode 100644 (file)
index 0000000..79620f0
--- /dev/null
@@ -0,0 +1,232 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.514
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.514
+Problem:    No completion for :history command.
+Solution:   Add the completion and update the docs. Also fix ":behave"
+           completion. (Dominique Pelle)
+Files:     runtime/doc/cmdline.txt, runtime/doc/map.txt, src/ex_docmd.c,
+           src/ex_getln.c, src/vim.h
+
+
+*** ../vim-7.3.513/runtime/doc/cmdline.txt     2010-08-15 21:57:17.000000000 +0200
+--- runtime/doc/cmdline.txt    2012-04-30 18:30:00.000000000 +0200
+***************
+*** 330,341 ****
+  
+  :his[tory] [{name}] [{first}][, [{last}]]
+               List the contents of history {name} which can be:
+!              c[md]    or :   command-line history
+!              s[earch] or /   search string history
+!              e[xpr]   or =   expression register history
+!              i[nput]  or @   input line history
+!              d[ebug]  or >   debug command history
+!              a[ll]           all of the above
+               {not in Vi}
+  
+               If the numbers {first} and/or {last} are given, the respective
+--- 330,341 ----
+  
+  :his[tory] [{name}] [{first}][, [{last}]]
+               List the contents of history {name} which can be:
+!              c[md]    or :           command-line history
+!              s[earch] or / or ?      search string history
+!              e[xpr]   or =           expression register history
+!              i[nput]  or @           input line history
+!              d[ebug]  or >           debug command history
+!              a[ll]                   all of the above
+               {not in Vi}
+  
+               If the numbers {first} and/or {last} are given, the respective
+*** ../vim-7.3.513/runtime/doc/map.txt 2011-07-20 16:36:35.000000000 +0200
+--- runtime/doc/map.txt        2012-04-30 18:30:00.000000000 +0200
+***************
+*** 1202,1207 ****
+--- 1219,1225 ----
+  
+       -complete=augroup       autocmd groups
+       -complete=buffer        buffer names
++      -complete=behave        :behave suboptions
+       -complete=color         color schemes
+       -complete=command       Ex command (and arguments)
+       -complete=compiler      compilers
+***************
+*** 1216,1221 ****
+--- 1234,1240 ----
+       -complete=function      function name
+       -complete=help          help subjects
+       -complete=highlight     highlight groups
++      -complete=history       :history suboptions
+       -complete=locale        locale names (as output of locale -a)
+       -complete=mapping       mapping name
+       -complete=menu          menus
+*** ../vim-7.3.513/src/ex_docmd.c      2012-02-12 20:13:55.000000000 +0100
+--- src/ex_docmd.c     2012-04-30 18:33:27.000000000 +0200
+***************
+*** 3920,3927 ****
+--- 3920,3935 ----
+  #endif
+       case CMD_behave:
+           xp->xp_context = EXPAND_BEHAVE;
++          xp->xp_pattern = arg;
+           break;
+  
++ #if defined(FEAT_CMDHIST)
++      case CMD_history:
++          xp->xp_context = EXPAND_HISTORY;
++          xp->xp_pattern = arg;
++          break;
++ #endif
++ 
+  #endif /* FEAT_CMDL_COMPL */
+  
+       default:
+***************
+*** 5329,5334 ****
+--- 5337,5343 ----
+  } command_complete[] =
+  {
+      {EXPAND_AUGROUP, "augroup"},
++     {EXPAND_BEHAVE, "behave"},
+      {EXPAND_BUFFERS, "buffer"},
+      {EXPAND_COLORS, "color"},
+      {EXPAND_COMMANDS, "command"},
+***************
+*** 5350,5357 ****
+      {EXPAND_FUNCTIONS, "function"},
+      {EXPAND_HELP, "help"},
+      {EXPAND_HIGHLIGHT, "highlight"},
+  #if (defined(HAVE_LOCALE_H) || defined(X_LOCALE)) \
+!         && (defined(FEAT_GETTEXT) || defined(FEAT_MBYTE))
+      {EXPAND_LOCALES, "locale"},
+  #endif
+      {EXPAND_MAPPINGS, "mapping"},
+--- 5359,5369 ----
+      {EXPAND_FUNCTIONS, "function"},
+      {EXPAND_HELP, "help"},
+      {EXPAND_HIGHLIGHT, "highlight"},
++ #if defined(FEAT_CMDHIST)
++     {EXPAND_HISTORY, "history"},
++ #endif
+  #if (defined(HAVE_LOCALE_H) || defined(X_LOCALE)) \
+!      && (defined(FEAT_GETTEXT) || defined(FEAT_MBYTE))
+      {EXPAND_LOCALES, "locale"},
+  #endif
+      {EXPAND_MAPPINGS, "mapping"},
+*** ../vim-7.3.513/src/ex_getln.c      2012-03-07 19:16:49.000000000 +0100
+--- src/ex_getln.c     2012-04-30 18:36:04.000000000 +0200
+***************
+*** 25,31 ****
+      int              cmdlen;         /* number of chars in command line */
+      int              cmdpos;         /* current cursor position */
+      int              cmdspos;        /* cursor column on screen */
+!     int              cmdfirstc;      /* ':', '/', '?', '=' or NUL */
+      int              cmdindent;      /* number of spaces before cmdline */
+      char_u   *cmdprompt;     /* message in front of cmdline */
+      int              cmdattr;        /* attributes for prompt */
+--- 25,31 ----
+      int              cmdlen;         /* number of chars in command line */
+      int              cmdpos;         /* current cursor position */
+      int              cmdspos;        /* cursor column on screen */
+!     int              cmdfirstc;      /* ':', '/', '?', '=', '>' or NUL */
+      int              cmdindent;      /* number of spaces before cmdline */
+      char_u   *cmdprompt;     /* message in front of cmdline */
+      int              cmdattr;        /* attributes for prompt */
+***************
+*** 111,116 ****
+--- 111,119 ----
+  #ifdef FEAT_CMDL_COMPL
+  static int   expand_shellcmd __ARGS((char_u *filepat, int *num_file, char_u ***file, int flagsarg));
+  static int   ExpandRTDir __ARGS((char_u *pat, int *num_file, char_u ***file, char *dirname[]));
++ # ifdef FEAT_CMDHIST
++ static char_u        *get_history_arg __ARGS((expand_T *xp, int idx));
++ # endif
+  # if defined(FEAT_USR_CMDS) && defined(FEAT_EVAL)
+  static int   ExpandUserDefined __ARGS((expand_T *xp, regmatch_T *regmatch, int *num_file, char_u ***file));
+  static int   ExpandUserList __ARGS((expand_T *xp, int *num_file, char_u ***file));
+***************
+*** 4628,4633 ****
+--- 4631,4639 ----
+       {
+           {EXPAND_COMMANDS, get_command_name, FALSE, TRUE},
+           {EXPAND_BEHAVE, get_behave_arg, TRUE, TRUE},
++ #ifdef FEAT_CMDHIST
++          {EXPAND_HISTORY, get_history_arg, TRUE, TRUE},
++ #endif
+  #ifdef FEAT_USR_CMDS
+           {EXPAND_USER_COMMANDS, get_user_commands, FALSE, TRUE},
+           {EXPAND_USER_CMD_FLAGS, get_user_cmd_flags, FALSE, TRUE},
+***************
+*** 5245,5250 ****
+--- 5251,5284 ----
+      NULL
+  };
+  
++ #if defined(FEAT_CMDL_COMPL) || defined(PROTO)
++ /*
++  * Function given to ExpandGeneric() to obtain the possible first
++  * arguments of the ":history command.
++  */
++     static char_u *
++ get_history_arg(xp, idx)
++     expand_T *xp UNUSED;
++     int              idx;
++ {
++     static char_u compl[2] = { NUL, NUL };
++     char *short_names = ":=@>?/";
++     int short_names_count = STRLEN(short_names);
++     int history_name_count = sizeof(history_names) / sizeof(char *) - 1;
++ 
++     if (idx < short_names_count)
++     {
++      compl[0] = (char_u)short_names[idx];
++      return compl;
++     }
++     if (idx < short_names_count + history_name_count)
++      return (char_u *)history_names[idx - short_names_count];
++     if (idx == short_names_count + history_name_count)
++      return (char_u *)"all";
++     return NULL;
++ }
++ #endif
++ 
+  /*
+   * init_history() - Initialize the command line history.
+   * Also used to re-allocate the history when the size changes.
+*** ../vim-7.3.513/src/vim.h   2012-03-23 16:25:13.000000000 +0100
+--- src/vim.h  2012-04-30 18:30:00.000000000 +0200
+***************
+*** 781,786 ****
+--- 781,787 ----
+  #define EXPAND_FILES_IN_PATH 38
+  #define EXPAND_OWNSYNTAX     39
+  #define EXPAND_LOCALES               40
++ #define EXPAND_HISTORY               41
+  
+  /* Values for exmode_active (0 is no exmode) */
+  #define EXMODE_NORMAL                1
+*** ../vim-7.3.513/src/version.c       2012-04-30 18:18:43.000000000 +0200
+--- src/version.c      2012-04-30 18:36:19.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     514,
+  /**/
+
+-- 
+You can be stopped by the police for biking over 65 miles per hour.
+You are not allowed to walk across a street on your hands.
+               [real standing laws in Connecticut, United States of America]
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.515.patch0 b/vim/patches/vim-7.3.515.patch0
new file mode 100644 (file)
index 0000000..dad6f61
--- /dev/null
@@ -0,0 +1,68 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.515
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.515
+Problem:    'wildignorecase' only applies to the last part of the path.
+Solution:   Also ignore case for letters earlier in the path.
+Files:     src/misc1.c
+
+
+*** ../vim-7.3.514/src/misc1.c 2012-04-09 20:42:20.000000000 +0200
+--- src/misc1.c        2012-04-30 21:00:18.000000000 +0200
+***************
+*** 9461,9466 ****
+--- 9461,9467 ----
+  
+      /*
+       * Find the first part in the path name that contains a wildcard.
++      * When EW_ICASE is set every letter is considered to be a wildcard.
+       * Copy it into "buf", including the preceding characters.
+       */
+      p = buf;
+***************
+*** 9480,9486 ****
+           s = p + 1;
+       }
+       else if (path_end >= path + wildoff
+!                       && vim_strchr((char_u *)"*?[{~$", *path_end) != NULL)
+           e = p;
+  #ifdef FEAT_MBYTE
+       if (has_mbyte)
+--- 9481,9492 ----
+           s = p + 1;
+       }
+       else if (path_end >= path + wildoff
+!                       && (vim_strchr((char_u *)"*?[{~$", *path_end) != NULL
+! #ifndef CASE_INSENSITIVE_FILENAME
+!                           || ((flags & EW_ICASE)
+!                                             && isalpha(PTR2CHAR(path_end)))
+! #endif
+!                           ))
+           e = p;
+  #ifdef FEAT_MBYTE
+       if (has_mbyte)
+*** ../vim-7.3.514/src/version.c       2012-04-30 18:48:38.000000000 +0200
+--- src/version.c      2012-04-30 21:05:10.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     515,
+  /**/
+
+-- 
+If an elephant is left tied to a parking meter, the parking fee has to be paid
+just as it would for a vehicle.
+               [real standing law in Florida, United States of America]
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.516.patch0 b/vim/patches/vim-7.3.516.patch0
new file mode 100644 (file)
index 0000000..d43be5a
--- /dev/null
@@ -0,0 +1,94 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.516
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.516
+Problem:    extend(o, o) may crash Vim.
+Solution:   Fix crash and add test. (Thinca and Hirohito Higashi)
+Files:     src/eval.c, src/testdir/test55.in, src/testdir/test55.ok
+
+
+*** ../vim-7.3.515/src/eval.c  2012-04-30 17:35:44.000000000 +0200
+--- src/eval.c 2012-05-18 12:02:44.000000000 +0200
+***************
+*** 10191,10197 ****
+                       EMSG2(_("E737: Key already exists: %s"), hi2->hi_key);
+                       break;
+                   }
+!                  else if (*action == 'f')
+                   {
+                       clear_tv(&di1->di_tv);
+                       copy_tv(&HI2DI(hi2)->di_tv, &di1->di_tv);
+--- 10191,10197 ----
+                       EMSG2(_("E737: Key already exists: %s"), hi2->hi_key);
+                       break;
+                   }
+!                  else if (*action == 'f' && HI2DI(hi2) != di1)
+                   {
+                       clear_tv(&di1->di_tv);
+                       copy_tv(&HI2DI(hi2)->di_tv, &di1->di_tv);
+*** ../vim-7.3.515/src/testdir/test55.in       2010-11-10 20:31:24.000000000 +0100
+--- src/testdir/test55.in      2012-05-18 11:57:23.000000000 +0200
+***************
+*** 352,357 ****
+--- 352,375 ----
+  :let dict4copy = deepcopy(dict4)
+  :$put =(l == lcopy)
+  :$put =(dict4 == dict4copy)
++ :"
++ :" Pass the same List to extend()
++ :let l = [1, 2, 3, 4, 5]
++ :call extend(l, l)
++ :$put =string(l)
++ :"
++ :" Pass the same Dict to extend()
++ :let d = { 'a': {'b': 'B'}}
++ :call extend(d, d)
++ :$put =string(d)
++ :"
++ :" Pass the same Dict to extend() with "error"
++ :try
++ :  call extend(d, d, "error")
++ :catch
++ :  $put =v:exception[:15] . v:exception[-1:-1]
++ :endtry
++ :$put =string(d)
+  :endfun
+  :"
+  :call Test(1, 2, [3, 4], {5: 6})  " This may take a while
+*** ../vim-7.3.515/src/testdir/test55.ok       2010-11-10 20:31:24.000000000 +0100
+--- src/testdir/test55.ok      2012-05-18 11:57:01.000000000 +0200
+***************
+*** 111,113 ****
+--- 111,117 ----
+  0
+  1
+  1
++ [1, 2, 3, 4, 5, 1, 2, 3, 4, 5]
++ {'a': {'b': 'B'}}
++ Vim(call):E737: a
++ {'a': {'b': 'B'}}
+*** ../vim-7.3.515/src/version.c       2012-04-30 21:09:38.000000000 +0200
+--- src/version.c      2012-05-18 12:04:54.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     516,
+  /**/
+
+-- 
+I used to wonder about the meaning of life.  But I looked it
+up in the dictionary under "L" and there it was - the meaning
+of life.  It was less than I expected.              - Dogbert
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.517.patch0 b/vim/patches/vim-7.3.517.patch0
new file mode 100644 (file)
index 0000000..343693b
--- /dev/null
@@ -0,0 +1,60 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.517
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.517
+Problem:    Crash when using "vipvv". (Alexandre Provencio)
+Solution:   Don't let the text length become negative.
+Files:     src/ops.c
+
+
+*** ../vim-7.3.516/src/ops.c   2012-04-20 13:46:02.000000000 +0200
+--- src/ops.c  2012-05-18 12:28:09.000000000 +0200
+***************
+*** 3042,3047 ****
+--- 3042,3049 ----
+                       }
+  #endif
+                   }
++                  if (endcol == MAXCOL)
++                      endcol = (colnr_T)STRLEN(p);
+                   if (startcol > endcol
+  #ifdef FEAT_VIRTUALEDIT
+                           || is_oneChar
+***************
+*** 3050,3057 ****
+                       bd.textlen = 0;
+                   else
+                   {
+-                      if (endcol == MAXCOL)
+-                          endcol = (colnr_T)STRLEN(p);
+                       bd.textlen = endcol - startcol + oap->inclusive;
+                   }
+                   bd.textstart = p + startcol;
+--- 3052,3057 ----
+*** ../vim-7.3.516/src/version.c       2012-05-18 12:06:58.000000000 +0200
+--- src/version.c      2012-05-18 12:48:51.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     517,
+  /**/
+
+-- 
+BODY:        I'm not dead!
+CART DRIVER: 'Ere.  He says he's not dead.
+LARGE MAN:   Yes he is.
+BODY:        I'm not!
+                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.518.patch0 b/vim/patches/vim-7.3.518.patch0
new file mode 100644 (file)
index 0000000..89429f0
--- /dev/null
@@ -0,0 +1,57 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.518
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.518
+Problem:    When 'encoding' is a double-byte encoding ":helptags" may not find
+           tags correctly.
+Solution:   Use vim_strbyte() instead of vim_strchr(). (Yasuhiro Matsumoto)
+Files:     src/ex_cmds.c
+
+
+*** ../vim-7.3.517/src/ex_cmds.c       2012-04-25 17:32:14.000000000 +0200
+--- src/ex_cmds.c      2012-05-18 16:20:20.000000000 +0200
+***************
+*** 6535,6541 ****
+           p1 = vim_strchr(IObuff, '*');       /* find first '*' */
+           while (p1 != NULL)
+           {
+!              p2 = vim_strchr(p1 + 1, '*');   /* find second '*' */
+               if (p2 != NULL && p2 > p1 + 1)  /* skip "*" and "**" */
+               {
+                   for (s = p1 + 1; s < p2; ++s)
+--- 6535,6544 ----
+           p1 = vim_strchr(IObuff, '*');       /* find first '*' */
+           while (p1 != NULL)
+           {
+!              /* Use vim_strbyte() instead of vim_strchr() so that when
+!               * 'encoding' is dbcs it still works, don't find '*' in the
+!               * second byte. */
+!              p2 = vim_strbyte(p1 + 1, '*');  /* find second '*' */
+               if (p2 != NULL && p2 > p1 + 1)  /* skip "*" and "**" */
+               {
+                   for (s = p1 + 1; s < p2; ++s)
+*** ../vim-7.3.517/src/version.c       2012-05-18 12:49:33.000000000 +0200
+--- src/version.c      2012-05-18 16:23:50.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     518,
+  /**/
+
+-- 
+If all you have is a hammer, everything looks like a nail.
+When your hammer is C++, everything begins to look like a thumb.
+                       -- Steve Hoflich, comp.lang.c++
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.519.patch0 b/vim/patches/vim-7.3.519.patch0
new file mode 100644 (file)
index 0000000..846cea6
--- /dev/null
@@ -0,0 +1,64 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.519
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.519
+Problem:    When completefunction returns it cannot indicate end of completion
+           mode.
+Solution:   Recognize completefunction returning -3.  (Mtsushita Shougo)
+Files:     src/edit.c
+
+
+*** ../vim-7.3.518/src/edit.c  2012-04-30 18:18:43.000000000 +0200
+--- src/edit.c 2012-05-18 16:35:06.000000000 +0200
+***************
+*** 5205,5213 ****
+           }
+  
+           /* Return value -2 means the user complete function wants to
+!           * cancel the complete without an error. */
+           if (col == -2)
+               return FAIL;
+  
+           /*
+            * Reset extended parameters of completion, when start new
+--- 5205,5221 ----
+           }
+  
+           /* Return value -2 means the user complete function wants to
+!           * cancel the complete without an error.
+!           * Return value -3 does the same as -2 and leaves CTRL-X mode.*/
+           if (col == -2)
+               return FAIL;
++          if (col == -3)
++          {
++              ctrl_x_mode = 0;
++              edit_submode = NULL;
++              msg_clr_cmdline();
++              return FAIL;
++          }
+  
+           /*
+            * Reset extended parameters of completion, when start new
+*** ../vim-7.3.518/src/version.c       2012-05-18 16:24:06.000000000 +0200
+--- src/version.c      2012-05-18 16:34:27.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     519,
+  /**/
+
+-- 
+Looking at Perl through Lisp glasses, Perl looks atrocious.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.520.patch0 b/vim/patches/vim-7.3.520.patch0
new file mode 100644 (file)
index 0000000..9e2da8d
--- /dev/null
@@ -0,0 +1,140 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.520
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.520
+Problem:    Gvim starts up slow on Unbuntu 12.04.
+Solution:   Move the call to gui_mch_init_check() to after fork(). (Yasuhiro
+           Matsumoto)  Do check $DISPLAY being set.
+Files:     src/gui.c, src/gui_gtk_x11.c, src/proto/gui_gtk_x11.pro
+
+
+*** ../vim-7.3.519/src/gui.c   2011-10-20 21:27:57.000000000 +0200
+--- src/gui.c  2012-05-18 16:53:14.000000000 +0200
+***************
+*** 270,275 ****
+--- 270,281 ----
+      }
+      /* Child */
+  
++ #ifdef FEAT_GUI_GTK
++     /* Call gtk_init_check() here after fork(). See gui_init_check(). */
++     if (gui_mch_init_check() != OK)
++      exit(1);
++ #endif
++ 
+  # if defined(HAVE_SETSID) || defined(HAVE_SETPGID)
+      /*
+       * Change our process group.  On some systems/shells a CTRL-C in the
+***************
+*** 430,436 ****
+--- 436,452 ----
+  #ifdef ALWAYS_USE_GUI
+      result = OK;
+  #else
++ # ifdef FEAT_GUI_GTK
++     /*
++      * Note: Don't call gtk_init_check() before fork, it will be called after
++      * the fork. When calling it before fork, it make vim hang for a while.
++      * See gui_do_fork().
++      * Use a simpler check if the GUI window can probably be opened.
++      */
++     result = gui.dofork ? gui_mch_early_init_check() : gui_mch_init_check();
++ # else
+      result = gui_mch_init_check();
++ # endif
+  #endif
+      return result;
+  }
+*** ../vim-7.3.519/src/gui_gtk_x11.c   2011-10-26 11:36:21.000000000 +0200
+--- src/gui_gtk_x11.c  2012-05-18 17:00:45.000000000 +0200
+***************
+*** 1414,1420 ****
+  }
+  
+  /*
+!  * Check if the GUI can be started.  Called before gvimrc is sourced.
+   * Return OK or FAIL.
+   */
+      int
+--- 1414,1442 ----
+  }
+  
+  /*
+!  * Check if the GUI can be started.  Called before gvimrc is sourced and
+!  * before fork().
+!  * Return OK or FAIL.
+!  */
+!     int
+! gui_mch_early_init_check(void)
+! {
+!     char_u *p;
+! 
+!     /* Guess that when $DISPLAY isn't set the GUI can't start. */
+!     p = mch_getenv((char_u *)"DISPLAY");
+!     if (p == NULL || *p == NUL)
+!     {
+!      gui.dying = TRUE;
+!      EMSG(_((char *)e_opendisp));
+!      return FAIL;
+!     }
+!     return OK;
+! }
+! 
+! /*
+!  * Check if the GUI can be started.  Called before gvimrc is sourced but after
+!  * fork().
+   * Return OK or FAIL.
+   */
+      int
+***************
+*** 3050,3056 ****
+  
+      for (i = 0; i < (int)N_SELECTION_TARGETS; ++i)
+      {
+!      /* OpenOffice tries to use TARGET_HTML and fails when it doesn't
+        * return something, instead of trying another target. Therefore only
+        * offer TARGET_HTML when it works. */
+       if (!clip_html && selection_targets[i].info == TARGET_HTML)
+--- 3072,3078 ----
+  
+      for (i = 0; i < (int)N_SELECTION_TARGETS; ++i)
+      {
+!      /* OpenOffice tries to use TARGET_HTML and fails when we don't
+        * return something, instead of trying another target. Therefore only
+        * offer TARGET_HTML when it works. */
+       if (!clip_html && selection_targets[i].info == TARGET_HTML)
+*** ../vim-7.3.519/src/proto/gui_gtk_x11.pro   2011-08-10 17:44:41.000000000 +0200
+--- src/proto/gui_gtk_x11.pro  2012-05-18 16:54:28.000000000 +0200
+***************
+*** 4,9 ****
+--- 4,10 ----
+  void gui_mch_set_blinking __ARGS((long waittime, long on, long off));
+  void gui_mch_stop_blink __ARGS((void));
+  void gui_mch_start_blink __ARGS((void));
++ int gui_mch_early_init_check __ARGS((void));
+  int gui_mch_init_check __ARGS((void));
+  void gui_mch_show_tabline __ARGS((int showit));
+  int gui_mch_showing_tabline __ARGS((void));
+*** ../vim-7.3.519/src/version.c       2012-05-18 16:35:17.000000000 +0200
+--- src/version.c      2012-05-18 16:45:30.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     520,
+  /**/
+
+-- 
+Bad programs can be written in any language.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.521.patch0 b/vim/patches/vim-7.3.521.patch0
new file mode 100644 (file)
index 0000000..efe7122
--- /dev/null
@@ -0,0 +1,129 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.521
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.521
+Problem:    Using "z=" on a multi-byte character may cause a crash.
+Solution:   Don't use strlen() on an int pointer.
+Files:     src/spell.c
+
+
+*** ../vim-7.3.520/src/spell.c 2012-01-10 22:26:12.000000000 +0100
+--- src/spell.c        2012-05-18 18:01:58.000000000 +0200
+***************
+*** 14494,14506 ****
+      int              p0 = -333;
+      int              c0;
+      int              did_white = FALSE;
+  
+      /*
+       * Convert the multi-byte string to a wide-character string.
+       * Remove accents, if wanted.  We actually remove all non-word characters.
+       * But keep white space.
+       */
+!     n = 0;
+      for (s = inword; *s != NUL; )
+      {
+       t = s;
+--- 14494,14508 ----
+      int              p0 = -333;
+      int              c0;
+      int              did_white = FALSE;
++     int              wordlen;
++ 
+  
+      /*
+       * Convert the multi-byte string to a wide-character string.
+       * Remove accents, if wanted.  We actually remove all non-word characters.
+       * But keep white space.
+       */
+!     wordlen = 0;
+      for (s = inword; *s != NUL; )
+      {
+       t = s;
+***************
+*** 14521,14532 ****
+                   continue;
+           }
+       }
+!      word[n++] = c;
+      }
+!     word[n] = NUL;
+  
+      /*
+!      * This comes from Aspell phonet.cpp.
+       * Converted from C++ to C.  Added support for multi-byte chars.
+       * Changed to keep spaces.
+       */
+--- 14523,14534 ----
+                   continue;
+           }
+       }
+!      word[wordlen++] = c;
+      }
+!     word[wordlen] = NUL;
+  
+      /*
+!      * This algorithm comes from Aspell phonet.cpp.
+       * Converted from C++ to C.  Added support for multi-byte chars.
+       * Changed to keep spaces.
+       */
+***************
+*** 14711,14717 ****
+                           }
+                       if (k > k0)
+                           mch_memmove(word + i + k0, word + i + k,
+!                                  sizeof(int) * (STRLEN(word + i + k) + 1));
+  
+                       /* new "actual letter" */
+                       c = word[i];
+--- 14713,14719 ----
+                           }
+                       if (k > k0)
+                           mch_memmove(word + i + k0, word + i + k,
+!                                  sizeof(int) * (wordlen - (i + k) + 1));
+  
+                       /* new "actual letter" */
+                       c = word[i];
+***************
+*** 14739,14745 ****
+                           if (c != NUL)
+                               wres[reslen++] = c;
+                           mch_memmove(word, word + i + 1,
+!                                  sizeof(int) * (STRLEN(word + i + 1) + 1));
+                           i = 0;
+                           z0 = 1;
+                       }
+--- 14741,14747 ----
+                           if (c != NUL)
+                               wres[reslen++] = c;
+                           mch_memmove(word, word + i + 1,
+!                                     sizeof(int) * (wordlen - (i + 1) + 1));
+                           i = 0;
+                           z0 = 1;
+                       }
+*** ../vim-7.3.520/src/version.c       2012-05-18 17:03:14.000000000 +0200
+--- src/version.c      2012-05-18 18:06:29.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     521,
+  /**/
+
+-- 
+OLD WOMAN: King of the WHO?
+ARTHUR:    The Britons.
+OLD WOMAN: Who are the Britons?
+                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.522.patch0 b/vim/patches/vim-7.3.522.patch0
new file mode 100644 (file)
index 0000000..2f4d17c
--- /dev/null
@@ -0,0 +1,56 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.522
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.522
+Problem:    Crash in vim_realloc() when using MEM_PROFILE.
+Solution:   Avoid using a NULL argument. (Dominique Pelle)
+Files:     src/eval.c
+
+
+*** ../vim-7.3.521/src/eval.c  2012-05-18 12:06:58.000000000 +0200
+--- src/eval.c 2012-05-18 18:19:25.000000000 +0200
+***************
+*** 14643,14649 ****
+                   long growmin  = (long)((p - start) * 2 + prevlen);
+                   prevsize = grow50pc > growmin ? grow50pc : growmin;
+               }
+!              if ((newprev = vim_realloc(prev, prevsize)) == NULL)
+               {
+                   do_outofmem_msg((long_u)prevsize);
+                   failed = TRUE;
+--- 14643,14651 ----
+                   long growmin  = (long)((p - start) * 2 + prevlen);
+                   prevsize = grow50pc > growmin ? grow50pc : growmin;
+               }
+!              newprev = prev == NULL ? alloc(prevsize)
+!                                              : vim_realloc(prev, prevsize);
+!              if (newprev == NULL)
+               {
+                   do_outofmem_msg((long_u)prevsize);
+                   failed = TRUE;
+*** ../vim-7.3.521/src/version.c       2012-05-18 18:07:57.000000000 +0200
+--- src/version.c      2012-05-18 18:33:36.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     522,
+  /**/
+
+-- 
+ARTHUR:    ... and I am your king ....
+OLD WOMAN: Ooooh!  I didn't know we had a king.  I thought we were an
+           autonomous collective ...
+                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.523.patch0 b/vim/patches/vim-7.3.523.patch0
new file mode 100644 (file)
index 0000000..7eec3ea
--- /dev/null
@@ -0,0 +1,103 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.523
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.523
+Problem:    ":diffupdate" doesn't check for files changed elsewhere.
+Solution:   Add the ! flag. (Christian Brabandt)
+Files:     runtime/doc/diff.txt, src/diff.c, src/ex_cmds.h
+
+
+*** ../vim-7.3.522/runtime/doc/diff.txt        2010-08-15 21:57:16.000000000 +0200
+--- runtime/doc/diff.txt       2012-05-18 18:41:49.000000000 +0200
+***************
+*** 178,184 ****
+  nodiff" before hiding it.
+  
+                                                       *:diffu* *:diffupdate*
+! :diffu[pdate]                        Update the diff highlighting and folds.
+  
+  Vim attempts to keep the differences updated when you make changes to the
+  text.  This mostly takes care of inserted and deleted lines.  Changes within a
+--- 178,184 ----
+  nodiff" before hiding it.
+  
+                                                       *:diffu* *:diffupdate*
+! :diffu[pdate][!]             Update the diff highlighting and folds.
+  
+  Vim attempts to keep the differences updated when you make changes to the
+  text.  This mostly takes care of inserted and deleted lines.  Changes within a
+***************
+*** 187,192 ****
+--- 187,195 ----
+  
+       :diffupdate
+  
++ If the ! is included Vim will check if the file was changed externally and
++ needs to be reloaded.  It will prompt for each changed file, like `:checktime`
++ was used.
+  
+  Vim will show filler lines for lines that are missing in one window but are
+  present in another.  These lines were inserted in another file or deleted in
+*** ../vim-7.3.522/src/diff.c  2010-09-21 16:56:29.000000000 +0200
+--- src/diff.c 2012-05-18 18:45:09.000000000 +0200
+***************
+*** 783,788 ****
+--- 783,797 ----
+       goto theend;
+      }
+  
++     /* :diffupdate! */
++     if (eap != NULL && eap->forceit)
++      for (idx_new = idx_orig; idx_new < DB_COUNT; ++idx_new)
++      {
++          buf = curtab->tp_diffbuf[idx_new];
++          if (buf_valid(buf))
++              buf_check_timestamp(buf, FALSE);
++      }
++ 
+      /* Write the first buffer to a tempfile. */
+      buf = curtab->tp_diffbuf[idx_orig];
+      if (diff_write(buf, tmp_orig) == FAIL)
+*** ../vim-7.3.522/src/ex_cmds.h       2012-02-13 00:01:38.000000000 +0100
+--- src/ex_cmds.h      2012-05-18 18:37:56.000000000 +0200
+***************
+*** 304,310 ****
+  EX(CMD_display,              "display",      ex_display,
+                       EXTRA|NOTRLCOM|TRLBAR|SBOXOK|CMDWIN),
+  EX(CMD_diffupdate,   "diffupdate",   ex_diffupdate,
+!                      TRLBAR),
+  EX(CMD_diffget,              "diffget",      ex_diffgetput,
+                       RANGE|EXTRA|TRLBAR|MODIFY),
+  EX(CMD_diffoff,              "diffoff",      ex_diffoff,
+--- 304,310 ----
+  EX(CMD_display,              "display",      ex_display,
+                       EXTRA|NOTRLCOM|TRLBAR|SBOXOK|CMDWIN),
+  EX(CMD_diffupdate,   "diffupdate",   ex_diffupdate,
+!                      BANG|TRLBAR),
+  EX(CMD_diffget,              "diffget",      ex_diffgetput,
+                       RANGE|EXTRA|TRLBAR|MODIFY),
+  EX(CMD_diffoff,              "diffoff",      ex_diffoff,
+*** ../vim-7.3.522/src/version.c       2012-05-18 18:34:15.000000000 +0200
+--- src/version.c      2012-05-18 18:39:13.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     523
+  /**/
+
+-- 
+"The future's already arrived - it's just not evenly distributed yet."
+               -- William Gibson
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.524.patch0 b/vim/patches/vim-7.3.524.patch0
new file mode 100644 (file)
index 0000000..80d7baf
--- /dev/null
@@ -0,0 +1,46 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.524
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.524 (after 7.3.523)
+Problem:    Missing comma.
+Solution:   Add the comma.
+Files:     src/version.c
+
+
+*** ../vim-7.3.523/src/version.c       2012-05-18 18:47:11.000000000 +0200
+--- src/version.c      2012-05-18 21:52:26.000000000 +0200
+***************
+*** 715,721 ****
+  static int included_patches[] =
+  {   /* Add new patch number below this line */
+  /**/
+!     523
+  /**/
+      522,
+  /**/
+--- 715,723 ----
+  static int included_patches[] =
+  {   /* Add new patch number below this line */
+  /**/
+!     524,
+! /**/
+!     523,
+  /**/
+      522,
+  /**/
+
+-- 
+DENNIS: You can't expect to wield supreme executive power just 'cause some
+        watery tart threw a sword at you!
+                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.525.patch0 b/vim/patches/vim-7.3.525.patch0
new file mode 100644 (file)
index 0000000..c9741cb
--- /dev/null
@@ -0,0 +1,55 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.525
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.525
+Problem:    Compiler warning on 64 bit MS-Windows.
+Solution:   Add type cast. (Mike Williams)
+Files:     src/ex_getln.c
+
+
+*** ../vim-7.3.524/src/ex_getln.c      2012-04-30 18:48:38.000000000 +0200
+--- src/ex_getln.c     2012-05-23 20:33:16.000000000 +0200
+***************
+*** 5263,5269 ****
+  {
+      static char_u compl[2] = { NUL, NUL };
+      char *short_names = ":=@>?/";
+!     int short_names_count = STRLEN(short_names);
+      int history_name_count = sizeof(history_names) / sizeof(char *) - 1;
+  
+      if (idx < short_names_count)
+--- 5263,5269 ----
+  {
+      static char_u compl[2] = { NUL, NUL };
+      char *short_names = ":=@>?/";
+!     int short_names_count = (int)STRLEN(short_names);
+      int history_name_count = sizeof(history_names) / sizeof(char *) - 1;
+  
+      if (idx < short_names_count)
+*** ../vim-7.3.524/src/version.c       2012-05-18 21:53:29.000000000 +0200
+--- src/version.c      2012-05-25 11:01:51.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     525,
+  /**/
+
+-- 
+For humans, honesty is a matter of degree.  Engineers are always honest in
+matters of technology and human relationships.  That's why it's a good idea
+to keep engineers away from customers, romantic interests, and other people
+who can't handle the truth.
+                               (Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.526.patch0 b/vim/patches/vim-7.3.526.patch0
new file mode 100644 (file)
index 0000000..036d401
--- /dev/null
@@ -0,0 +1,59 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.526
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.526
+Problem:    Confusing indenting for #ifdef.
+Solution:   Remove and add indent. (Elias Diem)
+Files:     src/normal.c
+
+
+*** ../vim-7.3.525/src/normal.c        2012-04-30 18:18:43.000000000 +0200
+--- src/normal.c       2012-05-23 20:35:13.000000000 +0200
+***************
+*** 29,37 ****
+  static void  set_vcount_ca __ARGS((cmdarg_T *cap, int *set_prevcount));
+  #endif
+  static int
+! # ifdef __BORLANDC__
+! _RTLENTRYF
+! # endif
+               nv_compare __ARGS((const void *s1, const void *s2));
+  static int   find_command __ARGS((int cmdchar));
+  static void  op_colon __ARGS((oparg_T *oap));
+--- 29,37 ----
+  static void  set_vcount_ca __ARGS((cmdarg_T *cap, int *set_prevcount));
+  #endif
+  static int
+! #ifdef __BORLANDC__
+!     _RTLENTRYF
+! #endif
+               nv_compare __ARGS((const void *s1, const void *s2));
+  static int   find_command __ARGS((int cmdchar));
+  static void  op_colon __ARGS((oparg_T *oap));
+*** ../vim-7.3.525/src/version.c       2012-05-25 11:02:34.000000000 +0200
+--- src/version.c      2012-05-25 11:03:37.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     526,
+  /**/
+
+-- 
+While it's true that many normal people whould prefer not to _date_ an
+engineer, most normal people harbor an intense desire to _mate_ with them,
+thus producing engineerlike children who will have high-paying jobs long
+before losing their virginity.
+                               (Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.527.patch0 b/vim/patches/vim-7.3.527.patch0
new file mode 100644 (file)
index 0000000..0c6af2b
--- /dev/null
@@ -0,0 +1,59 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.527
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=latin1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.527
+Problem:    Clang complains about non-ASCII characters in a string.
+Solution:   Change to \x88 form. (Dominique Pelle)
+Files:     src/charset.c
+
+
+*** ../vim-7.3.526/src/charset.c       2012-01-26 13:40:04.000000000 +0100
+--- src/charset.c      2012-05-25 11:49:58.000000000 +0200
+***************
+*** 1602,1611 ****
+  #define LATIN1LOWER 'l'
+  #define LATIN1UPPER 'U'
+  
+- /*                                                                 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]%_'abcdefghijklmnopqrstuvwxyz{|}~                                  Â¡Â¢Â£Â¤Â¥Â¦Â§Â¨Â©ÂªÂ«Â¬Â­Â®Â¯Â°Â±Â²Â³Â´ÂµÂ¶Â·Â¸Â¹ÂºÂ»Â¼Â½Â¾Â¿Ã€ÃÂÃÄÅÆÇÈÉÊËÌÃÃŽÃÃÑÒÓÔÕÖ×ØÙÚÛÜÃÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ */
+  static char_u latin1flags[257] = "                                                                 UUUUUUUUUUUUUUUUUUUUUUUUUU      llllllllllllllllllllllllll                                                                     UUUUUUUUUUUUUUUUUUUUUUU UUUUUUUllllllllllllllllllllllll llllllll";
+! static char_u latin1upper[257] = "                                 !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~\7f\80\81\82\83\84\85\86\87\88\89\8a\8b\8c\8d\8e\8f\90\91\92\93\94\95\96\97\98\99\9a\9b\9c\9d\9e\9f ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÃÂÃÄÅÆÇÈÉÊËÌÃÃŽÃÃÑÒÓÔÕÖ×ØÙÚÛÜÃÞßÀÃÂÃÄÅÆÇÈÉÊËÌÃÃŽÃÃÑÒÓÔÕÖ÷ØÙÚÛÜÃÞÿ";
+! static char_u latin1lower[257] = "                                 !\"#$%&'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\7f\80\81\82\83\84\85\86\87\88\89\8a\8b\8c\8d\8e\8f\90\91\92\93\94\95\96\97\98\99\9a\9b\9c\9d\9e\9f ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿àáâãäåæçèéêëìíîïðñòóôõö×øùúûüýþßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ";
+  
+      int
+  vim_islower(c)
+--- 1602,1610 ----
+  #define LATIN1LOWER 'l'
+  #define LATIN1UPPER 'U'
+  
+  static char_u latin1flags[257] = "                                                                 UUUUUUUUUUUUUUUUUUUUUUUUUU      llllllllllllllllllllllllll                                                                     UUUUUUUUUUUUUUUUUUUUUUU UUUUUUUllllllllllllllllllllllll llllllll";
+! static char_u latin1upper[257] = "                                 !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~\x7f\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xf7\xd8\xd9\xda\xdb\xdc\xdd\xde\xff";
+! static char_u latin1lower[257] = "                                 !\"#$%&'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xd7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff";
+  
+      int
+  vim_islower(c)
+*** ../vim-7.3.526/src/version.c       2012-05-25 11:04:34.000000000 +0200
+--- src/version.c      2012-05-25 11:52:06.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     527,
+  /**/
+
+-- 
+An alien life briefly visits earth.  Just before departing it leaves a
+message in the dust on the back of a white van.  The world is shocked
+and wants to know what it means.  After months of studies the worlds
+best linguistic scientists are able to decipher the message: "Wash me!".
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.528.patch0 b/vim/patches/vim-7.3.528.patch0
new file mode 100644 (file)
index 0000000..41084ad
--- /dev/null
@@ -0,0 +1,171 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.528
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.528
+Problem:    Crash when closing last window in a tab. (Alex Efros)
+Solution:   Use common code in close_last_window_tabpage(). (Christian
+           Brabandt)
+Files:     src/window.c
+
+
+*** ../vim-7.3.527/src/window.c        2012-03-16 19:07:54.000000000 +0100
+--- src/window.c       2012-05-25 12:25:16.000000000 +0200
+***************
+*** 23,28 ****
+--- 23,29 ----
+  static void win_totop __ARGS((int size, int flags));
+  static void win_equal_rec __ARGS((win_T *next_curwin, int current, frame_T *topfr, int dir, int col, int row, int width, int height));
+  static int last_window __ARGS((void));
++ static int close_last_window_tabpage __ARGS((win_T *win, int free_buf, tabpage_T *prev_curtab));
+  static win_T *win_free_mem __ARGS((win_T *win, int *dirp, tabpage_T *tp));
+  static frame_T *win_altframe __ARGS((win_T *win, tabpage_T *tp));
+  static tabpage_T *alt_tabpage __ARGS((void));
+***************
+*** 2105,2110 ****
+--- 2106,2147 ----
+  }
+  
+  /*
++  * Close the possibly last window in a tab page.
++  * Returns TRUE when the window was closed already.
++  */
++     static int
++ close_last_window_tabpage(win, free_buf, prev_curtab)
++     win_T    *win;
++     int              free_buf;
++     tabpage_T   *prev_curtab;
++ {
++     if (firstwin == lastwin)
++     {
++      /*
++       * Closing the last window in a tab page.  First go to another tab
++       * page and then close the window and the tab page.  This avoids that
++       * curwin and curtab are invalid while we are freeing memory, they may
++       * be used in GUI events.
++       */
++      goto_tabpage_tp(alt_tabpage());
++      redraw_tabline = TRUE;
++ 
++      /* Safety check: Autocommands may have closed the window when jumping
++       * to the other tab page. */
++      if (valid_tabpage(prev_curtab) && prev_curtab->tp_firstwin == win)
++      {
++          int     h = tabline_height();
++ 
++          win_close_othertab(win, free_buf, prev_curtab);
++          if (h != tabline_height())
++              shell_new_rows();
++      }
++      return TRUE;
++     }
++     return FALSE;
++ }
++ 
++ /*
+   * Close window "win".  Only works for the current tab page.
+   * If "free_buf" is TRUE related buffer may be unloaded.
+   *
+***************
+*** 2143,2171 ****
+      }
+  #endif
+  
+!     /*
+!      * When closing the last window in a tab page first go to another tab
+!      * page and then close the window and the tab page.  This avoids that
+!      * curwin and curtab are not invalid while we are freeing memory, they may
+!      * be used in GUI events.
+!      */
+!     if (firstwin == lastwin)
+!     {
+!      goto_tabpage_tp(alt_tabpage());
+!      redraw_tabline = TRUE;
+! 
+!      /* Safety check: Autocommands may have closed the window when jumping
+!       * to the other tab page. */
+!      if (valid_tabpage(prev_curtab) && prev_curtab->tp_firstwin == win)
+!      {
+!          int     h = tabline_height();
+! 
+!          win_close_othertab(win, free_buf, prev_curtab);
+!          if (h != tabline_height())
+!              shell_new_rows();
+!      }
+!      return;
+!     }
+  
+      /* When closing the help window, try restoring a snapshot after closing
+       * the window.  Otherwise clear the snapshot, it's now invalid. */
+--- 2180,2190 ----
+      }
+  #endif
+  
+!     /* When closing the last window in a tab page first go to another tab page
+!      * and then close the window and the tab page to avoid that curwin and
+!      * curtab are invalid while we are freeing memory. */
+!     if (close_last_window_tabpage(win, free_buf, prev_curtab))
+!       return;
+  
+      /* When closing the help window, try restoring a snapshot after closing
+       * the window.  Otherwise clear the snapshot, it's now invalid. */
+***************
+*** 2225,2231 ****
+  
+      /* Autocommands may have closed the window already, or closed the only
+       * other window or moved to another tab page. */
+!     if (!win_valid(win) || last_window() || curtab != prev_curtab)
+       return;
+  
+      /* Free the memory used for the window and get the window that received
+--- 2244,2251 ----
+  
+      /* Autocommands may have closed the window already, or closed the only
+       * other window or moved to another tab page. */
+!     if (!win_valid(win) || last_window() || curtab != prev_curtab
+!          || close_last_window_tabpage(win, free_buf, prev_curtab))
+       return;
+  
+      /* Free the memory used for the window and get the window that received
+***************
+*** 2310,2316 ****
+  
+  /*
+   * Close window "win" in tab page "tp", which is not the current tab page.
+!  * This may be the last window ih that tab page and result in closing the tab,
+   * thus "tp" may become invalid!
+   * Caller must check if buffer is hidden and whether the tabline needs to be
+   * updated.
+--- 2330,2336 ----
+  
+  /*
+   * Close window "win" in tab page "tp", which is not the current tab page.
+!  * This may be the last window in that tab page and result in closing the tab,
+   * thus "tp" may become invalid!
+   * Caller must check if buffer is hidden and whether the tabline needs to be
+   * updated.
+*** ../vim-7.3.527/src/version.c       2012-05-25 11:56:06.000000000 +0200
+--- src/version.c      2012-05-25 12:38:25.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     528,
+  /**/
+
+-- 
+For society, it's probably a good thing that engineers value function over
+appearance.  For example, you wouldn't want engineers to build nuclear power
+plants that only _look_ like they would keep all the radiation inside.
+                               (Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.529.patch0 b/vim/patches/vim-7.3.529.patch0
new file mode 100644 (file)
index 0000000..386baf1
--- /dev/null
@@ -0,0 +1,81 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.529
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.529
+Problem:    Using a count before "v" and "V" does not work (Kikyous)
+Solution:   Make the count select that many characters or lines. (Christian
+           Brabandt)
+Files:     src/normal.c
+
+
+*** ../vim-7.3.528/src/normal.c        2012-05-25 11:04:34.000000000 +0200
+--- src/normal.c       2012-05-25 13:12:06.000000000 +0200
+***************
+*** 7660,7672 ****
+      else                 /* start Visual mode */
+      {
+       check_visual_highlight();
+!      if (cap->count0)                    /* use previously selected part */
+       {
+!          if (resel_VIsual_mode == NUL)   /* there is none */
+!          {
+!              beep_flush();
+!              return;
+!          }
+           VIsual = curwin->w_cursor;
+  
+           VIsual_active = TRUE;
+--- 7660,7668 ----
+      else                 /* start Visual mode */
+      {
+       check_visual_highlight();
+!      if (cap->count0 > 0 && resel_VIsual_mode != NUL)
+       {
+!          /* use previously selected part */
+           VIsual = curwin->w_cursor;
+  
+           VIsual_active = TRUE;
+***************
+*** 7725,7730 ****
+--- 7721,7736 ----
+               /* start Select mode when 'selectmode' contains "cmd" */
+               may_start_select('c');
+           n_start_visual_mode(cap->cmdchar);
++          if (VIsual_mode != 'V' && *p_sel == 'e')
++              ++cap->count1;  /* include one more char */
++          if (cap->count0 > 0 && --cap->count1 > 0)
++          {
++              /* With a count select that many characters or lines. */
++              if (VIsual_mode == 'v' || VIsual_mode == Ctrl_V)
++                  nv_right(cap);
++              else if (VIsual_mode == 'V')
++                  nv_down(cap);
++          }
+       }
+      }
+  }
+*** ../vim-7.3.528/src/version.c       2012-05-25 12:38:57.000000000 +0200
+--- src/version.c      2012-05-25 12:59:58.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     529,
+  /**/
+
+-- 
+Normal people believe that if it ain't broke, don't fix it.  Engineers believe
+that if it ain't broke, it doesn't have enough features yet.
+                               (Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.530.patch0 b/vim/patches/vim-7.3.530.patch0
new file mode 100644 (file)
index 0000000..216117c
--- /dev/null
@@ -0,0 +1,50 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.530
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.530 (after 7.3.520)
+Problem:    Gvim does not work when 'guioptions' includes "f". (Davido)
+Solution:   Call gui_mch_init_check() when running GUI in the foreground.
+           (Yasuhiro Matsumoto)
+Files:     src/gui.c
+
+
+*** ../vim-7.3.529/src/gui.c   2012-05-18 17:03:13.000000000 +0200
+--- src/gui.c  2012-05-25 14:01:26.000000000 +0200
+***************
+*** 102,107 ****
+--- 102,111 ----
+      else
+  #endif
+      {
++      /* If there is 'f' in 'guioptions' and specify -g argument,
++       * gui_mch_init_check() was not called yet.  */
++      if (gui_mch_init_check() != OK)
++          exit(1);
+       gui_attempt_start();
+      }
+  
+*** ../vim-7.3.529/src/version.c       2012-05-25 13:12:33.000000000 +0200
+--- src/version.c      2012-05-25 14:05:46.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     530,
+  /**/
+
+-- 
+I think that you'll agree that engineers are very effective in their social
+interactions.  It's the "normal" people who are nuts.
+                               (Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.531.patch0 b/vim/patches/vim-7.3.531.patch0
new file mode 100644 (file)
index 0000000..652bdb7
--- /dev/null
@@ -0,0 +1,52 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.531
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.531 (after 7.3.530)
+Problem:    GUI does not work on MS-Windows.
+Solution:   Add the missing #ifdef. (Patrick Avery)
+Files:     src/gui.c
+
+
+*** ../vim-7.3.530/src/gui.c   2012-05-25 14:06:18.000000000 +0200
+--- src/gui.c  2012-05-27 00:34:51.000000000 +0200
+***************
+*** 102,111 ****
+--- 102,113 ----
+      else
+  #endif
+      {
++ #ifdef FEAT_GUI_GTK
+       /* If there is 'f' in 'guioptions' and specify -g argument,
+        * gui_mch_init_check() was not called yet.  */
+       if (gui_mch_init_check() != OK)
+           exit(1);
++ #endif
+       gui_attempt_start();
+      }
+  
+*** ../vim-7.3.530/src/version.c       2012-05-25 14:06:18.000000000 +0200
+--- src/version.c      2012-05-27 00:37:33.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     531,
+  /**/
+
+-- 
+I learned the customs and mannerisms of engineers by observing them, much the
+way Jane Goodall learned about the great apes, but without the hassle of
+grooming.
+                               (Scott Adams - The Dilbert principle)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.532.patch0 b/vim/patches/vim-7.3.532.patch0
new file mode 100644 (file)
index 0000000..071cab3
--- /dev/null
@@ -0,0 +1,53 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.532
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.532
+Problem:    Compiler warning from Clang.
+Solution:   Use a different way to point inside a string. (Dominique Pelle)
+Files:     src/syntax.c
+
+
+*** ../vim-7.3.531/src/syntax.c        2012-03-23 16:25:13.000000000 +0100
+--- src/syntax.c       2012-06-01 13:13:58.000000000 +0200
+***************
+*** 9476,9482 ****
+      int          cnt;
+      int          attr;
+  {
+!     msg_puts_attr((char_u *)("N \bI \b!  \b" + cnt / 11), attr);
+      msg_clr_eos();
+      out_flush();
+      ui_delay(cnt == 99 ? 40L : (long)cnt * 50L, FALSE);
+--- 9476,9482 ----
+      int          cnt;
+      int          attr;
+  {
+!     msg_puts_attr((char_u *)&("N \bI \b!  \b"[cnt / 11]), attr);
+      msg_clr_eos();
+      out_flush();
+      ui_delay(cnt == 99 ? 40L : (long)cnt * 50L, FALSE);
+*** ../vim-7.3.531/src/version.c       2012-05-27 00:37:45.000000000 +0200
+--- src/version.c      2012-06-01 13:14:51.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     532,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+8. You spend half of the plane trip with your laptop on your lap...and your
+   child in the overhead compartment.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.533.patch0 b/vim/patches/vim-7.3.533.patch0
new file mode 100644 (file)
index 0000000..1d71c8d
--- /dev/null
@@ -0,0 +1,46 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.533
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.533
+Problem:    Memory leak when writing undo file.
+Solution:   Free the ACL. (Dominique Pelle)
+Files:     src/undo.c
+
+
+*** ../vim-7.3.532/src/undo.c  2011-12-08 15:14:04.000000000 +0100
+--- src/undo.c 2012-06-01 13:38:42.000000000 +0200
+***************
+*** 1535,1540 ****
+--- 1535,1541 ----
+       /* For systems that support ACL: get the ACL from the original file. */
+       acl = mch_get_acl(buf->b_ffname);
+       mch_set_acl(file_name, acl);
++      mch_free_acl(acl);
+      }
+  #endif
+  
+*** ../vim-7.3.532/src/version.c       2012-06-01 13:18:48.000000000 +0200
+--- src/version.c      2012-06-01 13:39:16.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     533,
+  /**/
+
+-- 
+"How is your new girlfriend?"
+"90-60-90 man!"
+"What, pale purple?"
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.534.patch0 b/vim/patches/vim-7.3.534.patch0
new file mode 100644 (file)
index 0000000..618d6e4
--- /dev/null
@@ -0,0 +1,101 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.534
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.534 (after 7.3.461)
+Problem:    When using an InsertCharPre autocommand autoindent fails.
+Solution:   Proper handling of v:char. (Alexey Radkov)
+Files:     src/edit.c
+
+
+*** ../vim-7.3.533/src/edit.c  2012-05-18 16:35:17.000000000 +0200
+--- src/edit.c 2012-06-01 14:41:06.000000000 +0200
+***************
+*** 10108,10129 ****
+  do_insert_char_pre(c)
+      int c;
+  {
+!     char_u *res;
+  
+      /* Return quickly when there is nothing to do. */
+      if (!has_insertcharpre())
+       return NULL;
+  
+      /* Lock the text to avoid weird things from happening. */
+      ++textlock;
+!     set_vim_var_char(c);  /* set v:char */
+  
+      if (apply_autocmds(EVENT_INSERTCHARPRE, NULL, NULL, FALSE, curbuf))
+!      /* Get the new value of v:char.  It may be empty or more than one
+!       * character. */
+!      res = vim_strsave(get_vim_var_str(VV_CHAR));
+!     else
+!      res = NULL;
+  
+      set_vim_var_string(VV_CHAR, NULL, -1);  /* clear v:char */
+      --textlock;
+--- 10108,10147 ----
+  do_insert_char_pre(c)
+      int c;
+  {
+!     char_u   *res;
+! #ifdef FEAT_MBYTE
+!     char_u   buf[MB_MAXBYTES + 1];
+! #else
+!     char_u   buf[2];
+! #endif
+  
+      /* Return quickly when there is nothing to do. */
+      if (!has_insertcharpre())
+       return NULL;
+  
++ #ifdef FEAT_MBYTE
++     if (has_mbyte)
++      buf[(*mb_char2bytes)(c, buf)] = NUL;
++     else
++ #endif
++     {
++      buf[0] = c;
++      buf[1] = NUL;
++     }
++ 
+      /* Lock the text to avoid weird things from happening. */
+      ++textlock;
+!     set_vim_var_string(VV_CHAR, buf, -1);  /* set v:char */
+  
++     res = NULL;
+      if (apply_autocmds(EVENT_INSERTCHARPRE, NULL, NULL, FALSE, curbuf))
+!     {
+!      /* Get the value of v:char.  It may be empty or more than one
+!       * character.  Only use it when changed, otherwise continue with the
+!       * original character to avoid breaking autoindent. */
+!      if (STRCMP(buf, get_vim_var_str(VV_CHAR)) != 0)
+!          res = vim_strsave(get_vim_var_str(VV_CHAR));
+!     }
+  
+      set_vim_var_string(VV_CHAR, NULL, -1);  /* clear v:char */
+      --textlock;
+*** ../vim-7.3.533/src/version.c       2012-06-01 13:46:06.000000000 +0200
+--- src/version.c      2012-06-01 14:42:19.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     534,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+11. You find yourself typing "com" after every period when using a word
+    processor.com
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.535.patch0 b/vim/patches/vim-7.3.535.patch0
new file mode 100644 (file)
index 0000000..e7f0f8a
--- /dev/null
@@ -0,0 +1,356 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.535
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.535
+Problem:    Many #ifdefs for MB_MAXBYTES.
+Solution:   Also define MB_MAXBYTES without the +multi_byte feature.  Fix
+           places where the buffer didn't include space for a NUL byte.
+Files:     src/arabic.c, src/edit.c, src/eval.c, src/getchar.c, src/mbyte.c,
+           src/misc1.c, src/screen.c, src/spell.c, src/vim.h
+
+
+*** ../vim-7.3.534/src/arabic.c        2010-08-15 21:57:28.000000000 +0200
+--- src/arabic.c       2012-06-01 14:59:37.000000000 +0200
+***************
+*** 1066,1072 ****
+  
+      if (curr_c != c && ccp != NULL)
+      {
+!      char_u buf[MB_MAXBYTES];
+  
+       /* Update the first byte of the character. */
+       (*mb_char2bytes)(curr_c, buf);
+--- 1066,1072 ----
+  
+      if (curr_c != c && ccp != NULL)
+      {
+!      char_u buf[MB_MAXBYTES + 1];
+  
+       /* Update the first byte of the character. */
+       (*mb_char2bytes)(curr_c, buf);
+*** ../vim-7.3.534/src/edit.c  2012-06-01 14:57:47.000000000 +0200
+--- src/edit.c 2012-06-01 15:01:49.000000000 +0200
+***************
+*** 1648,1658 ****
+  #define PC_STATUS_RIGHT      1       /* right halve of double-wide char */
+  #define PC_STATUS_LEFT       2       /* left halve of double-wide char */
+  #define PC_STATUS_SET        3       /* pc_bytes was filled */
+- #ifdef FEAT_MBYTE
+  static char_u pc_bytes[MB_MAXBYTES + 1]; /* saved bytes */
+- #else
+- static char_u pc_bytes[2];           /* saved bytes */
+- #endif
+  static int  pc_attr;
+  static int  pc_row;
+  static int  pc_col;
+--- 1648,1654 ----
+***************
+*** 6819,6829 ****
+      char_u   *s;
+  
+      vim_free(last_insert);
+- #ifdef FEAT_MBYTE
+      last_insert = alloc(MB_MAXBYTES * 3 + 5);
+- #else
+-     last_insert = alloc(6);
+- #endif
+      if (last_insert != NULL)
+      {
+       s = last_insert;
+--- 6815,6821 ----
+***************
+*** 6861,6867 ****
+      char_u   *s;
+  {
+  #ifdef FEAT_MBYTE
+!     char_u   temp[MB_MAXBYTES];
+      int              i;
+      int              len;
+  
+--- 6853,6859 ----
+      char_u   *s;
+  {
+  #ifdef FEAT_MBYTE
+!     char_u   temp[MB_MAXBYTES + 1];
+      int              i;
+      int              len;
+  
+***************
+*** 7423,7429 ****
+      int              cc;
+  {
+      int              n;
+!     char_u   buf[MB_MAXBYTES];
+      int              i;
+      int              c;
+  
+--- 7415,7421 ----
+      int              cc;
+  {
+      int              n;
+!     char_u   buf[MB_MAXBYTES + 1];
+      int              i;
+      int              c;
+  
+***************
+*** 10109,10119 ****
+      int c;
+  {
+      char_u   *res;
+- #ifdef FEAT_MBYTE
+      char_u   buf[MB_MAXBYTES + 1];
+- #else
+-     char_u   buf[2];
+- #endif
+  
+      /* Return quickly when there is nothing to do. */
+      if (!has_insertcharpre())
+--- 10101,10107 ----
+*** ../vim-7.3.534/src/eval.c  2012-05-18 18:34:15.000000000 +0200
+--- src/eval.c 2012-06-01 15:02:08.000000000 +0200
+***************
+*** 19170,19180 ****
+  set_vim_var_char(c)
+      int c;
+  {
+! #ifdef FEAT_MBYTE
+!     char_u   buf[MB_MAXBYTES];
+! #else
+!     char_u   buf[2];
+! #endif
+  
+  #ifdef FEAT_MBYTE
+      if (has_mbyte)
+--- 19170,19176 ----
+  set_vim_var_char(c)
+      int c;
+  {
+!     char_u   buf[MB_MAXBYTES + 1];
+  
+  #ifdef FEAT_MBYTE
+      if (has_mbyte)
+*** ../vim-7.3.534/src/getchar.c       2012-04-05 16:07:01.000000000 +0200
+--- src/getchar.c      2012-06-01 15:03:51.000000000 +0200
+***************
+*** 723,729 ****
+      int                              c;
+  #ifdef FEAT_MBYTE
+      int                              n;
+!     char_u                   buf[MB_MAXBYTES];
+      int                              i;
+  #endif
+  
+--- 723,729 ----
+      int                              c;
+  #ifdef FEAT_MBYTE
+      int                              n;
+!     char_u                   buf[MB_MAXBYTES + 1];
+      int                              i;
+  #endif
+  
+***************
+*** 1072,1078 ****
+      int          c;
+  {
+  #ifdef FEAT_MBYTE
+!     char_u   buf[MB_MAXBYTES];
+  #else
+      char_u   buf[4];
+  #endif
+--- 1072,1078 ----
+      int          c;
+  {
+  #ifdef FEAT_MBYTE
+!     char_u   buf[MB_MAXBYTES + 1];
+  #else
+      char_u   buf[4];
+  #endif
+***************
+*** 1547,1553 ****
+      int              c, c2;
+  #ifdef FEAT_MBYTE
+      int              n;
+!     char_u   buf[MB_MAXBYTES];
+      int              i;
+  #endif
+  
+--- 1547,1553 ----
+      int              c, c2;
+  #ifdef FEAT_MBYTE
+      int              n;
+!     char_u   buf[MB_MAXBYTES + 1];
+      int              i;
+  #endif
+  
+***************
+*** 4335,4345 ****
+      int              scol;           /* starting column of the abbr. */
+      int              j;
+      char_u   *s;
+- #ifdef FEAT_MBYTE
+      char_u   tb[MB_MAXBYTES + 4];
+- #else
+-     char_u   tb[4];
+- #endif
+      mapblock_T       *mp;
+  #ifdef FEAT_LOCALMAP
+      mapblock_T       *mp2;
+--- 4335,4341 ----
+*** ../vim-7.3.534/src/mbyte.c 2012-03-07 19:38:52.000000000 +0100
+--- src/mbyte.c        2012-06-01 15:04:27.000000000 +0200
+***************
+*** 708,714 ****
+            */
+           n = (i & 0x80) ? 2 : 1;
+  # else
+!          char buf[MB_MAXBYTES];
+  # ifdef X_LOCALE
+  #  ifndef mblen
+  #   define mblen _Xmblen
+--- 708,714 ----
+            */
+           n = (i & 0x80) ? 2 : 1;
+  # else
+!          char buf[MB_MAXBYTES + 1];
+  # ifdef X_LOCALE
+  #  ifndef mblen
+  #   define mblen _Xmblen
+***************
+*** 1953,1959 ****
+  /*
+   * Convert the character at screen position "off" to a sequence of bytes.
+   * Includes the composing characters.
+!  * "buf" must at least have the length MB_MAXBYTES.
+   * Only to be used when ScreenLinesUC[off] != 0.
+   * Returns the produced number of bytes.
+   */
+--- 1953,1959 ----
+  /*
+   * Convert the character at screen position "off" to a sequence of bytes.
+   * Includes the composing characters.
+!  * "buf" must at least have the length MB_MAXBYTES + 1.
+   * Only to be used when ScreenLinesUC[off] != 0.
+   * Returns the produced number of bytes.
+   */
+*** ../vim-7.3.534/src/misc1.c 2012-04-30 21:09:38.000000000 +0200
+--- src/misc1.c        2012-06-01 15:04:56.000000000 +0200
+***************
+*** 1932,1938 ****
+      int              c;
+  {
+  #if defined(FEAT_MBYTE) || defined(PROTO)
+!     char_u   buf[MB_MAXBYTES];
+      int              n;
+  
+      n = (*mb_char2bytes)(c, buf);
+--- 1932,1938 ----
+      int              c;
+  {
+  #if defined(FEAT_MBYTE) || defined(PROTO)
+!     char_u   buf[MB_MAXBYTES + 1];
+      int              n;
+  
+      n = (*mb_char2bytes)(c, buf);
+*** ../vim-7.3.534/src/screen.c        2012-03-23 16:25:13.000000000 +0100
+--- src/screen.c       2012-06-01 15:06:03.000000000 +0200
+***************
+*** 6621,6636 ****
+      int          row, col;
+      int          attr;
+  {
+- #ifdef FEAT_MBYTE
+      char_u   buf[MB_MAXBYTES + 1];
+  
+!     buf[(*mb_char2bytes)(c, buf)] = NUL;
+! #else
+!     char_u   buf[2];
+! 
+!     buf[0] = c;
+!     buf[1] = NUL;
+  #endif
+      screen_puts(buf, row, col, attr);
+  }
+  
+--- 6621,6637 ----
+      int          row, col;
+      int          attr;
+  {
+      char_u   buf[MB_MAXBYTES + 1];
+  
+! #ifdef FEAT_MBYTE
+!     if (has_mbyte)
+!      buf[(*mb_char2bytes)(c, buf)] = NUL;
+!     else
+  #endif
++     {
++      buf[0] = c;
++      buf[1] = NUL;
++     }
+      screen_puts(buf, row, col, attr);
+  }
+  
+*** ../vim-7.3.534/src/spell.c 2012-05-18 18:07:57.000000000 +0200
+--- src/spell.c        2012-06-01 15:06:30.000000000 +0200
+***************
+*** 13694,13700 ****
+  {
+      int              m1, m2;
+  #ifdef FEAT_MBYTE
+!     char_u   buf[MB_MAXBYTES];
+      hashitem_T  *hi;
+  
+      if (c1 >= 256)
+--- 13694,13700 ----
+  {
+      int              m1, m2;
+  #ifdef FEAT_MBYTE
+!     char_u   buf[MB_MAXBYTES + 1];
+      hashitem_T  *hi;
+  
+      if (c1 >= 256)
+*** ../vim-7.3.534/src/vim.h   2012-04-30 18:48:38.000000000 +0200
+--- src/vim.h  2012-06-01 14:59:28.000000000 +0200
+***************
+*** 1703,1708 ****
+--- 1703,1710 ----
+   * character of up to 6 bytes, or one 16-bit character of up to three bytes
+   * plus six following composing characters of three bytes each. */
+  # define MB_MAXBYTES 21
++ #else
++ # define MB_MAXBYTES 1
+  #endif
+  
+  #if (defined(FEAT_PROFILE) || defined(FEAT_RELTIME)) && !defined(PROTO)
+***************
+*** 2017,2022 ****
+--- 2019,2025 ----
+   #pragma warning(disable : 4312)
+  #endif
+  
++ /* Note: a NULL argument for vim_realloc() is not portable, don't use it. */
+  #if defined(MEM_PROFILE)
+  # define vim_realloc(ptr, size)  mem_realloc((ptr), (size))
+  #else
+*** ../vim-7.3.534/src/version.c       2012-06-01 14:57:47.000000000 +0200
+--- src/version.c      2012-06-01 15:08:20.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     535,
+  /**/
+
+-- 
+Me?  A skeptic?  I trust you have proof.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.536.patch0 b/vim/patches/vim-7.3.536.patch0
new file mode 100644 (file)
index 0000000..e0c3f76
--- /dev/null
@@ -0,0 +1,73 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.536
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.536
+Problem:    When spell checking the German sharp s is not seen as a word
+           character. (Aexl Bender)
+Solution:   In utf_islower() return true for the sharp s. Note: also need
+           updated spell file for this to take effect.
+Files:     src/mbyte.c
+
+
+*** ../vim-7.3.535/src/mbyte.c 2012-06-01 15:20:49.000000000 +0200
+--- src/mbyte.c        2012-06-01 16:50:41.000000000 +0200
+***************
+*** 2949,2955 ****
+  {
+       {0x61,0x7a,1,-32},
+       {0xb5,0xb5,-1,743},
+!      {0xe0,0xf6,1,-32},
+       {0xf8,0xfe,1,-32},
+       {0xff,0xff,-1,121},
+       {0x101,0x12f,2,-1},
+--- 2949,2955 ----
+  {
+       {0x61,0x7a,1,-32},
+       {0xb5,0xb5,-1,743},
+!      {0xe0,0xf6,1,-32},  /* 0xdf (German sharp s) is not upper-cased */
+       {0xf8,0xfe,1,-32},
+       {0xff,0xff,-1,121},
+       {0x101,0x12f,2,-1},
+***************
+*** 3129,3135 ****
+  utf_islower(a)
+      int              a;
+  {
+!     return (utf_toupper(a) != a);
+  }
+  
+  /*
+--- 3129,3136 ----
+  utf_islower(a)
+      int              a;
+  {
+!     /* German sharp s is lower case but has no upper case equivalent. */
+!     return (utf_toupper(a) != a) || a == 0xdf;
+  }
+  
+  /*
+*** ../vim-7.3.535/src/version.c       2012-06-01 15:20:49.000000000 +0200
+--- src/version.c      2012-06-01 17:45:17.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     536,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+16. You step out of your room and realize that your parents have moved and
+    you don't have a clue when it happened.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.537.patch0 b/vim/patches/vim-7.3.537.patch0
new file mode 100644 (file)
index 0000000..76b41c8
--- /dev/null
@@ -0,0 +1,47 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.537
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.537
+Problem:    Unecessary call to init_spell_chartab().
+Solution:   Delete the call.
+Files:     src/spell.c
+
+
+*** ../vim-7.3.536/src/spell.c 2012-06-01 15:20:49.000000000 +0200
+--- src/spell.c        2012-06-01 17:49:44.000000000 +0200
+***************
+*** 4721,4728 ****
+       int_wordlist = NULL;
+      }
+  
+-     init_spell_chartab();
+- 
+      vim_free(repl_to);
+      repl_to = NULL;
+      vim_free(repl_from);
+--- 4721,4726 ----
+*** ../vim-7.3.536/src/version.c       2012-06-01 17:46:52.000000000 +0200
+--- src/version.c      2012-06-01 17:49:08.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     537,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+17. You turn on your intercom when leaving the room so you can hear if new
+    e-mail arrives.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.538.patch0 b/vim/patches/vim-7.3.538.patch0
new file mode 100644 (file)
index 0000000..947fa65
--- /dev/null
@@ -0,0 +1,321 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.538
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.538
+Problem:    'efm' does not handle Tabs in pointer lines.
+Solution:   Add Tab support. Improve tests. (Lech Lorens)
+Files:     src/quickfix.c, src/testdir/test10.in, src/testdir/test10.ok
+
+
+*** ../vim-7.3.537/src/quickfix.c      2012-04-25 18:57:17.000000000 +0200
+--- src/quickfix.c     2012-06-01 18:24:07.000000000 +0200
+***************
+*** 247,253 ****
+                       {'t', "."},
+                       {'m', ".\\+"},
+                       {'r', ".*"},
+!                      {'p', "[- .]*"},
+                       {'v', "\\d\\+"},
+                       {'s', ".\\+"}
+                   };
+--- 247,253 ----
+                       {'t', "."},
+                       {'m', ".\\+"},
+                       {'r', ".*"},
+!                      {'p', "[-       .]*"},
+                       {'v', "\\d\\+"},
+                       {'s', ".\\+"}
+                   };
+***************
+*** 677,687 ****
+               }
+               if ((i = (int)fmt_ptr->addr[7]) > 0)            /* %p */
+               {
+                   if (regmatch.startp[i] == NULL || regmatch.endp[i] == NULL)
+                       continue;
+!                  col = (int)(regmatch.endp[i] - regmatch.startp[i] + 1);
+!                  if (*((char_u *)regmatch.startp[i]) != TAB)
+!                      use_viscol = TRUE;
+               }
+               if ((i = (int)fmt_ptr->addr[8]) > 0)            /* %v */
+               {
+--- 677,699 ----
+               }
+               if ((i = (int)fmt_ptr->addr[7]) > 0)            /* %p */
+               {
++                  char_u      *match_ptr;
++ 
+                   if (regmatch.startp[i] == NULL || regmatch.endp[i] == NULL)
+                       continue;
+!                  col = 0;
+!                  for (match_ptr = regmatch.startp[i];
+!                                 match_ptr != regmatch.endp[i]; ++match_ptr)
+!                  {
+!                      ++col;
+!                      if (*match_ptr == TAB)
+!                      {
+!                          col += 7;
+!                          col -= col % 8;
+!                      }
+!                  }
+!                  ++col;
+!                  use_viscol = TRUE;
+               }
+               if ((i = (int)fmt_ptr->addr[8]) > 0)            /* %v */
+               {
+*** ../vim-7.3.537/src/testdir/test10.in       2011-08-10 18:36:49.000000000 +0200
+--- src/testdir/test10.in      2012-06-01 18:22:40.000000000 +0200
+***************
+*** 8,48 ****
+  :7/start of errorfile/,/end of errorfile/w! Xerrorfile1
+  :7/start of errorfile/,/end of errorfile/-1w! Xerrorfile2
+  :/start of testfile/,/end of testfile/w! Xtestfile
+  :cf Xerrorfile2
+  :clast
+  :copen
+  :let a=w:quickfix_title
+  :wincmd p
+! gR\12=a\r\e
+  :cf Xerrorfile1
+! rA
+  :cn
+! rB
+  :cn
+! rC
+  :cn
+! rD
+  :cn
+! rE
+  :cn
+  :wincmd w
+  :let a=w:quickfix_title
+  :wincmd p
+! gR\12=a\r\e
+  :w! test.out             " Write contents of this file
+  :qa!
+  ENDTEST
+  
+  start of errorfile
+  "Xtestfile", line 4.12: 1506-045 (S) Undeclared identifier fd_set.
+! ï»¿"Xtestfile", line 7 col 19; this is an error
+  gcc -c -DHAVE_CONFIsing-prototypes -I/usr/X11R6/include  version.c
+! Xtestfile:13: parse error before `asd'
+  make: *** [vim] Error 1
+! in file "Xtestfile" linenr 16: there is an error
+  
+  2 returned
+! "Xtestfile", linenr 19: yet another problem
+  
+  Does anyone know what is the problem and how to correction it?
+  "Xtestfile", line 21 col 9: What is the title of the quickfix window?
+--- 8,88 ----
+  :7/start of errorfile/,/end of errorfile/w! Xerrorfile1
+  :7/start of errorfile/,/end of errorfile/-1w! Xerrorfile2
+  :/start of testfile/,/end of testfile/w! Xtestfile
++ :set efm+==%f=\\,\ line\ %l%*\\D%v%*[^\ ]\ %m
++ :set efm^=%AError\ in\ \"%f\"\ at\ line\ %l:,%Z%p^,%C%m
+  :cf Xerrorfile2
+  :clast
+  :copen
+  :let a=w:quickfix_title
+  :wincmd p
+! lgR\12=a\r\e
+  :cf Xerrorfile1
+! grA
+  :cn
+! gRLINE 6, COL 19\e
+  :cn
+! gRNO COLUMN SPECIFIED\e
+  :cn
+! gRAGAIN NO COLUMN\e
+  :cn
+! gRCOL 1\e
+  :cn
++ gRCOL 2\e
++ :cn
++ gRCOL 10\e
++ :cn
++ gRVCOL 10\e
++ :cn
++ grI
++ :cn
++ gR. SPACE POINTER\e
++ :cn
++ gR. DOT POINTER\e
++ :cn
++ gR. DASH POINTER\e
++ :cn
++ gR. TAB-SPACE POINTER\e
++ :clast
++ :cprev
++ :cprev
+  :wincmd w
+  :let a=w:quickfix_title
+  :wincmd p
+! lgR\12=a\r\e
+  :w! test.out             " Write contents of this file
+  :qa!
+  ENDTEST
+  
+  start of errorfile
+  "Xtestfile", line 4.12: 1506-045 (S) Undeclared identifier fd_set.
+! ï»¿"Xtestfile", line 6 col 19; this is an error
+  gcc -c -DHAVE_CONFIsing-prototypes -I/usr/X11R6/include  version.c
+! Xtestfile:9: parse error before `asd'
+  make: *** [vim] Error 1
+! in file "Xtestfile" linenr 10: there is an error
+  
+  2 returned
+! "Xtestfile", line 11 col 1; this is an error
+! "Xtestfile", line 12 col 2; this is another error
+! "Xtestfile", line 14:10; this is an error in column 10
+! =Xtestfile=, line 15:10; this is another error, but in vcol 10 this time
+! "Xtestfile", linenr 16: yet another problem
+! Error in "Xtestfile" at line 17:
+! x should be a dot
+!      xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 17
+!             ^
+! Error in "Xtestfile" at line 18:
+! x should be a dot
+!      xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 18
+! .............^
+! Error in "Xtestfile" at line 19:
+! x should be a dot
+!      xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 19
+! --------------^
+! Error in "Xtestfile" at line 20:
+! x should be a dot
+!      xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 20
+!             ^
+  
+  Does anyone know what is the problem and how to correction it?
+  "Xtestfile", line 21 col 9: What is the title of the quickfix window?
+***************
+*** 50,74 ****
+  end of errorfile
+  
+  start of testfile
+! line 2  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+! line 3  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+! line 4  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+! line 5  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+! line 6  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+! line 7  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+! line 8  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+! line 9  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+! line 10 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+! line 11 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+! line 12 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+! line 13 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+! line 14 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+! line 15 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+! line 16 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+! line 17 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+! line 18 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+! line 19 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+! line 20 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+! line 21 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+! line 22 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+  end of testfile
+--- 90,114 ----
+  end of errorfile
+  
+  start of testfile
+!      xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line  2
+!      xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line  3
+!      xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line  4
+!      xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line  5
+!      xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line  6
+!      xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line  7
+!      xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line  8
+!      xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line  9
+!      xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 10
+!      xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 11
+!      xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 12
+!      xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 13
+!      xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 14
+!      xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 15
+!      xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 16
+!      xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 17
+!      xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 18
+!      xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 19
+!      xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 20
+!      xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 21
+!      xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 22
+  end of testfile
+*** ../vim-7.3.537/src/testdir/test10.ok       2011-08-10 18:36:49.000000000 +0200
+--- src/testdir/test10.ok      2012-06-01 18:22:40.000000000 +0200
+***************
+*** 1,23 ****
+  start of testfile
+! line 2  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+! line 3  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+! line 4  xxxAxxxxxxxxxxxxxxxxxxxxxxxxxx
+! line 5  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+! line 6  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+! line 7  xxxxxxxxxxBxxxxxxxxxxxxxxxxxxx
+! line 8  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+! line 9  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+! line 10 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+! line 11 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+! line 12 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+! Cine 13 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+! line 14 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+! line 15 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+! Dine 16 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+! line 17 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+! line 18 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+! Eine 19 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+! line 20 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+! line 21 :cf Xerrorfile1xxxxxxxxxxxxxxx
+! line 22 :cf Xerrorfile2xxxxxxxxxxxxxxx
+  end of testfile
+--- 1,23 ----
+  start of testfile
+!      xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line  2
+!      xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line  3
+!      xxxxxxxxxxAxxxxxxxxxxxxxxxxxxx    line  4
+!      xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line  5
+!      xxxxxxxxxxxxxxxxxLINE 6, COL 19   line  6
+!      xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line  7
+!      xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line  8
+!      NO COLUMN SPECIFIEDxxxxxxxxxxx    line  9
+!      AGAIN NO COLUMNxxxxxxxxxxxxxxx    line 10
+! COL 1        xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 11
+!      COL 2xxxxxxxxxxxxxxxxxxxxxxxxx    line 12
+!      xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 13
+!      xxxxxxxxCOL 10xxxxxxxxxxxxxxxx    line 14
+!      xVCOL 10xxxxxxxxxxxxxxxxxxxxxx    line 15
+!      Ixxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 16
+!      xxxx. SPACE POINTERxxxxxxxxxxx    line 17
+!      xxxxx. DOT POINTERxxxxxxxxxxxx    line 18
+!      xxxxxx. DASH POINTERxxxxxxxxxx    line 19
+!      xxxxxxx. TAB-SPACE POINTERxxxx    line 20
+!      xxxxxxxx:cf Xerrorfile1xxxxxxx    line 21
+!      xxxxxxxx:cf Xerrorfile2xxxxxxx    line 22
+  end of testfile
+*** ../vim-7.3.537/src/version.c       2012-06-01 17:49:51.000000000 +0200
+--- src/version.c      2012-06-01 18:22:27.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     538,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+18. Your wife drapes a blond wig over your monitor to remind you of what she
+    looks like.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.539.patch0 b/vim/patches/vim-7.3.539.patch0
new file mode 100644 (file)
index 0000000..267c076
--- /dev/null
@@ -0,0 +1,51 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.539
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.539
+Problem:    Redrawing a character on the command line does not work properly
+           for multi-byte charactes.
+Solution:   Count the number of bytes in a character. (Yukihiro Nakadaira)
+Files:     src/ex_getln.c
+
+
+*** ../vim-7.3.538/src/ex_getln.c      2012-05-25 11:02:34.000000000 +0200
+--- src/ex_getln.c     2012-06-06 11:50:37.000000000 +0200
+***************
+*** 2764,2769 ****
+--- 2764,2774 ----
+      msg_no_more = TRUE;
+      if (ccline.cmdlen == ccline.cmdpos)
+       msg_putchar(' ');
++ #ifdef FEAT_MBYTE
++     else if (has_mbyte)
++      draw_cmdline(ccline.cmdpos,
++                             (*mb_ptr2len)(ccline.cmdbuff + ccline.cmdpos));
++ #endif
+      else
+       draw_cmdline(ccline.cmdpos, 1);
+      msg_no_more = FALSE;
+*** ../vim-7.3.538/src/version.c       2012-06-01 18:34:37.000000000 +0200
+--- src/version.c      2012-06-06 12:02:45.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     539,
+  /**/
+
+-- 
+If they don't keep on exercising their lips, he thought, their brains
+start working.
+               -- Douglas Adams, "The Hitchhiker's Guide to the Galaxy"
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.540.patch0 b/vim/patches/vim-7.3.540.patch0
new file mode 100644 (file)
index 0000000..6793eb4
--- /dev/null
@@ -0,0 +1,55 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.540
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.540
+Problem:    Cursor is left on the text instead of the command line.
+Solution:   Don't call setcursor() in command line mode.
+Files:     src/getchar.c
+
+
+*** ../vim-7.3.539/src/getchar.c       2012-06-01 15:20:49.000000000 +0200
+--- src/getchar.c      2012-06-06 11:58:05.000000000 +0200
+***************
+*** 2819,2825 ****
+                       edit_unputchar();
+                   if (State & CMDLINE)
+                       unputcmdline();
+!                  setcursor();        /* put cursor back where it belongs */
+               }
+  
+               if (c < 0)
+--- 2819,2826 ----
+                       edit_unputchar();
+                   if (State & CMDLINE)
+                       unputcmdline();
+!                  else
+!                      setcursor();    /* put cursor back where it belongs */
+               }
+  
+               if (c < 0)
+*** ../vim-7.3.539/src/version.c       2012-06-06 12:02:57.000000000 +0200
+--- src/version.c      2012-06-06 12:05:22.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     540,
+  /**/
+
+-- 
+"Making it up?  Why should I want to make anything up?  Life's bad enough
+as it is without wanting to invent any more of it."
+               -- Marvin, the Paranoid Android in Douglas Adams'
+                  "The Hitchhiker's Guide to the Galaxy"
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.541.patch0 b/vim/patches/vim-7.3.541.patch0
new file mode 100644 (file)
index 0000000..133b82d
--- /dev/null
@@ -0,0 +1,1090 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.541
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.541
+Problem:    When joining lines comment leaders need to be removed manually.
+Solution:   Add the 'j' flag to 'formatoptions'. (Lech Lorens)
+Files:     runtime/doc/change.txt, src/edit.c, src/ex_docmd.c, src/misc1.c,
+           src/normal.c, src/ops.c, src/option.h, src/proto/misc1.pro,
+           src/proto/ops.pro, src/search.c, src/testdir/test29.in,
+           src/testdir/test29.ok
+
+
+*** ../vim-7.3.540/runtime/doc/change.txt      2011-05-05 14:26:37.000000000 +0200
+--- runtime/doc/change.txt     2012-06-06 13:05:04.000000000 +0200
+***************
+*** 1495,1500 ****
+--- 1522,1533 ----
+       characters.  Overruled by the 'M' flag.
+  1    Don't break a line after a one-letter word.  It's broken before it
+       instead (if possible).
++ j    Where it makes sense, remove a comment leader when joining lines.  For
++      example, joining:
++              int i;   // the index ~
++                       // in the list ~
++      Becomes:
++              int i;   // the index in the list ~
+  
+  
+  With 't' and 'c' you can specify when Vim performs auto-wrapping:
+*** ../vim-7.3.540/src/edit.c  2012-06-01 15:20:49.000000000 +0200
+--- src/edit.c 2012-06-06 13:00:29.000000000 +0200
+***************
+*** 5847,5853 ****
+        * Need to remove existing (middle) comment leader and insert end
+        * comment leader.  First, check what comment leader we can find.
+        */
+!      i = get_leader_len(line = ml_get_curline(), &p, FALSE);
+       if (i > 0 && vim_strchr(p, COM_MIDDLE) != NULL) /* Just checking */
+       {
+           /* Skip middle-comment string */
+--- 5847,5853 ----
+        * Need to remove existing (middle) comment leader and insert end
+        * comment leader.  First, check what comment leader we can find.
+        */
+!      i = get_leader_len(line = ml_get_curline(), &p, FALSE, TRUE);
+       if (i > 0 && vim_strchr(p, COM_MIDDLE) != NULL) /* Just checking */
+       {
+           /* Skip middle-comment string */
+***************
+*** 6085,6091 ****
+  
+       /* Don't break until after the comment leader */
+       if (do_comments)
+!          leader_len = get_leader_len(ml_get_curline(), NULL, FALSE);
+       else
+           leader_len = 0;
+  
+--- 6085,6091 ----
+  
+       /* Don't break until after the comment leader */
+       if (do_comments)
+!          leader_len = get_leader_len(ml_get_curline(), NULL, FALSE, TRUE);
+       else
+           leader_len = 0;
+  
+***************
+*** 6411,6417 ****
+      /* With the 'c' flag in 'formatoptions' and 't' missing: only format
+       * comments. */
+      if (has_format_option(FO_WRAP_COMS) && !has_format_option(FO_WRAP)
+!                                   && get_leader_len(old, NULL, FALSE) == 0)
+       return;
+  #endif
+  
+--- 6411,6417 ----
+      /* With the 'c' flag in 'formatoptions' and 't' missing: only format
+       * comments. */
+      if (has_format_option(FO_WRAP_COMS) && !has_format_option(FO_WRAP)
+!                                   && get_leader_len(old, NULL, FALSE, TRUE) == 0)
+       return;
+  #endif
+  
+***************
+*** 8565,8571 ****
+      {
+       temp = curwin->w_cursor.col;
+       if (!can_bs(BS_EOL)             /* only if "eol" included */
+!              || do_join(2, FALSE, TRUE) == FAIL)
+           vim_beep();
+       else
+           curwin->w_cursor.col = temp;
+--- 8565,8571 ----
+      {
+       temp = curwin->w_cursor.col;
+       if (!can_bs(BS_EOL)             /* only if "eol" included */
+!              || do_join(2, FALSE, TRUE, FALSE) == FAIL)
+           vim_beep();
+       else
+           curwin->w_cursor.col = temp;
+***************
+*** 8746,8752 ****
+                       ptr[len - 1] = NUL;
+               }
+  
+!              (void)do_join(2, FALSE, FALSE);
+               if (temp == NUL && gchar_cursor() != NUL)
+                   inc_cursor();
+           }
+--- 8746,8752 ----
+                       ptr[len - 1] = NUL;
+               }
+  
+!              (void)do_join(2, FALSE, FALSE, FALSE);
+               if (temp == NUL && gchar_cursor() != NUL)
+                   inc_cursor();
+           }
+*** ../vim-7.3.540/src/ex_docmd.c      2012-04-30 18:48:38.000000000 +0200
+--- src/ex_docmd.c     2012-06-06 13:00:29.000000000 +0200
+***************
+*** 8545,8551 ****
+       }
+       ++eap->line2;
+      }
+!     (void)do_join(eap->line2 - eap->line1 + 1, !eap->forceit, TRUE);
+      beginline(BL_WHITE | BL_FIX);
+      ex_may_print(eap);
+  }
+--- 8545,8551 ----
+       }
+       ++eap->line2;
+      }
+!     (void)do_join(eap->line2 - eap->line1 + 1, !eap->forceit, TRUE, TRUE);
+      beginline(BL_WHITE | BL_FIX);
+      ex_may_print(eap);
+  }
+*** ../vim-7.3.540/src/misc1.c 2012-06-01 15:20:49.000000000 +0200
+--- src/misc1.c        2012-06-06 13:27:32.000000000 +0200
+***************
+*** 671,677 ****
+           ptr = saved_line;
+  # ifdef FEAT_COMMENTS
+           if (flags & OPENLINE_DO_COM)
+!              lead_len = get_leader_len(ptr, NULL, FALSE);
+           else
+               lead_len = 0;
+  # endif
+--- 671,677 ----
+           ptr = saved_line;
+  # ifdef FEAT_COMMENTS
+           if (flags & OPENLINE_DO_COM)
+!              lead_len = get_leader_len(ptr, NULL, FALSE, TRUE);
+           else
+               lead_len = 0;
+  # endif
+***************
+*** 693,699 ****
+               }
+  # ifdef FEAT_COMMENTS
+               if (flags & OPENLINE_DO_COM)
+!                  lead_len = get_leader_len(ptr, NULL, FALSE);
+               else
+                   lead_len = 0;
+               if (lead_len > 0)
+--- 693,699 ----
+               }
+  # ifdef FEAT_COMMENTS
+               if (flags & OPENLINE_DO_COM)
+!                  lead_len = get_leader_len(ptr, NULL, FALSE, TRUE);
+               else
+                   lead_len = 0;
+               if (lead_len > 0)
+***************
+*** 836,842 ****
+       */
+      end_comment_pending = NUL;
+      if (flags & OPENLINE_DO_COM)
+!      lead_len = get_leader_len(saved_line, &lead_flags, dir == BACKWARD);
+      else
+       lead_len = 0;
+      if (lead_len > 0)
+--- 836,842 ----
+       */
+      end_comment_pending = NUL;
+      if (flags & OPENLINE_DO_COM)
+!      lead_len = get_leader_len(saved_line, &lead_flags, dir == BACKWARD, TRUE);
+      else
+       lead_len = 0;
+      if (lead_len > 0)
+***************
+*** 1548,1561 ****
+   * When "flags" is not NULL, it is set to point to the flags of the recognized
+   * comment leader.
+   * "backward" must be true for the "O" command.
+   */
+      int
+! get_leader_len(line, flags, backward)
+      char_u   *line;
+      char_u   **flags;
+      int              backward;
+  {
+      int              i, j;
+      int              got_com = FALSE;
+      int              found_one;
+      char_u   part_buf[COM_MAX_LEN];  /* buffer for one option part */
+--- 1548,1565 ----
+   * When "flags" is not NULL, it is set to point to the flags of the recognized
+   * comment leader.
+   * "backward" must be true for the "O" command.
++  * If "include_space" is set, include trailing whitespace while calculating the
++  * length.
+   */
+      int
+! get_leader_len(line, flags, backward, include_space)
+      char_u   *line;
+      char_u   **flags;
+      int              backward;
++     int              include_space;
+  {
+      int              i, j;
++     int              result;
+      int              got_com = FALSE;
+      int              found_one;
+      char_u   part_buf[COM_MAX_LEN];  /* buffer for one option part */
+***************
+*** 1565,1571 ****
+      char_u   *prev_list;
+      char_u   *saved_flags = NULL;
+  
+!     i = 0;
+      while (vim_iswhite(line[i]))    /* leading white space is ignored */
+       ++i;
+  
+--- 1569,1575 ----
+      char_u   *prev_list;
+      char_u   *saved_flags = NULL;
+  
+!     result = i = 0;
+      while (vim_iswhite(line[i]))    /* leading white space is ignored */
+       ++i;
+  
+***************
+*** 1668,1684 ****
+       if (!found_one)
+           break;
+  
+       /* Include any trailing white space. */
+       while (vim_iswhite(line[i]))
+           ++i;
+  
+       /* If this comment doesn't nest, stop here. */
+       got_com = TRUE;
+       if (vim_strchr(part_buf, COM_NEST) == NULL)
+           break;
+      }
+  
+!     return (got_com ? i : 0);
+  }
+  #endif
+  
+--- 1672,1838 ----
+       if (!found_one)
+           break;
+  
++      result = i;
++ 
+       /* Include any trailing white space. */
+       while (vim_iswhite(line[i]))
+           ++i;
+  
++      if (include_space)
++          result = i;
++ 
+       /* If this comment doesn't nest, stop here. */
+       got_com = TRUE;
+       if (vim_strchr(part_buf, COM_NEST) == NULL)
+           break;
+      }
++     return result;
++ }
++ 
++ /*
++  * Return the offset at which the last comment in line starts. If there is no
++  * comment in the whole line, -1 is returned.
++  *
++  * When "flags" is not null, it is set to point to the flags describing the
++  * recognized comment leader.
++  */
++     int
++ get_last_leader_offset(line, flags)
++     char_u   *line;
++     char_u   **flags;
++ {
++     int              result = -1;
++     int              i, j;
++     int              lower_check_bound = 0;
++     char_u   *string;
++     char_u   *com_leader;
++     char_u   *com_flags;
++     char_u   *list;
++     int              found_one;
++     char_u   part_buf[COM_MAX_LEN];  /* buffer for one option part */
++ 
++     /*
++      * Repeat to match several nested comment strings.
++      */
++     i = (int)STRLEN(line);
++     while (--i >= lower_check_bound)
++     {
++      /*
++       * scan through the 'comments' option for a match
++       */
++      found_one = FALSE;
++      for (list = curbuf->b_p_com; *list; )
++      {
++          char_u *flags_save = list;
++ 
++          /*
++           * Get one option part into part_buf[].  Advance list to next one.
++           * put string at start of string.
++           */
++          (void)copy_option_part(&list, part_buf, COM_MAX_LEN, ",");
++          string = vim_strchr(part_buf, ':');
++          if (string == NULL) /* If everything is fine, this cannot actually
++                               * happen. */
++          {
++              continue;
++          }
++          *string++ = NUL;    /* Isolate flags from string. */
++          com_leader = string;
++ 
++          /*
++           * Line contents and string must match.
++           * When string starts with white space, must have some white space
++           * (but the amount does not need to match, there might be a mix of
++           * TABs and spaces).
++           */
++          if (vim_iswhite(string[0]))
++          {
++              if (i == 0 || !vim_iswhite(line[i - 1]))
++                  continue;
++              while (vim_iswhite(string[0]))
++                  ++string;
++          }
++          for (j = 0; string[j] != NUL && string[j] == line[i + j]; ++j)
++              /* do nothing */;
++          if (string[j] != NUL)
++              continue;
++ 
++          /*
++           * When 'b' flag used, there must be white space or an
++           * end-of-line after the string in the line.
++           */
++          if (vim_strchr(part_buf, COM_BLANK) != NULL
++                  && !vim_iswhite(line[i + j]) && line[i + j] != NUL)
++          {
++              continue;
++          }
++ 
++          /*
++           * We have found a match, stop searching.
++           */
++          found_one = TRUE;
++ 
++          if (flags)
++              *flags = flags_save;
++          com_flags = flags_save;
++ 
++          break;
++      }
+  
+!      if (found_one)
+!      {
+!          char_u  part_buf2[COM_MAX_LEN];     /* buffer for one option part */
+!          int     len1, len2, off;
+! 
+!          result = i;
+!          /*
+!           * If this comment nests, continue searching.
+!           */
+!          if (vim_strchr(part_buf, COM_NEST) != NULL)
+!              continue;
+! 
+!          lower_check_bound = i;
+! 
+!          /* Let's verify whether the comment leader found is a substring
+!           * of other comment leaders. If it is, let's adjust the
+!           * lower_check_bound so that we make sure that we have determined
+!           * the comment leader correctly.
+!           */
+! 
+!          while (vim_iswhite(*com_leader))
+!              ++com_leader;
+!          len1 = (int)STRLEN(com_leader);
+! 
+!          for (list = curbuf->b_p_com; *list; )
+!          {
+!              char_u *flags_save = list;
+! 
+!              (void)copy_option_part(&list, part_buf2, COM_MAX_LEN, ",");
+!              if (flags_save == com_flags)
+!                  continue;
+!              string = vim_strchr(part_buf2, ':');
+!              ++string;
+!              while (vim_iswhite(*string))
+!                  ++string;
+!              len2 = (int)STRLEN(string);
+!              if (len2 == 0)
+!                  continue;
+! 
+!              /* Now we have to verify whether string ends with a substring
+!               * beginning the com_leader. */
+!              for (off = (len2 > i ? i : len2); off > 0 && off + len1 > len2;)
+!              {
+!                  --off;
+!                  if (!STRNCMP(string + off, com_leader, len2 - off))
+!                  {
+!                      if (i - off < lower_check_bound)
+!                          lower_check_bound = i - off;
+!                  }
+!              }
+!          }
+!      }
+!     }
+!     return result;
+  }
+  #endif
+  
+*** ../vim-7.3.540/src/normal.c        2012-05-25 13:12:33.000000000 +0200
+--- src/normal.c       2012-06-06 13:00:29.000000000 +0200
+***************
+*** 1968,1974 ****
+               beep_flush();
+           else
+           {
+!              (void)do_join(oap->line_count, oap->op_type == OP_JOIN, TRUE);
+               auto_format(FALSE, TRUE);
+           }
+           break;
+--- 1968,1974 ----
+               beep_flush();
+           else
+           {
+!              (void)do_join(oap->line_count, oap->op_type == OP_JOIN, TRUE, TRUE);
+               auto_format(FALSE, TRUE);
+           }
+           break;
+***************
+*** 4426,4432 ****
+           break;
+       }
+  #ifdef FEAT_COMMENTS
+!      if (get_leader_len(ml_get_curline(), NULL, FALSE) > 0)
+       {
+           /* Ignore this line, continue at start of next line. */
+           ++curwin->w_cursor.lnum;
+--- 4426,4432 ----
+           break;
+       }
+  #ifdef FEAT_COMMENTS
+!      if (get_leader_len(ml_get_curline(), NULL, FALSE, TRUE) > 0)
+       {
+           /* Ignore this line, continue at start of next line. */
+           ++curwin->w_cursor.lnum;
+***************
+*** 9324,9330 ****
+       {
+           prep_redo(cap->oap->regname, cap->count0,
+                        NUL, cap->cmdchar, NUL, NUL, cap->nchar);
+!          (void)do_join(cap->count0, cap->nchar == NUL, TRUE);
+       }
+      }
+  }
+--- 9324,9330 ----
+       {
+           prep_redo(cap->oap->regname, cap->count0,
+                        NUL, cap->cmdchar, NUL, NUL, cap->nchar);
+!          (void)do_join(cap->count0, cap->nchar == NUL, TRUE, TRUE);
+       }
+      }
+  }
+*** ../vim-7.3.540/src/ops.c   2012-05-18 12:49:33.000000000 +0200
+--- src/ops.c  2012-06-06 15:43:31.000000000 +0200
+***************
+*** 112,117 ****
+--- 112,120 ----
+  # endif
+  #endif
+  static void  dis_msg __ARGS((char_u *p, int skip_esc));
++ #if defined(FEAT_COMMENTS) || defined(PROTO)
++ static char_u        *skip_comment __ARGS((char_u *line, int process, int include_space, int *is_comment));
++ #endif
+  #ifdef FEAT_VISUAL
+  static void  block_prep __ARGS((oparg_T *oap, struct block_def *, linenr_T, int));
+  #endif
+***************
+*** 1987,1993 ****
+               curwin->w_cursor = curpos;      /* restore curwin->w_cursor */
+           }
+           if (curwin->w_cursor.lnum < curbuf->b_ml.ml_line_count)
+!              (void)do_join(2, FALSE, FALSE);
+       }
+      }
+  
+--- 1990,1996 ----
+               curwin->w_cursor = curpos;      /* restore curwin->w_cursor */
+           }
+           if (curwin->w_cursor.lnum < curbuf->b_ml.ml_line_count)
+!              (void)do_join(2, FALSE, FALSE, FALSE);
+       }
+      }
+  
+***************
+*** 4197,4213 ****
+      ui_breakcheck();
+  }
+  
+  /*
+   * Join 'count' lines (minimal 2) at cursor position.
+   * When "save_undo" is TRUE save lines for undo first.
+   *
+   * return FAIL for failure, OK otherwise
+   */
+      int
+! do_join(count, insert_space, save_undo)
+      long    count;
+      int          insert_space;
+      int          save_undo;
+  {
+      char_u   *curr = NULL;
+      char_u      *curr_start = NULL;
+--- 4200,4297 ----
+      ui_breakcheck();
+  }
+  
++ #if defined(FEAT_COMMENTS) || defined(PROTO)
++ /*
++  * If "process" is TRUE and the line begins with a comment leader (possibly
++  * after some white space), return a pointer to the text after it. Put a boolean
++  * value indicating whether the line ends with an unclosed comment in
++  * "is_comment".
++  * line - line to be processed,
++  * process - if FALSE, will only check whether the line ends with an unclosed
++  *           comment,
++  * include_space - whether to also skip space following the comment leader,
++  * is_comment - will indicate whether the current line ends with an unclosed
++  *              comment.
++  */
++     static char_u *
++ skip_comment(line, process, include_space, is_comment)
++     char_u   *line;
++     int      process;
++     int           include_space;
++     int      *is_comment;
++ {
++     char_u *comment_flags = NULL;
++     int    lead_len;
++     int    leader_offset = get_last_leader_offset(line, &comment_flags);
++ 
++     *is_comment = FALSE;
++     if (leader_offset != -1)
++     {
++      /* Let's check whether the line ends with an unclosed comment.
++       * If the last comment leader has COM_END in flags, there's no comment.
++       */
++      while (*comment_flags)
++      {
++          if (*comment_flags == COM_END
++                  || *comment_flags == ':')
++              break;
++          ++comment_flags;
++      }
++      if (*comment_flags != COM_END)
++          *is_comment = TRUE;
++     }
++ 
++     if (process == FALSE)
++      return line;
++ 
++     lead_len = get_leader_len(line, &comment_flags, FALSE, include_space);
++ 
++     if (lead_len == 0)
++      return line;
++ 
++     /* Find:
++      * - COM_START,
++      * - COM_END,
++      * - colon,
++      * whichever comes first.
++      */
++     while (*comment_flags)
++     {
++      if (*comment_flags == COM_START
++              || *comment_flags == COM_END
++              || *comment_flags == ':')
++      {
++          break;
++      }
++      ++comment_flags;
++     }
++ 
++     /* If we found a colon, it means that we are not processing a line
++      * starting with an opening or a closing part of a three-part
++      * comment. That's good, because we don't want to remove those as
++      * this would be annoying.
++      */
++     if (*comment_flags == ':' || *comment_flags == NUL)
++      line += lead_len;
++ 
++     return line;
++ }
++ #endif
++ 
+  /*
+   * Join 'count' lines (minimal 2) at cursor position.
+   * When "save_undo" is TRUE save lines for undo first.
++  * Set "use_formatoptions" to FALSE when e.g. processing
++  * backspace and comment leaders should not be removed.
+   *
+   * return FAIL for failure, OK otherwise
+   */
+      int
+! do_join(count, insert_space, save_undo, use_formatoptions)
+      long    count;
+      int          insert_space;
+      int          save_undo;
++     int          use_formatoptions UNUSED;
+  {
+      char_u   *curr = NULL;
+      char_u      *curr_start = NULL;
+***************
+*** 4221,4226 ****
+--- 4305,4317 ----
+      linenr_T t;
+      colnr_T  col = 0;
+      int              ret = OK;
++ #if defined(FEAT_COMMENTS) || defined(PROTO)
++     int              *comments;
++     int              remove_comments = (use_formatoptions == TRUE)
++                                && has_format_option(FO_REMOVE_COMS);
++     int              prev_was_comment;
++ #endif
++ 
+  
+      if (save_undo && u_save((linenr_T)(curwin->w_cursor.lnum - 1),
+                           (linenr_T)(curwin->w_cursor.lnum + count)) == FAIL)
+***************
+*** 4232,4237 ****
+--- 4323,4339 ----
+      spaces = lalloc_clear((long_u)count, TRUE);
+      if (spaces == NULL)
+       return FAIL;
++ #if defined(FEAT_COMMENTS) || defined(PROTO)
++     if (remove_comments)
++     {
++      comments = (int *)lalloc_clear((long_u)count * sizeof(int), TRUE);
++      if (comments == NULL)
++      {
++          vim_free(spaces);
++          return FAIL;
++      }
++     }
++ #endif
+  
+      /*
+       * Don't move anything, just compute the final line length
+***************
+*** 4240,4245 ****
+--- 4342,4366 ----
+      for (t = 0; t < count; ++t)
+      {
+       curr = curr_start = ml_get((linenr_T)(curwin->w_cursor.lnum + t));
++ #if defined(FEAT_COMMENTS) || defined(PROTO)
++      if (remove_comments)
++      {
++          /* We don't want to remove the comment leader if the
++           * previous line is not a comment. */
++          if (t > 0 && prev_was_comment)
++          {
++ 
++              char_u *new_curr = skip_comment(curr, TRUE, insert_space,
++                                                         &prev_was_comment);
++              comments[t] = new_curr - curr;
++              curr = new_curr;
++          }
++          else
++              curr = skip_comment(curr, FALSE, insert_space,
++                                                         &prev_was_comment);
++      }
++ #endif
++ 
+       if (insert_space && t > 0)
+       {
+           curr = skipwhite(curr);
+***************
+*** 4327,4332 ****
+--- 4448,4457 ----
+       if (t == 0)
+           break;
+       curr = curr_start = ml_get((linenr_T)(curwin->w_cursor.lnum + t - 1));
++ #if defined(FEAT_COMMENTS) || defined(PROTO)
++      if (remove_comments)
++          curr += comments[t - 1];
++ #endif
+       if (insert_space && t > 1)
+           curr = skipwhite(curr);
+       currsize = (int)STRLEN(curr);
+***************
+*** 4364,4369 ****
+--- 4489,4498 ----
+  
+  theend:
+      vim_free(spaces);
++ #if defined(FEAT_COMMENTS) || defined(PROTO)
++     if (remove_comments)
++      vim_free(comments);
++ #endif
+      return ret;
+  }
+  
+***************
+*** 4788,4794 ****
+                                                     (long)-next_leader_len);
+  #endif
+               curwin->w_cursor.lnum--;
+!              if (do_join(2, TRUE, FALSE) == FAIL)
+               {
+                   beep_flush();
+                   break;
+--- 4917,4923 ----
+                                                     (long)-next_leader_len);
+  #endif
+               curwin->w_cursor.lnum--;
+!              if (do_join(2, TRUE, FALSE, FALSE) == FAIL)
+               {
+                   beep_flush();
+                   break;
+***************
+*** 4844,4850 ****
+  
+      ptr = ml_get(lnum);
+      if (do_comments)
+!      *leader_len = get_leader_len(ptr, leader_flags, FALSE);
+      else
+       *leader_len = 0;
+  
+--- 4973,4979 ----
+  
+      ptr = ml_get(lnum);
+      if (do_comments)
+!      *leader_len = get_leader_len(ptr, leader_flags, FALSE, TRUE);
+      else
+       *leader_len = 0;
+  
+*** ../vim-7.3.540/src/option.h        2012-02-20 22:18:22.000000000 +0100
+--- src/option.h       2012-06-06 13:00:29.000000000 +0200
+***************
+*** 104,113 ****
+  #define FO_ONE_LETTER        '1'
+  #define FO_WHITE_PAR 'w'     /* trailing white space continues paragr. */
+  #define FO_AUTO              'a'     /* automatic formatting */
+  
+  #define DFLT_FO_VI   "vt"
+  #define DFLT_FO_VIM  "tcq"
+! #define FO_ALL               "tcroq2vlb1mMBn,aw"     /* for do_set() */
+  
+  /* characters for the p_cpo option: */
+  #define CPO_ALTREAD  'a'     /* ":read" sets alternate file name */
+--- 104,114 ----
+  #define FO_ONE_LETTER        '1'
+  #define FO_WHITE_PAR 'w'     /* trailing white space continues paragr. */
+  #define FO_AUTO              'a'     /* automatic formatting */
++ #define FO_REMOVE_COMS       'j'     /* remove comment leaders when joining lines */
+  
+  #define DFLT_FO_VI   "vt"
+  #define DFLT_FO_VIM  "tcq"
+! #define FO_ALL               "tcroq2vlb1mMBn,awj"    /* for do_set() */
+  
+  /* characters for the p_cpo option: */
+  #define CPO_ALTREAD  'a'     /* ":read" sets alternate file name */
+*** ../vim-7.3.540/src/proto/misc1.pro 2010-08-15 21:57:28.000000000 +0200
+--- src/proto/misc1.pro        2012-06-06 13:00:29.000000000 +0200
+***************
+*** 6,12 ****
+  int set_indent __ARGS((int size, int flags));
+  int get_number_indent __ARGS((linenr_T lnum));
+  int open_line __ARGS((int dir, int flags, int old_indent));
+! int get_leader_len __ARGS((char_u *line, char_u **flags, int backward));
+  int plines __ARGS((linenr_T lnum));
+  int plines_win __ARGS((win_T *wp, linenr_T lnum, int winheight));
+  int plines_nofill __ARGS((linenr_T lnum));
+--- 6,13 ----
+  int set_indent __ARGS((int size, int flags));
+  int get_number_indent __ARGS((linenr_T lnum));
+  int open_line __ARGS((int dir, int flags, int old_indent));
+! int get_leader_len __ARGS((char_u *line, char_u **flags, int backward, int do_skip_space));
+! int get_last_leader_offset __ARGS((char_u *line, char_u **flags));
+  int plines __ARGS((linenr_T lnum));
+  int plines_win __ARGS((win_T *wp, linenr_T lnum, int winheight));
+  int plines_nofill __ARGS((linenr_T lnum));
+*** ../vim-7.3.540/src/proto/ops.pro   2010-08-15 21:57:28.000000000 +0200
+--- src/proto/ops.pro  2012-06-06 13:00:29.000000000 +0200
+***************
+*** 36,42 ****
+  int preprocs_left __ARGS((void));
+  int get_register_name __ARGS((int num));
+  void ex_display __ARGS((exarg_T *eap));
+! int do_join __ARGS((long count, int insert_space, int save_undo));
+  void op_format __ARGS((oparg_T *oap, int keep_cursor));
+  void op_formatexpr __ARGS((oparg_T *oap));
+  int fex_format __ARGS((linenr_T lnum, long count, int c));
+--- 36,42 ----
+  int preprocs_left __ARGS((void));
+  int get_register_name __ARGS((int num));
+  void ex_display __ARGS((exarg_T *eap));
+! int do_join __ARGS((long count, int insert_space, int save_undo, int use_formatoptions));
+  void op_format __ARGS((oparg_T *oap, int keep_cursor));
+  void op_formatexpr __ARGS((oparg_T *oap));
+  int fex_format __ARGS((linenr_T lnum, long count, int c));
+*** ../vim-7.3.540/src/search.c        2012-02-04 23:34:57.000000000 +0100
+--- src/search.c       2012-06-06 13:00:29.000000000 +0200
+***************
+*** 1548,1554 ****
+      int                      len;
+      int                      stop = TRUE;
+  #ifdef FEAT_MBYTE
+!     static char_u    bytes[MB_MAXBYTES];
+      static int               bytelen = 1;    /* >1 for multi-byte char */
+  #endif
+  
+--- 1548,1554 ----
+      int                      len;
+      int                      stop = TRUE;
+  #ifdef FEAT_MBYTE
+!     static char_u    bytes[MB_MAXBYTES + 1];
+      static int               bytelen = 1;    /* >1 for multi-byte char */
+  #endif
+  
+***************
+*** 4901,4907 ****
+  #ifdef FEAT_COMMENTS
+                       if ((*line != '#' ||
+                               STRNCMP(skipwhite(line + 1), "define", 6) != 0)
+!                              && get_leader_len(line, NULL, FALSE))
+                           matched = FALSE;
+  
+                       /*
+--- 4901,4907 ----
+  #ifdef FEAT_COMMENTS
+                       if ((*line != '#' ||
+                               STRNCMP(skipwhite(line + 1), "define", 6) != 0)
+!                              && get_leader_len(line, NULL, FALSE, TRUE))
+                           matched = FALSE;
+  
+                       /*
+*** ../vim-7.3.540/src/testdir/test29.in       2010-08-15 21:57:29.000000000 +0200
+--- src/testdir/test29.in      2012-06-06 15:44:38.000000000 +0200
+***************
+*** 4,19 ****
+   and with 'cpoptions' flag 'j' set or not
+  
+  STARTTEST
+  :set nocompatible viminfo+=nviminfo
+  :set nojoinspaces
+  :set cpoptions-=j
+  /firstline/
+! j"tdGpJjJjJjJjJjJjJjJjJjJjJjJjJjJj05lmx2j06lmy2k4Jy3l$p`xyl$p`yy2l$p:set cpoptions+=j
+  j05lmx2j06lmy2k4Jy3l$p`xyl$p`yy2l$p:set cpoptions-=j joinspaces
+  j"tpJjJjJjJjJjJjJjJjJjJjJjJjJjJj05lmx2j06lmy2k4Jy3l$p`xyl$p`yy2l$p:set cpoptions+=j
+  j05lmx2j06lmy2k4Jy3l$p`xyl$p`yy2l$p:set cpoptions-=j nojoinspaces compatible
+! j"tpJjJjJjJjJjJjJjJjJjJjJjJjJjJj4Jy3l$pjdG:?firstline?+1,$w! test.out
+! :qa!
+  ENDTEST
+  
+  firstline
+--- 4,20 ----
+   and with 'cpoptions' flag 'j' set or not
+  
+  STARTTEST
++ :so small.vim
+  :set nocompatible viminfo+=nviminfo
+  :set nojoinspaces
+  :set cpoptions-=j
+  /firstline/
+! j"td/^STARTTEST/-1
+! PJjJjJjJjJjJjJjJjJjJjJjJjJjJj05lmx2j06lmy2k4Jy3l$p`xyl$p`yy2l$p:set cpoptions+=j
+  j05lmx2j06lmy2k4Jy3l$p`xyl$p`yy2l$p:set cpoptions-=j joinspaces
+  j"tpJjJjJjJjJjJjJjJjJjJjJjJjJjJj05lmx2j06lmy2k4Jy3l$p`xyl$p`yy2l$p:set cpoptions+=j
+  j05lmx2j06lmy2k4Jy3l$p`xyl$p`yy2l$p:set cpoptions-=j nojoinspaces compatible
+! j"tpJjJjJjJjJjJjJjJjJjJjJjJjJjJj4Jy3l$pjd/STARTTEST/-2
+  ENDTEST
+  
+  firstline
+***************
+*** 54,56 ****
+--- 55,181 ----
+  hjkl iop!
+  ert
+  
++ STARTTEST
++ /^{/+1
++ :set comments=s1:/*,mb:*,ex:*/,://
++ :set nojoinspaces fo=j
++ :set backspace=eol,start
++ :.,+3join
++ j4J
++ :.,+2join
++ j3J
++ :.,+2join
++ j3J
++ :.,+2join
++ jj3J
++ ENDTEST
++ 
++ {
++ 
++ /*
++  * Make sure the previous comment leader is not removed.
++  */
++ 
++ /*
++  * Make sure the previous comment leader is not removed.
++  */
++ 
++ // Should the next comment leader be left alone?
++ // Yes.
++ 
++ // Should the next comment leader be left alone?
++ // Yes.
++ 
++ /* Here the comment leader should be left intact. */
++ // And so should this one.
++ 
++ /* Here the comment leader should be left intact. */
++ // And so should this one.
++ 
++ if (condition) // Remove the next comment leader!
++                // OK, I will.
++     action();
++ 
++ if (condition) // Remove the next comment leader!
++                // OK, I will.
++     action();
++ }
++ 
++ STARTTEST
++ /^{/+1
++ :set comments=s1:/*,mb:*,ex:*/,://
++ :set comments+=s1:>#,mb:#,ex:#<,:<
++ :set cpoptions-=j joinspaces fo=j
++ :set backspace=eol,start
++ :.,+3join
++ j4J
++ :.,+2join
++ j3J
++ :.,+2join
++ j3J
++ :.,+2join
++ jj3J
++ j:.,+2join
++ jj3J
++ j:.,+5join
++ j6J
++ oSome code!\r// Make sure backspacing does not remove this comment leader.\e0i\b\e
++ ENDTEST
++ 
++ {
++ 
++ /*
++  * Make sure the previous comment leader is not removed.
++  */
++ 
++ /*
++  * Make sure the previous comment leader is not removed.
++  */
++ 
++ // Should the next comment leader be left alone?
++ // Yes.
++ 
++ // Should the next comment leader be left alone?
++ // Yes.
++ 
++ /* Here the comment leader should be left intact. */
++ // And so should this one.
++ 
++ /* Here the comment leader should be left intact. */
++ // And so should this one.
++ 
++ if (condition) // Remove the next comment leader!
++                // OK, I will.
++     action();
++ 
++ if (condition) // Remove the next comment leader!
++                // OK, I will.
++     action();
++ 
++ int i = 7 /* foo *// 3
++  // comment
++  ;
++ 
++ int i = 7 /* foo *// 3
++  // comment
++  ;
++ 
++ ># Note that the last character of the ending comment leader (left angle
++  # bracket) is a comment leader itself. Make sure that this comment leader is
++  # not removed from the next line #<
++ < On this line a new comment is opened which spans 2 lines. This comment should
++ < retain its comment leader.
++ 
++ ># Note that the last character of the ending comment leader (left angle
++  # bracket) is a comment leader itself. Make sure that this comment leader is
++  # not removed from the next line #<
++ < On this line a new comment is opened which spans 2 lines. This comment should
++ < retain its comment leader.
++ 
++ }
++ 
++ STARTTEST
++ :g/^STARTTEST/.,/^ENDTEST/d
++ :?firstline?+1,$w! test.out
++ :qa!
++ ENDTEST
+*** ../vim-7.3.540/src/testdir/test29.ok       2010-08-15 21:57:29.000000000 +0200
+--- src/testdir/test29.ok      2012-06-06 13:00:29.000000000 +0200
+***************
+*** 47,49 ****
+--- 47,86 ----
+  asdfasdf     asdf
+  asdfasdf             asdf
+  zx cvn.  as dfg? hjkl iop! ert  a
++ 
++ 
++ {
++ /* Make sure the previous comment leader is not removed. */
++ /* Make sure the previous comment leader is not removed. */
++ // Should the next comment leader be left alone? Yes.
++ // Should the next comment leader be left alone? Yes.
++ /* Here the comment leader should be left intact. */ // And so should this one.
++ /* Here the comment leader should be left intact. */ // And so should this one.
++ if (condition) // Remove the next comment leader! OK, I will.
++     action();
++ if (condition) // Remove the next comment leader! OK, I will.
++     action();
++ }
++ 
++ 
++ {
++ /* Make sure the previous comment leader is not removed.  */
++ /* Make sure the previous comment leader is not removed.  */
++ // Should the next comment leader be left alone?  Yes.
++ // Should the next comment leader be left alone?  Yes.
++ /* Here the comment leader should be left intact. */ // And so should this one.
++ /* Here the comment leader should be left intact. */ // And so should this one.
++ if (condition) // Remove the next comment leader!  OK, I will.
++     action();
++ if (condition) // Remove the next comment leader!  OK, I will.
++     action();
++ int i = 7 /* foo *// 3 // comment
++  ;
++ int i = 7 /* foo *// 3 // comment
++  ;
++ ># Note that the last character of the ending comment leader (left angle bracket) is a comment leader itself. Make sure that this comment leader is not removed from the next line #< < On this line a new comment is opened which spans 2 lines. This comment should retain its comment leader.
++ ># Note that the last character of the ending comment leader (left angle bracket) is a comment leader itself. Make sure that this comment leader is not removed from the next line #< < On this line a new comment is opened which spans 2 lines. This comment should retain its comment leader.
++ 
++ Some code!// Make sure backspacing does not remove this comment leader.
++ }
++ 
+*** ../vim-7.3.540/src/version.c       2012-06-06 12:06:10.000000000 +0200
+--- src/version.c      2012-06-06 16:10:03.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     541,
+  /**/
+
+-- 
+I have a drinking problem -- I don't have a drink!
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.542.patch0 b/vim/patches/vim-7.3.542.patch0
new file mode 100644 (file)
index 0000000..8108612
--- /dev/null
@@ -0,0 +1,73 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.542
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.542 (after 7.3.506)
+Problem:    Function is sometimes unused.
+Solution:   Add #ifdef.
+Files:     src/gui_gtk.c
+
+
+*** ../vim-7.3.541/src/gui_gtk.c       2012-04-25 17:10:12.000000000 +0200
+--- src/gui_gtk.c      2012-06-06 15:25:12.000000000 +0200
+***************
+*** 90,100 ****
+--- 90,102 ----
+  static void entry_activate_cb(GtkWidget *widget, gpointer data);
+  static void entry_changed_cb(GtkWidget *entry, GtkWidget *dialog);
+  static void find_replace_cb(GtkWidget *widget, gpointer data);
++ #if defined(FEAT_BROWSE) || defined(PROTO)
+  static void recent_func_log_func(
+       const gchar *log_domain,
+       GLogLevelFlags log_level,
+       const gchar *message,
+       gpointer user_data);
++ #endif
+  
+  #if defined(FEAT_TOOLBAR)
+  /*
+***************
+*** 1896,1901 ****
+--- 1898,1904 ----
+      do_cmdline_cmd((char_u *)"emenu ToolBar.FindHelp");
+  }
+  
++ #if defined(FEAT_BROWSE) || defined(PROTO)
+      static void
+  recent_func_log_func(const gchar *log_domain UNUSED,
+                    GLogLevelFlags log_level UNUSED,
+***************
+*** 1905,1908 ****
+      /* We just want to suppress the warnings. */
+      /* http://bugzilla.gnome.org/show_bug.cgi?id=664587 */
+  }
+! 
+--- 1908,1911 ----
+      /* We just want to suppress the warnings. */
+      /* http://bugzilla.gnome.org/show_bug.cgi?id=664587 */
+  }
+! #endif
+*** ../vim-7.3.541/src/version.c       2012-06-06 16:12:54.000000000 +0200
+--- src/version.c      2012-06-06 16:14:17.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     542,
+  /**/
+
+-- 
+How To Keep A Healthy Level Of Insanity:
+1. At lunch time, sit in your parked car with sunglasses on and point
+   a hair dryer at passing cars. See if they slow down.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.543.patch0 b/vim/patches/vim-7.3.543.patch0
new file mode 100644 (file)
index 0000000..3fa569c
--- /dev/null
@@ -0,0 +1,55 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.543
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.543
+Problem:    The cursor is in the wrong line after using ":copen". (John
+           Beckett)
+Solution:   Invoke more drastic redraw method.
+Files:     src/eval.c
+
+
+*** ../vim-7.3.542/src/eval.c  2012-06-01 15:20:49.000000000 +0200
+--- src/eval.c 2012-06-06 16:28:11.000000000 +0200
+***************
+*** 18507,18515 ****
+       curwin->w_skipcol = get_dict_number(dict, (char_u *)"skipcol");
+  
+       check_cursor();
+!      changed_cline_bef_curs();
+!      invalidate_botline();
+!      redraw_later(VALID);
+  
+       if (curwin->w_topline == 0)
+           curwin->w_topline = 1;
+--- 18507,18513 ----
+       curwin->w_skipcol = get_dict_number(dict, (char_u *)"skipcol");
+  
+       check_cursor();
+!      changed_window_setting();
+  
+       if (curwin->w_topline == 0)
+           curwin->w_topline = 1;
+*** ../vim-7.3.542/src/version.c       2012-06-06 16:14:36.000000000 +0200
+--- src/version.c      2012-06-06 16:28:16.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     543,
+  /**/
+
+-- 
+How To Keep A Healthy Level Of Insanity:
+2. Page yourself over the intercom. Don't disguise your voice.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.544.patch0 b/vim/patches/vim-7.3.544.patch0
new file mode 100644 (file)
index 0000000..198a6cb
--- /dev/null
@@ -0,0 +1,81 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.544
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.544
+Problem:    There is no good way to close a quickfix window when closing the
+           last ordinary window.
+Solution:   Add the QuitPre autocommand.
+Files:     src/ex_docmd.c, src/fileio.c, src/vim.h
+
+
+*** ../vim-7.3.543/src/ex_docmd.c      2012-06-06 16:12:54.000000000 +0200
+--- src/ex_docmd.c     2012-06-06 17:58:41.000000000 +0200
+***************
+*** 6458,6463 ****
+--- 6458,6464 ----
+       return;
+      }
+  #ifdef FEAT_AUTOCMD
++     apply_autocmds(EVENT_QUITPRE, NULL, NULL, FALSE, curbuf);
+      if (curbuf_locked())
+       return;
+  #endif
+*** ../vim-7.3.543/src/fileio.c        2012-04-30 17:04:47.000000000 +0200
+--- src/fileio.c       2012-06-06 17:32:12.000000000 +0200
+***************
+*** 7678,7683 ****
+--- 7678,7684 ----
+      {"MenuPopup",    EVENT_MENUPOPUP},
+      {"QuickFixCmdPost",      EVENT_QUICKFIXCMDPOST},
+      {"QuickFixCmdPre",       EVENT_QUICKFIXCMDPRE},
++     {"QuitPre",              EVENT_QUITPRE},
+      {"RemoteReply",  EVENT_REMOTEREPLY},
+      {"SessionLoadPost",      EVENT_SESSIONLOADPOST},
+      {"ShellCmdPost", EVENT_SHELLCMDPOST},
+*** ../vim-7.3.543/src/vim.h   2012-06-01 15:20:49.000000000 +0200
+--- src/vim.h  2012-06-06 17:30:01.000000000 +0200
+***************
+*** 1264,1271 ****
+      EVENT_INSERTENTER,               /* when entering Insert mode */
+      EVENT_INSERTLEAVE,               /* when leaving Insert mode */
+      EVENT_MENUPOPUP,         /* just before popup menu is displayed */
+!     EVENT_QUICKFIXCMDPOST,   /* after :make, :grep etc */
+!     EVENT_QUICKFIXCMDPRE,    /* before :make, :grep etc */
+      EVENT_SESSIONLOADPOST,   /* after loading a session file */
+      EVENT_STDINREADPOST,     /* after reading from stdin */
+      EVENT_STDINREADPRE,              /* before reading from stdin */
+--- 1264,1272 ----
+      EVENT_INSERTENTER,               /* when entering Insert mode */
+      EVENT_INSERTLEAVE,               /* when leaving Insert mode */
+      EVENT_MENUPOPUP,         /* just before popup menu is displayed */
+!     EVENT_QUICKFIXCMDPOST,   /* after :make, :grep etc. */
+!     EVENT_QUICKFIXCMDPRE,    /* before :make, :grep etc. */
+!     EVENT_QUITPRE,           /* before :quit */
+      EVENT_SESSIONLOADPOST,   /* after loading a session file */
+      EVENT_STDINREADPOST,     /* after reading from stdin */
+      EVENT_STDINREADPRE,              /* before reading from stdin */
+*** ../vim-7.3.543/src/version.c       2012-06-06 16:29:06.000000000 +0200
+--- src/version.c      2012-06-06 18:02:09.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     544,
+  /**/
+
+-- 
+How To Keep A Healthy Level Of Insanity:
+3. Every time someone asks you to do something, ask if they want fries
+   with that.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.545.patch0 b/vim/patches/vim-7.3.545.patch0
new file mode 100644 (file)
index 0000000..1bd76eb
--- /dev/null
@@ -0,0 +1,359 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.545
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.545
+Problem:    When closing a window or buffer autocommands may close it too,
+           causing problems for where the autocommand was invoked from.
+Solution:   Add the w_closing and b_closing flags.  When set disallow ":q" and
+           ":close" to prevent recursive closing.
+Files:     src/structs.h, src/buffer.c, src/ex_docmd.c, src/window.c
+
+
+*** ../vim-7.3.544/src/structs.h       2012-02-04 21:57:44.000000000 +0100
+--- src/structs.h      2012-06-06 16:43:34.000000000 +0200
+***************
+*** 1201,1206 ****
+--- 1201,1210 ----
+  typedef struct qf_info_S qf_info_T;
+  #endif
+  
++ /*
++  * These are items normally related to a buffer.  But when using ":ownsyntax"
++  * a window may have its own instance.
++  */
+  typedef struct {
+  #ifdef FEAT_SYN_HL
+      hashtab_T        b_keywtab;              /* syntax keywords hash table */
+***************
+*** 1290,1295 ****
+--- 1294,1303 ----
+      int              b_nwindows;     /* nr of windows open on this buffer */
+  
+      int              b_flags;        /* various BF_ flags */
++ #ifdef FEAT_AUTOCMD
++     int              b_closing;      /* buffer is being closed, don't let
++                                 autocommands close it too. */
++ #endif
+  
+      /*
+       * b_ffname has the full path of the file (NULL for no name).
+***************
+*** 1853,1858 ****
+--- 1861,1870 ----
+      win_T    *w_prev;            /* link to previous window */
+      win_T    *w_next;            /* link to next window */
+  #endif
++ #ifdef FEAT_AUTOCMD
++     int              w_closing;          /* window is being closed, don't let
++                                     autocommands close it too. */
++ #endif
+  
+      frame_T  *w_frame;           /* frame containing this window */
+  
+*** ../vim-7.3.544/src/buffer.c        2012-03-16 14:32:10.000000000 +0100
+--- src/buffer.c       2012-06-06 18:57:27.000000000 +0200
+***************
+*** 377,404 ****
+      /* When the buffer is no longer in a window, trigger BufWinLeave */
+      if (buf->b_nwindows == 1)
+      {
+       apply_autocmds(EVENT_BUFWINLEAVE, buf->b_fname, buf->b_fname,
+                                                                 FALSE, buf);
+!      /* Return if autocommands deleted the buffer or made it the only one. */
+!      if (!buf_valid(buf) || (abort_if_last && one_window()))
+       {
+           EMSG(_(e_auabort));
+           return;
+       }
+  
+       /* When the buffer becomes hidden, but is not unloaded, trigger
+        * BufHidden */
+       if (!unload_buf)
+       {
+           apply_autocmds(EVENT_BUFHIDDEN, buf->b_fname, buf->b_fname,
+                                                                 FALSE, buf);
+!          /* Return if autocommands deleted the buffer or made it the only
+!           * one. */
+!          if (!buf_valid(buf) || (abort_if_last && one_window()))
+!          {
+!              EMSG(_(e_auabort));
+!              return;
+!          }
+       }
+  # ifdef FEAT_EVAL
+       if (aborting())     /* autocmds may abort script processing */
+--- 377,411 ----
+      /* When the buffer is no longer in a window, trigger BufWinLeave */
+      if (buf->b_nwindows == 1)
+      {
++      buf->b_closing = TRUE;
+       apply_autocmds(EVENT_BUFWINLEAVE, buf->b_fname, buf->b_fname,
+                                                                 FALSE, buf);
+!      if (!buf_valid(buf))
+       {
++          /* Autocommands deleted the buffer. */
++ aucmd_abort:
+           EMSG(_(e_auabort));
+           return;
+       }
++      buf->b_closing = FALSE;
++      if (abort_if_last && one_window())
++          /* Autocommands made this the only window. */
++          goto aucmd_abort;
+  
+       /* When the buffer becomes hidden, but is not unloaded, trigger
+        * BufHidden */
+       if (!unload_buf)
+       {
++          buf->b_closing = TRUE;
+           apply_autocmds(EVENT_BUFHIDDEN, buf->b_fname, buf->b_fname,
+                                                                 FALSE, buf);
+!          if (!buf_valid(buf))
+!              /* Autocommands deleted the buffer. */
+!              goto aucmd_abort;
+!          buf->b_closing = FALSE;
+!          if (abort_if_last && one_window())
+!              /* Autocommands made this the only window. */
+!              goto aucmd_abort;
+       }
+  # ifdef FEAT_EVAL
+       if (aborting())     /* autocmds may abort script processing */
+***************
+*** 552,557 ****
+--- 559,565 ----
+  #ifdef FEAT_AUTOCMD
+      int              is_curbuf = (buf == curbuf);
+  
++     buf->b_closing = TRUE;
+      apply_autocmds(EVENT_BUFUNLOAD, buf->b_fname, buf->b_fname, FALSE, buf);
+      if (!buf_valid(buf))         /* autocommands may delete the buffer */
+       return;
+***************
+*** 568,573 ****
+--- 576,582 ----
+       if (!buf_valid(buf))        /* autocommands may delete the buffer */
+           return;
+      }
++     buf->b_closing = FALSE;
+  # ifdef FEAT_EVAL
+      if (aborting())      /* autocmds may abort script processing */
+       return;
+***************
+*** 1150,1155 ****
+--- 1159,1167 ----
+        * a window with this buffer.
+        */
+       while (buf == curbuf
++ # ifdef FEAT_AUTOCMD
++                 && !(curwin->w_closing || curwin->w_buffer->b_closing)
++ # endif
+                  && (firstwin != lastwin || first_tabpage->tp_next != NULL))
+           win_close(curwin, FALSE);
+  #endif
+***************
+*** 4750,4756 ****
+  #ifdef FEAT_WINDOWS
+                   || (had_tab > 0 && wp != firstwin)
+  #endif
+!                  ) && firstwin != lastwin)
+           {
+               win_close(wp, FALSE);
+  #ifdef FEAT_AUTOCMD
+--- 4762,4772 ----
+  #ifdef FEAT_WINDOWS
+                   || (had_tab > 0 && wp != firstwin)
+  #endif
+!                  ) && firstwin != lastwin
+! #ifdef FEAT_AUTOCMD
+!                  && !(wp->w_closing || wp->w_buffer->b_closing)
+! #endif
+!                  )
+           {
+               win_close(wp, FALSE);
+  #ifdef FEAT_AUTOCMD
+*** ../vim-7.3.544/src/ex_docmd.c      2012-06-06 18:03:01.000000000 +0200
+--- src/ex_docmd.c     2012-06-06 18:06:46.000000000 +0200
+***************
+*** 6459,6465 ****
+      }
+  #ifdef FEAT_AUTOCMD
+      apply_autocmds(EVENT_QUITPRE, NULL, NULL, FALSE, curbuf);
+!     if (curbuf_locked())
+       return;
+  #endif
+  
+--- 6459,6467 ----
+      }
+  #ifdef FEAT_AUTOCMD
+      apply_autocmds(EVENT_QUITPRE, NULL, NULL, FALSE, curbuf);
+!     /* Refuse to quick when locked or when the buffer in the last window is
+!      * being closed (can only happen in autocommands). */
+!     if (curbuf_locked() || (curbuf->b_nwindows == 1 && curbuf->b_closing))
+       return;
+  #endif
+  
+*** ../vim-7.3.544/src/window.c        2012-05-25 12:38:57.000000000 +0200
+--- src/window.c       2012-06-06 18:47:19.000000000 +0200
+***************
+*** 2034,2040 ****
+  
+      for (wp = firstwin; wp != NULL && lastwin != firstwin; )
+      {
+!      if (wp->w_buffer == buf && (!keep_curwin || wp != curwin))
+       {
+           win_close(wp, FALSE);
+  
+--- 2034,2044 ----
+  
+      for (wp = firstwin; wp != NULL && lastwin != firstwin; )
+      {
+!      if (wp->w_buffer == buf && (!keep_curwin || wp != curwin)
+! #ifdef FEAT_AUTOCMD
+!              && !(wp->w_closing || wp->w_buffer->b_closing)
+! #endif
+!              )
+       {
+           win_close(wp, FALSE);
+  
+***************
+*** 2051,2057 ****
+       nexttp = tp->tp_next;
+       if (tp != curtab)
+           for (wp = tp->tp_firstwin; wp != NULL; wp = wp->w_next)
+!              if (wp->w_buffer == buf)
+               {
+                   win_close_othertab(wp, FALSE, tp);
+  
+--- 2055,2065 ----
+       nexttp = tp->tp_next;
+       if (tp != curtab)
+           for (wp = tp->tp_firstwin; wp != NULL; wp = wp->w_next)
+!              if (wp->w_buffer == buf
+! #ifdef FEAT_AUTOCMD
+!                  && !(wp->w_closing || wp->w_buffer->b_closing)
+! #endif
+!                  )
+               {
+                   win_close_othertab(wp, FALSE, tp);
+  
+***************
+*** 2168,2173 ****
+--- 2176,2183 ----
+      }
+  
+  #ifdef FEAT_AUTOCMD
++     if (win->w_closing || win->w_buffer->b_closing)
++      return; /* window is already being closed */
+      if (win == aucmd_win)
+      {
+       EMSG(_("E813: Cannot close autocmd window"));
+***************
+*** 2203,2219 ****
+       wp = frame2win(win_altframe(win, NULL));
+  
+       /*
+!       * Be careful: If autocommands delete the window, return now.
+        */
+       if (wp->w_buffer != curbuf)
+       {
+           other_buffer = TRUE;
+           apply_autocmds(EVENT_BUFLEAVE, NULL, NULL, FALSE, curbuf);
+!          if (!win_valid(win) || last_window())
+               return;
+       }
+       apply_autocmds(EVENT_WINLEAVE, NULL, NULL, FALSE, curbuf);
+!      if (!win_valid(win) || last_window())
+           return;
+  # ifdef FEAT_EVAL
+       /* autocmds may abort script processing */
+--- 2213,2238 ----
+       wp = frame2win(win_altframe(win, NULL));
+  
+       /*
+!       * Be careful: If autocommands delete the window or cause this window
+!       * to be the last one left, return now.
+        */
+       if (wp->w_buffer != curbuf)
+       {
+           other_buffer = TRUE;
++          win->w_closing = TRUE;
+           apply_autocmds(EVENT_BUFLEAVE, NULL, NULL, FALSE, curbuf);
+!          if (!win_valid(win))
+!              return;
+!          win->w_closing = FALSE;
+!          if (last_window())
+               return;
+       }
++      win->w_closing = TRUE;
+       apply_autocmds(EVENT_WINLEAVE, NULL, NULL, FALSE, curbuf);
+!      if (!win_valid(win))
+!          return;
+!      win->w_closing = FALSE;
+!      if (last_window())
+           return;
+  # ifdef FEAT_EVAL
+       /* autocmds may abort script processing */
+***************
+*** 2240,2246 ****
+       * Close the link to the buffer.
+       */
+      if (win->w_buffer != NULL)
+!      close_buffer(win, win->w_buffer, free_buf ? DOBUF_UNLOAD : 0, TRUE);
+  
+      /* Autocommands may have closed the window already, or closed the only
+       * other window or moved to another tab page. */
+--- 2259,2274 ----
+       * Close the link to the buffer.
+       */
+      if (win->w_buffer != NULL)
+!     {
+! #ifdef FEAT_AUTOCMD
+!      win->w_closing = TRUE;
+! #endif
+!      close_buffer(win, win->w_buffer, free_buf ? DOBUF_UNLOAD : 0, FALSE);
+! #ifdef FEAT_AUTOCMD
+!      if (win_valid(win))
+!          win->w_closing = FALSE;
+! #endif
+!     }
+  
+      /* Autocommands may have closed the window already, or closed the only
+       * other window or moved to another tab page. */
+***************
+*** 2346,2351 ****
+--- 2374,2384 ----
+      tabpage_T   *ptp = NULL;
+      int              free_tp = FALSE;
+  
++ #ifdef FEAT_AUTOCMD
++     if (win->w_closing || win->w_buffer->b_closing)
++      return; /* window is already being closed */
++ #endif
++ 
+      /* Close the link to the buffer. */
+      close_buffer(win, win->w_buffer, free_buf ? DOBUF_UNLOAD : 0, FALSE);
+  
+*** ../vim-7.3.544/src/version.c       2012-06-06 18:03:01.000000000 +0200
+--- src/version.c      2012-06-06 18:53:06.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     545,
+  /**/
+
+-- 
+How To Keep A Healthy Level Of Insanity:
+4. Put your garbage can on your desk and label it "in".
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.546.patch0 b/vim/patches/vim-7.3.546.patch0
new file mode 100644 (file)
index 0000000..c883d2d
--- /dev/null
@@ -0,0 +1,54 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.546
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.546
+Problem:    Bogus line break.
+Solution:   Remove the line break.
+Files:     src/screen.c
+
+
+*** ../vim-7.3.545/src/screen.c        2012-06-01 15:20:49.000000000 +0200
+--- src/screen.c       2012-06-01 16:31:30.000000000 +0200
+***************
+*** 3228,3235 ****
+               /* no bad word found at line start, don't check until end of a
+                * word */
+               spell_hlf = HLF_COUNT;
+!              word_end = (int)(spell_to_word_end(ptr, wp)
+!                                                                - line + 1);
+           }
+           else
+           {
+--- 3228,3234 ----
+               /* no bad word found at line start, don't check until end of a
+                * word */
+               spell_hlf = HLF_COUNT;
+!              word_end = (int)(spell_to_word_end(ptr, wp) - line + 1);
+           }
+           else
+           {
+*** ../vim-7.3.545/src/version.c       2012-06-06 19:02:40.000000000 +0200
+--- src/version.c      2012-06-06 19:05:11.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     546,
+  /**/
+
+-- 
+How To Keep A Healthy Level Of Insanity:
+5. Put decaf in the coffee maker for 3 weeks. Once everyone has gotten
+   over their caffeine addictions, switch to espresso.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
diff --git a/vim/patches/vim-7.3.547.patch0 b/vim/patches/vim-7.3.547.patch0
new file mode 100644 (file)
index 0000000..5533144
--- /dev/null
@@ -0,0 +1,52 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.547
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.547 (after 7.3.541)
+Problem:    Compiler warning for uninitialized variable.
+Solution:   Initialize it.
+Files:     src/ops.c
+
+
+*** ../vim-7.3.546/src/ops.c   2012-06-06 16:12:54.000000000 +0200
+--- src/ops.c  2012-06-06 23:06:45.000000000 +0200
+***************
+*** 4306,4312 ****
+      colnr_T  col = 0;
+      int              ret = OK;
+  #if defined(FEAT_COMMENTS) || defined(PROTO)
+!     int              *comments;
+      int              remove_comments = (use_formatoptions == TRUE)
+                                 && has_format_option(FO_REMOVE_COMS);
+      int              prev_was_comment;
+--- 4306,4312 ----
+      colnr_T  col = 0;
+      int              ret = OK;
+  #if defined(FEAT_COMMENTS) || defined(PROTO)
+!     int              *comments = NULL;
+      int              remove_comments = (use_formatoptions == TRUE)
+                                 && has_format_option(FO_REMOVE_COMS);
+      int              prev_was_comment;
+*** ../vim-7.3.546/src/version.c       2012-06-06 19:05:45.000000000 +0200
+--- src/version.c      2012-06-06 23:07:26.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     547,
+  /**/
+
+-- 
+How To Keep A Healthy Level Of Insanity:
+9. As often as possible, skip rather than walk.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
index d826fb60b054d89baa6581f2e8cb1a46344fc173..2863e9454b859873a9102960a85f731d948f479d 100644 (file)
@@ -5,7 +5,7 @@
 
 name       = vim
 version    = 7.3
-release    = 2
+release    = 3
 
 groups     = Applications/Editors
 url        = http://www.vim.org
@@ -21,18 +21,27 @@ end
 source_dl  = ftp://ftp.vim.org/pub/vim/unix/
 sources    = %{thisapp}.tar.bz2
 
-DIR_APP        = %{DIR_SRC}/%{name}73
 
 build
+       DIR_APP = %{DIR_SRC}/%{name}73
+
        requires
                libacl-devel
                libselinux-devel
                ncurses-devel
+               python-devel
        end
 
        configure_options += \
+               --with-features=huge \
+               --enable-pythoninterp \
+               --enable-gui=no \
                --enable-multibyte \
-               --enable-selinux
+               --enable-cscope \
+               --enable-selinux \
+               --with-tlib=ncurses \
+               --with-modified-by="<bugzilla@ipfire.org>" \
+               --with-compiled-by="<bugzilla@ipfire.org>"
 
        configure_cmds
                echo '#define SYS_VIMRC_FILE "/etc/vimrc"' >> src/feature.h