This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "IPFire 3.x development tree".
The branch, master has been updated via c606030025a385661ba7faa2bf4e301aaff95b57 (commit) from 9d35ee5414feee828cd02beb7a83b459e6a8dc7f (commit)
Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below.
- Log ----------------------------------------------------------------- commit c606030025a385661ba7faa2bf4e301aaff95b57 Author: Michael Tremer michael.tremer@ipfire.org Date: Thu Jun 7 14:11:18 2012 +0200
vim: Import latest patches from upstream.
These patch provide minor fixes for various bugs and problems.
-----------------------------------------------------------------------
Summary of changes: vim/patches/download.sh | 14 + vim/patches/vim-7.3.082.patch0 | 51 + vim/patches/vim-7.3.083.patch0 | 362 +++ vim/patches/vim-7.3.084.patch0 | 123 + vim/patches/vim-7.3.085.patch0 | 313 ++ vim/patches/vim-7.3.086.patch0 | 138 + vim/patches/vim-7.3.087.patch0 | 152 + vim/patches/vim-7.3.088.patch0 | 152 + vim/patches/vim-7.3.089.patch0 | 52 + vim/patches/vim-7.3.090.patch0 | 68 + vim/patches/vim-7.3.091.patch0 | 321 ++ vim/patches/vim-7.3.092.patch0 | 62 + vim/patches/vim-7.3.093.patch0 | 201 ++ vim/patches/vim-7.3.094.patch0 | 70 + vim/patches/vim-7.3.095.patch0 | 70 + vim/patches/vim-7.3.096.patch0 | 97 + vim/patches/vim-7.3.097.patch0 | 54 + vim/patches/vim-7.3.098.patch0 | 61 + vim/patches/vim-7.3.099.patch0 | 54 + vim/patches/vim-7.3.100.patch0 | 52 + vim/patches/vim-7.3.101.patch0 | 92 + vim/patches/vim-7.3.102.patch0 | 615 ++++ vim/patches/vim-7.3.103.patch0 | 145 + vim/patches/vim-7.3.104.patch0 | 50 + vim/patches/vim-7.3.105.patch0 | 50 + vim/patches/vim-7.3.106.patch0 | 58 + vim/patches/vim-7.3.107.patch0 | 58 + vim/patches/vim-7.3.108.patch0 | 111 + vim/patches/vim-7.3.109.patch0 | 266 ++ vim/patches/vim-7.3.110.patch0 | 76 + vim/patches/vim-7.3.111.patch0 | 121 + vim/patches/vim-7.3.112.patch0 | 63 + vim/patches/vim-7.3.113.patch0 | 55 + vim/patches/vim-7.3.114.patch0 | 50 + vim/patches/vim-7.3.115.patch0 | 58 + vim/patches/vim-7.3.116.patch0 | 58 + vim/patches/vim-7.3.117.patch0 | 89 + vim/patches/vim-7.3.118.patch0 | 69 + vim/patches/vim-7.3.119.patch0 | 52 + vim/patches/vim-7.3.120.patch0 | 59 + vim/patches/vim-7.3.121.patch0 | 57 + vim/patches/vim-7.3.122.patch0 | 100 + vim/patches/vim-7.3.123.patch0 | 55 + vim/patches/vim-7.3.124.patch0 | 229 ++ vim/patches/vim-7.3.125.patch0 | 66 + vim/patches/vim-7.3.126.patch0 | 63 + vim/patches/vim-7.3.127.patch0 | 55 + vim/patches/vim-7.3.128.patch0 | 58 + vim/patches/vim-7.3.129.patch0 | 241 ++ vim/patches/vim-7.3.130.patch0 | 74 + vim/patches/vim-7.3.131.patch0 | 47 + vim/patches/vim-7.3.132.patch0 | 82 + vim/patches/vim-7.3.133.patch0 | 122 + vim/patches/vim-7.3.134.patch0 | 51 + vim/patches/vim-7.3.135.patch0 | 90 + vim/patches/vim-7.3.136.patch0 | 51 + vim/patches/vim-7.3.137.patch0 | 81 + vim/patches/vim-7.3.138.patch0 | 69 + vim/patches/vim-7.3.139.patch0 | 111 + vim/patches/vim-7.3.140.patch0 | 58 + vim/patches/vim-7.3.141.patch0 | 94 + vim/patches/vim-7.3.142.patch0 | 85 + vim/patches/vim-7.3.143.patch0 | 1520 +++++++++ vim/patches/vim-7.3.144.patch0 | 80 + vim/patches/vim-7.3.145.patch0 | 64 + vim/patches/vim-7.3.146.patch0 | 224 ++ vim/patches/vim-7.3.147.patch0 | 53 + vim/patches/vim-7.3.148.patch0 | 252 ++ vim/patches/vim-7.3.149.patch0 | 78 + vim/patches/vim-7.3.150.patch0 | 113 + vim/patches/vim-7.3.151.patch0 | 59 + vim/patches/vim-7.3.152.patch0 | 643 ++++ vim/patches/vim-7.3.153.patch0 | 66 + vim/patches/vim-7.3.154.patch0 | 106 + vim/patches/vim-7.3.155.patch0 | 286 ++ vim/patches/vim-7.3.156.patch0 | 89 + vim/patches/vim-7.3.157.patch0 | 52 + vim/patches/vim-7.3.158.patch0 | 48 + vim/patches/vim-7.3.159.patch0 | 54 + vim/patches/vim-7.3.160.patch0 | 482 +++ vim/patches/vim-7.3.161.patch0 | 1645 ++++++++++ vim/patches/vim-7.3.162.patch0 | 83 + vim/patches/vim-7.3.163.patch0 | 59 + vim/patches/vim-7.3.164.patch0 | 181 ++ vim/patches/vim-7.3.165.patch0 | 47 + vim/patches/vim-7.3.166.patch0 | 70 + vim/patches/vim-7.3.167.patch0 | 96 + vim/patches/vim-7.3.168.patch0 | 82 + vim/patches/vim-7.3.169.patch0 | 130 + vim/patches/vim-7.3.170.patch0 | 70 + vim/patches/vim-7.3.171.patch0 | 142 + vim/patches/vim-7.3.172.patch0 | 268 ++ vim/patches/vim-7.3.173.patch0 | 79 + vim/patches/vim-7.3.174.patch0 | 109 + vim/patches/vim-7.3.175.patch0 | 50 + vim/patches/vim-7.3.176.patch0 | 165 + vim/patches/vim-7.3.177.patch0 | 97 + vim/patches/vim-7.3.178.patch0 | 163 + vim/patches/vim-7.3.179.patch0 | 95 + vim/patches/vim-7.3.180.patch0 | 295 ++ vim/patches/vim-7.3.181.patch0 | 171 ++ vim/patches/vim-7.3.182.patch0 | 53 + vim/patches/vim-7.3.183.patch0 | 87 + vim/patches/vim-7.3.184.patch0 | 86 + vim/patches/vim-7.3.185.patch0 | 77 + vim/patches/vim-7.3.186.patch0 | 59 + vim/patches/vim-7.3.187.patch0 | 6621 ++++++++++++++++++++++++++++++++++++++++ vim/patches/vim-7.3.188.patch0 | 184 ++ vim/patches/vim-7.3.189.patch0 | 49 + vim/patches/vim-7.3.190.patch0 | 48 + vim/patches/vim-7.3.191.patch0 | 526 ++++ vim/patches/vim-7.3.192.patch0 | 61 + vim/patches/vim-7.3.193.patch0 | 70 + vim/patches/vim-7.3.194.patch0 | 48 + vim/patches/vim-7.3.195.patch0 | 199 ++ vim/patches/vim-7.3.196.patch0 | 224 ++ vim/patches/vim-7.3.197.patch0 | 78 + vim/patches/vim-7.3.198.patch0 | 403 +++ vim/patches/vim-7.3.199.patch0 | 57 + vim/patches/vim-7.3.200.patch0 | 75 + vim/patches/vim-7.3.201.patch0 | 124 + vim/patches/vim-7.3.202.patch0 | 868 ++++++ vim/patches/vim-7.3.203.patch0 | 102 + vim/patches/vim-7.3.204.patch0 | 51 + vim/patches/vim-7.3.205.patch0 | 93 + vim/patches/vim-7.3.206.patch0 | 54 + vim/patches/vim-7.3.207.patch0 | 54 + vim/patches/vim-7.3.208.patch0 | 51 + vim/patches/vim-7.3.209.patch0 | 95 + vim/patches/vim-7.3.210.patch0 | 182 ++ vim/patches/vim-7.3.211.patch0 | 51 + vim/patches/vim-7.3.212.patch0 | 243 ++ vim/patches/vim-7.3.213.patch0 | 142 + vim/patches/vim-7.3.214.patch0 | 55 + vim/patches/vim-7.3.215.patch0 | 63 + vim/patches/vim-7.3.216.patch0 | 263 ++ vim/patches/vim-7.3.217.patch0 | 63 + vim/patches/vim-7.3.218.patch0 | 91 + vim/patches/vim-7.3.219.patch0 | 92 + vim/patches/vim-7.3.220.patch0 | 1230 ++++++++ vim/patches/vim-7.3.221.patch0 | 287 ++ vim/patches/vim-7.3.222.patch0 | 71 + vim/patches/vim-7.3.223.patch0 | 387 +++ vim/patches/vim-7.3.224.patch0 | 162 + vim/patches/vim-7.3.225.patch0 | Bin 0 -> 18841 bytes vim/patches/vim-7.3.226.patch0 | 58 + vim/patches/vim-7.3.227.patch0 | 109 + vim/patches/vim-7.3.228.patch0 | 45 + vim/patches/vim-7.3.229.patch0 | 55 + vim/patches/vim-7.3.230.patch0 | 70 + vim/patches/vim-7.3.231.patch0 | 128 + vim/patches/vim-7.3.232.patch0 | 84 + vim/patches/vim-7.3.233.patch0 | 81 + vim/patches/vim-7.3.234.patch0 | 178 ++ vim/patches/vim-7.3.235.patch0 | 360 +++ vim/patches/vim-7.3.236.patch0 | 87 + vim/patches/vim-7.3.237.patch0 | 222 ++ vim/patches/vim-7.3.238.patch0 | 53 + vim/patches/vim-7.3.239.patch0 | 321 ++ vim/patches/vim-7.3.240.patch0 | 795 +++++ vim/patches/vim-7.3.241.patch0 | 71 + vim/patches/vim-7.3.242.patch0 | 71 + vim/patches/vim-7.3.243.patch0 | 52 + vim/patches/vim-7.3.244.patch0 | 48 + vim/patches/vim-7.3.245.patch0 | 81 + vim/patches/vim-7.3.246.patch0 | 55 + vim/patches/vim-7.3.247.patch0 | 95 + vim/patches/vim-7.3.248.patch0 | 129 + vim/patches/vim-7.3.249.patch0 | 134 + vim/patches/vim-7.3.250.patch0 | 104 + vim/patches/vim-7.3.251.patch0 | 184 ++ vim/patches/vim-7.3.252.patch0 | 43 + vim/patches/vim-7.3.253.patch0 | 539 ++++ vim/patches/vim-7.3.254.patch0 | 47 + vim/patches/vim-7.3.255.patch0 | 81 + vim/patches/vim-7.3.256.patch0 | 322 ++ vim/patches/vim-7.3.257.patch0 | 97 + vim/patches/vim-7.3.258.patch0 | 70 + vim/patches/vim-7.3.259.patch0 | 503 +++ vim/patches/vim-7.3.260.patch0 | 69 + vim/patches/vim-7.3.261.patch0 | 53 + vim/patches/vim-7.3.262.patch0 | 1356 ++++++++ vim/patches/vim-7.3.263.patch0 | 162 + vim/patches/vim-7.3.264.patch0 | 159 + vim/patches/vim-7.3.265.patch0 | 145 + vim/patches/vim-7.3.266.patch0 | 54 + vim/patches/vim-7.3.267.patch0 | 67 + vim/patches/vim-7.3.268.patch0 | 69 + vim/patches/vim-7.3.269.patch0 | 112 + vim/patches/vim-7.3.270.patch0 | 52 + vim/patches/vim-7.3.271.patch0 | 504 +++ vim/patches/vim-7.3.272.patch0 | 51 + vim/patches/vim-7.3.273.patch0 | 124 + vim/patches/vim-7.3.274.patch0 | 55 + vim/patches/vim-7.3.275.patch0 | 77 + vim/patches/vim-7.3.276.patch0 | 130 + vim/patches/vim-7.3.277.patch0 | 348 +++ vim/patches/vim-7.3.278.patch0 | 73 + vim/patches/vim-7.3.279.patch0 | 118 + vim/patches/vim-7.3.280.patch0 | 181 ++ vim/patches/vim-7.3.281.patch0 | 134 + vim/patches/vim-7.3.282.patch0 | 60 + vim/patches/vim-7.3.283.patch0 | 114 + vim/patches/vim-7.3.284.patch0 | 211 ++ vim/patches/vim-7.3.285.patch0 | 144 + vim/patches/vim-7.3.286.patch0 | 84 + vim/patches/vim-7.3.287.patch0 | 100 + vim/patches/vim-7.3.288.patch0 | 76 + vim/patches/vim-7.3.289.patch0 | 56 + vim/patches/vim-7.3.290.patch0 | 75 + vim/patches/vim-7.3.291.patch0 | 125 + vim/patches/vim-7.3.292.patch0 | 55 + vim/patches/vim-7.3.293.patch0 | 74 + vim/patches/vim-7.3.294.patch0 | 58 + vim/patches/vim-7.3.295.patch0 | 109 + vim/patches/vim-7.3.296.patch0 | 222 ++ vim/patches/vim-7.3.297.patch0 | 130 + vim/patches/vim-7.3.298.patch0 | 167 + vim/patches/vim-7.3.299.patch0 | 516 ++++ vim/patches/vim-7.3.300.patch0 | 74 + vim/patches/vim-7.3.301.patch0 | 97 + vim/patches/vim-7.3.302.patch0 | 68 + vim/patches/vim-7.3.303.patch0 | 55 + vim/patches/vim-7.3.304.patch0 | 103 + vim/patches/vim-7.3.305.patch0 | 58 + vim/patches/vim-7.3.306.patch0 | 244 ++ vim/patches/vim-7.3.307.patch0 | 180 ++ vim/patches/vim-7.3.308.patch0 | 260 ++ vim/patches/vim-7.3.309.patch0 | 105 + vim/patches/vim-7.3.310.patch0 | 3524 +++++++++++++++++++++ vim/patches/vim-7.3.311.patch0 | 351 +++ vim/patches/vim-7.3.312.patch0 | 58 + vim/patches/vim-7.3.313.patch0 | 53 + vim/patches/vim-7.3.314.patch0 | 54 + vim/patches/vim-7.3.315.patch0 | 475 +++ vim/patches/vim-7.3.316.patch0 | 48 + vim/patches/vim-7.3.317.patch0 | 116 + vim/patches/vim-7.3.318.patch0 | 90 + vim/patches/vim-7.3.319.patch0 | 154 + vim/patches/vim-7.3.320.patch0 | 130 + vim/patches/vim-7.3.321.patch0 | 304 ++ vim/patches/vim-7.3.322.patch0 | 52 + vim/patches/vim-7.3.323.patch0 | 52 + vim/patches/vim-7.3.324.patch0 | 53 + vim/patches/vim-7.3.325.patch0 | 64 + vim/patches/vim-7.3.326.patch0 | 285 ++ vim/patches/vim-7.3.327.patch0 | 64 + vim/patches/vim-7.3.328.patch0 | 45 + vim/patches/vim-7.3.329.patch0 | 72 + vim/patches/vim-7.3.330.patch0 | 45 + vim/patches/vim-7.3.331.patch0 | 53 + vim/patches/vim-7.3.332.patch0 | 206 ++ vim/patches/vim-7.3.333.patch0 | 245 ++ vim/patches/vim-7.3.334.patch0 | 58 + vim/patches/vim-7.3.335.patch0 | 48 + vim/patches/vim-7.3.336.patch0 | 1100 +++++++ vim/patches/vim-7.3.337.patch0 | 58 + vim/patches/vim-7.3.338.patch0 | 100 + vim/patches/vim-7.3.339.patch0 | 57 + vim/patches/vim-7.3.340.patch0 | 62 + vim/patches/vim-7.3.341.patch0 | 360 +++ vim/patches/vim-7.3.342.patch0 | 93 + vim/patches/vim-7.3.343.patch0 | 252 ++ vim/patches/vim-7.3.344.patch0 | 121 + vim/patches/vim-7.3.345.patch0 | 48 + vim/patches/vim-7.3.346.patch0 | 143 + vim/patches/vim-7.3.347.patch0 | 54 + vim/patches/vim-7.3.348.patch0 | 57 + vim/patches/vim-7.3.349.patch0 | 88 + vim/patches/vim-7.3.350.patch0 | 46 + vim/patches/vim-7.3.351.patch0 | 46 + vim/patches/vim-7.3.352.patch0 | 108 + vim/patches/vim-7.3.353.patch0 | 155 + vim/patches/vim-7.3.354.patch0 | 71 + vim/patches/vim-7.3.355.patch0 | 56 + vim/patches/vim-7.3.356.patch0 | 79 + vim/patches/vim-7.3.357.patch0 | 52 + vim/patches/vim-7.3.358.patch0 | 74 + vim/patches/vim-7.3.359.patch0 | 64 + vim/patches/vim-7.3.360.patch0 | 61 + vim/patches/vim-7.3.361.patch0 | 55 + vim/patches/vim-7.3.362.patch0 | 59 + vim/patches/vim-7.3.363.patch0 | 110 + vim/patches/vim-7.3.364.patch0 | 57 + vim/patches/vim-7.3.365.patch0 | 131 + vim/patches/vim-7.3.366.patch0 | 76 + vim/patches/vim-7.3.367.patch0 | 53 + vim/patches/vim-7.3.368.patch0 | 103 + vim/patches/vim-7.3.369.patch0 | 48 + vim/patches/vim-7.3.370.patch0 | 63 + vim/patches/vim-7.3.371.patch0 | 75 + vim/patches/vim-7.3.372.patch0 | 52 + vim/patches/vim-7.3.373.patch0 | 78 + vim/patches/vim-7.3.374.patch0 | 59 + vim/patches/vim-7.3.375.patch0 | 64 + vim/patches/vim-7.3.376.patch0 | 57 + vim/patches/vim-7.3.377.patch0 | 406 +++ vim/patches/vim-7.3.378.patch0 | 71 + vim/patches/vim-7.3.379.patch0 | 112 + vim/patches/vim-7.3.380.patch0 | 318 ++ vim/patches/vim-7.3.381.patch0 | 260 ++ vim/patches/vim-7.3.382.patch0 | 173 ++ vim/patches/vim-7.3.383.patch0 | 51 + vim/patches/vim-7.3.384.patch0 | 53 + vim/patches/vim-7.3.385.patch0 | 69 + vim/patches/vim-7.3.386.patch0 | 55 + vim/patches/vim-7.3.387.patch0 | 61 + vim/patches/vim-7.3.388.patch0 | 45 + vim/patches/vim-7.3.389.patch0 | 61 + vim/patches/vim-7.3.390.patch0 | 155 + vim/patches/vim-7.3.391.patch0 | 51 + vim/patches/vim-7.3.392.patch0 | 115 + vim/patches/vim-7.3.393.patch0 | 130 + vim/patches/vim-7.3.394.patch0 | 62 + vim/patches/vim-7.3.395.patch0 | 115 + vim/patches/vim-7.3.396.patch0 | 49 + vim/patches/vim-7.3.397.patch0 | 224 ++ vim/patches/vim-7.3.398.patch0 | 65 + vim/patches/vim-7.3.399.patch0 | 137 + vim/patches/vim-7.3.400.patch0 | 1762 +++++++++++ vim/patches/vim-7.3.401.patch0 | 191 ++ vim/patches/vim-7.3.402.patch0 | 59 + vim/patches/vim-7.3.403.patch0 | 108 + vim/patches/vim-7.3.404.patch0 | 85 + vim/patches/vim-7.3.405.patch0 | 101 + vim/patches/vim-7.3.406.patch0 | 103 + vim/patches/vim-7.3.407.patch0 | 270 ++ vim/patches/vim-7.3.408.patch0 | 48 + vim/patches/vim-7.3.409.patch0 | 48 + vim/patches/vim-7.3.410.patch0 | 54 + vim/patches/vim-7.3.411.patch0 | 55 + vim/patches/vim-7.3.412.patch0 | 51 + vim/patches/vim-7.3.413.patch0 | 90 + vim/patches/vim-7.3.414.patch0 | 90 + vim/patches/vim-7.3.415.patch0 | 54 + vim/patches/vim-7.3.416.patch0 | 54 + vim/patches/vim-7.3.417.patch0 | 47 + vim/patches/vim-7.3.418.patch0 | 53 + vim/patches/vim-7.3.419.patch0 | 85 + vim/patches/vim-7.3.420.patch0 | 70 + vim/patches/vim-7.3.421.patch0 | 60 + vim/patches/vim-7.3.422.patch0 | 94 + vim/patches/vim-7.3.423.patch0 | 130 + vim/patches/vim-7.3.424.patch0 | 62 + vim/patches/vim-7.3.425.patch0 | 78 + vim/patches/vim-7.3.426.patch0 | 279 ++ vim/patches/vim-7.3.427.patch0 | 378 +++ vim/patches/vim-7.3.428.patch0 | 113 + vim/patches/vim-7.3.429.patch0 | 192 ++ vim/patches/vim-7.3.430.patch0 | 80 + vim/patches/vim-7.3.431.patch0 | 280 ++ vim/patches/vim-7.3.432.patch0 | 228 ++ vim/patches/vim-7.3.433.patch0 | 92 + vim/patches/vim-7.3.434.patch0 | 233 ++ vim/patches/vim-7.3.435.patch0 | 63 + vim/patches/vim-7.3.436.patch0 | 111 + vim/patches/vim-7.3.437.patch0 | 73 + vim/patches/vim-7.3.438.patch0 | 126 + vim/patches/vim-7.3.439.patch0 | 87 + vim/patches/vim-7.3.440.patch0 | 211 ++ vim/patches/vim-7.3.441.patch0 | 341 +++ vim/patches/vim-7.3.442.patch0 | 186 ++ vim/patches/vim-7.3.443.patch0 | 206 ++ vim/patches/vim-7.3.444.patch0 | 96 + vim/patches/vim-7.3.445.patch0 | 199 ++ vim/patches/vim-7.3.446.patch0 | 164 + vim/patches/vim-7.3.447.patch0 | 377 +++ vim/patches/vim-7.3.448.patch0 | 180 ++ vim/patches/vim-7.3.449.patch0 | 455 +++ vim/patches/vim-7.3.450.patch0 | 81 + vim/patches/vim-7.3.451.patch0 | 363 +++ vim/patches/vim-7.3.452.patch0 | 70 + vim/patches/vim-7.3.453.patch0 | 58 + vim/patches/vim-7.3.454.patch0 | 84 + vim/patches/vim-7.3.455.patch0 | 70 + vim/patches/vim-7.3.456.patch0 | 376 +++ vim/patches/vim-7.3.457.patch0 | 81 + vim/patches/vim-7.3.458.patch0 | 52 + vim/patches/vim-7.3.459.patch0 | 71 + vim/patches/vim-7.3.460.patch0 | 89 + vim/patches/vim-7.3.461.patch0 | 243 ++ vim/patches/vim-7.3.462.patch0 | 191 ++ vim/patches/vim-7.3.463.patch0 | 63 + vim/patches/vim-7.3.464.patch0 | 60 + vim/patches/vim-7.3.465.patch0 | 398 +++ vim/patches/vim-7.3.466.patch0 | 49 + vim/patches/vim-7.3.467.patch0 | 54 + vim/patches/vim-7.3.468.patch0 | 144 + vim/patches/vim-7.3.469.patch0 | 53 + vim/patches/vim-7.3.470.patch0 | 67 + vim/patches/vim-7.3.471.patch0 | 92 + vim/patches/vim-7.3.472.patch0 | 88 + vim/patches/vim-7.3.473.patch0 | 68 + vim/patches/vim-7.3.474.patch0 | 62 + vim/patches/vim-7.3.475.patch0 | 98 + vim/patches/vim-7.3.476.patch0 | 56 + vim/patches/vim-7.3.477.patch0 | 52 + vim/patches/vim-7.3.478.patch0 | 46 + vim/patches/vim-7.3.479.patch0 | 134 + vim/patches/vim-7.3.480.patch0 | 237 ++ vim/patches/vim-7.3.481.patch0 | 65 + vim/patches/vim-7.3.482.patch0 | 57 + vim/patches/vim-7.3.483.patch0 | 97 + vim/patches/vim-7.3.484.patch0 | 62 + vim/patches/vim-7.3.485.patch0 | 52 + vim/patches/vim-7.3.486.patch0 | 58 + vim/patches/vim-7.3.487.patch0 | 572 ++++ vim/patches/vim-7.3.488.patch0 | 52 + vim/patches/vim-7.3.489.patch0 | 89 + vim/patches/vim-7.3.490.patch0 | 2517 +++++++++++++++ vim/patches/vim-7.3.491.patch0 | 235 ++ vim/patches/vim-7.3.492.patch0 | 718 +++++ vim/patches/vim-7.3.493.patch0 | 54 + vim/patches/vim-7.3.494.patch0 | 186 ++ vim/patches/vim-7.3.495.patch0 | 124 + vim/patches/vim-7.3.496.patch0 | 69 + vim/patches/vim-7.3.497.patch0 | 50 + vim/patches/vim-7.3.498.patch0 | 63 + vim/patches/vim-7.3.499.patch0 | 84 + vim/patches/vim-7.3.500.patch0 | 46 + vim/patches/vim-7.3.501.patch0 | 63 + vim/patches/vim-7.3.502.patch0 | 67 + vim/patches/vim-7.3.503.patch0 | 51 + vim/patches/vim-7.3.504.patch0 | 87 + vim/patches/vim-7.3.505.patch0 | 116 + vim/patches/vim-7.3.506.patch0 | 100 + vim/patches/vim-7.3.507.patch0 | 149 + vim/patches/vim-7.3.508.patch0 | 85 + vim/patches/vim-7.3.509.patch0 | 304 ++ vim/patches/vim-7.3.510.patch0 | 53 + vim/patches/vim-7.3.511.patch0 | 49 + vim/patches/vim-7.3.512.patch0 | 70 + vim/patches/vim-7.3.513.patch0 | 129 + vim/patches/vim-7.3.514.patch0 | 232 ++ vim/patches/vim-7.3.515.patch0 | 68 + vim/patches/vim-7.3.516.patch0 | 94 + vim/patches/vim-7.3.517.patch0 | 60 + vim/patches/vim-7.3.518.patch0 | 57 + vim/patches/vim-7.3.519.patch0 | 64 + vim/patches/vim-7.3.520.patch0 | 140 + vim/patches/vim-7.3.521.patch0 | 129 + vim/patches/vim-7.3.522.patch0 | 56 + vim/patches/vim-7.3.523.patch0 | 103 + vim/patches/vim-7.3.524.patch0 | 46 + vim/patches/vim-7.3.525.patch0 | 55 + vim/patches/vim-7.3.526.patch0 | 59 + vim/patches/vim-7.3.527.patch0 | 59 + vim/patches/vim-7.3.528.patch0 | 171 ++ vim/patches/vim-7.3.529.patch0 | 81 + vim/patches/vim-7.3.530.patch0 | 50 + vim/patches/vim-7.3.531.patch0 | 52 + vim/patches/vim-7.3.532.patch0 | 53 + vim/patches/vim-7.3.533.patch0 | 46 + vim/patches/vim-7.3.534.patch0 | 101 + vim/patches/vim-7.3.535.patch0 | 356 +++ vim/patches/vim-7.3.536.patch0 | 73 + vim/patches/vim-7.3.537.patch0 | 47 + vim/patches/vim-7.3.538.patch0 | 321 ++ vim/patches/vim-7.3.539.patch0 | 51 + vim/patches/vim-7.3.540.patch0 | 55 + vim/patches/vim-7.3.541.patch0 | 1090 +++++++ vim/patches/vim-7.3.542.patch0 | 73 + vim/patches/vim-7.3.543.patch0 | 55 + vim/patches/vim-7.3.544.patch0 | 81 + vim/patches/vim-7.3.545.patch0 | 359 +++ vim/patches/vim-7.3.546.patch0 | 54 + vim/patches/vim-7.3.547.patch0 | 52 + vim/vim.nm | 15 +- 468 files changed, 79343 insertions(+), 3 deletions(-) create mode 100644 vim/patches/download.sh create mode 100644 vim/patches/vim-7.3.082.patch0 create mode 100644 vim/patches/vim-7.3.083.patch0 create mode 100644 vim/patches/vim-7.3.084.patch0 create mode 100644 vim/patches/vim-7.3.085.patch0 create mode 100644 vim/patches/vim-7.3.086.patch0 create mode 100644 vim/patches/vim-7.3.087.patch0 create mode 100644 vim/patches/vim-7.3.088.patch0 create mode 100644 vim/patches/vim-7.3.089.patch0 create mode 100644 vim/patches/vim-7.3.090.patch0 create mode 100644 vim/patches/vim-7.3.091.patch0 create mode 100644 vim/patches/vim-7.3.092.patch0 create mode 100644 vim/patches/vim-7.3.093.patch0 create mode 100644 vim/patches/vim-7.3.094.patch0 create mode 100644 vim/patches/vim-7.3.095.patch0 create mode 100644 vim/patches/vim-7.3.096.patch0 create mode 100644 vim/patches/vim-7.3.097.patch0 create mode 100644 vim/patches/vim-7.3.098.patch0 create mode 100644 vim/patches/vim-7.3.099.patch0 create mode 100644 vim/patches/vim-7.3.100.patch0 create mode 100644 vim/patches/vim-7.3.101.patch0 create mode 100644 vim/patches/vim-7.3.102.patch0 create mode 100644 vim/patches/vim-7.3.103.patch0 create mode 100644 vim/patches/vim-7.3.104.patch0 create mode 100644 vim/patches/vim-7.3.105.patch0 create mode 100644 vim/patches/vim-7.3.106.patch0 create mode 100644 vim/patches/vim-7.3.107.patch0 create mode 100644 vim/patches/vim-7.3.108.patch0 create mode 100644 vim/patches/vim-7.3.109.patch0 create mode 100644 vim/patches/vim-7.3.110.patch0 create mode 100644 vim/patches/vim-7.3.111.patch0 create mode 100644 vim/patches/vim-7.3.112.patch0 create mode 100644 vim/patches/vim-7.3.113.patch0 create mode 100644 vim/patches/vim-7.3.114.patch0 create mode 100644 vim/patches/vim-7.3.115.patch0 create mode 100644 vim/patches/vim-7.3.116.patch0 create mode 100644 vim/patches/vim-7.3.117.patch0 create mode 100644 vim/patches/vim-7.3.118.patch0 create mode 100644 vim/patches/vim-7.3.119.patch0 create mode 100644 vim/patches/vim-7.3.120.patch0 create mode 100644 vim/patches/vim-7.3.121.patch0 create mode 100644 vim/patches/vim-7.3.122.patch0 create mode 100644 vim/patches/vim-7.3.123.patch0 create mode 100644 vim/patches/vim-7.3.124.patch0 create mode 100644 vim/patches/vim-7.3.125.patch0 create mode 100644 vim/patches/vim-7.3.126.patch0 create mode 100644 vim/patches/vim-7.3.127.patch0 create mode 100644 vim/patches/vim-7.3.128.patch0 create mode 100644 vim/patches/vim-7.3.129.patch0 create mode 100644 vim/patches/vim-7.3.130.patch0 create mode 100644 vim/patches/vim-7.3.131.patch0 create mode 100644 vim/patches/vim-7.3.132.patch0 create mode 100644 vim/patches/vim-7.3.133.patch0 create mode 100644 vim/patches/vim-7.3.134.patch0 create mode 100644 vim/patches/vim-7.3.135.patch0 create mode 100644 vim/patches/vim-7.3.136.patch0 create mode 100644 vim/patches/vim-7.3.137.patch0 create mode 100644 vim/patches/vim-7.3.138.patch0 create mode 100644 vim/patches/vim-7.3.139.patch0 create mode 100644 vim/patches/vim-7.3.140.patch0 create mode 100644 vim/patches/vim-7.3.141.patch0 create mode 100644 vim/patches/vim-7.3.142.patch0 create mode 100644 vim/patches/vim-7.3.143.patch0 create mode 100644 vim/patches/vim-7.3.144.patch0 create mode 100644 vim/patches/vim-7.3.145.patch0 create mode 100644 vim/patches/vim-7.3.146.patch0 create mode 100644 vim/patches/vim-7.3.147.patch0 create mode 100644 vim/patches/vim-7.3.148.patch0 create mode 100644 vim/patches/vim-7.3.149.patch0 create mode 100644 vim/patches/vim-7.3.150.patch0 create mode 100644 vim/patches/vim-7.3.151.patch0 create mode 100644 vim/patches/vim-7.3.152.patch0 create mode 100644 vim/patches/vim-7.3.153.patch0 create mode 100644 vim/patches/vim-7.3.154.patch0 create mode 100644 vim/patches/vim-7.3.155.patch0 create mode 100644 vim/patches/vim-7.3.156.patch0 create mode 100644 vim/patches/vim-7.3.157.patch0 create mode 100644 vim/patches/vim-7.3.158.patch0 create mode 100644 vim/patches/vim-7.3.159.patch0 create mode 100644 vim/patches/vim-7.3.160.patch0 create mode 100644 vim/patches/vim-7.3.161.patch0 create mode 100644 vim/patches/vim-7.3.162.patch0 create mode 100644 vim/patches/vim-7.3.163.patch0 create mode 100644 vim/patches/vim-7.3.164.patch0 create mode 100644 vim/patches/vim-7.3.165.patch0 create mode 100644 vim/patches/vim-7.3.166.patch0 create mode 100644 vim/patches/vim-7.3.167.patch0 create mode 100644 vim/patches/vim-7.3.168.patch0 create mode 100644 vim/patches/vim-7.3.169.patch0 create mode 100644 vim/patches/vim-7.3.170.patch0 create mode 100644 vim/patches/vim-7.3.171.patch0 create mode 100644 vim/patches/vim-7.3.172.patch0 create mode 100644 vim/patches/vim-7.3.173.patch0 create mode 100644 vim/patches/vim-7.3.174.patch0 create mode 100644 vim/patches/vim-7.3.175.patch0 create mode 100644 vim/patches/vim-7.3.176.patch0 create mode 100644 vim/patches/vim-7.3.177.patch0 create mode 100644 vim/patches/vim-7.3.178.patch0 create mode 100644 vim/patches/vim-7.3.179.patch0 create mode 100644 vim/patches/vim-7.3.180.patch0 create mode 100644 vim/patches/vim-7.3.181.patch0 create mode 100644 vim/patches/vim-7.3.182.patch0 create mode 100644 vim/patches/vim-7.3.183.patch0 create mode 100644 vim/patches/vim-7.3.184.patch0 create mode 100644 vim/patches/vim-7.3.185.patch0 create mode 100644 vim/patches/vim-7.3.186.patch0 create mode 100644 vim/patches/vim-7.3.187.patch0 create mode 100644 vim/patches/vim-7.3.188.patch0 create mode 100644 vim/patches/vim-7.3.189.patch0 create mode 100644 vim/patches/vim-7.3.190.patch0 create mode 100644 vim/patches/vim-7.3.191.patch0 create mode 100644 vim/patches/vim-7.3.192.patch0 create mode 100644 vim/patches/vim-7.3.193.patch0 create mode 100644 vim/patches/vim-7.3.194.patch0 create mode 100644 vim/patches/vim-7.3.195.patch0 create mode 100644 vim/patches/vim-7.3.196.patch0 create mode 100644 vim/patches/vim-7.3.197.patch0 create mode 100644 vim/patches/vim-7.3.198.patch0 create mode 100644 vim/patches/vim-7.3.199.patch0 create mode 100644 vim/patches/vim-7.3.200.patch0 create mode 100644 vim/patches/vim-7.3.201.patch0 create mode 100644 vim/patches/vim-7.3.202.patch0 create mode 100644 vim/patches/vim-7.3.203.patch0 create mode 100644 vim/patches/vim-7.3.204.patch0 create mode 100644 vim/patches/vim-7.3.205.patch0 create mode 100644 vim/patches/vim-7.3.206.patch0 create mode 100644 vim/patches/vim-7.3.207.patch0 create mode 100644 vim/patches/vim-7.3.208.patch0 create mode 100644 vim/patches/vim-7.3.209.patch0 create mode 100644 vim/patches/vim-7.3.210.patch0 create mode 100644 vim/patches/vim-7.3.211.patch0 create mode 100644 vim/patches/vim-7.3.212.patch0 create mode 100644 vim/patches/vim-7.3.213.patch0 create mode 100644 vim/patches/vim-7.3.214.patch0 create mode 100644 vim/patches/vim-7.3.215.patch0 create mode 100644 vim/patches/vim-7.3.216.patch0 create mode 100644 vim/patches/vim-7.3.217.patch0 create mode 100644 vim/patches/vim-7.3.218.patch0 create mode 100644 vim/patches/vim-7.3.219.patch0 create mode 100644 vim/patches/vim-7.3.220.patch0 create mode 100644 vim/patches/vim-7.3.221.patch0 create mode 100644 vim/patches/vim-7.3.222.patch0 create mode 100644 vim/patches/vim-7.3.223.patch0 create mode 100644 vim/patches/vim-7.3.224.patch0 create mode 100644 vim/patches/vim-7.3.225.patch0 create mode 100644 vim/patches/vim-7.3.226.patch0 create mode 100644 vim/patches/vim-7.3.227.patch0 create mode 100644 vim/patches/vim-7.3.228.patch0 create mode 100644 vim/patches/vim-7.3.229.patch0 create mode 100644 vim/patches/vim-7.3.230.patch0 create mode 100644 vim/patches/vim-7.3.231.patch0 create mode 100644 vim/patches/vim-7.3.232.patch0 create mode 100644 vim/patches/vim-7.3.233.patch0 create mode 100644 vim/patches/vim-7.3.234.patch0 create mode 100644 vim/patches/vim-7.3.235.patch0 create mode 100644 vim/patches/vim-7.3.236.patch0 create mode 100644 vim/patches/vim-7.3.237.patch0 create mode 100644 vim/patches/vim-7.3.238.patch0 create mode 100644 vim/patches/vim-7.3.239.patch0 create mode 100644 vim/patches/vim-7.3.240.patch0 create mode 100644 vim/patches/vim-7.3.241.patch0 create mode 100644 vim/patches/vim-7.3.242.patch0 create mode 100644 vim/patches/vim-7.3.243.patch0 create mode 100644 vim/patches/vim-7.3.244.patch0 create mode 100644 vim/patches/vim-7.3.245.patch0 create mode 100644 vim/patches/vim-7.3.246.patch0 create mode 100644 vim/patches/vim-7.3.247.patch0 create mode 100644 vim/patches/vim-7.3.248.patch0 create mode 100644 vim/patches/vim-7.3.249.patch0 create mode 100644 vim/patches/vim-7.3.250.patch0 create mode 100644 vim/patches/vim-7.3.251.patch0 create mode 100644 vim/patches/vim-7.3.252.patch0 create mode 100644 vim/patches/vim-7.3.253.patch0 create mode 100644 vim/patches/vim-7.3.254.patch0 create mode 100644 vim/patches/vim-7.3.255.patch0 create mode 100644 vim/patches/vim-7.3.256.patch0 create mode 100644 vim/patches/vim-7.3.257.patch0 create mode 100644 vim/patches/vim-7.3.258.patch0 create mode 100644 vim/patches/vim-7.3.259.patch0 create mode 100644 vim/patches/vim-7.3.260.patch0 create mode 100644 vim/patches/vim-7.3.261.patch0 create mode 100644 vim/patches/vim-7.3.262.patch0 create mode 100644 vim/patches/vim-7.3.263.patch0 create mode 100644 vim/patches/vim-7.3.264.patch0 create mode 100644 vim/patches/vim-7.3.265.patch0 create mode 100644 vim/patches/vim-7.3.266.patch0 create mode 100644 vim/patches/vim-7.3.267.patch0 create mode 100644 vim/patches/vim-7.3.268.patch0 create mode 100644 vim/patches/vim-7.3.269.patch0 create mode 100644 vim/patches/vim-7.3.270.patch0 create mode 100644 vim/patches/vim-7.3.271.patch0 create mode 100644 vim/patches/vim-7.3.272.patch0 create mode 100644 vim/patches/vim-7.3.273.patch0 create mode 100644 vim/patches/vim-7.3.274.patch0 create mode 100644 vim/patches/vim-7.3.275.patch0 create mode 100644 vim/patches/vim-7.3.276.patch0 create mode 100644 vim/patches/vim-7.3.277.patch0 create mode 100644 vim/patches/vim-7.3.278.patch0 create mode 100644 vim/patches/vim-7.3.279.patch0 create mode 100644 vim/patches/vim-7.3.280.patch0 create mode 100644 vim/patches/vim-7.3.281.patch0 create mode 100644 vim/patches/vim-7.3.282.patch0 create mode 100644 vim/patches/vim-7.3.283.patch0 create mode 100644 vim/patches/vim-7.3.284.patch0 create mode 100644 vim/patches/vim-7.3.285.patch0 create mode 100644 vim/patches/vim-7.3.286.patch0 create mode 100644 vim/patches/vim-7.3.287.patch0 create mode 100644 vim/patches/vim-7.3.288.patch0 create mode 100644 vim/patches/vim-7.3.289.patch0 create mode 100644 vim/patches/vim-7.3.290.patch0 create mode 100644 vim/patches/vim-7.3.291.patch0 create mode 100644 vim/patches/vim-7.3.292.patch0 create mode 100644 vim/patches/vim-7.3.293.patch0 create mode 100644 vim/patches/vim-7.3.294.patch0 create mode 100644 vim/patches/vim-7.3.295.patch0 create mode 100644 vim/patches/vim-7.3.296.patch0 create mode 100644 vim/patches/vim-7.3.297.patch0 create mode 100644 vim/patches/vim-7.3.298.patch0 create mode 100644 vim/patches/vim-7.3.299.patch0 create mode 100644 vim/patches/vim-7.3.300.patch0 create mode 100644 vim/patches/vim-7.3.301.patch0 create mode 100644 vim/patches/vim-7.3.302.patch0 create mode 100644 vim/patches/vim-7.3.303.patch0 create mode 100644 vim/patches/vim-7.3.304.patch0 create mode 100644 vim/patches/vim-7.3.305.patch0 create mode 100644 vim/patches/vim-7.3.306.patch0 create mode 100644 vim/patches/vim-7.3.307.patch0 create mode 100644 vim/patches/vim-7.3.308.patch0 create mode 100644 vim/patches/vim-7.3.309.patch0 create mode 100644 vim/patches/vim-7.3.310.patch0 create mode 100644 vim/patches/vim-7.3.311.patch0 create mode 100644 vim/patches/vim-7.3.312.patch0 create mode 100644 vim/patches/vim-7.3.313.patch0 create mode 100644 vim/patches/vim-7.3.314.patch0 create mode 100644 vim/patches/vim-7.3.315.patch0 create mode 100644 vim/patches/vim-7.3.316.patch0 create mode 100644 vim/patches/vim-7.3.317.patch0 create mode 100644 vim/patches/vim-7.3.318.patch0 create mode 100644 vim/patches/vim-7.3.319.patch0 create mode 100644 vim/patches/vim-7.3.320.patch0 create mode 100644 vim/patches/vim-7.3.321.patch0 create mode 100644 vim/patches/vim-7.3.322.patch0 create mode 100644 vim/patches/vim-7.3.323.patch0 create mode 100644 vim/patches/vim-7.3.324.patch0 create mode 100644 vim/patches/vim-7.3.325.patch0 create mode 100644 vim/patches/vim-7.3.326.patch0 create mode 100644 vim/patches/vim-7.3.327.patch0 create mode 100644 vim/patches/vim-7.3.328.patch0 create mode 100644 vim/patches/vim-7.3.329.patch0 create mode 100644 vim/patches/vim-7.3.330.patch0 create mode 100644 vim/patches/vim-7.3.331.patch0 create mode 100644 vim/patches/vim-7.3.332.patch0 create mode 100644 vim/patches/vim-7.3.333.patch0 create mode 100644 vim/patches/vim-7.3.334.patch0 create mode 100644 vim/patches/vim-7.3.335.patch0 create mode 100644 vim/patches/vim-7.3.336.patch0 create mode 100644 vim/patches/vim-7.3.337.patch0 create mode 100644 vim/patches/vim-7.3.338.patch0 create mode 100644 vim/patches/vim-7.3.339.patch0 create mode 100644 vim/patches/vim-7.3.340.patch0 create mode 100644 vim/patches/vim-7.3.341.patch0 create mode 100644 vim/patches/vim-7.3.342.patch0 create mode 100644 vim/patches/vim-7.3.343.patch0 create mode 100644 vim/patches/vim-7.3.344.patch0 create mode 100644 vim/patches/vim-7.3.345.patch0 create mode 100644 vim/patches/vim-7.3.346.patch0 create mode 100644 vim/patches/vim-7.3.347.patch0 create mode 100644 vim/patches/vim-7.3.348.patch0 create mode 100644 vim/patches/vim-7.3.349.patch0 create mode 100644 vim/patches/vim-7.3.350.patch0 create mode 100644 vim/patches/vim-7.3.351.patch0 create mode 100644 vim/patches/vim-7.3.352.patch0 create mode 100644 vim/patches/vim-7.3.353.patch0 create mode 100644 vim/patches/vim-7.3.354.patch0 create mode 100644 vim/patches/vim-7.3.355.patch0 create mode 100644 vim/patches/vim-7.3.356.patch0 create mode 100644 vim/patches/vim-7.3.357.patch0 create mode 100644 vim/patches/vim-7.3.358.patch0 create mode 100644 vim/patches/vim-7.3.359.patch0 create mode 100644 vim/patches/vim-7.3.360.patch0 create mode 100644 vim/patches/vim-7.3.361.patch0 create mode 100644 vim/patches/vim-7.3.362.patch0 create mode 100644 vim/patches/vim-7.3.363.patch0 create mode 100644 vim/patches/vim-7.3.364.patch0 create mode 100644 vim/patches/vim-7.3.365.patch0 create mode 100644 vim/patches/vim-7.3.366.patch0 create mode 100644 vim/patches/vim-7.3.367.patch0 create mode 100644 vim/patches/vim-7.3.368.patch0 create mode 100644 vim/patches/vim-7.3.369.patch0 create mode 100644 vim/patches/vim-7.3.370.patch0 create mode 100644 vim/patches/vim-7.3.371.patch0 create mode 100644 vim/patches/vim-7.3.372.patch0 create mode 100644 vim/patches/vim-7.3.373.patch0 create mode 100644 vim/patches/vim-7.3.374.patch0 create mode 100644 vim/patches/vim-7.3.375.patch0 create mode 100644 vim/patches/vim-7.3.376.patch0 create mode 100644 vim/patches/vim-7.3.377.patch0 create mode 100644 vim/patches/vim-7.3.378.patch0 create mode 100644 vim/patches/vim-7.3.379.patch0 create mode 100644 vim/patches/vim-7.3.380.patch0 create mode 100644 vim/patches/vim-7.3.381.patch0 create mode 100644 vim/patches/vim-7.3.382.patch0 create mode 100644 vim/patches/vim-7.3.383.patch0 create mode 100644 vim/patches/vim-7.3.384.patch0 create mode 100644 vim/patches/vim-7.3.385.patch0 create mode 100644 vim/patches/vim-7.3.386.patch0 create mode 100644 vim/patches/vim-7.3.387.patch0 create mode 100644 vim/patches/vim-7.3.388.patch0 create mode 100644 vim/patches/vim-7.3.389.patch0 create mode 100644 vim/patches/vim-7.3.390.patch0 create mode 100644 vim/patches/vim-7.3.391.patch0 create mode 100644 vim/patches/vim-7.3.392.patch0 create mode 100644 vim/patches/vim-7.3.393.patch0 create mode 100644 vim/patches/vim-7.3.394.patch0 create mode 100644 vim/patches/vim-7.3.395.patch0 create mode 100644 vim/patches/vim-7.3.396.patch0 create mode 100644 vim/patches/vim-7.3.397.patch0 create mode 100644 vim/patches/vim-7.3.398.patch0 create mode 100644 vim/patches/vim-7.3.399.patch0 create mode 100644 vim/patches/vim-7.3.400.patch0 create mode 100644 vim/patches/vim-7.3.401.patch0 create mode 100644 vim/patches/vim-7.3.402.patch0 create mode 100644 vim/patches/vim-7.3.403.patch0 create mode 100644 vim/patches/vim-7.3.404.patch0 create mode 100644 vim/patches/vim-7.3.405.patch0 create mode 100644 vim/patches/vim-7.3.406.patch0 create mode 100644 vim/patches/vim-7.3.407.patch0 create mode 100644 vim/patches/vim-7.3.408.patch0 create mode 100644 vim/patches/vim-7.3.409.patch0 create mode 100644 vim/patches/vim-7.3.410.patch0 create mode 100644 vim/patches/vim-7.3.411.patch0 create mode 100644 vim/patches/vim-7.3.412.patch0 create mode 100644 vim/patches/vim-7.3.413.patch0 create mode 100644 vim/patches/vim-7.3.414.patch0 create mode 100644 vim/patches/vim-7.3.415.patch0 create mode 100644 vim/patches/vim-7.3.416.patch0 create mode 100644 vim/patches/vim-7.3.417.patch0 create mode 100644 vim/patches/vim-7.3.418.patch0 create mode 100644 vim/patches/vim-7.3.419.patch0 create mode 100644 vim/patches/vim-7.3.420.patch0 create mode 100644 vim/patches/vim-7.3.421.patch0 create mode 100644 vim/patches/vim-7.3.422.patch0 create mode 100644 vim/patches/vim-7.3.423.patch0 create mode 100644 vim/patches/vim-7.3.424.patch0 create mode 100644 vim/patches/vim-7.3.425.patch0 create mode 100644 vim/patches/vim-7.3.426.patch0 create mode 100644 vim/patches/vim-7.3.427.patch0 create mode 100644 vim/patches/vim-7.3.428.patch0 create mode 100644 vim/patches/vim-7.3.429.patch0 create mode 100644 vim/patches/vim-7.3.430.patch0 create mode 100644 vim/patches/vim-7.3.431.patch0 create mode 100644 vim/patches/vim-7.3.432.patch0 create mode 100644 vim/patches/vim-7.3.433.patch0 create mode 100644 vim/patches/vim-7.3.434.patch0 create mode 100644 vim/patches/vim-7.3.435.patch0 create mode 100644 vim/patches/vim-7.3.436.patch0 create mode 100644 vim/patches/vim-7.3.437.patch0 create mode 100644 vim/patches/vim-7.3.438.patch0 create mode 100644 vim/patches/vim-7.3.439.patch0 create mode 100644 vim/patches/vim-7.3.440.patch0 create mode 100644 vim/patches/vim-7.3.441.patch0 create mode 100644 vim/patches/vim-7.3.442.patch0 create mode 100644 vim/patches/vim-7.3.443.patch0 create mode 100644 vim/patches/vim-7.3.444.patch0 create mode 100644 vim/patches/vim-7.3.445.patch0 create mode 100644 vim/patches/vim-7.3.446.patch0 create mode 100644 vim/patches/vim-7.3.447.patch0 create mode 100644 vim/patches/vim-7.3.448.patch0 create mode 100644 vim/patches/vim-7.3.449.patch0 create mode 100644 vim/patches/vim-7.3.450.patch0 create mode 100644 vim/patches/vim-7.3.451.patch0 create mode 100644 vim/patches/vim-7.3.452.patch0 create mode 100644 vim/patches/vim-7.3.453.patch0 create mode 100644 vim/patches/vim-7.3.454.patch0 create mode 100644 vim/patches/vim-7.3.455.patch0 create mode 100644 vim/patches/vim-7.3.456.patch0 create mode 100644 vim/patches/vim-7.3.457.patch0 create mode 100644 vim/patches/vim-7.3.458.patch0 create mode 100644 vim/patches/vim-7.3.459.patch0 create mode 100644 vim/patches/vim-7.3.460.patch0 create mode 100644 vim/patches/vim-7.3.461.patch0 create mode 100644 vim/patches/vim-7.3.462.patch0 create mode 100644 vim/patches/vim-7.3.463.patch0 create mode 100644 vim/patches/vim-7.3.464.patch0 create mode 100644 vim/patches/vim-7.3.465.patch0 create mode 100644 vim/patches/vim-7.3.466.patch0 create mode 100644 vim/patches/vim-7.3.467.patch0 create mode 100644 vim/patches/vim-7.3.468.patch0 create mode 100644 vim/patches/vim-7.3.469.patch0 create mode 100644 vim/patches/vim-7.3.470.patch0 create mode 100644 vim/patches/vim-7.3.471.patch0 create mode 100644 vim/patches/vim-7.3.472.patch0 create mode 100644 vim/patches/vim-7.3.473.patch0 create mode 100644 vim/patches/vim-7.3.474.patch0 create mode 100644 vim/patches/vim-7.3.475.patch0 create mode 100644 vim/patches/vim-7.3.476.patch0 create mode 100644 vim/patches/vim-7.3.477.patch0 create mode 100644 vim/patches/vim-7.3.478.patch0 create mode 100644 vim/patches/vim-7.3.479.patch0 create mode 100644 vim/patches/vim-7.3.480.patch0 create mode 100644 vim/patches/vim-7.3.481.patch0 create mode 100644 vim/patches/vim-7.3.482.patch0 create mode 100644 vim/patches/vim-7.3.483.patch0 create mode 100644 vim/patches/vim-7.3.484.patch0 create mode 100644 vim/patches/vim-7.3.485.patch0 create mode 100644 vim/patches/vim-7.3.486.patch0 create mode 100644 vim/patches/vim-7.3.487.patch0 create mode 100644 vim/patches/vim-7.3.488.patch0 create mode 100644 vim/patches/vim-7.3.489.patch0 create mode 100644 vim/patches/vim-7.3.490.patch0 create mode 100644 vim/patches/vim-7.3.491.patch0 create mode 100644 vim/patches/vim-7.3.492.patch0 create mode 100644 vim/patches/vim-7.3.493.patch0 create mode 100644 vim/patches/vim-7.3.494.patch0 create mode 100644 vim/patches/vim-7.3.495.patch0 create mode 100644 vim/patches/vim-7.3.496.patch0 create mode 100644 vim/patches/vim-7.3.497.patch0 create mode 100644 vim/patches/vim-7.3.498.patch0 create mode 100644 vim/patches/vim-7.3.499.patch0 create mode 100644 vim/patches/vim-7.3.500.patch0 create mode 100644 vim/patches/vim-7.3.501.patch0 create mode 100644 vim/patches/vim-7.3.502.patch0 create mode 100644 vim/patches/vim-7.3.503.patch0 create mode 100644 vim/patches/vim-7.3.504.patch0 create mode 100644 vim/patches/vim-7.3.505.patch0 create mode 100644 vim/patches/vim-7.3.506.patch0 create mode 100644 vim/patches/vim-7.3.507.patch0 create mode 100644 vim/patches/vim-7.3.508.patch0 create mode 100644 vim/patches/vim-7.3.509.patch0 create mode 100644 vim/patches/vim-7.3.510.patch0 create mode 100644 vim/patches/vim-7.3.511.patch0 create mode 100644 vim/patches/vim-7.3.512.patch0 create mode 100644 vim/patches/vim-7.3.513.patch0 create mode 100644 vim/patches/vim-7.3.514.patch0 create mode 100644 vim/patches/vim-7.3.515.patch0 create mode 100644 vim/patches/vim-7.3.516.patch0 create mode 100644 vim/patches/vim-7.3.517.patch0 create mode 100644 vim/patches/vim-7.3.518.patch0 create mode 100644 vim/patches/vim-7.3.519.patch0 create mode 100644 vim/patches/vim-7.3.520.patch0 create mode 100644 vim/patches/vim-7.3.521.patch0 create mode 100644 vim/patches/vim-7.3.522.patch0 create mode 100644 vim/patches/vim-7.3.523.patch0 create mode 100644 vim/patches/vim-7.3.524.patch0 create mode 100644 vim/patches/vim-7.3.525.patch0 create mode 100644 vim/patches/vim-7.3.526.patch0 create mode 100644 vim/patches/vim-7.3.527.patch0 create mode 100644 vim/patches/vim-7.3.528.patch0 create mode 100644 vim/patches/vim-7.3.529.patch0 create mode 100644 vim/patches/vim-7.3.530.patch0 create mode 100644 vim/patches/vim-7.3.531.patch0 create mode 100644 vim/patches/vim-7.3.532.patch0 create mode 100644 vim/patches/vim-7.3.533.patch0 create mode 100644 vim/patches/vim-7.3.534.patch0 create mode 100644 vim/patches/vim-7.3.535.patch0 create mode 100644 vim/patches/vim-7.3.536.patch0 create mode 100644 vim/patches/vim-7.3.537.patch0 create mode 100644 vim/patches/vim-7.3.538.patch0 create mode 100644 vim/patches/vim-7.3.539.patch0 create mode 100644 vim/patches/vim-7.3.540.patch0 create mode 100644 vim/patches/vim-7.3.541.patch0 create mode 100644 vim/patches/vim-7.3.542.patch0 create mode 100644 vim/patches/vim-7.3.543.patch0 create mode 100644 vim/patches/vim-7.3.544.patch0 create mode 100644 vim/patches/vim-7.3.545.patch0 create mode 100644 vim/patches/vim-7.3.546.patch0 create mode 100644 vim/patches/vim-7.3.547.patch0
Difference in files: diff --git a/vim/patches/download.sh b/vim/patches/download.sh new file mode 100644 index 0000000..c40da4b --- /dev/null +++ b/vim/patches/download.sh @@ -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 index 0000000..5753c05 --- /dev/null +++ b/vim/patches/vim-7.3.082.patch0 @@ -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 index 0000000..f337d21 --- /dev/null +++ b/vim/patches/vim-7.3.083.patch0 @@ -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 index 0000000..a46892e --- /dev/null +++ b/vim/patches/vim-7.3.084.patch0 @@ -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 index 0000000..15fb87f --- /dev/null +++ b/vim/patches/vim-7.3.085.patch0 @@ -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 index 0000000..cf494e0 --- /dev/null +++ b/vim/patches/vim-7.3.086.patch0 @@ -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 index 0000000..e0497db --- /dev/null +++ b/vim/patches/vim-7.3.087.patch0 @@ -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 index 0000000..98acc7c --- /dev/null +++ b/vim/patches/vim-7.3.088.patch0 @@ -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 index 0000000..47b894a --- /dev/null +++ b/vim/patches/vim-7.3.089.patch0 @@ -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 index 0000000..cf68d62 --- /dev/null +++ b/vim/patches/vim-7.3.090.patch0 @@ -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 index 0000000..f0aac0d --- /dev/null +++ b/vim/patches/vim-7.3.091.patch0 @@ -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 index 0000000..d100b00 --- /dev/null +++ b/vim/patches/vim-7.3.092.patch0 @@ -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 index 0000000..9bf0fe8 --- /dev/null +++ b/vim/patches/vim-7.3.093.patch0 @@ -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 index 0000000..e95122b --- /dev/null +++ b/vim/patches/vim-7.3.094.patch0 @@ -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 index 0000000..2ea3492 --- /dev/null +++ b/vim/patches/vim-7.3.095.patch0 @@ -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 index 0000000..b8b541b --- /dev/null +++ b/vim/patches/vim-7.3.096.patch0 @@ -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 index 0000000..2ee20a3 --- /dev/null +++ b/vim/patches/vim-7.3.097.patch0 @@ -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 index 0000000..9e6435e --- /dev/null +++ b/vim/patches/vim-7.3.098.patch0 @@ -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 index 0000000..84aa2a3 --- /dev/null +++ b/vim/patches/vim-7.3.099.patch0 @@ -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 index 0000000..2b6e8b0 --- /dev/null +++ b/vim/patches/vim-7.3.100.patch0 @@ -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 index 0000000..8869baf --- /dev/null +++ b/vim/patches/vim-7.3.101.patch0 @@ -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 index 0000000..785e597 --- /dev/null +++ b/vim/patches/vim-7.3.102.patch0 @@ -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 index 0000000..f9e086f --- /dev/null +++ b/vim/patches/vim-7.3.103.patch0 @@ -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 index 0000000..1e719bd --- /dev/null +++ b/vim/patches/vim-7.3.104.patch0 @@ -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 index 0000000..abf69ac --- /dev/null +++ b/vim/patches/vim-7.3.105.patch0 @@ -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 index 0000000..f98df30 --- /dev/null +++ b/vim/patches/vim-7.3.106.patch0 @@ -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 index 0000000..1256b81 --- /dev/null +++ b/vim/patches/vim-7.3.107.patch0 @@ -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 index 0000000..91f3ceb --- /dev/null +++ b/vim/patches/vim-7.3.108.patch0 @@ -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 index 0000000..ce35fb0 --- /dev/null +++ b/vim/patches/vim-7.3.109.patch0 @@ -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 index 0000000..3ffc7f2 --- /dev/null +++ b/vim/patches/vim-7.3.110.patch0 @@ -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 index 0000000..e3cf717 --- /dev/null +++ b/vim/patches/vim-7.3.111.patch0 @@ -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 index 0000000..af9b881 --- /dev/null +++ b/vim/patches/vim-7.3.112.patch0 @@ -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 index 0000000..a4383ad --- /dev/null +++ b/vim/patches/vim-7.3.113.patch0 @@ -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 index 0000000..34bdd36 --- /dev/null +++ b/vim/patches/vim-7.3.114.patch0 @@ -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 index 0000000..dd36df3 --- /dev/null +++ b/vim/patches/vim-7.3.115.patch0 @@ -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 index 0000000..ee9543a --- /dev/null +++ b/vim/patches/vim-7.3.116.patch0 @@ -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 index 0000000..19fcf73 --- /dev/null +++ b/vim/patches/vim-7.3.117.patch0 @@ -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 index 0000000..fecb948 --- /dev/null +++ b/vim/patches/vim-7.3.118.patch0 @@ -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 index 0000000..1547625 --- /dev/null +++ b/vim/patches/vim-7.3.119.patch0 @@ -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 index 0000000..04e2f63 --- /dev/null +++ b/vim/patches/vim-7.3.120.patch0 @@ -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 index 0000000..f51a774 --- /dev/null +++ b/vim/patches/vim-7.3.121.patch0 @@ -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 index 0000000..02e9759 --- /dev/null +++ b/vim/patches/vim-7.3.122.patch0 @@ -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 index 0000000..0bca41b --- /dev/null +++ b/vim/patches/vim-7.3.123.patch0 @@ -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 index 0000000..738c2a1 --- /dev/null +++ b/vim/patches/vim-7.3.124.patch0 @@ -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 index 0000000..719fc95 --- /dev/null +++ b/vim/patches/vim-7.3.125.patch0 @@ -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 index 0000000..89d9684 --- /dev/null +++ b/vim/patches/vim-7.3.126.patch0 @@ -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 index 0000000..518d2f7 --- /dev/null +++ b/vim/patches/vim-7.3.127.patch0 @@ -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 index 0000000..d443868 --- /dev/null +++ b/vim/patches/vim-7.3.128.patch0 @@ -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 index 0000000..10f11d6 --- /dev/null +++ b/vim/patches/vim-7.3.129.patch0 @@ -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 index 0000000..3f7db76 --- /dev/null +++ b/vim/patches/vim-7.3.130.patch0 @@ -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 index 0000000..e142059 --- /dev/null +++ b/vim/patches/vim-7.3.131.patch0 @@ -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 index 0000000..2f0753d --- /dev/null +++ b/vim/patches/vim-7.3.132.patch0 @@ -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 index 0000000..d7d9951 --- /dev/null +++ b/vim/patches/vim-7.3.133.patch0 @@ -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 index 0000000..cb20ce4 --- /dev/null +++ b/vim/patches/vim-7.3.134.patch0 @@ -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 index 0000000..ca1ebd6 --- /dev/null +++ b/vim/patches/vim-7.3.135.patch0 @@ -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 index 0000000..87acecb --- /dev/null +++ b/vim/patches/vim-7.3.136.patch0 @@ -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 index 0000000..91f68ed --- /dev/null +++ b/vim/patches/vim-7.3.137.patch0 @@ -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 index 0000000..e045e79 --- /dev/null +++ b/vim/patches/vim-7.3.138.patch0 @@ -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 index 0000000..057bf65 --- /dev/null +++ b/vim/patches/vim-7.3.139.patch0 @@ -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 index 0000000..53c3aaf --- /dev/null +++ b/vim/patches/vim-7.3.140.patch0 @@ -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 index 0000000..deb001b --- /dev/null +++ b/vim/patches/vim-7.3.141.patch0 @@ -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 index 0000000..6574f71 --- /dev/null +++ b/vim/patches/vim-7.3.142.patch0 @@ -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 index 0000000..82585b0 --- /dev/null +++ b/vim/patches/vim-7.3.143.patch0 @@ -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 index 0000000..3bdea8d --- /dev/null +++ b/vim/patches/vim-7.3.144.patch0 @@ -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 index 0000000..a435fc2 --- /dev/null +++ b/vim/patches/vim-7.3.145.patch0 @@ -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 index 0000000..0a7390c --- /dev/null +++ b/vim/patches/vim-7.3.146.patch0 @@ -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 index 0000000..b6fd756 --- /dev/null +++ b/vim/patches/vim-7.3.147.patch0 @@ -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 index 0000000..30492c0 --- /dev/null +++ b/vim/patches/vim-7.3.148.patch0 @@ -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 index 0000000..1901a74 --- /dev/null +++ b/vim/patches/vim-7.3.149.patch0 @@ -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 index 0000000..83a8bf2 --- /dev/null +++ b/vim/patches/vim-7.3.150.patch0 @@ -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 index 0000000..20f5105 --- /dev/null +++ b/vim/patches/vim-7.3.151.patch0 @@ -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 index 0000000..fdc58a0 --- /dev/null +++ b/vim/patches/vim-7.3.152.patch0 @@ -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 index 0000000..9f76b51 --- /dev/null +++ b/vim/patches/vim-7.3.153.patch0 @@ -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 index 0000000..e7c8862 --- /dev/null +++ b/vim/patches/vim-7.3.154.patch0 @@ -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 index 0000000..806efca --- /dev/null +++ b/vim/patches/vim-7.3.155.patch0 @@ -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 index 0000000..ec87324 --- /dev/null +++ b/vim/patches/vim-7.3.156.patch0 @@ -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 index 0000000..403c948 --- /dev/null +++ b/vim/patches/vim-7.3.157.patch0 @@ -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 index 0000000..8fba350 --- /dev/null +++ b/vim/patches/vim-7.3.158.patch0 @@ -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 index 0000000..7029ac8 --- /dev/null +++ b/vim/patches/vim-7.3.159.patch0 @@ -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 index 0000000..bf3a069 --- /dev/null +++ b/vim/patches/vim-7.3.160.patch0 @@ -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 index 0000000..61223ec --- /dev/null +++ b/vim/patches/vim-7.3.161.patch0 @@ -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 index 0000000..3f0173a --- /dev/null +++ b/vim/patches/vim-7.3.162.patch0 @@ -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 index 0000000..b5f1cb4 --- /dev/null +++ b/vim/patches/vim-7.3.163.patch0 @@ -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 index 0000000..9049f1b --- /dev/null +++ b/vim/patches/vim-7.3.164.patch0 @@ -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 index 0000000..2725259 --- /dev/null +++ b/vim/patches/vim-7.3.165.patch0 @@ -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 index 0000000..93c6ed3 --- /dev/null +++ b/vim/patches/vim-7.3.166.patch0 @@ -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 index 0000000..4a6de89 --- /dev/null +++ b/vim/patches/vim-7.3.167.patch0 @@ -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 index 0000000..3d6fe94 --- /dev/null +++ b/vim/patches/vim-7.3.168.patch0 @@ -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 index 0000000..056ca99 --- /dev/null +++ b/vim/patches/vim-7.3.169.patch0 @@ -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 index 0000000..933173e --- /dev/null +++ b/vim/patches/vim-7.3.170.patch0 @@ -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 index 0000000..f965e0a --- /dev/null +++ b/vim/patches/vim-7.3.171.patch0 @@ -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 index 0000000..66a7852 --- /dev/null +++ b/vim/patches/vim-7.3.172.patch0 @@ -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 index 0000000..ac8cffb --- /dev/null +++ b/vim/patches/vim-7.3.173.patch0 @@ -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 index 0000000..33d6003 --- /dev/null +++ b/vim/patches/vim-7.3.174.patch0 @@ -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 index 0000000..57fbc4a --- /dev/null +++ b/vim/patches/vim-7.3.175.patch0 @@ -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 index 0000000..fcf4880 --- /dev/null +++ b/vim/patches/vim-7.3.176.patch0 @@ -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 index 0000000..895b3b1 --- /dev/null +++ b/vim/patches/vim-7.3.177.patch0 @@ -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 index 0000000..9b6ca7c --- /dev/null +++ b/vim/patches/vim-7.3.178.patch0 @@ -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 index 0000000..f175b26 --- /dev/null +++ b/vim/patches/vim-7.3.179.patch0 @@ -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 index 0000000..5997bfb --- /dev/null +++ b/vim/patches/vim-7.3.180.patch0 @@ -0,0 +1,295 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.180 +Fcc: outbox +From: Bram Moolenaar Bram@moolenaar.net +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.180 +Problem: When both a middle part of 'comments' matches and an end part, the + middle part was used errornously. +Solution: After finding the middle part match continue looking for a better + end part match. (partly by Lech Lorens) +Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok + + +*** ../vim-7.3.179/src/misc1.c 2011-05-10 11:56:26.000000000 +0200 +--- src/misc1.c 2011-05-10 13:24:38.000000000 +0200 +*************** +*** 1561,1566 **** +--- 1561,1569 ---- + char_u part_buf[COM_MAX_LEN]; /* buffer for one option part */ + char_u *string; /* pointer to comment string */ + char_u *list; ++ int middle_match_len = 0; ++ char_u *prev_list; ++ char_u *saved_flags; + + i = 0; + while (vim_iswhite(line[i])) /* leading white space is ignored */ +*************** +*** 1569,1575 **** + /* + * Repeat to match several nested comment strings. + */ +! while (line[i]) + { + /* + * scan through the 'comments' option for a match +--- 1572,1578 ---- + /* + * Repeat to match several nested comment strings. + */ +! while (line[i] != NUL) + { + /* + * scan through the 'comments' option for a match +*************** +*** 1577,1658 **** + found_one = FALSE; + for (list = curbuf->b_p_com; *list; ) + { +! /* +! * Get one option part into part_buf[]. Advance list to next one. +! * put string at start of string. +! */ +! if (!got_com && flags != NULL) /* remember where flags started */ +! *flags = list; + (void)copy_option_part(&list, part_buf, COM_MAX_LEN, ","); + string = vim_strchr(part_buf, ':'); + if (string == NULL) /* missing ':', ignore this part */ + continue; + *string++ = NUL; /* isolate flags from string */ + +! /* +! * When already found a nested comment, only accept further +! * nested comments. +! */ + if (got_com && vim_strchr(part_buf, COM_NEST) == NULL) + continue; + +! /* When 'O' flag used don't use for "O" command */ + if (backward && vim_strchr(part_buf, COM_NOBACK) != NULL) + continue; + +! /* +! * Line contents and string must match. + * When string starts with white space, must have some white space + * (but the amount does not need to match, there might be a mix of +! * TABs and spaces). +! */ + if (vim_iswhite(string[0])) + { + if (i == 0 || !vim_iswhite(line[i - 1])) +! continue; + while (vim_iswhite(string[0])) + ++string; + } + for (j = 0; string[j] != NUL && string[j] == line[i + j]; ++j) + ; + if (string[j] != NUL) +! continue; + +! /* +! * When 'b' flag used, there must be white space or an +! * end-of-line after the string in the line. +! */ + if (vim_strchr(part_buf, COM_BLANK) != NULL + && !vim_iswhite(line[i + j]) && line[i + j] != NUL) + continue; + +! /* +! * We have found a match, stop searching. +! */ +! i += j; +! got_com = TRUE; + found_one = TRUE; + break; + } + +! /* +! * No match found, stop scanning. +! */ + if (!found_one) + break; + +! /* +! * Include any trailing white space. +! */ + while (vim_iswhite(line[i])) + ++i; + +! /* +! * If this comment doesn't nest, stop here. +! */ + if (vim_strchr(part_buf, COM_NEST) == NULL) + break; + } + return (got_com ? i : 0); + } + #endif +--- 1580,1683 ---- + found_one = FALSE; + for (list = curbuf->b_p_com; *list; ) + { +! /* Get one option part into part_buf[]. Advance "list" to next +! * one. Put "string" at start of string. */ +! if (!got_com && flags != NULL) +! *flags = list; /* remember where flags started */ +! prev_list = list; + (void)copy_option_part(&list, part_buf, COM_MAX_LEN, ","); + string = vim_strchr(part_buf, ':'); + if (string == NULL) /* missing ':', ignore this part */ + continue; + *string++ = NUL; /* isolate flags from string */ + +! /* If we found a middle match previously, use that match when this +! * is not a middle or end. */ +! if (middle_match_len != 0 +! && vim_strchr(part_buf, COM_MIDDLE) == NULL +! && vim_strchr(part_buf, COM_END) == NULL) +! break; +! +! /* When we already found a nested comment, only accept further +! * nested comments. */ + if (got_com && vim_strchr(part_buf, COM_NEST) == NULL) + continue; + +! /* When 'O' flag present and using "O" command skip this one. */ + if (backward && vim_strchr(part_buf, COM_NOBACK) != NULL) + continue; + +! /* Line contents and string must match. + * When string starts with white space, must have some white space + * (but the amount does not need to match, there might be a mix of +! * TABs and spaces). */ + if (vim_iswhite(string[0])) + { + if (i == 0 || !vim_iswhite(line[i - 1])) +! continue; /* missing shite space */ + while (vim_iswhite(string[0])) + ++string; + } + for (j = 0; string[j] != NUL && string[j] == line[i + j]; ++j) + ; + if (string[j] != NUL) +! continue; /* string doesn't match */ + +! /* When 'b' flag used, there must be white space or an +! * end-of-line after the string in the line. */ + if (vim_strchr(part_buf, COM_BLANK) != NULL + && !vim_iswhite(line[i + j]) && line[i + j] != NUL) + continue; + +! /* We have found a match, stop searching unless this is a middle +! * comment. The middle comment can be a substring of the end +! * comment in which case it's better to return the length of the +! * end comment and its flags. Thus we keep searching with middle +! * and end matches and use an end match if it matches better. */ +! if (vim_strchr(part_buf, COM_MIDDLE) != NULL) +! { +! if (middle_match_len == 0) +! { +! middle_match_len = j; +! saved_flags = prev_list; +! } +! continue; +! } +! if (middle_match_len != 0 && j > middle_match_len) +! /* Use this match instead of the middle match, since it's a +! * longer thus better match. */ +! middle_match_len = 0; +! +! if (middle_match_len == 0) +! i += j; + found_one = TRUE; + break; + } + +! if (middle_match_len != 0) +! { +! /* Use the previously found middle match after failing to find a +! * match with an end. */ +! if (!got_com && flags != NULL) +! *flags = saved_flags; +! i += middle_match_len; +! found_one = TRUE; +! } +! +! /* No match found, stop scanning. */ + if (!found_one) + break; + +! /* Include any trailing white space. */ + while (vim_iswhite(line[i])) + ++i; + +! /* If this comment doesn't nest, stop here. */ +! got_com = TRUE; + if (vim_strchr(part_buf, COM_NEST) == NULL) + break; + } ++ + return (got_com ? i : 0); + } + #endif +*** ../vim-7.3.179/src/testdir/test3.in 2011-05-10 11:56:26.000000000 +0200 +--- src/testdir/test3.in 2011-05-10 12:05:50.000000000 +0200 +*************** +*** 1373,1378 **** +--- 1373,1390 ---- + } + + STARTTEST ++ :set com=s1:/*,m:*,ex:*/ ++ ]]3jofoo(); ++ ENDTEST ++ ++ void func(void) ++ { ++ /* ++ * This is a comment. ++ */ ++ } ++ ++ STARTTEST + :g/^STARTTEST/.,/^ENDTEST/d + :1;/start of AUTO/,$wq! test.out + ENDTEST +*** ../vim-7.3.179/src/testdir/test3.ok 2011-05-10 11:56:26.000000000 +0200 +--- src/testdir/test3.ok 2011-05-10 12:05:50.000000000 +0200 +*************** +*** 1225,1227 **** +--- 1225,1236 ---- + << "c"; + } + ++ ++ void func(void) ++ { ++ /* ++ * This is a comment. ++ */ ++ foo(); ++ } ++ +*** ../vim-7.3.179/src/version.c 2011-05-10 11:56:26.000000000 +0200 +--- src/version.c 2011-05-10 13:37:28.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 180, + /**/ + +-- +"Thou shalt not follow the Null Pointer, for at its end Chaos and +Madness lie." + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\ +\\ an exciting new programming language -- http://www.Zimbu.org /// + \\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/vim/patches/vim-7.3.181.patch0 b/vim/patches/vim-7.3.181.patch0 new file mode 100644 index 0000000..3151d44 --- /dev/null +++ b/vim/patches/vim-7.3.181.patch0 @@ -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 index 0000000..509b68b --- /dev/null +++ b/vim/patches/vim-7.3.182.patch0 @@ -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 index 0000000..23178c0 --- /dev/null +++ b/vim/patches/vim-7.3.183.patch0 @@ -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 index 0000000..3b0cfc6 --- /dev/null +++ b/vim/patches/vim-7.3.184.patch0 @@ -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 index 0000000..7b3ed18 --- /dev/null +++ b/vim/patches/vim-7.3.185.patch0 @@ -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 index 0000000..d834c37 --- /dev/null +++ b/vim/patches/vim-7.3.186.patch0 @@ -0,0 +1,59 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.186 +Fcc: outbox +From: Bram Moolenaar Bram@moolenaar.net +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.186 +Problem: When 'clipboard' contains "unnamed" or "unnamedplus" the value of + v:register is wrong for operators without a specific register. +Solution: Adjust the register according to 'clipboard'. (Ingo Karkat) +Files: src/normal.c + + +*** ../vim-7.3.185/src/normal.c 2010-12-17 18:52:56.000000000 +0100 +--- src/normal.c 2011-05-10 16:07:49.000000000 +0200 +*************** +*** 1202,1208 **** + { + clearop(oap); + #ifdef FEAT_EVAL +! set_reg_var('"'); + #endif + } + +--- 1202,1214 ---- + { + clearop(oap); + #ifdef FEAT_EVAL +! { +! int regname = 0; +! /* Adjust the register according to 'clipboard', so that when +! * "unnamed" is present it becomes '*' or '+' instead of '"'. */ +! adjust_clip_reg(®name); +! set_reg_var(regname); +! } + #endif + } + +*** ../vim-7.3.185/src/version.c 2011-05-10 16:00:43.000000000 +0200 +--- src/version.c 2011-05-10 16:10:10.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 186, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +80. At parties, you introduce your spouse as your "service provider." + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\ +\\ an exciting new programming language -- http://www.Zimbu.org /// + \\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/vim/patches/vim-7.3.187.patch0 b/vim/patches/vim-7.3.187.patch0 new file mode 100644 index 0000000..7bf82ce --- /dev/null +++ b/vim/patches/vim-7.3.187.patch0 @@ -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 index 0000000..f584543 --- /dev/null +++ b/vim/patches/vim-7.3.188.patch0 @@ -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 index 0000000..f7a9667 --- /dev/null +++ b/vim/patches/vim-7.3.189.patch0 @@ -0,0 +1,49 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.189 +Fcc: outbox +From: Bram Moolenaar Bram@moolenaar.net +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.189 (after 7.3.186) +Problem: Can't build without +clipboard feature. (Christian Ebert) +Solution: Add the missing #ifdef. +Files: src/normal.c + + +*** ../vim-7.3.188/src/normal.c 2011-05-10 16:12:40.000000000 +0200 +--- src/normal.c 2011-05-10 17:25:26.000000000 +0200 +*************** +*** 1204,1212 **** +--- 1204,1215 ---- + #ifdef FEAT_EVAL + { + int regname = 0; ++ + /* Adjust the register according to 'clipboard', so that when + * "unnamed" is present it becomes '*' or '+' instead of '"'. */ ++ # ifdef FEAT_CLIPBOARD + adjust_clip_reg(®name); ++ # endif + set_reg_var(regname); + } + #endif +*** ../vim-7.3.188/src/version.c 2011-05-10 17:21:34.000000000 +0200 +--- src/version.c 2011-05-10 17:29:21.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 189, + /**/ + +-- +If your nose runs, and your feet smell, you might be upside down. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\ +\\ an exciting new programming language -- http://www.Zimbu.org /// + \\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/vim/patches/vim-7.3.190.patch0 b/vim/patches/vim-7.3.190.patch0 new file mode 100644 index 0000000..4adef8a --- /dev/null +++ b/vim/patches/vim-7.3.190.patch0 @@ -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 index 0000000..14b63ce --- /dev/null +++ b/vim/patches/vim-7.3.191.patch0 @@ -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 index 0000000..5dab19b --- /dev/null +++ b/vim/patches/vim-7.3.192.patch0 @@ -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 index 0000000..acee9ec --- /dev/null +++ b/vim/patches/vim-7.3.193.patch0 @@ -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 index 0000000..5a73c00 --- /dev/null +++ b/vim/patches/vim-7.3.194.patch0 @@ -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 index 0000000..ba1fc21 --- /dev/null +++ b/vim/patches/vim-7.3.195.patch0 @@ -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 index 0000000..0d6be8c --- /dev/null +++ b/vim/patches/vim-7.3.196.patch0 @@ -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 index 0000000..c33a2cb --- /dev/null +++ b/vim/patches/vim-7.3.197.patch0 @@ -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 index 0000000..5ef4a8a --- /dev/null +++ b/vim/patches/vim-7.3.198.patch0 @@ -0,0 +1,403 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.198 +Fcc: outbox +From: Bram Moolenaar Bram@moolenaar.net +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.198 +Problem: No completion for ":lang". +Solution: Get locales to complete from. (Dominique Pelle) +Files: src/eval.c, src/ex_cmds2.c, src/ex_getln.c, + src/proto/ex_cmds2.pro, src/proto/ex_getln.pro, src/vim.h + + +*** ../mercurial/vim73/src/eval.c 2011-05-19 17:25:36.000000000 +0200 +--- src/eval.c 2011-05-19 17:52:02.000000000 +0200 +*************** +*** 911,916 **** +--- 911,917 ---- + hash_clear(&compat_hashtab); + + free_scriptnames(); ++ free_locales(); + + /* global variables */ + vars_clear(&globvarht); +*** ../mercurial/vim73/src/ex_cmds2.c 2011-05-10 16:41:13.000000000 +0200 +--- src/ex_cmds2.c 2011-05-19 18:16:54.000000000 +0200 +*************** +*** 1476,1482 **** + #endif + + /* +! * Ask the user what to do when abondoning a changed buffer. + * Must check 'write' option first! + */ + void +--- 1476,1482 ---- + #endif + + /* +! * Ask the user what to do when abandoning a changed buffer. + * Must check 'write' option first! + */ + void +*************** +*** 4153,4158 **** +--- 4153,4234 ---- + } + + # if defined(FEAT_CMDL_COMPL) || defined(PROTO) ++ ++ static char_u **locales = NULL; /* Array of all available locales */ ++ static int did_init_locales = FALSE; ++ ++ static void init_locales __ARGS((void)); ++ static char_u **find_locales __ARGS((void)); ++ ++ /* ++ * Lazy initialization of all available locales. ++ */ ++ static void ++ init_locales() ++ { ++ if (!did_init_locales) ++ { ++ did_init_locales = TRUE; ++ locales = find_locales(); ++ } ++ } ++ ++ /* Return an array of strings for all available locales + NULL for the ++ * last element. Return NULL in case of error. */ ++ static char_u ** ++ find_locales() ++ { ++ garray_T locales_ga; ++ char_u *loc; ++ ++ /* Find all available locales by running command "locale -a". If this ++ * doesn't work we won't have completion. */ ++ char_u *locale_a = get_cmd_output((char_u *)"locale -a", ++ NULL, SHELL_SILENT); ++ if (locale_a == NULL) ++ return NULL; ++ ga_init2(&locales_ga, sizeof(char_u *), 20); ++ ++ /* Transform locale_a string where each locale is separated by "\n" ++ * into an array of locale strings. */ ++ loc = (char_u *)strtok((char *)locale_a, "\n"); ++ ++ while (loc != NULL) ++ { ++ if (ga_grow(&locales_ga, 1) == FAIL) ++ break; ++ loc = vim_strsave(loc); ++ if (loc == NULL) ++ break; ++ ++ ((char_u **)locales_ga.ga_data)[locales_ga.ga_len++] = loc; ++ loc = (char_u *)strtok(NULL, "\n"); ++ } ++ vim_free(locale_a); ++ if (ga_grow(&locales_ga, 1) == FAIL) ++ { ++ ga_clear(&locales_ga); ++ return NULL; ++ } ++ ((char_u **)locales_ga.ga_data)[locales_ga.ga_len] = NULL; ++ return (char_u **)locales_ga.ga_data; ++ } ++ ++ # if defined(EXITFREE) || defined(PROTO) ++ void ++ free_locales() ++ { ++ int i; ++ if (locales != NULL) ++ { ++ for (i = 0; locales[i] != NULL; i++) ++ vim_free(locales[i]); ++ vim_free(locales); ++ locales = NULL; ++ } ++ } ++ # endif ++ + /* + * Function given to ExpandGeneric() to obtain the possible arguments of the + * ":language" command. +*************** +*** 4168,4174 **** + return (char_u *)"ctype"; + if (idx == 2) + return (char_u *)"time"; +! return NULL; + } + # endif + +--- 4244,4268 ---- + return (char_u *)"ctype"; + if (idx == 2) + return (char_u *)"time"; +! +! init_locales(); +! if (locales == NULL) +! return NULL; +! return locales[idx - 3]; +! } +! +! /* +! * Function given to ExpandGeneric() to obtain the available locales. +! */ +! char_u * +! get_locales(xp, idx) +! expand_T *xp UNUSED; +! int idx; +! { +! init_locales(); +! if (locales == NULL) +! return NULL; +! return locales[idx]; + } + # endif + +*** ../mercurial/vim73/src/ex_getln.c 2011-05-19 14:50:49.000000000 +0200 +--- src/ex_getln.c 2011-05-19 18:18:49.000000000 +0200 +*************** +*** 4571,4618 **** + int context; + char_u *((*func)__ARGS((expand_T *, int))); + int ic; + } tab[] = + { +! {EXPAND_COMMANDS, get_command_name, FALSE}, +! {EXPAND_BEHAVE, get_behave_arg, TRUE}, + #ifdef FEAT_USR_CMDS +! {EXPAND_USER_COMMANDS, get_user_commands, FALSE}, +! {EXPAND_USER_CMD_FLAGS, get_user_cmd_flags, FALSE}, +! {EXPAND_USER_NARGS, get_user_cmd_nargs, FALSE}, +! {EXPAND_USER_COMPLETE, get_user_cmd_complete, FALSE}, + #endif + #ifdef FEAT_EVAL +! {EXPAND_USER_VARS, get_user_var_name, FALSE}, +! {EXPAND_FUNCTIONS, get_function_name, FALSE}, +! {EXPAND_USER_FUNC, get_user_func_name, FALSE}, +! {EXPAND_EXPRESSION, get_expr_name, FALSE}, + #endif + #ifdef FEAT_MENU +! {EXPAND_MENUS, get_menu_name, FALSE}, +! {EXPAND_MENUNAMES, get_menu_names, FALSE}, + #endif + #ifdef FEAT_SYN_HL +! {EXPAND_SYNTAX, get_syntax_name, TRUE}, + #endif +! {EXPAND_HIGHLIGHT, get_highlight_name, TRUE}, + #ifdef FEAT_AUTOCMD +! {EXPAND_EVENTS, get_event_name, TRUE}, +! {EXPAND_AUGROUP, get_augroup_name, TRUE}, + #endif + #ifdef FEAT_CSCOPE +! {EXPAND_CSCOPE, get_cscope_name, TRUE}, + #endif + #ifdef FEAT_SIGNS +! {EXPAND_SIGN, get_sign_name, TRUE}, + #endif + #ifdef FEAT_PROFILE +! {EXPAND_PROFILE, get_profile_name, TRUE}, + #endif + #if (defined(HAVE_LOCALE_H) || defined(X_LOCALE)) \ + && (defined(FEAT_GETTEXT) || defined(FEAT_MBYTE)) +! {EXPAND_LANGUAGE, get_lang_arg, TRUE}, + #endif +! {EXPAND_ENV_VARS, get_env_name, TRUE}, + }; + int i; + +--- 4571,4620 ---- + int context; + char_u *((*func)__ARGS((expand_T *, int))); + int ic; ++ int escaped; + } tab[] = + { +! {EXPAND_COMMANDS, get_command_name, FALSE, TRUE}, +! {EXPAND_BEHAVE, get_behave_arg, TRUE, TRUE}, + #ifdef FEAT_USR_CMDS +! {EXPAND_USER_COMMANDS, get_user_commands, FALSE, TRUE}, +! {EXPAND_USER_CMD_FLAGS, get_user_cmd_flags, FALSE, TRUE}, +! {EXPAND_USER_NARGS, get_user_cmd_nargs, FALSE, TRUE}, +! {EXPAND_USER_COMPLETE, get_user_cmd_complete, FALSE, TRUE}, + #endif + #ifdef FEAT_EVAL +! {EXPAND_USER_VARS, get_user_var_name, FALSE, TRUE}, +! {EXPAND_FUNCTIONS, get_function_name, FALSE, TRUE}, +! {EXPAND_USER_FUNC, get_user_func_name, FALSE, TRUE}, +! {EXPAND_EXPRESSION, get_expr_name, FALSE, TRUE}, + #endif + #ifdef FEAT_MENU +! {EXPAND_MENUS, get_menu_name, FALSE, TRUE}, +! {EXPAND_MENUNAMES, get_menu_names, FALSE, TRUE}, + #endif + #ifdef FEAT_SYN_HL +! {EXPAND_SYNTAX, get_syntax_name, TRUE, TRUE}, + #endif +! {EXPAND_HIGHLIGHT, get_highlight_name, TRUE, TRUE}, + #ifdef FEAT_AUTOCMD +! {EXPAND_EVENTS, get_event_name, TRUE, TRUE}, +! {EXPAND_AUGROUP, get_augroup_name, TRUE, TRUE}, + #endif + #ifdef FEAT_CSCOPE +! {EXPAND_CSCOPE, get_cscope_name, TRUE, TRUE}, + #endif + #ifdef FEAT_SIGNS +! {EXPAND_SIGN, get_sign_name, TRUE, TRUE}, + #endif + #ifdef FEAT_PROFILE +! {EXPAND_PROFILE, get_profile_name, TRUE, TRUE}, + #endif + #if (defined(HAVE_LOCALE_H) || defined(X_LOCALE)) \ + && (defined(FEAT_GETTEXT) || defined(FEAT_MBYTE)) +! {EXPAND_LANGUAGE, get_lang_arg, TRUE, FALSE}, +! {EXPAND_LOCALES, get_locales, TRUE, FALSE}, + #endif +! {EXPAND_ENV_VARS, get_env_name, TRUE, TRUE}, + }; + int i; + +*************** +*** 4626,4632 **** + { + if (tab[i].ic) + regmatch.rm_ic = TRUE; +! ret = ExpandGeneric(xp, ®match, num_file, file, tab[i].func); + break; + } + } +--- 4628,4635 ---- + { + if (tab[i].ic) + regmatch.rm_ic = TRUE; +! ret = ExpandGeneric(xp, ®match, num_file, file, +! tab[i].func, tab[i].escaped); + break; + } + } +*************** +*** 4648,4660 **** + * Returns OK when no problems encountered, FAIL for error (out of memory). + */ + int +! ExpandGeneric(xp, regmatch, num_file, file, func) + expand_T *xp; + regmatch_T *regmatch; + int *num_file; + char_u ***file; + char_u *((*func)__ARGS((expand_T *, int))); + /* returns a string from the list */ + { + int i; + int count = 0; +--- 4651,4664 ---- + * Returns OK when no problems encountered, FAIL for error (out of memory). + */ + int +! ExpandGeneric(xp, regmatch, num_file, file, func, escaped) + expand_T *xp; + regmatch_T *regmatch; + int *num_file; + char_u ***file; + char_u *((*func)__ARGS((expand_T *, int))); + /* returns a string from the list */ ++ int escaped; + { + int i; + int count = 0; +*************** +*** 4679,4685 **** + { + if (round) + { +! str = vim_strsave_escaped(str, (char_u *)" \t\."); + (*file)[count] = str; + #ifdef FEAT_MENU + if (func == get_menu_names && str != NULL) +--- 4683,4692 ---- + { + if (round) + { +! if (escaped) +! str = vim_strsave_escaped(str, (char_u *)" \t\."); +! else +! str = vim_strsave(str); + (*file)[count] = str; + #ifdef FEAT_MENU + if (func == get_menu_names && str != NULL) +*** ../mercurial/vim73/src/proto/ex_cmds2.pro 2010-05-15 21:22:11.000000000 +0200 +--- src/proto/ex_cmds2.pro 2011-05-19 17:53:52.000000000 +0200 +*************** +*** 83,87 **** +--- 83,89 ---- + char_u *get_mess_lang __ARGS((void)); + void set_lang_var __ARGS((void)); + void ex_language __ARGS((exarg_T *eap)); ++ void free_locales __ARGS((void)); + char_u *get_lang_arg __ARGS((expand_T *xp, int idx)); ++ char_u *get_locales __ARGS((expand_T *xp, int idx)); + /* vim: set ft=c : */ +*** ../mercurial/vim73/src/proto/ex_getln.pro 2010-08-16 21:23:30.000000000 +0200 +--- src/proto/ex_getln.pro 2011-05-19 17:54:00.000000000 +0200 +*************** +*** 31,37 **** + char_u *addstar __ARGS((char_u *fname, int len, int context)); + void set_cmd_context __ARGS((expand_T *xp, char_u *str, int len, int col)); + int expand_cmdline __ARGS((expand_T *xp, char_u *str, int col, int *matchcount, char_u ***matches)); +! int ExpandGeneric __ARGS((expand_T *xp, regmatch_T *regmatch, int *num_file, char_u ***file, char_u *((*func)(expand_T *, int)))); + char_u *globpath __ARGS((char_u *path, char_u *file, int expand_options)); + void init_history __ARGS((void)); + int get_histtype __ARGS((char_u *name)); +--- 31,37 ---- + char_u *addstar __ARGS((char_u *fname, int len, int context)); + void set_cmd_context __ARGS((expand_T *xp, char_u *str, int len, int col)); + int expand_cmdline __ARGS((expand_T *xp, char_u *str, int col, int *matchcount, char_u ***matches)); +! int ExpandGeneric __ARGS((expand_T *xp, regmatch_T *regmatch, int *num_file, char_u ***file, char_u *((*func)(expand_T *, int)), int escaped)); + char_u *globpath __ARGS((char_u *path, char_u *file, int expand_options)); + void init_history __ARGS((void)); + int get_histtype __ARGS((char_u *name)); +*** ../mercurial/vim73/src/vim.h 2011-05-19 17:25:36.000000000 +0200 +--- src/vim.h 2011-05-19 17:52:02.000000000 +0200 +*************** +*** 779,784 **** +--- 779,785 ---- + #define EXPAND_FILETYPE 37 + #define EXPAND_FILES_IN_PATH 38 + #define EXPAND_OWNSYNTAX 39 ++ #define EXPAND_LOCALES 40 + + /* Values for exmode_active (0 is no exmode) */ + #define EXMODE_NORMAL 1 +*** ../vim-7.3.197/src/version.c 2011-05-19 17:42:54.000000000 +0200 +--- src/version.c 2011-05-19 18:24:58.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 198, + /**/ + +-- +The primary purpose of the DATA statement is to give names to constants; +instead of referring to pi as 3.141592653589793 at every appearance, the +variable PI can be given that value with a DATA statement and used instead +of the longer form of the constant. This also simplifies modifying the +program, should the value of pi change. + -- FORTRAN manual for Xerox Computers + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\ +\\ an exciting new programming language -- http://www.Zimbu.org /// + \\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/vim/patches/vim-7.3.199.patch0 b/vim/patches/vim-7.3.199.patch0 new file mode 100644 index 0000000..8bdd97a --- /dev/null +++ b/vim/patches/vim-7.3.199.patch0 @@ -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 index 0000000..6019471 --- /dev/null +++ b/vim/patches/vim-7.3.200.patch0 @@ -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 index 0000000..0481afd --- /dev/null +++ b/vim/patches/vim-7.3.201.patch0 @@ -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 index 0000000..1289e08 --- /dev/null +++ b/vim/patches/vim-7.3.202.patch0 @@ -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 index 0000000..62c2989 --- /dev/null +++ b/vim/patches/vim-7.3.203.patch0 @@ -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 index 0000000..b2b6360 --- /dev/null +++ b/vim/patches/vim-7.3.204.patch0 @@ -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 index 0000000..b49a040 --- /dev/null +++ b/vim/patches/vim-7.3.205.patch0 @@ -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 index 0000000..8a91f0a --- /dev/null +++ b/vim/patches/vim-7.3.206.patch0 @@ -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 index 0000000..95b335e --- /dev/null +++ b/vim/patches/vim-7.3.207.patch0 @@ -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 index 0000000..c5a7929 --- /dev/null +++ b/vim/patches/vim-7.3.208.patch0 @@ -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 index 0000000..afd4ab8 --- /dev/null +++ b/vim/patches/vim-7.3.209.patch0 @@ -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 index 0000000..f02fe6f --- /dev/null +++ b/vim/patches/vim-7.3.210.patch0 @@ -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 index 0000000..4760c10 --- /dev/null +++ b/vim/patches/vim-7.3.211.patch0 @@ -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 index 0000000..d5086db --- /dev/null +++ b/vim/patches/vim-7.3.212.patch0 @@ -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 index 0000000..d3ef325 --- /dev/null +++ b/vim/patches/vim-7.3.213.patch0 @@ -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 index 0000000..a095bbc --- /dev/null +++ b/vim/patches/vim-7.3.214.patch0 @@ -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 index 0000000..24d37fb --- /dev/null +++ b/vim/patches/vim-7.3.215.patch0 @@ -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 index 0000000..a52bc93 --- /dev/null +++ b/vim/patches/vim-7.3.216.patch0 @@ -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 index 0000000..be04b86 --- /dev/null +++ b/vim/patches/vim-7.3.217.patch0 @@ -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 index 0000000..1da18d8 --- /dev/null +++ b/vim/patches/vim-7.3.218.patch0 @@ -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 index 0000000..2ec1117 --- /dev/null +++ b/vim/patches/vim-7.3.219.patch0 @@ -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 index 0000000..0122e7f --- /dev/null +++ b/vim/patches/vim-7.3.220.patch0 @@ -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 index 0000000..7211a4a --- /dev/null +++ b/vim/patches/vim-7.3.221.patch0 @@ -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 index 0000000..87151b5 --- /dev/null +++ b/vim/patches/vim-7.3.222.patch0 @@ -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 index 0000000..e151c5b --- /dev/null +++ b/vim/patches/vim-7.3.223.patch0 @@ -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 index 0000000..1673f47 --- /dev/null +++ b/vim/patches/vim-7.3.224.patch0 @@ -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 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 index 0000000..0002aa7 --- /dev/null +++ b/vim/patches/vim-7.3.226.patch0 @@ -0,0 +1,58 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.226 +Fcc: outbox +From: Bram Moolenaar Bram@moolenaar.net +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.226 +Problem: On a 64 bit system "syn sync fromstart" is very slow. (Bjorn + Steinbrink) +Solution: Store the state when starting to parse from the first line. +Files: src/syntax.c + + +*** ../mercurial/vim73/src/syntax.c 2011-05-25 17:56:23.000000000 +0200 +--- src/syntax.c 2011-06-19 04:47:08.000000000 +0200 +*************** +*** 559,565 **** + if (INVALID_STATE(¤t_state)) + { + syn_sync(wp, lnum, last_valid); +! first_stored = current_lnum + syn_block->b_syn_sync_minlines; + } + else + first_stored = current_lnum; +--- 559,571 ---- + if (INVALID_STATE(¤t_state)) + { + syn_sync(wp, lnum, last_valid); +! if (current_lnum == 1) +! /* First line is always valid, no matter "minlines". */ +! first_stored = 1; +! else +! /* Need to parse "minlines" lines before state can be considered +! * valid to store. */ +! first_stored = current_lnum + syn_block->b_syn_sync_minlines; + } + else + first_stored = current_lnum; +*** ../vim-7.3.225/src/version.c 2011-06-19 04:31:54.000000000 +0200 +--- src/version.c 2011-06-19 04:49:53.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 226, + /**/ + +-- +Press any key to continue, press any other key to quit. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\ +\\ an exciting new programming language -- http://www.Zimbu.org /// + \\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/vim/patches/vim-7.3.227.patch0 b/vim/patches/vim-7.3.227.patch0 new file mode 100644 index 0000000..55d5a9c --- /dev/null +++ b/vim/patches/vim-7.3.227.patch0 @@ -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 index 0000000..3edede5 --- /dev/null +++ b/vim/patches/vim-7.3.228.patch0 @@ -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 index 0000000..b133f7a --- /dev/null +++ b/vim/patches/vim-7.3.229.patch0 @@ -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 index 0000000..80fcdf1 --- /dev/null +++ b/vim/patches/vim-7.3.230.patch0 @@ -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 index 0000000..266d0a2 --- /dev/null +++ b/vim/patches/vim-7.3.231.patch0 @@ -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 index 0000000..982d747 --- /dev/null +++ b/vim/patches/vim-7.3.232.patch0 @@ -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 index 0000000..2dcbf89 --- /dev/null +++ b/vim/patches/vim-7.3.233.patch0 @@ -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 index 0000000..a60df3d --- /dev/null +++ b/vim/patches/vim-7.3.234.patch0 @@ -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 index 0000000..a852c85 --- /dev/null +++ b/vim/patches/vim-7.3.235.patch0 @@ -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 index 0000000..3be69e3 --- /dev/null +++ b/vim/patches/vim-7.3.236.patch0 @@ -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 index 0000000..ead50ca --- /dev/null +++ b/vim/patches/vim-7.3.237.patch0 @@ -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 index 0000000..289b1a4 --- /dev/null +++ b/vim/patches/vim-7.3.238.patch0 @@ -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 index 0000000..1c03da3 --- /dev/null +++ b/vim/patches/vim-7.3.239.patch0 @@ -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 index 0000000..7048ac1 --- /dev/null +++ b/vim/patches/vim-7.3.240.patch0 @@ -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 index 0000000..3b73c4d --- /dev/null +++ b/vim/patches/vim-7.3.241.patch0 @@ -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 index 0000000..0cf4db9 --- /dev/null +++ b/vim/patches/vim-7.3.242.patch0 @@ -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 index 0000000..f1f913d --- /dev/null +++ b/vim/patches/vim-7.3.243.patch0 @@ -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 index 0000000..4cff94f --- /dev/null +++ b/vim/patches/vim-7.3.244.patch0 @@ -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 index 0000000..b05fe43 --- /dev/null +++ b/vim/patches/vim-7.3.245.patch0 @@ -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 index 0000000..d9982ea --- /dev/null +++ b/vim/patches/vim-7.3.246.patch0 @@ -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 index 0000000..a0cb566 --- /dev/null +++ b/vim/patches/vim-7.3.247.patch0 @@ -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 index 0000000..6fbf3f6 --- /dev/null +++ b/vim/patches/vim-7.3.248.patch0 @@ -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 index 0000000..661f979 --- /dev/null +++ b/vim/patches/vim-7.3.249.patch0 @@ -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 index 0000000..fc33328 --- /dev/null +++ b/vim/patches/vim-7.3.250.patch0 @@ -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 index 0000000..43aa414 --- /dev/null +++ b/vim/patches/vim-7.3.251.patch0 @@ -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 index 0000000..e24b73b --- /dev/null +++ b/vim/patches/vim-7.3.252.patch0 @@ -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 index 0000000..70e415b --- /dev/null +++ b/vim/patches/vim-7.3.253.patch0 @@ -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 index 0000000..85176a7 --- /dev/null +++ b/vim/patches/vim-7.3.254.patch0 @@ -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 index 0000000..c01a585 --- /dev/null +++ b/vim/patches/vim-7.3.255.patch0 @@ -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 index 0000000..b8c9f00 --- /dev/null +++ b/vim/patches/vim-7.3.256.patch0 @@ -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 index 0000000..f6292bf --- /dev/null +++ b/vim/patches/vim-7.3.257.patch0 @@ -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 index 0000000..277cbe7 --- /dev/null +++ b/vim/patches/vim-7.3.258.patch0 @@ -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 index 0000000..91f9dfa --- /dev/null +++ b/vim/patches/vim-7.3.259.patch0 @@ -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ñÅÅÅÅá¹ á¹ 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ñÅÅÅÅá¹ á¹ 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 index 0000000..ba9af57 --- /dev/null +++ b/vim/patches/vim-7.3.260.patch0 @@ -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 index 0000000..4c03f6b --- /dev/null +++ b/vim/patches/vim-7.3.261.patch0 @@ -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 index 0000000..b3bd5cd --- /dev/null +++ b/vim/patches/vim-7.3.262.patch0 @@ -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 index 0000000..9885098 --- /dev/null +++ b/vim/patches/vim-7.3.263.patch0 @@ -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 index 0000000..71ec851 --- /dev/null +++ b/vim/patches/vim-7.3.264.patch0 @@ -0,0 +1,159 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.264 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.264 +Problem: When the current directory name contains wildcard characters, such + as "foo[with]bar", the tags file can't be found. (Jeremy + Erickson) +Solution: When searching for matching files also match without expanding + wildcards. This is a bit of a hack. +Files: src/vim.h, src/misc1.c, src/misc2.c + + +*** ../vim-7.3.263/src/vim.h 2011-07-20 15:04:52.000000000 +0200 +--- src/vim.h 2011-07-27 16:21:38.000000000 +0200 +*************** +*** 816,821 **** +--- 816,822 ---- + #define EW_PATH 0x80 /* search in 'path' too */ + #define EW_ICASE 0x100 /* ignore case */ + #define EW_NOERROR 0x200 /* no error for bad regexp */ ++ #define EW_NOTWILD 0x400 /* add match with literal name if exists */ + /* Note: mostly EW_NOTFOUND and EW_SILENT are mutually exclusive: EW_NOTFOUND + * is used when executing commands and EW_SILENT for interactive expanding. */ + +*** ../vim-7.3.263/src/misc1.c 2011-07-20 15:04:52.000000000 +0200 +--- src/misc1.c 2011-07-27 17:24:39.000000000 +0200 +*************** +*** 9119,9125 **** + * all entries found with "matchname". */ + if ((p[0] != '.' || starts_with_dot) + && (matchname == NULL +! || vim_regexec(®match, p, (colnr_T)0))) + { + #ifdef WIN3264 + STRCPY(s, p); +--- 9119,9127 ---- + * all entries found with "matchname". */ + if ((p[0] != '.' || starts_with_dot) + && (matchname == NULL +! || vim_regexec(®match, p, (colnr_T)0) +! || ((flags & EW_NOTWILD) +! && fnamencmp(path + (s - buf), p, e - s) == 0))) + { + #ifdef WIN3264 + STRCPY(s, p); +*************** +*** 9323,9329 **** + e = p; + *e = NUL; + +! /* now we have one wildcard component between "s" and "e" */ + /* Remove backslashes between "wildoff" and the start of the wildcard + * component. */ + for (p = buf + wildoff; p < s; ++p) +--- 9325,9331 ---- + e = p; + *e = NUL; + +! /* Now we have one wildcard component between "s" and "e". */ + /* Remove backslashes between "wildoff" and the start of the wildcard + * component. */ + for (p = buf + wildoff; p < s; ++p) +*************** +*** 9390,9396 **** + if (dp == NULL) + break; + if ((dp->d_name[0] != '.' || starts_with_dot) +! && vim_regexec(®match, (char_u *)dp->d_name, (colnr_T)0)) + { + STRCPY(s, dp->d_name); + len = STRLEN(buf); +--- 9392,9400 ---- + if (dp == NULL) + break; + if ((dp->d_name[0] != '.' || starts_with_dot) +! && (vim_regexec(®match, (char_u *)dp->d_name, (colnr_T)0) +! || ((flags & EW_NOTWILD) +! && fnamencmp(path + (s - buf), dp->d_name, e - s) == 0))) + { + STRCPY(s, dp->d_name); + len = STRLEN(buf); +*** ../vim-7.3.263/src/misc2.c 2011-07-07 17:15:29.000000000 +0200 +--- src/misc2.c 2011-07-27 17:21:10.000000000 +0200 +*************** +*** 4653,4661 **** + { + if (r_ptr[0] == '\\' && r_ptr[1] == ';') + { +! /* overwrite the escape char, +! * use STRLEN(r_ptr) to move the trailing '\0' +! */ + STRMOVE(r_ptr, r_ptr + 1); + r_ptr++; + } +--- 4653,4660 ---- + { + if (r_ptr[0] == '\\' && r_ptr[1] == ';') + { +! /* Overwrite the escape char, +! * use STRLEN(r_ptr) to move the trailing '\0'. */ + STRMOVE(r_ptr, r_ptr + 1); + r_ptr++; + } +*************** +*** 4914,4923 **** + stackp->ffs_filearray_size = 0; + } + else + expand_wildcards((dirptrs[1] == NULL) ? 1 : 2, dirptrs, + &stackp->ffs_filearray_size, + &stackp->ffs_filearray, +! EW_DIR|EW_ADDSLASH|EW_SILENT); + + stackp->ffs_filearray_cur = 0; + stackp->ffs_stage = 0; +--- 4913,4925 ---- + stackp->ffs_filearray_size = 0; + } + else ++ /* Add EW_NOTWILD because the expanded path may contain ++ * wildcard characters that are to be taken literally. ++ * This is a bit of a hack. */ + expand_wildcards((dirptrs[1] == NULL) ? 1 : 2, dirptrs, + &stackp->ffs_filearray_size, + &stackp->ffs_filearray, +! EW_DIR|EW_ADDSLASH|EW_SILENT|EW_NOTWILD); + + stackp->ffs_filearray_cur = 0; + stackp->ffs_stage = 0; +*** ../vim-7.3.263/src/version.c 2011-07-27 14:15:41.000000000 +0200 +--- src/version.c 2011-07-27 17:25:44.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 264, + /**/ + +-- +CUSTOMER: You're not fooling anyone y'know. Look, isn't there something + you can do? +DEAD PERSON: I feel happy... I feel happy. + [whop] +CUSTOMER: Ah, thanks very much. +MORTICIAN: Not at all. See you on Thursday. +CUSTOMER: Right. + The Quest for the Holy Grail (Monty Python) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/vim/patches/vim-7.3.265.patch0 b/vim/patches/vim-7.3.265.patch0 new file mode 100644 index 0000000..98cb1b4 --- /dev/null +++ b/vim/patches/vim-7.3.265.patch0 @@ -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 index 0000000..373280e --- /dev/null +++ b/vim/patches/vim-7.3.266.patch0 @@ -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 index 0000000..d986e50 --- /dev/null +++ b/vim/patches/vim-7.3.267.patch0 @@ -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 index 0000000..aa84877 --- /dev/null +++ b/vim/patches/vim-7.3.268.patch0 @@ -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 index 0000000..a0bfc47 --- /dev/null +++ b/vim/patches/vim-7.3.269.patch0 @@ -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 index 0000000..3eaf6bf --- /dev/null +++ b/vim/patches/vim-7.3.270.patch0 @@ -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 index 0000000..c42d19a --- /dev/null +++ b/vim/patches/vim-7.3.271.patch0 @@ -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 index 0000000..b512a1f --- /dev/null +++ b/vim/patches/vim-7.3.272.patch0 @@ -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 index 0000000..e74eb5a --- /dev/null +++ b/vim/patches/vim-7.3.273.patch0 @@ -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 index 0000000..48faf3c --- /dev/null +++ b/vim/patches/vim-7.3.274.patch0 @@ -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 index 0000000..2bdd145 --- /dev/null +++ b/vim/patches/vim-7.3.275.patch0 @@ -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 index 0000000..3af0245 --- /dev/null +++ b/vim/patches/vim-7.3.276.patch0 @@ -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 index 0000000..3509a1a --- /dev/null +++ b/vim/patches/vim-7.3.277.patch0 @@ -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 index 0000000..60bc0ac --- /dev/null +++ b/vim/patches/vim-7.3.278.patch0 @@ -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 index 0000000..6a8814b --- /dev/null +++ b/vim/patches/vim-7.3.279.patch0 @@ -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 index 0000000..1c1387a --- /dev/null +++ b/vim/patches/vim-7.3.280.patch0 @@ -0,0 +1,181 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.280 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.280 +Problem: ":lmake" does not update the quickfix window title. +Solution: Update the title. (Lech Lorens) +Files: src/quickfix.c, src/testdir/test10.in, src/testdir/test10.ok + + +*** ../vim-7.3.279/src/quickfix.c 2011-08-10 13:21:30.000000000 +0200 +--- src/quickfix.c 2011-08-10 18:09:19.000000000 +0200 +*************** +*** 126,131 **** +--- 126,132 ---- + static win_T *qf_find_win __ARGS((qf_info_T *qi)); + static buf_T *qf_find_buf __ARGS((qf_info_T *qi)); + static void qf_update_buffer __ARGS((qf_info_T *qi)); ++ static void qf_set_title __ARGS((qf_info_T *qi)); + static void qf_fill_buffer __ARGS((qf_info_T *qi)); + #endif + static char_u *get_mef_name __ARGS((void)); +*************** +*** 2388,2395 **** + qf_fill_buffer(qi); + + if (qi->qf_lists[qi->qf_curlist].qf_title != NULL) +! set_internal_string_var((char_u *)"w:quickfix_title", +! qi->qf_lists[qi->qf_curlist].qf_title); + + curwin->w_cursor.lnum = qi->qf_lists[qi->qf_curlist].qf_index; + curwin->w_cursor.col = 0; +--- 2389,2395 ---- + qf_fill_buffer(qi); + + if (qi->qf_lists[qi->qf_curlist].qf_title != NULL) +! qf_set_title(qi); + + curwin->w_cursor.lnum = qi->qf_lists[qi->qf_curlist].qf_index; + curwin->w_cursor.col = 0; +*************** +*** 2526,2531 **** +--- 2526,2533 ---- + qf_info_T *qi; + { + buf_T *buf; ++ win_T *win; ++ win_T *curwin_save; + aco_save_T aco; + + /* Check if a buffer for the quickfix list exists. Update it. */ +*************** +*** 2537,2542 **** +--- 2539,2554 ---- + + qf_fill_buffer(qi); + ++ if (qi->qf_lists[qi->qf_curlist].qf_title != NULL ++ && (win = qf_find_win(qi)) != NULL) ++ { ++ curwin_save = curwin; ++ curwin = win; ++ qf_set_title(qi); ++ curwin = curwin_save; ++ ++ } ++ + /* restore curwin/curbuf and a few other things */ + aucmd_restbuf(&aco); + +*************** +*** 2544,2549 **** +--- 2556,2569 ---- + } + } + ++ static void ++ qf_set_title(qi) ++ qf_info_T *qi; ++ { ++ set_internal_string_var((char_u *)"w:quickfix_title", ++ qi->qf_lists[qi->qf_curlist].qf_title); ++ } ++ + /* + * Fill current buffer with quickfix errors, replacing any previous contents. + * curbuf must be the quickfix buffer! +*** ../vim-7.3.279/src/testdir/test10.in 2011-08-10 13:21:30.000000000 +0200 +--- src/testdir/test10.in 2011-08-10 18:28:31.000000000 +0200 +*************** +*** 5,13 **** + :" Also test a BOM is ignored. + :so mbyte.vim + :set encoding=utf-8 +! :/start of errorfile/,/end of errorfile/w! Xerrorfile + :/start of testfile/,/end of testfile/w! Xtestfile +! :cf Xerrorfile + rA + :cn + rB +--- 5,20 ---- + :" Also test a BOM is ignored. + :so mbyte.vim + :set encoding=utf-8 +! :7/start of errorfile/,/end of errorfile/w! Xerrorfile1 +! :7/start of errorfile/,/end of errorfile/-1w! Xerrorfile2 + :/start of testfile/,/end of testfile/w! Xtestfile +! :cf Xerrorfile2 +! :clast +! :copen +! :let a=w:quickfix_title +! :wincmd p +! gR=a +! :cf Xerrorfile1 + rA + :cn + rB +*************** +*** 17,22 **** +--- 24,34 ---- + rD + :cn + rE ++ :cn ++ :wincmd w ++ :let a=w:quickfix_title ++ :wincmd p ++ gR=a + :w! test.out " Write contents of this file + :qa! + ENDTEST +*************** +*** 33,38 **** +--- 45,52 ---- + "Xtestfile", linenr 19: yet another problem + + Does anyone know what is the problem and how to correction it? ++ "Xtestfile", line 21 col 9: What is the title of the quickfix window? ++ "Xtestfile", line 22 col 9: What is the title of the quickfix window? + end of errorfile + + start of testfile +*** ../vim-7.3.279/src/testdir/test10.ok 2010-08-15 21:57:29.000000000 +0200 +--- src/testdir/test10.ok 2011-08-10 18:03:53.000000000 +0200 +*************** +*** 18,23 **** + line 18 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + Eine 19 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + line 20 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +! line 21 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +! line 22 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + end of testfile +--- 18,23 ---- + line 18 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + Eine 19 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + line 20 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +! line 21 :cf Xerrorfile1xxxxxxxxxxxxxxx +! line 22 :cf Xerrorfile2xxxxxxxxxxxxxxx + end of testfile +*** ../vim-7.3.279/src/version.c 2011-08-10 17:44:41.000000000 +0200 +--- src/version.c 2011-08-10 18:35:52.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 280, + /**/ + +-- +"When I die, I want a tombstone that says "GAME OVER" - Ton Richters + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/vim/patches/vim-7.3.281.patch0 b/vim/patches/vim-7.3.281.patch0 new file mode 100644 index 0000000..f90e95e --- /dev/null +++ b/vim/patches/vim-7.3.281.patch0 @@ -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 index 0000000..dcd1680 --- /dev/null +++ b/vim/patches/vim-7.3.282.patch0 @@ -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 index 0000000..1a3a635 --- /dev/null +++ b/vim/patches/vim-7.3.283.patch0 @@ -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 index 0000000..c621ced --- /dev/null +++ b/vim/patches/vim-7.3.284.patch0 @@ -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 index 0000000..24be28b --- /dev/null +++ b/vim/patches/vim-7.3.285.patch0 @@ -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 index 0000000..308d510 --- /dev/null +++ b/vim/patches/vim-7.3.286.patch0 @@ -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 index 0000000..5c6da03 --- /dev/null +++ b/vim/patches/vim-7.3.287.patch0 @@ -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 index 0000000..d1f6626 --- /dev/null +++ b/vim/patches/vim-7.3.288.patch0 @@ -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 index 0000000..30258e4 --- /dev/null +++ b/vim/patches/vim-7.3.289.patch0 @@ -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 index 0000000..b50cacf --- /dev/null +++ b/vim/patches/vim-7.3.290.patch0 @@ -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 index 0000000..1d394e4 --- /dev/null +++ b/vim/patches/vim-7.3.291.patch0 @@ -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 index 0000000..fc9480f --- /dev/null +++ b/vim/patches/vim-7.3.292.patch0 @@ -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 index 0000000..4072e32 --- /dev/null +++ b/vim/patches/vim-7.3.293.patch0 @@ -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 index 0000000..84252ba --- /dev/null +++ b/vim/patches/vim-7.3.294.patch0 @@ -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 index 0000000..fad7ea3 --- /dev/null +++ b/vim/patches/vim-7.3.295.patch0 @@ -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 index 0000000..80369d1 --- /dev/null +++ b/vim/patches/vim-7.3.296.patch0 @@ -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 index 0000000..09be768 --- /dev/null +++ b/vim/patches/vim-7.3.297.patch0 @@ -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 index 0000000..65a51aa --- /dev/null +++ b/vim/patches/vim-7.3.298.patch0 @@ -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 index 0000000..4f755d9 --- /dev/null +++ b/vim/patches/vim-7.3.299.patch0 @@ -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 index 0000000..132b14a --- /dev/null +++ b/vim/patches/vim-7.3.300.patch0 @@ -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 index 0000000..bb52974 --- /dev/null +++ b/vim/patches/vim-7.3.301.patch0 @@ -0,0 +1,97 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.301 +Fcc: outbox +From: Bram Moolenaar Bram@moolenaar.net +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.301 +Problem: When 'smartindent' and 'copyindent' are set a Tab is used even + though 'expandtab' is set. +Solution: Do not insert Tabs. Add a test. (Christian Brabandt) +Files: src/misc1.c, src/testdir/test19.in, src/testdir/test19.ok + + +*** ../vim-7.3.300/src/misc1.c 2011-07-27 17:31:42.000000000 +0200 +--- src/misc1.c 2011-09-07 19:37:04.000000000 +0200 +*************** +*** 363,369 **** + + /* Fill to next tabstop with a tab, if possible */ + tab_pad = (int)curbuf->b_p_ts - (ind_done % (int)curbuf->b_p_ts); +! if (todo >= tab_pad) + { + todo -= tab_pad; + ++ind_len; +--- 363,369 ---- + + /* Fill to next tabstop with a tab, if possible */ + tab_pad = (int)curbuf->b_p_ts - (ind_done % (int)curbuf->b_p_ts); +! if (todo >= tab_pad && !curbuf->b_p_et) + { + todo -= tab_pad; + ++ind_len; +*************** +*** 372,378 **** + } + + /* Add tabs required for indent */ +! while (todo >= (int)curbuf->b_p_ts) + { + todo -= (int)curbuf->b_p_ts; + ++ind_len; +--- 372,378 ---- + } + + /* Add tabs required for indent */ +! while (todo >= (int)curbuf->b_p_ts && !curbuf->b_p_et) + { + todo -= (int)curbuf->b_p_ts; + ++ind_len; +*** ../vim-7.3.300/src/testdir/test19.in 2010-08-15 21:57:29.000000000 +0200 +--- src/testdir/test19.in 2011-09-07 19:46:17.000000000 +0200 +*************** +*** 12,17 **** +--- 12,20 ---- + 0wR + :" Test replacing with Tabs + 0wR ++ :" Test that copyindent works with expandtab set ++ :set expandtab smartindent copyindent ts=8 sw=8 sts=8 ++ :exe "norm! o{<cr>x" + :?^start?,$w! test.out + :qa! + ENDTEST +*** ../vim-7.3.300/src/testdir/test19.ok 2010-08-15 21:57:29.000000000 +0200 +--- src/testdir/test19.ok 2011-09-07 19:37:04.000000000 +0200 +*************** +*** 5,7 **** +--- 5,9 ---- + a cde + hi + test text ++ { ++ x +*** ../vim-7.3.300/src/version.c 2011-09-07 19:30:17.000000000 +0200 +--- src/version.c 2011-09-07 19:38:48.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 301, + /**/ + +-- +I recommend ordering large cargo containers of paper towels to make up +whatever budget underruns you have. Paper products are always useful and they +have the advantage of being completely flushable if you need to make room in +the storage area later. + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\ +\\ an exciting new programming language -- http://www.Zimbu.org /// + \\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/vim/patches/vim-7.3.302.patch0 b/vim/patches/vim-7.3.302.patch0 new file mode 100644 index 0000000..f8d2c24 --- /dev/null +++ b/vim/patches/vim-7.3.302.patch0 @@ -0,0 +1,68 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.302 +Fcc: outbox +From: Bram Moolenaar Bram@moolenaar.net +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.302 (after 7.3.301) +Problem: Test 19 fails without 'smartindent' and +eval. +Solution: Don't use ":exe". Source small.vim. +Files: src/testdir/test19.in + + +*** ../vim-7.3.301/src/testdir/test19.in 2011-09-07 19:58:04.000000000 +0200 +--- src/testdir/test19.in 2011-09-08 20:32:33.000000000 +0200 +*************** +*** 1,6 **** +--- 1,7 ---- + Tests for "r<Tab>" with 'smarttab' and 'expandtab' set/not set. + + STARTTEST ++ :so small.vim + :set smarttab expandtab ts=8 sw=4 + :" make sure that backspace works, no matter what termcap is used + :set t_kD=x7f t_kb=x08 +*************** +*** 14,21 **** + 0wR + :" Test that copyindent works with expandtab set + :set expandtab smartindent copyindent ts=8 sw=8 sts=8 +! :exe "norm! o{<cr>x" +! :?^start?,$w! test.out + :qa! + ENDTEST + +--- 15,22 ---- + 0wR + :" Test that copyindent works with expandtab set + :set expandtab smartindent copyindent ts=8 sw=8 sts=8 +! o{ +! x:?^start?,$w! test.out + :qa! + ENDTEST + +*** ../vim-7.3.301/src/version.c 2011-09-07 19:58:04.000000000 +0200 +--- src/version.c 2011-09-08 23:22:01.000000000 +0200 +*************** +*** 711,712 **** +--- 711,714 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 302, + /**/ + +-- +Engineers are always delighted to share wisdom, even in areas in which they +have no experience whatsoever. Their logic provides them with inherent +insight into any field of expertise. This can be a problem when dealing with +the illogical people who believe that knowledge can only be derived through +experience. + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\ +\\ an exciting new programming language -- http://www.Zimbu.org /// + \\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/vim/patches/vim-7.3.303.patch0 b/vim/patches/vim-7.3.303.patch0 new file mode 100644 index 0000000..f85bf68 --- /dev/null +++ b/vim/patches/vim-7.3.303.patch0 @@ -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 index 0000000..6abfe9c --- /dev/null +++ b/vim/patches/vim-7.3.304.patch0 @@ -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 index 0000000..e70fd59 --- /dev/null +++ b/vim/patches/vim-7.3.305.patch0 @@ -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 index 0000000..62bd4cf --- /dev/null +++ b/vim/patches/vim-7.3.306.patch0 @@ -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 index 0000000..3fd95e1 --- /dev/null +++ b/vim/patches/vim-7.3.307.patch0 @@ -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 index 0000000..36e5de5 --- /dev/null +++ b/vim/patches/vim-7.3.308.patch0 @@ -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 index 0000000..f274284 --- /dev/null +++ b/vim/patches/vim-7.3.309.patch0 @@ -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 index 0000000..e3ffa5a --- /dev/null +++ b/vim/patches/vim-7.3.310.patch0 @@ -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 index 0000000..13aec74 --- /dev/null +++ b/vim/patches/vim-7.3.311.patch0 @@ -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 index 0000000..d2480e0 --- /dev/null +++ b/vim/patches/vim-7.3.312.patch0 @@ -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 index 0000000..ca818b8 --- /dev/null +++ b/vim/patches/vim-7.3.313.patch0 @@ -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 index 0000000..76415d6 --- /dev/null +++ b/vim/patches/vim-7.3.314.patch0 @@ -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 index 0000000..2240f7b --- /dev/null +++ b/vim/patches/vim-7.3.315.patch0 @@ -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 index 0000000..96a7d42 --- /dev/null +++ b/vim/patches/vim-7.3.316.patch0 @@ -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 index 0000000..220cae2 --- /dev/null +++ b/vim/patches/vim-7.3.317.patch0 @@ -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 index 0000000..3694480 --- /dev/null +++ b/vim/patches/vim-7.3.318.patch0 @@ -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 index 0000000..68448ab --- /dev/null +++ b/vim/patches/vim-7.3.319.patch0 @@ -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 index 0000000..3b957c2 --- /dev/null +++ b/vim/patches/vim-7.3.320.patch0 @@ -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 index 0000000..6303b01 --- /dev/null +++ b/vim/patches/vim-7.3.321.patch0 @@ -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 index 0000000..d81b9ec --- /dev/null +++ b/vim/patches/vim-7.3.322.patch0 @@ -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 index 0000000..10f6d19 --- /dev/null +++ b/vim/patches/vim-7.3.323.patch0 @@ -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 index 0000000..59b5c6c --- /dev/null +++ b/vim/patches/vim-7.3.324.patch0 @@ -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 index 0000000..80ebc6d --- /dev/null +++ b/vim/patches/vim-7.3.325.patch0 @@ -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 index 0000000..4ad52e9 --- /dev/null +++ b/vim/patches/vim-7.3.326.patch0 @@ -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 index 0000000..1de5a99 --- /dev/null +++ b/vim/patches/vim-7.3.327.patch0 @@ -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 index 0000000..24dad70 --- /dev/null +++ b/vim/patches/vim-7.3.328.patch0 @@ -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 index 0000000..fe48eb5 --- /dev/null +++ b/vim/patches/vim-7.3.329.patch0 @@ -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 index 0000000..ab828b9 --- /dev/null +++ b/vim/patches/vim-7.3.330.patch0 @@ -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 index 0000000..ba63c17 --- /dev/null +++ b/vim/patches/vim-7.3.331.patch0 @@ -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 index 0000000..ff0ab7c --- /dev/null +++ b/vim/patches/vim-7.3.332.patch0 @@ -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 index 0000000..974b0cd --- /dev/null +++ b/vim/patches/vim-7.3.333.patch0 @@ -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 index 0000000..85d5b16 --- /dev/null +++ b/vim/patches/vim-7.3.334.patch0 @@ -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 index 0000000..dc1cc56 --- /dev/null +++ b/vim/patches/vim-7.3.335.patch0 @@ -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 index 0000000..902f578 --- /dev/null +++ b/vim/patches/vim-7.3.336.patch0 @@ -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 // ++ `ab Xtags2.txt /`ab +*** ../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 /`ab ++ abc2 Xtags3.txt /`ab ++ abc3 Xtags3.txt /`ab ++ abc4 Xtags3.txt /`ab ++ abc5 Xtags3.txt /`ab ++ abc6 Xtags3.txt /`ab ++ abc7 Xtags3.txt /`ab ++ abc8 Xtags3.txt /`ab ++ abc9 Xtags3.txt /`ab ++ abc10 Xtags3.txt /`ab ++ abc11 Xtags3.txt /`ab ++ abc12 Xtags3.txt /`ab ++ abc13 Xtags3.txt /`ab ++ abc14 Xtags3.txt /`ab ++ abc15 Xtags3.txt /`ab ++ abc16 Xtags3.txt /`ab ++ abc17 Xtags3.txt /`ab ++ abc18 Xtags3.txt /`ab ++ abc19 Xtags3.txt /`ab ++ abc20 Xtags3.txt /`ab ++ abc21 Xtags3.txt /`ab ++ abc22 Xtags3.txt /`ab ++ abc23 Xtags3.txt /`ab ++ abc24 Xtags3.txt /`ab ++ abc25 Xtags3.txt /`ab ++ abc26 Xtags3.txt /`ab ++ abc27 Xtags3.txt /`ab ++ abc28 Xtags3.txt /`ab ++ abc29 Xtags3.txt /`ab ++ abc30 Xtags3.txt /`ab ++ abc31 Xtags3.txt /`ab ++ abc32 Xtags3.txt /`ab ++ abc33 Xtags3.txt /`ab ++ abc34 Xtags3.txt /`ab ++ abc35 Xtags3.txt /`ab ++ abc36 Xtags3.txt /`ab ++ abc37 Xtags3.txt /`ab ++ abc38 Xtags3.txt /`ab ++ abc39 Xtags3.txt /`ab ++ abc40 Xtags3.txt /`ab ++ abc41 Xtags3.txt /`ab ++ abc42 Xtags3.txt /`ab ++ abc43 Xtags3.txt /`ab ++ abc44 Xtags3.txt /`ab ++ abc45 Xtags3.txt /`ab ++ abc46 Xtags3.txt /`ab ++ abc47 Xtags3.txt /`ab ++ abc48 Xtags3.txt /`ab ++ abc49 Xtags3.txt /`ab ++ abc50 Xtags3.txt /`ab ++ abc51 Xtags3.txt /`ab ++ abc52 Xtags3.txt /`ab ++ abc53 Xtags3.txt /`ab ++ abc54 Xtags3.txt /`ab ++ abc55 Xtags3.txt /`ab ++ abc56 Xtags3.txt /`ab ++ abc57 Xtags3.txt /`ab ++ abc58 Xtags3.txt /`ab ++ abc59 Xtags3.txt /`ab ++ abc60 Xtags3.txt /`ab ++ abc61 Xtags3.txt /`ab ++ abc62 Xtags3.txt /`ab ++ abc63 Xtags3.txt /`ab ++ abc64 Xtags3.txt /`ab ++ abc65 Xtags3.txt /`ab ++ abc66 Xtags3.txt /`ab ++ abc67 Xtags3.txt /`ab ++ abc68 Xtags3.txt /`ab ++ abc69 Xtags3.txt /`ab ++ abc70 Xtags3.txt /`ab ++ abc71 Xtags3.txt /`ab ++ abc72 Xtags3.txt /`ab ++ abc73 Xtags3.txt /`ab ++ abc74 Xtags3.txt /`ab ++ abc75 Xtags3.txt /`ab ++ abc76 Xtags3.txt /`ab ++ abc77 Xtags3.txt /`ab ++ abc78 Xtags3.txt /`ab ++ abc79 Xtags3.txt /`ab ++ abc80 Xtags3.txt /`ab ++ abc81 Xtags3.txt /`ab ++ abc82 Xtags3.txt /`ab ++ abc83 Xtags3.txt /`ab ++ abc84 Xtags3.txt /`ab ++ abc85 Xtags3.txt /`ab ++ abc86 Xtags3.txt /`ab ++ abc87 Xtags3.txt /`ab ++ abc88 Xtags3.txt /`ab ++ abc89 Xtags3.txt /`ab ++ abc90 Xtags3.txt /`ab ++ abc91 Xtags3.txt /`ab ++ abc92 Xtags3.txt /`ab ++ abc93 Xtags3.txt /`ab ++ abc94 Xtags3.txt /`ab ++ abc95 Xtags3.txt /`ab ++ abc96 Xtags3.txt /`ab ++ abc97 Xtags3.txt /`ab ++ abc98 Xtags3.txt /`ab ++ abc99 Xtags3.txt /`ab ++ abc100 Xtags3.txt /`ab +*** ../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 /. ++ :if v:errmsg =~ 'E426:' || getline('.') != '' ++ : 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('.') != '' ++ : 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 index 0000000..a2aeb04 --- /dev/null +++ b/vim/patches/vim-7.3.337.patch0 @@ -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 index 0000000..f273212 --- /dev/null +++ b/vim/patches/vim-7.3.338.patch0 @@ -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 index 0000000..f108ad6 --- /dev/null +++ b/vim/patches/vim-7.3.339.patch0 @@ -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 index 0000000..fb0b842 --- /dev/null +++ b/vim/patches/vim-7.3.340.patch0 @@ -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 index 0000000..6ea3860 --- /dev/null +++ b/vim/patches/vim-7.3.341.patch0 @@ -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 index 0000000..2deb7e3 --- /dev/null +++ b/vim/patches/vim-7.3.342.patch0 @@ -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 index 0000000..db62264 --- /dev/null +++ b/vim/patches/vim-7.3.343.patch0 @@ -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 index 0000000..d2bb1db --- /dev/null +++ b/vim/patches/vim-7.3.344.patch0 @@ -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 index 0000000..99dd074 --- /dev/null +++ b/vim/patches/vim-7.3.345.patch0 @@ -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 index 0000000..e6b1a2b --- /dev/null +++ b/vim/patches/vim-7.3.346.patch0 @@ -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 index 0000000..85b0feb --- /dev/null +++ b/vim/patches/vim-7.3.347.patch0 @@ -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 index 0000000..e92febb --- /dev/null +++ b/vim/patches/vim-7.3.348.patch0 @@ -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 index 0000000..ac519af --- /dev/null +++ b/vim/patches/vim-7.3.349.patch0 @@ -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 index 0000000..5a1f332 --- /dev/null +++ b/vim/patches/vim-7.3.350.patch0 @@ -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 index 0000000..15b2194 --- /dev/null +++ b/vim/patches/vim-7.3.351.patch0 @@ -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 index 0000000..52842cf --- /dev/null +++ b/vim/patches/vim-7.3.352.patch0 @@ -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 index 0000000..1846243 --- /dev/null +++ b/vim/patches/vim-7.3.353.patch0 @@ -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 index 0000000..8250f9a --- /dev/null +++ b/vim/patches/vim-7.3.354.patch0 @@ -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 index 0000000..51bc3b7 --- /dev/null +++ b/vim/patches/vim-7.3.355.patch0 @@ -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 index 0000000..8b5572b --- /dev/null +++ b/vim/patches/vim-7.3.356.patch0 @@ -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 index 0000000..893a6bb --- /dev/null +++ b/vim/patches/vim-7.3.357.patch0 @@ -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 index 0000000..b9b385f --- /dev/null +++ b/vim/patches/vim-7.3.358.patch0 @@ -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 index 0000000..7fbd3f6 --- /dev/null +++ b/vim/patches/vim-7.3.359.patch0 @@ -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 index 0000000..de153c8 --- /dev/null +++ b/vim/patches/vim-7.3.360.patch0 @@ -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 index 0000000..c128057 --- /dev/null +++ b/vim/patches/vim-7.3.361.patch0 @@ -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 index 0000000..0056886 --- /dev/null +++ b/vim/patches/vim-7.3.362.patch0 @@ -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 index 0000000..10ab548 --- /dev/null +++ b/vim/patches/vim-7.3.363.patch0 @@ -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 index 0000000..e62ef76 --- /dev/null +++ b/vim/patches/vim-7.3.364.patch0 @@ -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 index 0000000..16d5ad1 --- /dev/null +++ b/vim/patches/vim-7.3.365.patch0 @@ -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 index 0000000..ddf3990 --- /dev/null +++ b/vim/patches/vim-7.3.366.patch0 @@ -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 index 0000000..2452d53 --- /dev/null +++ b/vim/patches/vim-7.3.367.patch0 @@ -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 index 0000000..958c69e --- /dev/null +++ b/vim/patches/vim-7.3.368.patch0 @@ -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 index 0000000..af6e7e6 --- /dev/null +++ b/vim/patches/vim-7.3.369.patch0 @@ -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 index 0000000..26bce4d --- /dev/null +++ b/vim/patches/vim-7.3.370.patch0 @@ -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 index 0000000..1701c11 --- /dev/null +++ b/vim/patches/vim-7.3.371.patch0 @@ -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 index 0000000..c9978c3 --- /dev/null +++ b/vim/patches/vim-7.3.372.patch0 @@ -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 index 0000000..3e8937a --- /dev/null +++ b/vim/patches/vim-7.3.373.patch0 @@ -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 index 0000000..b312828 --- /dev/null +++ b/vim/patches/vim-7.3.374.patch0 @@ -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 index 0000000..6f15fea --- /dev/null +++ b/vim/patches/vim-7.3.375.patch0 @@ -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 index 0000000..1e20743 --- /dev/null +++ b/vim/patches/vim-7.3.376.patch0 @@ -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 index 0000000..1a2df1d --- /dev/null +++ b/vim/patches/vim-7.3.377.patch0 @@ -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 index 0000000..8ad3d70 --- /dev/null +++ b/vim/patches/vim-7.3.378.patch0 @@ -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 index 0000000..fd87f9a --- /dev/null +++ b/vim/patches/vim-7.3.379.patch0 @@ -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 index 0000000..a8f4bcf --- /dev/null +++ b/vim/patches/vim-7.3.380.patch0 @@ -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 index 0000000..b795737 --- /dev/null +++ b/vim/patches/vim-7.3.381.patch0 @@ -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 index 0000000..7f344e7 --- /dev/null +++ b/vim/patches/vim-7.3.382.patch0 @@ -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 index 0000000..c0ce6d9 --- /dev/null +++ b/vim/patches/vim-7.3.383.patch0 @@ -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 index 0000000..f75ff40 --- /dev/null +++ b/vim/patches/vim-7.3.384.patch0 @@ -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 index 0000000..405a77f --- /dev/null +++ b/vim/patches/vim-7.3.385.patch0 @@ -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 index 0000000..c903505 --- /dev/null +++ b/vim/patches/vim-7.3.386.patch0 @@ -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 index 0000000..6b20a58 --- /dev/null +++ b/vim/patches/vim-7.3.387.patch0 @@ -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 index 0000000..7a6df89 --- /dev/null +++ b/vim/patches/vim-7.3.388.patch0 @@ -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 index 0000000..c8a968c --- /dev/null +++ b/vim/patches/vim-7.3.389.patch0 @@ -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 index 0000000..7199f8e --- /dev/null +++ b/vim/patches/vim-7.3.390.patch0 @@ -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 index 0000000..0a1bcce --- /dev/null +++ b/vim/patches/vim-7.3.391.patch0 @@ -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 index 0000000..a603d90 --- /dev/null +++ b/vim/patches/vim-7.3.392.patch0 @@ -0,0 +1,115 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.392 +Fcc: outbox +From: Bram Moolenaar Bram@moolenaar.net +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.392 +Problem: When setting 'undofile' while the file is already loaded but + unchanged, try reading the undo file. (Andy Wokula) +Solution: Compute a checksum of the text when 'undofile' is set. (Christian + Brabandt) +Files: src/option.c, src/testdir/test72.in, src/testdir/test72.ok + + +*** ../vim-7.3.391/src/option.c 2011-11-30 11:31:25.000000000 +0100 +--- src/option.c 2012-01-04 19:34:11.000000000 +0100 +*************** +*** 7516,7521 **** +--- 7516,7545 ---- + compatible_set(); + } + ++ #ifdef FEAT_PERSISTENT_UNDO ++ /* 'undofile' */ ++ else if ((int *)varp == &curbuf->b_p_udf || (int *)varp == &p_udf) ++ { ++ char_u hash[UNDO_HASH_SIZE]; ++ buf_T *save_curbuf = curbuf; ++ ++ for (curbuf = firstbuf; curbuf != NULL; curbuf = curbuf->b_next) ++ { ++ /* When 'undofile' is set globally: for every buffer, otherwise ++ * only for the current buffer: Try to read in the undofile, if ++ * one exists and the buffer wasn't changed. */ ++ if ((curbuf == save_curbuf ++ || (opt_flags & OPT_GLOBAL) || opt_flags == 0) ++ && !curbufIsChanged()) ++ { ++ u_compute_hash(hash); ++ u_read_undo(NULL, hash, curbuf->b_fname); ++ } ++ } ++ curbuf = save_curbuf; ++ } ++ #endif ++ + /* 'list', 'number' */ + else if ((int *)varp == &curwin->w_p_list + || (int *)varp == &curwin->w_p_nu +*** ../vim-7.3.391/src/testdir/test72.in 2010-08-15 21:57:29.000000000 +0200 +--- src/testdir/test72.in 2012-01-04 19:04:17.000000000 +0100 +*************** +*** 51,56 **** +--- 51,62 ---- + :e Xtestfile + uuu:w >>test.out + :" ++ :" Test that reading the undofiles when setting undofile works ++ :set noundofile ul=0 ++ i ++ u:e! Xtestfile ++ :set undofile ul=100 ++ uuuuuu:w >>test.out + :" And now with encryption, cryptmethod=zip + :e! Xtestfile + :set undofile cm=zip +*** ../vim-7.3.391/src/testdir/test72.ok 2010-08-15 21:57:29.000000000 +0200 +--- src/testdir/test72.ok 2012-01-04 19:04:17.000000000 +0100 +*************** +*** 7,12 **** +--- 7,22 ---- + eight + nine + ten ++ one ++ two ++ three ++ four ++ five ++ six ++ seven ++ eight ++ nine ++ ten + monday + wednesday + thursday +*** ../vim-7.3.391/src/version.c 2012-01-04 14:35:31.000000000 +0100 +--- src/version.c 2012-01-04 19:33:41.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 392, + /**/ + +-- +BROTHER MAYNARD: Armaments Chapter Two Verses Nine to Twenty One. +ANOTHER MONK: And St. Attila raised his hand grenade up on high saying "O + Lord bless this thy hand grenade that with it thou mayest + blow thine enemies to tiny bits, in thy mercy. "and the Lord + did grin and people did feast upon the lambs and sloths and + carp and anchovies and orang-utans and breakfast cereals and + fruit bats and... +BROTHER MAYNARD: Skip a bit brother ... + "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\ +\\ an exciting new programming language -- http://www.Zimbu.org /// + \\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/vim/patches/vim-7.3.393.patch0 b/vim/patches/vim-7.3.393.patch0 new file mode 100644 index 0000000..ca6cbc9 --- /dev/null +++ b/vim/patches/vim-7.3.393.patch0 @@ -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 index 0000000..20c7cff --- /dev/null +++ b/vim/patches/vim-7.3.394.patch0 @@ -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 index 0000000..cb26893 --- /dev/null +++ b/vim/patches/vim-7.3.395.patch0 @@ -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 index 0000000..72b55a2 --- /dev/null +++ b/vim/patches/vim-7.3.396.patch0 @@ -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 index 0000000..866b3aa --- /dev/null +++ b/vim/patches/vim-7.3.397.patch0 @@ -0,0 +1,224 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.397 +Fcc: outbox +From: Bram Moolenaar Bram@moolenaar.net +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.397 +Problem: ":helpgrep" does not work properly when 'encoding' is not utf-8 or + latin1. +Solution: Convert non-ascii lines to 'encoding'. (Yasuhiro Matsumoto) +Files: src/quickfix.c, src/spell.c, src/misc2.c, src/proto/misc2.pro + + +*** ../vim-7.3.396/src/quickfix.c 2011-12-30 15:01:55.000000000 +0100 +--- src/quickfix.c 2012-01-10 16:18:51.000000000 +0100 +*************** +*** 3914,3919 **** +--- 3914,3929 ---- + regmatch.rm_ic = FALSE; + if (regmatch.regprog != NULL) + { ++ #ifdef FEAT_MBYTE ++ vimconv_T vc; ++ ++ /* Help files are in utf-8 or latin1, convert lines when 'encoding' ++ * differs. */ ++ vc.vc_type = CONV_NONE; ++ if (!enc_utf8) ++ convert_setup(&vc, (char_u *)"utf-8", p_enc); ++ #endif ++ + /* create a new quickfix list */ + qf_new_list(qi, *eap->cmdlinep); + +*************** +*** 3948,3968 **** + lnum = 1; + while (!vim_fgets(IObuff, IOSIZE, fd) && !got_int) + { +! if (vim_regexec(®match, IObuff, (colnr_T)0)) + { +! int l = (int)STRLEN(IObuff); + + /* remove trailing CR, LF, spaces, etc. */ +! while (l > 0 && IObuff[l - 1] <= ' ') +! IObuff[--l] = NUL; + + if (qf_add_entry(qi, &prevp, + NULL, /* dir */ + fnames[fi], + 0, +! IObuff, + lnum, +! (int)(regmatch.startp[0] - IObuff) + + 1, /* col */ + FALSE, /* vis_col */ + NULL, /* search pattern */ +--- 3958,3990 ---- + lnum = 1; + while (!vim_fgets(IObuff, IOSIZE, fd) && !got_int) + { +! char_u *line = IObuff; +! #ifdef FEAT_MBYTE +! /* Convert a line if 'encoding' is not utf-8 and +! * the line contains a non-ASCII character. */ +! if (vc.vc_type != CONV_NONE +! && has_non_ascii(IObuff)) { +! line = string_convert(&vc, IObuff, NULL); +! if (line == NULL) +! line = IObuff; +! } +! #endif +! +! if (vim_regexec(®match, line, (colnr_T)0)) + { +! int l = (int)STRLEN(line); + + /* remove trailing CR, LF, spaces, etc. */ +! while (l > 0 && line[l - 1] <= ' ') +! line[--l] = NUL; + + if (qf_add_entry(qi, &prevp, + NULL, /* dir */ + fnames[fi], + 0, +! line, + lnum, +! (int)(regmatch.startp[0] - line) + + 1, /* col */ + FALSE, /* vis_col */ + NULL, /* search pattern */ +*************** +*** 3972,3980 **** +--- 3994,4010 ---- + ) == FAIL) + { + got_int = TRUE; ++ #ifdef FEAT_MBYTE ++ if (line != IObuff) ++ vim_free(line); ++ #endif + break; + } + } ++ #ifdef FEAT_MBYTE ++ if (line != IObuff) ++ vim_free(line); ++ #endif + ++lnum; + line_breakcheck(); + } +*************** +*** 3984,3990 **** +--- 4014,4025 ---- + FreeWild(fcount, fnames); + } + } ++ + vim_free(regmatch.regprog); ++ #ifdef FEAT_MBYTE ++ if (vc.vc_type != CONV_NONE) ++ convert_setup(&vc, NULL, NULL); ++ #endif + + qi->qf_lists[qi->qf_curlist].qf_nonevalid = FALSE; + qi->qf_lists[qi->qf_curlist].qf_ptr = +*** ../vim-7.3.396/src/spell.c 2011-09-02 14:18:14.000000000 +0200 +--- src/spell.c 2012-01-10 16:19:33.000000000 +0100 +*************** +*** 5020,5026 **** + static int str_equal __ARGS((char_u *s1, char_u *s2)); + static void add_fromto __ARGS((spellinfo_T *spin, garray_T *gap, char_u *from, char_u *to)); + static int sal_to_bool __ARGS((char_u *s)); +- static int has_non_ascii __ARGS((char_u *s)); + static void spell_free_aff __ARGS((afffile_T *aff)); + static int spell_read_dic __ARGS((spellinfo_T *spin, char_u *fname, afffile_T *affile)); + static int get_affix_flags __ARGS((afffile_T *affile, char_u *afflist)); +--- 5020,5025 ---- +*************** +*** 6485,6507 **** + } + + /* +- * Return TRUE if string "s" contains a non-ASCII character (128 or higher). +- * When "s" is NULL FALSE is returned. +- */ +- static int +- has_non_ascii(s) +- char_u *s; +- { +- char_u *p; +- +- if (s != NULL) +- for (p = s; *p != NUL; ++p) +- if (*p >= 128) +- return TRUE; +- return FALSE; +- } +- +- /* + * Free the structure filled by spell_read_aff(). + */ + static void +--- 6484,6489 ---- +*** ../vim-7.3.396/src/misc2.c 2011-12-08 17:49:31.000000000 +0100 +--- src/misc2.c 2012-01-10 16:25:53.000000000 +0100 +*************** +*** 6541,6543 **** +--- 6541,6563 ---- + #endif + + #endif ++ ++ #if (defined(FEAT_MBYTE) && defined(FEAT_QUICKFIX)) \ ++ || defined(FEAT_SPELL) || defined(PROTO) ++ /* ++ * Return TRUE if string "s" contains a non-ASCII character (128 or higher). ++ * When "s" is NULL FALSE is returned. ++ */ ++ int ++ has_non_ascii(s) ++ char_u *s; ++ { ++ char_u *p; ++ ++ if (s != NULL) ++ for (p = s; *p != NUL; ++p) ++ if (*p >= 128) ++ return TRUE; ++ return FALSE; ++ } ++ #endif +*** ../vim-7.3.396/src/proto/misc2.pro 2011-07-07 16:20:45.000000000 +0200 +--- src/proto/misc2.pro 2012-01-10 16:20:03.000000000 +0100 +*************** +*** 116,119 **** +--- 116,120 ---- + char_u *read_string __ARGS((FILE *fd, int cnt)); + int put_bytes __ARGS((FILE *fd, long_u nr, int len)); + void put_time __ARGS((FILE *fd, time_t the_time)); ++ int has_non_ascii __ARGS((char_u *s)); + /* vim: set ft=c : */ +*** ../vim-7.3.396/src/version.c 2012-01-10 13:46:18.000000000 +0100 +--- src/version.c 2012-01-10 16:26:32.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 397, + /**/ + +-- +Biting someone with your natural teeth is "simple assault," while biting +someone with your false teeth is "aggravated assault." + [real standing law in Louisana, United States of America] + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\ +\\ an exciting new programming language -- http://www.Zimbu.org /// + \\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/vim/patches/vim-7.3.398.patch0 b/vim/patches/vim-7.3.398.patch0 new file mode 100644 index 0000000..8d4b213 --- /dev/null +++ b/vim/patches/vim-7.3.398.patch0 @@ -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 index 0000000..33d0630 --- /dev/null +++ b/vim/patches/vim-7.3.399.patch0 @@ -0,0 +1,137 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.399 +Fcc: outbox +From: Bram Moolenaar Bram@moolenaar.net +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.399 +Problem: ":cd" doesn't work when the path contains wildcards. (Yukihiro + Nakadaira) +Solution: Ignore wildcard errors when the EW_NOTWILD flag is used. +Files: src/misc1.c + + +*** ../vim-7.3.398/src/misc1.c 2011-12-14 20:21:29.000000000 +0100 +--- src/misc1.c 2012-01-10 17:57:42.000000000 +0100 +*************** +*** 9103,9117 **** + } + + /* compile the regexp into a program */ +! if (flags & EW_NOERROR) + ++emsg_silent; + regmatch.rm_ic = TRUE; /* Always ignore case */ + regmatch.regprog = vim_regcomp(pat, RE_MAGIC); +! if (flags & EW_NOERROR) + --emsg_silent; + vim_free(pat); + +! if (regmatch.regprog == NULL) + { + vim_free(buf); + return 0; +--- 9103,9117 ---- + } + + /* compile the regexp into a program */ +! if (flags & (EW_NOERROR | EW_NOTWILD)) + ++emsg_silent; + regmatch.rm_ic = TRUE; /* Always ignore case */ + regmatch.regprog = vim_regcomp(pat, RE_MAGIC); +! if (flags & (EW_NOERROR | EW_NOTWILD)) + --emsg_silent; + vim_free(pat); + +! if (regmatch.regprog == NULL && (flags & EW_NOTWILD) == 0) + { + vim_free(buf); + return 0; +*************** +*** 9179,9185 **** + * all entries found with "matchname". */ + if ((p[0] != '.' || starts_with_dot) + && (matchname == NULL +! || vim_regexec(®match, p, (colnr_T)0) + || ((flags & EW_NOTWILD) + && fnamencmp(path + (s - buf), p, e - s) == 0))) + { +--- 9179,9186 ---- + * all entries found with "matchname". */ + if ((p[0] != '.' || starts_with_dot) + && (matchname == NULL +! || (regmatch.regprog != NULL +! && vim_regexec(®match, p, (colnr_T)0)) + || ((flags & EW_NOTWILD) + && fnamencmp(path + (s - buf), p, e - s) == 0))) + { +*************** +*** 9419,9428 **** + else + regmatch.rm_ic = FALSE; /* Don't ignore case */ + #endif + regmatch.regprog = vim_regcomp(pat, RE_MAGIC); + vim_free(pat); + +! if (regmatch.regprog == NULL) + { + vim_free(buf); + return 0; +--- 9420,9433 ---- + else + regmatch.rm_ic = FALSE; /* Don't ignore case */ + #endif ++ if (flags & (EW_NOERROR | EW_NOTWILD)) ++ ++emsg_silent; + regmatch.regprog = vim_regcomp(pat, RE_MAGIC); ++ if (flags & (EW_NOERROR | EW_NOTWILD)) ++ --emsg_silent; + vim_free(pat); + +! if (regmatch.regprog == NULL && (flags & EW_NOTWILD) == 0) + { + vim_free(buf); + return 0; +*************** +*** 9452,9458 **** + if (dp == NULL) + break; + if ((dp->d_name[0] != '.' || starts_with_dot) +! && (vim_regexec(®match, (char_u *)dp->d_name, (colnr_T)0) + || ((flags & EW_NOTWILD) + && fnamencmp(path + (s - buf), dp->d_name, e - s) == 0))) + { +--- 9457,9464 ---- + if (dp == NULL) + break; + if ((dp->d_name[0] != '.' || starts_with_dot) +! && ((regmatch.regprog != NULL && vim_regexec(®match, +! (char_u *)dp->d_name, (colnr_T)0)) + || ((flags & EW_NOTWILD) + && fnamencmp(path + (s - buf), dp->d_name, e - s) == 0))) + { +*** ../vim-7.3.398/src/version.c 2012-01-10 17:13:48.000000000 +0100 +--- src/version.c 2012-01-10 18:21:05.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 399, + /**/ + +-- +Close your shells, or I'll kill -9 you +Tomorrow I'll quota you +Remember the disks'll always be full +And then while I'm away +I'll write ~ everyday +And I'll send-pr all my buggings to you. + [ CVS log "Beatles style" for FreeBSD ports/INDEX, Satoshi Asami ] + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\ +\\ an exciting new programming language -- http://www.Zimbu.org /// + \\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/vim/patches/vim-7.3.400.patch0 b/vim/patches/vim-7.3.400.patch0 new file mode 100644 index 0000000..c621a88 --- /dev/null +++ b/vim/patches/vim-7.3.400.patch0 @@ -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 index 0000000..6a473c5 --- /dev/null +++ b/vim/patches/vim-7.3.401.patch0 @@ -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 index 0000000..a5501f8 --- /dev/null +++ b/vim/patches/vim-7.3.402.patch0 @@ -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 index 0000000..bc3bf54 --- /dev/null +++ b/vim/patches/vim-7.3.403.patch0 @@ -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 index 0000000..445d705 --- /dev/null +++ b/vim/patches/vim-7.3.404.patch0 @@ -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 index 0000000..087aecc --- /dev/null +++ b/vim/patches/vim-7.3.405.patch0 @@ -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 index 0000000..dceca0e --- /dev/null +++ b/vim/patches/vim-7.3.406.patch0 @@ -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 index 0000000..d5ac133 --- /dev/null +++ b/vim/patches/vim-7.3.407.patch0 @@ -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 index 0000000..0227608 --- /dev/null +++ b/vim/patches/vim-7.3.408.patch0 @@ -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 index 0000000..a00fdcb --- /dev/null +++ b/vim/patches/vim-7.3.409.patch0 @@ -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 index 0000000..f40e06f --- /dev/null +++ b/vim/patches/vim-7.3.410.patch0 @@ -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 index 0000000..fe75995 --- /dev/null +++ b/vim/patches/vim-7.3.411.patch0 @@ -0,0 +1,55 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.411 +Fcc: outbox +From: Bram Moolenaar Bram@moolenaar.net +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.411 +Problem: Pasting in Visual mode using the "" register does not work. (John + Beckett) +Solution: Detect that the write is overwriting the pasted register. + (Christian Brabandt) +Files: src/normal.c + + +*** ../vim-7.3.410/src/normal.c 2011-10-04 21:22:40.000000000 +0200 +--- src/normal.c 2012-01-23 22:13:44.000000000 +0100 +*************** +*** 9329,9335 **** + # ifdef FEAT_CLIPBOARD + adjust_clip_reg(®name); + # endif +! if (regname == 0 || VIM_ISDIGIT(regname) + # ifdef FEAT_CLIPBOARD + || (clip_unnamed && (regname == '*' || regname == '+')) + # endif +--- 9329,9335 ---- + # ifdef FEAT_CLIPBOARD + adjust_clip_reg(®name); + # endif +! if (regname == 0 || regname == '"' || VIM_ISDIGIT(regname) + # ifdef FEAT_CLIPBOARD + || (clip_unnamed && (regname == '*' || regname == '+')) + # endif +*** ../vim-7.3.410/src/version.c 2012-01-23 20:48:34.000000000 +0100 +--- src/version.c 2012-01-26 11:42:33.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 411, + /**/ + +-- +Engineers understand that their appearance only bothers other people and +therefore it is not worth optimizing. + (Scott Adams - The Dilbert principle) + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\ +\\ an exciting new programming language -- http://www.Zimbu.org /// + \\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/vim/patches/vim-7.3.412.patch0 b/vim/patches/vim-7.3.412.patch0 new file mode 100644 index 0000000..3b18188 --- /dev/null +++ b/vim/patches/vim-7.3.412.patch0 @@ -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 index 0000000..c32c9b1 --- /dev/null +++ b/vim/patches/vim-7.3.413.patch0 @@ -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 index 0000000..6f6c307 --- /dev/null +++ b/vim/patches/vim-7.3.414.patch0 @@ -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 index 0000000..74e757b --- /dev/null +++ b/vim/patches/vim-7.3.415.patch0 @@ -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 index 0000000..f65bb0d --- /dev/null +++ b/vim/patches/vim-7.3.416.patch0 @@ -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 index 0000000..489d27e --- /dev/null +++ b/vim/patches/vim-7.3.417.patch0 @@ -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 index 0000000..6ff486b --- /dev/null +++ b/vim/patches/vim-7.3.418.patch0 @@ -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 index 0000000..865a47c --- /dev/null +++ b/vim/patches/vim-7.3.419.patch0 @@ -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 index 0000000..d698d0b --- /dev/null +++ b/vim/patches/vim-7.3.420.patch0 @@ -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 index 0000000..eadc29d --- /dev/null +++ b/vim/patches/vim-7.3.421.patch0 @@ -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 index 0000000..7be4aeb --- /dev/null +++ b/vim/patches/vim-7.3.422.patch0 @@ -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 index 0000000..74bf62d --- /dev/null +++ b/vim/patches/vim-7.3.423.patch0 @@ -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 index 0000000..61786ed --- /dev/null +++ b/vim/patches/vim-7.3.424.patch0 @@ -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 index 0000000..aeadf3a --- /dev/null +++ b/vim/patches/vim-7.3.425.patch0 @@ -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 index 0000000..76380af --- /dev/null +++ b/vim/patches/vim-7.3.426.patch0 @@ -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 index 0000000..61df881 --- /dev/null +++ b/vim/patches/vim-7.3.427.patch0 @@ -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 index 0000000..89567ed --- /dev/null +++ b/vim/patches/vim-7.3.428.patch0 @@ -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 index 0000000..801e25f --- /dev/null +++ b/vim/patches/vim-7.3.429.patch0 @@ -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 index 0000000..c67e7fb --- /dev/null +++ b/vim/patches/vim-7.3.430.patch0 @@ -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 index 0000000..2e4e62b --- /dev/null +++ b/vim/patches/vim-7.3.431.patch0 @@ -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 index 0000000..c01dd59 --- /dev/null +++ b/vim/patches/vim-7.3.432.patch0 @@ -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 index 0000000..bb83828 --- /dev/null +++ b/vim/patches/vim-7.3.433.patch0 @@ -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 index 0000000..52c14b9 --- /dev/null +++ b/vim/patches/vim-7.3.434.patch0 @@ -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 index 0000000..e1b1370 --- /dev/null +++ b/vim/patches/vim-7.3.435.patch0 @@ -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 index 0000000..777371c --- /dev/null +++ b/vim/patches/vim-7.3.436.patch0 @@ -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 index 0000000..889efe7 --- /dev/null +++ b/vim/patches/vim-7.3.437.patch0 @@ -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 index 0000000..94786d7 --- /dev/null +++ b/vim/patches/vim-7.3.438.patch0 @@ -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 index 0000000..63d8f69 --- /dev/null +++ b/vim/patches/vim-7.3.439.patch0 @@ -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 index 0000000..39313b0 --- /dev/null +++ b/vim/patches/vim-7.3.440.patch0 @@ -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 index 0000000..9a7539b --- /dev/null +++ b/vim/patches/vim-7.3.441.patch0 @@ -0,0 +1,341 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.441 +Fcc: outbox +From: Bram Moolenaar Bram@moolenaar.net +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.441 +Problem: Newer versions of MzScheme (Racket) require earlier (trampolined) + initialisation. +Solution: Call mzscheme_main() early in main(). (Sergey Khorev) +Files: src/Make_mvc.mak, src/if_mzsch.c, src/main.c, + src/proto/if_mzsch.pro + + +*** ../vim-7.3.440/src/Make_mvc.mak 2011-09-14 19:01:38.000000000 +0200 +--- src/Make_mvc.mak 2012-02-12 01:46:05.000000000 +0100 +*************** +*** 740,745 **** +--- 740,747 ---- + !endif + !endif + MZSCHEME_OBJ = $(OUTDIR)\if_mzsch.obj ++ # increase stack size ++ MZSCHEME_LIB = $(MZSCHEME_LIB) /STACK:8388608 + !endif + + # Perl interface +*** ../vim-7.3.440/src/if_mzsch.c 2010-11-03 21:59:23.000000000 +0100 +--- src/if_mzsch.c 2012-02-12 01:47:31.000000000 +0100 +*************** +*** 31,38 **** + * depend". */ + #if defined(FEAT_MZSCHEME) || defined(PROTO) + +- #include <assert.h> +- + /* Base data structures */ + #define SCHEME_VIMBUFFERP(obj) SAME_TYPE(SCHEME_TYPE(obj), mz_buffer_type) + #define SCHEME_VIMWINDOWP(obj) SAME_TYPE(SCHEME_TYPE(obj), mz_window_type) +--- 31,36 ---- +*************** +*** 559,575 **** + hMzSch = vimLoadLib(sch_dll); + hMzGC = vimLoadLib(gc_dll); + +! if (!hMzSch) + { + if (verbose) +! EMSG2(_(e_loadlib), sch_dll); + return FAIL; + } + +! if (!hMzGC) + { + if (verbose) +! EMSG2(_(e_loadlib), gc_dll); + return FAIL; + } + +--- 557,573 ---- + hMzSch = vimLoadLib(sch_dll); + hMzGC = vimLoadLib(gc_dll); + +! if (!hMzGC) + { + if (verbose) +! EMSG2(_(e_loadlib), gc_dll); + return FAIL; + } + +! if (!hMzSch) + { + if (verbose) +! EMSG2(_(e_loadlib), sch_dll); + return FAIL; + } + +*************** +*** 798,862 **** + static __declspec(thread) void *tls_space; + #endif + +! void +! mzscheme_main(void) + { + #if MZSCHEME_VERSION_MAJOR >= 500 && defined(WIN32) && defined(USE_THREAD_LOCAL) + scheme_register_tls_space(&tls_space, 0); + #endif +! #if defined(MZ_PRECISE_GC) && MZSCHEME_VERSION_MAJOR >= 400 +! /* use trampoline for precise GC in MzScheme >= 4.x */ +! scheme_main_setup(TRUE, mzscheme_env_main, 0, NULL); + #else +! mzscheme_env_main(NULL, 0, NULL); + #endif + } + + static int +! mzscheme_env_main(Scheme_Env *env, int argc UNUSED, char **argv UNUSED) + { +! /* neither argument nor return values are used */ +! #ifdef MZ_PRECISE_GC +! # if MZSCHEME_VERSION_MAJOR < 400 +! /* +! * Starting from version 4.x, embedding applications must use +! * scheme_main_setup/scheme_main_stack_setup trampolines +! * rather than setting stack base directly with scheme_set_stack_base +! */ + Scheme_Object *dummy = NULL; + MZ_GC_DECL_REG(1); + MZ_GC_VAR_IN_REG(0, dummy); + + stack_base = &__gc_var_stack__; + # else +- /* environment has been created by us by Scheme */ +- environment = env; +- # endif +- /* +- * In 4.x, all activities must be performed inside trampoline +- * so we are forced to initialise GC immediately +- * This can be postponed in 3.x but I see no point in implementing +- * a feature which will work in older versions only. +- * One would better use conservative GC if he needs dynamic MzScheme +- */ +- mzscheme_init(); +- #else + int dummy = 0; + stack_base = (void *)&dummy; + #endif +! main_loop(FALSE, FALSE); +! #if defined(MZ_PRECISE_GC) && MZSCHEME_VERSION_MAJOR < 400 + /* releasing dummy */ + MZ_GC_REG(); + MZ_GC_UNREG(); + #endif +! return 0; + } + + static void + startup_mzscheme(void) + { +! #if !defined(MZ_PRECISE_GC) || MZSCHEME_VERSION_MAJOR < 400 + scheme_set_stack_base(stack_base, 1); + #endif + +--- 796,863 ---- + static __declspec(thread) void *tls_space; + #endif + +! /* +! * Since version 4.x precise GC requires trampolined startup. +! * Futures and places in version 5.x need it too. +! */ +! #if defined(MZ_PRECISE_GC) && MZSCHEME_VERSION_MAJOR >= 400 \ +! || MZSCHEME_VERSION_MAJOR >= 500 && (defined(MZ_USE_FUTURES) || defined(MZ_USE_PLACES)) +! # ifdef DYNAMIC_MZSCHEME +! # error Precise GC v.4+ or Racket with futures/places do not support dynamic MzScheme +! # endif +! # define TRAMPOLINED_MZVIM_STARTUP +! #endif +! +! int +! mzscheme_main(int argc, char** argv) + { + #if MZSCHEME_VERSION_MAJOR >= 500 && defined(WIN32) && defined(USE_THREAD_LOCAL) + scheme_register_tls_space(&tls_space, 0); + #endif +! #ifdef TRAMPOLINED_MZVIM_STARTUP +! return scheme_main_setup(TRUE, mzscheme_env_main, argc, argv); + #else +! return mzscheme_env_main(NULL, argc, argv); + #endif + } + + static int +! mzscheme_env_main(Scheme_Env *env, int argc, char **argv) + { +! int vim_main_result; +! #ifdef TRAMPOLINED_MZVIM_STARTUP +! /* Scheme has created the environment for us */ +! environment = env; +! #else +! # ifdef MZ_PRECISE_GC + Scheme_Object *dummy = NULL; + MZ_GC_DECL_REG(1); + MZ_GC_VAR_IN_REG(0, dummy); + + stack_base = &__gc_var_stack__; + # else + int dummy = 0; + stack_base = (void *)&dummy; ++ # endif + #endif +! +! /* mzscheme_main is called as a trampoline from main. +! * We trampoline into vim_main2 +! * Passing argc, argv through from mzscheme_main +! */ +! vim_main_result = vim_main2(argc, argv); +! #if !defined(TRAMPOLINED_MZVIM_STARTUP) && defined(MZ_PRECISE_GC) + /* releasing dummy */ + MZ_GC_REG(); + MZ_GC_UNREG(); + #endif +! return vim_main_result; + } + + static void + startup_mzscheme(void) + { +! #ifndef TRAMPOLINED_MZVIM_STARTUP + scheme_set_stack_base(stack_base, 1); + #endif + +*************** +*** 868,874 **** + MZ_REGISTER_STATIC(exn_message); + MZ_REGISTER_STATIC(vim_exn); + +! #if !defined(MZ_PRECISE_GC) || MZSCHEME_VERSION_MAJOR < 400 + /* in newer versions of precise GC the initial env has been created */ + environment = scheme_basic_env(); + #endif +--- 869,875 ---- + MZ_REGISTER_STATIC(exn_message); + MZ_REGISTER_STATIC(vim_exn); + +! #ifndef TRAMPOLINED_MZVIM_STARTUP + /* in newer versions of precise GC the initial env has been created */ + environment = scheme_basic_env(); + #endif +*************** +*** 3013,3019 **** + MZ_GC_REG(); + + tmp = scheme_make_struct_names(exn_name, scheme_null, 0, &nc); +- assert(nc <= 5); + mch_memmove(exn_names, tmp, nc * sizeof(Scheme_Object *)); + MZ_GC_CHECK(); + +--- 3014,3019 ---- +*** ../vim-7.3.440/src/main.c 2011-12-08 15:57:54.000000000 +0100 +--- src/main.c 2012-02-12 01:49:50.000000000 +0100 +*************** +*** 554,559 **** +--- 554,584 ---- + debug_break_level = params.use_debug_break_level; + #endif + ++ #ifdef FEAT_MZSCHEME ++ /* ++ * Newer version of MzScheme (Racket) require earlier (trampolined) ++ * initialisation via scheme_main_setup. ++ * Implement this by initialising it as early as possible ++ * and splitting off remaining Vim main into vim_main2 ++ */ ++ { ++ /* Pack up preprocessed command line arguments. ++ * It is safe because Scheme does not access argc/argv. */ ++ char *args[2]; ++ args[0] = (char *)fname; ++ args[1] = (char *)¶ms; ++ return mzscheme_main(2, args); ++ } ++ } ++ ++ int vim_main2(int argc, char **argv) ++ { ++ char_u *fname = (char_u *)argv[0]; ++ mparm_T params; ++ ++ memcpy(¶ms, argv[1], sizeof(params)); ++ #endif ++ + /* Execute --cmd arguments. */ + exe_pre_commands(¶ms); + +*************** +*** 957,970 **** + + /* + * Call the main command loop. This never returns. +! * For embedded MzScheme the main_loop will be called by Scheme +! * for proper stack tracking +! */ +! #ifndef FEAT_MZSCHEME + main_loop(FALSE, FALSE); +- #else +- mzscheme_main(); +- #endif + + return 0; + } +--- 982,989 ---- + + /* + * Call the main command loop. This never returns. +! */ + main_loop(FALSE, FALSE); + + return 0; + } +*** ../vim-7.3.440/src/proto/if_mzsch.pro 2010-08-15 21:57:28.000000000 +0200 +--- src/proto/if_mzsch.pro 2012-02-12 01:50:57.000000000 +0100 +*************** +*** 14,19 **** + void mzvim_reset_timer __ARGS((void)); + void *mzvim_eval_string __ARGS((char_u *str)); + int mzthreads_allowed __ARGS((void)); +! void mzscheme_main __ARGS((void)); + void do_mzeval __ARGS((char_u *str, typval_T *rettv)); + /* vim: set ft=c : */ +--- 14,20 ---- + void mzvim_reset_timer __ARGS((void)); + void *mzvim_eval_string __ARGS((char_u *str)); + int mzthreads_allowed __ARGS((void)); +! int mzscheme_main __ARGS((int argc, char **argv)); + void do_mzeval __ARGS((char_u *str, typval_T *rettv)); ++ int vim_main2 __ARGS((int argc, char **argv)); + /* vim: set ft=c : */ +*** ../vim-7.3.440/src/version.c 2012-02-12 01:35:06.000000000 +0100 +--- src/version.c 2012-02-12 01:54:14.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 441, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +43. You tell the kids they can't use the computer because "Daddy's got work to + do" and you don't even have a job. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\ +\\ an exciting new programming language -- http://www.Zimbu.org /// + \\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/vim/patches/vim-7.3.442.patch0 b/vim/patches/vim-7.3.442.patch0 new file mode 100644 index 0000000..58b58b4 --- /dev/null +++ b/vim/patches/vim-7.3.442.patch0 @@ -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 index 0000000..84b45ba --- /dev/null +++ b/vim/patches/vim-7.3.443.patch0 @@ -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 index 0000000..64ed88b --- /dev/null +++ b/vim/patches/vim-7.3.444.patch0 @@ -0,0 +1,96 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.444 +Fcc: outbox +From: Bram Moolenaar Bram@moolenaar.net +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.444 +Problem: ":all!" and ":sall!" give error E477, even though the + documentation says these are valid commands. +Solution: Support the exclamation mark. (Hirohito Higashi) +Files: src/ex_cmds.h, src/testdir/test31.in, src/testdir/test31.ok + + +*** ../vim-7.3.443/src/ex_cmds.h 2011-06-20 05:02:53.000000000 +0200 +--- src/ex_cmds.h 2012-02-12 23:53:31.000000000 +0100 +*************** +*** 102,108 **** + EX(CMD_aboveleft, "aboveleft", ex_wrongmodifier, + NEEDARG|EXTRA|NOTRLCOM), + EX(CMD_all, "all", ex_all, +! RANGE|NOTADR|COUNT|TRLBAR), + EX(CMD_amenu, "amenu", ex_menu, + RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EX(CMD_anoremenu, "anoremenu", ex_menu, +--- 102,108 ---- + EX(CMD_aboveleft, "aboveleft", ex_wrongmodifier, + NEEDARG|EXTRA|NOTRLCOM), + EX(CMD_all, "all", ex_all, +! BANG|RANGE|NOTADR|COUNT|TRLBAR), + EX(CMD_amenu, "amenu", ex_menu, + RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN), + EX(CMD_anoremenu, "anoremenu", ex_menu, +*************** +*** 798,804 **** + EX(CMD_sargument, "sargument", ex_argument, + BANG|RANGE|NOTADR|COUNT|EXTRA|EDITCMD|ARGOPT|TRLBAR), + EX(CMD_sall, "sall", ex_all, +! RANGE|NOTADR|COUNT|TRLBAR), + EX(CMD_sandbox, "sandbox", ex_wrongmodifier, + NEEDARG|EXTRA|NOTRLCOM), + EX(CMD_saveas, "saveas", ex_write, +--- 798,804 ---- + EX(CMD_sargument, "sargument", ex_argument, + BANG|RANGE|NOTADR|COUNT|EXTRA|EDITCMD|ARGOPT|TRLBAR), + EX(CMD_sall, "sall", ex_all, +! BANG|RANGE|NOTADR|COUNT|TRLBAR), + EX(CMD_sandbox, "sandbox", ex_wrongmodifier, + NEEDARG|EXTRA|NOTRLCOM), + EX(CMD_saveas, "saveas", ex_write, +*** ../vim-7.3.443/src/testdir/test31.in 2010-08-15 21:57:29.000000000 +0200 +--- src/testdir/test31.in 2012-02-12 23:57:42.000000000 +0100 +*************** +*** 63,68 **** +--- 63,74 ---- + :" write "testtext 1" + A 3:close! + :w >>test.out ++ :set nohidden ++ :" test ":all!" hides changed buffer; write "testtext 2 2 2" ++ :sp Xtest4 ++ GA 4:all! ++ :1wincmd w ++ :w >>test.out + :qa! + ENDTEST + +*** ../vim-7.3.443/src/testdir/test31.ok 2010-08-15 21:57:29.000000000 +0200 +--- src/testdir/test31.ok 2012-02-13 00:00:13.000000000 +0100 +*************** +*** 9,11 **** +--- 9,12 ---- + testtext 1 + testtext 3 3 3 + testtext 1 ++ testtext 2 2 2 +*** ../vim-7.3.443/src/version.c 2012-02-12 23:23:25.000000000 +0100 +--- src/version.c 2012-02-12 23:52:47.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 444, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +50. The last girl you picked up was only a jpeg. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\ +\\ an exciting new programming language -- http://www.Zimbu.org /// + \\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/vim/patches/vim-7.3.445.patch0 b/vim/patches/vim-7.3.445.patch0 new file mode 100644 index 0000000..8d7c337 --- /dev/null +++ b/vim/patches/vim-7.3.445.patch0 @@ -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 index 0000000..59a2b25 --- /dev/null +++ b/vim/patches/vim-7.3.446.patch0 @@ -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 index 0000000..9c0af9f --- /dev/null +++ b/vim/patches/vim-7.3.447.patch0 @@ -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 index 0000000..91d8f26 --- /dev/null +++ b/vim/patches/vim-7.3.448.patch0 @@ -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 index 0000000..9b5bdea --- /dev/null +++ b/vim/patches/vim-7.3.449.patch0 @@ -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 index 0000000..7112668 --- /dev/null +++ b/vim/patches/vim-7.3.450.patch0 @@ -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 index 0000000..25d1b04 --- /dev/null +++ b/vim/patches/vim-7.3.451.patch0 @@ -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 index 0000000..295b2fe --- /dev/null +++ b/vim/patches/vim-7.3.452.patch0 @@ -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 index 0000000..cf0f0e7 --- /dev/null +++ b/vim/patches/vim-7.3.453.patch0 @@ -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 index 0000000..8658926 --- /dev/null +++ b/vim/patches/vim-7.3.454.patch0 @@ -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 index 0000000..217b00d --- /dev/null +++ b/vim/patches/vim-7.3.455.patch0 @@ -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 index 0000000..26fc2a9 --- /dev/null +++ b/vim/patches/vim-7.3.456.patch0 @@ -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 index 0000000..e60d624 --- /dev/null +++ b/vim/patches/vim-7.3.457.patch0 @@ -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 index 0000000..9bd4407 --- /dev/null +++ b/vim/patches/vim-7.3.458.patch0 @@ -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 index 0000000..d75a38b --- /dev/null +++ b/vim/patches/vim-7.3.459.patch0 @@ -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 index 0000000..c1d7e85 --- /dev/null +++ b/vim/patches/vim-7.3.460.patch0 @@ -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 index 0000000..53c83c0 --- /dev/null +++ b/vim/patches/vim-7.3.461.patch0 @@ -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 index 0000000..df03724 --- /dev/null +++ b/vim/patches/vim-7.3.462.patch0 @@ -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 index 0000000..1e7cb23 --- /dev/null +++ b/vim/patches/vim-7.3.463.patch0 @@ -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 index 0000000..fdfdfff --- /dev/null +++ b/vim/patches/vim-7.3.464.patch0 @@ -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 index 0000000..c4a857a --- /dev/null +++ b/vim/patches/vim-7.3.465.patch0 @@ -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 index 0000000..0dc4293 --- /dev/null +++ b/vim/patches/vim-7.3.466.patch0 @@ -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 index 0000000..7764217 --- /dev/null +++ b/vim/patches/vim-7.3.467.patch0 @@ -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 index 0000000..e078f9e --- /dev/null +++ b/vim/patches/vim-7.3.468.patch0 @@ -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 index 0000000..77ca4a0 --- /dev/null +++ b/vim/patches/vim-7.3.469.patch0 @@ -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 index 0000000..80bec15 --- /dev/null +++ b/vim/patches/vim-7.3.470.patch0 @@ -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 index 0000000..be81432 --- /dev/null +++ b/vim/patches/vim-7.3.471.patch0 @@ -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 index 0000000..217b2fc --- /dev/null +++ b/vim/patches/vim-7.3.472.patch0 @@ -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 index 0000000..571f85d --- /dev/null +++ b/vim/patches/vim-7.3.473.patch0 @@ -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 index 0000000..dc6b1d6 --- /dev/null +++ b/vim/patches/vim-7.3.474.patch0 @@ -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 index 0000000..54c27a2 --- /dev/null +++ b/vim/patches/vim-7.3.475.patch0 @@ -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 index 0000000..959b906 --- /dev/null +++ b/vim/patches/vim-7.3.476.patch0 @@ -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 index 0000000..8030ee6 --- /dev/null +++ b/vim/patches/vim-7.3.477.patch0 @@ -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 index 0000000..bad69ef --- /dev/null +++ b/vim/patches/vim-7.3.478.patch0 @@ -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 index 0000000..fc256c1 --- /dev/null +++ b/vim/patches/vim-7.3.479.patch0 @@ -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 index 0000000..6d1e21d --- /dev/null +++ b/vim/patches/vim-7.3.480.patch0 @@ -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 index 0000000..69f6915 --- /dev/null +++ b/vim/patches/vim-7.3.481.patch0 @@ -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 index 0000000..56ff301 --- /dev/null +++ b/vim/patches/vim-7.3.482.patch0 @@ -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 index 0000000..bab488b --- /dev/null +++ b/vim/patches/vim-7.3.483.patch0 @@ -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 index 0000000..99968eb --- /dev/null +++ b/vim/patches/vim-7.3.484.patch0 @@ -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 index 0000000..46b4cb7 --- /dev/null +++ b/vim/patches/vim-7.3.485.patch0 @@ -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 index 0000000..44e2afe --- /dev/null +++ b/vim/patches/vim-7.3.486.patch0 @@ -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 index 0000000..3c00349 --- /dev/null +++ b/vim/patches/vim-7.3.487.patch0 @@ -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 index 0000000..e078740 --- /dev/null +++ b/vim/patches/vim-7.3.488.patch0 @@ -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 index 0000000..fbdf2c3 --- /dev/null +++ b/vim/patches/vim-7.3.489.patch0 @@ -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 index 0000000..6c49a48 --- /dev/null +++ b/vim/patches/vim-7.3.490.patch0 @@ -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 index 0000000..b675722 --- /dev/null +++ b/vim/patches/vim-7.3.491.patch0 @@ -0,0 +1,235 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.491 +Fcc: outbox +From: Bram Moolenaar Bram@moolenaar.net +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.491 +Problem: No tests for Lua. +Solution: Add some simple tests for Lua. (Luis Carvalho) +Files: src/testdir/test1.in, src/testdir/test85.in, src/testdir/test85.ok + src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, + src/testdir/Make_ming.mak, src/testdir/Make_os2.mak, + src/testdir/Make_vms.mms, src/testdir/Makefile + + +*** ../vim-7.3.490/src/testdir/test1.in 2010-08-15 21:57:29.000000000 +0200 +--- src/testdir/test1.in 2012-04-05 16:37:37.000000000 +0200 +*************** +*** 15,20 **** +--- 15,21 ---- + be set like small.vim above. mbyte.vim is sourced by tests that require the + +multi_byte feature. + Similar logic is applied to the +mzscheme feature, using mzscheme.vim. ++ Similar logic is applied to the +lua feature, using lua.vim. + + STARTTEST + :" Write a single line to test.out to check if testing works at all. +*************** +*** 28,37 **** +--- 29,45 ---- + qa! + :w! mbyte.vim + :w! mzscheme.vim ++ :w! lua.vim ++ :" + :" If +multi_byte feature supported, make mbyte.vim empty. + :if has("multi_byte") | sp another | w! mbyte.vim | q | endif ++ :" + :" If +mzscheme feature supported, make mzscheme.vim empty. + :if has("mzscheme") | sp another | w! mzscheme.vim | q | endif ++ :" ++ :" If +lua feature supported, make lua.vim empty. ++ :if has("lua") | sp another | w! lua.vim | q | endif ++ :" + :" If +eval feature supported quit here, leaving tiny.vim and small.vim empty. + :" Otherwise write small.vim to skip the test. + :if 1 | q! | endif +*** ../vim-7.3.490/src/testdir/test85.in 2012-04-05 16:56:12.000000000 +0200 +--- src/testdir/test85.in 2012-04-05 16:44:00.000000000 +0200 +*************** +*** 0 **** +--- 1,42 ---- ++ Test for Lua interface and luaeval() function ++ ++ STARTTEST ++ :so small.vim ++ :so lua.vim ++ :set nocompatible viminfo+=nviminfo ++ :lua l = vim.list():add"item0":add"dictionary with list OK":add"item2" ++ :lua h = vim.dict(); h.list = l ++ :call garbagecollect() ++ /^1 ++ :" change buffer contents ++ :lua curbuf = vim.buffer() ++ :lua curline = vim.eval"line('.')" ++ :lua curbuf[curline] = "1 changed line 1" ++ :" scalar test ++ :let tmp_string = luaeval('"string"') ++ :let tmp_1000 = luaeval('1000') ++ :if printf("%s%.0f", tmp_string, tmp_1000) == "string1000" ++ :let scalar_res = "OK" ++ :else ++ :let scalar_res = "FAILED" ++ :endif ++ :call append(search("^1"), "scalar test " . scalar_res) ++ :" dictionary containing a list ++ :let tmp = luaeval("h").list[1] ++ :/^2/put =tmp ++ :" circular list (at the same time test lists containing lists) ++ :lua l[2] = l ++ :let l2 = luaeval("h").list ++ :if l2[2] == l2 ++ :let res = "OK" ++ :else ++ :let res = "FAILED" ++ :endif ++ :call setline(search("^3"), "circular test " . res) ++ :?^1?,$w! test.out ++ :qa! ++ ENDTEST ++ ++ 1 line 1 ++ 2 line 2 ++ 3 line 3 +*** ../vim-7.3.490/src/testdir/test85.ok 2012-04-05 16:56:12.000000000 +0200 +--- src/testdir/test85.ok 2012-04-05 16:18:56.000000000 +0200 +*************** +*** 0 **** +--- 1,5 ---- ++ 1 changed line 1 ++ scalar test OK ++ 2 line 2 ++ dictionary with list OK ++ circular test OK +*** ../vim-7.3.490/src/testdir/Make_amiga.mak 2012-03-28 19:58:34.000000000 +0200 +--- src/testdir/Make_amiga.mak 2012-04-05 16:21:55.000000000 +0200 +*************** +*** 13,18 **** +--- 13,19 ---- + # test25 uses symbolic link + # test27 can't edit file with "*" + # test52 only for Win32 ++ # test85 no Lua interface + + SCRIPTS = test1.out test3.out test4.out test5.out test6.out \ + test7.out test8.out test9.out \ +*** ../vim-7.3.490/src/testdir/Make_dos.mak 2012-03-28 19:58:34.000000000 +0200 +--- src/testdir/Make_dos.mak 2012-04-05 16:22:16.000000000 +0200 +*************** +*** 30,36 **** + test68.out test69.out test71.out test72.out test73.out \ + test74.out test75.out test76.out test77.out test78.out \ + test79.out test80.out test81.out test82.out test83.out \ +! test84.out + + SCRIPTS32 = test50.out test70.out + +--- 30,36 ---- + test68.out test69.out test71.out test72.out test73.out \ + test74.out test75.out test76.out test77.out test78.out \ + test79.out test80.out test81.out test82.out test83.out \ +! test84.out test85.out + + SCRIPTS32 = test50.out test70.out + +*** ../vim-7.3.490/src/testdir/Make_ming.mak 2012-03-28 19:58:34.000000000 +0200 +--- src/testdir/Make_ming.mak 2012-04-05 16:22:25.000000000 +0200 +*************** +*** 50,56 **** + test68.out test69.out test71.out test72.out test73.out \ + test74.out test75.out test76.out test77.out test78.out \ + test79.out test80.out test81.out test82.out test83.out \ +! test84.out + + SCRIPTS32 = test50.out test70.out + +--- 50,56 ---- + test68.out test69.out test71.out test72.out test73.out \ + test74.out test75.out test76.out test77.out test78.out \ + test79.out test80.out test81.out test82.out test83.out \ +! test84.out test85.out + + SCRIPTS32 = test50.out test70.out + +*** ../vim-7.3.490/src/testdir/Make_os2.mak 2012-03-28 19:58:34.000000000 +0200 +--- src/testdir/Make_os2.mak 2012-04-05 16:22:38.000000000 +0200 +*************** +*** 13,18 **** +--- 13,19 ---- + # test25 uses symbolic link + # test27 can't edit file with "*" in file name + # test52 only for Win32 ++ # test85 no Lua interface + + SCRIPTS = test1.out test3.out test4.out test5.out test6.out \ + test7.out test8.out test9.out \ +*** ../vim-7.3.490/src/testdir/Make_vms.mms 2012-03-28 19:58:34.000000000 +0200 +--- src/testdir/Make_vms.mms 2012-04-05 16:23:08.000000000 +0200 +*************** +*** 4,10 **** + # Authors: Zoltan Arpadffy, arpadffy@polarhome.com + # Sandor Kopanyi, sandor.kopanyi@mailbox.hu + # +! # Last change: 2012 Mar 28 + # + # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64. + # Edit the lines in the Configuration section below to select. +--- 4,10 ---- + # Authors: Zoltan Arpadffy, arpadffy@polarhome.com + # Sandor Kopanyi, sandor.kopanyi@mailbox.hu + # +! # Last change: 2012 Apr 05 + # + # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64. + # Edit the lines in the Configuration section below to select. +*************** +*** 89,94 **** +--- 89,95 ---- + # with too many dots). + # + # Test 72: unknown reason ++ # Test 85: no Lua interface + + .IFDEF WANT_GUI + SCRIPT_GUI = test16.out +*** ../vim-7.3.490/src/testdir/Makefile 2012-03-28 19:58:34.000000000 +0200 +--- src/testdir/Makefile 2012-04-05 16:21:13.000000000 +0200 +*************** +*** 27,33 **** + test69.out test70.out test71.out test72.out test73.out \ + test74.out test75.out test76.out test77.out test78.out \ + test79.out test80.out test81.out test82.out test83.out \ +! test84.out + + SCRIPTS_GUI = test16.out + +--- 27,33 ---- + test69.out test70.out test71.out test72.out test73.out \ + test74.out test75.out test76.out test77.out test78.out \ + test79.out test80.out test81.out test82.out test83.out \ +! test84.out test85.out + + SCRIPTS_GUI = test16.out + +*** ../vim-7.3.490/src/version.c 2012-04-05 16:53:56.000000000 +0200 +--- src/version.c 2012-04-05 16:55:27.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 491, + /**/ + +-- +You had connectors? Eeee, when I were a lad we 'ad to carry the +bits between the computer and the terminal with a spoon... + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\ +\\ an exciting new programming language -- http://www.Zimbu.org /// + \\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/vim/patches/vim-7.3.492.patch0 b/vim/patches/vim-7.3.492.patch0 new file mode 100644 index 0000000..b32b6f6 --- /dev/null +++ b/vim/patches/vim-7.3.492.patch0 @@ -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 index 0000000..ff662b2 --- /dev/null +++ b/vim/patches/vim-7.3.493.patch0 @@ -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 index 0000000..81bd24b --- /dev/null +++ b/vim/patches/vim-7.3.494.patch0 @@ -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 index 0000000..54c2306 --- /dev/null +++ b/vim/patches/vim-7.3.495.patch0 @@ -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 index 0000000..8b11051 --- /dev/null +++ b/vim/patches/vim-7.3.496.patch0 @@ -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 index 0000000..5cbffc4 --- /dev/null +++ b/vim/patches/vim-7.3.497.patch0 @@ -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 index 0000000..aa9c621 --- /dev/null +++ b/vim/patches/vim-7.3.498.patch0 @@ -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 index 0000000..4e45e4f --- /dev/null +++ b/vim/patches/vim-7.3.499.patch0 @@ -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 index 0000000..b3b6a37 --- /dev/null +++ b/vim/patches/vim-7.3.500.patch0 @@ -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 index 0000000..a74b028 --- /dev/null +++ b/vim/patches/vim-7.3.501.patch0 @@ -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 index 0000000..c9710ab --- /dev/null +++ b/vim/patches/vim-7.3.502.patch0 @@ -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 index 0000000..5b776ae --- /dev/null +++ b/vim/patches/vim-7.3.503.patch0 @@ -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 index 0000000..7522790 --- /dev/null +++ b/vim/patches/vim-7.3.504.patch0 @@ -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 index 0000000..1a8a7ea --- /dev/null +++ b/vim/patches/vim-7.3.505.patch0 @@ -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 index 0000000..32be6fd --- /dev/null +++ b/vim/patches/vim-7.3.506.patch0 @@ -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 index 0000000..c96561c --- /dev/null +++ b/vim/patches/vim-7.3.507.patch0 @@ -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 index 0000000..7b8e7b2 --- /dev/null +++ b/vim/patches/vim-7.3.508.patch0 @@ -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 index 0000000..8dfe9c0 --- /dev/null +++ b/vim/patches/vim-7.3.509.patch0 @@ -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 index 0000000..afe1041 --- /dev/null +++ b/vim/patches/vim-7.3.510.patch0 @@ -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 index 0000000..a2b6dce --- /dev/null +++ b/vim/patches/vim-7.3.511.patch0 @@ -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 index 0000000..838ae3e --- /dev/null +++ b/vim/patches/vim-7.3.512.patch0 @@ -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 index 0000000..396969f --- /dev/null +++ b/vim/patches/vim-7.3.513.patch0 @@ -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 index 0000000..79620f0 --- /dev/null +++ b/vim/patches/vim-7.3.514.patch0 @@ -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 index 0000000..dad6f61 --- /dev/null +++ b/vim/patches/vim-7.3.515.patch0 @@ -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 index 0000000..d43be5a --- /dev/null +++ b/vim/patches/vim-7.3.516.patch0 @@ -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 index 0000000..343693b --- /dev/null +++ b/vim/patches/vim-7.3.517.patch0 @@ -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 index 0000000..89429f0 --- /dev/null +++ b/vim/patches/vim-7.3.518.patch0 @@ -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 index 0000000..846cea6 --- /dev/null +++ b/vim/patches/vim-7.3.519.patch0 @@ -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 index 0000000..9e2da8d --- /dev/null +++ b/vim/patches/vim-7.3.520.patch0 @@ -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 index 0000000..efe7122 --- /dev/null +++ b/vim/patches/vim-7.3.521.patch0 @@ -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 index 0000000..2f4d17c --- /dev/null +++ b/vim/patches/vim-7.3.522.patch0 @@ -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 index 0000000..7eec3ea --- /dev/null +++ b/vim/patches/vim-7.3.523.patch0 @@ -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 index 0000000..80d7baf --- /dev/null +++ b/vim/patches/vim-7.3.524.patch0 @@ -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 index 0000000..c9741cb --- /dev/null +++ b/vim/patches/vim-7.3.525.patch0 @@ -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 index 0000000..036d401 --- /dev/null +++ b/vim/patches/vim-7.3.526.patch0 @@ -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 index 0000000..0c6af2b --- /dev/null +++ b/vim/patches/vim-7.3.527.patch0 @@ -0,0 +1,59 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.527 +Fcc: outbox +From: Bram Moolenaar Bram@moolenaar.net +Mime-Version: 1.0 +Content-Type: text/plain; charset=latin1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.527 +Problem: Clang complains about non-ASCII characters in a string. +Solution: Change to \x88 form. (Dominique Pelle) +Files: src/charset.c + + +*** ../vim-7.3.526/src/charset.c 2012-01-26 13:40:04.000000000 +0100 +--- src/charset.c 2012-05-25 11:49:58.000000000 +0200 +*************** +*** 1602,1611 **** + #define LATIN1LOWER 'l' + #define LATIN1UPPER 'U' + +- /* !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]%_'abcdefghijklmnopqrstuvwxyz{|}~ ¡¢£€¥Š§š©ª«¬®¯°±²³Žµ¶·ž¹º»ŒœŸ¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ */ + static char_u latin1flags[257] = " UUUUUUUUUUUUUUUUUUUUUUUUUU llllllllllllllllllllllllll UUUUUUUUUUUUUUUUUUUUUUU UUUUUUUllllllllllllllllllllllll llllllll"; +! static char_u latin1upper[257] = " !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~ ¡¢£€¥Š§š©ª«¬®¯°±²³Žµ¶·ž¹º»ŒœŸ¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ÷ØÙÚÛÜÝÞÿ"; +! static char_u latin1lower[257] = " !"#$%&'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ ¡¢£€¥Š§š©ª«¬®¯°±²³Žµ¶·ž¹º»ŒœŸ¿àáâãäåæçèéêëìíîïðñòóôõö×øùúûüýþßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ"; + + int + vim_islower(c) +--- 1602,1610 ---- + #define LATIN1LOWER 'l' + #define LATIN1UPPER 'U' + + static char_u latin1flags[257] = " UUUUUUUUUUUUUUUUUUUUUUUUUU llllllllllllllllllllllllll UUUUUUUUUUUUUUUUUUUUUUU UUUUUUUllllllllllllllllllllllll llllllll"; +! static char_u latin1upper[257] = " !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~\x7f\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xf7\xd8\xd9\xda\xdb\xdc\xdd\xde\xff"; +! static char_u latin1lower[257] = " !"#$%&'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xd7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff"; + + int + vim_islower(c) +*** ../vim-7.3.526/src/version.c 2012-05-25 11:04:34.000000000 +0200 +--- src/version.c 2012-05-25 11:52:06.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 527, + /**/ + +-- +An alien life briefly visits earth. Just before departing it leaves a +message in the dust on the back of a white van. The world is shocked +and wants to know what it means. After months of studies the worlds +best linguistic scientists are able to decipher the message: "Wash me!". + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\ +\\ an exciting new programming language -- http://www.Zimbu.org /// + \\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/vim/patches/vim-7.3.528.patch0 b/vim/patches/vim-7.3.528.patch0 new file mode 100644 index 0000000..41084ad --- /dev/null +++ b/vim/patches/vim-7.3.528.patch0 @@ -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 index 0000000..386baf1 --- /dev/null +++ b/vim/patches/vim-7.3.529.patch0 @@ -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 index 0000000..216117c --- /dev/null +++ b/vim/patches/vim-7.3.530.patch0 @@ -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 index 0000000..652bdb7 --- /dev/null +++ b/vim/patches/vim-7.3.531.patch0 @@ -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 index 0000000..071cab3 --- /dev/null +++ b/vim/patches/vim-7.3.532.patch0 @@ -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 index 0000000..1d71c8d --- /dev/null +++ b/vim/patches/vim-7.3.533.patch0 @@ -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 index 0000000..618d6e4 --- /dev/null +++ b/vim/patches/vim-7.3.534.patch0 @@ -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 index 0000000..e7f0f8a --- /dev/null +++ b/vim/patches/vim-7.3.535.patch0 @@ -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 index 0000000..e0c3f76 --- /dev/null +++ b/vim/patches/vim-7.3.536.patch0 @@ -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 index 0000000..76b41c8 --- /dev/null +++ b/vim/patches/vim-7.3.537.patch0 @@ -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 index 0000000..947fa65 --- /dev/null +++ b/vim/patches/vim-7.3.538.patch0 @@ -0,0 +1,321 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.538 +Fcc: outbox +From: Bram Moolenaar Bram@moolenaar.net +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.538 +Problem: 'efm' does not handle Tabs in pointer lines. +Solution: Add Tab support. Improve tests. (Lech Lorens) +Files: src/quickfix.c, src/testdir/test10.in, src/testdir/test10.ok + + +*** ../vim-7.3.537/src/quickfix.c 2012-04-25 18:57:17.000000000 +0200 +--- src/quickfix.c 2012-06-01 18:24:07.000000000 +0200 +*************** +*** 247,253 **** + {'t', "."}, + {'m', ".\+"}, + {'r', ".*"}, +! {'p', "[- .]*"}, + {'v', "\d\+"}, + {'s', ".\+"} + }; +--- 247,253 ---- + {'t', "."}, + {'m', ".\+"}, + {'r', ".*"}, +! {'p', "[- .]*"}, + {'v', "\d\+"}, + {'s', ".\+"} + }; +*************** +*** 677,687 **** + } + if ((i = (int)fmt_ptr->addr[7]) > 0) /* %p */ + { + if (regmatch.startp[i] == NULL || regmatch.endp[i] == NULL) + continue; +! col = (int)(regmatch.endp[i] - regmatch.startp[i] + 1); +! if (*((char_u *)regmatch.startp[i]) != TAB) +! use_viscol = TRUE; + } + if ((i = (int)fmt_ptr->addr[8]) > 0) /* %v */ + { +--- 677,699 ---- + } + if ((i = (int)fmt_ptr->addr[7]) > 0) /* %p */ + { ++ char_u *match_ptr; ++ + if (regmatch.startp[i] == NULL || regmatch.endp[i] == NULL) + continue; +! col = 0; +! for (match_ptr = regmatch.startp[i]; +! match_ptr != regmatch.endp[i]; ++match_ptr) +! { +! ++col; +! if (*match_ptr == TAB) +! { +! col += 7; +! col -= col % 8; +! } +! } +! ++col; +! use_viscol = TRUE; + } + if ((i = (int)fmt_ptr->addr[8]) > 0) /* %v */ + { +*** ../vim-7.3.537/src/testdir/test10.in 2011-08-10 18:36:49.000000000 +0200 +--- src/testdir/test10.in 2012-06-01 18:22:40.000000000 +0200 +*************** +*** 8,48 **** + :7/start of errorfile/,/end of errorfile/w! Xerrorfile1 + :7/start of errorfile/,/end of errorfile/-1w! Xerrorfile2 + :/start of testfile/,/end of testfile/w! Xtestfile + :cf Xerrorfile2 + :clast + :copen + :let a=w:quickfix_title + :wincmd p +! gR=a + :cf Xerrorfile1 +! rA + :cn +! rB + :cn +! rC + :cn +! rD + :cn +! rE + :cn + :wincmd w + :let a=w:quickfix_title + :wincmd p +! gR=a + :w! test.out " Write contents of this file + :qa! + ENDTEST + + start of errorfile + "Xtestfile", line 4.12: 1506-045 (S) Undeclared identifier fd_set. +! "Xtestfile", line 7 col 19; this is an error + gcc -c -DHAVE_CONFIsing-prototypes -I/usr/X11R6/include version.c +! Xtestfile:13: parse error before `asd' + make: *** [vim] Error 1 +! in file "Xtestfile" linenr 16: there is an error + + 2 returned +! "Xtestfile", linenr 19: yet another problem + + Does anyone know what is the problem and how to correction it? + "Xtestfile", line 21 col 9: What is the title of the quickfix window? +--- 8,88 ---- + :7/start of errorfile/,/end of errorfile/w! Xerrorfile1 + :7/start of errorfile/,/end of errorfile/-1w! Xerrorfile2 + :/start of testfile/,/end of testfile/w! Xtestfile ++ :set efm+==%f=\,\ line\ %l%*\D%v%*[^\ ]\ %m ++ :set efm^=%AError\ in\ "%f"\ at\ line\ %l:,%Z%p^,%C%m + :cf Xerrorfile2 + :clast + :copen + :let a=w:quickfix_title + :wincmd p +! lgR=a + :cf Xerrorfile1 +! grA + :cn +! gRLINE 6, COL 19 + :cn +! gRNO COLUMN SPECIFIED + :cn +! gRAGAIN NO COLUMN + :cn +! gRCOL 1 + :cn ++ gRCOL 2 ++ :cn ++ gRCOL 10 ++ :cn ++ gRVCOL 10 ++ :cn ++ grI ++ :cn ++ gR. SPACE POINTER ++ :cn ++ gR. DOT POINTER ++ :cn ++ gR. DASH POINTER ++ :cn ++ gR. TAB-SPACE POINTER ++ :clast ++ :cprev ++ :cprev + :wincmd w + :let a=w:quickfix_title + :wincmd p +! lgR=a + :w! test.out " Write contents of this file + :qa! + ENDTEST + + start of errorfile + "Xtestfile", line 4.12: 1506-045 (S) Undeclared identifier fd_set. +! "Xtestfile", line 6 col 19; this is an error + gcc -c -DHAVE_CONFIsing-prototypes -I/usr/X11R6/include version.c +! Xtestfile:9: parse error before `asd' + make: *** [vim] Error 1 +! in file "Xtestfile" linenr 10: there is an error + + 2 returned +! "Xtestfile", line 11 col 1; this is an error +! "Xtestfile", line 12 col 2; this is another error +! "Xtestfile", line 14:10; this is an error in column 10 +! =Xtestfile=, line 15:10; this is another error, but in vcol 10 this time +! "Xtestfile", linenr 16: yet another problem +! Error in "Xtestfile" at line 17: +! x should be a dot +! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 17 +! ^ +! Error in "Xtestfile" at line 18: +! x should be a dot +! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 18 +! .............^ +! Error in "Xtestfile" at line 19: +! x should be a dot +! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 19 +! --------------^ +! Error in "Xtestfile" at line 20: +! x should be a dot +! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 20 +! ^ + + Does anyone know what is the problem and how to correction it? + "Xtestfile", line 21 col 9: What is the title of the quickfix window? +*************** +*** 50,74 **** + end of errorfile + + start of testfile +! line 2 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +! line 3 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +! line 4 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +! line 5 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +! line 6 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +! line 7 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +! line 8 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +! line 9 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +! line 10 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +! line 11 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +! line 12 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +! line 13 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +! line 14 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +! line 15 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +! line 16 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +! line 17 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +! line 18 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +! line 19 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +! line 20 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +! line 21 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +! line 22 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + end of testfile +--- 90,114 ---- + end of errorfile + + start of testfile +! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 2 +! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 3 +! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 4 +! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 5 +! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 6 +! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 7 +! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 8 +! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 9 +! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 10 +! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 11 +! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 12 +! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 13 +! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 14 +! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 15 +! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 16 +! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 17 +! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 18 +! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 19 +! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 20 +! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 21 +! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 22 + end of testfile +*** ../vim-7.3.537/src/testdir/test10.ok 2011-08-10 18:36:49.000000000 +0200 +--- src/testdir/test10.ok 2012-06-01 18:22:40.000000000 +0200 +*************** +*** 1,23 **** + start of testfile +! line 2 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +! line 3 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +! line 4 xxxAxxxxxxxxxxxxxxxxxxxxxxxxxx +! line 5 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +! line 6 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +! line 7 xxxxxxxxxxBxxxxxxxxxxxxxxxxxxx +! line 8 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +! line 9 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +! line 10 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +! line 11 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +! line 12 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +! Cine 13 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +! line 14 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +! line 15 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +! Dine 16 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +! line 17 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +! line 18 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +! Eine 19 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +! line 20 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +! line 21 :cf Xerrorfile1xxxxxxxxxxxxxxx +! line 22 :cf Xerrorfile2xxxxxxxxxxxxxxx + end of testfile +--- 1,23 ---- + start of testfile +! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 2 +! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 3 +! xxxxxxxxxxAxxxxxxxxxxxxxxxxxxx line 4 +! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 5 +! xxxxxxxxxxxxxxxxxLINE 6, COL 19 line 6 +! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 7 +! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 8 +! NO COLUMN SPECIFIEDxxxxxxxxxxx line 9 +! AGAIN NO COLUMNxxxxxxxxxxxxxxx line 10 +! COL 1 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 11 +! COL 2xxxxxxxxxxxxxxxxxxxxxxxxx line 12 +! xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 13 +! xxxxxxxxCOL 10xxxxxxxxxxxxxxxx line 14 +! xVCOL 10xxxxxxxxxxxxxxxxxxxxxx line 15 +! Ixxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 16 +! xxxx. SPACE POINTERxxxxxxxxxxx line 17 +! xxxxx. DOT POINTERxxxxxxxxxxxx line 18 +! xxxxxx. DASH POINTERxxxxxxxxxx line 19 +! xxxxxxx. TAB-SPACE POINTERxxxx line 20 +! xxxxxxxx:cf Xerrorfile1xxxxxxx line 21 +! xxxxxxxx:cf Xerrorfile2xxxxxxx line 22 + end of testfile +*** ../vim-7.3.537/src/version.c 2012-06-01 17:49:51.000000000 +0200 +--- src/version.c 2012-06-01 18:22:27.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 538, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +18. Your wife drapes a blond wig over your monitor to remind you of what she + looks like. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\ +\\ an exciting new programming language -- http://www.Zimbu.org /// + \\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/vim/patches/vim-7.3.539.patch0 b/vim/patches/vim-7.3.539.patch0 new file mode 100644 index 0000000..267c076 --- /dev/null +++ b/vim/patches/vim-7.3.539.patch0 @@ -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 index 0000000..6793eb4 --- /dev/null +++ b/vim/patches/vim-7.3.540.patch0 @@ -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 index 0000000..133b82d --- /dev/null +++ b/vim/patches/vim-7.3.541.patch0 @@ -0,0 +1,1090 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.541 +Fcc: outbox +From: Bram Moolenaar Bram@moolenaar.net +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.541 +Problem: When joining lines comment leaders need to be removed manually. +Solution: Add the 'j' flag to 'formatoptions'. (Lech Lorens) +Files: runtime/doc/change.txt, src/edit.c, src/ex_docmd.c, src/misc1.c, + src/normal.c, src/ops.c, src/option.h, src/proto/misc1.pro, + src/proto/ops.pro, src/search.c, src/testdir/test29.in, + src/testdir/test29.ok + + +*** ../vim-7.3.540/runtime/doc/change.txt 2011-05-05 14:26:37.000000000 +0200 +--- runtime/doc/change.txt 2012-06-06 13:05:04.000000000 +0200 +*************** +*** 1495,1500 **** +--- 1522,1533 ---- + characters. Overruled by the 'M' flag. + 1 Don't break a line after a one-letter word. It's broken before it + instead (if possible). ++ j Where it makes sense, remove a comment leader when joining lines. For ++ example, joining: ++ int i; // the index ~ ++ // in the list ~ ++ Becomes: ++ int i; // the index in the list ~ + + + With 't' and 'c' you can specify when Vim performs auto-wrapping: +*** ../vim-7.3.540/src/edit.c 2012-06-01 15:20:49.000000000 +0200 +--- src/edit.c 2012-06-06 13:00:29.000000000 +0200 +*************** +*** 5847,5853 **** + * Need to remove existing (middle) comment leader and insert end + * comment leader. First, check what comment leader we can find. + */ +! i = get_leader_len(line = ml_get_curline(), &p, FALSE); + if (i > 0 && vim_strchr(p, COM_MIDDLE) != NULL) /* Just checking */ + { + /* Skip middle-comment string */ +--- 5847,5853 ---- + * Need to remove existing (middle) comment leader and insert end + * comment leader. First, check what comment leader we can find. + */ +! i = get_leader_len(line = ml_get_curline(), &p, FALSE, TRUE); + if (i > 0 && vim_strchr(p, COM_MIDDLE) != NULL) /* Just checking */ + { + /* Skip middle-comment string */ +*************** +*** 6085,6091 **** + + /* Don't break until after the comment leader */ + if (do_comments) +! leader_len = get_leader_len(ml_get_curline(), NULL, FALSE); + else + leader_len = 0; + +--- 6085,6091 ---- + + /* Don't break until after the comment leader */ + if (do_comments) +! leader_len = get_leader_len(ml_get_curline(), NULL, FALSE, TRUE); + else + leader_len = 0; + +*************** +*** 6411,6417 **** + /* With the 'c' flag in 'formatoptions' and 't' missing: only format + * comments. */ + if (has_format_option(FO_WRAP_COMS) && !has_format_option(FO_WRAP) +! && get_leader_len(old, NULL, FALSE) == 0) + return; + #endif + +--- 6411,6417 ---- + /* With the 'c' flag in 'formatoptions' and 't' missing: only format + * comments. */ + if (has_format_option(FO_WRAP_COMS) && !has_format_option(FO_WRAP) +! && get_leader_len(old, NULL, FALSE, TRUE) == 0) + return; + #endif + +*************** +*** 8565,8571 **** + { + temp = curwin->w_cursor.col; + if (!can_bs(BS_EOL) /* only if "eol" included */ +! || do_join(2, FALSE, TRUE) == FAIL) + vim_beep(); + else + curwin->w_cursor.col = temp; +--- 8565,8571 ---- + { + temp = curwin->w_cursor.col; + if (!can_bs(BS_EOL) /* only if "eol" included */ +! || do_join(2, FALSE, TRUE, FALSE) == FAIL) + vim_beep(); + else + curwin->w_cursor.col = temp; +*************** +*** 8746,8752 **** + ptr[len - 1] = NUL; + } + +! (void)do_join(2, FALSE, FALSE); + if (temp == NUL && gchar_cursor() != NUL) + inc_cursor(); + } +--- 8746,8752 ---- + ptr[len - 1] = NUL; + } + +! (void)do_join(2, FALSE, FALSE, FALSE); + if (temp == NUL && gchar_cursor() != NUL) + inc_cursor(); + } +*** ../vim-7.3.540/src/ex_docmd.c 2012-04-30 18:48:38.000000000 +0200 +--- src/ex_docmd.c 2012-06-06 13:00:29.000000000 +0200 +*************** +*** 8545,8551 **** + } + ++eap->line2; + } +! (void)do_join(eap->line2 - eap->line1 + 1, !eap->forceit, TRUE); + beginline(BL_WHITE | BL_FIX); + ex_may_print(eap); + } +--- 8545,8551 ---- + } + ++eap->line2; + } +! (void)do_join(eap->line2 - eap->line1 + 1, !eap->forceit, TRUE, TRUE); + beginline(BL_WHITE | BL_FIX); + ex_may_print(eap); + } +*** ../vim-7.3.540/src/misc1.c 2012-06-01 15:20:49.000000000 +0200 +--- src/misc1.c 2012-06-06 13:27:32.000000000 +0200 +*************** +*** 671,677 **** + ptr = saved_line; + # ifdef FEAT_COMMENTS + if (flags & OPENLINE_DO_COM) +! lead_len = get_leader_len(ptr, NULL, FALSE); + else + lead_len = 0; + # endif +--- 671,677 ---- + ptr = saved_line; + # ifdef FEAT_COMMENTS + if (flags & OPENLINE_DO_COM) +! lead_len = get_leader_len(ptr, NULL, FALSE, TRUE); + else + lead_len = 0; + # endif +*************** +*** 693,699 **** + } + # ifdef FEAT_COMMENTS + if (flags & OPENLINE_DO_COM) +! lead_len = get_leader_len(ptr, NULL, FALSE); + else + lead_len = 0; + if (lead_len > 0) +--- 693,699 ---- + } + # ifdef FEAT_COMMENTS + if (flags & OPENLINE_DO_COM) +! lead_len = get_leader_len(ptr, NULL, FALSE, TRUE); + else + lead_len = 0; + if (lead_len > 0) +*************** +*** 836,842 **** + */ + end_comment_pending = NUL; + if (flags & OPENLINE_DO_COM) +! lead_len = get_leader_len(saved_line, &lead_flags, dir == BACKWARD); + else + lead_len = 0; + if (lead_len > 0) +--- 836,842 ---- + */ + end_comment_pending = NUL; + if (flags & OPENLINE_DO_COM) +! lead_len = get_leader_len(saved_line, &lead_flags, dir == BACKWARD, TRUE); + else + lead_len = 0; + if (lead_len > 0) +*************** +*** 1548,1561 **** + * When "flags" is not NULL, it is set to point to the flags of the recognized + * comment leader. + * "backward" must be true for the "O" command. + */ + int +! get_leader_len(line, flags, backward) + char_u *line; + char_u **flags; + int backward; + { + int i, j; + int got_com = FALSE; + int found_one; + char_u part_buf[COM_MAX_LEN]; /* buffer for one option part */ +--- 1548,1565 ---- + * When "flags" is not NULL, it is set to point to the flags of the recognized + * comment leader. + * "backward" must be true for the "O" command. ++ * If "include_space" is set, include trailing whitespace while calculating the ++ * length. + */ + int +! get_leader_len(line, flags, backward, include_space) + char_u *line; + char_u **flags; + int backward; ++ int include_space; + { + int i, j; ++ int result; + int got_com = FALSE; + int found_one; + char_u part_buf[COM_MAX_LEN]; /* buffer for one option part */ +*************** +*** 1565,1571 **** + char_u *prev_list; + char_u *saved_flags = NULL; + +! i = 0; + while (vim_iswhite(line[i])) /* leading white space is ignored */ + ++i; + +--- 1569,1575 ---- + char_u *prev_list; + char_u *saved_flags = NULL; + +! result = i = 0; + while (vim_iswhite(line[i])) /* leading white space is ignored */ + ++i; + +*************** +*** 1668,1684 **** + if (!found_one) + break; + + /* Include any trailing white space. */ + while (vim_iswhite(line[i])) + ++i; + + /* If this comment doesn't nest, stop here. */ + got_com = TRUE; + if (vim_strchr(part_buf, COM_NEST) == NULL) + break; + } + +! return (got_com ? i : 0); + } + #endif + +--- 1672,1838 ---- + if (!found_one) + break; + ++ result = i; ++ + /* Include any trailing white space. */ + while (vim_iswhite(line[i])) + ++i; + ++ if (include_space) ++ result = i; ++ + /* If this comment doesn't nest, stop here. */ + got_com = TRUE; + if (vim_strchr(part_buf, COM_NEST) == NULL) + break; + } ++ return result; ++ } ++ ++ /* ++ * Return the offset at which the last comment in line starts. If there is no ++ * comment in the whole line, -1 is returned. ++ * ++ * When "flags" is not null, it is set to point to the flags describing the ++ * recognized comment leader. ++ */ ++ int ++ get_last_leader_offset(line, flags) ++ char_u *line; ++ char_u **flags; ++ { ++ int result = -1; ++ int i, j; ++ int lower_check_bound = 0; ++ char_u *string; ++ char_u *com_leader; ++ char_u *com_flags; ++ char_u *list; ++ int found_one; ++ char_u part_buf[COM_MAX_LEN]; /* buffer for one option part */ ++ ++ /* ++ * Repeat to match several nested comment strings. ++ */ ++ i = (int)STRLEN(line); ++ while (--i >= lower_check_bound) ++ { ++ /* ++ * scan through the 'comments' option for a match ++ */ ++ found_one = FALSE; ++ for (list = curbuf->b_p_com; *list; ) ++ { ++ char_u *flags_save = list; ++ ++ /* ++ * Get one option part into part_buf[]. Advance list to next one. ++ * put string at start of string. ++ */ ++ (void)copy_option_part(&list, part_buf, COM_MAX_LEN, ","); ++ string = vim_strchr(part_buf, ':'); ++ if (string == NULL) /* If everything is fine, this cannot actually ++ * happen. */ ++ { ++ continue; ++ } ++ *string++ = NUL; /* Isolate flags from string. */ ++ com_leader = string; ++ ++ /* ++ * Line contents and string must match. ++ * When string starts with white space, must have some white space ++ * (but the amount does not need to match, there might be a mix of ++ * TABs and spaces). ++ */ ++ if (vim_iswhite(string[0])) ++ { ++ if (i == 0 || !vim_iswhite(line[i - 1])) ++ continue; ++ while (vim_iswhite(string[0])) ++ ++string; ++ } ++ for (j = 0; string[j] != NUL && string[j] == line[i + j]; ++j) ++ /* do nothing */; ++ if (string[j] != NUL) ++ continue; ++ ++ /* ++ * When 'b' flag used, there must be white space or an ++ * end-of-line after the string in the line. ++ */ ++ if (vim_strchr(part_buf, COM_BLANK) != NULL ++ && !vim_iswhite(line[i + j]) && line[i + j] != NUL) ++ { ++ continue; ++ } ++ ++ /* ++ * We have found a match, stop searching. ++ */ ++ found_one = TRUE; ++ ++ if (flags) ++ *flags = flags_save; ++ com_flags = flags_save; ++ ++ break; ++ } + +! if (found_one) +! { +! char_u part_buf2[COM_MAX_LEN]; /* buffer for one option part */ +! int len1, len2, off; +! +! result = i; +! /* +! * If this comment nests, continue searching. +! */ +! if (vim_strchr(part_buf, COM_NEST) != NULL) +! continue; +! +! lower_check_bound = i; +! +! /* Let's verify whether the comment leader found is a substring +! * of other comment leaders. If it is, let's adjust the +! * lower_check_bound so that we make sure that we have determined +! * the comment leader correctly. +! */ +! +! while (vim_iswhite(*com_leader)) +! ++com_leader; +! len1 = (int)STRLEN(com_leader); +! +! for (list = curbuf->b_p_com; *list; ) +! { +! char_u *flags_save = list; +! +! (void)copy_option_part(&list, part_buf2, COM_MAX_LEN, ","); +! if (flags_save == com_flags) +! continue; +! string = vim_strchr(part_buf2, ':'); +! ++string; +! while (vim_iswhite(*string)) +! ++string; +! len2 = (int)STRLEN(string); +! if (len2 == 0) +! continue; +! +! /* Now we have to verify whether string ends with a substring +! * beginning the com_leader. */ +! for (off = (len2 > i ? i : len2); off > 0 && off + len1 > len2;) +! { +! --off; +! if (!STRNCMP(string + off, com_leader, len2 - off)) +! { +! if (i - off < lower_check_bound) +! lower_check_bound = i - off; +! } +! } +! } +! } +! } +! return result; + } + #endif + +*** ../vim-7.3.540/src/normal.c 2012-05-25 13:12:33.000000000 +0200 +--- src/normal.c 2012-06-06 13:00:29.000000000 +0200 +*************** +*** 1968,1974 **** + beep_flush(); + else + { +! (void)do_join(oap->line_count, oap->op_type == OP_JOIN, TRUE); + auto_format(FALSE, TRUE); + } + break; +--- 1968,1974 ---- + beep_flush(); + else + { +! (void)do_join(oap->line_count, oap->op_type == OP_JOIN, TRUE, TRUE); + auto_format(FALSE, TRUE); + } + break; +*************** +*** 4426,4432 **** + break; + } + #ifdef FEAT_COMMENTS +! if (get_leader_len(ml_get_curline(), NULL, FALSE) > 0) + { + /* Ignore this line, continue at start of next line. */ + ++curwin->w_cursor.lnum; +--- 4426,4432 ---- + break; + } + #ifdef FEAT_COMMENTS +! if (get_leader_len(ml_get_curline(), NULL, FALSE, TRUE) > 0) + { + /* Ignore this line, continue at start of next line. */ + ++curwin->w_cursor.lnum; +*************** +*** 9324,9330 **** + { + prep_redo(cap->oap->regname, cap->count0, + NUL, cap->cmdchar, NUL, NUL, cap->nchar); +! (void)do_join(cap->count0, cap->nchar == NUL, TRUE); + } + } + } +--- 9324,9330 ---- + { + prep_redo(cap->oap->regname, cap->count0, + NUL, cap->cmdchar, NUL, NUL, cap->nchar); +! (void)do_join(cap->count0, cap->nchar == NUL, TRUE, TRUE); + } + } + } +*** ../vim-7.3.540/src/ops.c 2012-05-18 12:49:33.000000000 +0200 +--- src/ops.c 2012-06-06 15:43:31.000000000 +0200 +*************** +*** 112,117 **** +--- 112,120 ---- + # endif + #endif + static void dis_msg __ARGS((char_u *p, int skip_esc)); ++ #if defined(FEAT_COMMENTS) || defined(PROTO) ++ static char_u *skip_comment __ARGS((char_u *line, int process, int include_space, int *is_comment)); ++ #endif + #ifdef FEAT_VISUAL + static void block_prep __ARGS((oparg_T *oap, struct block_def *, linenr_T, int)); + #endif +*************** +*** 1987,1993 **** + curwin->w_cursor = curpos; /* restore curwin->w_cursor */ + } + if (curwin->w_cursor.lnum < curbuf->b_ml.ml_line_count) +! (void)do_join(2, FALSE, FALSE); + } + } + +--- 1990,1996 ---- + curwin->w_cursor = curpos; /* restore curwin->w_cursor */ + } + if (curwin->w_cursor.lnum < curbuf->b_ml.ml_line_count) +! (void)do_join(2, FALSE, FALSE, FALSE); + } + } + +*************** +*** 4197,4213 **** + ui_breakcheck(); + } + + /* + * Join 'count' lines (minimal 2) at cursor position. + * When "save_undo" is TRUE save lines for undo first. + * + * return FAIL for failure, OK otherwise + */ + int +! do_join(count, insert_space, save_undo) + long count; + int insert_space; + int save_undo; + { + char_u *curr = NULL; + char_u *curr_start = NULL; +--- 4200,4297 ---- + ui_breakcheck(); + } + ++ #if defined(FEAT_COMMENTS) || defined(PROTO) ++ /* ++ * If "process" is TRUE and the line begins with a comment leader (possibly ++ * after some white space), return a pointer to the text after it. Put a boolean ++ * value indicating whether the line ends with an unclosed comment in ++ * "is_comment". ++ * line - line to be processed, ++ * process - if FALSE, will only check whether the line ends with an unclosed ++ * comment, ++ * include_space - whether to also skip space following the comment leader, ++ * is_comment - will indicate whether the current line ends with an unclosed ++ * comment. ++ */ ++ static char_u * ++ skip_comment(line, process, include_space, is_comment) ++ char_u *line; ++ int process; ++ int include_space; ++ int *is_comment; ++ { ++ char_u *comment_flags = NULL; ++ int lead_len; ++ int leader_offset = get_last_leader_offset(line, &comment_flags); ++ ++ *is_comment = FALSE; ++ if (leader_offset != -1) ++ { ++ /* Let's check whether the line ends with an unclosed comment. ++ * If the last comment leader has COM_END in flags, there's no comment. ++ */ ++ while (*comment_flags) ++ { ++ if (*comment_flags == COM_END ++ || *comment_flags == ':') ++ break; ++ ++comment_flags; ++ } ++ if (*comment_flags != COM_END) ++ *is_comment = TRUE; ++ } ++ ++ if (process == FALSE) ++ return line; ++ ++ lead_len = get_leader_len(line, &comment_flags, FALSE, include_space); ++ ++ if (lead_len == 0) ++ return line; ++ ++ /* Find: ++ * - COM_START, ++ * - COM_END, ++ * - colon, ++ * whichever comes first. ++ */ ++ while (*comment_flags) ++ { ++ if (*comment_flags == COM_START ++ || *comment_flags == COM_END ++ || *comment_flags == ':') ++ { ++ break; ++ } ++ ++comment_flags; ++ } ++ ++ /* If we found a colon, it means that we are not processing a line ++ * starting with an opening or a closing part of a three-part ++ * comment. That's good, because we don't want to remove those as ++ * this would be annoying. ++ */ ++ if (*comment_flags == ':' || *comment_flags == NUL) ++ line += lead_len; ++ ++ return line; ++ } ++ #endif ++ + /* + * Join 'count' lines (minimal 2) at cursor position. + * When "save_undo" is TRUE save lines for undo first. ++ * Set "use_formatoptions" to FALSE when e.g. processing ++ * backspace and comment leaders should not be removed. + * + * return FAIL for failure, OK otherwise + */ + int +! do_join(count, insert_space, save_undo, use_formatoptions) + long count; + int insert_space; + int save_undo; ++ int use_formatoptions UNUSED; + { + char_u *curr = NULL; + char_u *curr_start = NULL; +*************** +*** 4221,4226 **** +--- 4305,4317 ---- + linenr_T t; + colnr_T col = 0; + int ret = OK; ++ #if defined(FEAT_COMMENTS) || defined(PROTO) ++ int *comments; ++ int remove_comments = (use_formatoptions == TRUE) ++ && has_format_option(FO_REMOVE_COMS); ++ int prev_was_comment; ++ #endif ++ + + if (save_undo && u_save((linenr_T)(curwin->w_cursor.lnum - 1), + (linenr_T)(curwin->w_cursor.lnum + count)) == FAIL) +*************** +*** 4232,4237 **** +--- 4323,4339 ---- + spaces = lalloc_clear((long_u)count, TRUE); + if (spaces == NULL) + return FAIL; ++ #if defined(FEAT_COMMENTS) || defined(PROTO) ++ if (remove_comments) ++ { ++ comments = (int *)lalloc_clear((long_u)count * sizeof(int), TRUE); ++ if (comments == NULL) ++ { ++ vim_free(spaces); ++ return FAIL; ++ } ++ } ++ #endif + + /* + * Don't move anything, just compute the final line length +*************** +*** 4240,4245 **** +--- 4342,4366 ---- + for (t = 0; t < count; ++t) + { + curr = curr_start = ml_get((linenr_T)(curwin->w_cursor.lnum + t)); ++ #if defined(FEAT_COMMENTS) || defined(PROTO) ++ if (remove_comments) ++ { ++ /* We don't want to remove the comment leader if the ++ * previous line is not a comment. */ ++ if (t > 0 && prev_was_comment) ++ { ++ ++ char_u *new_curr = skip_comment(curr, TRUE, insert_space, ++ &prev_was_comment); ++ comments[t] = new_curr - curr; ++ curr = new_curr; ++ } ++ else ++ curr = skip_comment(curr, FALSE, insert_space, ++ &prev_was_comment); ++ } ++ #endif ++ + if (insert_space && t > 0) + { + curr = skipwhite(curr); +*************** +*** 4327,4332 **** +--- 4448,4457 ---- + if (t == 0) + break; + curr = curr_start = ml_get((linenr_T)(curwin->w_cursor.lnum + t - 1)); ++ #if defined(FEAT_COMMENTS) || defined(PROTO) ++ if (remove_comments) ++ curr += comments[t - 1]; ++ #endif + if (insert_space && t > 1) + curr = skipwhite(curr); + currsize = (int)STRLEN(curr); +*************** +*** 4364,4369 **** +--- 4489,4498 ---- + + theend: + vim_free(spaces); ++ #if defined(FEAT_COMMENTS) || defined(PROTO) ++ if (remove_comments) ++ vim_free(comments); ++ #endif + return ret; + } + +*************** +*** 4788,4794 **** + (long)-next_leader_len); + #endif + curwin->w_cursor.lnum--; +! if (do_join(2, TRUE, FALSE) == FAIL) + { + beep_flush(); + break; +--- 4917,4923 ---- + (long)-next_leader_len); + #endif + curwin->w_cursor.lnum--; +! if (do_join(2, TRUE, FALSE, FALSE) == FAIL) + { + beep_flush(); + break; +*************** +*** 4844,4850 **** + + ptr = ml_get(lnum); + if (do_comments) +! *leader_len = get_leader_len(ptr, leader_flags, FALSE); + else + *leader_len = 0; + +--- 4973,4979 ---- + + ptr = ml_get(lnum); + if (do_comments) +! *leader_len = get_leader_len(ptr, leader_flags, FALSE, TRUE); + else + *leader_len = 0; + +*** ../vim-7.3.540/src/option.h 2012-02-20 22:18:22.000000000 +0100 +--- src/option.h 2012-06-06 13:00:29.000000000 +0200 +*************** +*** 104,113 **** + #define FO_ONE_LETTER '1' + #define FO_WHITE_PAR 'w' /* trailing white space continues paragr. */ + #define FO_AUTO 'a' /* automatic formatting */ + + #define DFLT_FO_VI "vt" + #define DFLT_FO_VIM "tcq" +! #define FO_ALL "tcroq2vlb1mMBn,aw" /* for do_set() */ + + /* characters for the p_cpo option: */ + #define CPO_ALTREAD 'a' /* ":read" sets alternate file name */ +--- 104,114 ---- + #define FO_ONE_LETTER '1' + #define FO_WHITE_PAR 'w' /* trailing white space continues paragr. */ + #define FO_AUTO 'a' /* automatic formatting */ ++ #define FO_REMOVE_COMS 'j' /* remove comment leaders when joining lines */ + + #define DFLT_FO_VI "vt" + #define DFLT_FO_VIM "tcq" +! #define FO_ALL "tcroq2vlb1mMBn,awj" /* for do_set() */ + + /* characters for the p_cpo option: */ + #define CPO_ALTREAD 'a' /* ":read" sets alternate file name */ +*** ../vim-7.3.540/src/proto/misc1.pro 2010-08-15 21:57:28.000000000 +0200 +--- src/proto/misc1.pro 2012-06-06 13:00:29.000000000 +0200 +*************** +*** 6,12 **** + int set_indent __ARGS((int size, int flags)); + int get_number_indent __ARGS((linenr_T lnum)); + int open_line __ARGS((int dir, int flags, int old_indent)); +! int get_leader_len __ARGS((char_u *line, char_u **flags, int backward)); + int plines __ARGS((linenr_T lnum)); + int plines_win __ARGS((win_T *wp, linenr_T lnum, int winheight)); + int plines_nofill __ARGS((linenr_T lnum)); +--- 6,13 ---- + int set_indent __ARGS((int size, int flags)); + int get_number_indent __ARGS((linenr_T lnum)); + int open_line __ARGS((int dir, int flags, int old_indent)); +! int get_leader_len __ARGS((char_u *line, char_u **flags, int backward, int do_skip_space)); +! int get_last_leader_offset __ARGS((char_u *line, char_u **flags)); + int plines __ARGS((linenr_T lnum)); + int plines_win __ARGS((win_T *wp, linenr_T lnum, int winheight)); + int plines_nofill __ARGS((linenr_T lnum)); +*** ../vim-7.3.540/src/proto/ops.pro 2010-08-15 21:57:28.000000000 +0200 +--- src/proto/ops.pro 2012-06-06 13:00:29.000000000 +0200 +*************** +*** 36,42 **** + int preprocs_left __ARGS((void)); + int get_register_name __ARGS((int num)); + void ex_display __ARGS((exarg_T *eap)); +! int do_join __ARGS((long count, int insert_space, int save_undo)); + void op_format __ARGS((oparg_T *oap, int keep_cursor)); + void op_formatexpr __ARGS((oparg_T *oap)); + int fex_format __ARGS((linenr_T lnum, long count, int c)); +--- 36,42 ---- + int preprocs_left __ARGS((void)); + int get_register_name __ARGS((int num)); + void ex_display __ARGS((exarg_T *eap)); +! int do_join __ARGS((long count, int insert_space, int save_undo, int use_formatoptions)); + void op_format __ARGS((oparg_T *oap, int keep_cursor)); + void op_formatexpr __ARGS((oparg_T *oap)); + int fex_format __ARGS((linenr_T lnum, long count, int c)); +*** ../vim-7.3.540/src/search.c 2012-02-04 23:34:57.000000000 +0100 +--- src/search.c 2012-06-06 13:00:29.000000000 +0200 +*************** +*** 1548,1554 **** + int len; + int stop = TRUE; + #ifdef FEAT_MBYTE +! static char_u bytes[MB_MAXBYTES]; + static int bytelen = 1; /* >1 for multi-byte char */ + #endif + +--- 1548,1554 ---- + int len; + int stop = TRUE; + #ifdef FEAT_MBYTE +! static char_u bytes[MB_MAXBYTES + 1]; + static int bytelen = 1; /* >1 for multi-byte char */ + #endif + +*************** +*** 4901,4907 **** + #ifdef FEAT_COMMENTS + if ((*line != '#' || + STRNCMP(skipwhite(line + 1), "define", 6) != 0) +! && get_leader_len(line, NULL, FALSE)) + matched = FALSE; + + /* +--- 4901,4907 ---- + #ifdef FEAT_COMMENTS + if ((*line != '#' || + STRNCMP(skipwhite(line + 1), "define", 6) != 0) +! && get_leader_len(line, NULL, FALSE, TRUE)) + matched = FALSE; + + /* +*** ../vim-7.3.540/src/testdir/test29.in 2010-08-15 21:57:29.000000000 +0200 +--- src/testdir/test29.in 2012-06-06 15:44:38.000000000 +0200 +*************** +*** 4,19 **** + and with 'cpoptions' flag 'j' set or not + + STARTTEST + :set nocompatible viminfo+=nviminfo + :set nojoinspaces + :set cpoptions-=j + /firstline/ +! j"tdGpJjJjJjJjJjJjJjJjJjJjJjJjJjJj05lmx2j06lmy2k4Jy3l$p`xyl$p`yy2l$p:set cpoptions+=j + j05lmx2j06lmy2k4Jy3l$p`xyl$p`yy2l$p:set cpoptions-=j joinspaces + j"tpJjJjJjJjJjJjJjJjJjJjJjJjJjJj05lmx2j06lmy2k4Jy3l$p`xyl$p`yy2l$p:set cpoptions+=j + j05lmx2j06lmy2k4Jy3l$p`xyl$p`yy2l$p:set cpoptions-=j nojoinspaces compatible +! j"tpJjJjJjJjJjJjJjJjJjJjJjJjJjJj4Jy3l$pjdG:?firstline?+1,$w! test.out +! :qa! + ENDTEST + + firstline +--- 4,20 ---- + and with 'cpoptions' flag 'j' set or not + + STARTTEST ++ :so small.vim + :set nocompatible viminfo+=nviminfo + :set nojoinspaces + :set cpoptions-=j + /firstline/ +! j"td/^STARTTEST/-1 +! PJjJjJjJjJjJjJjJjJjJjJjJjJjJj05lmx2j06lmy2k4Jy3l$p`xyl$p`yy2l$p:set cpoptions+=j + j05lmx2j06lmy2k4Jy3l$p`xyl$p`yy2l$p:set cpoptions-=j joinspaces + j"tpJjJjJjJjJjJjJjJjJjJjJjJjJjJj05lmx2j06lmy2k4Jy3l$p`xyl$p`yy2l$p:set cpoptions+=j + j05lmx2j06lmy2k4Jy3l$p`xyl$p`yy2l$p:set cpoptions-=j nojoinspaces compatible +! j"tpJjJjJjJjJjJjJjJjJjJjJjJjJjJj4Jy3l$pjd/STARTTEST/-2 + ENDTEST + + firstline +*************** +*** 54,56 **** +--- 55,181 ---- + hjkl iop! + ert + ++ STARTTEST ++ /^{/+1 ++ :set comments=s1:/*,mb:*,ex:*/,:// ++ :set nojoinspaces fo=j ++ :set backspace=eol,start ++ :.,+3join ++ j4J ++ :.,+2join ++ j3J ++ :.,+2join ++ j3J ++ :.,+2join ++ jj3J ++ ENDTEST ++ ++ { ++ ++ /* ++ * Make sure the previous comment leader is not removed. ++ */ ++ ++ /* ++ * Make sure the previous comment leader is not removed. ++ */ ++ ++ // Should the next comment leader be left alone? ++ // Yes. ++ ++ // Should the next comment leader be left alone? ++ // Yes. ++ ++ /* Here the comment leader should be left intact. */ ++ // And so should this one. ++ ++ /* Here the comment leader should be left intact. */ ++ // And so should this one. ++ ++ if (condition) // Remove the next comment leader! ++ // OK, I will. ++ action(); ++ ++ if (condition) // Remove the next comment leader! ++ // OK, I will. ++ action(); ++ } ++ ++ STARTTEST ++ /^{/+1 ++ :set comments=s1:/*,mb:*,ex:*/,:// ++ :set comments+=s1:>#,mb:#,ex:#<,:< ++ :set cpoptions-=j joinspaces fo=j ++ :set backspace=eol,start ++ :.,+3join ++ j4J ++ :.,+2join ++ j3J ++ :.,+2join ++ j3J ++ :.,+2join ++ jj3J ++ j:.,+2join ++ jj3J ++ j:.,+5join ++ j6J ++ oSome code! // Make sure backspacing does not remove this comment leader.0i ++ ENDTEST ++ ++ { ++ ++ /* ++ * Make sure the previous comment leader is not removed. ++ */ ++ ++ /* ++ * Make sure the previous comment leader is not removed. ++ */ ++ ++ // Should the next comment leader be left alone? ++ // Yes. ++ ++ // Should the next comment leader be left alone? ++ // Yes. ++ ++ /* Here the comment leader should be left intact. */ ++ // And so should this one. ++ ++ /* Here the comment leader should be left intact. */ ++ // And so should this one. ++ ++ if (condition) // Remove the next comment leader! ++ // OK, I will. ++ action(); ++ ++ if (condition) // Remove the next comment leader! ++ // OK, I will. ++ action(); ++ ++ int i = 7 /* foo *// 3 ++ // comment ++ ; ++ ++ int i = 7 /* foo *// 3 ++ // comment ++ ; ++ ++ ># Note that the last character of the ending comment leader (left angle ++ # bracket) is a comment leader itself. Make sure that this comment leader is ++ # not removed from the next line #< ++ < On this line a new comment is opened which spans 2 lines. This comment should ++ < retain its comment leader. ++ ++ ># Note that the last character of the ending comment leader (left angle ++ # bracket) is a comment leader itself. Make sure that this comment leader is ++ # not removed from the next line #< ++ < On this line a new comment is opened which spans 2 lines. This comment should ++ < retain its comment leader. ++ ++ } ++ ++ STARTTEST ++ :g/^STARTTEST/.,/^ENDTEST/d ++ :?firstline?+1,$w! test.out ++ :qa! ++ ENDTEST +*** ../vim-7.3.540/src/testdir/test29.ok 2010-08-15 21:57:29.000000000 +0200 +--- src/testdir/test29.ok 2012-06-06 13:00:29.000000000 +0200 +*************** +*** 47,49 **** +--- 47,86 ---- + asdfasdf asdf + asdfasdf asdf + zx cvn. as dfg? hjkl iop! ert a ++ ++ ++ { ++ /* Make sure the previous comment leader is not removed. */ ++ /* Make sure the previous comment leader is not removed. */ ++ // Should the next comment leader be left alone? Yes. ++ // Should the next comment leader be left alone? Yes. ++ /* Here the comment leader should be left intact. */ // And so should this one. ++ /* Here the comment leader should be left intact. */ // And so should this one. ++ if (condition) // Remove the next comment leader! OK, I will. ++ action(); ++ if (condition) // Remove the next comment leader! OK, I will. ++ action(); ++ } ++ ++ ++ { ++ /* Make sure the previous comment leader is not removed. */ ++ /* Make sure the previous comment leader is not removed. */ ++ // Should the next comment leader be left alone? Yes. ++ // Should the next comment leader be left alone? Yes. ++ /* Here the comment leader should be left intact. */ // And so should this one. ++ /* Here the comment leader should be left intact. */ // And so should this one. ++ if (condition) // Remove the next comment leader! OK, I will. ++ action(); ++ if (condition) // Remove the next comment leader! OK, I will. ++ action(); ++ int i = 7 /* foo *// 3 // comment ++ ; ++ int i = 7 /* foo *// 3 // comment ++ ; ++ ># Note that the last character of the ending comment leader (left angle bracket) is a comment leader itself. Make sure that this comment leader is not removed from the next line #< < On this line a new comment is opened which spans 2 lines. This comment should retain its comment leader. ++ ># Note that the last character of the ending comment leader (left angle bracket) is a comment leader itself. Make sure that this comment leader is not removed from the next line #< < On this line a new comment is opened which spans 2 lines. This comment should retain its comment leader. ++ ++ Some code!// Make sure backspacing does not remove this comment leader. ++ } ++ +*** ../vim-7.3.540/src/version.c 2012-06-06 12:06:10.000000000 +0200 +--- src/version.c 2012-06-06 16:10:03.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 541, + /**/ + +-- +I have a drinking problem -- I don't have a drink! + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\ +\\ an exciting new programming language -- http://www.Zimbu.org /// + \\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/vim/patches/vim-7.3.542.patch0 b/vim/patches/vim-7.3.542.patch0 new file mode 100644 index 0000000..8108612 --- /dev/null +++ b/vim/patches/vim-7.3.542.patch0 @@ -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 index 0000000..3fa569c --- /dev/null +++ b/vim/patches/vim-7.3.543.patch0 @@ -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 index 0000000..198a6cb --- /dev/null +++ b/vim/patches/vim-7.3.544.patch0 @@ -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 index 0000000..1bd76eb --- /dev/null +++ b/vim/patches/vim-7.3.545.patch0 @@ -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 index 0000000..c883d2d --- /dev/null +++ b/vim/patches/vim-7.3.546.patch0 @@ -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 index 0000000..5533144 --- /dev/null +++ b/vim/patches/vim-7.3.547.patch0 @@ -0,0 +1,52 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.547 +Fcc: outbox +From: Bram Moolenaar Bram@moolenaar.net +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.547 (after 7.3.541) +Problem: Compiler warning for uninitialized variable. +Solution: Initialize it. +Files: src/ops.c + + +*** ../vim-7.3.546/src/ops.c 2012-06-06 16:12:54.000000000 +0200 +--- src/ops.c 2012-06-06 23:06:45.000000000 +0200 +*************** +*** 4306,4312 **** + colnr_T col = 0; + int ret = OK; + #if defined(FEAT_COMMENTS) || defined(PROTO) +! int *comments; + int remove_comments = (use_formatoptions == TRUE) + && has_format_option(FO_REMOVE_COMS); + int prev_was_comment; +--- 4306,4312 ---- + colnr_T col = 0; + int ret = OK; + #if defined(FEAT_COMMENTS) || defined(PROTO) +! int *comments = NULL; + int remove_comments = (use_formatoptions == TRUE) + && has_format_option(FO_REMOVE_COMS); + int prev_was_comment; +*** ../vim-7.3.546/src/version.c 2012-06-06 19:05:45.000000000 +0200 +--- src/version.c 2012-06-06 23:07:26.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 547, + /**/ + +-- +How To Keep A Healthy Level Of Insanity: +9. As often as possible, skip rather than walk. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\ +\\ an exciting new programming language -- http://www.Zimbu.org /// + \\ help me help AIDS victims -- http://ICCF-Holland.org /// diff --git a/vim/vim.nm b/vim/vim.nm index d826fb6..2863e94 100644 --- a/vim/vim.nm +++ b/vim/vim.nm @@ -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
hooks/post-receive -- IPFire 3.x development tree