Danek Duvall
2011-04-08 58da5ef0c4a342115f5c52a51d99acbc528a4778
7016732 move vim from sfw to userland
7036367 vim is too big
421 files added
2 files modified
141337 ■■■■■ changed files
components/meta-packages/history/SUNWgvim.p5m 29 ●●●●● patch | view | raw | blame | history
components/meta-packages/history/SUNWvim.p5m 29 ●●●●● patch | view | raw | blame | history
components/vim/Makefile 96 ●●●●● patch | view | raw | blame | history
components/vim/gvim.p5m 50 ●●●●● patch | view | raw | blame | history
components/vim/help_minimized.txt 14 ●●●●● patch | view | raw | blame | history
components/vim/vim-core.p5m 130 ●●●●● patch | view | raw | blame | history
components/vim/vim.p5m 1583 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.001 61 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.002 47 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.003 107 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.004 103 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.005 149 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.006 50 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.008 63 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.009 67 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.010 206 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.011 105 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.012 53 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.013 135 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.014 52 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.015 82 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.016 166 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.017 162 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.018 45 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.019 65 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.020 54 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.021 147 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.022 140 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.023 65 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.024 50 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.025 54 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.026 105 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.027 98 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.028 53 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.029 44 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.030 51 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.031 1281 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.032 55 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.033 78 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.034 81 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.035 128 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.037 53 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.038 86 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.039 46 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.040 64 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.041 709 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.042 166 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.043 78 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.044 161 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.045 67 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.046 55 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.047 88 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.048 160 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.050 316 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.051 411 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.052 83 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.053 58 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.054 68 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.055 1271 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.056 57 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.057 111 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.058 83 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.059 70 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.060 1102 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.061 56 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.062 55 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.063 103 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.064 66 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.065 177 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.066 70 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.067 52 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.068 101 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.069 52 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.070 566 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.073 135 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.075 58 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.076 86 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.077 164 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.078 120 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.079 229 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.080 365 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.081 60 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.082 77 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.083 54 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.084 144 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.085 62 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.086 98 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.087 53 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.090 130 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.091 63 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.092 164 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.094 112 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.095 63 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.096 54 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.097 54 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.098 69 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.099 127 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.100 132 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.102 47 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.103 216 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.104 51 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.105 72 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.106 103 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.107 56 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.108 55 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.109 423 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.110 53 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.111 88 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.112 47 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.113 99 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.114 86 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.115 133 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.116 55 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.117 107 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.118 78 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.119 51 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.120 277 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.121 180 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.122 80 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.123 50 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.124 122 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.125 161 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.126 174 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.127 59 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.128 52 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.129 73 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.130 413 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.131 83 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.132 268 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.133 53 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.134 68 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.135 85 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.136 47 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.137 343 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.139 79 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.140 58 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.141 239 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.142 61 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.143 234 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.144 78 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.145 125 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.146 110 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.147 53 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.148 145 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.149 672 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.151 53 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.152 104 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.153 97 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.154 71 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.155 45 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.156 181 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.157 144 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.158 63 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.159 71 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.160 52 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.161 205 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.162 75 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.163 51 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.164 139 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.165 58 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.166 425 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.167 1873 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.168 74 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.169 1214 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.170 179 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.171 80 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.173 719 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.174 1718 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.175 51 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.176 207 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.177 2726 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.178 150 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.179 100 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.180 6520 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.181 1978 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.182 66 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.183 1846 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.184 3646 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.185 305 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.186 331 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.187 125 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.188 278 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.189 86 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.190 182 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.191 3573 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.192 135 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.193 53 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.195 79 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.196 84 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.197 53 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.198 60 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.199 52 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.200 348 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.201 494 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.202 62 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.203 1496 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.206 46 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.207 69 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.208 82 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.209 82 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.210 58 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.211 52 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.213 53 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.214 65 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.215 310 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.216 137 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.217 57 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.218 52 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.220 95 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.221 247 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.222 59 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.223 165 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.224 88 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.225 97 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.226 268 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.227 52 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.228 573 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.229 60 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.230 87 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.231 49 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.232 102 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.234 111 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.235 94 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.236 81 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.237 76 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.238 117 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.239 145 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.240 69 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.241 169 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.242 89 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.243 67 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.244 174 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.245 165 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.246 53 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.247 86 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.251 71 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.252 51 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.253 143 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.254 52 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.255 71 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.256 59 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.257 61 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.258 74 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.259 160 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.261 83 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.262 189 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.263 87 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.264 168 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.265 56 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.266 244 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.267 47 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.268 80 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.269 261 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.270 72 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.271 92 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.272 82 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.273 130 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.274 130 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.275 95 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.276 63 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.277 66 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.278 74 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.279 120 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.280 251 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.281 81 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.282 47 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.283 73 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.284 52 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.285 56 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.286 227 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.287 54 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.288 52 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.289 120 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.290 157 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.291 53 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.292 55 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.293 66 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.294 285 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.295 142 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.296 53 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.297 70 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.298 48 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.299 54 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.300 201 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.301 777 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.303 70 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.304 58 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.305 105 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.306 48 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.307 181 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.308 182 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.309 48 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.310 63 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.311 52 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.312 312 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.313 117 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.314 56 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.315 134 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.316 83 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.317 148 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.318 91 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.319 63 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.320 199 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.321 59 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.322 49 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.324 66 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.325 52 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.326 54 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.327 323 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.328 52 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.329 48 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.330 1531 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.331 47 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.332 101 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.333 371 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.334 347 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.335 103 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.336 793 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.337 112 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.338 129 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.339 78 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.340 54 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.341 69 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.342 95 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.343 51 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.344 60 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.345 47 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.346 110 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.347 138 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.348 254 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.349 53 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.350 86 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.351 78 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.353 173 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.354 78 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.355 88 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.356 69 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.357 49 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.358 78 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.359 68 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.360 96 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.361 763 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.363 70 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.366 134 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.367 77 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.368 52 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.369 55 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.370 156 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.371 322 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.373 54 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.374 168 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.375 64 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.376 50 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.378 69 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.379 55 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.380 104 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.381 218 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.382 58 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.383 101 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.385 63 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.386 61 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.387 238 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.389 161 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.390 72 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.391 121 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.392 184 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.393 281 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.394 99 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.395 60 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.396 51 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.397 67 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.398 152 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.400 454 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.401 61 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.402 91 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.403 53 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.404 54 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.405 48 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.406 123 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.407 69 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.408 73 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.409 60 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.410 78 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.411 47 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.412 85 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.413 452 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.414 93 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.415 69 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.416 69 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.417 72 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.418 113 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.419 46 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.420 70 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.421 68 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.422 67 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.423 150 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.424 162 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.425 52 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.426 136 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.427 207 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.428 55 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.429 69 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.430 133 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.431 100 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.432 499 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.433 208 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.434 75 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.435 144 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.436 107 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.437 53 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.438 74 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.439 111 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.440 180 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.441 141 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.442 256 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.443 116 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.444 85 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.445 261 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/7.2.446 91 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/runtime.patch 58169 ●●●●● patch | view | raw | blame | history
components/vim/vim72-patches/vim-help.patch 107 ●●●●● patch | view | raw | blame | history
make-rules/prep.mk 13 ●●●● patch | view | raw | blame | history
tools/cloney 7 ●●●● patch | view | raw | blame | history
components/meta-packages/history/SUNWgvim.p5m
New file
@@ -0,0 +1,29 @@
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
# Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
#
set name=pkg.fmri value=pkg:/SUNWgvim@7.2.308,5.11-0.133
set name=pkg.renamed value=true
set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
depend fmri=editor/gvim@7.2.308-0.133 type=require
components/meta-packages/history/SUNWvim.p5m
New file
@@ -0,0 +1,29 @@
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
# Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
#
set name=pkg.fmri value=pkg:/SUNWvim@7.2.308,5.11-0.133
set name=pkg.renamed value=true
set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
depend fmri=editor/vim@7.2.308-0.133 type=require
components/vim/Makefile
New file
@@ -0,0 +1,96 @@
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
#
# Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
#
include ../../make-rules/shared-macros.mk
PATH=/usr/bin:/usr/gnu/bin
COMPONENT_NAME=        vim
COMPONENT_VERSION=    7.2
IPS_COMPONENT_VERSION=    $(shell find $(PATCH_DIR) -name $(PATCH_PATTERN) | \
                sort | tail -1 | cut -d/ -f2)
COMPONENT_SRC=        vim72
COMPONENT_PROJECT_URL=    http://www.vim.org/
COMPONENT_ARCHIVE=    vim-$(COMPONENT_VERSION).tar.bz2
COMPONENT_ARCHIVE_HASH=    sha1:a4b6641ca528fada71ea77c998a441495ed4984c
COMPONENT_ARCHIVE_URL=    ftp://ftp.vim.org/pub/vim/unix/$(COMPONENT_ARCHIVE)
PATCH_DIR =    $(COMPONENT_SRC)-patches
PATCH_PATTERN =    $(COMPONENT_VERSION).*
EXTRA_PATCHES =    $(PATCH_DIR)/runtime.patch $(PATCH_DIR)/vim-help.patch
include ../../make-rules/prep.mk
include ../../make-rules/configure.mk
include ../../make-rules/ips.mk
PATCH_LEVEL =    0
PKG_MACROS +=    VIMVER=$(COMPONENT_SRC)
X_VARIANT =    $(BUILD_DIR)/$(MACH32)-gvim
NOX_VARIANT =    $(BUILD_DIR)/$(MACH32)-vim
VARIANTS =    $(X_VARIANT) $(NOX_VARIANT)
$(VARIANTS:%=%/.configured):    BITS=32
BUILD_32 =     $(VARIANTS:%=%/.built)
# Only install the non-X variant.  We will cherry-pick gvim out of the build
# directory to avoid re-installing everything.
INSTALL_32 =     $(NOX_VARIANT)/.installed
TEST_32 =     $(NOX_VARIANT)/.tested
CONFIGURE_OPTIONS +=    --with-features=huge
# We build two variants: with and without X support.
$(NOX_VARIANT)/.configured:    CONFIGURE_OPTIONS += --without-x
$(NOX_VARIANT)/.configured:    CONFIGURE_OPTIONS += --disable-gui
$(NOX_VARIANT)/.configured:    CONFIGURE_OPTIONS += --disable-gtktest
$(X_VARIANT)/.configured:    CONFIGURE_OPTIONS += --with-vim-name=gvim
$(X_VARIANT)/.configured:    CONFIGURE_OPTIONS += --with-x
$(X_VARIANT)/.configured:    CONFIGURE_OPTIONS += --enable-gui=gtk2
$(X_VARIANT)/.configured:    CONFIGURE_OPTIONS += --enable-gtk2-check
# Vim's build is too smart for itself and configure can't run outside of a
# complete source tree.
COMPONENT_PRE_CONFIGURE_ACTION = ($(CLONEY) $(SOURCE_DIR) $(@D))
$(SOURCE_DIR)/runtime/doc/uganda.txt: prep
$(BUILD_DIR)/license: $(SOURCE_DIR)/runtime/doc/uganda.txt
    nawk '/begin of license/ {p=1; getline; next} /end of license/ {p=0} p == 1 {print}' $< > $@
# common targets
build:        $(BUILD_32)
install:    $(INSTALL_32) $(X_VARIANT)/.built $(BUILD_DIR)/license
test:        $(TEST_32)
BUILD_PKG_DEPENDENCIES =    $(BUILD_TOOLS)
include ../../make-rules/depend.mk
components/vim/gvim.p5m
New file
@@ -0,0 +1,50 @@
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
#
# Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
#
set name=pkg.fmri value=pkg:/editor/gvim@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
set name=pkg.summary value="Vi IMproved (GUI)"
set name=pkg.description value="GVim is the graphical interface to vim, found in editor/vim."
set name=info.classification \
    value=org.opensolaris.category.2008:Development/Editors \
    value="org.opensolaris.category.2008:System/Text Tools"
set name=info.source_url value=$(COMPONENT_ARCHIVE_URL)
set name=info.upstream_url value=http://www.vim.org/
set name=info.upstream value="vim-dev@vim.org"
set name=opensolaris.arc_url \
    value=http://arc.opensolaris.org/caselog/PSARC/2007/267 \
    value=http://arc.opensolaris.org/caselog/PSARC/2008/546
set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
file $(MACH32)-gvim/src/gvim path=usr/bin/gvim
link path=usr/bin/rgvim target=gvim
link path=usr/bin/rgview target=gvim
link path=usr/bin/gview target=gvim
link path=usr/bin/gvimdiff target=gvim
link path=usr/share/man/man1/gvim.1 target=vim.1
link path=usr/share/man/man1/gvimdiff.1 target=vimdiff.1
license license license="VIM License"
depend type=require fmri=editor/vim@$(IPS_COMPONENT_VERSION)
components/vim/help_minimized.txt
New file
@@ -0,0 +1,14 @@
*help_minimized.txt*    For Vim version 7.3a.  Last change: 2011 Apr 21
This minimization notice is being displayed because the vim installed on
this system is the minimized version (editor/vim-core).  This minimized
version does not include online help.  Also absent are syntax highlighting,
language-specific indentation, spell-checking dictionaries, plugins,
keyboard mappings, etc.  If you wish to have a richer vim environment,
please ensure that the package containing the complete vim runtime
(editor/vim) is installed using pkg(1).  The command 'pkg install editor/vim'
should install the runtime package.
------------------------------------------------------------------------------
 vim:tw=78:fo=tcq2:isk=!-~,^*,^\|,^\":ts=8:ft=help:norl:
components/vim/vim-core.p5m
New file
@@ -0,0 +1,130 @@
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
#
# Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
#
<transform file path=usr.*/man/.+ -> default mangler.man.stability uncommitted>
set name=pkg.fmri value=pkg:/editor/vim-core@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
set name=pkg.summary value="Vi IMproved (core executables)"
set name=pkg.description value="This package delivers the core executables and man pages for vim (pkg:/editor/vim), and will generally only be installed independently on a minimized system."
set name=info.classification \
    value=org.opensolaris.category.2008:Development/Editors \
    value="org.opensolaris.category.2008:System/Text Tools"
set name=info.source_url value=$(COMPONENT_ARCHIVE_URL)
set name=info.upstream_url value=http://www.vim.org/
set name=info.upstream value="vim-dev@vim.org"
set name=opensolaris.arc_url \
    value=http://arc.opensolaris.org/caselog/PSARC/2007/267
set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
dir path=usr
dir path=usr/bin
dir path=usr/share
dir path=usr/share/man
dir path=usr/share/man/fr
dir path=usr/share/man/fr.ISO8859-1
dir path=usr/share/man/fr.ISO8859-1/man1
dir path=usr/share/man/fr.UTF-8
dir path=usr/share/man/fr.UTF-8/man1
dir path=usr/share/man/fr/man1
dir path=usr/share/man/it
dir path=usr/share/man/it.ISO8859-1
dir path=usr/share/man/it.ISO8859-1/man1
dir path=usr/share/man/it.UTF-8
dir path=usr/share/man/it.UTF-8/man1
dir path=usr/share/man/it/man1
dir path=usr/share/man/man1
dir path=usr/share/man/pl
dir path=usr/share/man/pl.ISO8859-2
dir path=usr/share/man/pl.ISO8859-2/man1
dir path=usr/share/man/pl.UTF-8
dir path=usr/share/man/pl.UTF-8/man1
dir path=usr/share/man/pl/man1
dir path=usr/share/man/ru.KOI8-R
dir path=usr/share/man/ru.KOI8-R/man1
dir path=usr/share/man/ru.UTF-8
dir path=usr/share/man/ru.UTF-8/man1
dir path=usr/share/vim
dir path=usr/share/vim/$(VIMVER)
dir path=usr/share/vim/$(VIMVER)/doc
file path=usr/bin/vim pkg.linted=true
file path=usr/share/man/fr.ISO8859-1/man1/vim.1
file path=usr/share/man/fr.UTF-8/man1/vim.1
file path=usr/share/man/fr/man1/vim.1
file path=usr/share/man/it.ISO8859-1/man1/vim.1
file path=usr/share/man/it.UTF-8/man1/vim.1
file path=usr/share/man/it/man1/vim.1
file path=usr/share/man/man1/vim.1 pkg.linted=true
file path=usr/share/man/pl.ISO8859-2/man1/vim.1
file path=usr/share/man/pl.UTF-8/man1/vim.1
file path=usr/share/man/pl/man1/vim.1
file path=usr/share/man/ru.KOI8-R/man1/vim.1
file path=usr/share/man/ru.UTF-8/man1/vim.1
file help_minimized.txt path=usr/share/vim/$(VIMVER)/doc/help_minimized.txt
link path=usr/bin/ex target=vim
link path=usr/bin/vi target=vim
link path=usr/bin/view target=vim
link path=usr/share/man/fr.ISO8859-1/man1/ex.1 target=vim.1
link path=usr/share/man/fr.ISO8859-1/man1/vi.1 target=vim.1
link path=usr/share/man/fr.ISO8859-1/man1/view.1 target=vim.1
link path=usr/share/man/fr.UTF-8/man1/ex.1 target=vim.1
link path=usr/share/man/fr.UTF-8/man1/vi.1 target=vim.1
link path=usr/share/man/fr.UTF-8/man1/view.1 target=vim.1
link path=usr/share/man/fr/man1/ex.1 target=vim.1
link path=usr/share/man/fr/man1/vi.1 target=vim.1
link path=usr/share/man/fr/man1/view.1 target=vim.1
link path=usr/share/man/it.ISO8859-1/man1/ex.1 target=vim.1
link path=usr/share/man/it.ISO8859-1/man1/vi.1 target=vim.1
link path=usr/share/man/it.ISO8859-1/man1/view.1 target=vim.1
link path=usr/share/man/it.UTF-8/man1/ex.1 target=vim.1
link path=usr/share/man/it.UTF-8/man1/vi.1 target=vim.1
link path=usr/share/man/it.UTF-8/man1/view.1 target=vim.1
link path=usr/share/man/it/man1/ex.1 target=vim.1
link path=usr/share/man/it/man1/vi.1 target=vim.1
link path=usr/share/man/it/man1/view.1 target=vim.1
link path=usr/share/man/man1/ex.1 target=vim.1
link path=usr/share/man/man1/vi.1 target=vim.1
link path=usr/share/man/man1/view.1 target=vim.1
link path=usr/share/man/pl.ISO8859-2/man1/ex.1 target=vim.1
link path=usr/share/man/pl.ISO8859-2/man1/vi.1 target=vim.1
link path=usr/share/man/pl.ISO8859-2/man1/view.1 target=vim.1
link path=usr/share/man/pl.UTF-8/man1/ex.1 target=vim.1
link path=usr/share/man/pl.UTF-8/man1/vi.1 target=vim.1
link path=usr/share/man/pl.UTF-8/man1/view.1 target=vim.1
link path=usr/share/man/pl/man1/ex.1 target=vim.1
link path=usr/share/man/pl/man1/vi.1 target=vim.1
link path=usr/share/man/pl/man1/view.1 target=vim.1
link path=usr/share/man/ru.KOI8-R/man1/ex.1 target=vim.1
link path=usr/share/man/ru.KOI8-R/man1/vi.1 target=vim.1
link path=usr/share/man/ru.KOI8-R/man1/view.1 target=vim.1
link path=usr/share/man/ru.UTF-8/man1/ex.1 target=vim.1
link path=usr/share/man/ru.UTF-8/man1/vi.1 target=vim.1
link path=usr/share/man/ru.UTF-8/man1/view.1 target=vim.1
license license license="VIM License"
# Make sure that we don't install simultaneously with an "old" vim that has the
# minimal vim bits as well as all the runtime files.  This will also ensure
# that the runtime bits, if installed, are at least as current as this package.
depend type=optional fmri=editor/vim@$(IPS_COMPONENT_VERSION)
components/vim/vim.p5m
New file
@@ -0,0 +1,1583 @@
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
#
# Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
#
<transform file path=usr.*/man/.+ -> default mangler.man.stability uncommitted>
set name=pkg.fmri value=pkg:/editor/vim@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
set name=pkg.summary value="Vi IMproved"
set name=pkg.description value="Vim is a clone of the Unix editor 'vi'.  It is a modal text editor with support for syntax highlighting, context-sensitive indentation, and extension scripting in numerous languages."
set name=info.classification \
    value=org.opensolaris.category.2008:Development/Editors \
    value="org.opensolaris.category.2008:System/Text Tools"
set name=info.source_url value=$(COMPONENT_ARCHIVE_URL)
set name=info.upstream_url value=http://www.vim.org/
set name=info.upstream value="vim-dev@vim.org"
set name=opensolaris.arc_url \
    value=http://arc.opensolaris.org/caselog/PSARC/2007/267
set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
dir path=usr
dir path=usr/bin
dir path=usr/share
dir path=usr/share/man
dir path=usr/share/man/fr
dir path=usr/share/man/fr.ISO8859-1
dir path=usr/share/man/fr.ISO8859-1/man1
dir path=usr/share/man/fr.UTF-8
dir path=usr/share/man/fr.UTF-8/man1
dir path=usr/share/man/fr/man1
dir path=usr/share/man/it
dir path=usr/share/man/it.ISO8859-1
dir path=usr/share/man/it.ISO8859-1/man1
dir path=usr/share/man/it.UTF-8
dir path=usr/share/man/it.UTF-8/man1
dir path=usr/share/man/it/man1
dir path=usr/share/man/man1
dir path=usr/share/man/pl
dir path=usr/share/man/pl.ISO8859-2
dir path=usr/share/man/pl.ISO8859-2/man1
dir path=usr/share/man/pl.UTF-8
dir path=usr/share/man/pl.UTF-8/man1
dir path=usr/share/man/pl/man1
dir path=usr/share/man/ru.KOI8-R
dir path=usr/share/man/ru.KOI8-R/man1
dir path=usr/share/man/ru.UTF-8
dir path=usr/share/man/ru.UTF-8/man1
dir path=usr/share/vim
dir path=usr/share/vim/$(VIMVER)
dir path=usr/share/vim/$(VIMVER)/autoload
dir path=usr/share/vim/$(VIMVER)/autoload/xml
dir path=usr/share/vim/$(VIMVER)/colors
dir path=usr/share/vim/$(VIMVER)/compiler
dir path=usr/share/vim/$(VIMVER)/doc
dir path=usr/share/vim/$(VIMVER)/ftplugin
dir path=usr/share/vim/$(VIMVER)/indent
dir path=usr/share/vim/$(VIMVER)/keymap
dir path=usr/share/vim/$(VIMVER)/lang
dir path=usr/share/vim/$(VIMVER)/macros
dir path=usr/share/vim/$(VIMVER)/macros/hanoi
dir path=usr/share/vim/$(VIMVER)/macros/life
dir path=usr/share/vim/$(VIMVER)/macros/maze
dir path=usr/share/vim/$(VIMVER)/macros/urm
dir path=usr/share/vim/$(VIMVER)/plugin
dir path=usr/share/vim/$(VIMVER)/print
dir path=usr/share/vim/$(VIMVER)/spell
dir path=usr/share/vim/$(VIMVER)/syntax
dir path=usr/share/vim/$(VIMVER)/tools
dir path=usr/share/vim/$(VIMVER)/tutor
file path=usr/bin/vimtutor
file path=usr/bin/xxd
file path=usr/share/man/fr.ISO8859-1/man1/evim.1
file path=usr/share/man/fr.ISO8859-1/man1/vimdiff.1
file path=usr/share/man/fr.ISO8859-1/man1/vimtutor.1
file path=usr/share/man/fr.ISO8859-1/man1/xxd.1
file path=usr/share/man/fr.UTF-8/man1/evim.1
file path=usr/share/man/fr.UTF-8/man1/vimdiff.1
file path=usr/share/man/fr.UTF-8/man1/vimtutor.1
file path=usr/share/man/fr.UTF-8/man1/xxd.1
file path=usr/share/man/fr/man1/evim.1
file path=usr/share/man/fr/man1/vimdiff.1
file path=usr/share/man/fr/man1/vimtutor.1
file path=usr/share/man/fr/man1/xxd.1
file path=usr/share/man/it.ISO8859-1/man1/evim.1
file path=usr/share/man/it.ISO8859-1/man1/vimdiff.1
file path=usr/share/man/it.ISO8859-1/man1/vimtutor.1
file path=usr/share/man/it.ISO8859-1/man1/xxd.1
file path=usr/share/man/it.UTF-8/man1/evim.1
file path=usr/share/man/it.UTF-8/man1/vimdiff.1
file path=usr/share/man/it.UTF-8/man1/vimtutor.1
file path=usr/share/man/it.UTF-8/man1/xxd.1
file path=usr/share/man/it/man1/evim.1
file path=usr/share/man/it/man1/vimdiff.1
file path=usr/share/man/it/man1/vimtutor.1
file path=usr/share/man/it/man1/xxd.1
file path=usr/share/man/man1/evim.1
file path=usr/share/man/man1/vimdiff.1
file path=usr/share/man/man1/vimtutor.1
file path=usr/share/man/man1/xxd.1
file path=usr/share/man/pl.ISO8859-2/man1/evim.1
file path=usr/share/man/pl.ISO8859-2/man1/vimdiff.1
file path=usr/share/man/pl.ISO8859-2/man1/vimtutor.1
file path=usr/share/man/pl.ISO8859-2/man1/xxd.1
file path=usr/share/man/pl.UTF-8/man1/evim.1
file path=usr/share/man/pl.UTF-8/man1/vimdiff.1
file path=usr/share/man/pl.UTF-8/man1/vimtutor.1
file path=usr/share/man/pl.UTF-8/man1/xxd.1
file path=usr/share/man/pl/man1/evim.1
file path=usr/share/man/pl/man1/vimdiff.1
file path=usr/share/man/pl/man1/vimtutor.1
file path=usr/share/man/pl/man1/xxd.1
file path=usr/share/man/ru.KOI8-R/man1/evim.1
file path=usr/share/man/ru.KOI8-R/man1/vimdiff.1
file path=usr/share/man/ru.KOI8-R/man1/vimtutor.1
file path=usr/share/man/ru.KOI8-R/man1/xxd.1
file path=usr/share/man/ru.UTF-8/man1/evim.1
file path=usr/share/man/ru.UTF-8/man1/vimdiff.1
file path=usr/share/man/ru.UTF-8/man1/vimtutor.1
file path=usr/share/man/ru.UTF-8/man1/xxd.1
file path=usr/share/vim/$(VIMVER)/autoload/README.txt
file path=usr/share/vim/$(VIMVER)/autoload/ada.vim
file path=usr/share/vim/$(VIMVER)/autoload/adacomplete.vim
file path=usr/share/vim/$(VIMVER)/autoload/ccomplete.vim
file path=usr/share/vim/$(VIMVER)/autoload/csscomplete.vim
file path=usr/share/vim/$(VIMVER)/autoload/decada.vim
file path=usr/share/vim/$(VIMVER)/autoload/getscript.vim
file path=usr/share/vim/$(VIMVER)/autoload/gnat.vim
file path=usr/share/vim/$(VIMVER)/autoload/gzip.vim
file path=usr/share/vim/$(VIMVER)/autoload/htmlcomplete.vim
file path=usr/share/vim/$(VIMVER)/autoload/javascriptcomplete.vim
file path=usr/share/vim/$(VIMVER)/autoload/netrw.vim
file path=usr/share/vim/$(VIMVER)/autoload/netrwFileHandlers.vim
file path=usr/share/vim/$(VIMVER)/autoload/netrwSettings.vim
file path=usr/share/vim/$(VIMVER)/autoload/paste.vim
file path=usr/share/vim/$(VIMVER)/autoload/phpcomplete.vim
file path=usr/share/vim/$(VIMVER)/autoload/pythoncomplete.vim
file path=usr/share/vim/$(VIMVER)/autoload/rubycomplete.vim
file path=usr/share/vim/$(VIMVER)/autoload/spellfile.vim
file path=usr/share/vim/$(VIMVER)/autoload/sqlcomplete.vim
file path=usr/share/vim/$(VIMVER)/autoload/syntaxcomplete.vim
file path=usr/share/vim/$(VIMVER)/autoload/tar.vim
file path=usr/share/vim/$(VIMVER)/autoload/tohtml.vim
file path=usr/share/vim/$(VIMVER)/autoload/vimball.vim
file path=usr/share/vim/$(VIMVER)/autoload/xml/html32.vim
file path=usr/share/vim/$(VIMVER)/autoload/xml/html401f.vim
file path=usr/share/vim/$(VIMVER)/autoload/xml/html401s.vim
file path=usr/share/vim/$(VIMVER)/autoload/xml/html401t.vim
file path=usr/share/vim/$(VIMVER)/autoload/xml/html40f.vim
file path=usr/share/vim/$(VIMVER)/autoload/xml/html40s.vim
file path=usr/share/vim/$(VIMVER)/autoload/xml/html40t.vim
file path=usr/share/vim/$(VIMVER)/autoload/xml/xhtml10f.vim
file path=usr/share/vim/$(VIMVER)/autoload/xml/xhtml10s.vim
file path=usr/share/vim/$(VIMVER)/autoload/xml/xhtml10t.vim
file path=usr/share/vim/$(VIMVER)/autoload/xml/xhtml11.vim
file path=usr/share/vim/$(VIMVER)/autoload/xml/xsd.vim
file path=usr/share/vim/$(VIMVER)/autoload/xml/xsl.vim
file path=usr/share/vim/$(VIMVER)/autoload/xmlcomplete.vim
file path=usr/share/vim/$(VIMVER)/autoload/zip.vim
file path=usr/share/vim/$(VIMVER)/bugreport.vim
file path=usr/share/vim/$(VIMVER)/colors/README.txt
file path=usr/share/vim/$(VIMVER)/colors/blue.vim
file path=usr/share/vim/$(VIMVER)/colors/darkblue.vim
file path=usr/share/vim/$(VIMVER)/colors/default.vim
file path=usr/share/vim/$(VIMVER)/colors/delek.vim
file path=usr/share/vim/$(VIMVER)/colors/desert.vim
file path=usr/share/vim/$(VIMVER)/colors/elflord.vim
file path=usr/share/vim/$(VIMVER)/colors/evening.vim
file path=usr/share/vim/$(VIMVER)/colors/koehler.vim
file path=usr/share/vim/$(VIMVER)/colors/morning.vim
file path=usr/share/vim/$(VIMVER)/colors/murphy.vim
file path=usr/share/vim/$(VIMVER)/colors/pablo.vim
file path=usr/share/vim/$(VIMVER)/colors/peachpuff.vim
file path=usr/share/vim/$(VIMVER)/colors/ron.vim
file path=usr/share/vim/$(VIMVER)/colors/shine.vim
file path=usr/share/vim/$(VIMVER)/colors/slate.vim
file path=usr/share/vim/$(VIMVER)/colors/torte.vim
file path=usr/share/vim/$(VIMVER)/colors/zellner.vim
file path=usr/share/vim/$(VIMVER)/compiler/README.txt
file path=usr/share/vim/$(VIMVER)/compiler/ant.vim
file path=usr/share/vim/$(VIMVER)/compiler/bcc.vim
file path=usr/share/vim/$(VIMVER)/compiler/bdf.vim
file path=usr/share/vim/$(VIMVER)/compiler/checkstyle.vim
file path=usr/share/vim/$(VIMVER)/compiler/cs.vim
file path=usr/share/vim/$(VIMVER)/compiler/decada.vim
file path=usr/share/vim/$(VIMVER)/compiler/dot.vim
file path=usr/share/vim/$(VIMVER)/compiler/eruby.vim
file path=usr/share/vim/$(VIMVER)/compiler/fortran_F.vim
file path=usr/share/vim/$(VIMVER)/compiler/fortran_cv.vim
file path=usr/share/vim/$(VIMVER)/compiler/fortran_elf90.vim
file path=usr/share/vim/$(VIMVER)/compiler/fortran_g77.vim
file path=usr/share/vim/$(VIMVER)/compiler/fortran_lf95.vim
file path=usr/share/vim/$(VIMVER)/compiler/fpc.vim
file path=usr/share/vim/$(VIMVER)/compiler/gcc.vim
file path=usr/share/vim/$(VIMVER)/compiler/gnat.vim
file path=usr/share/vim/$(VIMVER)/compiler/hp_acc.vim
file path=usr/share/vim/$(VIMVER)/compiler/icc.vim
file path=usr/share/vim/$(VIMVER)/compiler/intel.vim
file path=usr/share/vim/$(VIMVER)/compiler/irix5_c.vim
file path=usr/share/vim/$(VIMVER)/compiler/irix5_cpp.vim
file path=usr/share/vim/$(VIMVER)/compiler/javac.vim
file path=usr/share/vim/$(VIMVER)/compiler/jikes.vim
file path=usr/share/vim/$(VIMVER)/compiler/mcs.vim
file path=usr/share/vim/$(VIMVER)/compiler/mips_c.vim
file path=usr/share/vim/$(VIMVER)/compiler/mipspro_c89.vim
file path=usr/share/vim/$(VIMVER)/compiler/mipspro_cpp.vim
file path=usr/share/vim/$(VIMVER)/compiler/modelsim_vcom.vim
file path=usr/share/vim/$(VIMVER)/compiler/msvc.vim
file path=usr/share/vim/$(VIMVER)/compiler/neato.vim
file path=usr/share/vim/$(VIMVER)/compiler/onsgmls.vim
file path=usr/share/vim/$(VIMVER)/compiler/pbx.vim
file path=usr/share/vim/$(VIMVER)/compiler/perl.vim
file path=usr/share/vim/$(VIMVER)/compiler/php.vim
file path=usr/share/vim/$(VIMVER)/compiler/pyunit.vim
file path=usr/share/vim/$(VIMVER)/compiler/rspec.vim
file path=usr/share/vim/$(VIMVER)/compiler/rst.vim
file path=usr/share/vim/$(VIMVER)/compiler/ruby.vim
file path=usr/share/vim/$(VIMVER)/compiler/rubyunit.vim
file path=usr/share/vim/$(VIMVER)/compiler/se.vim
file path=usr/share/vim/$(VIMVER)/compiler/splint.vim
file path=usr/share/vim/$(VIMVER)/compiler/tcl.vim
file path=usr/share/vim/$(VIMVER)/compiler/tex.vim
file path=usr/share/vim/$(VIMVER)/compiler/tidy.vim
file path=usr/share/vim/$(VIMVER)/compiler/xmllint.vim
file path=usr/share/vim/$(VIMVER)/compiler/xmlwf.vim
file path=usr/share/vim/$(VIMVER)/delmenu.vim
file path=usr/share/vim/$(VIMVER)/doc/arabic.txt
file path=usr/share/vim/$(VIMVER)/doc/autocmd.txt
file path=usr/share/vim/$(VIMVER)/doc/change.txt
file path=usr/share/vim/$(VIMVER)/doc/cmdline.txt
file path=usr/share/vim/$(VIMVER)/doc/debug.txt
file path=usr/share/vim/$(VIMVER)/doc/debugger.txt
file path=usr/share/vim/$(VIMVER)/doc/develop.txt
file path=usr/share/vim/$(VIMVER)/doc/diff.txt
file path=usr/share/vim/$(VIMVER)/doc/digraph.txt
file path=usr/share/vim/$(VIMVER)/doc/editing.txt
file path=usr/share/vim/$(VIMVER)/doc/eval.txt
file path=usr/share/vim/$(VIMVER)/doc/farsi.txt
file path=usr/share/vim/$(VIMVER)/doc/filetype.txt
file path=usr/share/vim/$(VIMVER)/doc/fold.txt
file path=usr/share/vim/$(VIMVER)/doc/ft_ada.txt
file path=usr/share/vim/$(VIMVER)/doc/ft_sql.txt
file path=usr/share/vim/$(VIMVER)/doc/gui.txt
file path=usr/share/vim/$(VIMVER)/doc/gui_w16.txt
file path=usr/share/vim/$(VIMVER)/doc/gui_w32.txt
file path=usr/share/vim/$(VIMVER)/doc/gui_x11.txt
file path=usr/share/vim/$(VIMVER)/doc/hangulin.txt
file path=usr/share/vim/$(VIMVER)/doc/hebrew.txt
file path=usr/share/vim/$(VIMVER)/doc/help.txt
file path=usr/share/vim/$(VIMVER)/doc/helphelp.txt
file path=usr/share/vim/$(VIMVER)/doc/howto.txt
file path=usr/share/vim/$(VIMVER)/doc/if_cscop.txt
file path=usr/share/vim/$(VIMVER)/doc/if_mzsch.txt
file path=usr/share/vim/$(VIMVER)/doc/if_ole.txt
file path=usr/share/vim/$(VIMVER)/doc/if_perl.txt
file path=usr/share/vim/$(VIMVER)/doc/if_pyth.txt
file path=usr/share/vim/$(VIMVER)/doc/if_ruby.txt
file path=usr/share/vim/$(VIMVER)/doc/if_sniff.txt
file path=usr/share/vim/$(VIMVER)/doc/if_tcl.txt
file path=usr/share/vim/$(VIMVER)/doc/indent.txt
file path=usr/share/vim/$(VIMVER)/doc/index.txt
file path=usr/share/vim/$(VIMVER)/doc/insert.txt
file path=usr/share/vim/$(VIMVER)/doc/intro.txt
file path=usr/share/vim/$(VIMVER)/doc/map.txt
file path=usr/share/vim/$(VIMVER)/doc/mbyte.txt
file path=usr/share/vim/$(VIMVER)/doc/message.txt
file path=usr/share/vim/$(VIMVER)/doc/mlang.txt
file path=usr/share/vim/$(VIMVER)/doc/motion.txt
file path=usr/share/vim/$(VIMVER)/doc/netbeans.txt
file path=usr/share/vim/$(VIMVER)/doc/options.txt
file path=usr/share/vim/$(VIMVER)/doc/os_390.txt
file path=usr/share/vim/$(VIMVER)/doc/os_amiga.txt
file path=usr/share/vim/$(VIMVER)/doc/os_beos.txt
file path=usr/share/vim/$(VIMVER)/doc/os_dos.txt
file path=usr/share/vim/$(VIMVER)/doc/os_mac.txt
file path=usr/share/vim/$(VIMVER)/doc/os_mint.txt
file path=usr/share/vim/$(VIMVER)/doc/os_msdos.txt
file path=usr/share/vim/$(VIMVER)/doc/os_os2.txt
file path=usr/share/vim/$(VIMVER)/doc/os_qnx.txt
file path=usr/share/vim/$(VIMVER)/doc/os_risc.txt
file path=usr/share/vim/$(VIMVER)/doc/os_unix.txt
file path=usr/share/vim/$(VIMVER)/doc/os_vms.txt
file path=usr/share/vim/$(VIMVER)/doc/os_win32.txt
file path=usr/share/vim/$(VIMVER)/doc/pattern.txt
file path=usr/share/vim/$(VIMVER)/doc/pi_getscript.txt
file path=usr/share/vim/$(VIMVER)/doc/pi_gzip.txt
file path=usr/share/vim/$(VIMVER)/doc/pi_netrw.txt
file path=usr/share/vim/$(VIMVER)/doc/pi_paren.txt
file path=usr/share/vim/$(VIMVER)/doc/pi_spec.txt
file path=usr/share/vim/$(VIMVER)/doc/pi_tar.txt
file path=usr/share/vim/$(VIMVER)/doc/pi_vimball.txt
file path=usr/share/vim/$(VIMVER)/doc/pi_zip.txt
file path=usr/share/vim/$(VIMVER)/doc/print.txt
file path=usr/share/vim/$(VIMVER)/doc/quickfix.txt
file path=usr/share/vim/$(VIMVER)/doc/quickref.txt
file path=usr/share/vim/$(VIMVER)/doc/quotes.txt
file path=usr/share/vim/$(VIMVER)/doc/recover.txt
file path=usr/share/vim/$(VIMVER)/doc/remote.txt
file path=usr/share/vim/$(VIMVER)/doc/repeat.txt
file path=usr/share/vim/$(VIMVER)/doc/rileft.txt
file path=usr/share/vim/$(VIMVER)/doc/russian.txt
file path=usr/share/vim/$(VIMVER)/doc/scroll.txt
file path=usr/share/vim/$(VIMVER)/doc/sign.txt
file path=usr/share/vim/$(VIMVER)/doc/spell.txt
file path=usr/share/vim/$(VIMVER)/doc/sponsor.txt
file path=usr/share/vim/$(VIMVER)/doc/starting.txt
file path=usr/share/vim/$(VIMVER)/doc/syntax.txt
file path=usr/share/vim/$(VIMVER)/doc/tabpage.txt
file path=usr/share/vim/$(VIMVER)/doc/tags
file path=usr/share/vim/$(VIMVER)/doc/tagsrch.txt
file path=usr/share/vim/$(VIMVER)/doc/term.txt
file path=usr/share/vim/$(VIMVER)/doc/tips.txt
file path=usr/share/vim/$(VIMVER)/doc/todo.txt
file path=usr/share/vim/$(VIMVER)/doc/uganda.txt
file path=usr/share/vim/$(VIMVER)/doc/undo.txt
file path=usr/share/vim/$(VIMVER)/doc/usr_01.txt
file path=usr/share/vim/$(VIMVER)/doc/usr_02.txt
file path=usr/share/vim/$(VIMVER)/doc/usr_03.txt
file path=usr/share/vim/$(VIMVER)/doc/usr_04.txt
file path=usr/share/vim/$(VIMVER)/doc/usr_05.txt
file path=usr/share/vim/$(VIMVER)/doc/usr_06.txt
file path=usr/share/vim/$(VIMVER)/doc/usr_07.txt
file path=usr/share/vim/$(VIMVER)/doc/usr_08.txt
file path=usr/share/vim/$(VIMVER)/doc/usr_09.txt
file path=usr/share/vim/$(VIMVER)/doc/usr_10.txt
file path=usr/share/vim/$(VIMVER)/doc/usr_11.txt
file path=usr/share/vim/$(VIMVER)/doc/usr_12.txt
file path=usr/share/vim/$(VIMVER)/doc/usr_20.txt
file path=usr/share/vim/$(VIMVER)/doc/usr_21.txt
file path=usr/share/vim/$(VIMVER)/doc/usr_22.txt
file path=usr/share/vim/$(VIMVER)/doc/usr_23.txt
file path=usr/share/vim/$(VIMVER)/doc/usr_24.txt
file path=usr/share/vim/$(VIMVER)/doc/usr_25.txt
file path=usr/share/vim/$(VIMVER)/doc/usr_26.txt
file path=usr/share/vim/$(VIMVER)/doc/usr_27.txt
file path=usr/share/vim/$(VIMVER)/doc/usr_28.txt
file path=usr/share/vim/$(VIMVER)/doc/usr_29.txt
file path=usr/share/vim/$(VIMVER)/doc/usr_30.txt
file path=usr/share/vim/$(VIMVER)/doc/usr_31.txt
file path=usr/share/vim/$(VIMVER)/doc/usr_32.txt
file path=usr/share/vim/$(VIMVER)/doc/usr_40.txt
file path=usr/share/vim/$(VIMVER)/doc/usr_41.txt
file path=usr/share/vim/$(VIMVER)/doc/usr_42.txt
file path=usr/share/vim/$(VIMVER)/doc/usr_43.txt
file path=usr/share/vim/$(VIMVER)/doc/usr_44.txt
file path=usr/share/vim/$(VIMVER)/doc/usr_45.txt
file path=usr/share/vim/$(VIMVER)/doc/usr_90.txt
file path=usr/share/vim/$(VIMVER)/doc/usr_toc.txt
file path=usr/share/vim/$(VIMVER)/doc/various.txt
file path=usr/share/vim/$(VIMVER)/doc/version4.txt
file path=usr/share/vim/$(VIMVER)/doc/version5.txt
file path=usr/share/vim/$(VIMVER)/doc/version6.txt
file path=usr/share/vim/$(VIMVER)/doc/version7.txt
file path=usr/share/vim/$(VIMVER)/doc/vi_diff.txt
file path=usr/share/vim/$(VIMVER)/doc/vim2html.pl
file path=usr/share/vim/$(VIMVER)/doc/visual.txt
file path=usr/share/vim/$(VIMVER)/doc/windows.txt
file path=usr/share/vim/$(VIMVER)/doc/workshop.txt
file path=usr/share/vim/$(VIMVER)/evim.vim
file path=usr/share/vim/$(VIMVER)/filetype.vim
file path=usr/share/vim/$(VIMVER)/ftoff.vim
file path=usr/share/vim/$(VIMVER)/ftplugin.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/AppendMatchGroup.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/README.txt
file path=usr/share/vim/$(VIMVER)/ftplugin/a2ps.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/aap.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/abaqus.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/ada.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/alsaconf.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/ant.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/arch.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/art.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/aspvbs.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/automake.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/bdf.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/bst.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/btm.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/c.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/calendar.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/cdrdaoconf.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/ch.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/changelog.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/cobol.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/conf.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/config.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/context.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/cpp.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/crm.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/cs.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/csc.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/csh.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/css.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/cucumber.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/cvsrc.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/debchangelog.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/debcontrol.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/denyhosts.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/dictconf.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/dictdconf.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/diff.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/dircolors.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/dosbatch.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/dosini.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/dtd.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/dtrace.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/elinks.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/eruby.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/eterm.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/fetchmail.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/flexwiki.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/fortran.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/framescript.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/fvwm.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/git.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/gitcommit.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/gitconfig.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/gitrebase.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/gitsendemail.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/gpg.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/group.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/grub.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/haml.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/hamster.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/haskell.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/help.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/hostconf.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/hostsaccess.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/html.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/htmldjango.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/indent.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/initex.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/ishd.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/java.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/javascript.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/jsp.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/kconfig.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/kwt.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/ld.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/lftp.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/libao.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/limits.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/liquid.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/lisp.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/loginaccess.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/logindefs.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/logtalk.dict
file path=usr/share/vim/$(VIMVER)/ftplugin/logtalk.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/lprolog.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/lua.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/m4.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/mail.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/mailaliases.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/mailcap.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/make.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/man.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/manconf.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/markdown.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/matlab.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/mf.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/modconf.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/mp.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/mplayerconf.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/mrxvtrc.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/msmessages.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/mupad.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/muttrc.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/nanorc.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/netrc.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/nsis.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/objc.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/ocaml.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/occam.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/pamconf.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/pascal.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/passwd.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/pdf.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/perl.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/php.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/pinfo.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/plaintex.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/postscr.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/procmail.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/prolog.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/protocols.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/pyrex.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/python.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/quake.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/racc.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/readline.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/reva.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/rnc.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/rpl.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/rst.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/ruby.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/sass.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/scheme.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/screen.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/sensors.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/services.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/setserial.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/sgml.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/sh.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/sieve.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/slpconf.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/slpreg.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/slpspi.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/spec.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/sql.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/sshconfig.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/sudoers.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/svg.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/sysctl.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/tcl.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/tcsh.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/terminfo.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/tex.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/udevconf.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/udevperm.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/udevrules.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/updatedb.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/vb.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/verilog.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/vhdl.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/vim.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/xdefaults.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/xf86conf.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/xhtml.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/xinetd.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/xml.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/xmodmap.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/xs.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/xsd.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/xslt.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/yaml.vim
file path=usr/share/vim/$(VIMVER)/ftplugin/zsh.vim
file path=usr/share/vim/$(VIMVER)/ftplugof.vim
file path=usr/share/vim/$(VIMVER)/gvimrc_example.vim
file path=usr/share/vim/$(VIMVER)/indent.vim
file path=usr/share/vim/$(VIMVER)/indent/GenericIndent.vim
file path=usr/share/vim/$(VIMVER)/indent/README.txt
file path=usr/share/vim/$(VIMVER)/indent/aap.vim
file path=usr/share/vim/$(VIMVER)/indent/ada.vim
file path=usr/share/vim/$(VIMVER)/indent/ant.vim
file path=usr/share/vim/$(VIMVER)/indent/automake.vim
file path=usr/share/vim/$(VIMVER)/indent/awk.vim
file path=usr/share/vim/$(VIMVER)/indent/bib.vim
file path=usr/share/vim/$(VIMVER)/indent/bst.vim
file path=usr/share/vim/$(VIMVER)/indent/c.vim
file path=usr/share/vim/$(VIMVER)/indent/cdl.vim
file path=usr/share/vim/$(VIMVER)/indent/ch.vim
file path=usr/share/vim/$(VIMVER)/indent/chaiscript.vim
file path=usr/share/vim/$(VIMVER)/indent/changelog.vim
file path=usr/share/vim/$(VIMVER)/indent/cmake.vim
file path=usr/share/vim/$(VIMVER)/indent/cobol.vim
file path=usr/share/vim/$(VIMVER)/indent/config.vim
file path=usr/share/vim/$(VIMVER)/indent/cpp.vim
file path=usr/share/vim/$(VIMVER)/indent/cs.vim
file path=usr/share/vim/$(VIMVER)/indent/css.vim
file path=usr/share/vim/$(VIMVER)/indent/cucumber.vim
file path=usr/share/vim/$(VIMVER)/indent/cuda.vim
file path=usr/share/vim/$(VIMVER)/indent/d.vim
file path=usr/share/vim/$(VIMVER)/indent/dictconf.vim
file path=usr/share/vim/$(VIMVER)/indent/dictdconf.vim
file path=usr/share/vim/$(VIMVER)/indent/docbk.vim
file path=usr/share/vim/$(VIMVER)/indent/dtd.vim
file path=usr/share/vim/$(VIMVER)/indent/dtrace.vim
file path=usr/share/vim/$(VIMVER)/indent/dylan.vim
file path=usr/share/vim/$(VIMVER)/indent/eiffel.vim
file path=usr/share/vim/$(VIMVER)/indent/erlang.vim
file path=usr/share/vim/$(VIMVER)/indent/eruby.vim
file path=usr/share/vim/$(VIMVER)/indent/eterm.vim
file path=usr/share/vim/$(VIMVER)/indent/fortran.vim
file path=usr/share/vim/$(VIMVER)/indent/framescript.vim
file path=usr/share/vim/$(VIMVER)/indent/gitconfig.vim
file path=usr/share/vim/$(VIMVER)/indent/haml.vim
file path=usr/share/vim/$(VIMVER)/indent/hamster.vim
file path=usr/share/vim/$(VIMVER)/indent/html.vim
file path=usr/share/vim/$(VIMVER)/indent/htmldjango.vim
file path=usr/share/vim/$(VIMVER)/indent/idlang.vim
file path=usr/share/vim/$(VIMVER)/indent/ishd.vim
file path=usr/share/vim/$(VIMVER)/indent/java.vim
file path=usr/share/vim/$(VIMVER)/indent/javascript.vim
file path=usr/share/vim/$(VIMVER)/indent/jsp.vim
file path=usr/share/vim/$(VIMVER)/indent/ld.vim
file path=usr/share/vim/$(VIMVER)/indent/lifelines.vim
file path=usr/share/vim/$(VIMVER)/indent/liquid.vim
file path=usr/share/vim/$(VIMVER)/indent/lisp.vim
file path=usr/share/vim/$(VIMVER)/indent/logtalk.vim
file path=usr/share/vim/$(VIMVER)/indent/lua.vim
file path=usr/share/vim/$(VIMVER)/indent/mail.vim
file path=usr/share/vim/$(VIMVER)/indent/make.vim
file path=usr/share/vim/$(VIMVER)/indent/matlab.vim
file path=usr/share/vim/$(VIMVER)/indent/mma.vim
file path=usr/share/vim/$(VIMVER)/indent/mp.vim
file path=usr/share/vim/$(VIMVER)/indent/mupad.vim
file path=usr/share/vim/$(VIMVER)/indent/objc.vim
file path=usr/share/vim/$(VIMVER)/indent/ocaml.vim
file path=usr/share/vim/$(VIMVER)/indent/occam.vim
file path=usr/share/vim/$(VIMVER)/indent/pascal.vim
file path=usr/share/vim/$(VIMVER)/indent/perl.vim
file path=usr/share/vim/$(VIMVER)/indent/perl6.vim
file path=usr/share/vim/$(VIMVER)/indent/php.vim
file path=usr/share/vim/$(VIMVER)/indent/postscr.vim
file path=usr/share/vim/$(VIMVER)/indent/pov.vim
file path=usr/share/vim/$(VIMVER)/indent/prolog.vim
file path=usr/share/vim/$(VIMVER)/indent/pyrex.vim
file path=usr/share/vim/$(VIMVER)/indent/python.vim
file path=usr/share/vim/$(VIMVER)/indent/readline.vim
file path=usr/share/vim/$(VIMVER)/indent/rpl.vim
file path=usr/share/vim/$(VIMVER)/indent/rst.vim
file path=usr/share/vim/$(VIMVER)/indent/ruby.vim
file path=usr/share/vim/$(VIMVER)/indent/sass.vim
file path=usr/share/vim/$(VIMVER)/indent/scheme.vim
file path=usr/share/vim/$(VIMVER)/indent/sdl.vim
file path=usr/share/vim/$(VIMVER)/indent/sh.vim
file path=usr/share/vim/$(VIMVER)/indent/sml.vim
file path=usr/share/vim/$(VIMVER)/indent/sql.vim
file path=usr/share/vim/$(VIMVER)/indent/sqlanywhere.vim
file path=usr/share/vim/$(VIMVER)/indent/tcl.vim
file path=usr/share/vim/$(VIMVER)/indent/tcsh.vim
file path=usr/share/vim/$(VIMVER)/indent/tf.vim
file path=usr/share/vim/$(VIMVER)/indent/tilde.vim
file path=usr/share/vim/$(VIMVER)/indent/vb.vim
file path=usr/share/vim/$(VIMVER)/indent/verilog.vim
file path=usr/share/vim/$(VIMVER)/indent/vhdl.vim
file path=usr/share/vim/$(VIMVER)/indent/vim.vim
file path=usr/share/vim/$(VIMVER)/indent/xf86conf.vim
file path=usr/share/vim/$(VIMVER)/indent/xhtml.vim
file path=usr/share/vim/$(VIMVER)/indent/xinetd.vim
file path=usr/share/vim/$(VIMVER)/indent/xml.vim
file path=usr/share/vim/$(VIMVER)/indent/xsd.vim
file path=usr/share/vim/$(VIMVER)/indent/xslt.vim
file path=usr/share/vim/$(VIMVER)/indent/yacc.vim
file path=usr/share/vim/$(VIMVER)/indent/zsh.vim
file path=usr/share/vim/$(VIMVER)/indoff.vim
file path=usr/share/vim/$(VIMVER)/keymap/README.txt
file path=usr/share/vim/$(VIMVER)/keymap/accents.vim
file path=usr/share/vim/$(VIMVER)/keymap/arabic.vim
file path=usr/share/vim/$(VIMVER)/keymap/arabic_utf-8.vim
file path=usr/share/vim/$(VIMVER)/keymap/bulgarian-bds.vim
file path=usr/share/vim/$(VIMVER)/keymap/bulgarian-phonetic.vim
file path=usr/share/vim/$(VIMVER)/keymap/canfr-win.vim
file path=usr/share/vim/$(VIMVER)/keymap/croatian.vim
file path=usr/share/vim/$(VIMVER)/keymap/croatian_cp1250.vim
file path=usr/share/vim/$(VIMVER)/keymap/croatian_iso-8859-2.vim
file path=usr/share/vim/$(VIMVER)/keymap/croatian_utf-8.vim
file path=usr/share/vim/$(VIMVER)/keymap/czech.vim
file path=usr/share/vim/$(VIMVER)/keymap/czech_utf-8.vim
file path=usr/share/vim/$(VIMVER)/keymap/dvorak.vim
file path=usr/share/vim/$(VIMVER)/keymap/esperanto.vim
file path=usr/share/vim/$(VIMVER)/keymap/esperanto_utf-8.vim
file path=usr/share/vim/$(VIMVER)/keymap/greek.vim
file path=usr/share/vim/$(VIMVER)/keymap/greek_cp1253.vim
file path=usr/share/vim/$(VIMVER)/keymap/greek_cp737.vim
file path=usr/share/vim/$(VIMVER)/keymap/greek_iso-8859-7.vim
file path=usr/share/vim/$(VIMVER)/keymap/greek_utf-8.vim
file path=usr/share/vim/$(VIMVER)/keymap/hebrew.vim
file path=usr/share/vim/$(VIMVER)/keymap/hebrew_cp1255.vim
file path=usr/share/vim/$(VIMVER)/keymap/hebrew_iso-8859-8.vim
file path=usr/share/vim/$(VIMVER)/keymap/hebrew_utf-8.vim
file path=usr/share/vim/$(VIMVER)/keymap/hebrewp.vim
file path=usr/share/vim/$(VIMVER)/keymap/hebrewp_cp1255.vim
file path=usr/share/vim/$(VIMVER)/keymap/hebrewp_iso-8859-8.vim
file path=usr/share/vim/$(VIMVER)/keymap/hebrewp_utf-8.vim
file path=usr/share/vim/$(VIMVER)/keymap/kana.vim
file path=usr/share/vim/$(VIMVER)/keymap/lithuanian-baltic.vim
file path=usr/share/vim/$(VIMVER)/keymap/magyar_utf-8.vim
file path=usr/share/vim/$(VIMVER)/keymap/mongolian_utf-8.vim
file path=usr/share/vim/$(VIMVER)/keymap/persian-iranian_utf-8.vim
file path=usr/share/vim/$(VIMVER)/keymap/persian.vim
file path=usr/share/vim/$(VIMVER)/keymap/pinyin.vim
file path=usr/share/vim/$(VIMVER)/keymap/polish-slash.vim
file path=usr/share/vim/$(VIMVER)/keymap/polish-slash_cp1250.vim
file path=usr/share/vim/$(VIMVER)/keymap/polish-slash_cp852.vim
file path=usr/share/vim/$(VIMVER)/keymap/polish-slash_iso-8859-2.vim
file path=usr/share/vim/$(VIMVER)/keymap/polish-slash_utf-8.vim
file path=usr/share/vim/$(VIMVER)/keymap/russian-dvorak.vim
file path=usr/share/vim/$(VIMVER)/keymap/russian-jcuken.vim
file path=usr/share/vim/$(VIMVER)/keymap/russian-jcukenwin.vim
file path=usr/share/vim/$(VIMVER)/keymap/russian-yawerty.vim
file path=usr/share/vim/$(VIMVER)/keymap/serbian-latin.vim
file path=usr/share/vim/$(VIMVER)/keymap/serbian-latin_utf-8.vim
file path=usr/share/vim/$(VIMVER)/keymap/serbian.vim
file path=usr/share/vim/$(VIMVER)/keymap/serbian_cp1250.vim
file path=usr/share/vim/$(VIMVER)/keymap/serbian_cp1251.vim
file path=usr/share/vim/$(VIMVER)/keymap/serbian_iso-8859-2.vim
file path=usr/share/vim/$(VIMVER)/keymap/serbian_iso-8859-5.vim
file path=usr/share/vim/$(VIMVER)/keymap/serbian_utf-8.vim
file path=usr/share/vim/$(VIMVER)/keymap/sinhala-phonetic_utf-8.vim
file path=usr/share/vim/$(VIMVER)/keymap/sinhala.vim
file path=usr/share/vim/$(VIMVER)/keymap/slovak.vim
file path=usr/share/vim/$(VIMVER)/keymap/slovak_cp1250.vim
file path=usr/share/vim/$(VIMVER)/keymap/slovak_iso-8859-2.vim
file path=usr/share/vim/$(VIMVER)/keymap/slovak_utf-8.vim
file path=usr/share/vim/$(VIMVER)/keymap/tamil_tscii.vim
file path=usr/share/vim/$(VIMVER)/keymap/thaana-phonetic_utf-8.vim
file path=usr/share/vim/$(VIMVER)/keymap/thaana.vim
file path=usr/share/vim/$(VIMVER)/keymap/ukrainian-dvorak.vim
file path=usr/share/vim/$(VIMVER)/keymap/ukrainian-jcuken.vim
file path=usr/share/vim/$(VIMVER)/keymap/vietnamese-viqr_utf-8.vim
file path=usr/share/vim/$(VIMVER)/lang/README.txt
file path=usr/share/vim/$(VIMVER)/lang/menu_af.latin1.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_af.utf-8.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_af_af.latin1.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_af_af.utf-8.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_ca.latin1.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_ca.utf-8.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_ca_es.latin1.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_ca_es.utf-8.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_chinese(gb)_gb.936.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_chinese(taiwan)_taiwan.950.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_chinese_gb.936.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_chinese_taiwan.950.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_cs.cp1250.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_cs.latin1.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_cs_cz.cp1250.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_cs_cz.iso_8859-2.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_cs_cz.latin1.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_czech_czech_republic.1250.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_czech_czech_republic.1252.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_czech_czech_republic.ascii.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_de.latin1.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_de.utf-8.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_de_de.latin1.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_de_de.utf-8.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_en_gb.latin1.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_en_gb.utf-8.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_english_united_kingdom.1252.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_english_united_kingdom.ascii.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_eo.utf-8.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_eo_eo.utf-8.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_eo_xx.utf-8.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_es.latin1.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_es.utf-8.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_es_es.latin1.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_es_es.utf-8.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_fi.latin1.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_fi.utf-8.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_fi_fi.latin1.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_fi_fi.utf-8.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_finnish_finland.1252.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_fr.latin1.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_fr.utf-8.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_fr_fr.latin1.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_fr_fr.utf-8.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_french_france.1252.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_german_germany.1252.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_hu.iso_8859-2.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_hu.utf-8.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_hu_hu.iso_8859-2.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_hu_hu.utf-8.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_it.latin1.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_it.utf-8.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_it_it.latin1.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_it_it.utf-8.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_italian_italy.1252.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_ja.cp932.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_ja.euc-jp.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_ja.eucjp.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_ja.ujis.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_ja.utf-8.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_ja_jp.cp932.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_ja_jp.euc-jp.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_ja_jp.eucjp.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_ja_jp.ujis.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_ja_jp.utf-8.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_japanese_japan.932.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_ko.utf-8.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_ko_kr.euckr.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_ko_kr.utf-8.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_ko_kr.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_nl.latin1.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_nl.utf-8.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_nl_nl.latin1.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_nl_nl.utf-8.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_no.latin1.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_no.utf-8.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_no_no.latin1.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_no_no.utf-8.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_pl.cp1250.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_pl_pl.cp1250.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_pl_pl.iso_8859-2.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_pl_pl.utf-8.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_polish_poland.1250.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_pt_br.latin1.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_pt_br.utf-8.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_pt_br.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_pt_pt.latin1.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_pt_pt.utf-8.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_pt_pt.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_ru.utf-8.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_ru_ru.koi8-r.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_ru_ru.utf-8.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_ru_ru.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_sk.cp1250.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_sk_sk.1250.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_sk_sk.cp1250.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_sk_sk.iso_8859-2.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_sk_sk.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_sl_si.cp1250.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_sl_si.latin2.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_sl_si.utf-8.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_slovak_slovak_republic.1250.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_spanish_spain.850.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_sr.utf-8.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_sr_rs.ascii.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_sr_rs.iso_8859-2.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_sr_rs.iso_8859-5.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_sr_rs.utf-8.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_sr_yu.ascii.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_sr_yu.iso_8859-2.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_sr_yu.iso_8859-5.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_sr_yu.utf-8.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_sv.latin1.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_sv.utf-8.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_sv_se.latin1.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_sv_se.utf-8.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_uk_ua.cp1251.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_uk_ua.koi8-u.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_vi_vn.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_zh.big5.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_zh.cp936.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_zh.cp950.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_zh.gb2312.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_zh_cn.18030.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_zh_cn.cp936.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_zh_cn.gb2312.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_zh_cn.gbk.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_zh_cn.utf-8.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_zh_tw.big5.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_zh_tw.cp950.vim
file path=usr/share/vim/$(VIMVER)/lang/menu_zh_tw.utf-8.vim
file path=usr/share/vim/$(VIMVER)/macros/README.txt
file path=usr/share/vim/$(VIMVER)/macros/dvorak
file path=usr/share/vim/$(VIMVER)/macros/editexisting.vim
file path=usr/share/vim/$(VIMVER)/macros/hanoi/click.me
file path=usr/share/vim/$(VIMVER)/macros/hanoi/hanoi.vim
file path=usr/share/vim/$(VIMVER)/macros/hanoi/poster
file path=usr/share/vim/$(VIMVER)/macros/justify.vim
file path=usr/share/vim/$(VIMVER)/macros/less.sh
file path=usr/share/vim/$(VIMVER)/macros/less.vim
file path=usr/share/vim/$(VIMVER)/macros/life/click.me
file path=usr/share/vim/$(VIMVER)/macros/life/life.vim
file path=usr/share/vim/$(VIMVER)/macros/matchit.txt
file path=usr/share/vim/$(VIMVER)/macros/matchit.vim
file path=usr/share/vim/$(VIMVER)/macros/maze/Makefile
file path=usr/share/vim/$(VIMVER)/macros/maze/README.txt
file path=usr/share/vim/$(VIMVER)/macros/maze/main.aap
file path=usr/share/vim/$(VIMVER)/macros/maze/maze.c
file path=usr/share/vim/$(VIMVER)/macros/maze/maze_5.78
file path=usr/share/vim/$(VIMVER)/macros/maze/maze_mac
file path=usr/share/vim/$(VIMVER)/macros/maze/mazeansi.c
file path=usr/share/vim/$(VIMVER)/macros/maze/mazeclean.c
file path=usr/share/vim/$(VIMVER)/macros/maze/poster
file path=usr/share/vim/$(VIMVER)/macros/shellmenu.vim
file path=usr/share/vim/$(VIMVER)/macros/swapmous.vim
file path=usr/share/vim/$(VIMVER)/macros/urm/README.txt
file path=usr/share/vim/$(VIMVER)/macros/urm/examples
file path=usr/share/vim/$(VIMVER)/macros/urm/urm
file path=usr/share/vim/$(VIMVER)/macros/urm/urm.vim
file path=usr/share/vim/$(VIMVER)/menu.vim
file path=usr/share/vim/$(VIMVER)/mswin.vim
file path=usr/share/vim/$(VIMVER)/optwin.vim
file path=usr/share/vim/$(VIMVER)/plugin/README.txt
file path=usr/share/vim/$(VIMVER)/plugin/getscriptPlugin.vim
file path=usr/share/vim/$(VIMVER)/plugin/gzip.vim
file path=usr/share/vim/$(VIMVER)/plugin/matchparen.vim
file path=usr/share/vim/$(VIMVER)/plugin/netrwPlugin.vim
file path=usr/share/vim/$(VIMVER)/plugin/rrhelper.vim
file path=usr/share/vim/$(VIMVER)/plugin/spellfile.vim
file path=usr/share/vim/$(VIMVER)/plugin/tarPlugin.vim
file path=usr/share/vim/$(VIMVER)/plugin/tohtml.vim
file path=usr/share/vim/$(VIMVER)/plugin/vimballPlugin.vim
file path=usr/share/vim/$(VIMVER)/plugin/zipPlugin.vim
file path=usr/share/vim/$(VIMVER)/print/ascii.ps
file path=usr/share/vim/$(VIMVER)/print/cidfont.ps
file path=usr/share/vim/$(VIMVER)/print/cns_roman.ps
file path=usr/share/vim/$(VIMVER)/print/cp1250.ps
file path=usr/share/vim/$(VIMVER)/print/cp1251.ps
file path=usr/share/vim/$(VIMVER)/print/cp1252.ps
file path=usr/share/vim/$(VIMVER)/print/cp1253.ps
file path=usr/share/vim/$(VIMVER)/print/cp1254.ps
file path=usr/share/vim/$(VIMVER)/print/cp1255.ps
file path=usr/share/vim/$(VIMVER)/print/cp1257.ps
file path=usr/share/vim/$(VIMVER)/print/dec-mcs.ps
file path=usr/share/vim/$(VIMVER)/print/ebcdic-uk.ps
file path=usr/share/vim/$(VIMVER)/print/gb_roman.ps
file path=usr/share/vim/$(VIMVER)/print/hp-roman8.ps
file path=usr/share/vim/$(VIMVER)/print/iso-8859-10.ps
file path=usr/share/vim/$(VIMVER)/print/iso-8859-11.ps
file path=usr/share/vim/$(VIMVER)/print/iso-8859-13.ps
file path=usr/share/vim/$(VIMVER)/print/iso-8859-14.ps
file path=usr/share/vim/$(VIMVER)/print/iso-8859-15.ps
file path=usr/share/vim/$(VIMVER)/print/iso-8859-2.ps
file path=usr/share/vim/$(VIMVER)/print/iso-8859-3.ps
file path=usr/share/vim/$(VIMVER)/print/iso-8859-4.ps
file path=usr/share/vim/$(VIMVER)/print/iso-8859-5.ps
file path=usr/share/vim/$(VIMVER)/print/iso-8859-7.ps
file path=usr/share/vim/$(VIMVER)/print/iso-8859-8.ps
file path=usr/share/vim/$(VIMVER)/print/iso-8859-9.ps
file path=usr/share/vim/$(VIMVER)/print/jis_roman.ps
file path=usr/share/vim/$(VIMVER)/print/koi8-r.ps
file path=usr/share/vim/$(VIMVER)/print/koi8-u.ps
file path=usr/share/vim/$(VIMVER)/print/ks_roman.ps
file path=usr/share/vim/$(VIMVER)/print/latin1.ps
file path=usr/share/vim/$(VIMVER)/print/mac-roman.ps
file path=usr/share/vim/$(VIMVER)/print/prolog.ps
file path=usr/share/vim/$(VIMVER)/scripts.vim
file path=usr/share/vim/$(VIMVER)/spell/check_locales.vim
file path=usr/share/vim/$(VIMVER)/spell/cleanadd.vim
file path=usr/share/vim/$(VIMVER)/spell/en.ascii.spl
file path=usr/share/vim/$(VIMVER)/spell/en.ascii.sug
file path=usr/share/vim/$(VIMVER)/spell/en.latin1.spl
file path=usr/share/vim/$(VIMVER)/spell/en.latin1.sug
file path=usr/share/vim/$(VIMVER)/spell/en.utf-8.spl
file path=usr/share/vim/$(VIMVER)/spell/en.utf-8.sug
file path=usr/share/vim/$(VIMVER)/spell/fixdup.vim
file path=usr/share/vim/$(VIMVER)/spell/he.vim
file path=usr/share/vim/$(VIMVER)/spell/yi.vim
file path=usr/share/vim/$(VIMVER)/synmenu.vim
file path=usr/share/vim/$(VIMVER)/syntax/2html.vim
file path=usr/share/vim/$(VIMVER)/syntax/README.txt
file path=usr/share/vim/$(VIMVER)/syntax/a2ps.vim
file path=usr/share/vim/$(VIMVER)/syntax/a65.vim
file path=usr/share/vim/$(VIMVER)/syntax/aap.vim
file path=usr/share/vim/$(VIMVER)/syntax/abap.vim
file path=usr/share/vim/$(VIMVER)/syntax/abaqus.vim
file path=usr/share/vim/$(VIMVER)/syntax/abc.vim
file path=usr/share/vim/$(VIMVER)/syntax/abel.vim
file path=usr/share/vim/$(VIMVER)/syntax/acedb.vim
file path=usr/share/vim/$(VIMVER)/syntax/ada.vim
file path=usr/share/vim/$(VIMVER)/syntax/aflex.vim
file path=usr/share/vim/$(VIMVER)/syntax/ahdl.vim
file path=usr/share/vim/$(VIMVER)/syntax/alsaconf.vim
file path=usr/share/vim/$(VIMVER)/syntax/amiga.vim
file path=usr/share/vim/$(VIMVER)/syntax/aml.vim
file path=usr/share/vim/$(VIMVER)/syntax/ampl.vim
file path=usr/share/vim/$(VIMVER)/syntax/ant.vim
file path=usr/share/vim/$(VIMVER)/syntax/antlr.vim
file path=usr/share/vim/$(VIMVER)/syntax/apache.vim
file path=usr/share/vim/$(VIMVER)/syntax/apachestyle.vim
file path=usr/share/vim/$(VIMVER)/syntax/arch.vim
file path=usr/share/vim/$(VIMVER)/syntax/art.vim
file path=usr/share/vim/$(VIMVER)/syntax/asm.vim
file path=usr/share/vim/$(VIMVER)/syntax/asm68k.vim
file path=usr/share/vim/$(VIMVER)/syntax/asmh8300.vim
file path=usr/share/vim/$(VIMVER)/syntax/asn.vim
file path=usr/share/vim/$(VIMVER)/syntax/aspperl.vim
file path=usr/share/vim/$(VIMVER)/syntax/aspvbs.vim
file path=usr/share/vim/$(VIMVER)/syntax/asterisk.vim
file path=usr/share/vim/$(VIMVER)/syntax/asteriskvm.vim
file path=usr/share/vim/$(VIMVER)/syntax/atlas.vim
file path=usr/share/vim/$(VIMVER)/syntax/autohotkey.vim
file path=usr/share/vim/$(VIMVER)/syntax/autoit.vim
file path=usr/share/vim/$(VIMVER)/syntax/automake.vim
file path=usr/share/vim/$(VIMVER)/syntax/ave.vim
file path=usr/share/vim/$(VIMVER)/syntax/awk.vim
file path=usr/share/vim/$(VIMVER)/syntax/ayacc.vim
file path=usr/share/vim/$(VIMVER)/syntax/b.vim
file path=usr/share/vim/$(VIMVER)/syntax/baan.vim
file path=usr/share/vim/$(VIMVER)/syntax/basic.vim
file path=usr/share/vim/$(VIMVER)/syntax/bc.vim
file path=usr/share/vim/$(VIMVER)/syntax/bdf.vim
file path=usr/share/vim/$(VIMVER)/syntax/bib.vim
file path=usr/share/vim/$(VIMVER)/syntax/bindzone.vim
file path=usr/share/vim/$(VIMVER)/syntax/blank.vim
file path=usr/share/vim/$(VIMVER)/syntax/bst.vim
file path=usr/share/vim/$(VIMVER)/syntax/btm.vim
file path=usr/share/vim/$(VIMVER)/syntax/bzr.vim
file path=usr/share/vim/$(VIMVER)/syntax/c.vim
file path=usr/share/vim/$(VIMVER)/syntax/cabal.vim
file path=usr/share/vim/$(VIMVER)/syntax/calendar.vim
file path=usr/share/vim/$(VIMVER)/syntax/catalog.vim
file path=usr/share/vim/$(VIMVER)/syntax/cdl.vim
file path=usr/share/vim/$(VIMVER)/syntax/cdrdaoconf.vim
file path=usr/share/vim/$(VIMVER)/syntax/cdrtoc.vim
file path=usr/share/vim/$(VIMVER)/syntax/cf.vim
file path=usr/share/vim/$(VIMVER)/syntax/cfg.vim
file path=usr/share/vim/$(VIMVER)/syntax/ch.vim
file path=usr/share/vim/$(VIMVER)/syntax/chaiscript.vim
file path=usr/share/vim/$(VIMVER)/syntax/change.vim
file path=usr/share/vim/$(VIMVER)/syntax/changelog.vim
file path=usr/share/vim/$(VIMVER)/syntax/chaskell.vim
file path=usr/share/vim/$(VIMVER)/syntax/cheetah.vim
file path=usr/share/vim/$(VIMVER)/syntax/chill.vim
file path=usr/share/vim/$(VIMVER)/syntax/chordpro.vim
file path=usr/share/vim/$(VIMVER)/syntax/cl.vim
file path=usr/share/vim/$(VIMVER)/syntax/clean.vim
file path=usr/share/vim/$(VIMVER)/syntax/clipper.vim
file path=usr/share/vim/$(VIMVER)/syntax/cmake.vim
file path=usr/share/vim/$(VIMVER)/syntax/cmusrc.vim
file path=usr/share/vim/$(VIMVER)/syntax/cobol.vim
file path=usr/share/vim/$(VIMVER)/syntax/coco.vim
file path=usr/share/vim/$(VIMVER)/syntax/colortest.vim
file path=usr/share/vim/$(VIMVER)/syntax/conaryrecipe.vim
file path=usr/share/vim/$(VIMVER)/syntax/conf.vim
file path=usr/share/vim/$(VIMVER)/syntax/config.vim
file path=usr/share/vim/$(VIMVER)/syntax/context.vim
file path=usr/share/vim/$(VIMVER)/syntax/cpp.vim
file path=usr/share/vim/$(VIMVER)/syntax/crm.vim
file path=usr/share/vim/$(VIMVER)/syntax/crontab.vim
file path=usr/share/vim/$(VIMVER)/syntax/cs.vim
file path=usr/share/vim/$(VIMVER)/syntax/csc.vim
file path=usr/share/vim/$(VIMVER)/syntax/csh.vim
file path=usr/share/vim/$(VIMVER)/syntax/csp.vim
file path=usr/share/vim/$(VIMVER)/syntax/css.vim
file path=usr/share/vim/$(VIMVER)/syntax/cterm.vim
file path=usr/share/vim/$(VIMVER)/syntax/ctrlh.vim
file path=usr/share/vim/$(VIMVER)/syntax/cucumber.vim
file path=usr/share/vim/$(VIMVER)/syntax/cuda.vim
file path=usr/share/vim/$(VIMVER)/syntax/cupl.vim
file path=usr/share/vim/$(VIMVER)/syntax/cuplsim.vim
file path=usr/share/vim/$(VIMVER)/syntax/cvs.vim
file path=usr/share/vim/$(VIMVER)/syntax/cvsrc.vim
file path=usr/share/vim/$(VIMVER)/syntax/cweb.vim
file path=usr/share/vim/$(VIMVER)/syntax/cynlib.vim
file path=usr/share/vim/$(VIMVER)/syntax/cynpp.vim
file path=usr/share/vim/$(VIMVER)/syntax/d.vim
file path=usr/share/vim/$(VIMVER)/syntax/dcd.vim
file path=usr/share/vim/$(VIMVER)/syntax/dcl.vim
file path=usr/share/vim/$(VIMVER)/syntax/debchangelog.vim
file path=usr/share/vim/$(VIMVER)/syntax/debcontrol.vim
file path=usr/share/vim/$(VIMVER)/syntax/debsources.vim
file path=usr/share/vim/$(VIMVER)/syntax/def.vim
file path=usr/share/vim/$(VIMVER)/syntax/denyhosts.vim
file path=usr/share/vim/$(VIMVER)/syntax/desc.vim
file path=usr/share/vim/$(VIMVER)/syntax/desktop.vim
file path=usr/share/vim/$(VIMVER)/syntax/dictconf.vim
file path=usr/share/vim/$(VIMVER)/syntax/dictdconf.vim
file path=usr/share/vim/$(VIMVER)/syntax/diff.vim
file path=usr/share/vim/$(VIMVER)/syntax/dircolors.vim
file path=usr/share/vim/$(VIMVER)/syntax/diva.vim
file path=usr/share/vim/$(VIMVER)/syntax/django.vim
file path=usr/share/vim/$(VIMVER)/syntax/dns.vim
file path=usr/share/vim/$(VIMVER)/syntax/docbk.vim
file path=usr/share/vim/$(VIMVER)/syntax/docbksgml.vim
file path=usr/share/vim/$(VIMVER)/syntax/docbkxml.vim
file path=usr/share/vim/$(VIMVER)/syntax/dosbatch.vim
file path=usr/share/vim/$(VIMVER)/syntax/dosini.vim
file path=usr/share/vim/$(VIMVER)/syntax/dot.vim
file path=usr/share/vim/$(VIMVER)/syntax/doxygen.vim
file path=usr/share/vim/$(VIMVER)/syntax/dracula.vim
file path=usr/share/vim/$(VIMVER)/syntax/dsl.vim
file path=usr/share/vim/$(VIMVER)/syntax/dtd.vim
file path=usr/share/vim/$(VIMVER)/syntax/dtml.vim
file path=usr/share/vim/$(VIMVER)/syntax/dtrace.vim
file path=usr/share/vim/$(VIMVER)/syntax/dylan.vim
file path=usr/share/vim/$(VIMVER)/syntax/dylanintr.vim
file path=usr/share/vim/$(VIMVER)/syntax/dylanlid.vim
file path=usr/share/vim/$(VIMVER)/syntax/ecd.vim
file path=usr/share/vim/$(VIMVER)/syntax/edif.vim
file path=usr/share/vim/$(VIMVER)/syntax/eiffel.vim
file path=usr/share/vim/$(VIMVER)/syntax/elf.vim
file path=usr/share/vim/$(VIMVER)/syntax/elinks.vim
file path=usr/share/vim/$(VIMVER)/syntax/elmfilt.vim
file path=usr/share/vim/$(VIMVER)/syntax/erlang.vim
file path=usr/share/vim/$(VIMVER)/syntax/eruby.vim
file path=usr/share/vim/$(VIMVER)/syntax/esmtprc.vim
file path=usr/share/vim/$(VIMVER)/syntax/esqlc.vim
file path=usr/share/vim/$(VIMVER)/syntax/esterel.vim
file path=usr/share/vim/$(VIMVER)/syntax/eterm.vim
file path=usr/share/vim/$(VIMVER)/syntax/eviews.vim
file path=usr/share/vim/$(VIMVER)/syntax/exim.vim
file path=usr/share/vim/$(VIMVER)/syntax/expect.vim
file path=usr/share/vim/$(VIMVER)/syntax/exports.vim
file path=usr/share/vim/$(VIMVER)/syntax/fan.vim
file path=usr/share/vim/$(VIMVER)/syntax/fasm.vim
file path=usr/share/vim/$(VIMVER)/syntax/fdcc.vim
file path=usr/share/vim/$(VIMVER)/syntax/fetchmail.vim
file path=usr/share/vim/$(VIMVER)/syntax/fgl.vim
file path=usr/share/vim/$(VIMVER)/syntax/flexwiki.vim
file path=usr/share/vim/$(VIMVER)/syntax/focexec.vim
file path=usr/share/vim/$(VIMVER)/syntax/form.vim
file path=usr/share/vim/$(VIMVER)/syntax/forth.vim
file path=usr/share/vim/$(VIMVER)/syntax/fortran.vim
file path=usr/share/vim/$(VIMVER)/syntax/foxpro.vim
file path=usr/share/vim/$(VIMVER)/syntax/framescript.vim
file path=usr/share/vim/$(VIMVER)/syntax/freebasic.vim
file path=usr/share/vim/$(VIMVER)/syntax/fstab.vim
file path=usr/share/vim/$(VIMVER)/syntax/fvwm.vim
file path=usr/share/vim/$(VIMVER)/syntax/fvwm2m4.vim
file path=usr/share/vim/$(VIMVER)/syntax/gdb.vim
file path=usr/share/vim/$(VIMVER)/syntax/gdmo.vim
file path=usr/share/vim/$(VIMVER)/syntax/gedcom.vim
file path=usr/share/vim/$(VIMVER)/syntax/git.vim
file path=usr/share/vim/$(VIMVER)/syntax/gitcommit.vim
file path=usr/share/vim/$(VIMVER)/syntax/gitconfig.vim
file path=usr/share/vim/$(VIMVER)/syntax/gitrebase.vim
file path=usr/share/vim/$(VIMVER)/syntax/gitsendemail.vim
file path=usr/share/vim/$(VIMVER)/syntax/gkrellmrc.vim
file path=usr/share/vim/$(VIMVER)/syntax/gnuplot.vim
file path=usr/share/vim/$(VIMVER)/syntax/gp.vim
file path=usr/share/vim/$(VIMVER)/syntax/gpg.vim
file path=usr/share/vim/$(VIMVER)/syntax/grads.vim
file path=usr/share/vim/$(VIMVER)/syntax/gretl.vim
file path=usr/share/vim/$(VIMVER)/syntax/groff.vim
file path=usr/share/vim/$(VIMVER)/syntax/groovy.vim
file path=usr/share/vim/$(VIMVER)/syntax/group.vim
file path=usr/share/vim/$(VIMVER)/syntax/grub.vim
file path=usr/share/vim/$(VIMVER)/syntax/gsp.vim
file path=usr/share/vim/$(VIMVER)/syntax/gtkrc.vim
file path=usr/share/vim/$(VIMVER)/syntax/haml.vim
file path=usr/share/vim/$(VIMVER)/syntax/hamster.vim
file path=usr/share/vim/$(VIMVER)/syntax/haskell.vim
file path=usr/share/vim/$(VIMVER)/syntax/haste.vim
file path=usr/share/vim/$(VIMVER)/syntax/hastepreproc.vim
file path=usr/share/vim/$(VIMVER)/syntax/hb.vim
file path=usr/share/vim/$(VIMVER)/syntax/help.vim
file path=usr/share/vim/$(VIMVER)/syntax/hercules.vim
file path=usr/share/vim/$(VIMVER)/syntax/hex.vim
file path=usr/share/vim/$(VIMVER)/syntax/hitest.vim
file path=usr/share/vim/$(VIMVER)/syntax/hog.vim
file path=usr/share/vim/$(VIMVER)/syntax/hostconf.vim
file path=usr/share/vim/$(VIMVER)/syntax/html.vim
file path=usr/share/vim/$(VIMVER)/syntax/htmlcheetah.vim
file path=usr/share/vim/$(VIMVER)/syntax/htmldjango.vim
file path=usr/share/vim/$(VIMVER)/syntax/htmlm4.vim
file path=usr/share/vim/$(VIMVER)/syntax/htmlos.vim
file path=usr/share/vim/$(VIMVER)/syntax/ia64.vim
file path=usr/share/vim/$(VIMVER)/syntax/ibasic.vim
file path=usr/share/vim/$(VIMVER)/syntax/icemenu.vim
file path=usr/share/vim/$(VIMVER)/syntax/icon.vim
file path=usr/share/vim/$(VIMVER)/syntax/idl.vim
file path=usr/share/vim/$(VIMVER)/syntax/idlang.vim
file path=usr/share/vim/$(VIMVER)/syntax/indent.vim
file path=usr/share/vim/$(VIMVER)/syntax/inform.vim
file path=usr/share/vim/$(VIMVER)/syntax/initex.vim
file path=usr/share/vim/$(VIMVER)/syntax/initng.vim
file path=usr/share/vim/$(VIMVER)/syntax/inittab.vim
file path=usr/share/vim/$(VIMVER)/syntax/ipfilter.vim
file path=usr/share/vim/$(VIMVER)/syntax/ishd.vim
file path=usr/share/vim/$(VIMVER)/syntax/iss.vim
file path=usr/share/vim/$(VIMVER)/syntax/ist.vim
file path=usr/share/vim/$(VIMVER)/syntax/jal.vim
file path=usr/share/vim/$(VIMVER)/syntax/jam.vim
file path=usr/share/vim/$(VIMVER)/syntax/jargon.vim
file path=usr/share/vim/$(VIMVER)/syntax/java.vim
file path=usr/share/vim/$(VIMVER)/syntax/javacc.vim
file path=usr/share/vim/$(VIMVER)/syntax/javascript.vim
file path=usr/share/vim/$(VIMVER)/syntax/jess.vim
file path=usr/share/vim/$(VIMVER)/syntax/jgraph.vim
file path=usr/share/vim/$(VIMVER)/syntax/jproperties.vim
file path=usr/share/vim/$(VIMVER)/syntax/jsp.vim
file path=usr/share/vim/$(VIMVER)/syntax/kconfig.vim
file path=usr/share/vim/$(VIMVER)/syntax/kix.vim
file path=usr/share/vim/$(VIMVER)/syntax/kscript.vim
file path=usr/share/vim/$(VIMVER)/syntax/kwt.vim
file path=usr/share/vim/$(VIMVER)/syntax/lace.vim
file path=usr/share/vim/$(VIMVER)/syntax/latte.vim
file path=usr/share/vim/$(VIMVER)/syntax/ld.vim
file path=usr/share/vim/$(VIMVER)/syntax/ldapconf.vim
file path=usr/share/vim/$(VIMVER)/syntax/ldif.vim
file path=usr/share/vim/$(VIMVER)/syntax/lex.vim
file path=usr/share/vim/$(VIMVER)/syntax/lftp.vim
file path=usr/share/vim/$(VIMVER)/syntax/lhaskell.vim
file path=usr/share/vim/$(VIMVER)/syntax/libao.vim
file path=usr/share/vim/$(VIMVER)/syntax/lifelines.vim
file path=usr/share/vim/$(VIMVER)/syntax/lilo.vim
file path=usr/share/vim/$(VIMVER)/syntax/limits.vim
file path=usr/share/vim/$(VIMVER)/syntax/liquid.vim
file path=usr/share/vim/$(VIMVER)/syntax/lisp.vim
file path=usr/share/vim/$(VIMVER)/syntax/lite.vim
file path=usr/share/vim/$(VIMVER)/syntax/litestep.vim
file path=usr/share/vim/$(VIMVER)/syntax/loginaccess.vim
file path=usr/share/vim/$(VIMVER)/syntax/logindefs.vim
file path=usr/share/vim/$(VIMVER)/syntax/logtalk.vim
file path=usr/share/vim/$(VIMVER)/syntax/lotos.vim
file path=usr/share/vim/$(VIMVER)/syntax/lout.vim
file path=usr/share/vim/$(VIMVER)/syntax/lpc.vim
file path=usr/share/vim/$(VIMVER)/syntax/lprolog.vim
file path=usr/share/vim/$(VIMVER)/syntax/lscript.vim
file path=usr/share/vim/$(VIMVER)/syntax/lsl.vim
file path=usr/share/vim/$(VIMVER)/syntax/lss.vim
file path=usr/share/vim/$(VIMVER)/syntax/lua.vim
file path=usr/share/vim/$(VIMVER)/syntax/lynx.vim
file path=usr/share/vim/$(VIMVER)/syntax/m4.vim
file path=usr/share/vim/$(VIMVER)/syntax/mail.vim
file path=usr/share/vim/$(VIMVER)/syntax/mailaliases.vim
file path=usr/share/vim/$(VIMVER)/syntax/mailcap.vim
file path=usr/share/vim/$(VIMVER)/syntax/make.vim
file path=usr/share/vim/$(VIMVER)/syntax/man.vim
file path=usr/share/vim/$(VIMVER)/syntax/manconf.vim
file path=usr/share/vim/$(VIMVER)/syntax/manual.vim
file path=usr/share/vim/$(VIMVER)/syntax/maple.vim
file path=usr/share/vim/$(VIMVER)/syntax/markdown.vim
file path=usr/share/vim/$(VIMVER)/syntax/masm.vim
file path=usr/share/vim/$(VIMVER)/syntax/mason.vim
file path=usr/share/vim/$(VIMVER)/syntax/master.vim
file path=usr/share/vim/$(VIMVER)/syntax/matlab.vim
file path=usr/share/vim/$(VIMVER)/syntax/maxima.vim
file path=usr/share/vim/$(VIMVER)/syntax/mel.vim
file path=usr/share/vim/$(VIMVER)/syntax/messages.vim
file path=usr/share/vim/$(VIMVER)/syntax/mf.vim
file path=usr/share/vim/$(VIMVER)/syntax/mgl.vim
file path=usr/share/vim/$(VIMVER)/syntax/mgp.vim
file path=usr/share/vim/$(VIMVER)/syntax/mib.vim
file path=usr/share/vim/$(VIMVER)/syntax/mma.vim
file path=usr/share/vim/$(VIMVER)/syntax/mmix.vim
file path=usr/share/vim/$(VIMVER)/syntax/mmp.vim
file path=usr/share/vim/$(VIMVER)/syntax/modconf.vim
file path=usr/share/vim/$(VIMVER)/syntax/model.vim
file path=usr/share/vim/$(VIMVER)/syntax/modsim3.vim
file path=usr/share/vim/$(VIMVER)/syntax/modula2.vim
file path=usr/share/vim/$(VIMVER)/syntax/modula3.vim
file path=usr/share/vim/$(VIMVER)/syntax/monk.vim
file path=usr/share/vim/$(VIMVER)/syntax/moo.vim
file path=usr/share/vim/$(VIMVER)/syntax/mp.vim
file path=usr/share/vim/$(VIMVER)/syntax/mplayerconf.vim
file path=usr/share/vim/$(VIMVER)/syntax/mrxvtrc.vim
file path=usr/share/vim/$(VIMVER)/syntax/msidl.vim
file path=usr/share/vim/$(VIMVER)/syntax/msmessages.vim
file path=usr/share/vim/$(VIMVER)/syntax/msql.vim
file path=usr/share/vim/$(VIMVER)/syntax/mupad.vim
file path=usr/share/vim/$(VIMVER)/syntax/mush.vim
file path=usr/share/vim/$(VIMVER)/syntax/muttrc.vim
file path=usr/share/vim/$(VIMVER)/syntax/mysql.vim
file path=usr/share/vim/$(VIMVER)/syntax/named.vim
file path=usr/share/vim/$(VIMVER)/syntax/nanorc.vim
file path=usr/share/vim/$(VIMVER)/syntax/nasm.vim
file path=usr/share/vim/$(VIMVER)/syntax/nastran.vim
file path=usr/share/vim/$(VIMVER)/syntax/natural.vim
file path=usr/share/vim/$(VIMVER)/syntax/ncf.vim
file path=usr/share/vim/$(VIMVER)/syntax/netrc.vim
file path=usr/share/vim/$(VIMVER)/syntax/netrw.vim
file path=usr/share/vim/$(VIMVER)/syntax/nosyntax.vim
file path=usr/share/vim/$(VIMVER)/syntax/nqc.vim
file path=usr/share/vim/$(VIMVER)/syntax/nroff.vim
file path=usr/share/vim/$(VIMVER)/syntax/nsis.vim
file path=usr/share/vim/$(VIMVER)/syntax/obj.vim
file path=usr/share/vim/$(VIMVER)/syntax/objc.vim
file path=usr/share/vim/$(VIMVER)/syntax/objcpp.vim
file path=usr/share/vim/$(VIMVER)/syntax/ocaml.vim
file path=usr/share/vim/$(VIMVER)/syntax/occam.vim
file path=usr/share/vim/$(VIMVER)/syntax/omnimark.vim
file path=usr/share/vim/$(VIMVER)/syntax/openroad.vim
file path=usr/share/vim/$(VIMVER)/syntax/opl.vim
file path=usr/share/vim/$(VIMVER)/syntax/ora.vim
file path=usr/share/vim/$(VIMVER)/syntax/pamconf.vim
file path=usr/share/vim/$(VIMVER)/syntax/papp.vim
file path=usr/share/vim/$(VIMVER)/syntax/pascal.vim
file path=usr/share/vim/$(VIMVER)/syntax/passwd.vim
file path=usr/share/vim/$(VIMVER)/syntax/pcap.vim
file path=usr/share/vim/$(VIMVER)/syntax/pccts.vim
file path=usr/share/vim/$(VIMVER)/syntax/pdf.vim
file path=usr/share/vim/$(VIMVER)/syntax/perl.vim
file path=usr/share/vim/$(VIMVER)/syntax/perl6.vim
file path=usr/share/vim/$(VIMVER)/syntax/pf.vim
file path=usr/share/vim/$(VIMVER)/syntax/pfmain.vim
file path=usr/share/vim/$(VIMVER)/syntax/php.vim
file path=usr/share/vim/$(VIMVER)/syntax/phtml.vim
file path=usr/share/vim/$(VIMVER)/syntax/pic.vim
file path=usr/share/vim/$(VIMVER)/syntax/pike.vim
file path=usr/share/vim/$(VIMVER)/syntax/pilrc.vim
file path=usr/share/vim/$(VIMVER)/syntax/pine.vim
file path=usr/share/vim/$(VIMVER)/syntax/pinfo.vim
file path=usr/share/vim/$(VIMVER)/syntax/plaintex.vim
file path=usr/share/vim/$(VIMVER)/syntax/plm.vim
file path=usr/share/vim/$(VIMVER)/syntax/plp.vim
file path=usr/share/vim/$(VIMVER)/syntax/plsql.vim
file path=usr/share/vim/$(VIMVER)/syntax/po.vim
file path=usr/share/vim/$(VIMVER)/syntax/pod.vim
file path=usr/share/vim/$(VIMVER)/syntax/postscr.vim
file path=usr/share/vim/$(VIMVER)/syntax/pov.vim
file path=usr/share/vim/$(VIMVER)/syntax/povini.vim
file path=usr/share/vim/$(VIMVER)/syntax/ppd.vim
file path=usr/share/vim/$(VIMVER)/syntax/ppwiz.vim
file path=usr/share/vim/$(VIMVER)/syntax/prescribe.vim
file path=usr/share/vim/$(VIMVER)/syntax/privoxy.vim
file path=usr/share/vim/$(VIMVER)/syntax/procmail.vim
file path=usr/share/vim/$(VIMVER)/syntax/progress.vim
file path=usr/share/vim/$(VIMVER)/syntax/prolog.vim
file path=usr/share/vim/$(VIMVER)/syntax/promela.vim
file path=usr/share/vim/$(VIMVER)/syntax/protocols.vim
file path=usr/share/vim/$(VIMVER)/syntax/psf.vim
file path=usr/share/vim/$(VIMVER)/syntax/ptcap.vim
file path=usr/share/vim/$(VIMVER)/syntax/purifylog.vim
file path=usr/share/vim/$(VIMVER)/syntax/pyrex.vim
file path=usr/share/vim/$(VIMVER)/syntax/python.vim
file path=usr/share/vim/$(VIMVER)/syntax/qf.vim
file path=usr/share/vim/$(VIMVER)/syntax/quake.vim
file path=usr/share/vim/$(VIMVER)/syntax/r.vim
file path=usr/share/vim/$(VIMVER)/syntax/racc.vim
file path=usr/share/vim/$(VIMVER)/syntax/radiance.vim
file path=usr/share/vim/$(VIMVER)/syntax/ratpoison.vim
file path=usr/share/vim/$(VIMVER)/syntax/rc.vim
file path=usr/share/vim/$(VIMVER)/syntax/rcs.vim
file path=usr/share/vim/$(VIMVER)/syntax/rcslog.vim
file path=usr/share/vim/$(VIMVER)/syntax/readline.vim
file path=usr/share/vim/$(VIMVER)/syntax/rebol.vim
file path=usr/share/vim/$(VIMVER)/syntax/registry.vim
file path=usr/share/vim/$(VIMVER)/syntax/remind.vim
file path=usr/share/vim/$(VIMVER)/syntax/resolv.vim
file path=usr/share/vim/$(VIMVER)/syntax/reva.vim
file path=usr/share/vim/$(VIMVER)/syntax/rexx.vim
file path=usr/share/vim/$(VIMVER)/syntax/rhelp.vim
file path=usr/share/vim/$(VIMVER)/syntax/rib.vim
file path=usr/share/vim/$(VIMVER)/syntax/rnc.vim
file path=usr/share/vim/$(VIMVER)/syntax/rnoweb.vim
file path=usr/share/vim/$(VIMVER)/syntax/robots.vim
file path=usr/share/vim/$(VIMVER)/syntax/rpcgen.vim
file path=usr/share/vim/$(VIMVER)/syntax/rpl.vim
file path=usr/share/vim/$(VIMVER)/syntax/rst.vim
file path=usr/share/vim/$(VIMVER)/syntax/rtf.vim
file path=usr/share/vim/$(VIMVER)/syntax/ruby.vim
file path=usr/share/vim/$(VIMVER)/syntax/samba.vim
file path=usr/share/vim/$(VIMVER)/syntax/sas.vim
file path=usr/share/vim/$(VIMVER)/syntax/sass.vim
file path=usr/share/vim/$(VIMVER)/syntax/sather.vim
file path=usr/share/vim/$(VIMVER)/syntax/scheme.vim
file path=usr/share/vim/$(VIMVER)/syntax/scilab.vim
file path=usr/share/vim/$(VIMVER)/syntax/screen.vim
file path=usr/share/vim/$(VIMVER)/syntax/sd.vim
file path=usr/share/vim/$(VIMVER)/syntax/sdc.vim
file path=usr/share/vim/$(VIMVER)/syntax/sdl.vim
file path=usr/share/vim/$(VIMVER)/syntax/sed.vim
file path=usr/share/vim/$(VIMVER)/syntax/sendpr.vim
file path=usr/share/vim/$(VIMVER)/syntax/sensors.vim
file path=usr/share/vim/$(VIMVER)/syntax/services.vim
file path=usr/share/vim/$(VIMVER)/syntax/setserial.vim
file path=usr/share/vim/$(VIMVER)/syntax/sgml.vim
file path=usr/share/vim/$(VIMVER)/syntax/sgmldecl.vim
file path=usr/share/vim/$(VIMVER)/syntax/sgmllnx.vim
file path=usr/share/vim/$(VIMVER)/syntax/sh.vim
file path=usr/share/vim/$(VIMVER)/syntax/sicad.vim
file path=usr/share/vim/$(VIMVER)/syntax/sieve.vim
file path=usr/share/vim/$(VIMVER)/syntax/simula.vim
file path=usr/share/vim/$(VIMVER)/syntax/sinda.vim
file path=usr/share/vim/$(VIMVER)/syntax/sindacmp.vim
file path=usr/share/vim/$(VIMVER)/syntax/sindaout.vim
file path=usr/share/vim/$(VIMVER)/syntax/sisu.vim
file path=usr/share/vim/$(VIMVER)/syntax/skill.vim
file path=usr/share/vim/$(VIMVER)/syntax/sl.vim
file path=usr/share/vim/$(VIMVER)/syntax/slang.vim
file path=usr/share/vim/$(VIMVER)/syntax/slice.vim
file path=usr/share/vim/$(VIMVER)/syntax/slpconf.vim
file path=usr/share/vim/$(VIMVER)/syntax/slpreg.vim
file path=usr/share/vim/$(VIMVER)/syntax/slpspi.vim
file path=usr/share/vim/$(VIMVER)/syntax/slrnrc.vim
file path=usr/share/vim/$(VIMVER)/syntax/slrnsc.vim
file path=usr/share/vim/$(VIMVER)/syntax/sm.vim
file path=usr/share/vim/$(VIMVER)/syntax/smarty.vim
file path=usr/share/vim/$(VIMVER)/syntax/smcl.vim
file path=usr/share/vim/$(VIMVER)/syntax/smil.vim
file path=usr/share/vim/$(VIMVER)/syntax/smith.vim
file path=usr/share/vim/$(VIMVER)/syntax/sml.vim
file path=usr/share/vim/$(VIMVER)/syntax/snnsnet.vim
file path=usr/share/vim/$(VIMVER)/syntax/snnspat.vim
file path=usr/share/vim/$(VIMVER)/syntax/snnsres.vim
file path=usr/share/vim/$(VIMVER)/syntax/snobol4.vim
file path=usr/share/vim/$(VIMVER)/syntax/spec.vim
file path=usr/share/vim/$(VIMVER)/syntax/specman.vim
file path=usr/share/vim/$(VIMVER)/syntax/spice.vim
file path=usr/share/vim/$(VIMVER)/syntax/splint.vim
file path=usr/share/vim/$(VIMVER)/syntax/spup.vim
file path=usr/share/vim/$(VIMVER)/syntax/spyce.vim
file path=usr/share/vim/$(VIMVER)/syntax/sql.vim
file path=usr/share/vim/$(VIMVER)/syntax/sqlanywhere.vim
file path=usr/share/vim/$(VIMVER)/syntax/sqlforms.vim
file path=usr/share/vim/$(VIMVER)/syntax/sqlinformix.vim
file path=usr/share/vim/$(VIMVER)/syntax/sqlj.vim
file path=usr/share/vim/$(VIMVER)/syntax/sqloracle.vim
file path=usr/share/vim/$(VIMVER)/syntax/sqr.vim
file path=usr/share/vim/$(VIMVER)/syntax/squid.vim
file path=usr/share/vim/$(VIMVER)/syntax/sshconfig.vim
file path=usr/share/vim/$(VIMVER)/syntax/sshdconfig.vim
file path=usr/share/vim/$(VIMVER)/syntax/st.vim
file path=usr/share/vim/$(VIMVER)/syntax/stata.vim
file path=usr/share/vim/$(VIMVER)/syntax/stp.vim
file path=usr/share/vim/$(VIMVER)/syntax/strace.vim
file path=usr/share/vim/$(VIMVER)/syntax/sudoers.vim
file path=usr/share/vim/$(VIMVER)/syntax/svg.vim
file path=usr/share/vim/$(VIMVER)/syntax/svn.vim
file path=usr/share/vim/$(VIMVER)/syntax/syncolor.vim
file path=usr/share/vim/$(VIMVER)/syntax/synload.vim
file path=usr/share/vim/$(VIMVER)/syntax/syntax.vim
file path=usr/share/vim/$(VIMVER)/syntax/sysctl.vim
file path=usr/share/vim/$(VIMVER)/syntax/tads.vim
file path=usr/share/vim/$(VIMVER)/syntax/tags.vim
file path=usr/share/vim/$(VIMVER)/syntax/tak.vim
file path=usr/share/vim/$(VIMVER)/syntax/takcmp.vim
file path=usr/share/vim/$(VIMVER)/syntax/takout.vim
file path=usr/share/vim/$(VIMVER)/syntax/tar.vim
file path=usr/share/vim/$(VIMVER)/syntax/taskdata.vim
file path=usr/share/vim/$(VIMVER)/syntax/taskedit.vim
file path=usr/share/vim/$(VIMVER)/syntax/tasm.vim
file path=usr/share/vim/$(VIMVER)/syntax/tcl.vim
file path=usr/share/vim/$(VIMVER)/syntax/tcsh.vim
file path=usr/share/vim/$(VIMVER)/syntax/terminfo.vim
file path=usr/share/vim/$(VIMVER)/syntax/tex.vim
file path=usr/share/vim/$(VIMVER)/syntax/texinfo.vim
file path=usr/share/vim/$(VIMVER)/syntax/texmf.vim
file path=usr/share/vim/$(VIMVER)/syntax/tf.vim
file path=usr/share/vim/$(VIMVER)/syntax/tidy.vim
file path=usr/share/vim/$(VIMVER)/syntax/tilde.vim
file path=usr/share/vim/$(VIMVER)/syntax/tli.vim
file path=usr/share/vim/$(VIMVER)/syntax/tpp.vim
file path=usr/share/vim/$(VIMVER)/syntax/trasys.vim
file path=usr/share/vim/$(VIMVER)/syntax/trustees.vim
file path=usr/share/vim/$(VIMVER)/syntax/tsalt.vim
file path=usr/share/vim/$(VIMVER)/syntax/tsscl.vim
file path=usr/share/vim/$(VIMVER)/syntax/tssgm.vim
file path=usr/share/vim/$(VIMVER)/syntax/tssop.vim
file path=usr/share/vim/$(VIMVER)/syntax/uc.vim
file path=usr/share/vim/$(VIMVER)/syntax/udevconf.vim
file path=usr/share/vim/$(VIMVER)/syntax/udevperm.vim
file path=usr/share/vim/$(VIMVER)/syntax/udevrules.vim
file path=usr/share/vim/$(VIMVER)/syntax/uil.vim
file path=usr/share/vim/$(VIMVER)/syntax/updatedb.vim
file path=usr/share/vim/$(VIMVER)/syntax/valgrind.vim
file path=usr/share/vim/$(VIMVER)/syntax/vb.vim
file path=usr/share/vim/$(VIMVER)/syntax/vera.vim
file path=usr/share/vim/$(VIMVER)/syntax/verilog.vim
file path=usr/share/vim/$(VIMVER)/syntax/verilogams.vim
file path=usr/share/vim/$(VIMVER)/syntax/vgrindefs.vim
file path=usr/share/vim/$(VIMVER)/syntax/vhdl.vim
file path=usr/share/vim/$(VIMVER)/syntax/vim.vim
file path=usr/share/vim/$(VIMVER)/syntax/viminfo.vim
file path=usr/share/vim/$(VIMVER)/syntax/virata.vim
file path=usr/share/vim/$(VIMVER)/syntax/vmasm.vim
file path=usr/share/vim/$(VIMVER)/syntax/voscm.vim
file path=usr/share/vim/$(VIMVER)/syntax/vrml.vim
file path=usr/share/vim/$(VIMVER)/syntax/vsejcl.vim
file path=usr/share/vim/$(VIMVER)/syntax/wdiff.vim
file path=usr/share/vim/$(VIMVER)/syntax/web.vim
file path=usr/share/vim/$(VIMVER)/syntax/webmacro.vim
file path=usr/share/vim/$(VIMVER)/syntax/wget.vim
file path=usr/share/vim/$(VIMVER)/syntax/whitespace.vim
file path=usr/share/vim/$(VIMVER)/syntax/winbatch.vim
file path=usr/share/vim/$(VIMVER)/syntax/wml.vim
file path=usr/share/vim/$(VIMVER)/syntax/wsh.vim
file path=usr/share/vim/$(VIMVER)/syntax/wsml.vim
file path=usr/share/vim/$(VIMVER)/syntax/wvdial.vim
file path=usr/share/vim/$(VIMVER)/syntax/xbl.vim
file path=usr/share/vim/$(VIMVER)/syntax/xdefaults.vim
file path=usr/share/vim/$(VIMVER)/syntax/xf86conf.vim
file path=usr/share/vim/$(VIMVER)/syntax/xhtml.vim
file path=usr/share/vim/$(VIMVER)/syntax/xinetd.vim
file path=usr/share/vim/$(VIMVER)/syntax/xkb.vim
file path=usr/share/vim/$(VIMVER)/syntax/xmath.vim
file path=usr/share/vim/$(VIMVER)/syntax/xml.vim
file path=usr/share/vim/$(VIMVER)/syntax/xmodmap.vim
file path=usr/share/vim/$(VIMVER)/syntax/xpm.vim
file path=usr/share/vim/$(VIMVER)/syntax/xpm2.vim
file path=usr/share/vim/$(VIMVER)/syntax/xquery.vim
file path=usr/share/vim/$(VIMVER)/syntax/xs.vim
file path=usr/share/vim/$(VIMVER)/syntax/xsd.vim
file path=usr/share/vim/$(VIMVER)/syntax/xslt.vim
file path=usr/share/vim/$(VIMVER)/syntax/xxd.vim
file path=usr/share/vim/$(VIMVER)/syntax/yacc.vim
file path=usr/share/vim/$(VIMVER)/syntax/yaml.vim
file path=usr/share/vim/$(VIMVER)/syntax/z8a.vim
file path=usr/share/vim/$(VIMVER)/syntax/zsh.vim
file path=usr/share/vim/$(VIMVER)/tools/README.txt
file path=usr/share/vim/$(VIMVER)/tools/blink.c
file path=usr/share/vim/$(VIMVER)/tools/ccfilter.1
file path=usr/share/vim/$(VIMVER)/tools/ccfilter.c
file path=usr/share/vim/$(VIMVER)/tools/ccfilter_README.txt
file path=usr/share/vim/$(VIMVER)/tools/efm_filter.pl
file path=usr/share/vim/$(VIMVER)/tools/efm_filter.txt
file path=usr/share/vim/$(VIMVER)/tools/efm_perl.pl
file path=usr/share/vim/$(VIMVER)/tools/mve.awk
file path=usr/share/vim/$(VIMVER)/tools/mve.txt
file path=usr/share/vim/$(VIMVER)/tools/pltags.pl
file path=usr/share/vim/$(VIMVER)/tools/ref
file path=usr/share/vim/$(VIMVER)/tools/shtags.1
file path=usr/share/vim/$(VIMVER)/tools/shtags.pl
file path=usr/share/vim/$(VIMVER)/tools/unicode.vim
file path=usr/share/vim/$(VIMVER)/tools/vim132
file path=usr/share/vim/$(VIMVER)/tools/vim_vs_net.cmd
file path=usr/share/vim/$(VIMVER)/tools/vimm
file path=usr/share/vim/$(VIMVER)/tools/vimspell.sh
file path=usr/share/vim/$(VIMVER)/tools/vimspell.txt
file path=usr/share/vim/$(VIMVER)/tools/xcmdsrv_client.c
file path=usr/share/vim/$(VIMVER)/tutor/README.el.cp737.txt
file path=usr/share/vim/$(VIMVER)/tutor/README.el.txt
file path=usr/share/vim/$(VIMVER)/tutor/README.txt
file path=usr/share/vim/$(VIMVER)/tutor/tutor
file path=usr/share/vim/$(VIMVER)/tutor/tutor.bj
file path=usr/share/vim/$(VIMVER)/tutor/tutor.bj.utf-8
file path=usr/share/vim/$(VIMVER)/tutor/tutor.ca
file path=usr/share/vim/$(VIMVER)/tutor/tutor.ca.utf-8
file path=usr/share/vim/$(VIMVER)/tutor/tutor.cs
file path=usr/share/vim/$(VIMVER)/tutor/tutor.cs.cp1250
file path=usr/share/vim/$(VIMVER)/tutor/tutor.cs.utf-8
file path=usr/share/vim/$(VIMVER)/tutor/tutor.de
file path=usr/share/vim/$(VIMVER)/tutor/tutor.de.utf-8
file path=usr/share/vim/$(VIMVER)/tutor/tutor.el
file path=usr/share/vim/$(VIMVER)/tutor/tutor.el.cp737
file path=usr/share/vim/$(VIMVER)/tutor/tutor.el.utf-8
file path=usr/share/vim/$(VIMVER)/tutor/tutor.eo
file path=usr/share/vim/$(VIMVER)/tutor/tutor.eo.utf-8
file path=usr/share/vim/$(VIMVER)/tutor/tutor.es
file path=usr/share/vim/$(VIMVER)/tutor/tutor.es.utf-8
file path=usr/share/vim/$(VIMVER)/tutor/tutor.fr
file path=usr/share/vim/$(VIMVER)/tutor/tutor.fr.utf-8
file path=usr/share/vim/$(VIMVER)/tutor/tutor.hr
file path=usr/share/vim/$(VIMVER)/tutor/tutor.hr.cp1250
file path=usr/share/vim/$(VIMVER)/tutor/tutor.hr.utf-8
file path=usr/share/vim/$(VIMVER)/tutor/tutor.hu
file path=usr/share/vim/$(VIMVER)/tutor/tutor.hu.cp1250
file path=usr/share/vim/$(VIMVER)/tutor/tutor.hu.utf-8
file path=usr/share/vim/$(VIMVER)/tutor/tutor.it
file path=usr/share/vim/$(VIMVER)/tutor/tutor.it.utf-8
file path=usr/share/vim/$(VIMVER)/tutor/tutor.ja.euc
file path=usr/share/vim/$(VIMVER)/tutor/tutor.ja.sjis
file path=usr/share/vim/$(VIMVER)/tutor/tutor.ja.utf-8
file path=usr/share/vim/$(VIMVER)/tutor/tutor.ko.euc
file path=usr/share/vim/$(VIMVER)/tutor/tutor.ko.utf-8
file path=usr/share/vim/$(VIMVER)/tutor/tutor.nb
file path=usr/share/vim/$(VIMVER)/tutor/tutor.nb.utf-8
file path=usr/share/vim/$(VIMVER)/tutor/tutor.no
file path=usr/share/vim/$(VIMVER)/tutor/tutor.no.utf-8
file path=usr/share/vim/$(VIMVER)/tutor/tutor.pl
file path=usr/share/vim/$(VIMVER)/tutor/tutor.pl.cp1250
file path=usr/share/vim/$(VIMVER)/tutor/tutor.pl.utf-8
file path=usr/share/vim/$(VIMVER)/tutor/tutor.ru
file path=usr/share/vim/$(VIMVER)/tutor/tutor.ru.cp1251
file path=usr/share/vim/$(VIMVER)/tutor/tutor.ru.utf-8
file path=usr/share/vim/$(VIMVER)/tutor/tutor.sk
file path=usr/share/vim/$(VIMVER)/tutor/tutor.sk.cp1250
file path=usr/share/vim/$(VIMVER)/tutor/tutor.sk.utf-8
file path=usr/share/vim/$(VIMVER)/tutor/tutor.sv
file path=usr/share/vim/$(VIMVER)/tutor/tutor.sv.utf-8
file path=usr/share/vim/$(VIMVER)/tutor/tutor.tr.iso9
file path=usr/share/vim/$(VIMVER)/tutor/tutor.tr.utf-8
file path=usr/share/vim/$(VIMVER)/tutor/tutor.utf-8
file path=usr/share/vim/$(VIMVER)/tutor/tutor.vi.utf-8
file path=usr/share/vim/$(VIMVER)/tutor/tutor.vim
file path=usr/share/vim/$(VIMVER)/tutor/tutor.zh.big5
file path=usr/share/vim/$(VIMVER)/tutor/tutor.zh.euc
file path=usr/share/vim/$(VIMVER)/tutor/tutor.zh.utf-8
file path=usr/share/vim/$(VIMVER)/vimrc_example.vim
link path=usr/bin/rview target=vim
link path=usr/bin/rvim target=vim
link path=usr/bin/vimdiff target=vim
link path=usr/share/man/fr.ISO8859-1/man1/rview.1 target=vim.1
link path=usr/share/man/fr.ISO8859-1/man1/rvim.1 target=vim.1
link path=usr/share/man/fr.UTF-8/man1/rview.1 target=vim.1
link path=usr/share/man/fr.UTF-8/man1/rvim.1 target=vim.1
link path=usr/share/man/fr/man1/rview.1 target=vim.1
link path=usr/share/man/fr/man1/rvim.1 target=vim.1
link path=usr/share/man/it.ISO8859-1/man1/rview.1 target=vim.1
link path=usr/share/man/it.ISO8859-1/man1/rvim.1 target=vim.1
link path=usr/share/man/it.UTF-8/man1/rview.1 target=vim.1
link path=usr/share/man/it.UTF-8/man1/rvim.1 target=vim.1
link path=usr/share/man/it/man1/rview.1 target=vim.1
link path=usr/share/man/it/man1/rvim.1 target=vim.1
link path=usr/share/man/man1/rview.1 target=vim.1
link path=usr/share/man/man1/rvim.1 target=vim.1
link path=usr/share/man/pl.ISO8859-2/man1/rview.1 target=vim.1
link path=usr/share/man/pl.ISO8859-2/man1/rvim.1 target=vim.1
link path=usr/share/man/pl.UTF-8/man1/rview.1 target=vim.1
link path=usr/share/man/pl.UTF-8/man1/rvim.1 target=vim.1
link path=usr/share/man/pl/man1/rview.1 target=vim.1
link path=usr/share/man/pl/man1/rvim.1 target=vim.1
link path=usr/share/man/ru.KOI8-R/man1/rview.1 target=vim.1
link path=usr/share/man/ru.KOI8-R/man1/rvim.1 target=vim.1
link path=usr/share/man/ru.UTF-8/man1/rview.1 target=vim.1
link path=usr/share/man/ru.UTF-8/man1/rvim.1 target=vim.1
license license license="VIM License"
depend type=require fmri=editor/vim-core@$(IPS_COMPONENT_VERSION)
depend type=optional fmri=editor/gvim@$(IPS_COMPONENT_VERSION)
components/vim/vim72-patches/7.2.001
New file
@@ -0,0 +1,61 @@
To: vim-dev@vim.org
Subject: Patch 7.2.001
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.001
Problem:    Mac: pseudo-ttys don't work properly on Leopard, resulting in the
            shell not to have a prompt, CTRL-C not working, etc.
Solution:   Don't use SVR4 compatible ptys, even though they are detected.
            (Ben Schmidt)
Files:      src/pty.c
*** ../vim-7.2.000/src/pty.c    Wed Aug  6 19:04:29 2008
--- src/pty.c    Fri Aug 15 04:00:34 2008
***************
*** 270,278 ****
  }
  #endif
! #if defined(HAVE_SVR4_PTYS) && !defined(PTY_DONE) && !defined(hpux)
! /* NOTE: Even though HPUX can have /dev/ptmx, the code below doesn't work! */
  #define PTY_DONE
      int
  OpenPTY(ttyn)
--- 270,279 ----
  }
  #endif
! #if defined(HAVE_SVR4_PTYS) && !defined(PTY_DONE) && !defined(hpux) && !defined(MACOS_X)
! /* NOTE: Even though HPUX can have /dev/ptmx, the code below doesn't work!
!  * Same for Mac OS X Leopard. */
  #define PTY_DONE
      int
  OpenPTY(ttyn)
*** ../vim-7.2.000/src/version.c    Sat Aug  9 19:37:37 2008
--- src/version.c    Sun Aug 17 22:56:25 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     1,
  /**/
--
ARTHUR:       Now stand aside worthy adversary.
BLACK KNIGHT: (Glancing at his shoulder) 'Tis but a scratch.
ARTHUR:       A scratch?  Your arm's off.
                 "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/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.002
New file
@@ -0,0 +1,47 @@
To: vim-dev@vim.org
Subject: Patch 7.2.002
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.002
Problem:    Leaking memory when displaying menus.
Solution:   Free allocated memory. (Dominique Pelle)
Files:      src/menu.c
*** ../vim-7.2.001/src/menu.c    Wed Jun 25 00:19:17 2008
--- src/menu.c    Sat Aug 16 05:38:45 2008
***************
*** 1120,1125 ****
--- 1120,1126 ----
      parent = menu;
      menu = menu->children;
      }
+     vim_free(path_name);
      /* Now we have found the matching menu, and we list the mappings */
                              /* Highlight title */
*** ../vim-7.2.001/src/version.c    Sun Aug 17 23:01:21 2008
--- src/version.c    Sun Aug 17 23:42:53 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     2,
  /**/
--
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/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.003
New file
@@ -0,0 +1,107 @@
To: vim-dev@vim.org
Subject: Patch 7.2.003
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.003
Problem:    Typo in translated message.  Message not translated.
Solution:   Correct spelling. Add _(). (Dominique Pelle)
Files:      src/spell.c, src/version.c
*** ../vim-7.2.002/src/spell.c    Tue Jun 24 22:21:31 2008
--- src/spell.c    Sun Aug 10 12:51:38 2008
***************
*** 77,83 ****
  /*
   * Do the opposite: based on a maximum end score and a known sound score,
!  * compute the the maximum word score that can be used.
   */
  #define MAXSCORE(word_score, sound_score) ((4 * word_score - sound_score) / 3)
--- 77,83 ----
  /*
   * Do the opposite: based on a maximum end score and a known sound score,
!  * compute the maximum word score that can be used.
   */
  #define MAXSCORE(word_score, sound_score) ((4 * word_score - sound_score) / 3)
***************
*** 625,631 ****
  /* TRUE if a word appears in the list of banned words.  */
  #define WAS_BANNED(su, word) (!HASHITEM_EMPTY(hash_find(&su->su_banned, word)))
! /* Number of suggestions kept when cleaning up.  we need to keep more than
   * what is displayed, because when rescore_suggestions() is called the score
   * may change and wrong suggestions may be removed later. */
  #define SUG_CLEAN_COUNT(su)    ((su)->su_maxcount < 130 ? 150 : (su)->su_maxcount + 20)
--- 625,631 ----
  /* TRUE if a word appears in the list of banned words.  */
  #define WAS_BANNED(su, word) (!HASHITEM_EMPTY(hash_find(&su->su_banned, word)))
! /* Number of suggestions kept when cleaning up.  We need to keep more than
   * what is displayed, because when rescore_suggestions() is called the score
   * may change and wrong suggestions may be removed later. */
  #define SUG_CLEAN_COUNT(su)    ((su)->su_maxcount < 130 ? 150 : (su)->su_maxcount + 20)
***************
*** 5980,5986 ****
      else if (spin->si_newprefID == 0 || spin->si_newprefID == 127)
          MSG(_("Too many compound flags"));
      else
!         MSG(_("Too many posponed prefixes and/or compound flags"));
      }
      if (syllable != NULL)
--- 5980,5986 ----
      else if (spin->si_newprefID == 0 || spin->si_newprefID == 127)
          MSG(_("Too many compound flags"));
      else
!         MSG(_("Too many postponed prefixes and/or compound flags"));
      }
      if (syllable != NULL)
*** ../vim-7.2.002/src/version.c    Sun Aug 17 23:43:53 2008
--- src/version.c    Mon Aug 25 04:06:52 2008
***************
*** 790,796 ****
      MSG_PUTS(_("\nRISC OS version"));
  #endif
  #ifdef VMS
!     MSG_PUTS("\nOpenVMS version");
  # ifdef HAVE_PATHDEF
      if (*compiled_arch != NUL)
      {
--- 792,798 ----
      MSG_PUTS(_("\nRISC OS version"));
  #endif
  #ifdef VMS
!     MSG_PUTS(_("\nOpenVMS version"));
  # ifdef HAVE_PATHDEF
      if (*compiled_arch != NUL)
      {
*** ../vim-7.2.002/src/version.c    Sun Aug 17 23:43:53 2008
--- src/version.c    Mon Aug 25 04:06:52 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     3,
  /**/
--
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/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.004
New file
@@ -0,0 +1,103 @@
To: vim-dev@vim.org
Subject: Patch 7.2.004
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.004
Problem:    Cscope help message is not translated.
Solution:   Put it in _(). (Dominique Pelle)
Files:      src/if_cscope.c, src/if_cscope.h
*** ../vim-7.2.003/src/if_cscope.c    Tue Jun 24 23:52:06 2008
--- src/if_cscope.c    Mon Aug 25 04:34:19 2008
***************
*** 74,80 ****
      { "add",    cs_add,
          N_("Add a new database"),     "add file|dir [pre-path] [flags]", 0 },
      { "find",    cs_find,
!         N_("Query for a pattern"),    FIND_USAGE, 1 },
      { "help",    cs_help,
          N_("Show this message"),      "help", 0 },
      { "kill",    cs_kill,
--- 74,80 ----
      { "add",    cs_add,
          N_("Add a new database"),     "add file|dir [pre-path] [flags]", 0 },
      { "find",    cs_find,
!         N_("Query for a pattern"),    "find c|d|e|f|g|i|s|t name", 1 },
      { "help",    cs_help,
          N_("Show this message"),      "help", 0 },
      { "kill",    cs_kill,
***************
*** 1180,1186 ****
      (void)smsg((char_u *)_("%-5s: %-30s (Usage: %s)"),
                        cmdp->name, _(cmdp->help), cmdp->usage);
      if (strcmp(cmdp->name, "find") == 0)
!         MSG_PUTS(FIND_HELP);
      cmdp++;
      }
--- 1180,1195 ----
      (void)smsg((char_u *)_("%-5s: %-30s (Usage: %s)"),
                        cmdp->name, _(cmdp->help), cmdp->usage);
      if (strcmp(cmdp->name, "find") == 0)
!         MSG_PUTS(_("\n"
!                "       c: Find functions calling this function\n"
!                "       d: Find functions called by this function\n"
!                "       e: Find this egrep pattern\n"
!                "       f: Find this file\n"
!                "       g: Find this definition\n"
!                "       i: Find files #including this file\n"
!                "       s: Find this C symbol\n"
!                "       t: Find assignments to\n"));
!
      cmdp++;
      }
*** ../vim-7.2.003/src/if_cscope.h    Thu Sep  6 17:38:58 2007
--- src/if_cscope.h    Mon Aug 25 04:34:17 2008
***************
*** 42,58 ****
   * f 7name    Find this file
   * i 8name    Find files #including this file
   */
- #define    FIND_USAGE "find c|d|e|f|g|i|s|t name"
- #define FIND_HELP "\n\
-        c: Find functions calling this function\n\
-        d: Find functions called by this function\n\
-        e: Find this egrep pattern\n\
-        f: Find this file\n\
-        g: Find this definition\n\
-        i: Find files #including this file\n\
-        s: Find this C symbol\n\
-        t: Find assignments to\n"
-
  typedef struct {
      char *  name;
--- 42,47 ----
*** ../vim-7.2.003/src/version.c    Mon Aug 25 04:12:38 2008
--- src/version.c    Mon Aug 25 04:29:53 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     4,
  /**/
--
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/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.005
New file
@@ -0,0 +1,149 @@
To: vim-dev@vim.org
Subject: Patch 7.2.005
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.005
Problem:    A few problems when profiling.  Using flag pointer instead of flag
            value.  Allocating zero bytes.  Not freeing used memory.
Solution:   Remove wrong '&' characters.  Skip dumping when there is nothing
            to dump.  Free used memory. (Dominique Pelle)
Files:      src/eval.c
*** ../vim-7.2.004/src/eval.c    Fri Aug  8 12:36:31 2008
--- src/eval.c    Mon Aug 25 04:40:11 2008
***************
*** 3657,3664 ****
  }
  /*
!  * Return TRUE if typeval "tv" is locked: Either tha value is locked itself or
!  * it refers to a List or Dictionary that is locked.
   */
      static int
  tv_islocked(tv)
--- 3657,3664 ----
  }
  /*
!  * Return TRUE if typeval "tv" is locked: Either that value is locked itself
!  * or it refers to a List or Dictionary that is locked.
   */
      static int
  tv_islocked(tv)
***************
*** 15838,15847 ****
      if (res == FAIL)
      res = ITEM_COMPARE_FAIL;
      else
-     /* return value has wrong type */
      res = get_tv_number_chk(&rettv, &item_compare_func_err);
      if (item_compare_func_err)
!     res = ITEM_COMPARE_FAIL;
      clear_tv(&rettv);
      return res;
  }
--- 15838,15846 ----
      if (res == FAIL)
      res = ITEM_COMPARE_FAIL;
      else
      res = get_tv_number_chk(&rettv, &item_compare_func_err);
      if (item_compare_func_err)
!     res = ITEM_COMPARE_FAIL;  /* return value has wrong type */
      clear_tv(&rettv);
      return res;
  }
***************
*** 20590,20595 ****
--- 20589,20597 ----
      int        st_len = 0;
      todo = (int)func_hashtab.ht_used;
+     if (todo == 0)
+     return;     /* nothing to dump */
+
      sorttab = (ufunc_T **)alloc((unsigned)(sizeof(ufunc_T) * todo));
      for (hi = func_hashtab.ht_array; todo > 0; ++hi)
***************
*** 20638,20643 ****
--- 20640,20647 ----
                                    prof_self_cmp);
      prof_sort_list(fd, sorttab, st_len, "SELF", TRUE);
      }
+
+     vim_free(sorttab);
  }
      static void
***************
*** 21204,21210 ****
      if (!fp->uf_profiling && has_profiling(FALSE, fp->uf_name, NULL))
          func_do_profile(fp);
      if (fp->uf_profiling
!                || (fc.caller != NULL && &fc.caller->func->uf_profiling))
      {
          ++fp->uf_tm_count;
          profile_start(&call_start);
--- 21208,21214 ----
      if (!fp->uf_profiling && has_profiling(FALSE, fp->uf_name, NULL))
          func_do_profile(fp);
      if (fp->uf_profiling
!                || (fc.caller != NULL && fc.caller->func->uf_profiling))
      {
          ++fp->uf_tm_count;
          profile_start(&call_start);
***************
*** 21235,21247 ****
  #ifdef FEAT_PROFILE
      if (do_profiling == PROF_YES && (fp->uf_profiling
!             || (fc.caller != NULL && &fc.caller->func->uf_profiling)))
      {
      profile_end(&call_start);
      profile_sub_wait(&wait_start, &call_start);
      profile_add(&fp->uf_tm_total, &call_start);
      profile_self(&fp->uf_tm_self, &call_start, &fp->uf_tm_children);
!     if (fc.caller != NULL && &fc.caller->func->uf_profiling)
      {
          profile_add(&fc.caller->func->uf_tm_children, &call_start);
          profile_add(&fc.caller->func->uf_tml_children, &call_start);
--- 21239,21251 ----
  #ifdef FEAT_PROFILE
      if (do_profiling == PROF_YES && (fp->uf_profiling
!             || (fc.caller != NULL && fc.caller->func->uf_profiling)))
      {
      profile_end(&call_start);
      profile_sub_wait(&wait_start, &call_start);
      profile_add(&fp->uf_tm_total, &call_start);
      profile_self(&fp->uf_tm_self, &call_start, &fp->uf_tm_children);
!     if (fc.caller != NULL && fc.caller->func->uf_profiling)
      {
          profile_add(&fc.caller->func->uf_tm_children, &call_start);
          profile_add(&fc.caller->func->uf_tml_children, &call_start);
*** ../vim-7.2.004/src/version.c    Mon Aug 25 04:35:13 2008
--- src/version.c    Mon Aug 25 04:46:44 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     5,
  /**/
--
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/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.006
New file
@@ -0,0 +1,50 @@
To: vim-dev@vim.org
Subject: Patch 7.2.006
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.006
Problem:    HTML files are not recognized by contents.
Solution:   Add a rule to the scripts file. (Nico Weber)
Files:      runtime/scripts.vim
*** ../vim-7.2.005/runtime/scripts.vim    Sat Aug  9 19:37:09 2008
--- runtime/scripts.vim    Sat Aug 16 04:05:34 2008
***************
*** 234,239 ****
--- 234,243 ----
    elseif s:line1 =~ '\<DTD\s\+XHTML\s'
      set ft=xhtml
+     " HTML (e.g.: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN")
+   elseif s:line1 =~? '\<DOCTYPE\s\+html\>'
+     set ft=html
+
      " PDF
    elseif s:line1 =~ '^%PDF-'
      set ft=pdf
*** ../vim-7.2.005/src/version.c    Mon Aug 25 04:48:21 2008
--- src/version.c    Mon Aug 25 05:02:34 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     6,
  /**/
--
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/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.008
New file
@@ -0,0 +1,63 @@
To: vim-dev@vim.org
Subject: Patch 7.2.008
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.008
Problem:    With a BufHidden autocommand that invokes ":bunload" the window
        count for a buffer can be wrong. (Bob Hiestand)
Solution:   Don't call enter_buffer() when already in that buffer.
Files:        src/buffer.c
*** ../vim-7.2.007/src/buffer.c    Wed Aug  6 18:32:40 2008
--- src/buffer.c    Mon Sep  1 14:25:45 2008
***************
*** 1351,1361 ****
      }
      }
  #ifdef FEAT_AUTOCMD
  # ifdef FEAT_EVAL
!     /* An autocommand may have deleted buf or aborted the script processing! */
!     if (buf_valid(buf) && !aborting())
  # else
!     if (buf_valid(buf))        /* an autocommand may have deleted buf! */
  # endif
  #endif
      enter_buffer(buf);
--- 1351,1362 ----
      }
      }
  #ifdef FEAT_AUTOCMD
+     /* An autocommand may have deleted "buf", already entered it (e.g., when
+      * it did ":bunload") or aborted the script processing! */
  # ifdef FEAT_EVAL
!     if (buf_valid(buf) && buf != curbuf && !aborting())
  # else
!     if (buf_valid(buf) && buf != curbuf)
  # endif
  #endif
      enter_buffer(buf);
*** ../vim-7.2.007/src/version.c    Mon Sep  1 16:50:09 2008
--- src/version.c    Mon Sep  1 17:31:28 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     8,
  /**/
--
If Pacman had affected us as kids we'd be running around in dark rooms,
munching pills and listening to repetitive music.
                       -- Marcus Brigstocke
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.009
New file
@@ -0,0 +1,67 @@
To: vim-dev@vim.org
Subject: Patch 7.2.009
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.009
Problem:    Can't compile with Perl 5.10 on MS-Windows. (Cesar Romani)
Solution:   Add the Perl_sv_free2 function for dynamic loading. (Dan Sharp)
Files:        src/if_perl.xs
*** ../vim-7.2.008/src/if_perl.xs    Thu Jul 24 16:24:15 2008
--- src/if_perl.xs    Mon Sep  1 14:58:37 2008
***************
*** 136,141 ****
--- 136,144 ----
  #  define Perl_newXS_flags dll_Perl_newXS_flags
  #endif
  # define Perl_sv_free dll_Perl_sv_free
+ # if (PERL_REVISION == 5) && (PERL_VERSION >= 10)
+ #  define Perl_sv_free2 dll_Perl_sv_free2
+ # endif
  # define Perl_sv_isa dll_Perl_sv_isa
  # define Perl_sv_magic dll_Perl_sv_magic
  # define Perl_sv_setiv dll_Perl_sv_setiv
***************
*** 268,273 ****
--- 271,277 ----
  static void (*boot_DynaLoader)_((pTHX_ CV*));
  #if (PERL_REVISION == 5) && (PERL_VERSION >= 10)
+ static void (*Perl_sv_free2)(pTHX_ SV*);
  static void (*Perl_sys_init3)(int* argc, char*** argv, char*** env);
  static void (*Perl_sys_term)(void);
  static SV** (*Perl_ISv_ptr)(register PerlInterpreter*);
***************
*** 367,372 ****
--- 371,377 ----
      {"Perl_TXpv_ptr", (PERL_PROC*)&Perl_TXpv_ptr},
      {"Perl_Tna_ptr", (PERL_PROC*)&Perl_Tna_ptr},
  #else
+     {"Perl_sv_free2", (PERL_PROC*)&Perl_sv_free2},
      {"Perl_sys_init3", (PERL_PROC*)&Perl_sys_init3},
      {"Perl_sys_term", (PERL_PROC*)&Perl_sys_term},
      {"Perl_ISv_ptr", (PERL_PROC*)&Perl_ISv_ptr},
*** ../vim-7.2.008/src/version.c    Mon Sep  1 17:32:40 2008
--- src/version.c    Mon Sep  1 17:55:24 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     9,
  /**/
--
How To Keep A Healthy Level Of Insanity:
11. Specify that your drive-through order is "to go".
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.010
New file
@@ -0,0 +1,206 @@
To: vim-dev@vim.org
Subject: Patch 7.2.010
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.010
Problem:    When using "K" in Visual mode not all characters are properly
        escaped. (Ben Schmidt)
Solution:   Use a function with the functionality of shellescape(). (Jan
        Minar)
Files:        src/mbyte.c, src/misc2.c, src/normal.c
*** ../vim-7.2.009/src/mbyte.c    Wed Aug  6 18:45:36 2008
--- src/mbyte.c    Wed Sep  3 22:34:48 2008
***************
*** 2540,2546 ****
      return (int)(p - q);
  }
- #if defined(FEAT_EVAL) || defined(PROTO)
  /*
   * Copy a character from "*fp" to "*tp" and advance the pointers.
   */
--- 2540,2545 ----
***************
*** 2555,2561 ****
      *tp += l;
      *fp += l;
  }
- #endif
  /*
   * Return the offset from "p" to the first byte of a character.  When "p" is
--- 2554,2559 ----
*** ../vim-7.2.009/src/misc2.c    Thu Jul 24 20:28:58 2008
--- src/misc2.c    Wed Sep  3 22:05:21 2008
***************
*** 1257,1263 ****
      return escaped_string;
  }
- #if !defined(BACKSLASH_IN_FILENAME) || defined(FEAT_EVAL) || defined(PROTO)
  /*
   * Return TRUE when 'shell' has "csh" in the tail.
   */
--- 1257,1262 ----
***************
*** 1266,1274 ****
  {
      return (strstr((char *)gettail(p_sh), "csh") != NULL);
  }
- #endif
- #if defined(FEAT_EVAL) || defined(PROTO)
  /*
   * Escape "string" for use as a shell argument with system().
   * This uses single quotes, except when we know we need to use double qoutes
--- 1265,1271 ----
***************
*** 1391,1397 ****
      return escaped_string;
  }
- #endif
  /*
   * Like vim_strsave(), but make all characters uppercase.
--- 1388,1393 ----
*** ../vim-7.2.009/src/normal.c    Thu Jul 31 22:03:54 2008
--- src/normal.c    Sat Sep  6 15:06:07 2008
***************
*** 5469,5474 ****
--- 5469,5479 ----
          STRCPY(buf, "he! ");
          else
          {
+         /* An external command will probably use an argument starting
+          * with "-" as an option.  To avoid trouble we skip the "-". */
+         while (*ptr == '-')
+             ++ptr;
+
          /* When a count is given, turn it into a range.  Is this
           * really what we want? */
          isman = (STRCMP(kp, "man") == 0);
***************
*** 5511,5547 ****
      /*
       * Now grab the chars in the identifier
       */
!     if (cmdchar == '*')
!     aux_ptr = (char_u *)(p_magic ? "/.*~[^$\\" : "/^$\\");
!     else if (cmdchar == '#')
!     aux_ptr = (char_u *)(p_magic ? "/?.*~[^$\\" : "/?^$\\");
!     else if (cmdchar == 'K' && !kp_help)
!     aux_ptr = (char_u *)" \t\\\"|!";
!     else
!     /* Don't escape spaces and Tabs in a tag with a backslash */
!     aux_ptr = (char_u *)"\\|\"";
!
!     p = buf + STRLEN(buf);
!     while (n-- > 0)
!     {
!     /* put a backslash before \ and some others */
!     if (vim_strchr(aux_ptr, *ptr) != NULL)
!         *p++ = '\\';
! #ifdef FEAT_MBYTE
!     /* When current byte is a part of multibyte character, copy all bytes
!      * of that character. */
!     if (has_mbyte)
      {
!         int i;
!         int len = (*mb_ptr2len)(ptr) - 1;
!
!         for (i = 0; i < len && n >= 1; ++i, --n)
!         *p++ = *ptr++;
      }
  #endif
!     *p++ = *ptr++;
      }
-     *p = NUL;
      /*
       * Execute the command.
--- 5516,5572 ----
      /*
       * Now grab the chars in the identifier
       */
!     if (cmdchar == 'K' && !kp_help)
!     {
!     /* Escape the argument properly for a shell command */
!     p = vim_strsave_shellescape(ptr, TRUE);
!     if (p == NULL)
      {
!         vim_free(buf);
!         return;
      }
+     buf = (char_u *)vim_realloc(buf, STRLEN(buf) + STRLEN(p) + 1);
+     if (buf == NULL)
+     {
+         vim_free(buf);
+         vim_free(p);
+         return;
+     }
+     STRCAT(buf, p);
+     vim_free(p);
+     }
+     else
+     {
+     if (cmdchar == '*')
+         aux_ptr = (char_u *)(p_magic ? "/.*~[^$\\" : "/^$\\");
+     else if (cmdchar == '#')
+         aux_ptr = (char_u *)(p_magic ? "/?.*~[^$\\" : "/?^$\\");
+     else
+         /* Don't escape spaces and Tabs in a tag with a backslash */
+         aux_ptr = (char_u *)"\\|\"\n*?[";
+
+     p = buf + STRLEN(buf);
+     while (n-- > 0)
+     {
+         /* put a backslash before \ and some others */
+         if (vim_strchr(aux_ptr, *ptr) != NULL)
+         *p++ = '\\';
+ #ifdef FEAT_MBYTE
+         /* When current byte is a part of multibyte character, copy all
+          * bytes of that character. */
+         if (has_mbyte)
+         {
+         int i;
+         int len = (*mb_ptr2len)(ptr) - 1;
+
+         for (i = 0; i < len && n >= 1; ++i, --n)
+             *p++ = *ptr++;
+         }
  #endif
!         *p++ = *ptr++;
!     }
!     *p = NUL;
      }
      /*
       * Execute the command.
*** ../vim-7.2.009/src/version.c    Mon Sep  1 17:56:05 2008
--- src/version.c    Sat Sep  6 16:26:42 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     10,
  /**/
--
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/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.011
New file
@@ -0,0 +1,105 @@
To: vim-dev@vim.org
Subject: Patch 7.2.011
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.011
Problem:    Get an error when inserting a float value from the expression
        register.
Solution:   Convert the Float to a String automatically in the same place
        where a List would be converted to a String.
Files:        src/eval.c
*** ../vim-7.2.010/src/eval.c    Mon Aug 25 04:48:21 2008
--- src/eval.c    Sun Sep  7 13:50:38 2008
***************
*** 1256,1278 ****
  /*
   * Top level evaluation function, returning a string.
   * Return pointer to allocated memory, or NULL for failure.
   */
      char_u *
! eval_to_string(arg, nextcmd, dolist)
      char_u    *arg;
      char_u    **nextcmd;
!     int        dolist;        /* turn List into sequence of lines */
  {
      typval_T    tv;
      char_u    *retval;
      garray_T    ga;
      if (eval0(arg, &tv, nextcmd, TRUE) == FAIL)
      retval = NULL;
      else
      {
!     if (dolist && tv.v_type == VAR_LIST)
      {
          ga_init2(&ga, (int)sizeof(char), 80);
          if (tv.vval.v_list != NULL)
--- 1256,1281 ----
  /*
   * Top level evaluation function, returning a string.
+  * When "convert" is TRUE convert a List into a sequence of lines and convert
+  * a Float to a String.
   * Return pointer to allocated memory, or NULL for failure.
   */
      char_u *
! eval_to_string(arg, nextcmd, convert)
      char_u    *arg;
      char_u    **nextcmd;
!     int        convert;
  {
      typval_T    tv;
      char_u    *retval;
      garray_T    ga;
+     char_u    numbuf[NUMBUFLEN];
      if (eval0(arg, &tv, nextcmd, TRUE) == FAIL)
      retval = NULL;
      else
      {
!     if (convert && tv.v_type == VAR_LIST)
      {
          ga_init2(&ga, (int)sizeof(char), 80);
          if (tv.vval.v_list != NULL)
***************
*** 1280,1285 ****
--- 1283,1295 ----
          ga_append(&ga, NUL);
          retval = (char_u *)ga.ga_data;
      }
+ #ifdef FEAT_FLOAT
+     else if (convert && tv.v_type == VAR_FLOAT)
+     {
+         vim_snprintf((char *)numbuf, NUMBUFLEN, "%g", tv.vval.v_float);
+         retval = vim_strsave(numbuf);
+     }
+ #endif
      else
          retval = vim_strsave(get_tv_string(&tv));
      clear_tv(&tv);
*** ../vim-7.2.010/src/version.c    Sat Sep  6 16:44:06 2008
--- src/version.c    Sun Sep  7 13:52:00 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     11,
  /**/
--
hundred-and-one symptoms of being an internet addict:
34. You laugh at people with 14400 baud modems.
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.012
New file
@@ -0,0 +1,53 @@
To: vim-dev@vim.org
Subject: Patch 7.2.012
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.012
Problem:    Compiler warnings when building with startup timing.
Solution:   Add type casts.
Files:        src/ex_cmds2.c
*** ../vim-7.2.011/src/ex_cmds2.c    Sun Jul 13 19:36:09 2008
--- src/ex_cmds2.c    Tue Sep  2 11:14:41 2008
***************
*** 3145,3152 ****
      verbose_leave();
      }
  #ifdef STARTUPTIME
!     vim_snprintf(IObuff, IOSIZE, "sourcing %s", fname);
!     time_msg(IObuff, &tv_start);
      time_pop(&tv_rel);
  #endif
--- 3145,3152 ----
      verbose_leave();
      }
  #ifdef STARTUPTIME
!     vim_snprintf((char *)IObuff, IOSIZE, "sourcing %s", fname);
!     time_msg((char *)IObuff, &tv_start);
      time_pop(&tv_rel);
  #endif
*** ../vim-7.2.011/src/version.c    Sun Sep  7 13:54:31 2008
--- src/version.c    Sun Sep  7 15:49:00 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     12,
  /**/
--
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/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.013
New file
@@ -0,0 +1,135 @@
To: vim-dev@vim.org
Subject: Patch 7.2.013
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.013
Problem:    While waiting for the X selection Vim consumes a lot of CPU time
        and hangs until a response is received.
Solution:   Sleep a bit when the selection event hasn't been received yet.
        Time out after a couple of seconds to avoid a hang when the
        selection owner isn't responding.
Files:        src/ui.c
*** ../vim-7.2.012/src/ui.c    Mon Jul 14 21:47:49 2008
--- src/ui.c    Sun Sep  7 16:54:35 2008
***************
*** 2110,2115 ****
--- 2110,2117 ----
      int        i;
      int        nbytes = 0;
      char_u    *buffer;
+     time_t    start_time;
+     int        timed_out = FALSE;
      for (i =
  #ifdef FEAT_MBYTE
***************
*** 2129,2134 ****
--- 2131,2137 ----
          case 3:  type = text_atom;        break;
          default: type = XA_STRING;
      }
+     success = FALSE;
      XtGetSelectionValue(myShell, cbd->sel_atom, type,
          clip_x11_request_selection_cb, (XtPointer)&success, CurrentTime);
***************
*** 2141,2167 ****
       * characters, then they will appear before the one that requested the
       * paste!  Don't worry, we will catch up with any other events later.
       */
      for (;;)
      {
          if (XCheckTypedEvent(dpy, SelectionNotify, &event))
          break;
          if (XCheckTypedEvent(dpy, SelectionRequest, &event))
          /* We may get a SelectionRequest here and if we don't handle
           * it we hang.  KDE klipper does this, for example. */
          XtDispatchEvent(&event);
          /* Do we need this?  Probably not. */
          XSync(dpy, False);
!         /* Bernhard Walle solved a slow paste response in an X terminal by
!          * adding: usleep(10000); here. */
      }
-     /* this is where clip_x11_request_selection_cb() is actually called */
-     XtDispatchEvent(&event);
-
      if (success)
          return;
      }
      /* Final fallback position - use the X CUT_BUFFER0 store */
--- 2144,2189 ----
       * characters, then they will appear before the one that requested the
       * paste!  Don't worry, we will catch up with any other events later.
       */
+     start_time = time(NULL);
      for (;;)
      {
          if (XCheckTypedEvent(dpy, SelectionNotify, &event))
+         {
+         /* this is where clip_x11_request_selection_cb() is actually
+          * called */
+         XtDispatchEvent(&event);
          break;
+         }
          if (XCheckTypedEvent(dpy, SelectionRequest, &event))
          /* We may get a SelectionRequest here and if we don't handle
           * it we hang.  KDE klipper does this, for example. */
          XtDispatchEvent(&event);
+         /* Time out after 2 to 3 seconds to avoid that we hang when the
+          * other process doesn't respond.  Note that the SelectionNotify
+          * event may still come later when the selection owner comes back
+          * to life and the text gets inserted unexpectedly (by xterm).
+          * Don't know how to avoid that :-(. */
+         if (time(NULL) > start_time + 2)
+         {
+         timed_out = TRUE;
+         break;
+         }
+
          /* Do we need this?  Probably not. */
          XSync(dpy, False);
!         /* Wait for 1 msec to avoid that we eat up all CPU time. */
!         ui_delay(1L, TRUE);
      }
      if (success)
          return;
+
+     /* don't do a retry with another type after timing out, otherwise we
+      * hang for 15 seconds. */
+     if (timed_out)
+         break;
      }
      /* Final fallback position - use the X CUT_BUFFER0 store */
*** ../vim-7.2.012/src/version.c    Sun Sep  7 15:49:45 2008
--- src/version.c    Sun Sep  7 21:45:55 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     13,
  /**/
--
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/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.014
New file
@@ -0,0 +1,52 @@
To: vim-dev@vim.org
Subject: Patch 7.2.014
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.014
Problem:    synstack() doesn't work in an emptly line.
Solution:   Accept column zero as a valid position.
Files:        src/eval.c
*** ../vim-7.2.013/src/eval.c    Sun Sep  7 13:54:31 2008
--- src/eval.c    Sun Sep  7 13:50:38 2008
***************
*** 16667,16673 ****
      col = get_tv_number(&argvars[1]) - 1;    /* -1 on type error */
      if (lnum >= 1 && lnum <= curbuf->b_ml.ml_line_count
!         && col >= 0 && col < (long)STRLEN(ml_get(lnum))
          && rettv_list_alloc(rettv) != FAIL)
      {
      (void)syn_get_id(curwin, lnum, (colnr_T)col, FALSE, NULL, TRUE);
--- 16667,16673 ----
      col = get_tv_number(&argvars[1]) - 1;    /* -1 on type error */
      if (lnum >= 1 && lnum <= curbuf->b_ml.ml_line_count
!         && col >= 0 && (col == 0 || col < (long)STRLEN(ml_get(lnum)))
          && rettv_list_alloc(rettv) != FAIL)
      {
      (void)syn_get_id(curwin, lnum, (colnr_T)col, FALSE, NULL, TRUE);
*** ../vim-7.2.013/src/version.c    Sun Sep  7 21:47:51 2008
--- src/version.c    Wed Sep 10 15:36:52 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     14,
  /**/
--
Everybody lies, but it doesn't matter since nobody listens.
                                -- Lieberman's Law
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.015
New file
@@ -0,0 +1,82 @@
To: vim-dev@vim.org
Subject: Patch 7.2.015
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.015
Problem:    "make all test install" doesn't stop when the test fails. (Daniel
        Shahaf)
Solution:   When test.log contains failures exit with non-zero status.
Files:        src/testdir/Makefile
*** ../vim-7.2.014/src/testdir/Makefile    Wed Jun 25 00:22:53 2008
--- src/testdir/Makefile    Sun Sep  7 21:31:49 2008
***************
*** 26,40 ****
  .SUFFIXES: .in .out
! nongui:    nolog $(SCRIPTS)
!     @echo
!     @cat test.log
!     @echo ALL DONE
! gui:    nolog $(SCRIPTS) $(SCRIPTS_GUI)
      @echo
!     @cat test.log
!     @echo ALL DONE
  $(SCRIPTS) $(SCRIPTS_GUI): $(VIMPROG)
--- 26,42 ----
  .SUFFIXES: .in .out
! nongui:    nolog $(SCRIPTS) report
!
! gui:    nolog $(SCRIPTS) $(SCRIPTS_GUI) report
! report:
      @echo
!     @echo 'Test results:'
!     @/bin/sh -c "if test -f test.log; \
!         then cat test.log; echo TEST FAILURE; exit 1; \
!         else echo ALL DONE; \
!         fi"
  $(SCRIPTS) $(SCRIPTS_GUI): $(VIMPROG)
***************
*** 71,74 ****
  test60.out: test60.vim
  nolog:
!     -echo Test results: >test.log
--- 73,76 ----
  test60.out: test60.vim
  nolog:
!     -rm -f test.log
*** ../vim-7.2.014/src/version.c    Wed Sep 10 15:38:13 2008
--- src/version.c    Wed Sep 10 18:23:38 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     15,
  /**/
--
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/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.016
New file
@@ -0,0 +1,166 @@
To: vim-dev@vim.org
Subject: Patch 7.2.016
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.016
Problem:    The pattern being completed may be in freed memory when the
        command line is being reallocated. (Dominique Pelle)
Solution:   Keep a pointer to the expand_T in the command line structure.
        Don't use <S-Tab> as CTRL-P when there are no results.  Clear the
        completion when using a command line from the history.
Files:        src/ex_getln.c
*** ../vim-7.2.015/src/ex_getln.c    Fri Aug  8 12:58:59 2008
--- src/ex_getln.c    Wed Sep 10 22:43:41 2008
***************
*** 31,36 ****
--- 31,38 ----
      int        cmdattr;    /* attributes for prompt */
      int        overstrike;    /* Typing mode on the command line.  Shared by
                     getcmdline() and put_on_cmdline(). */
+     expand_T    *xpc;        /* struct being used for expansion, xp_pattern
+                    may point into cmdbuff */
      int        xp_context;    /* type of expansion */
  # ifdef FEAT_EVAL
      char_u    *xp_arg;    /* user-defined expansion arg */
***************
*** 38,44 ****
  # endif
  };
! static struct cmdline_info ccline;    /* current cmdline_info */
  static int    cmd_showtail;        /* Only show path tail in lists ? */
--- 40,50 ----
  # endif
  };
! /* The current cmdline_info.  It is initialized in getcmdline() and after that
!  * used by other functions.  When invoking getcmdline() recursively it needs
!  * to be saved with save_cmdline() and restored with restore_cmdline().
!  * TODO: make it local to getcmdline() and pass it around. */
! static struct cmdline_info ccline;
  static int    cmd_showtail;        /* Only show path tail in lists ? */
***************
*** 238,243 ****
--- 244,250 ----
      }
      ExpandInit(&xpc);
+     ccline.xpc = &xpc;
  #ifdef FEAT_RIGHTLEFT
      if (curwin->w_p_rl && *curwin->w_p_rlc == 's'
***************
*** 408,416 ****
  #endif
      /*
!      * <S-Tab> works like CTRL-P (unless 'wc' is <S-Tab>).
       */
!     if (c != p_wc && c == K_S_TAB && xpc.xp_numfiles != -1)
          c = Ctrl_P;
  #ifdef FEAT_WILDMENU
--- 415,424 ----
  #endif
      /*
!      * When there are matching completions to select <S-Tab> works like
!      * CTRL-P (unless 'wc' is <S-Tab>).
       */
!     if (c != p_wc && c == K_S_TAB && xpc.xp_numfiles > 0)
          c = Ctrl_P;
  #ifdef FEAT_WILDMENU
***************
*** 1513,1518 ****
--- 1521,1527 ----
              int        old_firstc;
              vim_free(ccline.cmdbuff);
+             xpc.xp_context = EXPAND_NOTHING;
              if (hiscnt == hislen)
              p = lookfor;    /* back to the old one */
              else
***************
*** 1839,1844 ****
--- 1848,1854 ----
  #endif
      ExpandCleanup(&xpc);
+     ccline.xpc = NULL;
  #ifdef FEAT_SEARCH_EXTRA
      if (did_incsearch)
***************
*** 2508,2513 ****
--- 2518,2537 ----
      }
      mch_memmove(ccline.cmdbuff, p, (size_t)ccline.cmdlen + 1);
      vim_free(p);
+
+     if (ccline.xpc != NULL
+         && ccline.xpc->xp_pattern != NULL
+         && ccline.xpc->xp_context != EXPAND_NOTHING
+         && ccline.xpc->xp_context != EXPAND_UNSUCCESSFUL)
+     {
+     int i = ccline.xpc->xp_pattern - p;
+
+     /* If xp_pattern points inside the old cmdbuff it needs to be adjusted
+      * to point into the newly allocated memory. */
+     if (i >= 0 && i <= ccline.cmdlen)
+         ccline.xpc->xp_pattern = ccline.cmdbuff + i;
+     }
+
      return OK;
  }
***************
*** 2875,2880 ****
--- 2899,2905 ----
      prev_ccline = ccline;
      ccline.cmdbuff = NULL;
      ccline.cmdprompt = NULL;
+     ccline.xpc = NULL;
  }
  /*
***************
*** 3582,3587 ****
--- 3607,3613 ----
  ExpandInit(xp)
      expand_T    *xp;
  {
+     xp->xp_pattern = NULL;
      xp->xp_backslash = XP_BS_NONE;
  #ifndef BACKSLASH_IN_FILENAME
      xp->xp_shell = FALSE;
*** ../vim-7.2.015/src/version.c    Wed Sep 10 18:25:18 2008
--- src/version.c    Sun Sep 14 14:38:47 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     16,
  /**/
--
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/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.017
New file
@@ -0,0 +1,162 @@
To: vim-dev@vim.org
Subject: Patch 7.2.017
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.017
Problem:    strlen() used on text that may not end in a NUL. (Dominique Pelle)
        Pasting a very big selection doesn't work.
Solution:   Use the length passed to the XtSelectionCallbackProc() function.
        After getting the SelectionNotify event continue dispatching
        events until the callback is actually called.  Also dispatch the
        PropertyNotify event.
Files:        src/ui.c
*** ../vim-7.2.016/src/ui.c    Sun Sep  7 21:47:51 2008
--- src/ui.c    Sun Sep 14 15:52:19 2008
***************
*** 2020,2026 ****
      if (value == NULL || *length == 0)
      {
!     clip_free_selection(cbd);    /* ???  [what's the query?] */
      *(int *)success = FALSE;
      return;
      }
--- 2020,2026 ----
      if (value == NULL || *length == 0)
      {
!     clip_free_selection(cbd);    /* nothing received, clear register */
      *(int *)success = FALSE;
      return;
      }
***************
*** 2076,2082 ****
      text_prop.value = (unsigned char *)value;
      text_prop.encoding = *type;
      text_prop.format = *format;
!     text_prop.nitems = STRLEN(value);
      status = XmbTextPropertyToTextList(X_DISPLAY, &text_prop,
                               &text_list, &n_text);
      if (status != Success || n_text < 1)
--- 2076,2082 ----
      text_prop.value = (unsigned char *)value;
      text_prop.encoding = *type;
      text_prop.format = *format;
!     text_prop.nitems = len;
      status = XmbTextPropertyToTextList(X_DISPLAY, &text_prop,
                               &text_list, &n_text);
      if (status != Success || n_text < 1)
***************
*** 2131,2137 ****
          case 3:  type = text_atom;        break;
          default: type = XA_STRING;
      }
!     success = FALSE;
      XtGetSelectionValue(myShell, cbd->sel_atom, type,
          clip_x11_request_selection_cb, (XtPointer)&success, CurrentTime);
--- 2131,2137 ----
          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);
***************
*** 2145,2169 ****
       * paste!  Don't worry, we will catch up with any other events later.
       */
      start_time = time(NULL);
!     for (;;)
      {
!         if (XCheckTypedEvent(dpy, SelectionNotify, &event))
          {
!         /* this is where clip_x11_request_selection_cb() is actually
!          * called */
          XtDispatchEvent(&event);
!         break;
          }
-         if (XCheckTypedEvent(dpy, SelectionRequest, &event))
-         /* We may get a SelectionRequest here and if we don't handle
-          * it we hang.  KDE klipper does this, for example. */
-         XtDispatchEvent(&event);
          /* Time out after 2 to 3 seconds to avoid that we hang when the
           * other process doesn't respond.  Note that the SelectionNotify
           * event may still come later when the selection owner comes back
!          * to life and the text gets inserted unexpectedly (by xterm).
!          * Don't know how to avoid that :-(. */
          if (time(NULL) > start_time + 2)
          {
          timed_out = TRUE;
--- 2145,2171 ----
       * paste!  Don't worry, we will catch up with any other events later.
       */
      start_time = time(NULL);
!     while (success == MAYBE)
      {
!         if (XCheckTypedEvent(dpy, SelectionNotify, &event)
!             || XCheckTypedEvent(dpy, SelectionRequest, &event)
!             || XCheckTypedEvent(dpy, PropertyNotify, &event))
          {
!         /* This is where clip_x11_request_selection_cb() should be
!          * called.  It may actually happen a bit later, so we loop
!          * until "success" changes.
!          * We may get a SelectionRequest here and if we don't handle
!          * it we hang.  KDE klipper does this, for example.
!          * We need to handle a PropertyNotify for large selections. */
          XtDispatchEvent(&event);
!         continue;
          }
          /* Time out after 2 to 3 seconds to avoid that we hang when the
           * other process doesn't respond.  Note that the SelectionNotify
           * event may still come later when the selection owner comes back
!          * to life and the text gets inserted unexpectedly.  Don't know
!          * why that happens or how to avoid that :-(. */
          if (time(NULL) > start_time + 2)
          {
          timed_out = TRUE;
***************
*** 2177,2183 ****
          ui_delay(1L, TRUE);
      }
!     if (success)
          return;
      /* don't do a retry with another type after timing out, otherwise we
--- 2179,2185 ----
          ui_delay(1L, TRUE);
      }
!     if (success == TRUE)
          return;
      /* don't do a retry with another type after timing out, otherwise we
*** ../vim-7.2.016/src/version.c    Sun Sep 14 14:41:44 2008
--- src/version.c    Sun Sep 14 15:55:34 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     17,
  /**/
--
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/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.018
New file
@@ -0,0 +1,45 @@
To: vim-dev@vim.org
Subject: Patch 7.2.018
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.018
Problem:    Memory leak when substitute is aborted.
Solution:   Free the buffer allocated for the new text. (Dominique Pelle)
Files:        src/ex_cmds.c
*** ../vim-7.2.017/src/ex_cmds.c    Wed Aug  6 15:03:07 2008
--- src/ex_cmds.c    Sun Sep 14 13:45:03 2008
***************
*** 5059,5064 ****
--- 5059,5065 ----
          if (did_sub)
          ++sub_nlines;
+         vim_free(new_start);    /* for when substitute was cancelled */
          vim_free(sub_firstline);    /* free the copy of the original line */
          sub_firstline = NULL;
      }
*** ../vim-7.2.017/src/version.c    Sun Sep 14 15:57:54 2008
--- src/version.c    Sun Sep 14 21:38:25 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     18,
  /**/
--
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/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.019
New file
@@ -0,0 +1,65 @@
To: vim-dev@vim.org
Subject: Patch 7.2.019
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.019
Problem:    Completion of ":noautocmd" doesn't work and exists(":noautocmd")
        returns zero. (Ben Fritz)
Solution:   Add "noautocmd" to the list of modifiers and commands.
Files:        src/ex_cmds.h, src/ex_docmd.c
*** ../vim-7.2.018/src/ex_cmds.h    Wed Jun 25 00:44:40 2008
--- src/ex_cmds.h    Sat Sep 13 18:37:25 2008
***************
*** 635,640 ****
--- 635,642 ----
              RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
  EX(CMD_noremap,        "noremap",    ex_map,
              BANG|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
+ EX(CMD_noautocmd,    "noautocmd",    ex_wrongmodifier,
+             NEEDARG|EXTRA|NOTRLCOM),
  EX(CMD_nohlsearch,    "nohlsearch",    ex_nohlsearch,
              TRLBAR|SBOXOK|CMDWIN),
  EX(CMD_noreabbrev,    "noreabbrev",    ex_abbreviate,
*** ../vim-7.2.018/src/ex_docmd.c    Sat Jul 26 16:04:39 2008
--- src/ex_docmd.c    Mon Sep 15 20:04:53 2008
***************
*** 2978,2983 ****
--- 2979,2985 ----
      {"keepmarks", 3, FALSE},
      {"leftabove", 5, FALSE},
      {"lockmarks", 3, FALSE},
+     {"noautocmd", 3, FALSE},
      {"rightbelow", 6, FALSE},
      {"sandbox", 3, FALSE},
      {"silent", 3, FALSE},
*** ../vim-7.2.018/src/version.c    Sun Sep 14 21:40:26 2008
--- src/version.c    Thu Sep 18 12:39:56 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     19,
  /**/
--
Proof techniques #2: Proof by Oddity.
    SAMPLE: To prove that horses have an infinite number of legs.
(1) Horses have an even number of legs.
(2) They have two legs in back and fore legs in front.
(3) This makes a total of six legs, which certainly is an odd number of
    legs for a horse.
(4) But the only number that is both odd and even is infinity.
(5) Therefore, horses must have an infinite number of legs.
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.020
New file
@@ -0,0 +1,54 @@
To: vim-dev@vim.org
Subject: Patch 7.2.020
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.020
Problem:    Starting the GUI when the executable starts with 'k', but the KDE
        version no longer exists.
Solution:   Don't have "kvim" start the GUI.
Files:        src/main.c
*** ../vim-7.2.019/src/main.c    Thu Jul 24 19:34:23 2008
--- src/main.c    Sun Sep 14 13:26:10 2008
***************
*** 1457,1463 ****
      ++initstr;
      }
!     if (TOLOWER_ASC(initstr[0]) == 'g' || initstr[0] == 'k')
      {
      main_start_gui();
  #ifdef FEAT_GUI
--- 1458,1465 ----
      ++initstr;
      }
!     /* "gvim" starts the GUI.  Also accept "Gvim" for MS-Windows. */
!     if (TOLOWER_ASC(initstr[0]) == 'g')
      {
      main_start_gui();
  #ifdef FEAT_GUI
*** ../vim-7.2.019/src/version.c    Thu Sep 18 12:43:21 2008
--- src/version.c    Thu Sep 18 20:54:10 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     20,
  /**/
--
hundred-and-one symptoms of being an internet addict:
90. Instead of calling you to dinner, your spouse sends e-mail.
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.021
New file
@@ -0,0 +1,147 @@
To: vim-dev@vim.org
Subject: Patch 7.2.021
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.021
Problem:    When executing autocommands getting the full file name may be
        slow. (David Kotchan)
Solution:   Postpone calling FullName_save() until autocmd_fname is used.
Files:        src/ex_docmd.c, src/fileio.c, src/globals.h
*** ../vim-7.2.020/src/ex_docmd.c    Thu Sep 18 12:43:21 2008
--- src/ex_docmd.c    Mon Sep 15 20:04:53 2008
***************
*** 9542,9547 ****
--- 9569,9583 ----
  #ifdef FEAT_AUTOCMD
      case SPEC_AFILE:    /* file name for autocommand */
          result = autocmd_fname;
+         if (result != NULL && !autocmd_fname_full)
+         {
+             /* Still need to turn the fname into a full path.  It is
+              * postponed to avoid a delay when <afile> is not used. */
+             autocmd_fname_full = TRUE;
+             result = FullName_save(autocmd_fname, FALSE);
+             vim_free(autocmd_fname);
+             autocmd_fname = result;
+         }
          if (result == NULL)
          {
              *errormsg = (char_u *)_("E495: no autocommand file name to substitute for \"<afile>\"");
*** ../vim-7.2.020/src/fileio.c    Wed Aug  6 18:43:07 2008
--- src/fileio.c    Tue Sep 16 21:24:26 2008
***************
*** 8523,8528 ****
--- 8523,8529 ----
      char_u    *save_sourcing_name;
      linenr_T    save_sourcing_lnum;
      char_u    *save_autocmd_fname;
+     int        save_autocmd_fname_full;
      int        save_autocmd_bufnr;
      char_u    *save_autocmd_match;
      int        save_autocmd_busy;
***************
*** 8601,8606 ****
--- 8602,8608 ----
       * Save the autocmd_* variables and info about the current buffer.
       */
      save_autocmd_fname = autocmd_fname;
+     save_autocmd_fname_full = autocmd_fname_full;
      save_autocmd_bufnr = autocmd_bufnr;
      save_autocmd_match = autocmd_match;
      save_autocmd_busy = autocmd_busy;
***************
*** 8618,8631 ****
      if (fname != NULL && *fname != NUL)
          autocmd_fname = fname;
      else if (buf != NULL)
!         autocmd_fname = buf->b_fname;
      else
          autocmd_fname = NULL;
      }
      else
      autocmd_fname = fname_io;
      if (autocmd_fname != NULL)
!     autocmd_fname = FullName_save(autocmd_fname, FALSE);
      /*
       * Set the buffer number to be used for <abuf>.
--- 8620,8634 ----
      if (fname != NULL && *fname != NUL)
          autocmd_fname = fname;
      else if (buf != NULL)
!         autocmd_fname = buf->b_ffname;
      else
          autocmd_fname = NULL;
      }
      else
      autocmd_fname = fname_io;
      if (autocmd_fname != NULL)
!     autocmd_fname = vim_strsave(autocmd_fname);
!     autocmd_fname_full = FALSE; /* call FullName_save() later */
      /*
       * Set the buffer number to be used for <abuf>.
***************
*** 8810,8815 ****
--- 8813,8819 ----
      sourcing_lnum = save_sourcing_lnum;
      vim_free(autocmd_fname);
      autocmd_fname = save_autocmd_fname;
+     autocmd_fname_full = save_autocmd_fname_full;
      autocmd_bufnr = save_autocmd_bufnr;
      autocmd_match = save_autocmd_match;
  #ifdef FEAT_EVAL
***************
*** 8918,8924 ****
      {
      apc->curpat = NULL;
!     /* only use a pattern when it has not been removed, has commands and
       * the group matches. For buffer-local autocommands only check the
       * buffer number. */
      if (ap->pat != NULL && ap->cmds != NULL
--- 8922,8928 ----
      {
      apc->curpat = NULL;
!     /* Only use a pattern when it has not been removed, has commands and
       * the group matches. For buffer-local autocommands only check the
       * buffer number. */
      if (ap->pat != NULL && ap->cmds != NULL
*** ../vim-7.2.020/src/globals.h    Sat Jul 26 16:04:49 2008
--- src/globals.h    Mon Sep 15 19:59:28 2008
***************
*** 1022,1027 ****
--- 1022,1028 ----
  #endif
  #ifdef FEAT_AUTOCMD
  EXTERN char_u    *autocmd_fname INIT(= NULL); /* fname for <afile> on cmdline */
+ EXTERN int    autocmd_fname_full;         /* autocmd_fname is full path */
  EXTERN int    autocmd_bufnr INIT(= 0);     /* fnum for <abuf> on cmdline */
  EXTERN char_u    *autocmd_match INIT(= NULL); /* name for <amatch> on cmdline */
  EXTERN int    did_cursorhold INIT(= FALSE); /* set when CursorHold t'gerd */
*** ../vim-7.2.020/src/version.c    Thu Sep 18 20:55:19 2008
--- src/version.c    Thu Sep 18 21:24:30 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     21,
  /**/
--
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/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.022
New file
@@ -0,0 +1,140 @@
To: vim-dev@vim.org
Subject: Patch 7.2.022 (extra)
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.022 (extra)
Problem:    Testing is not possible when compiling with MingW.
Solution:   Add a MingW specific test Makefile. (Bill McCarthy)
Files:        Filelist, src/testdir/Make_ming.mak
*** ../vim-7.2.021/Filelist    Sun Jul 13 19:33:31 2008
--- Filelist    Sun Sep 14 21:47:01 2008
***************
*** 285,290 ****
--- 285,291 ----
          src/proto/os_win32.pro \
          src/proto/os_mswin.pro \
          src/testdir/Make_dos.mak \
+         src/testdir/Make_ming.mak \
          src/testdir/dos.vim \
          src/uninstal.c \
          src/vim.def \
*** ../vim-7.2.021/src/testdir/Make_ming.mak    Sat Sep 20 16:25:06 2008
--- src/testdir/Make_ming.mak    Sat Sep 20 16:25:58 2008
***************
*** 0 ****
--- 1,91 ----
+ # Makefile to run tests for Vim, on Dos-like machines
+ # with sh.exe or zsh.exe in the path or not.
+ #
+ # Author: Bill McCarthy
+ #
+ # Note that test54 has been removed until it is fixed.
+ #
+ # Requires a set of Unix tools: echo, diff, etc.
+
+ ifneq (sh.exe, $(SHELL))
+ DEL = rm -f
+ MV = mv
+ CP = cp
+ DIRSLASH = /
+ else
+ DEL = del
+ MV = rename
+ CP = copy
+ DIRSLASH = \\
+ endif
+
+ VIMPROG = ..$(DIRSLASH)vim
+
+ # Omitted:
+ # test2        "\\tmp" doesn't work.
+ # test10    'errorformat' is different
+ # test12    can't unlink a swap file
+ # test25    uses symbolic link
+ # test27    can't edit file with "*" in file name
+ # test31    16 bit version runs out of memory...
+
+ SCRIPTS16 =    test1.out test19.out test20.out test22.out \
+         test23.out test24.out test28.out test29.out \
+         test35.out test36.out test43.out \
+         test44.out test45.out test46.out test47.out \
+         test48.out test51.out test53.out            \
+         test55.out test56.out test57.out test58.out test59.out \
+         test60.out test61.out test62.out test63.out test64.out
+
+ # Had to remove test54 which doesn't work yet.
+ #                                         test54.out
+
+ SCRIPTS =    test3.out test4.out test5.out test6.out test7.out \
+         test8.out test9.out test11.out test13.out test14.out \
+         test15.out test17.out test18.out test21.out test26.out \
+         test30.out test31.out test32.out test33.out test34.out \
+         test37.out test38.out test39.out test40.out test41.out \
+         test42.out test52.out test65.out
+
+ SCRIPTS32 =    test50.out
+
+ SCRIPTS_GUI = test16.out
+
+ .SUFFIXES: .in .out
+
+ vimall:    fixff $(SCRIPTS16) $(SCRIPTS) $(SCRIPTS_GUI) $(SCRIPTS32)
+     echo ALL DONE
+
+ nongui:    fixff $(SCRIPTS16) $(SCRIPTS)
+     echo ALL DONE
+
+ small:
+     echo ALL DONE
+
+ gui:    fixff $(SCRIPTS16) $(SCRIPTS) $(SCRIPTS_GUI)
+     echo ALL DONE
+
+ win32:    fixff $(SCRIPTS16) $(SCRIPTS) $(SCRIPTS32)
+     echo ALL DONE
+
+ fixff:
+     -$(VIMPROG) -u dos.vim --noplugin "+argdo set ff=dos|upd" +q *.in *.ok
+
+ clean:
+     -$(DEL) *.out
+     -$(DEL) test.ok
+     -$(DEL) small.vim
+     -$(DEL) tiny.vim
+     -$(DEL) mbyte.vim
+     -$(DEL) X*
+     -$(DEL) viminfo
+
+ .in.out:
+     $(CP) $*.ok test.ok
+     $(VIMPROG) -u dos.vim -U NONE --noplugin -s dotest.in $*.in
+     diff test.out $*.ok
+     -$(DEL) $*.out
+     $(MV) test.out $*.out
+     -$(DEL) X*
+     -$(DEL) test.ok
+     -$(DEL) viminfo
*** ../vim-7.2.021/src/version.c    Thu Sep 18 21:29:07 2008
--- src/version.c    Sat Sep 20 16:25:16 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     22,
  /**/
--
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/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.023
New file
@@ -0,0 +1,65 @@
To: vim-dev@vim.org
Subject: Patch 7.2.023
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.023
Problem:    'cursorcolumn' is in the wrong place in a closed fold when the
        display is shifted left. (Gary Johnson)
Solution:   Subtract w_skipcol or w_leftcol when needed.
Files:        src/screen.c
*** ../vim-7.2.022/src/screen.c    Thu Jul 24 20:29:09 2008
--- src/screen.c    Fri Sep 26 21:23:06 2008
***************
*** 2439,2447 ****
  #ifdef FEAT_SYN_HL
      /* Show 'cursorcolumn' in the fold line. */
!     if (wp->w_p_cuc && (int)wp->w_virtcol + txtcol < W_WIDTH(wp))
!     ScreenAttrs[off + wp->w_virtcol + txtcol] = hl_combine_attr(
!          ScreenAttrs[off + wp->w_virtcol + txtcol], hl_attr(HLF_CUC));
  #endif
      SCREEN_LINE(row + W_WINROW(wp), W_WINCOL(wp), (int)W_WIDTH(wp),
--- 2439,2455 ----
  #ifdef FEAT_SYN_HL
      /* Show 'cursorcolumn' in the fold line. */
!     if (wp->w_p_cuc)
!     {
!     txtcol += wp->w_virtcol;
!     if (wp->w_p_wrap)
!         txtcol -= wp->w_skipcol;
!     else
!         txtcol -= wp->w_leftcol;
!     if (txtcol >= 0 && txtcol < W_WIDTH(wp))
!         ScreenAttrs[off + txtcol] = hl_combine_attr(
!                  ScreenAttrs[off + txtcol], hl_attr(HLF_CUC));
!     }
  #endif
      SCREEN_LINE(row + W_WINROW(wp), W_WINCOL(wp), (int)W_WIDTH(wp),
*** ../vim-7.2.022/src/version.c    Sat Sep 20 16:26:10 2008
--- src/version.c    Wed Oct  1 21:07:31 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     23,
  /**/
--
hundred-and-one symptoms of being an internet addict:
124. You begin conversations with, "Who is your internet service provider?"
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.024
New file
@@ -0,0 +1,50 @@
To: vim-dev@vim.org
Subject: Patch 7.2.024
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.024
Problem:    It's possible to set 'history' to a negative value and that causes
        an out-of-memory error.
Solution:   Check that 'history' has a positive value. (Doug Kearns)
Files:        src/option.c
*** ../vim-7.2.023/src/option.c    Thu Jul 24 18:45:15 2008
--- src/option.c    Fri Sep 26 22:20:20 2008
***************
*** 7974,7979 ****
--- 7974,7984 ----
      else /* curwin->w_p_scr > curwin->w_height */
          curwin->w_p_scr = curwin->w_height;
      }
+     if (p_hi < 0)
+     {
+     errmsg = e_positive;
+     p_hi = 0;
+     }
      if (p_report < 0)
      {
      errmsg = e_positive;
*** ../vim-7.2.023/src/version.c    Wed Oct  1 21:09:02 2008
--- src/version.c    Thu Oct  2 22:47:22 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     24,
  /**/
--
hundred-and-one symptoms of being an internet addict:
127. You bring your laptop and cellular phone to church.
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.025
New file
@@ -0,0 +1,54 @@
To: vim-dev@vim.org
Subject: Patch 7.2.025
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.025
Problem:    When a CursorHold event invokes system() it is retriggered over
        and over again.
Solution:   Don't reset did_cursorhold when getting K_IGNORE.
Files:        src/normal.c
*** ../vim-7.2.024/src/normal.c    Sat Sep  6 16:44:06 2008
--- src/normal.c    Sat Sep 27 13:03:34 2008
***************
*** 1132,1138 ****
      out_flush();
  #endif
  #ifdef FEAT_AUTOCMD
!     did_cursorhold = FALSE;
  #endif
      State = NORMAL;
--- 1132,1139 ----
      out_flush();
  #endif
  #ifdef FEAT_AUTOCMD
!     if (ca.cmdchar != K_IGNORE)
!     did_cursorhold = FALSE;
  #endif
      State = NORMAL;
*** ../vim-7.2.024/src/version.c    Thu Oct  2 22:48:01 2008
--- src/version.c    Thu Oct  2 22:54:41 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     25,
  /**/
--
hundred-and-one symptoms of being an internet addict:
128. You can access the Net -- via your portable and cellular phone.
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.026
New file
@@ -0,0 +1,105 @@
To: vim-dev@vim.org
Subject: Patch 7.2.026
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.026 (after 7.2.010)
Problem:    "K" doesn't use the length of the identifier but uses the rest of
        the line.
Solution:   Copy the desired number of characters first.
Files:        src/normal.c
*** ../vim-7.2.025/src/normal.c    Thu Oct  2 22:55:17 2008
--- src/normal.c    Sat Nov  1 13:41:03 2008
***************
*** 183,188 ****
--- 183,190 ----
  static void    nv_cursorhold __ARGS((cmdarg_T *cap));
  #endif
+ static char *e_noident = N_("E349: No identifier under cursor");
+
  /*
   * Function to be called for a Normal or Visual mode command.
   * The argument is a cmdarg_T.
***************
*** 3510,3516 ****
      if (find_type & FIND_STRING)
          EMSG(_("E348: No string under cursor"));
      else
!         EMSG(_("E349: No identifier under cursor"));
      return 0;
      }
      ptr += col;
--- 3512,3518 ----
      if (find_type & FIND_STRING)
          EMSG(_("E348: No string under cursor"));
      else
!         EMSG(_(e_noident));
      return 0;
      }
      ptr += col;
***************
*** 5472,5479 ****
          {
          /* An external command will probably use an argument starting
           * with "-" as an option.  To avoid trouble we skip the "-". */
!         while (*ptr == '-')
              ++ptr;
          /* When a count is given, turn it into a range.  Is this
           * really what we want? */
--- 5474,5490 ----
          {
          /* An external command will probably use an argument starting
           * with "-" as an option.  To avoid trouble we skip the "-". */
!         while (*ptr == '-' && n > 0)
!         {
              ++ptr;
+             --n;
+         }
+         if (n == 0)
+         {
+             EMSG(_(e_noident));     /* found dashes only */
+             vim_free(buf);
+             return;
+         }
          /* When a count is given, turn it into a range.  Is this
           * really what we want? */
***************
*** 5520,5526 ****
--- 5531,5539 ----
      if (cmdchar == 'K' && !kp_help)
      {
      /* Escape the argument properly for a shell command */
+     ptr = vim_strnsave(ptr, n);
      p = vim_strsave_shellescape(ptr, TRUE);
+     vim_free(ptr);
      if (p == NULL)
      {
          vim_free(buf);
*** ../vim-7.2.025/src/version.c    Thu Oct  2 22:55:17 2008
--- src/version.c    Sat Nov  1 13:50:53 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     26,
  /**/
--
hundred-and-one symptoms of being an internet addict:
161. You get up before the sun rises to check your e-mail, and you
     find yourself in the very same chair long after the sun has set.
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.027
New file
@@ -0,0 +1,98 @@
To: vim-dev@vim.org
Subject: Patch 7.2.027
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.027
Problem:    Can use cscope commands in the sandbox.
Solution:   Disallow them, they might not be safe.
Files:        src/ex_cmds.h
*** ../vim-7.2.026/src/ex_cmds.h    Thu Sep 18 12:43:21 2008
--- src/ex_cmds.h    Thu Sep 18 22:18:14 2008
***************
*** 278,284 ****
  EX(CMD_crewind,        "crewind",    ex_cc,
              RANGE|NOTADR|COUNT|TRLBAR|BANG),
  EX(CMD_cscope,        "cscope",    do_cscope,
!             EXTRA|NOTRLCOM|SBOXOK|XFILE),
  EX(CMD_cstag,        "cstag",    do_cstag,
              BANG|TRLBAR|WORD1),
  EX(CMD_cunmap,        "cunmap",    ex_unmap,
--- 278,284 ----
  EX(CMD_crewind,        "crewind",    ex_cc,
              RANGE|NOTADR|COUNT|TRLBAR|BANG),
  EX(CMD_cscope,        "cscope",    do_cscope,
!             EXTRA|NOTRLCOM|XFILE),
  EX(CMD_cstag,        "cstag",    do_cstag,
              BANG|TRLBAR|WORD1),
  EX(CMD_cunmap,        "cunmap",    ex_unmap,
***************
*** 506,512 ****
  EX(CMD_lclose,        "lclose",    ex_cclose,
              RANGE|NOTADR|COUNT|TRLBAR),
  EX(CMD_lcscope,        "lcscope",    do_cscope,
!             EXTRA|NOTRLCOM|SBOXOK|XFILE),
  EX(CMD_left,        "left",        ex_align,
              TRLBAR|RANGE|WHOLEFOLD|EXTRA|CMDWIN|MODIFY),
  EX(CMD_leftabove,    "leftabove",    ex_wrongmodifier,
--- 506,512 ----
  EX(CMD_lclose,        "lclose",    ex_cclose,
              RANGE|NOTADR|COUNT|TRLBAR),
  EX(CMD_lcscope,        "lcscope",    do_cscope,
!             EXTRA|NOTRLCOM|XFILE),
  EX(CMD_left,        "left",        ex_align,
              TRLBAR|RANGE|WHOLEFOLD|EXTRA|CMDWIN|MODIFY),
  EX(CMD_leftabove,    "leftabove",    ex_wrongmodifier,
***************
*** 653,658 ****
--- 653,660 ----
              EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
  EX(CMD_open,        "open",        ex_open,
              RANGE|EXTRA),
+ EX(CMD_oldfiles,    "oldfiles",    ex_oldfiles,
+             BANG|TRLBAR|SBOXOK|CMDWIN),
  EX(CMD_omap,        "omap",        ex_map,
              EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
  EX(CMD_omapclear,    "omapclear",    ex_mapclear,
***************
*** 804,810 ****
  EX(CMD_scriptencoding,    "scriptencoding", ex_scriptencoding,
              WORD1|TRLBAR|CMDWIN),
  EX(CMD_scscope,        "scscope",    do_scscope,
!             EXTRA|NOTRLCOM|SBOXOK),
  EX(CMD_set,        "set",        ex_set,
              TRLBAR|EXTRA|CMDWIN|SBOXOK),
  EX(CMD_setfiletype,    "setfiletype",    ex_setfiletype,
--- 806,812 ----
  EX(CMD_scriptencoding,    "scriptencoding", ex_scriptencoding,
              WORD1|TRLBAR|CMDWIN),
  EX(CMD_scscope,        "scscope",    do_scscope,
!             EXTRA|NOTRLCOM),
  EX(CMD_set,        "set",        ex_set,
              TRLBAR|EXTRA|CMDWIN|SBOXOK),
  EX(CMD_setfiletype,    "setfiletype",    ex_setfiletype,
*** ../vim-7.2.026/src/version.c    Sat Nov  1 13:51:57 2008
--- src/version.c    Thu Nov  6 10:21:21 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     27,
  /**/
--
hundred-and-one symptoms of being an internet addict:
179. You wonder why your household garbage can doesn't have an
     "empty recycle bin" button.
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.028
New file
@@ -0,0 +1,53 @@
To: vim-dev@vim.org
Subject: Patch 7.2.028
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.028
Problem:    Confusing error message for missing ().
Solution:   Change "braces" to "parentheses". (Gary Johnson)
Files:        src/eval.c
*** ../vim-7.2.027/src/eval.c    Wed Sep 10 15:38:13 2008
--- src/eval.c    Tue Sep 30 21:43:38 2008
***************
*** 3287,3293 ****
      if (*startarg != '(')
      {
!     EMSG2(_("E107: Missing braces: %s"), eap->arg);
      goto end;
      }
--- 3293,3299 ----
      if (*startarg != '(')
      {
!     EMSG2(_("E107: Missing parentheses: %s"), eap->arg);
      goto end;
      }
*** ../vim-7.2.027/src/version.c    Thu Nov  6 10:23:03 2008
--- src/version.c    Thu Nov  6 11:02:51 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     28,
  /**/
--
Wizards had always known that the act of observation changed the thing that
was observed, and sometimes forgot that it also changed the observer too.
            Terry Pratchett  -  Interesting times
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.029
New file
@@ -0,0 +1,44 @@
To: vim-dev@vim.org
Subject: Patch 7.2.029
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.029
Problem:    No completion for ":doautoall".
Solution:   Complete ":doautoall" like ":doautocmd".  (Doug Kearns)
Files:        src/ex_docmd.c
*** ../vim-7.2.028/src/ex_docmd.c    Thu Sep 18 21:29:07 2008
--- src/ex_docmd.c    Mon Nov  3 21:21:17 2008
***************
*** 3609,3614 ****
--- 3610,3616 ----
          return set_context_in_autocmd(xp, arg, FALSE);
      case CMD_doautocmd:
+     case CMD_doautoall:
          return set_context_in_autocmd(xp, arg, TRUE);
  #endif
      case CMD_set:
*** ../vim-7.2.028/src/version.c    Thu Nov  6 11:04:50 2008
--- src/version.c    Thu Nov  6 17:14:58 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     29,
  /**/
--
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/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.030
New file
@@ -0,0 +1,51 @@
To: vim-dev@vim.org
Subject: Patch 7.2.030
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.030 (after 7.2.027)
Problem:    Can't compile.
Solution:   Remove prematurely added ex_oldfiles.
Files:        src/ex_cmds.h
*** ../vim-7.2.029/src/ex_cmds.h    Thu Nov  6 10:23:03 2008
--- src/ex_cmds.h    Thu Nov  6 20:45:07 2008
***************
*** 653,660 ****
              EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
  EX(CMD_open,        "open",        ex_open,
              RANGE|EXTRA),
- EX(CMD_oldfiles,    "oldfiles",    ex_oldfiles,
-             BANG|TRLBAR|SBOXOK|CMDWIN),
  EX(CMD_omap,        "omap",        ex_map,
              EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
  EX(CMD_omapclear,    "omapclear",    ex_mapclear,
--- 653,658 ----
*** ../vim-7.2.029/src/version.c    Thu Nov  6 17:16:06 2008
--- src/version.c    Thu Nov  6 20:46:11 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     30,
  /**/
--
% cat /usr/include/sys/errno.h
#define    EPERM        1        /* Operation not permitted */
#define    ENOENT        2        /* No such file or directory */
#define    ESRCH        3        /* No such process */
[...]
#define EMACS        666        /* Too many macros */
%
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.031
New file
@@ -0,0 +1,1281 @@
To: vim-dev@vim.org
Subject: Patch 7.2.031
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.031
Problem:    Information in the viminfo file about previously edited files is
        not available to the user.  There is no way to get a complete list
        of files edited in previous Vim sessions.
Solution:   Add v:oldfiles and fill it with the list of old file names when
        first reading the viminfo file.  Add the ":oldfiles" command,
        ":browse oldfiles" and the "#<123" special file name.  Increase
        the default value for 'viminfo' from '20 to '100.
Files:        runtime/doc/cmdline.txt, runtime/doc/eval.txt,
        runtime/doc/starting.txt, runtime/doc/usr_21.txt, src/eval.c,
        src/ex_cmds.c, src/ex_cmds.h, src/ex_docmd.c, src/feature.h,
        src/fileio.c, src/main.c, src/mark.c, src/misc1.c,
        src/proto/eval.pro, src/proto/ex_cmds.pro, src/proto/mark.pro,
        src/option.c, src/structs.h, src/vim.h
*** ../vim-7.2.030/runtime/doc/cmdline.txt    Sat Aug  9 19:36:46 2008
--- runtime/doc/cmdline.txt    Thu Sep 18 22:55:27 2008
***************
*** 1,4 ****
! *cmdline.txt*   For Vim version 7.2.  Last change: 2008 Jul 29
            VIM REFERENCE MANUAL    by Bram Moolenaar
--- 1,4 ----
! *cmdline.txt*   For Vim version 7.2.  Last change: 2008 Sep 18
            VIM REFERENCE MANUAL    by Bram Moolenaar
***************
*** 157,162 ****
--- 157,167 ----
                  (doesn't work at the expression prompt; some
                  things such as changing the buffer or current
                  window are not allowed to avoid side effects)
+                 When the result is a |List| the items are used
+                 as lines.  They can have line breaks inside
+                 too.
+                 When the result is a Float it's automatically
+                 converted to a String.
          See |registers| about registers.  {not in Vi}
          Implementation detail: When using the |expression| register
          and invoking setcmdpos(), this sets the position before
***************
*** 730,748 ****
  In Ex commands, at places where a file name can be used, the following
  characters have a special meaning.  These can also be used in the expression
  function expand() |expand()|.
!     %    is replaced with the current file name            *:_%*
!     #    is replaced with the alternate file name        *:_#*
      #n    (where n is a number) is replaced with the file name of
!         buffer n.  "#0" is the same as "#"
!     ##    is replaced with all names in the argument list        *:_##*
          concatenated, separated by spaces.  Each space in a name
          is preceded with a backslash.
! Note that these give the file name as it was typed.  If an absolute path is
! needed (when using the file name from a different directory), you need to add
! ":p".  See |filename-modifiers|.
  Note that backslashes are inserted before spaces, so that the command will
  correctly interpret the file name.  But this doesn't happen for shell
! commands.  For those you probably have to use quotes: >
      :!ls "%"
      :r !spell "%"
--- 735,763 ----
  In Ex commands, at places where a file name can be used, the following
  characters have a special meaning.  These can also be used in the expression
  function expand() |expand()|.
!     %    Is replaced with the current file name.          *:_%* *c_%*
!     #    Is replaced with the alternate file name.      *:_#* *c_#*
      #n    (where n is a number) is replaced with the file name of
!         buffer n.  "#0" is the same as "#".
!     ##    Is replaced with all names in the argument list      *:_##* *c_##*
          concatenated, separated by spaces.  Each space in a name
          is preceded with a backslash.
!     #<n    (where n is a number > 0) is replaced with old      *:_#<* *c_#<*
!         file name n.  See |:oldfiles| or |v:oldfiles| to get the
!         number.                            *E809*
!         {only when compiled with the +eval and +viminfo features}
!
! Note that these, except "#<n", give the file name as it was typed.  If an
! absolute path is needed (when using the file name from a different directory),
! you need to add ":p".  See |filename-modifiers|.
!
! The "#<n" item returns an absolute path, but it will start with "~/" for files
! below your home directory.
!
  Note that backslashes are inserted before spaces, so that the command will
  correctly interpret the file name.  But this doesn't happen for shell
! commands.  For those you probably have to use quotes (this fails for files
! that contain a quote and wildcards): >
      :!ls "%"
      :r !spell "%"
*** ../vim-7.2.030/runtime/doc/eval.txt    Sat Aug  9 19:36:47 2008
--- runtime/doc/eval.txt    Sun Nov  2 14:25:38 2008
***************
*** 1,4 ****
! *eval.txt*    For Vim version 7.2.  Last change: 2008 Aug 09
            VIM REFERENCE MANUAL      by Bram Moolenaar
--- 1,4 ----
! *eval.txt*    For Vim version 7.2.  Last change: 2008 Nov 02
            VIM REFERENCE MANUAL      by Bram Moolenaar
***************
*** 1484,1489 ****
--- 1484,1500 ----
          This is the screen column number, like with |virtcol()|.  The
          value is zero when there was no mouse button click.
+                     *v:oldfiles* *oldfiles-variable*
+ v:oldfiles    List of file names that is loaded from the |viminfo| file on
+         startup.  These are the files that Vim remembers marks for.
+         The length of the List is limited by the ' argument of the
+         'viminfo' option (default is 100).
+         Also see |:oldfiles| and |c_#<|.
+         The List can be modified, but this has no effect on what is
+         stored in the |viminfo| file later.  If you use values other
+         than String this will cause trouble.
+         {only when compiled with the +viminfo feature}
+
                      *v:operator* *operator-variable*
  v:operator    The last operator given in Normal mode.  This is a single
          character except for commands starting with <g> or <z>,
*** ../vim-7.2.030/runtime/doc/starting.txt    Sat Aug  9 19:36:52 2008
--- runtime/doc/starting.txt    Sun Nov  9 12:12:19 2008
***************
*** 1,4 ****
! *starting.txt*  For Vim version 7.2.  Last change: 2008 Jun 21
            VIM REFERENCE MANUAL    by Bram Moolenaar
--- 1,4 ----
! *starting.txt*  For Vim version 7.2.  Last change: 2008 Nov 09
            VIM REFERENCE MANUAL    by Bram Moolenaar
***************
*** 1337,1344 ****
                              *viminfo-read*
  When Vim is started and the 'viminfo' option is non-empty, the contents of
  the viminfo file are read and the info can be used in the appropriate places.
! The marks are not read in at startup (but file marks are).  See
! |initialization| for how to set the 'viminfo' option upon startup.
                              *viminfo-write*
  When Vim exits and 'viminfo' is non-empty, the info is stored in the viminfo
--- 1335,1343 ----
                              *viminfo-read*
  When Vim is started and the 'viminfo' option is non-empty, the contents of
  the viminfo file are read and the info can be used in the appropriate places.
! The |v:oldfiles| variable is filled.  The marks are not read in at startup
! (but file marks are).  See |initialization| for how to set the 'viminfo'
! option upon startup.
                              *viminfo-write*
  When Vim exits and 'viminfo' is non-empty, the info is stored in the viminfo
***************
*** 1372,1377 ****
--- 1371,1378 ----
  that start with any string given with the "r" flag in 'viminfo'.  This can be
  used to avoid saving marks for files on removable media (for MS-DOS you would
  use "ra:,rb:", for Amiga "rdf0:,rdf1:,rdf2:").
+ The |v:oldfiles| variable is filled with the file names that the viminfo file
+ has marks for.
                              *viminfo-file-marks*
  Uppercase marks ('A to 'Z) are stored when writing the viminfo file.  The
***************
*** 1463,1470 ****
                             *:rv* *:rviminfo* *E195*
  :rv[iminfo][!] [file]    Read from viminfo file [file] (default: see above).
              If [!] is given, then any information that is
!             already set (registers, marks, etc.) will be
!             overwritten.  {not in Vi}
                      *:wv* *:wviminfo* *E137* *E138* *E574*
  :wv[iminfo][!] [file]    Write to viminfo file [file] (default: see above).
--- 1464,1471 ----
                             *:rv* *:rviminfo* *E195*
  :rv[iminfo][!] [file]    Read from viminfo file [file] (default: see above).
              If [!] is given, then any information that is
!             already set (registers, marks, |v:oldfiles|, etc.)
!             will be overwritten   {not in Vi}
                      *:wv* *:wviminfo* *E137* *E138* *E574*
  :wv[iminfo][!] [file]    Write to viminfo file [file] (default: see above).
***************
*** 1479,1482 ****
--- 1480,1499 ----
              the .viminfo file.
              {not in Vi}
+                         *:ol* *:oldfiles*
+ :ol[dfiles]        List the files that have marks stored in the viminfo
+             file.  This list is read on startup and only changes
+             afterwards with ":rviminfo!".  Also see |v:oldfiles|.
+             The number can be used with |c_#<|.
+             {not in Vi, only when compiled with the +eval feature}
+
+ :bro[wse] ol[dfiles][!]
+             List file names as with |:oldfiles|, and then prompt
+             for a number.  When the number is valid that file from
+             the list is edited.
+             If you get the |press-enter| prompt you can press "q"
+             and still get the prompt to enter a file number.
+             Use ! to abondon a modified buffer. |abandon|
+             {not when compiled with tiny or small features}
+
   vim:tw=78:ts=8:ft=help:norl:
*** ../vim-7.2.030/runtime/doc/usr_21.txt    Sat Aug  9 19:36:53 2008
--- runtime/doc/usr_21.txt    Sun Nov  9 12:14:10 2008
***************
*** 1,4 ****
! *usr_21.txt*    For Vim version 7.2.  Last change: 2007 May 01
               VIM USER MANUAL - by Bram Moolenaar
--- 1,4 ----
! *usr_21.txt*    For Vim version 7.2.  Last change: 2008 Nov 09
               VIM USER MANUAL - by Bram Moolenaar
***************
*** 153,159 ****
  to be lost.  Each item can be remembered only once.
! GETTING BACK TO WHERE YOU WERE
  You are halfway editing a file and it's time to leave for holidays.  You exit
  Vim and go enjoy yourselves, forgetting all about your work.  After a couple
--- 153,159 ----
  to be lost.  Each item can be remembered only once.
! GETTING BACK TO WHERE YOU STOPPED VIM
  You are halfway editing a file and it's time to leave for holidays.  You exit
  Vim and go enjoy yourselves, forgetting all about your work.  After a couple
***************
*** 168,173 ****
--- 168,215 ----
     The |:marks| command is useful to find out where '0 to '9 will take you.
+ GETTING BACK TO SOME FILE
+
+ If you want to go back to a file that you edited recently, but not when
+ exiting Vim, there is a slightly more complicated way.  You can see a list of
+ files by typing the command: >
+
+     :oldfiles
+ <    1: ~/.viminfo ~
+     2: ~/text/resume.txt ~
+     3: /tmp/draft ~
+
+ Now you would like to edit the second file, which is in the list preceded by
+ "2:".  You type: >
+
+     :e #<2
+
+ Instead of ":e" you can use any command that has a file name argument, the
+ "#<2" item works in the same place as "%" (current file name) and "#"
+ (alternate file name).  So you can also split the window to edit the third
+ file: >
+
+     :split #<3
+
+ That #<123 thing is a bit complicated when you just want to edit a file.
+ Fortunately there is a simpler way: >
+
+     :browse oldfiles
+ <    1: ~/.viminfo ~
+     2: ~/text/resume.txt ~
+     3: /tmp/draft ~
+     -- More --
+
+ You get the same list of files as with |:oldfiles|.  If you want to edit
+ "resume.txt" first press "q" to stop the listing.  You will get a prompt:
+
+     Type number and <Enter> (empty cancels): ~
+
+ Type "2" and press <Enter> to edit the second file.
+
+ More info at |:oldfiles|, |v:oldfiles| and |c_#<|.
+
+
  MOVE INFO FROM ONE VIM TO ANOTHER
  You can use the ":wviminfo" and ":rviminfo" commands to save and restore the
*** ../vim-7.2.030/src/eval.c    Thu Nov  6 11:04:50 2008
--- src/eval.c    Sun Nov  9 11:59:39 2008
***************
*** 348,353 ****
--- 348,354 ----
      {VV_NAME("mouse_col",     VAR_NUMBER), 0},
      {VV_NAME("operator",     VAR_STRING), VV_RO},
      {VV_NAME("searchforward",     VAR_NUMBER), 0},
+     {VV_NAME("oldfiles",     VAR_LIST), 0},
  };
  /* shorthand */
***************
*** 355,360 ****
--- 356,362 ----
  #define vv_nr        vv_di.di_tv.vval.v_number
  #define vv_float    vv_di.di_tv.vval.v_float
  #define vv_str        vv_di.di_tv.vval.v_string
+ #define vv_list        vv_di.di_tv.vval.v_list
  #define vv_tv        vv_di.di_tv
  /*
***************
*** 426,432 ****
  static long list_idx_of_item __ARGS((list_T *l, listitem_T *item));
  static void list_append __ARGS((list_T *l, listitem_T *item));
  static int list_append_tv __ARGS((list_T *l, typval_T *tv));
- static int list_append_string __ARGS((list_T *l, char_u *str, int len));
  static int list_append_number __ARGS((list_T *l, varnumber_T n));
  static int list_insert_tv __ARGS((list_T *l, typval_T *tv, listitem_T *item));
  static int list_extend __ARGS((list_T    *l1, list_T *l2, listitem_T *bef));
--- 428,433 ----
***************
*** 845,852 ****
      p = &vimvars[i];
      if (p->vv_di.di_tv.v_type == VAR_STRING)
      {
!         vim_free(p->vv_di.di_tv.vval.v_string);
!         p->vv_di.di_tv.vval.v_string = NULL;
      }
      }
      hash_clear(&vimvarht);
--- 846,858 ----
      p = &vimvars[i];
      if (p->vv_di.di_tv.v_type == VAR_STRING)
      {
!         vim_free(p->vv_string);
!         p->vv_string = NULL;
!     }
!     else if (p->vv_di.di_tv.v_type == VAR_LIST)
!     {
!         list_unref(p->vv_list);
!         p->vv_list = NULL;
      }
      }
      hash_clear(&vimvarht);
***************
*** 6057,6062 ****
--- 6063,6087 ----
  }
  /*
+  * Get list item "l[idx - 1]" as a string.  Returns NULL for failure.
+  */
+     char_u *
+ list_find_str(l, idx)
+     list_T    *l;
+     long    idx;
+ {
+     listitem_T    *li;
+
+     li = list_find(l, idx - 1);
+     if (li == NULL)
+     {
+     EMSGN(_(e_listidx), idx);
+     return NULL;
+     }
+     return get_tv_string(&li->li_tv);
+ }
+
+ /*
   * Locate "item" list "l" and return its index.
   * Returns -1 when "item" is not in the list.
   */
***************
*** 6147,6153 ****
   * When "len" >= 0 use "str[len]".
   * Returns FAIL when out of memory.
   */
!     static int
  list_append_string(l, str, len)
      list_T    *l;
      char_u    *str;
--- 6172,6178 ----
   * When "len" >= 0 use "str[len]".
   * Returns FAIL when out of memory.
   */
!     int
  list_append_string(l, str, len)
      list_T    *l;
      char_u    *str;
***************
*** 6507,6512 ****
--- 6532,6540 ----
      set_ref_in_ht(&fc->l_avars.dv_hashtab, copyID);
      }
+     /* v: vars */
+     set_ref_in_ht(&vimvarht, copyID);
+
      /*
       * 2. Go through the list of dicts and free items without the copyID.
       */
***************
*** 6597,6603 ****
      {
      case VAR_DICT:
          dd = tv->vval.v_dict;
!         if (dd->dv_copyID != copyID)
          {
          /* Didn't see this dict yet. */
          dd->dv_copyID = copyID;
--- 6625,6631 ----
      {
      case VAR_DICT:
          dd = tv->vval.v_dict;
!         if (dd != NULL && dd->dv_copyID != copyID)
          {
          /* Didn't see this dict yet. */
          dd->dv_copyID = copyID;
***************
*** 6607,6613 ****
      case VAR_LIST:
          ll = tv->vval.v_list;
!         if (ll->lv_copyID != copyID)
          {
          /* Didn't see this list yet. */
          ll->lv_copyID = copyID;
--- 6635,6641 ----
      case VAR_LIST:
          ll = tv->vval.v_list;
!         if (ll != NULL && ll->lv_copyID != copyID)
          {
          /* Didn't see this list yet. */
          ll->lv_copyID = copyID;
***************
*** 18106,18111 ****
--- 18134,18150 ----
  }
  /*
+  * Get List v: variable value.  Caller must take care of reference count when
+  * needed.
+  */
+     list_T *
+ get_vim_var_list(idx)
+     int        idx;
+ {
+     return vimvars[idx].vv_list;
+ }
+
+ /*
   * Set v:count, v:count1 and v:prevcount.
   */
      void
***************
*** 18141,18146 ****
--- 18180,18199 ----
  }
  /*
+  * Set List v: variable to "val".
+  */
+     void
+ set_vim_var_list(idx, val)
+     int        idx;
+     list_T    *val;
+ {
+     list_unref(vimvars[idx].vv_list);
+     vimvars[idx].vv_list = val;
+     if (val != NULL)
+     ++val->lv_refcount;
+ }
+
+ /*
   * Set v:register if needed.
   */
      void
***************
*** 21900,21905 ****
--- 21953,22014 ----
      }
  }
+ /*
+  * List v:oldfiles in a nice way.
+  */
+ /*ARGSUSED*/
+     void
+ ex_oldfiles(eap)
+     exarg_T    *eap;
+ {
+     list_T    *l = vimvars[VV_OLDFILES].vv_list;
+     listitem_T    *li;
+     int        nr = 0;
+
+     if (l == NULL)
+     msg((char_u *)_("No old files"));
+     else
+     {
+     msg_start();
+     msg_scroll = TRUE;
+     for (li = l->lv_first; li != NULL && !got_int; li = li->li_next)
+     {
+         msg_outnum((long)++nr);
+         MSG_PUTS(": ");
+         msg_outtrans(get_tv_string(&li->li_tv));
+         msg_putchar('\n');
+         out_flush();        /* output one line at a time */
+         ui_breakcheck();
+     }
+     /* Assume "got_int" was set to truncate the listing. */
+     got_int = FALSE;
+
+ #ifdef FEAT_BROWSE_CMD
+     if (cmdmod.browse)
+     {
+         quit_more = FALSE;
+         nr = prompt_for_number(FALSE);
+         msg_starthere();
+         if (nr > 0)
+         {
+         char_u *p = list_find_str(get_vim_var_list(VV_OLDFILES),
+                                     (long)nr);
+
+         if (p != NULL)
+         {
+             p = expand_env_save(p);
+             eap->arg = p;
+             eap->cmdidx = CMD_edit;
+             cmdmod.browse = FALSE;
+             do_exedit(eap, NULL);
+             vim_free(p);
+         }
+         }
+     }
+ #endif
+     }
+ }
+
  #endif /* FEAT_EVAL */
*** ../vim-7.2.030/src/ex_cmds.c    Sun Sep 14 21:40:26 2008
--- src/ex_cmds.c    Sun Sep 14 13:45:03 2008
***************
*** 24,30 ****
  static void do_filter __ARGS((linenr_T line1, linenr_T line2, exarg_T *eap, char_u *cmd, int do_in, int do_out));
  #ifdef FEAT_VIMINFO
  static char_u *viminfo_filename __ARGS((char_u    *));
! static void do_viminfo __ARGS((FILE *fp_in, FILE *fp_out, int want_info, int want_marks, int force_read));
  static int viminfo_encoding __ARGS((vir_T *virp));
  static int read_viminfo_up_to_marks __ARGS((vir_T *virp, int forceit, int writing));
  #endif
--- 24,30 ----
  static void do_filter __ARGS((linenr_T line1, linenr_T line2, exarg_T *eap, char_u *cmd, int do_in, int do_out));
  #ifdef FEAT_VIMINFO
  static char_u *viminfo_filename __ARGS((char_u    *));
! static void do_viminfo __ARGS((FILE *fp_in, FILE *fp_out, int flags));
  static int viminfo_encoding __ARGS((vir_T *virp));
  static int read_viminfo_up_to_marks __ARGS((vir_T *virp, int forceit, int writing));
  #endif
***************
*** 1676,1689 ****
  /*
   * read_viminfo() -- Read the viminfo file.  Registers etc. which are already
!  * set are not over-written unless force is TRUE. -- webb
   */
      int
! read_viminfo(file, want_info, want_marks, forceit)
!     char_u    *file;
!     int        want_info;
!     int        want_marks;
!     int        forceit;
  {
      FILE    *fp;
      char_u    *fname;
--- 1676,1687 ----
  /*
   * read_viminfo() -- Read the viminfo file.  Registers etc. which are already
!  * set are not over-written unless "flags" includes VIF_FORCEIT. -- webb
   */
      int
! read_viminfo(file, flags)
!     char_u    *file;        /* file name or NULL to use default name */
!     int        flags;        /* VIF_WANT_INFO et al. */
  {
      FILE    *fp;
      char_u    *fname;
***************
*** 1691,1697 ****
      if (no_viminfo())
      return FAIL;
!     fname = viminfo_filename(file);        /* may set to default if NULL */
      if (fname == NULL)
      return FAIL;
      fp = mch_fopen((char *)fname, READBIN);
--- 1689,1695 ----
      if (no_viminfo())
      return FAIL;
!     fname = viminfo_filename(file);    /* get file name in allocated buffer */
      if (fname == NULL)
      return FAIL;
      fp = mch_fopen((char *)fname, READBIN);
***************
*** 1701,1708 ****
      verbose_enter();
      smsg((char_u *)_("Reading viminfo file \"%s\"%s%s%s"),
          fname,
!         want_info ? _(" info") : "",
!         want_marks ? _(" marks") : "",
          fp == NULL ? _(" FAILED") : "");
      verbose_leave();
      }
--- 1699,1707 ----
      verbose_enter();
      smsg((char_u *)_("Reading viminfo file \"%s\"%s%s%s"),
          fname,
!         (flags & VIF_WANT_INFO) ? _(" info") : "",
!         (flags & VIF_WANT_MARKS) ? _(" marks") : "",
!         (flags & VIF_GET_OLDFILES) ? _(" oldfiles") : "",
          fp == NULL ? _(" FAILED") : "");
      verbose_leave();
      }
***************
*** 1712,1721 ****
      return FAIL;
      viminfo_errcnt = 0;
!     do_viminfo(fp, NULL, want_info, want_marks, forceit);
      fclose(fp);
-
      return OK;
  }
--- 1711,1719 ----
      return FAIL;
      viminfo_errcnt = 0;
!     do_viminfo(fp, NULL, flags);
      fclose(fp);
      return OK;
  }
***************
*** 1968,1974 ****
      }
      viminfo_errcnt = 0;
!     do_viminfo(fp_in, fp_out, !forceit, !forceit, FALSE);
      fclose(fp_out);        /* errors are ignored !? */
      if (fp_in != NULL)
--- 1966,1972 ----
      }
      viminfo_errcnt = 0;
!     do_viminfo(fp_in, fp_out, forceit ? 0 : (VIF_WANT_INFO | VIF_WANT_MARKS));
      fclose(fp_out);        /* errors are ignored !? */
      if (fp_in != NULL)
***************
*** 2041,2052 ****
   * do_viminfo() -- Should only be called from read_viminfo() & write_viminfo().
   */
      static void
! do_viminfo(fp_in, fp_out, want_info, want_marks, force_read)
      FILE    *fp_in;
      FILE    *fp_out;
!     int        want_info;
!     int        want_marks;
!     int        force_read;
  {
      int        count = 0;
      int        eof = FALSE;
--- 2039,2048 ----
   * do_viminfo() -- Should only be called from read_viminfo() & write_viminfo().
   */
      static void
! do_viminfo(fp_in, fp_out, flags)
      FILE    *fp_in;
      FILE    *fp_out;
!     int        flags;
  {
      int        count = 0;
      int        eof = FALSE;
***************
*** 2061,2068 ****
      if (fp_in != NULL)
      {
!     if (want_info)
!         eof = read_viminfo_up_to_marks(&vir, force_read, fp_out != NULL);
      else
          /* Skip info, find start of marks */
          while (!(eof = viminfo_readline(&vir))
--- 2057,2065 ----
      if (fp_in != NULL)
      {
!     if (flags & VIF_WANT_INFO)
!         eof = read_viminfo_up_to_marks(&vir,
!                      flags & VIF_FORCEIT, fp_out != NULL);
      else
          /* Skip info, find start of marks */
          while (!(eof = viminfo_readline(&vir))
***************
*** 2092,2099 ****
      write_viminfo_bufferlist(fp_out);
      count = write_viminfo_marks(fp_out);
      }
!     if (fp_in != NULL && want_marks)
!     copy_viminfo_marks(&vir, fp_out, count, eof);
      vim_free(vir.vir_line);
  #ifdef FEAT_MBYTE
--- 2089,2097 ----
      write_viminfo_bufferlist(fp_out);
      count = write_viminfo_marks(fp_out);
      }
!     if (fp_in != NULL
!         && (flags & (VIF_WANT_MARKS | VIF_GET_OLDFILES | VIF_FORCEIT)))
!     copy_viminfo_marks(&vir, fp_out, count, eof, flags);
      vim_free(vir.vir_line);
  #ifdef FEAT_MBYTE
*** ../vim-7.2.030/src/ex_cmds.h    Thu Nov  6 20:47:00 2008
--- src/ex_cmds.h    Thu Sep 18 22:18:14 2008
***************
*** 653,658 ****
--- 653,660 ----
              EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
  EX(CMD_open,        "open",        ex_open,
              RANGE|EXTRA),
+ EX(CMD_oldfiles,    "oldfiles",    ex_oldfiles,
+             BANG|TRLBAR|SBOXOK|CMDWIN),
  EX(CMD_omap,        "omap",        ex_map,
              EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
  EX(CMD_omapclear,    "omapclear",    ex_mapclear,
*** ../vim-7.2.030/src/ex_docmd.c    Thu Nov  6 17:16:06 2008
--- src/ex_docmd.c    Mon Nov  3 21:21:17 2008
***************
*** 364,369 ****
--- 364,370 ----
  # define ex_function        ex_ni
  # define ex_delfunction        ex_ni
  # define ex_return        ex_ni
+ # define ex_oldfiles        ex_ni
  #endif
  static char_u    *arg_all __ARGS((void));
  #ifdef FEAT_SESSION
***************
*** 1770,1776 ****
              }
              if (checkforcmd(&ea.cmd, "browse", 3))
              {
! #ifdef FEAT_BROWSE
                  cmdmod.browse = TRUE;
  #endif
                  continue;
--- 1771,1777 ----
              }
              if (checkforcmd(&ea.cmd, "browse", 3))
              {
! #ifdef FEAT_BROWSE_CMD
                  cmdmod.browse = TRUE;
  #endif
                  continue;
***************
*** 9508,9531 ****
              break;
          }
          s = src + 1;
          i = (int)getdigits(&s);
          *usedlen = (int)(s - src); /* length of what we expand */
!         buf = buflist_findnr(i);
!         if (buf == NULL)
          {
!             *errormsg = (char_u *)_("E194: No alternate file name to substitute for '#'");
              return NULL;
          }
!         if (lnump != NULL)
!             *lnump = ECMD_LAST;
!         if (buf->b_fname == NULL)
          {
!             result = (char_u *)"";
!             valid = 0;        /* Must have ":p:h" to be valid */
          }
-         else
-             result = buf->b_fname;
          break;
  #ifdef FEAT_SEARCHPATH
--- 9509,9558 ----
              break;
          }
          s = src + 1;
+         if (*s == '<')        /* "#<99" uses v:oldfiles */
+             ++s;
          i = (int)getdigits(&s);
          *usedlen = (int)(s - src); /* length of what we expand */
!         if (src[1] == '<')
          {
!             if (*usedlen < 2)
!             {
!             /* Should we give an error message for #<text? */
!             *usedlen = 1;
!             return NULL;
!             }
! #ifdef FEAT_EVAL
!             result = list_find_str(get_vim_var_list(VV_OLDFILES),
!                                      (long)i);
!             if (result == NULL)
!             {
!             *errormsg = (char_u *)"";
!             return NULL;
!             }
! #else
!             *errormsg = (char_u *)_("E809: #< is not available without the +eval feature");
              return NULL;
+ #endif
          }
!         else
          {
!             buf = buflist_findnr(i);
!             if (buf == NULL)
!             {
!             *errormsg = (char_u *)_("E194: No alternate file name to substitute for '#'");
!             return NULL;
!             }
!             if (lnump != NULL)
!             *lnump = ECMD_LAST;
!             if (buf->b_fname == NULL)
!             {
!             result = (char_u *)"";
!             valid = 0;        /* Must have ":p:h" to be valid */
!             }
!             else
!             result = buf->b_fname;
          }
          break;
  #ifdef FEAT_SEARCHPATH
***************
*** 10700,10706 ****
      p_viminfo = (char_u *)"'100";
      if (eap->cmdidx == CMD_rviminfo)
      {
!     if (read_viminfo(eap->arg, TRUE, TRUE, eap->forceit) == FAIL)
          EMSG(_("E195: Cannot open viminfo file for reading"));
      }
      else
--- 10727,10734 ----
      p_viminfo = (char_u *)"'100";
      if (eap->cmdidx == CMD_rviminfo)
      {
!     if (read_viminfo(eap->arg, VIF_WANT_INFO | VIF_WANT_MARKS
!                   | (eap->forceit ? VIF_FORCEIT : 0)) == FAIL)
          EMSG(_("E195: Cannot open viminfo file for reading"));
      }
      else
*** ../vim-7.2.030/src/feature.h    Wed Aug  6 18:45:07 2008
--- src/feature.h    Fri Sep 19 19:14:22 2008
***************
*** 767,775 ****
  /*
   * +browse        ":browse" command.
   */
! #if defined(FEAT_NORMAL) && (defined(FEAT_GUI_MSWIN) || defined(FEAT_GUI_MOTIF) || defined(FEAT_GUI_ATHENA) || defined(FEAT_GUI_GTK) || defined(FEAT_GUI_PHOTON) || defined(FEAT_GUI_MAC))
! # define FEAT_BROWSE
  #endif
  /*
--- 767,779 ----
  /*
   * +browse        ":browse" command.
+  *            or just the ":browse" command modifier
   */
! #if defined(FEAT_NORMAL)
! # define FEAT_BROWSE_CMD
! # if defined(FEAT_GUI_MSWIN) || defined(FEAT_GUI_MOTIF) || defined(FEAT_GUI_ATHENA) || defined(FEAT_GUI_GTK) || defined(FEAT_GUI_PHOTON) || defined(FEAT_GUI_MAC)
! #  define FEAT_BROWSE
! # endif
  #endif
  /*
*** ../vim-7.2.030/src/fileio.c    Thu Sep 18 21:29:07 2008
--- src/fileio.c    Mon Nov  3 21:21:47 2008
***************
*** 2711,2717 ****
  {
      if (!curbuf->b_marks_read && get_viminfo_parameter('\'') > 0
                            && curbuf->b_ffname != NULL)
!     read_viminfo(NULL, FALSE, TRUE, FALSE);
      /* Always set b_marks_read; needed when 'viminfo' is changed to include
       * the ' parameter after opening a buffer. */
--- 2711,2717 ----
  {
      if (!curbuf->b_marks_read && get_viminfo_parameter('\'') > 0
                            && curbuf->b_ffname != NULL)
!     read_viminfo(NULL, VIF_WANT_MARKS);
      /* Always set b_marks_read; needed when 'viminfo' is changed to include
       * the ' parameter after opening a buffer. */
***************
*** 9108,9114 ****
  set_context_in_autocmd(xp, arg, doautocmd)
      expand_T    *xp;
      char_u    *arg;
!     int        doautocmd;    /* TRUE for :doautocmd, FALSE for :autocmd */
  {
      char_u    *p;
      int        group;
--- 9109,9115 ----
  set_context_in_autocmd(xp, arg, doautocmd)
      expand_T    *xp;
      char_u    *arg;
!     int        doautocmd;    /* TRUE for :doauto*, FALSE for :autocmd */
  {
      char_u    *p;
      int        group;
*** ../vim-7.2.030/src/main.c    Thu Sep 18 20:55:19 2008
--- src/main.c    Sun Sep 14 13:26:10 2008
***************
*** 645,655 ****
  #ifdef FEAT_VIMINFO
      /*
!      * Read in registers, history etc, but not marks, from the viminfo file
       */
      if (*p_viminfo != NUL)
      {
!     read_viminfo(NULL, TRUE, FALSE, FALSE);
      TIME_MSG("reading viminfo");
      }
  #endif
--- 645,656 ----
  #ifdef FEAT_VIMINFO
      /*
!      * Read in registers, history etc, but not marks, from the viminfo file.
!      * This is where v:oldfiles gets filled.
       */
      if (*p_viminfo != NUL)
      {
!     read_viminfo(NULL, VIF_WANT_INFO | VIF_GET_OLDFILES);
      TIME_MSG("reading viminfo");
      }
  #endif
*** ../vim-7.2.030/src/mark.c    Sat Aug  9 19:37:29 2008
--- src/mark.c    Sun Sep 14 13:46:19 2008
***************
*** 1627,1641 ****
  /*
   * Handle marks in the viminfo file:
!  * fp_out == NULL   read marks for current buffer only
!  * fp_out != NULL   copy marks for buffers not in buffer list
   */
      void
! copy_viminfo_marks(virp, fp_out, count, eof)
      vir_T    *virp;
      FILE    *fp_out;
      int        count;
      int        eof;
  {
      char_u    *line = virp->vir_line;
      buf_T    *buf;
--- 1627,1643 ----
  /*
   * Handle marks in the viminfo file:
!  * fp_out != NULL: copy marks for buffers not in buffer list
!  * fp_out == NULL && (flags & VIF_WANT_MARKS): read marks for curbuf only
!  * fp_out == NULL && (flags & VIF_GET_OLDFILES | VIF_FORCEIT): fill v:oldfiles
   */
      void
! copy_viminfo_marks(virp, fp_out, count, eof, flags)
      vir_T    *virp;
      FILE    *fp_out;
      int        count;
      int        eof;
+     int        flags;
  {
      char_u    *line = virp->vir_line;
      buf_T    *buf;
***************
*** 1647,1656 ****
--- 1649,1671 ----
      char_u    *p;
      char_u    *name_buf;
      pos_T    pos;
+ #ifdef FEAT_EVAL
+     list_T    *list = NULL;
+ #endif
      if ((name_buf = alloc(LSIZE)) == NULL)
      return;
      *name_buf = NUL;
+
+ #ifdef FEAT_EVAL
+     if (fp_out == NULL && (flags & (VIF_GET_OLDFILES | VIF_FORCEIT)))
+     {
+     list = list_alloc();
+     if (list != NULL)
+         set_vim_var_list(VV_OLDFILES, list);
+     }
+ #endif
+
      num_marked_files = get_viminfo_parameter('\'');
      while (!eof && (count < num_marked_files || fp_out == NULL))
      {
***************
*** 1681,1686 ****
--- 1696,1706 ----
          p++;
      *p = NUL;
+ #ifdef FEAT_EVAL
+     if (list != NULL)
+         list_append_string(list, str, -1);
+ #endif
+
      /*
       * If fp_out == NULL, load marks for current buffer.
       * If fp_out != NULL, copy marks for buffers not in buflist.
***************
*** 1688,1694 ****
      load_marks = copy_marks_out = FALSE;
      if (fp_out == NULL)
      {
!         if (curbuf->b_ffname != NULL)
          {
          if (*name_buf == NUL)        /* only need to do this once */
              home_replace(NULL, curbuf->b_ffname, name_buf, LSIZE, TRUE);
--- 1708,1714 ----
      load_marks = copy_marks_out = FALSE;
      if (fp_out == NULL)
      {
!         if ((flags & VIF_WANT_MARKS) && curbuf->b_ffname != NULL)
          {
          if (*name_buf == NUL)        /* only need to do this once */
              home_replace(NULL, curbuf->b_ffname, name_buf, LSIZE, TRUE);
*** ../vim-7.2.030/src/misc1.c    Wed Jun 25 00:24:52 2008
--- src/misc1.c    Sun Nov  9 11:47:00 2008
***************
*** 3245,3253 ****
      /* When using ":silent" assume that <CR> was entered. */
      if (mouse_used != NULL)
!     MSG_PUTS(_("Type number or click with mouse (<Enter> cancels): "));
      else
!     MSG_PUTS(_("Choice number (<Enter> cancels): "));
      /* Set the state such that text can be selected/copied/pasted and we still
       * get mouse events. */
--- 3245,3253 ----
      /* When using ":silent" assume that <CR> was entered. */
      if (mouse_used != NULL)
!     MSG_PUTS(_("Type number and <Enter> or click with mouse (empty cancels): "));
      else
!     MSG_PUTS(_("Type number and <Enter> (empty cancels): "));
      /* Set the state such that text can be selected/copied/pasted and we still
       * get mouse events. */
*** ../vim-7.2.030/src/proto/eval.pro    Sun Jan  6 20:06:30 2008
--- src/proto/eval.pro    Sun Nov  9 12:05:56 2008
***************
*** 17,23 ****
  int eval_to_bool __ARGS((char_u *arg, int *error, char_u **nextcmd, int skip));
  char_u *eval_to_string_skip __ARGS((char_u *arg, char_u **nextcmd, int skip));
  int skip_expr __ARGS((char_u **pp));
! char_u *eval_to_string __ARGS((char_u *arg, char_u **nextcmd, int dolist));
  char_u *eval_to_string_safe __ARGS((char_u *arg, char_u **nextcmd, int use_sandbox));
  int eval_to_number __ARGS((char_u *expr));
  list_T *eval_spell_expr __ARGS((char_u *badword, char_u *expr));
--- 17,23 ----
  int eval_to_bool __ARGS((char_u *arg, int *error, char_u **nextcmd, int skip));
  char_u *eval_to_string_skip __ARGS((char_u *arg, char_u **nextcmd, int skip));
  int skip_expr __ARGS((char_u **pp));
! char_u *eval_to_string __ARGS((char_u *arg, char_u **nextcmd, int convert));
  char_u *eval_to_string_safe __ARGS((char_u *arg, char_u **nextcmd, int use_sandbox));
  int eval_to_number __ARGS((char_u *expr));
  list_T *eval_spell_expr __ARGS((char_u *badword, char_u *expr));
***************
*** 46,52 ****
--- 46,54 ----
  void list_unref __ARGS((list_T *l));
  void list_free __ARGS((list_T *l, int recurse));
  dictitem_T *dict_lookup __ARGS((hashitem_T *hi));
+ char_u *list_find_str __ARGS((list_T *l, long idx));
  int list_append_dict __ARGS((list_T *list, dict_T *dict));
+ int list_append_string __ARGS((list_T *l, char_u *str, int len));
  int garbage_collect __ARGS((void));
  dict_T *dict_alloc __ARGS((void));
  int dict_add_nr_str __ARGS((dict_T *d, char *key, long nr, char_u *str));
***************
*** 58,65 ****
--- 60,69 ----
  void set_vim_var_nr __ARGS((int idx, long val));
  long get_vim_var_nr __ARGS((int idx));
  char_u *get_vim_var_str __ARGS((int idx));
+ list_T *get_vim_var_list __ARGS((int idx));
  void set_vcount __ARGS((long count, long count1));
  void set_vim_var_string __ARGS((int idx, char_u *val, int len));
+ void set_vim_var_list __ARGS((int idx, list_T *val));
  void set_reg_var __ARGS((int c));
  char_u *v_exception __ARGS((char_u *oldval));
  char_u *v_throwpoint __ARGS((char_u *oldval));
***************
*** 94,99 ****
--- 98,104 ----
  void write_viminfo_varlist __ARGS((FILE *fp));
  int store_session_globals __ARGS((FILE *fd));
  void last_set_msg __ARGS((scid_T scriptID));
+ void ex_oldfiles __ARGS((exarg_T *eap));
  int modify_fname __ARGS((char_u *src, int *usedlen, char_u **fnamep, char_u **bufp, int *fnamelen));
  char_u *do_string_sub __ARGS((char_u *str, char_u *pat, char_u *sub, char_u *flags));
  /* vim: set ft=c : */
*** ../vim-7.2.030/src/proto/ex_cmds.pro    Sat May  5 20:13:58 2007
--- src/proto/ex_cmds.pro    Sat Sep 13 17:27:21 2008
***************
*** 11,17 ****
  char_u *make_filter_cmd __ARGS((char_u *cmd, char_u *itmp, char_u *otmp));
  void append_redir __ARGS((char_u *buf, char_u *opt, char_u *fname));
  int viminfo_error __ARGS((char *errnum, char *message, char_u *line));
! int read_viminfo __ARGS((char_u *file, int want_info, int want_marks, int forceit));
  void write_viminfo __ARGS((char_u *file, int forceit));
  int viminfo_readline __ARGS((vir_T *virp));
  char_u *viminfo_readstring __ARGS((vir_T *virp, int off, int convert));
--- 11,17 ----
  char_u *make_filter_cmd __ARGS((char_u *cmd, char_u *itmp, char_u *otmp));
  void append_redir __ARGS((char_u *buf, char_u *opt, char_u *fname));
  int viminfo_error __ARGS((char *errnum, char *message, char_u *line));
! int read_viminfo __ARGS((char_u *file, int flags));
  void write_viminfo __ARGS((char_u *file, int forceit));
  int viminfo_readline __ARGS((vir_T *virp));
  char_u *viminfo_readstring __ARGS((vir_T *virp, int off, int convert));
*** ../vim-7.2.030/src/proto/mark.pro    Sat May  5 19:29:37 2007
--- src/proto/mark.pro    Sat Sep 13 18:06:20 2008
***************
*** 26,30 ****
  void write_viminfo_filemarks __ARGS((FILE *fp));
  int removable __ARGS((char_u *name));
  int write_viminfo_marks __ARGS((FILE *fp_out));
! void copy_viminfo_marks __ARGS((vir_T *virp, FILE *fp_out, int count, int eof));
  /* vim: set ft=c : */
--- 26,30 ----
  void write_viminfo_filemarks __ARGS((FILE *fp));
  int removable __ARGS((char_u *name));
  int write_viminfo_marks __ARGS((FILE *fp_out));
! void copy_viminfo_marks __ARGS((vir_T *virp, FILE *fp_out, int count, int eof, int flags));
  /* vim: set ft=c : */
*** ../vim-7.2.030/src/option.c    Thu Oct  2 22:48:01 2008
--- src/option.c    Fri Sep 26 22:20:20 2008
***************
*** 2593,2605 ****
  #ifdef FEAT_VIMINFO
                  (char_u *)&p_viminfo, PV_NONE,
  #if defined(MSDOS) || defined(MSWIN) || defined(OS2)
!                 {(char_u *)"", (char_u *)"'20,<50,s10,h,rA:,rB:"}
  #else
  # ifdef AMIGA
                  {(char_u *)"",
!                  (char_u *)"'20,<50,s10,h,rdf0:,rdf1:,rdf2:"}
  # else
!                 {(char_u *)"", (char_u *)"'20,<50,s10,h"}
  # endif
  #endif
  #else
--- 2593,2605 ----
  #ifdef FEAT_VIMINFO
                  (char_u *)&p_viminfo, PV_NONE,
  #if defined(MSDOS) || defined(MSWIN) || defined(OS2)
!                 {(char_u *)"", (char_u *)"'100,<50,s10,h,rA:,rB:"}
  #else
  # ifdef AMIGA
                  {(char_u *)"",
!                  (char_u *)"'100,<50,s10,h,rdf0:,rdf1:,rdf2:"}
  # else
!                 {(char_u *)"", (char_u *)"'100,<50,s10,h"}
  # endif
  #endif
  #else
*** ../vim-7.2.030/src/structs.h    Thu Jul 31 22:04:27 2008
--- src/structs.h    Fri Sep 19 19:15:18 2008
***************
*** 459,465 ****
  typedef struct
  {
      int        hide;            /* TRUE when ":hide" was used */
! # ifdef FEAT_BROWSE
      int        browse;            /* TRUE to invoke file dialog */
  # endif
  # ifdef FEAT_WINDOWS
--- 459,465 ----
  typedef struct
  {
      int        hide;            /* TRUE when ":hide" was used */
! # ifdef FEAT_BROWSE_CMD
      int        browse;            /* TRUE to invoke file dialog */
  # endif
  # ifdef FEAT_WINDOWS
*** ../vim-7.2.030/src/vim.h    Sat Aug  9 19:37:40 2008
--- src/vim.h    Sat Sep 13 17:41:24 2008
***************
*** 1728,1734 ****
  #define VV_MOUSE_COL    51
  #define VV_OP        52
  #define VV_SEARCHFORWARD 53
! #define VV_LEN        54    /* number of v: vars */
  #ifdef FEAT_CLIPBOARD
--- 1728,1735 ----
  #define VV_MOUSE_COL    51
  #define VV_OP        52
  #define VV_SEARCHFORWARD 53
! #define VV_OLDFILES    54
! #define VV_LEN        55    /* number of v: vars */
  #ifdef FEAT_CLIPBOARD
***************
*** 2054,2057 ****
--- 2055,2064 ----
  #define DOSO_VIMRC    1    /* loading vimrc file */
  #define DOSO_GVIMRC    2    /* loading gvimrc file */
+ /* flags for read_viminfo() and children */
+ #define VIF_WANT_INFO        1    /* load non-mark info */
+ #define VIF_WANT_MARKS        2    /* load file marks */
+ #define VIF_FORCEIT        4    /* overwrite info already read */
+ #define VIF_GET_OLDFILES    8    /* load v:oldfiles */
+
  #endif /* VIM__H */
*** ../vim-7.2.030/src/version.c    Thu Nov  6 20:47:00 2008
--- src/version.c    Sun Nov  9 13:39:19 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     31,
  /**/
--
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/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.032
New file
@@ -0,0 +1,55 @@
To: vim-dev@vim.org
Subject: Patch 7.2.032
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.032 (after 7.2.031)
Problem:    Can't build with EXITFREE defined. (Dominique Pelle)
Solution:   Change vv_string to vv_str.
Files:        src/eval.c
*** ../vim-7.2.031/src/eval.c    Sun Nov  9 13:43:25 2008
--- src/eval.c    Sun Nov  9 17:16:06 2008
***************
*** 846,853 ****
      p = &vimvars[i];
      if (p->vv_di.di_tv.v_type == VAR_STRING)
      {
!         vim_free(p->vv_string);
!         p->vv_string = NULL;
      }
      else if (p->vv_di.di_tv.v_type == VAR_LIST)
      {
--- 846,853 ----
      p = &vimvars[i];
      if (p->vv_di.di_tv.v_type == VAR_STRING)
      {
!         vim_free(p->vv_str);
!         p->vv_str = NULL;
      }
      else if (p->vv_di.di_tv.v_type == VAR_LIST)
      {
*** ../vim-7.2.031/src/version.c    Sun Nov  9 13:43:25 2008
--- src/version.c    Sun Nov  9 17:21:00 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     32,
  /**/
--
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/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.033
New file
@@ -0,0 +1,78 @@
To: vim-dev@vim.org
Subject: Patch 7.2.033
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.033
Problem:    When detecting a little endian BOM "ucs-2le" is used, but the text
        might be "utf-16le".
Solution:   Default to "utf-16le", it also works for "ucs-2le". (Jia Yanwei)
Files:        src/fileio.c, src/testdir/test42.ok
*** ../vim-7.2.032/src/fileio.c    Sun Nov  9 13:43:25 2008
--- src/fileio.c    Mon Nov  3 21:21:47 2008
***************
*** 5550,5558 ****
          name = "ucs-4le";    /* FF FE 00 00 */
          len = 4;
      }
!     else if (flags == FIO_ALL || flags == (FIO_UCS2 | FIO_ENDIAN_L))
          name = "ucs-2le";    /* FF FE */
!     else if (flags == (FIO_UTF16 | FIO_ENDIAN_L))
          name = "utf-16le";    /* FF FE */
      }
      else if (p[0] == 0xfe && p[1] == 0xff
--- 5550,5559 ----
          name = "ucs-4le";    /* FF FE 00 00 */
          len = 4;
      }
!     else if (flags == (FIO_UCS2 | FIO_ENDIAN_L))
          name = "ucs-2le";    /* FF FE */
!     else if (flags == FIO_ALL || flags == (FIO_UTF16 | FIO_ENDIAN_L))
!         /* utf-16le is preferred, it also works for ucs-2le text */
          name = "utf-16le";    /* FF FE */
      }
      else if (p[0] == 0xfe && p[1] == 0xff
*** ../vim-7.2.032/src/testdir/test42.ok    Sat Mar  1 13:49:21 2008
--- src/testdir/test42.ok    Sat Nov  1 17:09:29 2008
***************
*** 20,26 ****
  ucs-2
!   fileencoding=ucs-2le
    bomb
  ucs-2le
--- 20,26 ----
  ucs-2
!   fileencoding=utf-16le
    bomb
  ucs-2le
*** ../vim-7.2.032/src/version.c    Sun Nov  9 17:21:10 2008
--- src/version.c    Tue Nov 11 21:54:14 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     33,
  /**/
--
hundred-and-one symptoms of being an internet addict:
234. You started college as a chemistry major, and walk out four years
     later as an Internet provider.
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.034
New file
@@ -0,0 +1,81 @@
To: vim-dev@vim.org
Subject: Patch 7.2.034
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.034
Problem:    Memory leak in spell info when deleting buffer.
Solution:   Free the memory. (Dominique Pelle)
Files:        src/buffer.c
*** ../vim-7.2.033/src/buffer.c    Mon Sep  1 17:32:40 2008
--- src/buffer.c    Wed Nov 12 11:21:49 2008
***************
*** 647,652 ****
--- 647,655 ----
      vim_free(buf->b_start_fenc);
      buf->b_start_fenc = NULL;
  #endif
+ #ifdef FEAT_SPELL
+     ga_clear(&buf->b_langp);
+ #endif
  }
  /*
***************
*** 1237,1243 ****
       * "buf" if one exists */
      if ((swb_flags & SWB_USEOPEN) && buf_jump_open_win(buf))
          return OK;
!     /* If 'switchbuf' contians "usetab": jump to first window in any tab
       * page containing "buf" if one exists */
      if ((swb_flags & SWB_USETAB) && buf_jump_open_tab(buf))
          return OK;
--- 1240,1246 ----
       * "buf" if one exists */
      if ((swb_flags & SWB_USEOPEN) && buf_jump_open_win(buf))
          return OK;
!     /* If 'switchbuf' contains "usetab": jump to first window in any tab
       * page containing "buf" if one exists */
      if ((swb_flags & SWB_USETAB) && buf_jump_open_tab(buf))
          return OK;
***************
*** 3964,3970 ****
      width = vim_strsize(out);
      if (maxwidth > 0 && width > maxwidth)
      {
!     /* Result is too long, must trunctate somewhere. */
      l = 0;
      if (itemcnt == 0)
          s = out;
--- 3967,3973 ----
      width = vim_strsize(out);
      if (maxwidth > 0 && width > maxwidth)
      {
!     /* Result is too long, must truncate somewhere. */
      l = 0;
      if (itemcnt == 0)
          s = out;
*** ../vim-7.2.033/src/version.c    Tue Nov 11 21:55:29 2008
--- src/version.c    Wed Nov 12 12:51:21 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     34,
  /**/
--
hundred-and-one symptoms of being an internet addict:
236. You start saving URL's in your digital watch.
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.035
New file
@@ -0,0 +1,128 @@
To: vim-dev@vim.org
Subject: Patch 7.2.035
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.035
Problem:    Mismatches between alloc/malloc, free/vim_free,
        realloc/vim_realloc.
Solution:   Use the right function. (Dominique Pelle)
Files:        src/gui_x11.c, src/mbyte.c, src/misc2.c, src/os_unix.c
*** ../vim-7.2.034/src/gui_x11.c    Fri Jun 20 11:59:25 2008
--- src/gui_x11.c    Wed Nov 12 11:47:03 2008
***************
*** 2450,2456 ****
      *colorPtr = colortable[closest];
      }
!     free(colortable);
      return OK;
  }
--- 2450,2456 ----
      *colorPtr = colortable[closest];
      }
!     vim_free(colortable);
      return OK;
  }
*** ../vim-7.2.034/src/mbyte.c    Sat Sep  6 16:44:06 2008
--- src/mbyte.c    Wed Nov 12 11:24:14 2008
***************
*** 5384,5390 ****
              draw_feedback = (char *)alloc(draw_data->chg_first
                                    + text->length);
              else
!             draw_feedback = realloc(draw_feedback,
                       draw_data->chg_first + text->length);
              if (draw_feedback != NULL)
              {
--- 5384,5390 ----
              draw_feedback = (char *)alloc(draw_data->chg_first
                                    + text->length);
              else
!             draw_feedback = vim_realloc(draw_feedback,
                       draw_data->chg_first + text->length);
              if (draw_feedback != NULL)
              {
*** ../vim-7.2.034/src/misc2.c    Sat Sep  6 16:44:06 2008
--- src/misc2.c    Wed Nov 12 11:42:51 2008
***************
*** 873,879 ****
          /* 3. check for available memory: call mch_avail_mem() */
          if (mch_avail_mem(TRUE) < KEEP_ROOM && !releasing)
          {
!         vim_free((char *)p);    /* System is low... no go! */
          p = NULL;
          }
          else
--- 873,879 ----
          /* 3. check for available memory: call mch_avail_mem() */
          if (mch_avail_mem(TRUE) < KEEP_ROOM && !releasing)
          {
!         free((char *)p);    /* System is low... no go! */
          p = NULL;
          }
          else
*** ../vim-7.2.034/src/os_unix.c    Wed Aug  6 18:45:01 2008
--- src/os_unix.c    Wed Nov 12 11:55:33 2008
***************
*** 2905,2911 ****
       * Ignore any errors.
       */
  #if defined(HAVE_SIGALTSTACK) || defined(HAVE_SIGSTACK)
!     signal_stack = malloc(SIGSTKSZ);
      init_signal_stack();
  #endif
  }
--- 2905,2911 ----
       * Ignore any errors.
       */
  #if defined(HAVE_SIGALTSTACK) || defined(HAVE_SIGSTACK)
!     signal_stack = (char *)alloc(SIGSTKSZ);
      init_signal_stack();
  #endif
  }
***************
*** 6814,6820 ****
      if (xsmp_icefd != -1)
      {
      SmcCloseConnection(xsmp.smcconn, 0, NULL);
!     vim_free(xsmp.clientid);
      xsmp.clientid = NULL;
      xsmp_icefd = -1;
      }
--- 6815,6822 ----
      if (xsmp_icefd != -1)
      {
      SmcCloseConnection(xsmp.smcconn, 0, NULL);
!     if (xsmp.clientid != NULL)
!         free(xsmp.clientid);
      xsmp.clientid = NULL;
      xsmp_icefd = -1;
      }
*** ../vim-7.2.034/src/version.c    Wed Nov 12 12:51:38 2008
--- src/version.c    Wed Nov 12 13:05:40 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     35,
  /**/
--
You can tune a file system, but you can't tuna fish
                            -- man tunefs
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.037
New file
@@ -0,0 +1,53 @@
To: vim-dev@vim.org
Subject: Patch 7.2.037
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.037
Problem:    Double free with GTK 1 and compiled with EXITFREE.
Solution:   Don't close display. (Dominique Pelle)
Files:        src/os_unix.c
*** ../vim-7.2.036/src/os_unix.c    Wed Nov 12 13:07:48 2008
--- src/os_unix.c    Wed Nov 12 11:55:33 2008
***************
*** 2936,2942 ****
      }
  #  endif
  # endif
! # ifdef FEAT_X11
      if (x11_display != NULL
  #  ifdef FEAT_XCLIPBOARD
          && x11_display != xterm_dpy
--- 2936,2943 ----
      }
  #  endif
  # endif
!     /* Don't close the display for GTK 1, it is done in exit(). */
! # if defined(FEAT_X11) && (!defined(FEAT_GUI_GTK) || defined(HAVE_GTK2))
      if (x11_display != NULL
  #  ifdef FEAT_XCLIPBOARD
          && x11_display != xterm_dpy
*** ../vim-7.2.036/src/version.c    Wed Nov 12 13:35:31 2008
--- src/version.c    Wed Nov 12 14:08:56 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     37,
  /**/
--
hundred-and-one symptoms of being an internet addict:
240. You think Webster's Dictionary is a directory of WEB sites.
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.038
New file
@@ -0,0 +1,86 @@
To: vim-dev@vim.org
Subject: Patch 7.2.038
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.038
Problem:    Overlapping arguments to memcpy().
Solution:   Use mch_memmove(). (Dominique Pelle)
Files:        src/if_xcmdsrv.c
*** ../vim-7.2.037/src/if_xcmdsrv.c    Wed Aug  6 18:38:13 2008
--- src/if_xcmdsrv.c    Wed Nov 12 12:09:01 2008
***************
*** 736,742 ****
          + serverReply.ga_len;
          e.id = w;
          ga_init2(&e.strings, 1, 100);
!         memcpy(p, &e, sizeof(e));
          serverReply.ga_len++;
      }
      }
--- 736,742 ----
          + serverReply.ga_len;
          e.id = w;
          ga_init2(&e.strings, 1, 100);
!         mch_memmove(p, &e, sizeof(e));
          serverReply.ga_len++;
      }
      }
***************
*** 1018,1024 ****
      p++;
      count = numItems - (p - regProp);
      if (count > 0)
!         memcpy(entry, p, count);
      XChangeProperty(dpy, RootWindow(dpy, 0), registryProperty, XA_STRING,
              8, PropModeReplace, regProp,
              (int)(numItems - (p - entry)));
--- 1018,1024 ----
      p++;
      count = numItems - (p - regProp);
      if (count > 0)
!         mch_memmove(entry, p, count);
      XChangeProperty(dpy, RootWindow(dpy, 0), registryProperty, XA_STRING,
              8, PropModeReplace, regProp,
              (int)(numItems - (p - entry)));
***************
*** 1072,1078 ****
          p++;
          lastHalf = numItems - (p - regProp);
          if (lastHalf > 0)
!             memcpy(entry, p, lastHalf);
          numItems = (entry - regProp) + lastHalf;
          p = entry;
          continue;
--- 1072,1078 ----
          p++;
          lastHalf = numItems - (p - regProp);
          if (lastHalf > 0)
!             mch_memmove(entry, p, lastHalf);
          numItems = (entry - regProp) + lastHalf;
          p = entry;
          continue;
*** ../vim-7.2.037/src/version.c    Wed Nov 12 14:09:38 2008
--- src/version.c    Wed Nov 12 14:51:00 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     38,
  /**/
--
hundred-and-one symptoms of being an internet addict:
241. You try to look for Net Search even when you're in File Manager.
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.039
New file
@@ -0,0 +1,46 @@
To: vim-dev@vim.org
Subject: Patch 7.2.039
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.039
Problem:    Accessing freed memory on exit when EXITFREE is defined.
Solution:   Call hash_init() on the v: hash table.
Files:        src/eval.c
*** ../vim-7.2.038/src/eval.c    Sun Nov  9 17:21:10 2008
--- src/eval.c    Wed Nov 12 12:15:14 2008
***************
*** 856,861 ****
--- 856,862 ----
      }
      }
      hash_clear(&vimvarht);
+     hash_init(&vimvarht);  /* garbage_collect() will access it */
      hash_clear(&compat_hashtab);
      /* script-local variables */
*** ../vim-7.2.038/src/version.c    Wed Nov 12 14:52:11 2008
--- src/version.c    Wed Nov 12 15:09:39 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     39,
  /**/
--
hundred-and-one symptoms of being an internet addict:
242. You turn down a better-paying job because it doesn't come with
     a free e-mail account.
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.040
New file
@@ -0,0 +1,64 @@
To: vim-dev@vim.org
Subject: Patch 7.2.040
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.040
Problem:    When using ":e ++ff=dos fname" and the file contains a NL without
        a CR before it and 'ffs' contains "unix" then the fileformat
        becomes unix.
Solution:   Ignore 'ffs' when using the ++ff argument. (Ben Schmidt)
        Also remove unreachable code.
Files:        src/fileio.c
*** ../vim-7.2.039/src/fileio.c    Tue Nov 11 21:55:29 2008
--- src/fileio.c    Wed Nov 12 13:19:42 2008
***************
*** 932,938 ****
--- 932,941 ----
      else
      {
      if (eap != NULL && eap->force_ff != 0)
+     {
          fileformat = get_fileformat_force(curbuf, eap);
+         try_unix = try_dos = try_mac = FALSE;
+     }
      else if (curbuf->b_p_bin)
          fileformat = EOL_UNIX;        /* binary: use Unix format */
      else if (*p_ffs == NUL)
***************
*** 2341,2351 ****
          STRCAT(IObuff, _("[CR missing]"));
          c = TRUE;
          }
-         if (ff_error == EOL_MAC)
-         {
-         STRCAT(IObuff, _("[NL found]"));
-         c = TRUE;
-         }
          if (split)
          {
          STRCAT(IObuff, _("[long lines split]"));
--- 2344,2349 ----
*** ../vim-7.2.039/src/version.c    Wed Nov 12 15:28:37 2008
--- src/version.c    Wed Nov 12 16:03:44 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     40,
  /**/
--
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/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.041
New file
@@ -0,0 +1,709 @@
To: vim-dev@vim.org
Subject: Patch 7.2.041
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.041
Problem:    In diff mode, when using two tabs, each with two diffed buffers,
        editing a buffer of the other tab messes up the diff.  (Matt
        Mzyzik)
Solution:   Only copy options from a window where the buffer was edited that
        doesn't have 'diff' set or is for the current tab page.
        Also fix that window options for a buffer are stored with the
        wrong window.
Files:        src/buffer.c, src/ex_cmds.c, src/ex_cmds2.c, src/ex_docmd.c,
        src/ex_getln.c, src/if_sniff.c, src/main.c, src/netbeans.c,
        src/normal.c, src/popupmnu.c, src/proto/buffer.pro,
        src/proto/ex_cmds.pro src/quickfix.c, src/window.c
*** ../vim-7.2.040/src/buffer.c    Wed Nov 12 12:51:38 2008
--- src/buffer.c    Wed Nov 12 17:45:01 2008
***************
*** 33,39 ****
  static char_u    *fname_match __ARGS((regprog_T *prog, char_u *name));
  #endif
  static void    buflist_setfpos __ARGS((buf_T *buf, win_T *win, linenr_T lnum, colnr_T col, int copy_options));
! static wininfo_T *find_wininfo __ARGS((buf_T *buf));
  #ifdef UNIX
  static buf_T    *buflist_findname_stat __ARGS((char_u *ffname, struct stat *st));
  static int    otherfile_buf __ARGS((buf_T *buf, char_u *ffname, struct stat *stp));
--- 33,39 ----
  static char_u    *fname_match __ARGS((regprog_T *prog, char_u *name));
  #endif
  static void    buflist_setfpos __ARGS((buf_T *buf, win_T *win, linenr_T lnum, colnr_T col, int copy_options));
! static wininfo_T *find_wininfo __ARGS((buf_T *buf, int skip_diff_buffer));
  #ifdef UNIX
  static buf_T    *buflist_findname_stat __ARGS((char_u *ffname, struct stat *st));
  static int    otherfile_buf __ARGS((buf_T *buf, char_u *ffname, struct stat *stp));
***************
*** 1093,1099 ****
  #endif
          setpcmark();
          retval = do_ecmd(0, NULL, NULL, NULL, ECMD_ONE,
!                           forceit ? ECMD_FORCEIT : 0);
          /*
           * do_ecmd() may create a new buffer, then we have to delete
--- 1093,1099 ----
  #endif
          setpcmark();
          retval = do_ecmd(0, NULL, NULL, NULL, ECMD_ONE,
!                       forceit ? ECMD_FORCEIT : 0, curwin);
          /*
           * do_ecmd() may create a new buffer, then we have to delete
***************
*** 1316,1322 ****
      setpcmark();
      if (!cmdmod.keepalt)
      curwin->w_alt_fnum = curbuf->b_fnum; /* remember alternate file */
!     buflist_altfpos();             /* remember curpos */
  #ifdef FEAT_VISUAL
      /* Don't restart Select mode after switching to another buffer. */
--- 1316,1322 ----
      setpcmark();
      if (!cmdmod.keepalt)
      curwin->w_alt_fnum = curbuf->b_fnum; /* remember alternate file */
!     buflist_altfpos(curwin);             /* remember curpos */
  #ifdef FEAT_VISUAL
      /* Don't restart Select mode after switching to another buffer. */
***************
*** 2404,2425 ****
      return;
  }
  /*
   * Find info for the current window in buffer "buf".
   * If not found, return the info for the most recently used window.
   * Returns NULL when there isn't any info.
   */
      static wininfo_T *
! find_wininfo(buf)
      buf_T    *buf;
  {
      wininfo_T    *wip;
      for (wip = buf->b_wininfo; wip != NULL; wip = wip->wi_next)
!     if (wip->wi_win == curwin)
          break;
!     if (wip == NULL)    /* if no fpos for curwin, use the first in the list */
!     wip = buf->b_wininfo;
      return wip;
  }
--- 2404,2473 ----
      return;
  }
+ #ifdef FEAT_DIFF
+ static int wininfo_other_tab_diff __ARGS((wininfo_T *wip));
+
+ /*
+  * Return TRUE when "wip" has 'diff' set and the diff is only for another tab
+  * page.  That's because a diff is local to a tab page.
+  */
+     static int
+ wininfo_other_tab_diff(wip)
+     wininfo_T    *wip;
+ {
+     win_T    *wp;
+
+     if (wip->wi_opt.wo_diff)
+     {
+     for (wp = firstwin; wp != NULL; wp = wp->w_next)
+         /* return FALSE when it's a window in the current tab page, thus
+          * the buffer was in diff mode here */
+         if (wip->wi_win == wp)
+         return FALSE;
+     return TRUE;
+     }
+     return FALSE;
+ }
+ #endif
+
  /*
   * Find info for the current window in buffer "buf".
   * If not found, return the info for the most recently used window.
+  * When "skip_diff_buffer" is TRUE avoid windows with 'diff' set that is in
+  * another tab page.
   * Returns NULL when there isn't any info.
   */
+ /*ARGSUSED*/
      static wininfo_T *
! find_wininfo(buf, skip_diff_buffer)
      buf_T    *buf;
+     int        skip_diff_buffer;
  {
      wininfo_T    *wip;
      for (wip = buf->b_wininfo; wip != NULL; wip = wip->wi_next)
!     if (wip->wi_win == curwin
! #ifdef FEAT_DIFF
!         && (!skip_diff_buffer || !wininfo_other_tab_diff(wip))
! #endif
!        )
          break;
!
!     /* If no wininfo for curwin, use the first in the list (that doesn't have
!      * 'diff' set and is in another tab page). */
!     if (wip == NULL)
!     {
! #ifdef FEAT_DIFF
!     if (skip_diff_buffer)
!     {
!         for (wip = buf->b_wininfo; wip != NULL; wip = wip->wi_next)
!         if (!wininfo_other_tab_diff(wip))
!             break;
!     }
!     else
! #endif
!         wip = buf->b_wininfo;
!     }
      return wip;
  }
***************
*** 2440,2446 ****
      clearFolding(curwin);
  #endif
!     wip = find_wininfo(buf);
      if (wip != NULL && wip->wi_optset)
      {
      copy_winopt(&wip->wi_opt, &curwin->w_onebuf_opt);
--- 2488,2494 ----
      clearFolding(curwin);
  #endif
!     wip = find_wininfo(buf, TRUE);
      if (wip != NULL && wip->wi_optset)
      {
      copy_winopt(&wip->wi_opt, &curwin->w_onebuf_opt);
***************
*** 2472,2478 ****
      wininfo_T    *wip;
      static pos_T no_position = {1, 0};
!     wip = find_wininfo(buf);
      if (wip != NULL)
      return &(wip->wi_fpos);
      else
--- 2520,2526 ----
      wininfo_T    *wip;
      static pos_T no_position = {1, 0};
!     wip = find_wininfo(buf, FALSE);
      if (wip != NULL)
      return &(wip->wi_fpos);
      else
***************
*** 2793,2806 ****
  #endif
  /*
!  * Set alternate cursor position for current window.
   * Also save the local window option values.
   */
      void
! buflist_altfpos()
  {
!     buflist_setfpos(curbuf, curwin, curwin->w_cursor.lnum,
!                           curwin->w_cursor.col, TRUE);
  }
  /*
--- 2841,2854 ----
  #endif
  /*
!  * Set alternate cursor position for the current buffer and window "win".
   * Also save the local window option values.
   */
      void
! buflist_altfpos(win)
!     win_T *win;
  {
!     buflist_setfpos(curbuf, win, win->w_cursor.lnum, win->w_cursor.col, TRUE);
  }
  /*
***************
*** 4492,4498 ****
                ECMD_ONE,
                ((P_HID(curwin->w_buffer)
                 || bufIsChanged(curwin->w_buffer)) ? ECMD_HIDE : 0)
!                                    + ECMD_OLDBUF);
  #ifdef FEAT_AUTOCMD
          if (use_firstwin)
          ++autocmd_no_leave;
--- 4540,4546 ----
                ECMD_ONE,
                ((P_HID(curwin->w_buffer)
                 || bufIsChanged(curwin->w_buffer)) ? ECMD_HIDE : 0)
!                                + ECMD_OLDBUF, curwin);
  #ifdef FEAT_AUTOCMD
          if (use_firstwin)
          ++autocmd_no_leave;
*** ../vim-7.2.040/src/ex_cmds.c    Sun Nov  9 13:43:25 2008
--- src/ex_cmds.c    Wed Nov 12 22:41:41 2008
***************
*** 3052,3058 ****
      retval = 0;    /* it's in the same file */
      }
      else if (do_ecmd(fnum, ffname, sfname, NULL, lnum,
!         (P_HID(curbuf) ? ECMD_HIDE : 0) + (forceit ? ECMD_FORCEIT : 0)) == OK)
      retval = -1;    /* opened another file */
      else
      retval = 1;    /* error encountered */
--- 3052,3059 ----
      retval = 0;    /* it's in the same file */
      }
      else if (do_ecmd(fnum, ffname, sfname, NULL, lnum,
!         (P_HID(curbuf) ? ECMD_HIDE : 0) + (forceit ? ECMD_FORCEIT : 0),
!         curwin) == OK)
      retval = -1;    /* opened another file */
      else
      retval = 1;    /* error encountered */
***************
*** 3085,3101 ****
   *     ECMD_OLDBUF: use existing buffer if it exists
   *    ECMD_FORCEIT: ! used for Ex command
   *     ECMD_ADDBUF: don't edit, just add to buffer list
   *
   * return FAIL for failure, OK otherwise
   */
      int
! do_ecmd(fnum, ffname, sfname, eap, newlnum, flags)
      int        fnum;
      char_u    *ffname;
      char_u    *sfname;
      exarg_T    *eap;            /* can be NULL! */
      linenr_T    newlnum;
      int        flags;
  {
      int        other_file;        /* TRUE if editing another file */
      int        oldbuf;            /* TRUE if using existing buffer */
--- 3086,3106 ----
   *     ECMD_OLDBUF: use existing buffer if it exists
   *    ECMD_FORCEIT: ! used for Ex command
   *     ECMD_ADDBUF: don't edit, just add to buffer list
+  *   oldwin: Should be "curwin" when editing a new buffer in the current
+  *           window, NULL when splitting the window first.  When not NULL info
+  *           of the previous buffer for "oldwin" is stored.
   *
   * return FAIL for failure, OK otherwise
   */
      int
! do_ecmd(fnum, ffname, sfname, eap, newlnum, flags, oldwin)
      int        fnum;
      char_u    *ffname;
      char_u    *sfname;
      exarg_T    *eap;            /* can be NULL! */
      linenr_T    newlnum;
      int        flags;
+     win_T    *oldwin;
  {
      int        other_file;        /* TRUE if editing another file */
      int        oldbuf;            /* TRUE if using existing buffer */
***************
*** 3267,3273 ****
      {
          if (!cmdmod.keepalt)
          curwin->w_alt_fnum = curbuf->b_fnum;
!         buflist_altfpos();
      }
      if (fnum)
--- 3272,3279 ----
      {
          if (!cmdmod.keepalt)
          curwin->w_alt_fnum = curbuf->b_fnum;
!         if (oldwin != NULL)
!         buflist_altfpos(oldwin);
      }
      if (fnum)
***************
*** 3371,3377 ****
          /* close the link to the current buffer */
          u_sync(FALSE);
!         close_buffer(curwin, curbuf,
                        (flags & ECMD_HIDE) ? 0 : DOBUF_UNLOAD);
  #ifdef FEAT_AUTOCMD
--- 3377,3383 ----
          /* close the link to the current buffer */
          u_sync(FALSE);
!         close_buffer(oldwin, curbuf,
                        (flags & ECMD_HIDE) ? 0 : DOBUF_UNLOAD);
  #ifdef FEAT_AUTOCMD
***************
*** 5609,5615 ****
           */
          alt_fnum = curbuf->b_fnum;
          (void)do_ecmd(0, NULL, NULL, NULL, ECMD_LASTL,
!                            ECMD_HIDE + ECMD_SET_HELP);
          if (!cmdmod.keepalt)
          curwin->w_alt_fnum = alt_fnum;
          empty_fnum = curbuf->b_fnum;
--- 5615,5627 ----
           */
          alt_fnum = curbuf->b_fnum;
          (void)do_ecmd(0, NULL, NULL, NULL, ECMD_LASTL,
!               ECMD_HIDE + ECMD_SET_HELP,
! #ifdef FEAT_WINDOWS
!               NULL  /* buffer is still open, don't store info */
! #else
!               curwin
! #endif
!             );
          if (!cmdmod.keepalt)
          curwin->w_alt_fnum = alt_fnum;
          empty_fnum = curbuf->b_fnum;
*** ../vim-7.2.040/src/ex_cmds2.c    Sun Sep  7 15:49:45 2008
--- src/ex_cmds2.c    Wed Nov 12 17:46:41 2008
***************
*** 2132,2139 ****
       * argument index. */
      if (do_ecmd(0, alist_name(&ARGLIST[curwin->w_arg_idx]), NULL,
                eap, ECMD_LAST,
!               (P_HID(curwin->w_buffer) ? ECMD_HIDE : 0) +
!                    (eap->forceit ? ECMD_FORCEIT : 0)) == FAIL)
          curwin->w_arg_idx = old_arg_idx;
      /* like Vi: set the mark where the cursor is in the file. */
      else if (eap->cmdidx != CMD_argdo)
--- 2132,2139 ----
       * argument index. */
      if (do_ecmd(0, alist_name(&ARGLIST[curwin->w_arg_idx]), NULL,
                eap, ECMD_LAST,
!               (P_HID(curwin->w_buffer) ? ECMD_HIDE : 0)
!              + (eap->forceit ? ECMD_FORCEIT : 0), curwin) == FAIL)
          curwin->w_arg_idx = old_arg_idx;
      /* like Vi: set the mark where the cursor is in the file. */
      else if (eap->cmdidx != CMD_argdo)
*** ../vim-7.2.040/src/ex_docmd.c    Sun Nov  9 13:43:25 2008
--- src/ex_docmd.c    Wed Nov 12 18:04:22 2008
***************
*** 7488,7494 ****
      /* ":new" or ":tabnew" without argument: edit an new empty buffer */
      setpcmark();
      (void)do_ecmd(0, NULL, NULL, eap, ECMD_ONE,
!                    ECMD_HIDE + (eap->forceit ? ECMD_FORCEIT : 0));
      }
      else if ((eap->cmdidx != CMD_split
  #ifdef FEAT_VERTSPLIT
--- 7488,7495 ----
      /* ":new" or ":tabnew" without argument: edit an new empty buffer */
      setpcmark();
      (void)do_ecmd(0, NULL, NULL, eap, ECMD_ONE,
!               ECMD_HIDE + (eap->forceit ? ECMD_FORCEIT : 0),
!               old_curwin == NULL ? curwin : NULL);
      }
      else if ((eap->cmdidx != CMD_split
  #ifdef FEAT_VERTSPLIT
***************
*** 7525,7531 ****
  #ifdef FEAT_LISTCMDS
              + (eap->cmdidx == CMD_badd ? ECMD_ADDBUF : 0 )
  #endif
!             ) == FAIL)
      {
          /* Editing the file failed.  If the window was split, close it. */
  #ifdef FEAT_WINDOWS
--- 7526,7532 ----
  #ifdef FEAT_LISTCMDS
              + (eap->cmdidx == CMD_badd ? ECMD_ADDBUF : 0 )
  #endif
!             , old_curwin == NULL ? curwin : NULL) == FAIL)
      {
          /* Editing the file failed.  If the window was split, close it. */
  #ifdef FEAT_WINDOWS
*** ../vim-7.2.040/src/ex_getln.c    Sun Sep 14 14:41:44 2008
--- src/ex_getln.c    Wed Nov 12 18:06:25 2008
***************
*** 6051,6057 ****
      cmdwin_type = '-';
      /* Create the command-line buffer empty. */
!     (void)do_ecmd(0, NULL, NULL, NULL, ECMD_ONE, ECMD_HIDE);
      (void)setfname(curbuf, (char_u *)"[Command Line]", NULL, TRUE);
      set_option_value((char_u *)"bt", 0L, (char_u *)"nofile", OPT_LOCAL);
      set_option_value((char_u *)"swf", 0L, NULL, OPT_LOCAL);
--- 6051,6057 ----
      cmdwin_type = '-';
      /* Create the command-line buffer empty. */
!     (void)do_ecmd(0, NULL, NULL, NULL, ECMD_ONE, ECMD_HIDE, NULL);
      (void)setfname(curbuf, (char_u *)"[Command Line]", NULL, TRUE);
      set_option_value((char_u *)"bt", 0L, (char_u *)"nofile", OPT_LOCAL);
      set_option_value((char_u *)"swf", 0L, NULL, OPT_LOCAL);
*** ../vim-7.2.040/src/main.c    Sun Nov  9 13:43:25 2008
--- src/main.c    Wed Nov 12 17:49:06 2008
***************
*** 2588,2594 ****
  # endif
          (void)do_ecmd(0, arg_idx < GARGCOUNT
                ? alist_name(&GARGLIST[arg_idx]) : NULL,
!               NULL, NULL, ECMD_LASTL, ECMD_HIDE);
  # ifdef HAS_SWAP_EXISTS_ACTION
          if (swap_exists_did_quit)
          {
--- 2588,2594 ----
  # endif
          (void)do_ecmd(0, arg_idx < GARGCOUNT
                ? alist_name(&GARGLIST[arg_idx]) : NULL,
!               NULL, NULL, ECMD_LASTL, ECMD_HIDE, curwin);
  # ifdef HAS_SWAP_EXISTS_ACTION
          if (swap_exists_did_quit)
          {
*** ../vim-7.2.040/src/netbeans.c    Sun Jul 13 19:18:03 2008
--- src/netbeans.c    Wed Nov 12 17:49:40 2008
***************
*** 1795,1801 ****
          buf->displayname = NULL;
          netbeansReadFile = 0; /* don't try to open disk file */
!         do_ecmd(0, NULL, 0, 0, ECMD_ONE, ECMD_HIDE + ECMD_OLDBUF);
          netbeansReadFile = 1;
          buf->bufp = curbuf;
          maketitle();
--- 1795,1801 ----
          buf->displayname = NULL;
          netbeansReadFile = 0; /* don't try to open disk file */
!         do_ecmd(0, NULL, 0, 0, ECMD_ONE, ECMD_HIDE + ECMD_OLDBUF, curwin);
          netbeansReadFile = 1;
          buf->bufp = curbuf;
          maketitle();
***************
*** 1960,1966 ****
          netbeansReadFile = 0; /* don't try to open disk file */
          do_ecmd(0, (char_u *)buf->displayname, 0, 0, ECMD_ONE,
!                              ECMD_HIDE + ECMD_OLDBUF);
          netbeansReadFile = 1;
          buf->bufp = curbuf;
          maketitle();
--- 1960,1966 ----
          netbeansReadFile = 0; /* don't try to open disk file */
          do_ecmd(0, (char_u *)buf->displayname, 0, 0, ECMD_ONE,
!                          ECMD_HIDE + ECMD_OLDBUF, curwin);
          netbeansReadFile = 1;
          buf->bufp = curbuf;
          maketitle();
***************
*** 1979,1985 ****
          vim_free(buf->displayname);
          buf->displayname = nb_unquote(args, NULL);
          do_ecmd(0, (char_u *)buf->displayname, NULL, NULL, ECMD_ONE,
!                              ECMD_HIDE + ECMD_OLDBUF);
          buf->bufp = curbuf;
          buf->initDone = TRUE;
          doupdate = 1;
--- 1979,1985 ----
          vim_free(buf->displayname);
          buf->displayname = nb_unquote(args, NULL);
          do_ecmd(0, (char_u *)buf->displayname, NULL, NULL, ECMD_ONE,
!                          ECMD_HIDE + ECMD_OLDBUF, curwin);
          buf->bufp = curbuf;
          buf->initDone = TRUE;
          doupdate = 1;
*** ../vim-7.2.040/src/normal.c    Sat Nov  1 13:51:57 2008
--- src/normal.c    Wed Nov 12 17:49:50 2008
***************
*** 6050,6056 ****
          autowrite(curbuf, FALSE);
      setpcmark();
      (void)do_ecmd(0, ptr, NULL, NULL, ECMD_LAST,
!                            P_HID(curbuf) ? ECMD_HIDE : 0);
      if (cap->nchar == 'F' && lnum >= 0)
      {
          curwin->w_cursor.lnum = lnum;
--- 6050,6056 ----
          autowrite(curbuf, FALSE);
      setpcmark();
      (void)do_ecmd(0, ptr, NULL, NULL, ECMD_LAST,
!                        P_HID(curbuf) ? ECMD_HIDE : 0, curwin);
      if (cap->nchar == 'F' && lnum >= 0)
      {
          curwin->w_cursor.lnum = lnum;
*** ../vim-7.2.040/src/popupmnu.c    Sun Jul 13 19:33:51 2008
--- src/popupmnu.c    Wed Nov 12 18:08:07 2008
***************
*** 573,579 ****
          {
              /* Don't want to sync undo in the current buffer. */
              ++no_u_sync;
!             res = do_ecmd(0, NULL, NULL, NULL, ECMD_ONE, 0);
              --no_u_sync;
              if (res == OK)
              {
--- 573,579 ----
          {
              /* Don't want to sync undo in the current buffer. */
              ++no_u_sync;
!             res = do_ecmd(0, NULL, NULL, NULL, ECMD_ONE, 0, NULL);
              --no_u_sync;
              if (res == OK)
              {
*** ../vim-7.2.040/src/proto/buffer.pro    Sun May  6 13:57:53 2007
--- src/proto/buffer.pro    Wed Nov 12 17:43:39 2008
***************
*** 33,39 ****
  char_u *getaltfname __ARGS((int errmsg));
  int buflist_add __ARGS((char_u *fname, int flags));
  void buflist_slash_adjust __ARGS((void));
! void buflist_altfpos __ARGS((void));
  int otherfile __ARGS((char_u *ffname));
  void buf_setino __ARGS((buf_T *buf));
  void fileinfo __ARGS((int fullname, int shorthelp, int dont_truncate));
--- 33,39 ----
  char_u *getaltfname __ARGS((int errmsg));
  int buflist_add __ARGS((char_u *fname, int flags));
  void buflist_slash_adjust __ARGS((void));
! void buflist_altfpos __ARGS((win_T *win));
  int otherfile __ARGS((char_u *ffname));
  void buf_setino __ARGS((buf_T *buf));
  void fileinfo __ARGS((int fullname, int shorthelp, int dont_truncate));
*** ../vim-7.2.040/src/proto/ex_cmds.pro    Sun Nov  9 13:43:25 2008
--- src/proto/ex_cmds.pro    Wed Nov 12 17:44:27 2008
***************
*** 27,33 ****
  void do_wqall __ARGS((exarg_T *eap));
  int not_writing __ARGS((void));
  int getfile __ARGS((int fnum, char_u *ffname, char_u *sfname, int setpm, linenr_T lnum, int forceit));
! int do_ecmd __ARGS((int fnum, char_u *ffname, char_u *sfname, exarg_T *eap, linenr_T newlnum, int flags));
  void ex_append __ARGS((exarg_T *eap));
  void ex_change __ARGS((exarg_T *eap));
  void ex_z __ARGS((exarg_T *eap));
--- 27,33 ----
  void do_wqall __ARGS((exarg_T *eap));
  int not_writing __ARGS((void));
  int getfile __ARGS((int fnum, char_u *ffname, char_u *sfname, int setpm, linenr_T lnum, int forceit));
! int do_ecmd __ARGS((int fnum, char_u *ffname, char_u *sfname, exarg_T *eap, linenr_T newlnum, int flags, win_T *oldwin));
  void ex_append __ARGS((exarg_T *eap));
  void ex_change __ARGS((exarg_T *eap));
  void ex_z __ARGS((exarg_T *eap));
*** ../vim-7.2.040/src/quickfix.c    Thu Jul 24 18:44:59 2008
--- src/quickfix.c    Wed Nov 12 18:12:00 2008
***************
*** 1420,1425 ****
--- 1420,1426 ----
      win_T        *win;
      win_T        *altwin;
  #endif
+     win_T        *oldwin = curwin;
      int            print_message = TRUE;
      int            len;
  #ifdef FEAT_FOLDING
***************
*** 1744,1750 ****
          }
          else
          ok = do_ecmd(qf_ptr->qf_fnum, NULL, NULL, NULL, (linenr_T)1,
!                            ECMD_HIDE + ECMD_SET_HELP);
      }
      else
          ok = buflist_getfile(qf_ptr->qf_fnum,
--- 1745,1752 ----
          }
          else
          ok = do_ecmd(qf_ptr->qf_fnum, NULL, NULL, NULL, (linenr_T)1,
!                        ECMD_HIDE + ECMD_SET_HELP,
!                        oldwin == curwin ? curwin : NULL);
      }
      else
          ok = buflist_getfile(qf_ptr->qf_fnum,
***************
*** 2267,2272 ****
--- 2269,2275 ----
      win_T    *win;
      tabpage_T    *prevtab = curtab;
      buf_T    *qf_buf;
+     win_T    *oldwin = curwin;
      if (eap->cmdidx == CMD_lopen || eap->cmdidx == CMD_lwindow)
      {
***************
*** 2326,2339 ****
          win->w_llist->qf_refcount++;
      }
      if (qf_buf != NULL)
          /* Use the existing quickfix buffer */
          (void)do_ecmd(qf_buf->b_fnum, NULL, NULL, NULL, ECMD_ONE,
!                              ECMD_HIDE + ECMD_OLDBUF);
      else
      {
          /* Create a new quickfix buffer */
!         (void)do_ecmd(0, NULL, NULL, NULL, ECMD_ONE, ECMD_HIDE);
          /* switch off 'swapfile' */
          set_option_value((char_u *)"swf", 0L, NULL, OPT_LOCAL);
          set_option_value((char_u *)"bt", 0L, (char_u *)"quickfix",
--- 2329,2344 ----
          win->w_llist->qf_refcount++;
      }
+     if (oldwin != curwin)
+         oldwin = NULL;  /* don't store info when in another window */
      if (qf_buf != NULL)
          /* Use the existing quickfix buffer */
          (void)do_ecmd(qf_buf->b_fnum, NULL, NULL, NULL, ECMD_ONE,
!                          ECMD_HIDE + ECMD_OLDBUF, oldwin);
      else
      {
          /* Create a new quickfix buffer */
!         (void)do_ecmd(0, NULL, NULL, NULL, ECMD_ONE, ECMD_HIDE, oldwin);
          /* switch off 'swapfile' */
          set_option_value((char_u *)"swf", 0L, NULL, OPT_LOCAL);
          set_option_value((char_u *)"bt", 0L, (char_u *)"quickfix",
*** ../vim-7.2.040/src/window.c    Wed Aug  6 18:32:11 2008
--- src/window.c    Wed Nov 12 18:12:37 2008
***************
*** 531,537 ****
  # ifdef FEAT_SCROLLBIND
              curwin->w_p_scb = FALSE;
  # endif
!             (void)do_ecmd(0, ptr, NULL, NULL, ECMD_LASTL, ECMD_HIDE);
              if (nchar == 'F' && lnum >= 0)
              {
                  curwin->w_cursor.lnum = lnum;
--- 531,538 ----
  # ifdef FEAT_SCROLLBIND
              curwin->w_p_scb = FALSE;
  # endif
!             (void)do_ecmd(0, ptr, NULL, NULL, ECMD_LASTL,
!                                ECMD_HIDE, NULL);
              if (nchar == 'F' && lnum >= 0)
              {
                  curwin->w_cursor.lnum = lnum;
*** ../vim-7.2.040/src/version.c    Wed Nov 12 16:04:43 2008
--- src/version.c    Wed Nov 12 16:54:35 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     41,
  /**/
--
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/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.042
New file
@@ -0,0 +1,166 @@
To: vim-dev@vim.org
Subject: Patch 7.2.042
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.042
Problem:    When using winrestview() in a BufWinEnter autocommand the window
        is scrolled anyway. (Matt Zyzik)
Solution:   Don't recompute topline when above 'scrolloff' from the bottom.
        Don't always put the cursor halfway when entering a buffer.  Add
        "w_topline_was_set".
Files:        src/buffer.c, src/move.c, src/structs.h
*** ../vim-7.2.041/src/buffer.c    Sat Nov 15 14:10:23 2008
--- src/buffer.c    Sat Nov 15 14:58:52 2008
***************
*** 1401,1406 ****
--- 1401,1409 ----
      curwin->w_cursor.coladd = 0;
  #endif
      curwin->w_set_curswant = TRUE;
+ #ifdef FEAT_AUTOCMD
+     curwin->w_topline_was_set = FALSE;
+ #endif
      /* Make sure the buffer is loaded. */
      if (curbuf->b_ml.ml_mfp == NULL)    /* need to load the file */
***************
*** 1440,1446 ****
      maketitle();
  #endif
  #ifdef FEAT_AUTOCMD
!     if (curwin->w_topline == 1)        /* when autocmds didn't change it */
  #endif
      scroll_cursor_halfway(FALSE);    /* redisplay at correct position */
--- 1443,1450 ----
      maketitle();
  #endif
  #ifdef FEAT_AUTOCMD
!     /* when autocmds didn't change it */
!     if (curwin->w_topline == 1 && !curwin->w_topline_was_set)
  #endif
      scroll_cursor_halfway(FALSE);    /* redisplay at correct position */
*** ../vim-7.2.041/src/move.c    Sun Jul 13 19:25:23 2008
--- src/move.c    Sat Nov 15 14:56:47 2008
***************
*** 280,297 ****
      if (curwin->w_botline <= curbuf->b_ml.ml_line_count)
      {
!         if (curwin->w_cursor.lnum < curwin->w_botline
!             && ((long)curwin->w_cursor.lnum
                           >= (long)curwin->w_botline - p_so
  #ifdef FEAT_FOLDING
              || hasAnyFolding(curwin)
  #endif
              ))
!         {
          lineoff_T    loff;
!         /* Cursor is above botline, check if there are 'scrolloff'
!          * window lines below the cursor.  If not, need to scroll. */
          n = curwin->w_empty_rows;
          loff.lnum = curwin->w_cursor.lnum;
  #ifdef FEAT_FOLDING
--- 280,299 ----
      if (curwin->w_botline <= curbuf->b_ml.ml_line_count)
      {
!         if (curwin->w_cursor.lnum < curwin->w_botline)
!         {
!           if (((long)curwin->w_cursor.lnum
                           >= (long)curwin->w_botline - p_so
  #ifdef FEAT_FOLDING
              || hasAnyFolding(curwin)
  #endif
              ))
!           {
          lineoff_T    loff;
!         /* Cursor is (a few lines) above botline, check if there are
!          * 'scrolloff' window lines below the cursor.  If not, need to
!          * scroll. */
          n = curwin->w_empty_rows;
          loff.lnum = curwin->w_cursor.lnum;
  #ifdef FEAT_FOLDING
***************
*** 317,322 ****
--- 319,328 ----
          if (n >= p_so)
              /* sufficient context, no need to scroll */
              check_botline = FALSE;
+           }
+           else
+           /* sufficient context, no need to scroll */
+           check_botline = FALSE;
          }
          if (check_botline)
          {
***************
*** 509,514 ****
--- 515,523 ----
      /* Approximate the value of w_botline */
      wp->w_botline += lnum - wp->w_topline;
      wp->w_topline = lnum;
+ #ifdef FEAT_AUTOCMD
+     wp->w_topline_was_set = TRUE;
+ #endif
  #ifdef FEAT_DIFF
      wp->w_topfill = 0;
  #endif
*** ../vim-7.2.041/src/structs.h    Sun Nov  9 13:43:25 2008
--- src/structs.h    Sat Nov 15 14:56:42 2008
***************
*** 1784,1793 ****
  #endif
      /*
!      * The next three specify the offsets for displaying the buffer:
       */
      linenr_T    w_topline;        /* buffer line number of the line at the
                         top of the window */
  #ifdef FEAT_DIFF
      int        w_topfill;        /* number of filler lines above w_topline */
      int        w_old_topfill;        /* w_topfill at last redraw */
--- 1784,1798 ----
  #endif
      /*
!      * "w_topline", "w_leftcol" and "w_skipcol" specify the offsets for
!      * displaying the buffer.
       */
      linenr_T    w_topline;        /* buffer line number of the line at the
                         top of the window */
+ #ifdef FEAT_AUTOCMD
+     char    w_topline_was_set;  /* flag set to TRUE when topline is set,
+                        e.g. by winrestview() */
+ #endif
  #ifdef FEAT_DIFF
      int        w_topfill;        /* number of filler lines above w_topline */
      int        w_old_topfill;        /* w_topfill at last redraw */
*** ../vim-7.2.041/src/version.c    Sat Nov 15 14:10:23 2008
--- src/version.c    Sat Nov 15 16:01:29 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     42,
  /**/
--
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/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.043
New file
@@ -0,0 +1,78 @@
To: vim-dev@vim.org
Subject: Patch 7.2.043
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.043
Problem:    VMS: Too many characters are escaped in filename and shell
        commands.
Solution:   Escape fewer characters. (Zoltan Arpadffy)
Files:        src/vim.h
*** ../vim-7.2.042/src/vim.h    Sun Nov  9 13:43:25 2008
--- src/vim.h    Fri Nov 14 21:41:17 2008
***************
*** 341,348 ****
  #ifdef BACKSLASH_IN_FILENAME
  # define PATH_ESC_CHARS ((char_u *)" \t\n*?[{`%#'\"|!<")
  #else
! # define PATH_ESC_CHARS ((char_u *)" \t\n*?[{`$\\%#'\"|!<")
! # define SHELL_ESC_CHARS ((char_u *)" \t\n*?[{`$\\%#'\"|!<>();&")
  #endif
  #define NUMBUFLEN 30        /* length of a buffer to store a number in ASCII */
--- 341,354 ----
  #ifdef BACKSLASH_IN_FILENAME
  # define PATH_ESC_CHARS ((char_u *)" \t\n*?[{`%#'\"|!<")
  #else
! # ifdef VMS
!     /* VMS allows a lot of characters in the file name */
! #  define PATH_ESC_CHARS ((char_u *)" \t\n*?{`\\%#'\"|!")
! #  define SHELL_ESC_CHARS ((char_u *)" \t\n*?{`\\%#'|!()&")
! # else
! #  define PATH_ESC_CHARS ((char_u *)" \t\n*?[{`$\\%#'\"|!<")
! #  define SHELL_ESC_CHARS ((char_u *)" \t\n*?[{`$\\%#'\"|!<>();&")
! # endif
  #endif
  #define NUMBUFLEN 30        /* length of a buffer to store a number in ASCII */
***************
*** 370,376 ****
     * Define __w64 as an empty token for everything but MSVC 7.x or later.
     */
  # if !defined(_MSC_VER)    || (_MSC_VER < 1300)
! #  define __w64
  # endif
  typedef unsigned long __w64    long_u;
  typedef         long __w64     long_i;
--- 376,382 ----
     * Define __w64 as an empty token for everything but MSVC 7.x or later.
     */
  # if !defined(_MSC_VER)    || (_MSC_VER < 1300)
! #  define __w64
  # endif
  typedef unsigned long __w64    long_u;
  typedef         long __w64     long_i;
*** ../vim-7.2.042/src/version.c    Sat Nov 15 16:05:30 2008
--- src/version.c    Thu Nov 20 10:23:51 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     43,
  /**/
--
In his lifetime van Gogh painted 486 oil paintings. Oddly enough, 8975
of them are to be found in the United States.
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.044
New file
@@ -0,0 +1,161 @@
To: vim-dev@vim.org
Subject: Patch 7.2.044
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.044
Problem:    Crash because of STRCPY() being over protective of the destination
        size. (Dominique Pelle)
Solution:   Add -D_FORTIFY_SOURCE=1 to CFLAGS.  Use an intermediate variable
        for the pointer to avoid a warning.
Files:        src/auto/configure, src/configure.in, src/eval.c
*** ../vim-7.2.043/src/auto/configure    Thu Jul 24 17:20:50 2008
--- src/auto/configure    Sun Nov 16 17:08:44 2008
***************
*** 16819,16839 ****
    LDFLAGS="$LDFLAGS -isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
  fi
- { $as_echo "$as_me:$LINENO: checking for GCC 3 or later" >&5
- $as_echo_n "checking for GCC 3 or later... " >&6; }
  DEPEND_CFLAGS_FILTER=
  if test "$GCC" = yes; then
    gccmajor=`echo "$gccversion" | sed -e 's/^\([1-9]\)\..*$/\1/g'`
    if test "$gccmajor" -gt "2"; then
      DEPEND_CFLAGS_FILTER="| sed 's+-I */+-isystem /+g'"
!   fi
! fi
! if test "$DEPEND_CFLAGS_FILTER" = ""; then
!   { $as_echo "$as_me:$LINENO: result: no" >&5
  $as_echo "no" >&6; }
! else
!   { $as_echo "$as_me:$LINENO: result: yes" >&5
  $as_echo "yes" >&6; }
  fi
--- 16819,16847 ----
    LDFLAGS="$LDFLAGS -isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
  fi
  DEPEND_CFLAGS_FILTER=
  if test "$GCC" = yes; then
+   { $as_echo "$as_me:$LINENO: checking for GCC 3 or later" >&5
+ $as_echo_n "checking for GCC 3 or later... " >&6; }
    gccmajor=`echo "$gccversion" | sed -e 's/^\([1-9]\)\..*$/\1/g'`
    if test "$gccmajor" -gt "2"; then
      DEPEND_CFLAGS_FILTER="| sed 's+-I */+-isystem /+g'"
!     { $as_echo "$as_me:$LINENO: result: yes" >&5
! $as_echo "yes" >&6; }
!   else
!     { $as_echo "$as_me:$LINENO: result: no" >&5
  $as_echo "no" >&6; }
!   fi
!       { $as_echo "$as_me:$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="$CFLAGS -D_FORTIFY_SOURCE=1"
!     { $as_echo "$as_me:$LINENO: result: yes" >&5
  $as_echo "yes" >&6; }
+   else
+     { $as_echo "$as_me:$LINENO: result: no" >&5
+ $as_echo "no" >&6; }
+   fi
  fi
*** ../vim-7.2.043/src/configure.in    Thu Jul 24 17:20:31 2008
--- src/configure.in    Sun Nov 16 17:08:40 2008
***************
*** 3152,3169 ****
  dnl But only when making dependencies, cproto and lint don't take "-isystem".
  dnl Mac gcc returns "powerpc-apple-darwin8-gcc-4.0.1 (GCC)...", need to allow
  dnl the number before the version number.
- AC_MSG_CHECKING(for GCC 3 or later)
  DEPEND_CFLAGS_FILTER=
  if test "$GCC" = yes; then
    gccmajor=`echo "$gccversion" | sed -e 's/^\([[1-9]]\)\..*$/\1/g'`
    if test "$gccmajor" -gt "2"; then
      DEPEND_CFLAGS_FILTER="| sed 's+-I */+-isystem /+g'"
    fi
- fi
- if test "$DEPEND_CFLAGS_FILTER" = ""; then
-   AC_MSG_RESULT(no)
- else
-   AC_MSG_RESULT(yes)
  fi
  AC_SUBST(DEPEND_CFLAGS_FILTER)
--- 3152,3176 ----
  dnl But only when making dependencies, cproto and lint don't take "-isystem".
  dnl Mac gcc returns "powerpc-apple-darwin8-gcc-4.0.1 (GCC)...", need to allow
  dnl the number before the version number.
  DEPEND_CFLAGS_FILTER=
  if test "$GCC" = yes; then
+   AC_MSG_CHECKING(for GCC 3 or later)
    gccmajor=`echo "$gccversion" | sed -e 's/^\([[1-9]]\)\..*$/\1/g'`
    if test "$gccmajor" -gt "2"; then
      DEPEND_CFLAGS_FILTER="| sed 's+-I */+-isystem /+g'"
+     AC_MSG_RESULT(yes)
+   else
+     AC_MSG_RESULT(no)
+   fi
+   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.
+   AC_MSG_CHECKING(whether we need -D_FORTIFY_SOURCE=1)
+   if test "$gccmajor" -gt "3"; then
+     CFLAGS="$CFLAGS -D_FORTIFY_SOURCE=1"
+     AC_MSG_RESULT(yes)
+   else
+     AC_MSG_RESULT(no)
    fi
  fi
  AC_SUBST(DEPEND_CFLAGS_FILTER)
*** ../vim-7.2.043/src/eval.c    Wed Nov 12 15:28:37 2008
--- src/eval.c    Sun Nov 16 20:46:28 2008
***************
*** 21150,21157 ****
      init_var_dict(&fc.l_avars, &fc.l_avars_var);
      add_nr_var(&fc.l_avars, &fc.fixvar[fixvar_idx++].var, "0",
                  (varnumber_T)(argcount - fp->uf_args.ga_len));
      v = &fc.fixvar[fixvar_idx++].var;
!     STRCPY(v->di_key, "000");
      v->di_flags = DI_FLAGS_RO | DI_FLAGS_FIX;
      hash_add(&fc.l_avars.dv_hashtab, DI2HIKEY(v));
      v->di_tv.v_type = VAR_LIST;
--- 21150,21160 ----
      init_var_dict(&fc.l_avars, &fc.l_avars_var);
      add_nr_var(&fc.l_avars, &fc.fixvar[fixvar_idx++].var, "0",
                  (varnumber_T)(argcount - fp->uf_args.ga_len));
+     /* Use "name" to avoid a warning from some compiler that checks the
+      * destination size. */
      v = &fc.fixvar[fixvar_idx++].var;
!     name = v->di_key;
!     STRCPY(name, "000");
      v->di_flags = DI_FLAGS_RO | DI_FLAGS_FIX;
      hash_add(&fc.l_avars.dv_hashtab, DI2HIKEY(v));
      v->di_tv.v_type = VAR_LIST;
*** ../vim-7.2.043/src/version.c    Thu Nov 20 10:26:19 2008
--- src/version.c    Thu Nov 20 10:34:31 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     44,
  /**/
--
Error:015 - Unable to exit Windows.  Try the door.
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.045
New file
@@ -0,0 +1,67 @@
To: vim-dev@vim.org
Subject: Patch 7.2.045
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.045
Problem:    The Python interface has an empty entry in sys.path.
Solution:   Filter out the empty entry. (idea from James Vega)
Files:        src/if_python.c
*** ../vim-7.2.044/src/if_python.c    Thu Jul 24 16:24:48 2008
--- src/if_python.c    Thu Nov 20 11:03:53 2008
***************
*** 531,536 ****
--- 531,542 ----
      if (PythonMod_Init())
          goto fail;
+     /* Remove the element from sys.path that was added because of our
+      * argv[0] value in PythonMod_Init().  Previously we used an empty
+      * string, but dependinding on the OS we then get an empty entry or
+      * the current directory in sys.path. */
+     PyRun_SimpleString("import sys; sys.path = filter(lambda x: x != '/must>not&exist', sys.path)");
+
      /* the first python thread is vim's, release the lock */
      Python_SaveThread();
***************
*** 2345,2351 ****
  {
      PyObject *mod;
      PyObject *dict;
!     static char *(argv[2]) = {"", NULL};
      /* Fixups... */
      BufferType.ob_type = &PyType_Type;
--- 2351,2358 ----
  {
      PyObject *mod;
      PyObject *dict;
!     /* The special value is removed from sys.path in Python_Init(). */
!     static char *(argv[2]) = {"/must>not&exist/foo", NULL};
      /* Fixups... */
      BufferType.ob_type = &PyType_Type;
*** ../vim-7.2.044/src/version.c    Thu Nov 20 10:36:04 2008
--- src/version.c    Thu Nov 20 10:58:11 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     45,
  /**/
--
press CTRL-ALT-DEL for more information
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.046
New file
@@ -0,0 +1,55 @@
To: vim-dev@vim.org
Subject: Patch 7.2.046
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.046
Problem:    Wrong check for filling buffer with encoding. (Danek Duvall)
Solution:   Remove pointers. (Dominique Pelle)
Files:        src/mbyte.c
*** ../vim-7.2.045/src/mbyte.c    Wed Nov 12 13:07:48 2008
--- src/mbyte.c    Wed Nov 19 21:44:50 2008
***************
*** 3131,3137 ****
      else
          s = p + 1;
      }
!     for (i = 0; s[i] != NUL && s + i < buf + sizeof(buf) - 1; ++i)
      {
      if (s[i] == '_' || s[i] == '-')
          buf[i] = '-';
--- 3131,3137 ----
      else
          s = p + 1;
      }
!     for (i = 0; s[i] != NUL && i < sizeof(buf) - 1; ++i)
      {
      if (s[i] == '_' || s[i] == '-')
          buf[i] = '-';
*** ../vim-7.2.045/src/version.c    Thu Nov 20 11:04:01 2008
--- src/version.c    Thu Nov 20 11:54:23 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     46,
  /**/
--
       He was not in the least bit scared to be mashed into a pulp
       Or to have his eyes gouged out and his elbows broken;
       To have his kneecaps split and his body burned away
       And his limbs all hacked and mangled, brave Sir Robin.
                 "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/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.047
New file
@@ -0,0 +1,88 @@
To: vim-dev@vim.org
Subject: Patch 7.2.047
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.047
Problem:    Starting Vim with the -nb argument while it's not supported causes
        the other side to hang.
Solution:   When -nb is used while it's not supported exit Vim. (Xavier de
        Gaye)
Files:        src/main.c, src/vim.h
*** ../vim-7.2.046/src/main.c    Sat Nov 15 14:10:23 2008
--- src/main.c    Thu Nov 20 14:09:27 2008
***************
*** 1510,1516 ****
  early_arg_scan(parmp)
      mparm_T    *parmp;
  {
! #if defined(FEAT_XCLIPBOARD) || defined(FEAT_CLIENTSERVER)
      int        argc = parmp->argc;
      char    **argv = parmp->argv;
      int        i;
--- 1510,1517 ----
  early_arg_scan(parmp)
      mparm_T    *parmp;
  {
! #if defined(FEAT_XCLIPBOARD) || defined(FEAT_CLIENTSERVER) \
!     || !defined(FEAT_NETBEANS_INTG)
      int        argc = parmp->argc;
      char    **argv = parmp->argv;
      int        i;
***************
*** 1582,1587 ****
--- 1583,1596 ----
      else if (STRICMP(argv[i], "--echo-wid") == 0)
          echo_wid_arg = TRUE;
  # endif
+ # ifndef FEAT_NETBEANS_INTG
+     else if (strncmp(argv[i], "-nb", (size_t)3) == 0)
+         {
+             mch_errmsg(_("'-nb' cannot be used: not enabled at compile time\n"));
+             mch_exit(2);
+         }
+ # endif
+
      }
  #endif
  }
*** ../vim-7.2.046/src/vim.h    Thu Nov 20 10:26:19 2008
--- src/vim.h    Thu Nov 20 12:06:14 2008
***************
*** 1986,1991 ****
--- 1986,1994 ----
  # endif
  #endif
+ #ifndef FEAT_NETBEANS_INTG
+ # undef NBDEBUG
+ #endif
  #ifdef NBDEBUG /* Netbeans debugging. */
  # include "nbdebug.h"
  #else
*** ../vim-7.2.046/src/version.c    Thu Nov 20 11:55:53 2008
--- src/version.c    Thu Nov 20 14:07:57 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     47,
  /**/
--
FIRST HEAD:  Oh! quick! get the sword out I want to cut his head off.
THIRD HEAD:  Oh, cut your own head off.
SECOND HEAD: Yes - do us all a favour.
                 "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/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.048
New file
@@ -0,0 +1,160 @@
To: vim-dev@vim.org
Subject: Patch 7.2.048
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.048
Problem:    v:prevcount is changed too often.  Counts are not multiplied when
        setting v:count.
Solution:   Set v:prevcount properly.  Multiply counts. (idea by Ben Schmidt)
Files:        src/eval.c, src/normal.c, src/proto/eval.pro
*** ../vim-7.2.047/src/eval.c    Thu Nov 20 10:36:04 2008
--- src/eval.c    Thu Nov 20 15:53:47 2008
***************
*** 18146,18159 ****
  }
  /*
!  * Set v:count, v:count1 and v:prevcount.
   */
      void
! set_vcount(count, count1)
      long    count;
      long    count1;
  {
!     vimvars[VV_PREVCOUNT].vv_nr = vimvars[VV_COUNT].vv_nr;
      vimvars[VV_COUNT].vv_nr = count;
      vimvars[VV_COUNT1].vv_nr = count1;
  }
--- 18146,18162 ----
  }
  /*
!  * Set v:count to "count" and v:count1 to "count1".
!  * When "set_prevcount" is TRUE first set v:prevcount from v:count.
   */
      void
! set_vcount(count, count1, set_prevcount)
      long    count;
      long    count1;
+     int        set_prevcount;
  {
!     if (set_prevcount)
!     vimvars[VV_PREVCOUNT].vv_nr = vimvars[VV_COUNT].vv_nr;
      vimvars[VV_COUNT].vv_nr = count;
      vimvars[VV_COUNT1].vv_nr = count1;
  }
*** ../vim-7.2.047/src/normal.c    Sat Nov 15 14:10:23 2008
--- src/normal.c    Thu Nov 20 16:04:44 2008
***************
*** 580,585 ****
--- 580,588 ----
      static int    old_mapped_len = 0;
  #endif
      int        idx;
+ #ifdef FEAT_EVAL
+     int        set_prevcount = FALSE;
+ #endif
      vim_memset(&ca, 0, sizeof(ca));    /* also resets ca.retval */
      ca.oap = oap;
***************
*** 615,621 ****
--- 618,629 ----
      /* When not finishing an operator and no register name typed, reset the
       * count. */
      if (!finish_op && !oap->regname)
+     {
      ca.opcount = 0;
+ #ifdef FEAT_EVAL
+     set_prevcount = TRUE;
+ #endif
+     }
  #ifdef FEAT_AUTOCMD
      /* Restore counts from before receiving K_CURSORHOLD.  This means after
***************
*** 719,725 ****
           * command, so that v:count can be used in an expression mapping
           * right after the count. */
          if (toplevel && stuff_empty())
!         set_vcount(ca.count0, ca.count0 == 0 ? 1 : ca.count0);
  #endif
          if (ctrl_w)
          {
--- 727,741 ----
           * 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)
          {
***************
*** 806,812 ****
       * Only set v:count when called from main() and not a stuffed command.
       */
      if (toplevel && stuff_empty())
!     set_vcount(ca.count0, ca.count1);
  #endif
      /*
--- 822,828 ----
       * Only set v:count when called from main() and not a stuffed command.
       */
      if (toplevel && stuff_empty())
!     set_vcount(ca.count0, ca.count1, set_prevcount);
  #endif
      /*
*** ../vim-7.2.047/src/proto/eval.pro    Sun Nov  9 13:43:25 2008
--- src/proto/eval.pro    Thu Nov 20 15:53:54 2008
***************
*** 61,67 ****
  long get_vim_var_nr __ARGS((int idx));
  char_u *get_vim_var_str __ARGS((int idx));
  list_T *get_vim_var_list __ARGS((int idx));
! void set_vcount __ARGS((long count, long count1));
  void set_vim_var_string __ARGS((int idx, char_u *val, int len));
  void set_vim_var_list __ARGS((int idx, list_T *val));
  void set_reg_var __ARGS((int c));
--- 61,67 ----
  long get_vim_var_nr __ARGS((int idx));
  char_u *get_vim_var_str __ARGS((int idx));
  list_T *get_vim_var_list __ARGS((int idx));
! void set_vcount __ARGS((long count, long count1, int set_prevcount));
  void set_vim_var_string __ARGS((int idx, char_u *val, int len));
  void set_vim_var_list __ARGS((int idx, list_T *val));
  void set_reg_var __ARGS((int c));
*** ../vim-7.2.047/src/version.c    Thu Nov 20 14:11:47 2008
--- src/version.c    Thu Nov 20 16:08:19 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     48,
  /**/
--
Microsoft's definition of a boolean: TRUE, FALSE, MAYBE
"Embrace and extend"...?
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.050
New file
@@ -0,0 +1,316 @@
To: vim-dev@vim.org
Subject: Patch 7.2.050
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.050
Problem:    Warnings for not checking return value of fwrite(). (Chip Campbell)
Solution:   Use the return value.
Files:        src/spell.c
*** ../vim-7.2.049/src/spell.c    Mon Aug 25 04:12:38 2008
--- src/spell.c    Thu Nov 20 17:28:01 2008
***************
*** 7926,7931 ****
--- 7926,7933 ----
      char_u    *p;
      int        rr;
      int        retval = OK;
+     int        fwv = 1;  /* collect return value of fwrite() to avoid
+                  warnings from picky compiler */
      fd = mch_fopen((char *)fname, "w");
      if (fd == NULL)
***************
*** 7936,7946 ****
      /* <HEADER>: <fileID> <versionnr> */
                                  /* <fileID> */
!     if (fwrite(VIMSPELLMAGIC, VIMSPELLMAGICL, (size_t)1, fd) != 1)
!     {
!     EMSG(_(e_write));
!     retval = FAIL;
!     }
      putc(VIMSPELLVERSION, fd);                    /* <versionnr> */
      /*
--- 7938,7944 ----
      /* <HEADER>: <fileID> <versionnr> */
                                  /* <fileID> */
!     fwv &= fwrite(VIMSPELLMAGIC, VIMSPELLMAGICL, (size_t)1, fd);
      putc(VIMSPELLVERSION, fd);                    /* <versionnr> */
      /*
***************
*** 7955,7961 ****
      i = (int)STRLEN(spin->si_info);
      put_bytes(fd, (long_u)i, 4);            /* <sectionlen> */
!     fwrite(spin->si_info, (size_t)i, (size_t)1, fd); /* <infotext> */
      }
      /* SN_REGION: <regionname> ...
--- 7953,7959 ----
      i = (int)STRLEN(spin->si_info);
      put_bytes(fd, (long_u)i, 4);            /* <sectionlen> */
!     fwv &= fwrite(spin->si_info, (size_t)i, (size_t)1, fd); /* <infotext> */
      }
      /* SN_REGION: <regionname> ...
***************
*** 7966,7972 ****
      putc(SNF_REQUIRED, fd);                /* <sectionflags> */
      l = spin->si_region_count * 2;
      put_bytes(fd, (long_u)l, 4);            /* <sectionlen> */
!     fwrite(spin->si_region_name, (size_t)l, (size_t)1, fd);
                              /* <regionname> ... */
      regionmask = (1 << spin->si_region_count) - 1;
      }
--- 7964,7970 ----
      putc(SNF_REQUIRED, fd);                /* <sectionflags> */
      l = spin->si_region_count * 2;
      put_bytes(fd, (long_u)l, 4);            /* <sectionlen> */
!     fwv &= fwrite(spin->si_region_name, (size_t)l, (size_t)1, fd);
                              /* <regionname> ... */
      regionmask = (1 << spin->si_region_count) - 1;
      }
***************
*** 8016,8022 ****
      }
      put_bytes(fd, (long_u)l, 2);            /* <folcharslen> */
!     fwrite(folchars, (size_t)l, (size_t)1, fd);    /* <folchars> */
      }
      /* SN_MIDWORD: <midword> */
--- 8014,8020 ----
      }
      put_bytes(fd, (long_u)l, 2);            /* <folcharslen> */
!     fwv &= fwrite(folchars, (size_t)l, (size_t)1, fd); /* <folchars> */
      }
      /* SN_MIDWORD: <midword> */
***************
*** 8027,8033 ****
      i = (int)STRLEN(spin->si_midword);
      put_bytes(fd, (long_u)i, 4);            /* <sectionlen> */
!     fwrite(spin->si_midword, (size_t)i, (size_t)1, fd); /* <midword> */
      }
      /* SN_PREFCOND: <prefcondcnt> <prefcond> ... */
--- 8025,8032 ----
      i = (int)STRLEN(spin->si_midword);
      put_bytes(fd, (long_u)i, 4);            /* <sectionlen> */
!     fwv &= fwrite(spin->si_midword, (size_t)i, (size_t)1, fd);
!                             /* <midword> */
      }
      /* SN_PREFCOND: <prefcondcnt> <prefcond> ... */
***************
*** 8113,8119 ****
          p = rr == 1 ? ftp->ft_from : ftp->ft_to;
          l = (int)STRLEN(p);
          putc(l, fd);
!         fwrite(p, l, (size_t)1, fd);
          }
      }
--- 8112,8118 ----
          p = rr == 1 ? ftp->ft_from : ftp->ft_to;
          l = (int)STRLEN(p);
          putc(l, fd);
!         fwv &= fwrite(p, l, (size_t)1, fd);
          }
      }
***************
*** 8131,8141 ****
                              /* <sectionlen> */
      put_bytes(fd, (long_u)l, 2);            /* <sofofromlen> */
!     fwrite(spin->si_sofofr, l, (size_t)1, fd);    /* <sofofrom> */
      l = (int)STRLEN(spin->si_sofoto);
      put_bytes(fd, (long_u)l, 2);            /* <sofotolen> */
!     fwrite(spin->si_sofoto, l, (size_t)1, fd);    /* <sofoto> */
      }
      /* SN_WORDS: <word> ...
--- 8130,8140 ----
                              /* <sectionlen> */
      put_bytes(fd, (long_u)l, 2);            /* <sofofromlen> */
!     fwv &= fwrite(spin->si_sofofr, l, (size_t)1, fd); /* <sofofrom> */
      l = (int)STRLEN(spin->si_sofoto);
      put_bytes(fd, (long_u)l, 2);            /* <sofotolen> */
!     fwv &= fwrite(spin->si_sofoto, l, (size_t)1, fd); /* <sofoto> */
      }
      /* SN_WORDS: <word> ...
***************
*** 8160,8166 ****
              l = (int)STRLEN(hi->hi_key) + 1;
              len += l;
              if (round == 2)            /* <word> */
!             fwrite(hi->hi_key, (size_t)l, (size_t)1, fd);
              --todo;
          }
          if (round == 1)
--- 8159,8165 ----
              l = (int)STRLEN(hi->hi_key) + 1;
              len += l;
              if (round == 2)            /* <word> */
!             fwv &= fwrite(hi->hi_key, (size_t)l, (size_t)1, fd);
              --todo;
          }
          if (round == 1)
***************
*** 8176,8182 ****
      putc(0, fd);                    /* <sectionflags> */
      l = spin->si_map.ga_len;
      put_bytes(fd, (long_u)l, 4);            /* <sectionlen> */
!     fwrite(spin->si_map.ga_data, (size_t)l, (size_t)1, fd);
                              /* <mapstr> */
      }
--- 8175,8181 ----
      putc(0, fd);                    /* <sectionflags> */
      l = spin->si_map.ga_len;
      put_bytes(fd, (long_u)l, 4);            /* <sectionlen> */
!     fwv &= fwrite(spin->si_map.ga_data, (size_t)l, (size_t)1, fd);
                              /* <mapstr> */
      }
***************
*** 8232,8241 ****
      {
          p = ((char_u **)(spin->si_comppat.ga_data))[i];
          putc((int)STRLEN(p), fd);            /* <comppatlen> */
!         fwrite(p, (size_t)STRLEN(p), (size_t)1, fd);/* <comppattext> */
      }
                              /* <compflags> */
!     fwrite(spin->si_compflags, (size_t)STRLEN(spin->si_compflags),
                                     (size_t)1, fd);
      }
--- 8231,8241 ----
      {
          p = ((char_u **)(spin->si_comppat.ga_data))[i];
          putc((int)STRLEN(p), fd);            /* <comppatlen> */
!         fwv &= fwrite(p, (size_t)STRLEN(p), (size_t)1, fd);
!                             /* <comppattext> */
      }
                              /* <compflags> */
!     fwv &= fwrite(spin->si_compflags, (size_t)STRLEN(spin->si_compflags),
                                     (size_t)1, fd);
      }
***************
*** 8259,8265 ****
      l = (int)STRLEN(spin->si_syllable);
      put_bytes(fd, (long_u)l, 4);            /* <sectionlen> */
!     fwrite(spin->si_syllable, (size_t)l, (size_t)1, fd); /* <syllable> */
      }
      /* end of <SECTIONS> */
--- 8259,8266 ----
      l = (int)STRLEN(spin->si_syllable);
      put_bytes(fd, (long_u)l, 4);            /* <sectionlen> */
!     fwv &= fwrite(spin->si_syllable, (size_t)l, (size_t)1, fd);
!                             /* <syllable> */
      }
      /* end of <SECTIONS> */
***************
*** 8295,8307 ****
      (void)put_node(fd, tree, 0, regionmask, round == 3);
      }
!     /* Write another byte to check for errors. */
      if (putc(0, fd) == EOF)
      retval = FAIL;
      if (fclose(fd) == EOF)
      retval = FAIL;
      return retval;
  }
--- 8296,8313 ----
      (void)put_node(fd, tree, 0, regionmask, round == 3);
      }
!     /* Write another byte to check for errors (file system full). */
      if (putc(0, fd) == EOF)
      retval = FAIL;
      if (fclose(fd) == EOF)
      retval = FAIL;
+     if (fwv != 1)
+     retval = FAIL;
+     if (retval == FAIL)
+     EMSG(_(e_write));
+
      return retval;
  }
***************
*** 9890,9895 ****
--- 9896,9902 ----
      char_u    *p;
      int        len;
      int        totlen;
+     int        x = 1;  /* collect return value of fwrite() */
      if (fd != NULL)
      put_bytes(fd, (long_u)gap->ga_len, 2);        /* <prefcondcnt> */
***************
*** 9906,9912 ****
          if (fd != NULL)
          {
          fputc(len, fd);
!         fwrite(p, (size_t)len, (size_t)1, fd);
          }
          totlen += len;
      }
--- 9913,9919 ----
          if (fd != NULL)
          {
          fputc(len, fd);
!         x &= fwrite(p, (size_t)len, (size_t)1, fd);
          }
          totlen += len;
      }
*** ../vim-7.2.049/src/version.c    Thu Nov 20 17:09:09 2008
--- src/version.c    Fri Nov 28 10:06:13 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     50,
  /**/
--
You got to work at a mill?  Lucky!  I got sent back to work in the
acid-mines for my daily crust of stale bread... which not even the
birds would eat.
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.051
New file
@@ -0,0 +1,411 @@
To: vim-dev@vim.org
Subject: Patch 7.2.051
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.051
Problem:    Can't avoid 'wildignore' and 'suffixes' for glob() and globpath().
Solution:   Add an extra argument to these functions. (Ingo Karkat)
Files:        src/eval.c, src/ex_getln.c, src/proto/ex_getln.pro,
        runtime/doc/eval.txt, runtime/doc/options.txt
*** ../vim-7.2.050/src/eval.c    Thu Nov 20 16:11:03 2008
--- src/eval.c    Thu Nov 27 22:15:40 2008
***************
*** 7564,7571 ****
      {"getwinposx",    0, 0, f_getwinposx},
      {"getwinposy",    0, 0, f_getwinposy},
      {"getwinvar",    2, 2, f_getwinvar},
!     {"glob",        1, 1, f_glob},
!     {"globpath",    2, 2, f_globpath},
      {"has",        1, 1, f_has},
      {"has_key",        2, 2, f_has_key},
      {"haslocaldir",    0, 0, f_haslocaldir},
--- 7564,7571 ----
      {"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},
      {"haslocaldir",    0, 0, f_haslocaldir},
***************
*** 9557,9563 ****
      else
      {
      /* When the optional second argument is non-zero, don't remove matches
!      * for 'suffixes' and 'wildignore' */
      if (argvars[1].v_type != VAR_UNKNOWN
                      && get_tv_number_chk(&argvars[1], &error))
          flags |= WILD_KEEP_ALL;
--- 9557,9563 ----
      else
      {
      /* 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))
          flags |= WILD_KEEP_ALL;
***************
*** 11323,11335 ****
      typval_T    *argvars;
      typval_T    *rettv;
  {
      expand_T    xpc;
!     ExpandInit(&xpc);
!     xpc.xp_context = EXPAND_FILES;
!     rettv->v_type = VAR_STRING;
!     rettv->vval.v_string = ExpandOne(&xpc, get_tv_string(&argvars[0]),
!                      NULL, WILD_USE_NL|WILD_SILENT, WILD_ALL);
  }
  /*
--- 11323,11347 ----
      typval_T    *argvars;
      typval_T    *rettv;
  {
+     int        flags = WILD_SILENT|WILD_USE_NL;
      expand_T    xpc;
+     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))
!     flags |= WILD_KEEP_ALL;
!     rettv->v_type = VAR_STRING;
!     if (!error)
!     {
!     ExpandInit(&xpc);
!     xpc.xp_context = EXPAND_FILES;
!     rettv->vval.v_string = ExpandOne(&xpc, get_tv_string(&argvars[0]),
!                                NULL, flags, WILD_ALL);
!     }
!     else
!     rettv->vval.v_string = NULL;
  }
  /*
***************
*** 11340,11353 ****
      typval_T    *argvars;
      typval_T    *rettv;
  {
      char_u    buf1[NUMBUFLEN];
      char_u    *file = get_tv_string_buf_chk(&argvars[1], buf1);
      rettv->v_type = VAR_STRING;
!     if (file == NULL)
      rettv->vval.v_string = NULL;
      else
!     rettv->vval.v_string = globpath(get_tv_string(&argvars[0]), file);
  }
  /*
--- 11352,11373 ----
      typval_T    *argvars;
      typval_T    *rettv;
  {
+     int        flags = 0;
      char_u    buf1[NUMBUFLEN];
      char_u    *file = get_tv_string_buf_chk(&argvars[1], buf1);
+     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[2].v_type != VAR_UNKNOWN
+                 && get_tv_number_chk(&argvars[2], &error))
+     flags |= WILD_KEEP_ALL;
      rettv->v_type = VAR_STRING;
!     if (file == NULL || error)
      rettv->vval.v_string = NULL;
      else
!     rettv->vval.v_string = globpath(get_tv_string(&argvars[0]), file,
!                                        flags);
  }
  /*
*** ../vim-7.2.050/src/ex_getln.c    Sat Nov 15 14:10:23 2008
--- src/ex_getln.c    Thu Nov 20 18:37:20 2008
***************
*** 2524,2530 ****
          && ccline.xpc->xp_context != EXPAND_NOTHING
          && ccline.xpc->xp_context != EXPAND_UNSUCCESSFUL)
      {
!     int i = ccline.xpc->xp_pattern - p;
      /* If xp_pattern points inside the old cmdbuff it needs to be adjusted
       * to point into the newly allocated memory. */
--- 2524,2530 ----
          && ccline.xpc->xp_context != EXPAND_NOTHING
          && ccline.xpc->xp_context != EXPAND_UNSUCCESSFUL)
      {
!     int i = (int)(ccline.xpc->xp_pattern - p);
      /* If xp_pattern points inside the old cmdbuff it needs to be adjusted
       * to point into the newly allocated memory. */
***************
*** 4897,4903 ****
      if (s == NULL)
      return FAIL;
      sprintf((char *)s, "%s/%s*.vim", dirname, pat);
!     all = globpath(p_rtp, s);
      vim_free(s);
      if (all == NULL)
      return FAIL;
--- 4897,4903 ----
      if (s == NULL)
      return FAIL;
      sprintf((char *)s, "%s/%s*.vim", dirname, pat);
!     all = globpath(p_rtp, s, 0);
      vim_free(s);
      if (all == NULL)
      return FAIL;
***************
*** 4938,4946 ****
   * newlines.  Returns NULL for an error or no matches.
   */
      char_u *
! globpath(path, file)
      char_u    *path;
      char_u    *file;
  {
      expand_T    xpc;
      char_u    *buf;
--- 4938,4947 ----
   * newlines.  Returns NULL for an error or no matches.
   */
      char_u *
! globpath(path, file, expand_options)
      char_u    *path;
      char_u    *file;
+     int        expand_options;
  {
      expand_T    xpc;
      char_u    *buf;
***************
*** 4969,4978 ****
      {
          add_pathsep(buf);
          STRCAT(buf, file);
!         if (ExpandFromContext(&xpc, buf, &num_p, &p, WILD_SILENT) != FAIL
!                                  && num_p > 0)
          {
!         ExpandEscape(&xpc, buf, num_p, p, WILD_SILENT);
          for (len = 0, i = 0; i < num_p; ++i)
              len += (int)STRLEN(p[i]) + 1;
--- 4970,4979 ----
      {
          add_pathsep(buf);
          STRCAT(buf, file);
!         if (ExpandFromContext(&xpc, buf, &num_p, &p,
!                  WILD_SILENT|expand_options) != FAIL && num_p > 0)
          {
!         ExpandEscape(&xpc, buf, num_p, p, WILD_SILENT|expand_options);
          for (len = 0, i = 0; i < num_p; ++i)
              len += (int)STRLEN(p[i]) + 1;
*** ../vim-7.2.050/src/proto/ex_getln.pro    Wed May 28 16:49:01 2008
--- src/proto/ex_getln.pro    Thu Nov 20 18:27:57 2008
***************
*** 31,37 ****
  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));
  void init_history __ARGS((void));
  int get_histtype __ARGS((char_u *name));
  void add_to_history __ARGS((int histype, char_u *new_entry, int in_map, int sep));
--- 31,37 ----
  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));
  void add_to_history __ARGS((int histype, char_u *new_entry, int in_map, int sep));
*** ../vim-7.2.050/runtime/doc/eval.txt    Sun Nov  9 13:43:25 2008
--- runtime/doc/eval.txt    Thu Nov 27 22:17:13 2008
***************
*** 1,4 ****
! *eval.txt*    For Vim version 7.2.  Last change: 2008 Nov 02
            VIM REFERENCE MANUAL      by Bram Moolenaar
--- 1,4 ----
! *eval.txt*    For Vim version 7.2.  Last change: 2008 Nov 27
            VIM REFERENCE MANUAL      by Bram Moolenaar
***************
*** 1706,1712 ****
  exists( {expr})            Number    TRUE if {expr} exists
  extend({expr1}, {expr2} [, {expr3}])
                  List/Dict insert items of {expr2} into {expr1}
! expand( {expr})            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
--- 1709,1715 ----
  exists( {expr})            Number    TRUE if {expr} exists
  extend({expr1}, {expr2} [, {expr3}])
                  List/Dict insert items of {expr2} into {expr1}
! 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
***************
*** 1758,1765 ****
  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})            String    expand file wildcards in {expr}
! globpath( {path}, {expr})    String    do glob({expr}) for all dirs in {path}
  has( {feature})            Number    TRUE if feature {feature} supported
  has_key( {dict}, {key})        Number    TRUE if {dict} has entry {key}
  haslocaldir()            Number    TRUE if current window executed |:lcd|
--- 1761,1769 ----
  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
  has_key( {dict}, {key})        Number    TRUE if {dict} has entry {key}
  haslocaldir()            Number    TRUE if current window executed |:lcd|
***************
*** 3286,3299 ****
              :let list_is_on = getwinvar(2, '&list')
              :echo "myvar = " . getwinvar(1, 'myvar')
  <
!                             *glob()*
! glob({expr})    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.
!         The 'wildignore' option applies: Names matching one of the
!         patterns in 'wildignore' will be skipped.
          If the expansion fails, the result is an empty string.
          A name for a non-existing file is not included.
--- 3290,3305 ----
              :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.
***************
*** 3307,3326 ****
          See |expand()| for expanding special Vim variables.  See
          |system()| for getting the raw output of an external command.
! globpath({path}, {expr})                *globpath()*
          Perform glob() on all directories in {path} and concatenate
          the results.  Example: >
              :echo globpath(&rtp, "syntax/c.vim")
  <        {path} is a comma-separated list of directory names.  Each
          directory name is prepended to {expr} and expanded like with
!         glob().  A path separator is inserted when needed.
          To add a comma inside a directory name escape it with a
          backslash.  Note that on MS-Windows a directory may have a
          trailing backslash, remove it if you put a comma after it.
          If the expansion fails for one of the directories, there is no
          error message.
!         The 'wildignore' option applies: Names matching one of the
!         patterns in 'wildignore' will be skipped.
          The "**" item can be used to search in a directory tree.
          For example, to find all "README.txt" files in the directories
--- 3313,3334 ----
          See |expand()| for expanding special Vim variables.  See
          |system()| for getting the raw output of an external command.
! globpath({path}, {expr} [, {flag}])            *globpath()*
          Perform glob() on all directories in {path} and concatenate
          the results.  Example: >
              :echo globpath(&rtp, "syntax/c.vim")
  <        {path} is a comma-separated list of directory names.  Each
          directory name is prepended to {expr} and expanded like with
!         |glob()|.  A path separator is inserted when needed.
          To add a comma inside a directory name escape it with a
          backslash.  Note that on MS-Windows a directory may have a
          trailing backslash, remove it if you put a comma after it.
          If the expansion fails for one of the directories, there is no
          error message.
!         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.
          The "**" item can be used to search in a directory tree.
          For example, to find all "README.txt" files in the directories
*** ../vim-7.2.050/runtime/doc/options.txt    Sat Aug  9 19:36:49 2008
--- runtime/doc/options.txt    Tue Nov 25 23:43:55 2008
***************
*** 1,4 ****
! *options.txt*    For Vim version 7.2.  Last change: 2008 Aug 06
            VIM REFERENCE MANUAL      by Bram Moolenaar
--- 1,4 ----
! *options.txt*    For Vim version 7.2.  Last change: 2008 Nov 25
            VIM REFERENCE MANUAL      by Bram Moolenaar
***************
*** 7472,7478 ****
              {not available when compiled without the |+wildignore|
              feature}
      A list of file patterns.  A file that matches with one of these
!     patterns is ignored when completing file or directory names.
      The pattern is used like with |:autocmd|, see |autocmd-patterns|.
      Also see 'suffixes'.
      Example: >
--- 7481,7489 ----
              {not available when compiled without the |+wildignore|
              feature}
      A list of file patterns.  A file that matches with one of these
!     patterns is ignored when completing file or directory names, and
!     influences the result of |expand()|, |glob()| and |globpath()| unless
!     a flag is passed to disable this.
      The pattern is used like with |:autocmd|, see |autocmd-patterns|.
      Also see 'suffixes'.
      Example: >
*** ../vim-7.2.050/src/version.c    Fri Nov 28 10:08:05 2008
--- src/version.c    Fri Nov 28 10:55:44 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     51,
  /**/
--
Not too long ago, unzipping in public was illegal...
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.052
New file
@@ -0,0 +1,83 @@
To: vim-dev@vim.org
Subject: Patch 7.2.052
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.052
Problem:    synIDattr() doesn't support "sp" for special color.
Solution:   Recognize "sp" and "sp#".  (Matt Wozniski)
Files:        runtime/doc/eval.txt, src/eval.c
*** ../vim-7.2.051/runtime/doc/eval.txt    Fri Nov 28 10:59:57 2008
--- runtime/doc/eval.txt    Thu Nov 27 22:17:13 2008
***************
*** 5348,5357 ****
          "fg"        foreground color (GUI: color name used to set
                  the color, cterm: color number as a string,
                  term: empty string)
!         "bg"        background color (like "fg")
          "fg#"        like "fg", but for the GUI and the GUI is
                  running the name in "#RRGGBB" form
          "bg#"        like "fg#" for "bg"
          "bold"        "1" if bold
          "italic"    "1" if italic
          "reverse"    "1" if reverse
--- 5359,5370 ----
          "fg"        foreground color (GUI: color name used to set
                  the color, cterm: color number as a string,
                  term: empty string)
!         "bg"        background color (as with "fg")
!         "sp"        special color (as with "fg") |highlight-guisp|
          "fg#"        like "fg", but for the GUI and the GUI is
                  running the name in "#RRGGBB" form
          "bg#"        like "fg#" for "bg"
+         "sp#"        like "fg#" for "sp"
          "bold"        "1" if bold
          "italic"    "1" if italic
          "reverse"    "1" if reverse
*** ../vim-7.2.051/src/eval.c    Fri Nov 28 10:59:57 2008
--- src/eval.c    Thu Nov 27 22:15:40 2008
***************
*** 16648,16655 ****
          p = highlight_has_attr(id, HL_INVERSE, modec);
          break;
!     case 's':                    /* standout */
!         p = highlight_has_attr(id, HL_STANDOUT, modec);
          break;
      case 'u':
--- 16648,16658 ----
          p = highlight_has_attr(id, HL_INVERSE, modec);
          break;
!     case 's':
!         if (TOLOWER_ASC(what[1]) == 'p')    /* sp[#] */
!             p = highlight_color(id, what, modec);
!         else                    /* standout */
!             p = highlight_has_attr(id, HL_STANDOUT, modec);
          break;
      case 'u':
*** ../vim-7.2.051/src/version.c    Fri Nov 28 10:59:57 2008
--- src/version.c    Fri Nov 28 11:13:45 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     52,
  /**/
--
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/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.053
New file
@@ -0,0 +1,58 @@
To: vim-dev@vim.org
Subject: Patch 7.2.053
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.053
Problem:    Crash when using WorkShop command ":ws foo". (Dominique Pelle)
Solution:   Avoid using a NULL pointer.
Files:        src/workshop.c
*** ../vim-7.2.052/src/workshop.c    Tue Jun 24 23:34:50 2008
--- src/workshop.c    Thu Nov 27 22:31:27 2008
***************
*** 1121,1128 ****
                        ? (char *)curbuf->b_sfname : "<None>");
  #endif
!     strcpy(ffname, (char *) curbuf->b_ffname);
!     *filename = ffname;        /* copy so nobody can change b_ffname */
      *curLine = curwin->w_cursor.lnum;
      *curCol = curwin->w_cursor.col;
--- 1121,1132 ----
                        ? (char *)curbuf->b_sfname : "<None>");
  #endif
!     if (curbuf->b_ffname == NULL)
!     ffname[0] = NUL;
!     else
!     /* copy so nobody can change b_ffname */
!     strcpy(ffname, (char *) curbuf->b_ffname);
!     *filename = ffname;
      *curLine = curwin->w_cursor.lnum;
      *curCol = curwin->w_cursor.col;
*** ../vim-7.2.052/src/version.c    Fri Nov 28 11:15:10 2008
--- src/version.c    Fri Nov 28 11:44:23 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     53,
  /**/
--
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/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.054
New file
@@ -0,0 +1,68 @@
To: vim-dev@vim.org
Subject: Patch 7.2.054
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.054
Problem:    Compilation warnings for format in getchar.c.
Solution:   Use fputs() instead of fprintf().  (Dominique Pelle)
Files:        src/getchar.c
*** ../vim-7.2.053/src/getchar.c    Tue Jul 22 18:58:23 2008
--- src/getchar.c    Thu Nov 27 22:38:24 2008
***************
*** 4702,4708 ****
              return FAIL;
              if (mp->m_noremap != REMAP_YES && fprintf(fd, "nore") < 0)
              return FAIL;
!             if (fprintf(fd, cmd) < 0)
              return FAIL;
              if (buf != NULL && fputs(" <buffer>", fd) < 0)
              return FAIL;
--- 4702,4708 ----
              return FAIL;
              if (mp->m_noremap != REMAP_YES && fprintf(fd, "nore") < 0)
              return FAIL;
!             if (fputs(cmd, fd) < 0)
              return FAIL;
              if (buf != NULL && fputs(" <buffer>", fd) < 0)
              return FAIL;
***************
*** 4801,4807 ****
          }
          if (IS_SPECIAL(c) || modifiers)    /* special key */
          {
!         if (fprintf(fd, (char *)get_special_key_name(c, modifiers)) < 0)
              return FAIL;
          continue;
          }
--- 4801,4807 ----
          }
          if (IS_SPECIAL(c) || modifiers)    /* special key */
          {
!         if (fputs((char *)get_special_key_name(c, modifiers), fd) < 0)
              return FAIL;
          continue;
          }
*** ../vim-7.2.053/src/version.c    Fri Nov 28 11:47:14 2008
--- src/version.c    Fri Nov 28 12:02:48 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     54,
  /**/
--
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/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.055
New file
@@ -0,0 +1,1271 @@
To: vim-dev@vim.org
Subject: Patch 7.2.055
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.055
Problem:    Various compiler warnings with strict checking.
Solution:   Avoid the warnings by using return values and renaming.
Files:        src/diff.c, src/eval.c, src/ex_cmds.c, src/ex_docmd.c,
        src/fileio.c, src/fold.c, src/globals.h, src/gui.c,
        src/gui_at_sb.c, src/gui_gtk_x11.c, src/gui_xmdlg.c,
        src/gui_xmebw.c, src/main.c, src/mbyte.c, src/message.c,
        src/netbeans.c, src/option.c, src/os_unix.c, src/spell.c,
        src/ui.c, src/window.c
*** ../vim-7.2.054/src/diff.c    Fri Jan 18 17:39:32 2008
--- src/diff.c    Fri Nov 28 17:23:35 2008
***************
*** 661,666 ****
--- 665,671 ----
      char_u    *tmp_diff;
      FILE    *fd;
      int        ok;
+     int        io_error = FALSE;
      /* Delete all diffblocks. */
      diff_clear(curtab);
***************
*** 697,714 ****
      {
      ok = FALSE;
      fd = mch_fopen((char *)tmp_orig, "w");
!     if (fd != NULL)
      {
!         fwrite("line1\n", (size_t)6, (size_t)1, fd);
          fclose(fd);
          fd = mch_fopen((char *)tmp_new, "w");
!         if (fd != NULL)
          {
!         fwrite("line2\n", (size_t)6, (size_t)1, fd);
          fclose(fd);
          diff_file(tmp_orig, tmp_new, tmp_diff);
          fd = mch_fopen((char *)tmp_diff, "r");
!         if (fd != NULL)
          {
              char_u    linebuf[LBUFLEN];
--- 702,727 ----
      {
      ok = FALSE;
      fd = mch_fopen((char *)tmp_orig, "w");
!     if (fd == NULL)
!         io_error = TRUE;
!     else
      {
!         if (fwrite("line1\n", (size_t)6, (size_t)1, fd) != 1)
!         io_error = TRUE;
          fclose(fd);
          fd = mch_fopen((char *)tmp_new, "w");
!         if (fd == NULL)
!         io_error = TRUE;
!         else
          {
!         if (fwrite("line2\n", (size_t)6, (size_t)1, fd) != 1)
!             io_error = TRUE;
          fclose(fd);
          diff_file(tmp_orig, tmp_new, tmp_diff);
          fd = mch_fopen((char *)tmp_diff, "r");
!         if (fd == NULL)
!             io_error = TRUE;
!         else
          {
              char_u    linebuf[LBUFLEN];
***************
*** 761,766 ****
--- 774,781 ----
      }
      if (!ok)
      {
+     if (io_error)
+         EMSG(_("E810: Cannot read or write temp files"));
      EMSG(_("E97: Cannot create diffs"));
      diff_a_works = MAYBE;
  #if defined(MSWIN) || defined(MSDOS)
***************
*** 925,934 ****
      {
  # ifdef TEMPDIRNAMES
      if (vim_tempdir != NULL)
!         mch_chdir((char *)vim_tempdir);
      else
  # endif
!         mch_chdir("/tmp");
      shorten_fnames(TRUE);
      }
  #endif
--- 940,949 ----
      {
  # ifdef TEMPDIRNAMES
      if (vim_tempdir != NULL)
!         ignored = mch_chdir((char *)vim_tempdir);
      else
  # endif
!         ignored = mch_chdir("/tmp");
      shorten_fnames(TRUE);
      }
  #endif
*** ../vim-7.2.054/src/eval.c    Fri Nov 28 11:15:10 2008
--- src/eval.c    Fri Nov 28 12:23:13 2008
***************
*** 10641,10647 ****
  # ifdef FEAT_WINDOWS
          win_T    *wp;
  # endif
!         int        n = 1;
          if (row >= 0 && col >= 0)
          {
--- 10641,10647 ----
  # ifdef FEAT_WINDOWS
          win_T    *wp;
  # endif
!         int        winnr = 1;
          if (row >= 0 && col >= 0)
          {
***************
*** 10651,10659 ****
          (void)mouse_comp_pos(win, &row, &col, &lnum);
  # ifdef FEAT_WINDOWS
          for (wp = firstwin; wp != win; wp = wp->w_next)
!             ++n;
  # endif
!         vimvars[VV_MOUSE_WIN].vv_nr = n;
          vimvars[VV_MOUSE_LNUM].vv_nr = lnum;
          vimvars[VV_MOUSE_COL].vv_nr = col + 1;
          }
--- 10651,10659 ----
          (void)mouse_comp_pos(win, &row, &col, &lnum);
  # ifdef FEAT_WINDOWS
          for (wp = firstwin; wp != win; wp = wp->w_next)
!             ++winnr;
  # endif
!         vimvars[VV_MOUSE_WIN].vv_nr = winnr;
          vimvars[VV_MOUSE_LNUM].vv_nr = lnum;
          vimvars[VV_MOUSE_COL].vv_nr = col + 1;
          }
*** ../vim-7.2.054/src/ex_cmds.c    Sat Nov 15 14:10:23 2008
--- src/ex_cmds.c    Fri Nov 28 17:24:08 2008
***************
*** 1941,1947 ****
           * root.
           */
          if (fp_out != NULL)
!         (void)fchown(fileno(fp_out), st_old.st_uid, st_old.st_gid);
  #endif
      }
      }
--- 1941,1947 ----
           * root.
           */
          if (fp_out != NULL)
!         ignored = fchown(fileno(fp_out), st_old.st_uid, st_old.st_gid);
  #endif
      }
      }
*** ../vim-7.2.054/src/ex_docmd.c    Sat Nov 15 14:10:23 2008
--- src/ex_docmd.c    Fri Nov 28 17:26:13 2008
***************
*** 8753,8760 ****
          else if (*dirnow != NUL
              && (ssop_flags & SSOP_CURDIR) && globaldir != NULL)
          {
!             (void)mch_chdir((char *)globaldir);
!             shorten_fnames(TRUE);
          }
          failed |= (makeopens(fd, dirnow) == FAIL);
--- 8753,8760 ----
          else if (*dirnow != NUL
              && (ssop_flags & SSOP_CURDIR) && globaldir != NULL)
          {
!             if (mch_chdir((char *)globaldir) == OK)
!             shorten_fnames(TRUE);
          }
          failed |= (makeopens(fd, dirnow) == FAIL);
*** ../vim-7.2.054/src/fileio.c    Wed Nov 12 16:04:43 2008
--- src/fileio.c    Fri Nov 28 17:35:54 2008
***************
*** 2214,2220 ****
      {
      /* Use stderr for stdin, makes shell commands work. */
      close(0);
!     dup(2);
      }
  #endif
--- 2214,2220 ----
      {
      /* Use stderr for stdin, makes shell commands work. */
      close(0);
!     ignored = dup(2);
      }
  #endif
***************
*** 3449,3455 ****
          {
  # ifdef UNIX
  #  ifdef HAVE_FCHOWN
!             fchown(fd, st_old.st_uid, st_old.st_gid);
  #  endif
              if (mch_stat((char *)IObuff, &st) < 0
                  || st.st_uid != st_old.st_uid
--- 3449,3455 ----
          {
  # ifdef UNIX
  #  ifdef HAVE_FCHOWN
!             ignored = fchown(fd, st_old.st_uid, st_old.st_gid);
  #  endif
              if (mch_stat((char *)IObuff, &st) < 0
                  || st.st_uid != st_old.st_uid
***************
*** 4365,4371 ****
          || st.st_uid != st_old.st_uid
          || st.st_gid != st_old.st_gid)
      {
!         fchown(fd, st_old.st_uid, st_old.st_gid);
          if (perm >= 0)    /* set permission again, may have changed */
          (void)mch_setperm(wfname, perm);
      }
--- 4365,4371 ----
          || st.st_uid != st_old.st_uid
          || st.st_gid != st_old.st_gid)
      {
!         ignored = fchown(fd, st_old.st_uid, st_old.st_gid);
          if (perm >= 0)    /* set permission again, may have changed */
          (void)mch_setperm(wfname, perm);
      }
***************
*** 6030,6038 ****
      {
          tbuf[FGETS_SIZE - 2] = NUL;
  #ifdef USE_CR
!         fgets_cr((char *)tbuf, FGETS_SIZE, fp);
  #else
!         fgets((char *)tbuf, FGETS_SIZE, fp);
  #endif
      } while (tbuf[FGETS_SIZE - 2] != NUL && tbuf[FGETS_SIZE - 2] != '\n');
      }
--- 6030,6038 ----
      {
          tbuf[FGETS_SIZE - 2] = NUL;
  #ifdef USE_CR
!         ignoredp = fgets_cr((char *)tbuf, FGETS_SIZE, fp);
  #else
!         ignoredp = fgets((char *)tbuf, FGETS_SIZE, fp);
  #endif
      } while (tbuf[FGETS_SIZE - 2] != NUL && tbuf[FGETS_SIZE - 2] != '\n');
      }
*** ../vim-7.2.054/src/fold.c    Wed Aug  6 18:59:40 2008
--- src/fold.c    Fri Nov 28 12:24:16 2008
***************
*** 48,54 ****
  static int foldFind __ARGS((garray_T *gap, linenr_T lnum, fold_T **fpp));
  static int foldLevelWin __ARGS((win_T *wp, linenr_T lnum));
  static void checkupdate __ARGS((win_T *wp));
! static void setFoldRepeat __ARGS((linenr_T lnum, long count, int open));
  static linenr_T setManualFold __ARGS((linenr_T lnum, int opening, int recurse, int *donep));
  static linenr_T setManualFoldWin __ARGS((win_T *wp, linenr_T lnum, int opening, int recurse, int *donep));
  static void foldOpenNested __ARGS((fold_T *fpr));
--- 48,54 ----
  static int foldFind __ARGS((garray_T *gap, linenr_T lnum, fold_T **fpp));
  static int foldLevelWin __ARGS((win_T *wp, linenr_T lnum));
  static void checkupdate __ARGS((win_T *wp));
! static void setFoldRepeat __ARGS((linenr_T lnum, long count, int do_open));
  static linenr_T setManualFold __ARGS((linenr_T lnum, int opening, int recurse, int *donep));
  static linenr_T setManualFoldWin __ARGS((win_T *wp, linenr_T lnum, int opening, int recurse, int *donep));
  static void foldOpenNested __ARGS((fold_T *fpr));
***************
*** 1241,1250 ****
   * Repeat "count" times.
   */
      static void
! setFoldRepeat(lnum, count, open)
      linenr_T    lnum;
      long    count;
!     int        open;
  {
      int        done;
      long    n;
--- 1241,1250 ----
   * Repeat "count" times.
   */
      static void
! setFoldRepeat(lnum, count, do_open)
      linenr_T    lnum;
      long    count;
!     int        do_open;
  {
      int        done;
      long    n;
***************
*** 1252,1258 ****
      for (n = 0; n < count; ++n)
      {
      done = DONE_NOTHING;
!     (void)setManualFold(lnum, open, FALSE, &done);
      if (!(done & DONE_ACTION))
      {
          /* Only give an error message when no fold could be opened. */
--- 1252,1258 ----
      for (n = 0; n < count; ++n)
      {
      done = DONE_NOTHING;
!     (void)setManualFold(lnum, do_open, FALSE, &done);
      if (!(done & DONE_ACTION))
      {
          /* Only give an error message when no fold could be opened. */
*** ../vim-7.2.054/src/globals.h    Thu Sep 18 21:29:07 2008
--- src/globals.h    Fri Nov 28 17:35:50 2008
***************
*** 1549,1554 ****
--- 1549,1562 ----
  EXTERN time_t starttime;
  /*
+  * Some compilers warn for not using a return value, but in some situations we
+  * can't do anything useful with the value.  Assign to this variable to avoid
+  * the warning.
+  */
+ EXTERN int ignored;
+ EXTERN char *ignoredp;
+
+ /*
   * Optional Farsi support.  Include it here, so EXTERN and INIT are defined.
   */
  #ifdef FEAT_FKMAP
*** ../vim-7.2.054/src/gui.c    Wed Aug  6 14:37:26 2008
--- src/gui.c    Fri Nov 28 18:48:31 2008
***************
*** 139,145 ****
          /* The read returns when the child closes the pipe (or when
           * the child dies for some reason). */
          close(pipefd[1]);
!         (void)read(pipefd[0], &dummy, (size_t)1);
          close(pipefd[0]);
          }
--- 139,145 ----
          /* 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]);
          }
*** ../vim-7.2.054/src/gui_at_sb.c    Sun Jun 13 21:37:13 2004
--- src/gui_at_sb.c    Fri Nov 28 12:19:19 2008
***************
*** 1078,1083 ****
--- 1078,1089 ----
      Cardinal    *num_params;    /* unused */
  {
      ScrollbarWidget sbw = (ScrollbarWidget)w;
+     /* Use a union to avoid a warning for the weird conversion from float to
+      * XtPointer.  Comes from Xaw/Scrollbar.c. */
+     union {
+     XtPointer xtp;
+     float xtf;
+     } xtpf;
      if (LookAhead(w, event))
      return;
***************
*** 1085,1091 ****
      /* thumbProc is not pretty, but is necessary for backwards
         compatibility on those architectures for which it work{s,ed};
         the intent is to pass a (truncated) float by value. */
!     XtCallCallbacks(w, XtNthumbProc, *(XtPointer*)&sbw->scrollbar.top);
      XtCallCallbacks(w, XtNjumpProc, (XtPointer)&sbw->scrollbar.top);
  }
--- 1091,1098 ----
      /* thumbProc is not pretty, but is necessary for backwards
         compatibility on those architectures for which it work{s,ed};
         the intent is to pass a (truncated) float by value. */
!     xtpf.xtf = sbw->scrollbar.top;
!     XtCallCallbacks(w, XtNthumbProc, xtpf.xtp);
      XtCallCallbacks(w, XtNjumpProc, (XtPointer)&sbw->scrollbar.top);
  }
*** ../vim-7.2.054/src/gui_gtk_x11.c    Tue Jul  8 12:46:08 2008
--- src/gui_gtk_x11.c    Fri Nov 28 21:06:38 2008
***************
*** 4070,4083 ****
      if (mask & (XValue | YValue))
      {
!         int w, h;
!         gui_mch_get_screen_dimensions(&w, &h);
!         h += p_ghr + get_menu_tool_height();
!         w += get_menu_tool_width();
          if (mask & XNegative)
!         x += w - pixel_width;
          if (mask & YNegative)
!         y += h - pixel_height;
  #ifdef HAVE_GTK2
          gtk_window_move(GTK_WINDOW(gui.mainwin), x, y);
  #else
--- 4070,4083 ----
      if (mask & (XValue | YValue))
      {
!         int ww, hh;
!         gui_mch_get_screen_dimensions(&ww, &hh);
!         hh += p_ghr + get_menu_tool_height();
!         ww += get_menu_tool_width();
          if (mask & XNegative)
!         x += ww - pixel_width;
          if (mask & YNegative)
!         y += hh - pixel_height;
  #ifdef HAVE_GTK2
          gtk_window_move(GTK_WINDOW(gui.mainwin), x, y);
  #else
*** ../vim-7.2.054/src/gui_xmdlg.c    Tue Jun 24 23:39:32 2008
--- src/gui_xmdlg.c    Fri Nov 28 21:04:08 2008
***************
*** 369,378 ****
      char    buf[TEMP_BUF_SIZE];
      XmString    items[MAX_ENTRIES_IN_LIST];
      int        i;
!     int        index;
!     for (index = (int)ENCODING; index < (int)NONE; ++index)
!     count[index] = 0;
      /* First we insert the wild char into every single list. */
      if (fix != ENCODING)
--- 369,378 ----
      char    buf[TEMP_BUF_SIZE];
      XmString    items[MAX_ENTRIES_IN_LIST];
      int        i;
!     int        idx;
!     for (idx = (int)ENCODING; idx < (int)NONE; ++idx)
!     count[idx] = 0;
      /* First we insert the wild char into every single list. */
      if (fix != ENCODING)
***************
*** 503,516 ****
      /*
       * Now loop trough the remaining lists and set them up.
       */
!     for (index = (int)NAME; index < (int)NONE; ++index)
      {
      Widget w;
!     if (fix == (enum ListSpecifier)index)
          continue;
!     switch ((enum ListSpecifier)index)
      {
          case NAME:
          w = data->list[NAME];
--- 503,516 ----
      /*
       * Now loop trough the remaining lists and set them up.
       */
!     for (idx = (int)NAME; idx < (int)NONE; ++idx)
      {
      Widget w;
!     if (fix == (enum ListSpecifier)idx)
          continue;
!     switch ((enum ListSpecifier)idx)
      {
          case NAME:
          w = data->list[NAME];
***************
*** 525,545 ****
          w = (Widget)0;    /* for lint */
      }
!     for (i = 0; i < count[index]; ++i)
      {
!         items[i] = XmStringCreateLocalized(list[index][i]);
!         XtFree(list[index][i]);
      }
      XmListDeleteAllItems(w);
!     XmListAddItems(w, items, count[index], 1);
!     if (data->sel[index])
      {
          XmStringFree(items[0]);
!         items[0] = XmStringCreateLocalized(data->sel[index]);
          XmListSelectItem(w, items[0], False);
          XmListSetBottomItem(w, items[0]);
      }
!     for (i = 0; i < count[index]; ++i)
          XmStringFree(items[i]);
      }
  }
--- 525,545 ----
          w = (Widget)0;    /* for lint */
      }
!     for (i = 0; i < count[idx]; ++i)
      {
!         items[i] = XmStringCreateLocalized(list[idx][i]);
!         XtFree(list[idx][i]);
      }
      XmListDeleteAllItems(w);
!     XmListAddItems(w, items, count[idx], 1);
!     if (data->sel[idx])
      {
          XmStringFree(items[0]);
!         items[0] = XmStringCreateLocalized(data->sel[idx]);
          XmListSelectItem(w, items[0], False);
          XmListSetBottomItem(w, items[0]);
      }
!     for (i = 0; i < count[idx]; ++i)
          XmStringFree(items[i]);
      }
  }
***************
*** 695,708 ****
      int        n;
      XmString    str;
      Arg        args[4];
!     char        *msg = _("no specific match");
      n = 0;
!     str = XmStringCreateLocalized(msg);
      XtSetArg(args[n], XmNlabelString, str); ++n;
      XtSetValues(data->sample, args, n);
      apply_fontlist(data->sample);
!     XmTextSetString(data->name, msg);
      XmStringFree(str);
      return False;
--- 695,708 ----
      int        n;
      XmString    str;
      Arg        args[4];
!     char        *nomatch_msg = _("no specific match");
      n = 0;
!     str = XmStringCreateLocalized(nomatch_msg);
      XtSetArg(args[n], XmNlabelString, str); ++n;
      XtSetValues(data->sample, args, n);
      apply_fontlist(data->sample);
!     XmTextSetString(data->name, nomatch_msg);
      XmStringFree(str);
      return False;
***************
*** 886,906 ****
      {
      int    i;
      int    max;
!     int    index = 0;
      int    size;
!     char    str[128];
      for (i = 0, max = 0; i < data->num; i++)
      {
!         get_part(fn(data, i), 7, str);
!         size = atoi(str);
          if ((size > max) && (size < MAX_DISPLAY_SIZE))
          {
!         index = i;
          max = size;
          }
      }
!     strcpy(big_font, fn(data, index));
      }
      data->old = XLoadQueryFont(XtDisplay(parent), big_font);
      data->old_list = gui_motif_create_fontlist(data->old);
--- 886,906 ----
      {
      int    i;
      int    max;
!     int    idx = 0;
      int    size;
!     char    buf[128];
      for (i = 0, max = 0; i < data->num; i++)
      {
!         get_part(fn(data, i), 7, buf);
!         size = atoi(buf);
          if ((size > max) && (size < MAX_DISPLAY_SIZE))
          {
!         idx = i;
          max = size;
          }
      }
!     strcpy(big_font, fn(data, idx));
      }
      data->old = XLoadQueryFont(XtDisplay(parent), big_font);
      data->old_list = gui_motif_create_fontlist(data->old);
***************
*** 1217,1244 ****
      if (i != 0)
      {
!         char name[TEMP_BUF_SIZE];
!         char style[TEMP_BUF_SIZE];
!         char size[TEMP_BUF_SIZE];
!         char encoding[TEMP_BUF_SIZE];
          char *found;
          found = names[0];
!         name_part(found, name);
!         style_part(found, style);
!         size_part(found, size, data->in_pixels);
!         encoding_part(found, encoding);
!
!         if (strlen(name) > 0
!             && strlen(style) > 0
!             && strlen(size) > 0
!             && strlen(encoding) > 0)
          {
!         data->sel[NAME] = XtNewString(name);
!         data->sel[STYLE] = XtNewString(style);
!         data->sel[SIZE] = XtNewString(size);
!         data->sel[ENCODING] = XtNewString(encoding);
          data->font_name = XtNewString(names[0]);
          display_sample(data);
          XmTextSetString(data->name, data->font_name);
--- 1217,1244 ----
      if (i != 0)
      {
!         char namebuf[TEMP_BUF_SIZE];
!         char stylebuf[TEMP_BUF_SIZE];
!         char sizebuf[TEMP_BUF_SIZE];
!         char encodingbuf[TEMP_BUF_SIZE];
          char *found;
          found = names[0];
!         name_part(found, namebuf);
!         style_part(found, stylebuf);
!         size_part(found, sizebuf, data->in_pixels);
!         encoding_part(found, encodingbuf);
!
!         if (strlen(namebuf) > 0
!             && strlen(stylebuf) > 0
!             && strlen(sizebuf) > 0
!             && strlen(encodingbuf) > 0)
          {
!         data->sel[NAME] = XtNewString(namebuf);
!         data->sel[STYLE] = XtNewString(stylebuf);
!         data->sel[SIZE] = XtNewString(sizebuf);
!         data->sel[ENCODING] = XtNewString(encodingbuf);
          data->font_name = XtNewString(names[0]);
          display_sample(data);
          XmTextSetString(data->name, data->font_name);
*** ../vim-7.2.054/src/gui_xmebw.c    Thu Nov  8 20:48:14 2007
--- src/gui_xmebw.c    Fri Nov 28 18:58:53 2008
***************
*** 1256,1262 ****
      }
      else
      {
!     int adjust = 0;
  #if !defined(LESSTIF_VERSION) && (XmVersion > 1002)
      /*
--- 1256,1262 ----
      }
      else
      {
!     adjust = 0;
  #if !defined(LESSTIF_VERSION) && (XmVersion > 1002)
      /*
***************
*** 1268,1279 ****
      {
          case XmEXTERNAL_HIGHLIGHT:
          adjust = (eb->primitive.highlight_thickness -
!             (eb->pushbutton.default_button_shadow_thickness ?
!              Xm3D_ENHANCE_PIXEL : 0));
          break;
          case XmINTERNAL_HIGHLIGHT:
-         adjust = 0;
          break;
          default:
--- 1268,1278 ----
      {
          case XmEXTERNAL_HIGHLIGHT:
          adjust = (eb->primitive.highlight_thickness -
!              (eb->pushbutton.default_button_shadow_thickness
!               ?  Xm3D_ENHANCE_PIXEL : 0));
          break;
          case XmINTERNAL_HIGHLIGHT:
          break;
          default:
*** ../vim-7.2.054/src/main.c    Thu Nov 20 14:11:47 2008
--- src/main.c    Fri Nov 28 18:32:48 2008
***************
*** 2372,2378 ****
       * Is there any other system that cannot do this?
       */
      close(0);
!     dup(2);
  #endif
  }
--- 2372,2378 ----
       * Is there any other system that cannot do this?
       */
      close(0);
!     ignored = dup(2);
  #endif
  }
*** ../vim-7.2.054/src/mbyte.c    Thu Nov 20 17:09:09 2008
--- src/mbyte.c    Fri Nov 28 18:44:05 2008
***************
*** 717,723 ****
               * where mblen() returns 0 for invalid character.
               * Therefore, following condition includes 0.
               */
!             (void)mblen(NULL, 0);    /* First reset the state. */
              if (mblen(buf, (size_t)1) <= 0)
              n = 2;
              else
--- 717,723 ----
               * where mblen() returns 0 for invalid character.
               * Therefore, following condition includes 0.
               */
!             ignored = mblen(NULL, 0);    /* First reset the state. */
              if (mblen(buf, (size_t)1) <= 0)
              n = 2;
              else
***************
*** 5278,5284 ****
  /*ARGSUSED*/
      static void
! preedit_start_cbproc(XIC xic, XPointer client_data, XPointer call_data)
  {
  #ifdef XIM_DEBUG
      xim_log("xim_decide_input_style()\n");
--- 5278,5284 ----
  /*ARGSUSED*/
      static void
! preedit_start_cbproc(XIC thexic, XPointer client_data, XPointer call_data)
  {
  #ifdef XIM_DEBUG
      xim_log("xim_decide_input_style()\n");
***************
*** 5312,5318 ****
  /*ARGSUSED*/
      static void
! preedit_draw_cbproc(XIC xic, XPointer client_data, XPointer call_data)
  {
      XIMPreeditDrawCallbackStruct *draw_data;
      XIMText    *text;
--- 5312,5318 ----
  /*ARGSUSED*/
      static void
! preedit_draw_cbproc(XIC thexic, XPointer client_data, XPointer call_data)
  {
      XIMPreeditDrawCallbackStruct *draw_data;
      XIMText    *text;
***************
*** 5453,5459 ****
  /*ARGSUSED*/
      static void
! preedit_caret_cbproc(XIC xic, XPointer client_data, XPointer call_data)
  {
  #ifdef XIM_DEBUG
      xim_log("preedit_caret_cbproc()\n");
--- 5453,5459 ----
  /*ARGSUSED*/
      static void
! preedit_caret_cbproc(XIC thexic, XPointer client_data, XPointer call_data)
  {
  #ifdef XIM_DEBUG
      xim_log("preedit_caret_cbproc()\n");
***************
*** 5462,5468 ****
  /*ARGSUSED*/
      static void
! preedit_done_cbproc(XIC xic, XPointer client_data, XPointer call_data)
  {
  #ifdef XIM_DEBUG
      xim_log("preedit_done_cbproc()\n");
--- 5462,5468 ----
  /*ARGSUSED*/
      static void
! preedit_done_cbproc(XIC thexic, XPointer client_data, XPointer call_data)
  {
  #ifdef XIM_DEBUG
      xim_log("preedit_done_cbproc()\n");
*** ../vim-7.2.054/src/message.c    Sun Jul 13 19:18:44 2008
--- src/message.c    Fri Nov 28 12:26:56 2008
***************
*** 4585,4645 ****
              if (remove_trailing_zeroes)
              {
                  int i;
!                 char *p;
                  /* Using %g or %G: remove superfluous zeroes. */
                  if (fmt_spec == 'f')
!                 p = tmp + str_arg_l - 1;
                  else
                  {
!                 p = (char *)vim_strchr((char_u *)tmp,
                           fmt_spec == 'e' ? 'e' : 'E');
!                 if (p != NULL)
                  {
                      /* Remove superfluous '+' and leading
                       * zeroes from the exponent. */
!                     if (p[1] == '+')
                      {
                      /* Change "1.0e+07" to "1.0e07" */
!                     STRMOVE(p + 1, p + 2);
                      --str_arg_l;
                      }
!                     i = (p[1] == '-') ? 2 : 1;
!                     while (p[i] == '0')
                      {
                      /* Change "1.0e07" to "1.0e7" */
!                     STRMOVE(p + i, p + i + 1);
                      --str_arg_l;
                      }
!                     --p;
                  }
                  }
!                 if (p != NULL && !precision_specified)
                  /* Remove trailing zeroes, but keep the one
                   * just after a dot. */
!                 while (p > tmp + 2 && *p == '0' && p[-1] != '.')
                  {
!                     STRMOVE(p, p + 1);
!                     --p;
                      --str_arg_l;
                  }
              }
              else
              {
!                 char *p;
                  /* Be consistent: some printf("%e") use 1.0e+12
                   * and some 1.0e+012.  Remove one zero in the last
                   * case. */
!                 p = (char *)vim_strchr((char_u *)tmp,
                           fmt_spec == 'e' ? 'e' : 'E');
!                 if (p != NULL && (p[1] == '+' || p[1] == '-')
!                       && p[2] == '0'
!                       && vim_isdigit(p[3])
!                       && vim_isdigit(p[4]))
                  {
!                 STRMOVE(p + 2, p + 3);
                  --str_arg_l;
                  }
              }
--- 4585,4646 ----
              if (remove_trailing_zeroes)
              {
                  int i;
!                 char *tp;
                  /* Using %g or %G: remove superfluous zeroes. */
                  if (fmt_spec == 'f')
!                 tp = tmp + str_arg_l - 1;
                  else
                  {
!                 tp = (char *)vim_strchr((char_u *)tmp,
                           fmt_spec == 'e' ? 'e' : 'E');
!                 if (tp != NULL)
                  {
                      /* Remove superfluous '+' and leading
                       * zeroes from the exponent. */
!                     if (tp[1] == '+')
                      {
                      /* Change "1.0e+07" to "1.0e07" */
!                     STRMOVE(tp + 1, tp + 2);
                      --str_arg_l;
                      }
!                     i = (tp[1] == '-') ? 2 : 1;
!                     while (tp[i] == '0')
                      {
                      /* Change "1.0e07" to "1.0e7" */
!                     STRMOVE(tp + i, tp + i + 1);
                      --str_arg_l;
                      }
!                     --tp;
                  }
                  }
!                 if (tp != NULL && !precision_specified)
                  /* Remove trailing zeroes, but keep the one
                   * just after a dot. */
!                 while (tp > tmp + 2 && *tp == '0'
!                                  && tp[-1] != '.')
                  {
!                     STRMOVE(tp, tp + 1);
!                     --tp;
                      --str_arg_l;
                  }
              }
              else
              {
!                 char *tp;
                  /* Be consistent: some printf("%e") use 1.0e+12
                   * and some 1.0e+012.  Remove one zero in the last
                   * case. */
!                 tp = (char *)vim_strchr((char_u *)tmp,
                           fmt_spec == 'e' ? 'e' : 'E');
!                 if (tp != NULL && (tp[1] == '+' || tp[1] == '-')
!                       && tp[2] == '0'
!                       && vim_isdigit(tp[3])
!                       && vim_isdigit(tp[4]))
                  {
!                 STRMOVE(tp + 2, tp + 3);
                  --str_arg_l;
                  }
              }
*** ../vim-7.2.054/src/netbeans.c    Sat Nov 15 14:10:23 2008
--- src/netbeans.c    Fri Nov 28 18:51:43 2008
***************
*** 1043,1049 ****
      nbdebug(("EVT: %s", buf));
  /*    nb_send(buf, "netbeans_end");    avoid "write failed" messages */
      if (sd >= 0)
!         sock_write(sd, buf, (int)STRLEN(buf));  /* ignore errors */
      }
  }
--- 1043,1049 ----
      nbdebug(("EVT: %s", buf));
  /*    nb_send(buf, "netbeans_end");    avoid "write failed" messages */
      if (sd >= 0)
!         ignored = sock_write(sd, buf, (int)STRLEN(buf));
      }
  }
***************
*** 2277,2285 ****
          int serNum;
          int localTypeNum;
          int typeNum;
- # ifdef NBDEBUG
-         int len;
- # endif
          pos_T *pos;
          if (buf == NULL || buf->bufp == NULL)
--- 2277,2282 ----
***************
*** 2303,2315 ****
          pos = get_off_or_lnum(buf->bufp, &args);
          cp = (char *)args;
! # ifdef NBDEBUG
!         len =
! # endif
!         strtol(cp, &cp, 10);
          args = (char_u *)cp;
  # ifdef NBDEBUG
!         if (len != -1)
          {
          nbdebug(("    partial line annotation -- Not Yet Implemented!\n"));
          }
--- 2300,2309 ----
          pos = get_off_or_lnum(buf->bufp, &args);
          cp = (char *)args;
!         ignored = (int)strtol(cp, &cp, 10);
          args = (char_u *)cp;
  # ifdef NBDEBUG
!         if (ignored != -1)
          {
          nbdebug(("    partial line annotation -- Not Yet Implemented!\n"));
          }
*** ../vim-7.2.054/src/option.c    Sun Nov  9 13:43:25 2008
--- src/option.c    Fri Nov 28 12:27:34 2008
***************
*** 8232,8244 ****
          {
          if (number == 0 && string != NULL)
          {
!             int index;
              /* Either we are given a string or we are setting option
               * to zero. */
!             for (index = 0; string[index] == '0'; ++index)
              ;
!             if (string[index] != NUL || index == 0)
              {
              /* There's another character after zeros or the string
               * is empty.  In both cases, we are trying to set a
--- 8232,8244 ----
          {
          if (number == 0 && string != NULL)
          {
!             int idx;
              /* Either we are given a string or we are setting option
               * to zero. */
!             for (idx = 0; string[idx] == '0'; ++idx)
              ;
!             if (string[idx] != NUL || idx == 0)
              {
              /* There's another character after zeros or the string
               * is empty.  In both cases, we are trying to set a
*** ../vim-7.2.054/src/os_unix.c    Wed Nov 12 14:09:38 2008
--- src/os_unix.c    Fri Nov 28 18:39:55 2008
***************
*** 315,326 ****
      {-1,        "Unknown!", FALSE}
  };
      void
  mch_write(s, len)
      char_u    *s;
      int        len;
  {
!     write(1, (char *)s, len);
      if (p_wd)        /* Unix is too fast, slow down a bit more */
      RealWaitForChar(read_cmd_fd, p_wd, NULL);
  }
--- 315,329 ----
      {-1,        "Unknown!", FALSE}
  };
+ /*
+  * Write s[len] to the screen.
+  */
      void
  mch_write(s, len)
      char_u    *s;
      int        len;
  {
!     ignored = (int)write(1, (char *)s, len);
      if (p_wd)        /* Unix is too fast, slow down a bit more */
      RealWaitForChar(read_cmd_fd, p_wd, NULL);
  }
***************
*** 3927,3935 ****
           */
          if (fd >= 0)
          {
!             dup(fd); /* To replace stdin  (file descriptor 0) */
!             dup(fd); /* To replace stdout (file descriptor 1) */
!             dup(fd); /* To replace stderr (file descriptor 2) */
              /* Don't need this now that we've duplicated it */
              close(fd);
--- 3930,3938 ----
           */
          if (fd >= 0)
          {
!             ignored = dup(fd); /* To replace stdin  (fd 0) */
!             ignored = dup(fd); /* To replace stdout (fd 1) */
!             ignored = dup(fd); /* To replace stderr (fd 2) */
              /* Don't need this now that we've duplicated it */
              close(fd);
***************
*** 3997,4009 ****
              /* set up stdin/stdout/stderr for the child */
              close(0);
!             dup(pty_slave_fd);
              close(1);
!             dup(pty_slave_fd);
              if (gui.in_use)
              {
              close(2);
!             dup(pty_slave_fd);
              }
              close(pty_slave_fd);    /* has been dupped, close it now */
--- 4000,4012 ----
              /* set up stdin/stdout/stderr for the child */
              close(0);
!             ignored = dup(pty_slave_fd);
              close(1);
!             ignored = dup(pty_slave_fd);
              if (gui.in_use)
              {
              close(2);
!             ignored = dup(pty_slave_fd);
              }
              close(pty_slave_fd);    /* has been dupped, close it now */
***************
*** 4014,4026 ****
              /* set up stdin for the child */
              close(fd_toshell[1]);
              close(0);
!             dup(fd_toshell[0]);
              close(fd_toshell[0]);
              /* set up stdout for the child */
              close(fd_fromshell[0]);
              close(1);
!             dup(fd_fromshell[1]);
              close(fd_fromshell[1]);
  # ifdef FEAT_GUI
--- 4017,4029 ----
              /* set up stdin for the child */
              close(fd_toshell[1]);
              close(0);
!             ignored = dup(fd_toshell[0]);
              close(fd_toshell[0]);
              /* set up stdout for the child */
              close(fd_fromshell[0]);
              close(1);
!             ignored = dup(fd_fromshell[1]);
              close(fd_fromshell[1]);
  # ifdef FEAT_GUI
***************
*** 4028,4034 ****
              {
              /* set up stderr for the child */
              close(2);
!             dup(1);
              }
  # endif
          }
--- 4031,4037 ----
              {
              /* set up stderr for the child */
              close(2);
!             ignored = dup(1);
              }
  # endif
          }
***************
*** 4159,4165 ****
                          && (lnum !=
                              curbuf->b_ml.ml_line_count
                              || curbuf->b_p_eol)))
!                     write(toshell_fd, "\n", (size_t)1);
                  ++lnum;
                  if (lnum > curbuf->b_op_end.lnum)
                  {
--- 4162,4169 ----
                          && (lnum !=
                              curbuf->b_ml.ml_line_count
                              || curbuf->b_p_eol)))
!                     ignored = write(toshell_fd, "\n",
!                                    (size_t)1);
                  ++lnum;
                  if (lnum > curbuf->b_op_end.lnum)
                  {
*** ../vim-7.2.054/src/spell.c    Fri Nov 28 10:08:05 2008
--- src/spell.c    Fri Nov 28 12:28:24 2008
***************
*** 4950,4956 ****
  static void put_sugtime __ARGS((spellinfo_T *spin, FILE *fd));
  static int write_vim_spell __ARGS((spellinfo_T *spin, char_u *fname));
  static void clear_node __ARGS((wordnode_T *node));
! static int put_node __ARGS((FILE *fd, wordnode_T *node, int index, int regionmask, int prefixtree));
  static void spell_make_sugfile __ARGS((spellinfo_T *spin, char_u *wfname));
  static int sug_filltree __ARGS((spellinfo_T *spin, slang_T *slang));
  static int sug_maketable __ARGS((spellinfo_T *spin));
--- 4950,4956 ----
  static void put_sugtime __ARGS((spellinfo_T *spin, FILE *fd));
  static int write_vim_spell __ARGS((spellinfo_T *spin, char_u *fname));
  static void clear_node __ARGS((wordnode_T *node));
! static int put_node __ARGS((FILE *fd, wordnode_T *node, int idx, int regionmask, int prefixtree));
  static void spell_make_sugfile __ARGS((spellinfo_T *spin, char_u *wfname));
  static int sug_filltree __ARGS((spellinfo_T *spin, slang_T *slang));
  static int sug_maketable __ARGS((spellinfo_T *spin));
*** ../vim-7.2.054/src/ui.c    Sun Sep 14 15:57:54 2008
--- src/ui.c    Fri Nov 28 19:04:36 2008
***************
*** 1820,1826 ****
  #ifdef HAVE_DUP
          /* Use stderr for stdin, also works for shell commands. */
          close(0);
!         dup(2);
  #else
          read_cmd_fd = 2;    /* read from stderr instead of stdin */
  #endif
--- 1820,1826 ----
  #ifdef HAVE_DUP
          /* Use stderr for stdin, also works for shell commands. */
          close(0);
!         ignored = dup(2);
  #else
          read_cmd_fd = 2;    /* read from stderr instead of stdin */
  #endif
*** ../vim-7.2.054/src/window.c    Sat Nov 15 14:10:23 2008
--- src/window.c    Fri Nov 28 18:46:45 2008
***************
*** 4029,4042 ****
          if (mch_dirname(cwd, MAXPATHL) == OK)
          globaldir = vim_strsave(cwd);
      }
!     mch_chdir((char *)curwin->w_localdir);
!     shorten_fnames(TRUE);
      }
      else if (globaldir != NULL)
      {
      /* Window doesn't have a local directory and we are not in the global
       * directory: Change to the global directory. */
!     mch_chdir((char *)globaldir);
      vim_free(globaldir);
      globaldir = NULL;
      shorten_fnames(TRUE);
--- 4029,4042 ----
          if (mch_dirname(cwd, MAXPATHL) == OK)
          globaldir = vim_strsave(cwd);
      }
!     if (mch_chdir((char *)curwin->w_localdir) == 0)
!         shorten_fnames(TRUE);
      }
      else if (globaldir != NULL)
      {
      /* Window doesn't have a local directory and we are not in the global
       * directory: Change to the global directory. */
!     ignored = mch_chdir((char *)globaldir);
      vim_free(globaldir);
      globaldir = NULL;
      shorten_fnames(TRUE);
*** ../vim-7.2.054/src/version.c    Fri Nov 28 12:05:07 2008
--- src/version.c    Fri Nov 28 21:12:42 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     55,
  /**/
--
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/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.056
New file
@@ -0,0 +1,57 @@
To: vim-dev@vim.org
Subject: Patch 7.2.056
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.056 (after 7.2.050)
Problem:    Tests 58 and 59 fail.
Solution:   Don't invoke fwrite() with a zero length. (Dominique Pelle)
Files:        src/spell.c
*** ../vim-7.2.055/src/spell.c    Fri Nov 28 21:26:50 2008
--- src/spell.c    Sat Nov 29 19:58:21 2008
***************
*** 8112,8118 ****
          p = rr == 1 ? ftp->ft_from : ftp->ft_to;
          l = (int)STRLEN(p);
          putc(l, fd);
!         fwv &= fwrite(p, l, (size_t)1, fd);
          }
      }
--- 8218,8225 ----
          p = rr == 1 ? ftp->ft_from : ftp->ft_to;
          l = (int)STRLEN(p);
          putc(l, fd);
!         if (l > 0)
!             fwv &= fwrite(p, l, (size_t)1, fd);
          }
      }
*** ../vim-7.2.055/src/version.c    Fri Nov 28 21:26:50 2008
--- src/version.c    Sat Nov 29 20:10:05 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     56,
  /**/
--
GUARD #1:  Where'd you get the coconut?
ARTHUR:    We found them.
GUARD #1:  Found them?  In Mercea?  The coconut's tropical!
ARTHUR:    What do you mean?
GUARD #1:  Well, this is a temperate zone.
                                  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/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.057
New file
@@ -0,0 +1,111 @@
To: vim-dev@vim.org
Subject: Patch 7.2.057
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.057 (after 7.2.056)
Problem:    Combination of int and size_t may not work.
Solution:   Use size_t for variable.
Files:        src/spell.c
*** ../vim-7.2.056/src/spell.c    Sat Nov 29 20:10:59 2008
--- src/spell.c    Sat Nov 29 20:15:43 2008
***************
*** 7926,7932 ****
      char_u    *p;
      int        rr;
      int        retval = OK;
!     int        fwv = 1;  /* collect return value of fwrite() to avoid
                   warnings from picky compiler */
      fd = mch_fopen((char *)fname, "w");
--- 8028,8034 ----
      char_u    *p;
      int        rr;
      int        retval = OK;
!     size_t    fwv = 1;  /* collect return value of fwrite() to avoid
                   warnings from picky compiler */
      fd = mch_fopen((char *)fname, "w");
***************
*** 7939,7944 ****
--- 8041,8050 ----
      /* <HEADER>: <fileID> <versionnr> */
                                  /* <fileID> */
      fwv &= fwrite(VIMSPELLMAGIC, VIMSPELLMAGICL, (size_t)1, fd);
+     if (fwv != (size_t)1)
+     /* Catch first write error, don't try writing more. */
+     goto theend;
+
      putc(VIMSPELLVERSION, fd);                    /* <versionnr> */
      /*
***************
*** 8300,8310 ****
      /* Write another byte to check for errors (file system full). */
      if (putc(0, fd) == EOF)
      retval = FAIL;
!
      if (fclose(fd) == EOF)
      retval = FAIL;
!     if (fwv != 1)
      retval = FAIL;
      if (retval == FAIL)
      EMSG(_(e_write));
--- 8406,8416 ----
      /* Write another byte to check for errors (file system full). */
      if (putc(0, fd) == EOF)
      retval = FAIL;
! theend:
      if (fclose(fd) == EOF)
      retval = FAIL;
!     if (fwv != (size_t)1)
      retval = FAIL;
      if (retval == FAIL)
      EMSG(_(e_write));
***************
*** 9897,9903 ****
      char_u    *p;
      int        len;
      int        totlen;
!     int        x = 1;  /* collect return value of fwrite() */
      if (fd != NULL)
      put_bytes(fd, (long_u)gap->ga_len, 2);        /* <prefcondcnt> */
--- 10003,10009 ----
      char_u    *p;
      int        len;
      int        totlen;
!     size_t    x = 1;  /* collect return value of fwrite() */
      if (fd != NULL)
      put_bytes(fd, (long_u)gap->ga_len, 2);        /* <prefcondcnt> */
*** ../vim-7.2.056/src/version.c    Sat Nov 29 20:10:59 2008
--- src/version.c    Sat Nov 29 20:13:46 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     57,
  /**/
--
GUARD #1:  What -- a swallow carrying a coconut?
ARTHUR:    It could grip it by the husk!
GUARD #1:  It's not a question of where he grips it!  It's a simple question
           of weight ratios!  A five ounce bird could not carry a 1 pound
           coconut.
                                  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/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.058
New file
@@ -0,0 +1,83 @@
To: vim-dev@vim.org
Subject: Patch 7.2.058
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.058
Problem:    Can't add a patch name to the ":version" output.
Solution:   Add the extra_patches array.
Files:        src/version.c
*** ../vim-7.2.057/src/version.c    Sat Nov 29 20:18:44 2008
--- src/version.c    Sun Nov 30 12:12:31 2008
***************
*** 794,799 ****
--- 796,814 ----
      0
  };
+ /*
+  * Place to put a short description when adding a feature with a patch.
+  * Keep it short, e.g.,: "relative numbers", "persistent undo".
+  * Also add a comment marker to separate the lines.
+  * See the official Vim patches for the diff format: It must use a context of
+  * one line only.  Use "diff -C2".
+  */
+ static char *(extra_patches[]) =
+ {   /* Add your patch description below this line */
+ /**/
+     NULL
+ };
+
      int
  highest_patch()
  {
***************
*** 939,944 ****
--- 954,972 ----
      }
      }
+     /* Print the list of extra patch descriptions if there is at least one. */
+     if (extra_patches[0] != NULL)
+     {
+     MSG_PUTS(_("\nExtra patches: "));
+     s = "";
+     for (i = 0; extra_patches[i] != NULL; ++i)
+     {
+         MSG_PUTS(s);
+         s = ", ";
+         MSG_PUTS(extra_patches[i]);
+     }
+     }
+
  #ifdef MODIFIED_BY
      MSG_PUTS("\n");
      MSG_PUTS(_("Modified by "));
*** ../vim-7.2.057/src/version.c    Sat Nov 29 20:18:44 2008
--- src/version.c    Sun Nov 30 12:12:31 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     58,
  /**/
--
ARTHUR:    Well, it doesn't matter.  Will you go and tell your master that
           Arthur from the Court of Camelot is here.
GUARD #1:  Listen, in order to maintain air-speed velocity, a swallow
           needs to beat its wings 43 times every second, right?
ARTHUR:    Please!
                                  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/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.059
New file
@@ -0,0 +1,70 @@
To: vim-dev@vim.org
Subject: Patch 7.2.059
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.059
Problem:    Diff display is not always updated.
Solution:   Update the display more often.
Files:        src/diff.c
*** ../vim-7.2.058/src/diff.c    Fri Nov 28 21:26:50 2008
--- src/diff.c    Fri Nov 28 17:23:35 2008
***************
*** 73,78 ****
--- 73,80 ----
      {
          tp->tp_diffbuf[i] = NULL;
          tp->tp_diff_invalid = TRUE;
+         if (tp == curtab)
+         diff_redraw(TRUE);
      }
      }
  }
***************
*** 102,107 ****
--- 104,110 ----
          {
          curtab->tp_diffbuf[i] = NULL;
          curtab->tp_diff_invalid = TRUE;
+         diff_redraw(TRUE);
          }
      }
      }
***************
*** 131,136 ****
--- 134,140 ----
      {
          curtab->tp_diffbuf[i] = buf;
          curtab->tp_diff_invalid = TRUE;
+         diff_redraw(TRUE);
          return;
      }
*** ../vim-7.2.058/src/version.c    Sun Nov 30 12:14:35 2008
--- src/version.c    Sun Nov 30 15:13:18 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     59,
  /**/
--
GUARD #2:  Wait a minute -- supposing two swallows carried it together?
GUARD #1:  No, they'd have to have it on a line.
GUARD #2:  Well, simple!  They'd just use a standard creeper!
GUARD #1:  What, held under the dorsal guiding feathers?
GUARD #2:  Well, why not?
                                  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/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.060
New file
@@ -0,0 +1,1102 @@
To: vim-dev@vim.org
Subject: Patch 7.2.060
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.060
Problem:    When a spell files has many compound rules it may take a very long
        time making the list of suggestions.  Displaying also can be slow
        when there are misspelled words.
        Can't parse some Hunspell .aff files.
Solution:   Check if a compounding can possibly work before trying a
        combination, if the compound rules don't contain wildcards.
        Implement using CHECKCOMPOUNDPATTERN.
        Ignore COMPOUNDRULES.  Ignore a comment after most items.
        Accept ONLYINCOMPOUND as an alias for NEEDCOMPOUND.
        Accept FORBIDDENWORD as an alias for BAD.
Files:        runtime/doc/spell.txt, src/spell.c
*** ../vim-7.2.059/runtime/doc/spell.txt    Sat Aug  9 19:36:52 2008
--- runtime/doc/spell.txt    Sun Nov 30 16:30:02 2008
***************
*** 1,4 ****
! *spell.txt*    For Vim version 7.2.  Last change: 2008 Jun 21
            VIM REFERENCE MANUAL      by Bram Moolenaar
--- 1,4 ----
! *spell.txt*    For Vim version 7.2.  Last change: 2008 Nov 30
            VIM REFERENCE MANUAL      by Bram Moolenaar
***************
*** 831,838 ****
      # comment line ~
! With some items it's also possible to put a comment after it, but this isn't
! supported in general.
  ENCODING                            *spell-SET*
--- 831,841 ----
      # comment line ~
! Items with a fixed number of arguments can be followed by a comment.  But only
! if none of the arguments can contain white space.  The comment must start with
! a "#" character.  Example:
!
!     KEEPCASE =  # fix case for words with this flag ~
  ENCODING                            *spell-SET*
***************
*** 965,970 ****
--- 968,976 ----
  Note: When using utf-8 only characters up to 65000 may be used for flags.
+ Note: even when using "num" or "long" the number of flags available to
+ compounding and prefixes is limited to about 250.
+
  AFFIXES
                          *spell-PFX* *spell-SFX*
***************
*** 1178,1183 ****
--- 1185,1193 ----
  The flag also applies to the word with affixes, thus this can be used to mark
  a whole bunch of related words as bad.
+                             *spell-FORBIDDENWORD*
+ FORBIDDENWORD can be used just like BAD.  For compatibility with Hunspell.
+
                              *spell-NEEDAFFIX*
  The NEEDAFFIX flag is used to require that a word is used with an affix.  The
  word itself is not a good word (unless there is an empty affix).  Example:
***************
*** 1268,1273 ****
--- 1278,1287 ----
      NEEDCOMPOUND & ~
+                             *spell-ONLYINCOMPOUND*
+ The ONLYINCOMPOUND does exactly the same as NEEDCOMPOUND.  Supported for
+ compatiblity with Hunspell.
+
                              *spell-COMPOUNDMIN*
  The minimal character length of a word used for compounding is specified with
  COMPOUNDMIN.  Example:
***************
*** 1328,1333 ****
--- 1342,1361 ----
  rules.  Can also be used for an affix to count the affix as a compounding
  word.
+                         *spell-CHECKCOMPOUNDPATTERN*
+ CHECKCOMPOUNDPATTERN is used to define patterns that, when matching at the
+ position where two words are compounded together forbids the compound.
+ For example:
+     CHECKCOMPOUNDPATTERN o e ~
+
+ This forbids compounding if the first word ends in "o" and the second word
+ starts with "e".
+
+ The arguments must be plain text, no patterns are actually supported, despite
+ the item name.  Case is always ignored.
+
+ The Hunspell feature to use three arguments and flags is not supported.
+
                              *spell-SYLLABLE*
  The SYLLABLE item defines characters or character sequences that are used to
  count the number of syllables in a word.  Example:
***************
*** 1496,1501 ****
--- 1524,1533 ----
  ACCENT        (Hunspell)                *spell-ACCENT*
          Use MAP instead. |spell-MAP|
+ BREAK        (Hunspell)                *spell-BREAK*
+         Define break points.  Unclear how it works exactly.
+         Not supported.
+
  CHECKCOMPOUNDCASE  (Hunspell)            *spell-CHECKCOMPOUNDCASE*
          Disallow uppercase letters at compound word boundaries.
          Not supported.
***************
*** 1512,1520 ****
          Forbid three identical characters when compounding.  Not
          supported.
- CHECKCOMPOUNDPATTERN  (Hunspell)        *spell-CHECKCOMPOUNDPATTERN*
-         Forbid compounding when patterns match.  Not supported.
-
  COMPLEXPREFIXES  (Hunspell)                *spell-COMPLEXPREFIXES*
          Enables using two prefixes.  Not supported.
--- 1544,1549 ----
***************
*** 1536,1548 ****
  COMPOUNDMIDDLE    (Hunspell)                *spell-COMPOUNDMIDDLE*
          Use COMPOUNDRULE instead. |spell-COMPOUNDRULE|
  COMPOUNDSYLLABLE  (Hunspell)            *spell-COMPOUNDSYLLABLE*
          Use SYLLABLE and COMPOUNDSYLMAX instead. |spell-SYLLABLE|
          |spell-COMPOUNDSYLMAX|
! FORBIDDENWORD    (Hunspell)                *spell-FORBIDDENWORD*
!         Use BAD instead. |spell-BAD|
!
  LANG        (Hunspell)                *spell-LANG*
          This specifies language-specific behavior.  This actually
          moves part of the language knowledge into the program,
--- 1565,1582 ----
  COMPOUNDMIDDLE    (Hunspell)                *spell-COMPOUNDMIDDLE*
          Use COMPOUNDRULE instead. |spell-COMPOUNDRULE|
+ COMPOUNDRULES    (Hunspell)                *spell-COMPOUNDRULES*
+         Number of COMPOUNDRULE lines following.  Ignored, but the
+         argument must be a number.
+
  COMPOUNDSYLLABLE  (Hunspell)            *spell-COMPOUNDSYLLABLE*
          Use SYLLABLE and COMPOUNDSYLMAX instead. |spell-SYLLABLE|
          |spell-COMPOUNDSYLMAX|
! KEY        (Hunspell)                *spell-KEY*
!         Define characters that are close together on the keyboard.
!         Used to give better suggestions.  Not supported.
!
  LANG        (Hunspell)                *spell-LANG*
          This specifies language-specific behavior.  This actually
          moves part of the language knowledge into the program,
***************
*** 1553,1562 ****
          Only needed for morphological analysis.
  MAXNGRAMSUGS    (Hunspell)                *spell-MAXNGRAMSUGS*
!         Not supported.
!
! ONLYINCOMPOUND    (Hunspell)                *spell-ONLYINCOMPOUND*
!         Use NEEDCOMPOUND instead. |spell-NEEDCOMPOUND|
  PSEUDOROOT    (Hunspell)                *spell-PSEUDOROOT*
          Use NEEDAFFIX instead. |spell-NEEDAFFIX|
--- 1587,1593 ----
          Only needed for morphological analysis.
  MAXNGRAMSUGS    (Hunspell)                *spell-MAXNGRAMSUGS*
!         Set number of n-gram suggestions.  Not supported.
  PSEUDOROOT    (Hunspell)                *spell-PSEUDOROOT*
          Use NEEDAFFIX instead. |spell-NEEDAFFIX|
*** ../vim-7.2.059/src/spell.c    Sat Nov 29 20:18:44 2008
--- src/spell.c    Sun Nov 30 20:59:13 2008
***************
*** 469,474 ****
--- 469,475 ----
      garray_T    sl_comppat;    /* CHECKCOMPOUNDPATTERN items */
      regprog_T    *sl_compprog;    /* COMPOUNDRULE turned into a regexp progrm
                   * (NULL when no compounding) */
+     char_u    *sl_comprules;    /* all COMPOUNDRULE concatenated (or NULL) */
      char_u    *sl_compstartflags; /* flags for first compound word */
      char_u    *sl_compallflags; /* all flags for compound words */
      char_u    sl_nobreak;    /* When TRUE: no spaces between words */
***************
*** 839,845 ****
--- 840,849 ----
  static void slang_clear __ARGS((slang_T *lp));
  static void slang_clear_sug __ARGS((slang_T *lp));
  static void find_word __ARGS((matchinf_T *mip, int mode));
+ static int match_checkcompoundpattern __ARGS((char_u *ptr, int wlen, garray_T *gap));
  static int can_compound __ARGS((slang_T *slang, char_u *word, char_u *flags));
+ static int can_be_compound __ARGS((trystate_T *sp, slang_T *slang, char_u *compflags, int flag));
+ static int match_compoundrule __ARGS((slang_T *slang, char_u *compflags));
  static int valid_word_prefix __ARGS((int totprefcnt, int arridx, int flags, char_u *word, slang_T *slang, int cond_req));
  static void find_prefix __ARGS((matchinf_T *mip, int mode));
  static int fold_more __ARGS((matchinf_T *mip));
***************
*** 1519,1524 ****
--- 1523,1533 ----
                          ((unsigned)flags >> 24)))
              continue;
+         /* If there is a match with a CHECKCOMPOUNDPATTERN rule
+          * discard the compound word. */
+         if (match_checkcompoundpattern(ptr, wlen, &slang->sl_comppat))
+             continue;
+
          if (mode == FIND_COMPOUND)
          {
              int        capflags;
***************
*** 1577,1582 ****
--- 1586,1596 ----
              if (!can_compound(slang, fword, mip->mi_compflags))
              continue;
          }
+         else if (slang->sl_comprules != NULL
+                  && !match_compoundrule(slang, mip->mi_compflags))
+             /* The compound flags collected so far do not match any
+              * COMPOUNDRULE, discard the compounded word. */
+             continue;
          }
          /* Check NEEDCOMPOUND: can't use word without compounding. */
***************
*** 1727,1732 ****
--- 1741,1779 ----
  }
  /*
+  * Return TRUE if there is a match between the word ptr[wlen] and
+  * CHECKCOMPOUNDPATTERN rules, assuming that we will concatenate with another
+  * word.
+  * A match means that the first part of CHECKCOMPOUNDPATTERN matches at the
+  * end of ptr[wlen] and the second part matches after it.
+  */
+     static int
+ match_checkcompoundpattern(ptr, wlen, gap)
+     char_u    *ptr;
+     int        wlen;
+     garray_T    *gap;  /* &sl_comppat */
+ {
+     int        i;
+     char_u    *p;
+     int        len;
+
+     for (i = 0; i + 1 < gap->ga_len; i += 2)
+     {
+     p = ((char_u **)gap->ga_data)[i + 1];
+     if (STRNCMP(ptr + wlen, p, STRLEN(p)) == 0)
+     {
+         /* Second part matches at start of following compound word, now
+          * check if first part matches at end of previous word. */
+         p = ((char_u **)gap->ga_data)[i];
+         len = STRLEN(p);
+         if (len <= wlen && STRNCMP(ptr + wlen - len, p, len) == 0)
+         return TRUE;
+     }
+     }
+     return FALSE;
+ }
+
+ /*
   * Return TRUE if "flags" is a valid sequence of compound flags and "word"
   * does not have too many syllables.
   */
***************
*** 1773,1778 ****
--- 1820,1917 ----
  }
  /*
+  * Return TRUE when the sequence of flags in "compflags" plus "flag" can
+  * possibly form a valid compounded word.  This also checks the COMPOUNDRULE
+  * lines if they don't contain wildcards.
+  */
+     static int
+ can_be_compound(sp, slang, compflags, flag)
+     trystate_T    *sp;
+     slang_T    *slang;
+     char_u    *compflags;
+     int        flag;
+ {
+     /* If the flag doesn't appear in sl_compstartflags or sl_compallflags
+      * then it can't possibly compound. */
+     if (!byte_in_str(sp->ts_complen == sp->ts_compsplit
+         ? slang->sl_compstartflags : slang->sl_compallflags, flag))
+     return FALSE;
+
+     /* If there are no wildcards, we can check if the flags collected so far
+      * possibly can form a match with COMPOUNDRULE patterns.  This only
+      * makes sense when we have two or more words. */
+     if (slang->sl_comprules != NULL && sp->ts_complen > sp->ts_compsplit)
+     {
+     int v;
+
+     compflags[sp->ts_complen] = flag;
+     compflags[sp->ts_complen + 1] = NUL;
+     v = match_compoundrule(slang, compflags + sp->ts_compsplit);
+     compflags[sp->ts_complen] = NUL;
+     return v;
+     }
+
+     return TRUE;
+ }
+
+
+ /*
+  * Return TRUE if the compound flags in compflags[] match the start of any
+  * compound rule.  This is used to stop trying a compound if the flags
+  * collected so far can't possibly match any compound rule.
+  * Caller must check that slang->sl_comprules is not NULL.
+  */
+     static int
+ match_compoundrule(slang, compflags)
+     slang_T    *slang;
+     char_u    *compflags;
+ {
+     char_u    *p;
+     int        i;
+     int        c;
+
+     /* loop over all the COMPOUNDRULE entries */
+     for (p = slang->sl_comprules; *p != NUL; ++p)
+     {
+     /* loop over the flags in the compound word we have made, match
+      * them against the current rule entry */
+     for (i = 0; ; ++i)
+     {
+         c = compflags[i];
+         if (c == NUL)
+         /* found a rule that matches for the flags we have so far */
+         return TRUE;
+         if (*p == '/' || *p == NUL)
+         break;  /* end of rule, it's too short */
+         if (*p == '[')
+         {
+         int match = FALSE;
+
+         /* compare against all the flags in [] */
+         ++p;
+         while (*p != ']' && *p != NUL)
+             if (*p++ == c)
+             match = TRUE;
+         if (!match)
+             break;  /* none matches */
+         }
+         else if (*p != c)
+         break;  /* flag of word doesn't match flag in pattern */
+         ++p;
+     }
+
+     /* Skip to the next "/", where the next pattern starts. */
+     p = vim_strchr(p, '/');
+     if (p == NULL)
+         break;
+     }
+
+     /* Checked all the rules and none of them match the flags, so there
+      * can't possibly be a compound starting with these flags. */
+     return FALSE;
+ }
+
+ /*
   * Return non-zero if the prefix indicated by "arridx" matches with the prefix
   * ID in "flags" for the word "word".
   * The WF_RAREPFX flag is included in the return value for a rare prefix.
***************
*** 2513,2521 ****
--- 2652,2662 ----
      lp->sl_midword = NULL;
      vim_free(lp->sl_compprog);
+     vim_free(lp->sl_comprules);
      vim_free(lp->sl_compstartflags);
      vim_free(lp->sl_compallflags);
      lp->sl_compprog = NULL;
+     lp->sl_comprules = NULL;
      lp->sl_compstartflags = NULL;
      lp->sl_compallflags = NULL;
***************
*** 3460,3465 ****
--- 3601,3607 ----
      char_u    *pp;
      char_u    *cp;
      char_u    *ap;
+     char_u    *crp;
      int        cnt;
      garray_T    *gap;
***************
*** 3545,3550 ****
--- 3687,3698 ----
      slang->sl_compallflags = ap;
      *ap = NUL;
+     /* And a list of all patterns in their original form, for checking whether
+      * compounding may work in match_compoundrule().  This is freed when we
+      * encounter a wildcard, the check doesn't work then. */
+     crp = alloc(todo + 1);
+     slang->sl_comprules = crp;
+
      pp = pat;
      *pp++ = '^';
      *pp++ = '\\';
***************
*** 3587,3592 ****
--- 3735,3754 ----
              atstart = 0;
          }
      }
+
+     /* 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;
+         crp = NULL;
+         }
+         else
+         *crp++ = c;
+     }
+
      if (c == '/')        /* slash separates two items */
      {
          *pp++ = '\\';
***************
*** 3611,3616 ****
--- 3773,3781 ----
      *pp++ = '$';
      *pp = NUL;
+     if (crp != NULL)
+     *crp = NUL;
+
      slang->sl_compprog = vim_regcomp(pat, RE_MAGIC + RE_STRING + RE_STRICT);
      vim_free(pat);
      if (slang->sl_compprog == NULL)
***************
*** 4915,4920 ****
--- 5080,5086 ----
  } spellinfo_T;
  static afffile_T *spell_read_aff __ARGS((spellinfo_T *spin, char_u *fname));
+ static int is_aff_rule __ARGS((char_u **items, int itemcnt, char *rulename, int     mincount));
  static void aff_process_flags __ARGS((afffile_T *affile, affentry_T *entry));
  static int spell_info_item __ARGS((char_u *s));
  static unsigned affitem2flag __ARGS((int flagtype, char_u *item, char_u    *fname, int lnum));
***************
*** 5223,5230 ****
      /* Handle non-empty lines. */
      if (itemcnt > 0)
      {
!         if (STRCMP(items[0], "SET") == 0 && itemcnt == 2
!                                && aff->af_enc == NULL)
          {
  #ifdef FEAT_MBYTE
          /* Setup for conversion from "ENC" to 'encoding'. */
--- 5389,5395 ----
      /* Handle non-empty lines. */
      if (itemcnt > 0)
      {
!         if (is_aff_rule(items, itemcnt, "SET", 2) && aff->af_enc == NULL)
          {
  #ifdef FEAT_MBYTE
          /* Setup for conversion from "ENC" to 'encoding'. */
***************
*** 5239,5245 ****
              smsg((char_u *)_("Conversion in %s not supported"), fname);
  #endif
          }
!         else if (STRCMP(items[0], "FLAG") == 0 && itemcnt == 2
                            && aff->af_flagtype == AFT_CHAR)
          {
          if (STRCMP(items[1], "long") == 0)
--- 5404,5410 ----
              smsg((char_u *)_("Conversion in %s not supported"), fname);
  #endif
          }
!         else if (is_aff_rule(items, itemcnt, "FLAG", 2)
                            && aff->af_flagtype == AFT_CHAR)
          {
          if (STRCMP(items[1], "long") == 0)
***************
*** 5284,5352 ****
              spin->si_info = p;
              }
          }
!         else if (STRCMP(items[0], "MIDWORD") == 0 && itemcnt == 2
                                 && midword == NULL)
          {
          midword = getroom_save(spin, items[1]);
          }
!         else if (STRCMP(items[0], "TRY") == 0 && itemcnt == 2)
          {
          /* ignored, we look in the tree for what chars may appear */
          }
          /* TODO: remove "RAR" later */
!         else if ((STRCMP(items[0], "RAR") == 0
!             || STRCMP(items[0], "RARE") == 0) && itemcnt == 2
!                                && aff->af_rare == 0)
          {
          aff->af_rare = affitem2flag(aff->af_flagtype, items[1],
                                   fname, lnum);
          }
          /* TODO: remove "KEP" later */
!         else if ((STRCMP(items[0], "KEP") == 0
!             || STRCMP(items[0], "KEEPCASE") == 0) && itemcnt == 2
                               && aff->af_keepcase == 0)
          {
          aff->af_keepcase = affitem2flag(aff->af_flagtype, items[1],
                                   fname, lnum);
          }
!         else if (STRCMP(items[0], "BAD") == 0 && itemcnt == 2
!                                && aff->af_bad == 0)
          {
          aff->af_bad = affitem2flag(aff->af_flagtype, items[1],
                                   fname, lnum);
          }
!         else if (STRCMP(items[0], "NEEDAFFIX") == 0 && itemcnt == 2
                              && aff->af_needaffix == 0)
          {
          aff->af_needaffix = affitem2flag(aff->af_flagtype, items[1],
                                   fname, lnum);
          }
!         else if (STRCMP(items[0], "CIRCUMFIX") == 0 && itemcnt == 2
                              && aff->af_circumfix == 0)
          {
          aff->af_circumfix = affitem2flag(aff->af_flagtype, items[1],
                                   fname, lnum);
          }
!         else if (STRCMP(items[0], "NOSUGGEST") == 0 && itemcnt == 2
                              && aff->af_nosuggest == 0)
          {
          aff->af_nosuggest = affitem2flag(aff->af_flagtype, items[1],
                                   fname, lnum);
          }
!         else if (STRCMP(items[0], "NEEDCOMPOUND") == 0 && itemcnt == 2
                               && aff->af_needcomp == 0)
          {
          aff->af_needcomp = affitem2flag(aff->af_flagtype, items[1],
                                   fname, lnum);
          }
!         else if (STRCMP(items[0], "COMPOUNDROOT") == 0 && itemcnt == 2
                               && aff->af_comproot == 0)
          {
          aff->af_comproot = affitem2flag(aff->af_flagtype, items[1],
                                   fname, lnum);
          }
!         else if (STRCMP(items[0], "COMPOUNDFORBIDFLAG") == 0
!                    && itemcnt == 2 && aff->af_compforbid == 0)
          {
          aff->af_compforbid = affitem2flag(aff->af_flagtype, items[1],
                                   fname, lnum);
--- 5449,5519 ----
              spin->si_info = p;
              }
          }
!         else if (is_aff_rule(items, itemcnt, "MIDWORD", 2)
                                 && midword == NULL)
          {
          midword = getroom_save(spin, items[1]);
          }
!         else if (is_aff_rule(items, itemcnt, "TRY", 2))
          {
          /* ignored, we look in the tree for what chars may appear */
          }
          /* TODO: remove "RAR" later */
!         else if ((is_aff_rule(items, itemcnt, "RAR", 2)
!             || is_aff_rule(items, itemcnt, "RARE", 2))
!                              && aff->af_rare == 0)
          {
          aff->af_rare = affitem2flag(aff->af_flagtype, items[1],
                                   fname, lnum);
          }
          /* TODO: remove "KEP" later */
!         else if ((is_aff_rule(items, itemcnt, "KEP", 2)
!             || is_aff_rule(items, itemcnt, "KEEPCASE", 2))
                               && aff->af_keepcase == 0)
          {
          aff->af_keepcase = affitem2flag(aff->af_flagtype, items[1],
                                   fname, lnum);
          }
!         else if ((is_aff_rule(items, itemcnt, "BAD", 2)
!             || is_aff_rule(items, itemcnt, "FORBIDDENWORD", 2))
!                               && aff->af_bad == 0)
          {
          aff->af_bad = affitem2flag(aff->af_flagtype, items[1],
                                   fname, lnum);
          }
!         else if (is_aff_rule(items, itemcnt, "NEEDAFFIX", 2)
                              && aff->af_needaffix == 0)
          {
          aff->af_needaffix = affitem2flag(aff->af_flagtype, items[1],
                                   fname, lnum);
          }
!         else if (is_aff_rule(items, itemcnt, "CIRCUMFIX", 2)
                              && aff->af_circumfix == 0)
          {
          aff->af_circumfix = affitem2flag(aff->af_flagtype, items[1],
                                   fname, lnum);
          }
!         else if (is_aff_rule(items, itemcnt, "NOSUGGEST", 2)
                              && aff->af_nosuggest == 0)
          {
          aff->af_nosuggest = affitem2flag(aff->af_flagtype, items[1],
                                   fname, lnum);
          }
!         else if ((is_aff_rule(items, itemcnt, "NEEDCOMPOUND", 2)
!             || is_aff_rule(items, itemcnt, "ONLYINCOMPOUND", 2))
                               && aff->af_needcomp == 0)
          {
          aff->af_needcomp = affitem2flag(aff->af_flagtype, items[1],
                                   fname, lnum);
          }
!         else if (is_aff_rule(items, itemcnt, "COMPOUNDROOT", 2)
                               && aff->af_comproot == 0)
          {
          aff->af_comproot = affitem2flag(aff->af_flagtype, items[1],
                                   fname, lnum);
          }
!         else if (is_aff_rule(items, itemcnt, "COMPOUNDFORBIDFLAG", 2)
!                            && aff->af_compforbid == 0)
          {
          aff->af_compforbid = affitem2flag(aff->af_flagtype, items[1],
                                   fname, lnum);
***************
*** 5354,5361 ****
              smsg((char_u *)_("Defining COMPOUNDFORBIDFLAG after PFX item may give wrong results in %s line %d"),
                  fname, lnum);
          }
!         else if (STRCMP(items[0], "COMPOUNDPERMITFLAG") == 0
!                    && itemcnt == 2 && aff->af_comppermit == 0)
          {
          aff->af_comppermit = affitem2flag(aff->af_flagtype, items[1],
                                   fname, lnum);
--- 5521,5528 ----
              smsg((char_u *)_("Defining COMPOUNDFORBIDFLAG after PFX item may give wrong results in %s line %d"),
                  fname, lnum);
          }
!         else if (is_aff_rule(items, itemcnt, "COMPOUNDPERMITFLAG", 2)
!                            && aff->af_comppermit == 0)
          {
          aff->af_comppermit = affitem2flag(aff->af_flagtype, items[1],
                                   fname, lnum);
***************
*** 5363,5369 ****
              smsg((char_u *)_("Defining COMPOUNDPERMITFLAG after PFX item may give wrong results in %s line %d"),
                  fname, lnum);
          }
!         else if (STRCMP(items[0], "COMPOUNDFLAG") == 0 && itemcnt == 2
                               && compflags == NULL)
          {
          /* Turn flag "c" into COMPOUNDRULE compatible string "c+",
--- 5530,5536 ----
              smsg((char_u *)_("Defining COMPOUNDPERMITFLAG after PFX item may give wrong results in %s line %d"),
                  fname, lnum);
          }
!         else if (is_aff_rule(items, itemcnt, "COMPOUNDFLAG", 2)
                               && compflags == NULL)
          {
          /* Turn flag "c" into COMPOUNDRULE compatible string "c+",
***************
*** 5376,5382 ****
              compflags = p;
          }
          }
!         else if (STRCMP(items[0], "COMPOUNDRULE") == 0 && itemcnt == 2)
          {
          /* Concatenate this string to previously defined ones, using a
           * slash to separate them. */
--- 5543,5557 ----
              compflags = p;
          }
          }
!         else if (is_aff_rule(items, itemcnt, "COMPOUNDRULES", 2))
!         {
!         /* We don't use the count, but do check that it's a number and
!          * not COMPOUNDRULE mistyped. */
!         if (atoi((char *)items[1]) == 0)
!             smsg((char_u *)_("Wrong COMPOUNDRULES value in %s line %d: %s"),
!                                fname, lnum, items[1]);
!         }
!         else if (is_aff_rule(items, itemcnt, "COMPOUNDRULE", 2))
          {
          /* Concatenate this string to previously defined ones, using a
           * slash to separate them. */
***************
*** 5395,5401 ****
              compflags = p;
          }
          }
!         else if (STRCMP(items[0], "COMPOUNDWORDMAX") == 0 && itemcnt == 2
                                    && compmax == 0)
          {
          compmax = atoi((char *)items[1]);
--- 5570,5576 ----
              compflags = p;
          }
          }
!         else if (is_aff_rule(items, itemcnt, "COMPOUNDWORDMAX", 2)
                                    && compmax == 0)
          {
          compmax = atoi((char *)items[1]);
***************
*** 5403,5409 ****
              smsg((char_u *)_("Wrong COMPOUNDWORDMAX value in %s line %d: %s"),
                                 fname, lnum, items[1]);
          }
!         else if (STRCMP(items[0], "COMPOUNDMIN") == 0 && itemcnt == 2
                                 && compminlen == 0)
          {
          compminlen = atoi((char *)items[1]);
--- 5578,5584 ----
              smsg((char_u *)_("Wrong COMPOUNDWORDMAX value in %s line %d: %s"),
                                 fname, lnum, items[1]);
          }
!         else if (is_aff_rule(items, itemcnt, "COMPOUNDMIN", 2)
                                 && compminlen == 0)
          {
          compminlen = atoi((char *)items[1]);
***************
*** 5411,5417 ****
              smsg((char_u *)_("Wrong COMPOUNDMIN value in %s line %d: %s"),
                                 fname, lnum, items[1]);
          }
!         else if (STRCMP(items[0], "COMPOUNDSYLMAX") == 0 && itemcnt == 2
                                 && compsylmax == 0)
          {
          compsylmax = atoi((char *)items[1]);
--- 5586,5592 ----
              smsg((char_u *)_("Wrong COMPOUNDMIN value in %s line %d: %s"),
                                 fname, lnum, items[1]);
          }
!         else if (is_aff_rule(items, itemcnt, "COMPOUNDSYLMAX", 2)
                                 && compsylmax == 0)
          {
          compsylmax = atoi((char *)items[1]);
***************
*** 5419,5450 ****
              smsg((char_u *)_("Wrong COMPOUNDSYLMAX value in %s line %d: %s"),
                                 fname, lnum, items[1]);
          }
!         else if (STRCMP(items[0], "CHECKCOMPOUNDDUP") == 0 && itemcnt == 1)
          {
          compoptions |= COMP_CHECKDUP;
          }
!         else if (STRCMP(items[0], "CHECKCOMPOUNDREP") == 0 && itemcnt == 1)
          {
          compoptions |= COMP_CHECKREP;
          }
!         else if (STRCMP(items[0], "CHECKCOMPOUNDCASE") == 0 && itemcnt == 1)
          {
          compoptions |= COMP_CHECKCASE;
          }
!         else if (STRCMP(items[0], "CHECKCOMPOUNDTRIPLE") == 0
!                                   && itemcnt == 1)
          {
          compoptions |= COMP_CHECKTRIPLE;
          }
!         else if (STRCMP(items[0], "CHECKCOMPOUNDPATTERN") == 0
!                                   && itemcnt == 2)
          {
          if (atoi((char *)items[1]) == 0)
              smsg((char_u *)_("Wrong CHECKCOMPOUNDPATTERN value in %s line %d: %s"),
                                 fname, lnum, items[1]);
          }
!         else if (STRCMP(items[0], "CHECKCOMPOUNDPATTERN") == 0
!                                   && itemcnt == 3)
          {
          garray_T    *gap = &spin->si_comppat;
          int        i;
--- 5594,5622 ----
              smsg((char_u *)_("Wrong COMPOUNDSYLMAX value in %s line %d: %s"),
                                 fname, lnum, items[1]);
          }
!         else if (is_aff_rule(items, itemcnt, "CHECKCOMPOUNDDUP", 1))
          {
          compoptions |= COMP_CHECKDUP;
          }
!         else if (is_aff_rule(items, itemcnt, "CHECKCOMPOUNDREP", 1))
          {
          compoptions |= COMP_CHECKREP;
          }
!         else if (is_aff_rule(items, itemcnt, "CHECKCOMPOUNDCASE", 1))
          {
          compoptions |= COMP_CHECKCASE;
          }
!         else if (is_aff_rule(items, itemcnt, "CHECKCOMPOUNDTRIPLE", 1))
          {
          compoptions |= COMP_CHECKTRIPLE;
          }
!         else if (is_aff_rule(items, itemcnt, "CHECKCOMPOUNDPATTERN", 2))
          {
          if (atoi((char *)items[1]) == 0)
              smsg((char_u *)_("Wrong CHECKCOMPOUNDPATTERN value in %s line %d: %s"),
                                 fname, lnum, items[1]);
          }
!         else if (is_aff_rule(items, itemcnt, "CHECKCOMPOUNDPATTERN", 3))
          {
          garray_T    *gap = &spin->si_comppat;
          int        i;
***************
*** 5463,5486 ****
                             = getroom_save(spin, items[2]);
          }
          }
!         else if (STRCMP(items[0], "SYLLABLE") == 0 && itemcnt == 2
                                && syllable == NULL)
          {
          syllable = getroom_save(spin, items[1]);
          }
!         else if (STRCMP(items[0], "NOBREAK") == 0 && itemcnt == 1)
          {
          spin->si_nobreak = TRUE;
          }
!         else if (STRCMP(items[0], "NOSPLITSUGS") == 0 && itemcnt == 1)
          {
          spin->si_nosplitsugs = TRUE;
          }
!         else if (STRCMP(items[0], "NOSUGFILE") == 0 && itemcnt == 1)
          {
          spin->si_nosugfile = TRUE;
          }
!         else if (STRCMP(items[0], "PFXPOSTPONE") == 0 && itemcnt == 1)
          {
          aff->af_pfxpostpone = TRUE;
          }
--- 5635,5658 ----
                             = getroom_save(spin, items[2]);
          }
          }
!         else if (is_aff_rule(items, itemcnt, "SYLLABLE", 2)
                                && syllable == NULL)
          {
          syllable = getroom_save(spin, items[1]);
          }
!         else if (is_aff_rule(items, itemcnt, "NOBREAK", 1))
          {
          spin->si_nobreak = TRUE;
          }
!         else if (is_aff_rule(items, itemcnt, "NOSPLITSUGS", 1))
          {
          spin->si_nosplitsugs = TRUE;
          }
!         else if (is_aff_rule(items, itemcnt, "NOSUGFILE", 1))
          {
          spin->si_nosugfile = TRUE;
          }
!         else if (is_aff_rule(items, itemcnt, "PFXPOSTPONE", 1))
          {
          aff->af_pfxpostpone = TRUE;
          }
***************
*** 5771,5794 ****
              }
          }
          }
!         else if (STRCMP(items[0], "FOL") == 0 && itemcnt == 2
!                                    && fol == NULL)
          {
          fol = vim_strsave(items[1]);
          }
!         else if (STRCMP(items[0], "LOW") == 0 && itemcnt == 2
!                                    && low == NULL)
          {
          low = vim_strsave(items[1]);
          }
!         else if (STRCMP(items[0], "UPP") == 0 && itemcnt == 2
!                                    && upp == NULL)
          {
          upp = vim_strsave(items[1]);
          }
!         else if ((STRCMP(items[0], "REP") == 0
!             || STRCMP(items[0], "REPSAL") == 0)
!             && itemcnt == 2)
          {
          /* Ignore REP/REPSAL count */;
          if (!isdigit(*items[1]))
--- 5943,5962 ----
              }
          }
          }
!         else if (is_aff_rule(items, itemcnt, "FOL", 2) && fol == NULL)
          {
          fol = vim_strsave(items[1]);
          }
!         else if (is_aff_rule(items, itemcnt, "LOW", 2) && low == NULL)
          {
          low = vim_strsave(items[1]);
          }
!         else if (is_aff_rule(items, itemcnt, "UPP", 2) && upp == NULL)
          {
          upp = vim_strsave(items[1]);
          }
!         else if (is_aff_rule(items, itemcnt, "REP", 2)
!              || is_aff_rule(items, itemcnt, "REPSAL", 2))
          {
          /* Ignore REP/REPSAL count */;
          if (!isdigit(*items[1]))
***************
*** 5819,5825 ****
                       : &spin->si_rep, items[1], items[2]);
          }
          }
!         else if (STRCMP(items[0], "MAP") == 0 && itemcnt == 2)
          {
          /* MAP item or count */
          if (!found_map)
--- 5987,5993 ----
                       : &spin->si_rep, items[1], items[2]);
          }
          }
!         else if (is_aff_rule(items, itemcnt, "MAP", 2))
          {
          /* MAP item or count */
          if (!found_map)
***************
*** 5856,5864 ****
              ga_append(&spin->si_map, '/');
          }
          }
!         /* Accept "SAL from to" and "SAL from to # comment". */
!         else if (STRCMP(items[0], "SAL") == 0
!             && (itemcnt == 3 || (itemcnt > 3 && items[3][0] == '#')))
          {
          if (do_sal)
          {
--- 6024,6031 ----
              ga_append(&spin->si_map, '/');
          }
          }
!         /* Accept "SAL from to" and "SAL from to  #comment". */
!         else if (is_aff_rule(items, itemcnt, "SAL", 3))
          {
          if (do_sal)
          {
***************
*** 5877,5888 ****
                                  : items[2]);
          }
          }
!         else if (STRCMP(items[0], "SOFOFROM") == 0 && itemcnt == 2
                                && sofofrom == NULL)
          {
          sofofrom = getroom_save(spin, items[1]);
          }
!         else if (STRCMP(items[0], "SOFOTO") == 0 && itemcnt == 2
                                  && sofoto == NULL)
          {
          sofoto = getroom_save(spin, items[1]);
--- 6044,6055 ----
                                  : items[2]);
          }
          }
!         else if (is_aff_rule(items, itemcnt, "SOFOFROM", 2)
                                && sofofrom == NULL)
          {
          sofofrom = getroom_save(spin, items[1]);
          }
!         else if (is_aff_rule(items, itemcnt, "SOFOTO", 2)
                                  && sofoto == NULL)
          {
          sofoto = getroom_save(spin, items[1]);
***************
*** 6017,6022 ****
--- 6184,6205 ----
  }
  /*
+  * Return TRUE when items[0] equals "rulename", there are "mincount" items or
+  * a comment is following after item "mincount".
+  */
+     static int
+ is_aff_rule(items, itemcnt, rulename, mincount)
+     char_u    **items;
+     int        itemcnt;
+     char    *rulename;
+     int        mincount;
+ {
+     return (STRCMP(items[0], rulename) == 0
+         && (itemcnt == mincount
+         || (itemcnt > mincount && items[mincount][0] == '#')));
+ }
+
+ /*
   * For affix "entry" move COMPOUNDFORBIDFLAG and COMPOUNDPERMITFLAG from
   * ae_flags to ae_comppermit and ae_compforbid.
   */
***************
*** 11492,11506 ****
              vim_strncpy(preword + sp->ts_prewordlen,
                  tword + sp->ts_splitoff,
                  sp->ts_twordlen - sp->ts_splitoff);
!             p = preword;
!             while (*skiptowhite(p) != NUL)
!             p = skipwhite(skiptowhite(p));
!             if (fword_ends && !can_compound(slang, p,
!                         compflags + sp->ts_compsplit))
!             /* Compound is not allowed.  But it may still be
!              * possible if we add another (short) word. */
              compound_ok = FALSE;
              /* Get pointer to last char of previous word. */
              p = preword + sp->ts_prewordlen;
              mb_ptr_back(preword, p);
--- 11675,11698 ----
              vim_strncpy(preword + sp->ts_prewordlen,
                  tword + sp->ts_splitoff,
                  sp->ts_twordlen - sp->ts_splitoff);
!
!             /* Verify CHECKCOMPOUNDPATTERN  rules. */
!             if (match_checkcompoundpattern(preword,  sp->ts_prewordlen,
!                               &slang->sl_comppat))
              compound_ok = FALSE;
+             if (compound_ok)
+             {
+             p = preword;
+             while (*skiptowhite(p) != NUL)
+                 p = skipwhite(skiptowhite(p));
+             if (fword_ends && !can_compound(slang, p,
+                         compflags + sp->ts_compsplit))
+                 /* Compound is not allowed.  But it may still be
+                  * possible if we add another (short) word. */
+                 compound_ok = FALSE;
+             }
+
              /* Get pointer to last char of previous word. */
              p = preword + sp->ts_prewordlen;
              mb_ptr_back(preword, p);
***************
*** 11697,11706 ****
              && (slang->sl_compsylmax < MAXWLEN
                  || sp->ts_complen + 1 - sp->ts_compsplit
                                < slang->sl_compmax)
!             && (byte_in_str(sp->ts_complen == sp->ts_compsplit
!                         ? slang->sl_compstartflags
!                         : slang->sl_compallflags,
!                             ((unsigned)flags >> 24))))
          {
              try_compound = TRUE;
              compflags[sp->ts_complen] = ((unsigned)flags >> 24);
--- 11889,11897 ----
              && (slang->sl_compsylmax < MAXWLEN
                  || sp->ts_complen + 1 - sp->ts_compsplit
                                < slang->sl_compmax)
!             && (can_be_compound(sp, slang,
!                      compflags, ((unsigned)flags >> 24))))
!
          {
              try_compound = TRUE;
              compflags[sp->ts_complen] = ((unsigned)flags >> 24);
*** ../vim-7.2.059/src/version.c    Sun Nov 30 15:15:56 2008
--- src/version.c    Sun Nov 30 21:09:23 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     60,
  /**/
--
DEAD PERSON:  I'm getting better!
CUSTOMER:     No, you're not -- you'll be stone dead in a moment.
MORTICIAN:    Oh, I can't take him like that -- it's against regulations.
                                  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/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.061
New file
@@ -0,0 +1,56 @@
To: vim-dev@vim.org
Subject: Patch 7.2.061
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.061
Problem:    Can't create a funcref for an autoload function without loading
        the script first. (Marc Weber)
Solution:   Accept autoload functions that don't exist yet in function().
Files:        src/eval.c
*** ../vim-7.2.060/src/eval.c    Fri Nov 28 21:26:50 2008
--- src/eval.c    Sat Nov 29 12:28:51 2008
***************
*** 10339,10345 ****
      s = get_tv_string(&argvars[0]);
      if (s == NULL || *s == NUL || VIM_ISDIGIT(*s))
      EMSG2(_(e_invarg2), s);
!     else if (!function_exists(s))
      EMSG2(_("E700: Unknown function: %s"), s);
      else
      {
--- 10339,10346 ----
      s = get_tv_string(&argvars[0]);
      if (s == NULL || *s == NUL || VIM_ISDIGIT(*s))
      EMSG2(_(e_invarg2), s);
!     /* Don't check an autoload name for existence here. */
!     else if (vim_strchr(s, AUTOLOAD_CHAR) == NULL && !function_exists(s))
      EMSG2(_("E700: Unknown function: %s"), s);
      else
      {
*** ../vim-7.2.060/src/version.c    Sun Nov 30 21:11:54 2008
--- src/version.c    Wed Dec  3 09:49:07 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     61,
  /**/
--
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/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.062
New file
@@ -0,0 +1,55 @@
To: vim-dev@vim.org
Subject: Patch 7.2.062
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.062
Problem:    "[Scratch]" is not translated.
Solution:   Mark the string for translation. (Dominique Pelle)
Files:        src/buffer.c
*** ../vim-7.2.061/src/buffer.c    Sat Nov 15 16:05:30 2008
--- src/buffer.c    Tue Dec  2 21:51:02 2008
***************
*** 5118,5124 ****
      {
      if (buf->b_sfname != NULL)
          return (char *)buf->b_sfname;
!     return "[Scratch]";
      }
  #endif
      if (buf->b_fname == NULL)
--- 5118,5124 ----
      {
      if (buf->b_sfname != NULL)
          return (char *)buf->b_sfname;
!     return _("[Scratch]");
      }
  #endif
      if (buf->b_fname == NULL)
*** ../vim-7.2.061/src/version.c    Wed Dec  3 09:51:19 2008
--- src/version.c    Wed Dec  3 11:20:30 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     62,
  /**/
--
DENNIS:  Listen -- strange women lying in ponds distributing swords is no
         basis for a system of government.  Supreme executive power derives
         from a mandate from the masses, not from some farcical aquatic
         ceremony.
                                  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/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.063
New file
@@ -0,0 +1,103 @@
To: vim-dev@vim.org
Subject: Patch 7.2.063
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.063
Problem:    Warning for NULL argument of Perl_sys_init3().
Solution:   Use Perl_sys_init() instead. (partly by Dominique Pelle)
Files:        src/if_perl.xs
*** ../vim-7.2.062/src/if_perl.xs    Mon Sep  1 17:56:05 2008
--- src/if_perl.xs    Wed Dec  3 12:44:38 2008
***************
*** 166,172 ****
  # define Perl_Isv_yes_ptr dll_Perl_Isv_yes_ptr
  # define boot_DynaLoader dll_boot_DynaLoader
! # define Perl_sys_init3 dll_Perl_sys_init3
  # define Perl_sys_term dll_Perl_sys_term
  # define Perl_ISv_ptr dll_Perl_ISv_ptr
  # define Perl_Istack_max_ptr dll_Perl_Istack_max_ptr
--- 166,172 ----
  # define Perl_Isv_yes_ptr dll_Perl_Isv_yes_ptr
  # define boot_DynaLoader dll_boot_DynaLoader
! # define Perl_sys_init dll_Perl_sys_init
  # define Perl_sys_term dll_Perl_sys_term
  # define Perl_ISv_ptr dll_Perl_ISv_ptr
  # define Perl_Istack_max_ptr dll_Perl_Istack_max_ptr
***************
*** 272,278 ****
  #if (PERL_REVISION == 5) && (PERL_VERSION >= 10)
  static void (*Perl_sv_free2)(pTHX_ SV*);
! static void (*Perl_sys_init3)(int* argc, char*** argv, char*** env);
  static void (*Perl_sys_term)(void);
  static SV** (*Perl_ISv_ptr)(register PerlInterpreter*);
  static SV*** (*Perl_Istack_max_ptr)(register PerlInterpreter*);
--- 272,278 ----
  #if (PERL_REVISION == 5) && (PERL_VERSION >= 10)
  static void (*Perl_sv_free2)(pTHX_ SV*);
! static void (*Perl_sys_init)(int* argc, char*** argv);
  static void (*Perl_sys_term)(void);
  static SV** (*Perl_ISv_ptr)(register PerlInterpreter*);
  static SV*** (*Perl_Istack_max_ptr)(register PerlInterpreter*);
***************
*** 372,378 ****
      {"Perl_Tna_ptr", (PERL_PROC*)&Perl_Tna_ptr},
  #else
      {"Perl_sv_free2", (PERL_PROC*)&Perl_sv_free2},
!     {"Perl_sys_init3", (PERL_PROC*)&Perl_sys_init3},
      {"Perl_sys_term", (PERL_PROC*)&Perl_sys_term},
      {"Perl_ISv_ptr", (PERL_PROC*)&Perl_ISv_ptr},
      {"Perl_Istack_sp_ptr", (PERL_PROC*)&Perl_Istack_sp_ptr},
--- 372,378 ----
      {"Perl_Tna_ptr", (PERL_PROC*)&Perl_Tna_ptr},
  #else
      {"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_ISv_ptr", (PERL_PROC*)&Perl_ISv_ptr},
      {"Perl_Istack_sp_ptr", (PERL_PROC*)&Perl_Istack_sp_ptr},
***************
*** 460,466 ****
      static char *argv[] = { "", "-e", "" };
  #if (PERL_REVISION == 5) && (PERL_VERSION >= 10)
!     Perl_sys_init3(&argc, (char***)&argv, NULL);
  #endif
      perl_interp = perl_alloc();
      perl_construct(perl_interp);
--- 460,466 ----
      static char *argv[] = { "", "-e", "" };
  #if (PERL_REVISION == 5) && (PERL_VERSION >= 10)
!     Perl_sys_init(&argc, (char***)&argv);
  #endif
      perl_interp = perl_alloc();
      perl_construct(perl_interp);
*** ../vim-7.2.062/src/version.c    Wed Dec  3 11:21:20 2008
--- src/version.c    Wed Dec  3 12:42:50 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     63,
  /**/
--
Windows
M!uqoms
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.064
New file
@@ -0,0 +1,66 @@
To: vim-dev@vim.org
Subject: Patch 7.2.064
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.064
Problem:    Screen update bug when repeating "~" on a Visual block and the
        last line doesn't change.
Solution:   Keep track of changes for all lines.  (Moritz Orbach)
Files:        src/ops.c
*** ../vim-7.2.063/src/ops.c    Tue Jun 24 23:59:55 2008
--- src/ops.c    Wed Dec  3 13:12:06 2008
***************
*** 2209,2220 ****
      {
      for (; pos.lnum <= oap->end.lnum; ++pos.lnum)
      {
          block_prep(oap, &bd, pos.lnum, FALSE);
          pos.col = bd.textcol;
!         did_change = swapchars(oap->op_type, &pos, bd.textlen);
  # ifdef FEAT_NETBEANS_INTG
!         if (usingNetbeans && did_change)
          {
          char_u *ptr = ml_get_buf(curbuf, pos.lnum, FALSE);
--- 2209,2223 ----
      {
      for (; pos.lnum <= oap->end.lnum; ++pos.lnum)
      {
+         int one_change;
+
          block_prep(oap, &bd, pos.lnum, FALSE);
          pos.col = bd.textcol;
!         one_change = swapchars(oap->op_type, &pos, bd.textlen);
!         did_change |= one_change;
  # ifdef FEAT_NETBEANS_INTG
!         if (usingNetbeans && one_change)
          {
          char_u *ptr = ml_get_buf(curbuf, pos.lnum, FALSE);
*** ../vim-7.2.063/src/version.c    Wed Dec  3 13:18:16 2008
--- src/version.c    Wed Dec  3 13:14:46 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     64,
  /**/
--
Q:   How many hardware engineers does it take to change a lightbulb?
A:   None.  We'll fix it in software.
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.065
New file
@@ -0,0 +1,177 @@
To: vim-dev@vim.org
Subject: Patch 7.2.065
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.065
Problem:    GTK GUI: the cursor disappears when doing ":vsp" and the Vim
        window is maximized.  (Dominique Pelle, Denis Smolyar)
Solution:   Don't change "Columns" back to an old value at a wrong moment.
        Do change "Rows" when it should not be a problem.
Files:        src/gui.c
*** ../vim-7.2.064/src/gui.c    Fri Nov 28 21:26:50 2008
--- src/gui.c    Wed Dec  3 18:01:21 2008
***************
*** 3241,3247 ****
          i = Rows;
          gui_update_tabline();
          Rows = i;
!         need_set_size = RESIZE_VERT;
          if (using_tabline)
          fix_size = TRUE;
          if (!gui_use_tabline())
--- 3241,3247 ----
          i = Rows;
          gui_update_tabline();
          Rows = i;
!         need_set_size |= RESIZE_VERT;
          if (using_tabline)
          fix_size = TRUE;
          if (!gui_use_tabline())
***************
*** 3275,3283 ****
          if (gui.which_scrollbars[i] != prev_which_scrollbars[i])
          {
              if (i == SBAR_BOTTOM)
!             need_set_size = RESIZE_VERT;
              else
!             need_set_size = RESIZE_HOR;
              if (gui.which_scrollbars[i])
              fix_size = TRUE;
          }
--- 3275,3283 ----
          if (gui.which_scrollbars[i] != prev_which_scrollbars[i])
          {
              if (i == SBAR_BOTTOM)
!             need_set_size |= RESIZE_VERT;
              else
!             need_set_size |= RESIZE_HOR;
              if (gui.which_scrollbars[i])
              fix_size = TRUE;
          }
***************
*** 3297,3303 ****
          gui_mch_enable_menu(gui.menu_is_active);
          Rows = i;
          prev_menu_is_active = gui.menu_is_active;
!         need_set_size = RESIZE_VERT;
          if (gui.menu_is_active)
          fix_size = TRUE;
      }
--- 3297,3303 ----
          gui_mch_enable_menu(gui.menu_is_active);
          Rows = i;
          prev_menu_is_active = gui.menu_is_active;
!         need_set_size |= RESIZE_VERT;
          if (gui.menu_is_active)
          fix_size = TRUE;
      }
***************
*** 3308,3314 ****
      {
          gui_mch_show_toolbar(using_toolbar);
          prev_toolbar = using_toolbar;
!         need_set_size = RESIZE_VERT;
          if (using_toolbar)
          fix_size = TRUE;
      }
--- 3308,3314 ----
      {
          gui_mch_show_toolbar(using_toolbar);
          prev_toolbar = using_toolbar;
!         need_set_size |= RESIZE_VERT;
          if (using_toolbar)
          fix_size = TRUE;
      }
***************
*** 3318,3324 ****
      {
          gui_mch_enable_footer(using_footer);
          prev_footer = using_footer;
!         need_set_size = RESIZE_VERT;
          if (using_footer)
          fix_size = TRUE;
      }
--- 3318,3324 ----
      {
          gui_mch_enable_footer(using_footer);
          prev_footer = using_footer;
!         need_set_size |= RESIZE_VERT;
          if (using_footer)
          fix_size = TRUE;
      }
***************
*** 3330,3339 ****
          prev_tearoff = using_tearoff;
      }
  #endif
!     if (need_set_size)
      {
  #ifdef FEAT_GUI_GTK
!         long    c = Columns;
  #endif
          /* Adjust the size of the window to make the text area keep the
           * same size and to avoid that part of our window is off-screen
--- 3330,3340 ----
          prev_tearoff = using_tearoff;
      }
  #endif
!     if (need_set_size != 0)
      {
  #ifdef FEAT_GUI_GTK
!         long    prev_Columns = Columns;
!         long    prev_Rows = Rows;
  #endif
          /* Adjust the size of the window to make the text area keep the
           * same size and to avoid that part of our window is off-screen
***************
*** 3349,3359 ****
           * If you remove this, please test this command for resizing
           * effects (with optional left scrollbar): ":vsp|q|vsp|q|vsp|q".
           * Don't do this while starting up though.
!          * And don't change Rows, it may have be reduced intentionally
!          * when adding menu/toolbar/tabline. */
!         if (!gui.starting)
          (void)char_avail();
!         Columns = c;
  #endif
      }
  #ifdef FEAT_WINDOWS
--- 3350,3363 ----
           * If you remove this, please test this command for resizing
           * effects (with optional left scrollbar): ":vsp|q|vsp|q|vsp|q".
           * Don't do this while starting up though.
!          * Don't change Rows when adding menu/toolbar/tabline.
!          * Don't change Columns when adding vertical toolbar. */
!         if (!gui.starting && need_set_size != (RESIZE_VERT | RESIZE_HOR))
          (void)char_avail();
!         if ((need_set_size & RESIZE_VERT) == 0)
!         Rows = prev_Rows;
!         if ((need_set_size & RESIZE_HOR) == 0)
!         Columns = prev_Columns;
  #endif
      }
  #ifdef FEAT_WINDOWS
*** ../vim-7.2.064/src/version.c    Wed Dec  3 13:38:00 2008
--- src/version.c    Wed Dec  3 18:47:11 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     65,
  /**/
--
Seen on the back of a biker's vest: If you can read this, my wife fell off.
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.066
New file
@@ -0,0 +1,70 @@
To: vim-dev@vim.org
Subject: Patch 7.2.066
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.066
Problem:    It's not easy to see whether 'encoding' is a multi-byte encoding.
Solution:   Add has('multi_byte_encoding').
Files:        runtime/doc/eval.txt, src/eval.c
*** ../vim-7.2.065/runtime/doc/eval.txt    Fri Nov 28 11:15:10 2008
--- runtime/doc/eval.txt    Tue Dec  9 10:55:59 2008
***************
*** 5841,5847 ****
  mouse_pterm        Compiled with support for qnx pterm mouse.
  mouse_sysmouse        Compiled with support for sysmouse (*BSD console mouse)
  mouse_xterm        Compiled with support for xterm mouse.
! multi_byte        Compiled with support for editing Korean et al.
  multi_byte_ime        Compiled with support for IME input method.
  multi_lang        Compiled with support for multiple languages.
  mzscheme        Compiled with MzScheme interface |mzscheme|.
--- 5852,5859 ----
  mouse_pterm        Compiled with support for qnx pterm mouse.
  mouse_sysmouse        Compiled with support for sysmouse (*BSD console mouse)
  mouse_xterm        Compiled with support for xterm mouse.
! multi_byte        Compiled with support for 'encoding'
! multi_byte_encoding    'encoding' is set to a multi-byte encoding.
  multi_byte_ime        Compiled with support for IME input method.
  multi_lang        Compiled with support for multiple languages.
  mzscheme        Compiled with MzScheme interface |mzscheme|.
*** ../vim-7.2.065/src/eval.c    Wed Dec  3 09:51:19 2008
--- src/eval.c    Wed Dec  3 14:29:09 2008
***************
*** 11842,11847 ****
--- 11842,11851 ----
          n = has_patch(atoi((char *)name + 5));
      else if (STRICMP(name, "vim_starting") == 0)
          n = (starting != 0);
+ #ifdef FEAT_MBYTE
+     else if (STRICMP(name, "multi_byte_encoding") == 0)
+         n = has_mbyte;
+ #endif
  #if defined(FEAT_BEVAL) && defined(FEAT_GUI_W32)
      else if (STRICMP(name, "balloon_multiline") == 0)
          n = multiline_balloon_available();
*** ../vim-7.2.065/src/version.c    Wed Dec  3 18:50:09 2008
--- src/version.c    Tue Dec  9 10:48:49 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     66,
  /**/
--
ARTHUR: Listen, old crone!  Unless you tell us where we can buy a shrubbery,
        my friend and I will ... we will say "Ni!"
CRONE:  Do your worst!
                 "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/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.067
New file
@@ -0,0 +1,52 @@
To: vim-dev@vim.org
Subject: Patch 7.2.067
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.067
Problem:    Session file can't load extra file when the path contains special
        characters.
Solution:   Escape the file name. (Lech Lorens)
Files:        src/ex_docmd.c
*** ../vim-7.2.066/src/ex_docmd.c    Fri Nov 28 21:26:50 2008
--- src/ex_docmd.c    Fri Dec  5 21:34:11 2008
***************
*** 10106,10112 ****
       */
      if (put_line(fd, "let s:sx = expand(\"<sfile>:p:r\").\"x.vim\"") == FAIL
          || put_line(fd, "if file_readable(s:sx)") == FAIL
!         || put_line(fd, "  exe \"source \" . s:sx") == FAIL
          || put_line(fd, "endif") == FAIL)
      return FAIL;
--- 10106,10112 ----
       */
      if (put_line(fd, "let s:sx = expand(\"<sfile>:p:r\").\"x.vim\"") == FAIL
          || put_line(fd, "if file_readable(s:sx)") == FAIL
!         || put_line(fd, "  exe \"source \" . fnameescape(s:sx)") == FAIL
          || put_line(fd, "endif") == FAIL)
      return FAIL;
*** ../vim-7.2.066/src/version.c    Tue Dec  9 10:56:50 2008
--- src/version.c    Tue Dec  9 11:16:27 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     67,
  /**/
--
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/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.068
New file
@@ -0,0 +1,101 @@
To: vim-dev@vim.org
Subject: Patch 7.2.068
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.068
Problem:    Emacs tags file lines can be too long, resulting in an error
        message. (James Vega)
Solution:   Ignore lines with errors if they are too long.
Files:        src/tag.c
*** ../vim-7.2.067/src/tag.c    Fri Jul 18 11:26:12 2008
--- src/tag.c    Sat Dec  6 13:54:33 2008
***************
*** 2725,2731 ****
--- 2725,2748 ----
       */
      p_7f = vim_strchr(lbuf, 0x7f);
      if (p_7f == NULL)
+     {
+ etag_fail:
+         if (vim_strchr(lbuf, '\n') == NULL)
+         {
+         /* Truncated line.  Ignore it. */
+         if (p_verbose >= 5)
+         {
+             verbose_enter();
+             MSG(_("Ignoring long line in tags file"));
+             verbose_leave();
+         }
+         tagp->command = lbuf;
+         tagp->tagname = lbuf;
+         tagp->tagname_end = lbuf;
+         return OK;
+         }
          return FAIL;
+     }
      /* Find ^A.  If not found the line number is after the 0x7f */
      p = vim_strchr(p_7f, Ctrl_A);
***************
*** 2735,2741 ****
          ++p;
      if (!VIM_ISDIGIT(*p))        /* check for start of line number */
!         return FAIL;
      tagp->command = p;
--- 2752,2758 ----
          ++p;
      if (!VIM_ISDIGIT(*p))        /* check for start of line number */
!         goto etag_fail;
      tagp->command = p;
***************
*** 2749,2755 ****
          /* find end of tagname */
          for (p = p_7f - 1; !vim_iswordc(*p); --p)
          if (p == lbuf)
!             return FAIL;
          tagp->tagname_end = p + 1;
          while (p >= lbuf && vim_iswordc(*p))
          --p;
--- 2766,2772 ----
          /* find end of tagname */
          for (p = p_7f - 1; !vim_iswordc(*p); --p)
          if (p == lbuf)
!             goto etag_fail;
          tagp->tagname_end = p + 1;
          while (p >= lbuf && vim_iswordc(*p))
          --p;
*** ../vim-7.2.067/src/version.c    Tue Dec  9 11:17:23 2008
--- src/version.c    Tue Dec  9 12:05:41 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     68,
  /**/
--
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/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.069
New file
@@ -0,0 +1,52 @@
To: vim-dev@vim.org
Subject: Patch 7.2.069
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.069 (after 7.2.060)
Problem:    Compiler warning for storing size_t in int.
Solution:   Add type cast.
Files:      src/spell.c
*** ../vim-7.2.068/src/spell.c    Sun Nov 30 21:11:54 2008
--- src/spell.c    Tue Dec  9 22:19:04 2008
***************
*** 1765,1771 ****
          /* Second part matches at start of following compound word, now
           * check if first part matches at end of previous word. */
          p = ((char_u **)gap->ga_data)[i];
!         len = STRLEN(p);
          if (len <= wlen && STRNCMP(ptr + wlen - len, p, len) == 0)
          return TRUE;
      }
--- 1765,1771 ----
          /* Second part matches at start of following compound word, now
           * check if first part matches at end of previous word. */
          p = ((char_u **)gap->ga_data)[i];
!         len = (int)STRLEN(p);
          if (len <= wlen && STRNCMP(ptr + wlen - len, p, len) == 0)
          return TRUE;
      }
*** ../vim-7.2.068/src/version.c    Tue Dec  9 12:12:31 2008
--- src/version.c    Tue Dec  9 22:21:15 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     69,
  /**/
--
The war between Emacs and Vi is over.  Vi has won with 3 to 1.
            http://www.ssc.com/lg/issue30/raymond.html
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.070
New file
@@ -0,0 +1,566 @@
To: vim-dev@vim.org
Subject: Patch 7.2.070
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.070
Problem:    Crash when a function returns a:000. (Matt Wozkiski)
Solution:   Don't put the function struct on the stack, allocate it.  Free it
        only when nothing in it is used.
Files:        src/eval.c
*** ../vim-7.2.069/src/eval.c    Tue Dec  9 10:56:50 2008
--- src/eval.c    Wed Dec 17 21:32:26 2008
***************
*** 32,37 ****
--- 32,40 ----
  #define DICT_MAXNEST 100    /* maximum nesting of lists and dicts */
+ #define DO_NOT_FREE_CNT 99999    /* refcount for dict or list that should not
+                    be freed. */
+
  /*
   * In a hashtab item "hi_key" points to "di_key" in a dictitem.
   * This avoids adding a pointer to the hashtab item.
***************
*** 789,794 ****
--- 792,799 ----
  static void func_unref __ARGS((char_u *name));
  static void func_ref __ARGS((char_u *name));
  static void call_user_func __ARGS((ufunc_T *fp, int argcount, typval_T *argvars, typval_T *rettv, linenr_T firstline, linenr_T lastline, dict_T *selfdict));
+ static int can_free_funccal __ARGS((funccall_T *fc, int copyID)) ;
+ static void free_funccal __ARGS((funccall_T *fc, int free_val));
  static void add_nr_var __ARGS((dict_T *dp, dictitem_T *v, char *name, varnumber_T nr));
  static win_T *find_win_by_nr __ARGS((typval_T *vp, tabpage_T *tp));
  static void getwinvar __ARGS((typval_T *argvars, typval_T *rettv, int off));
***************
*** 923,928 ****
--- 928,937 ----
  /* pointer to funccal for currently active function */
  funccall_T *current_funccal = NULL;
+ /* pointer to list of previously used funccal, still around because some
+  * item in it is still being used. */
+ funccall_T *previous_funccal = NULL;
+
  /*
   * Return TRUE when a function was ended by a ":return" command.
   */
***************
*** 6490,6496 ****
      buf_T    *buf;
      win_T    *wp;
      int        i;
!     funccall_T    *fc;
      int        did_free = FALSE;
  #ifdef FEAT_WINDOWS
      tabpage_T    *tp;
--- 6499,6505 ----
      buf_T    *buf;
      win_T    *wp;
      int        i;
!     funccall_T    *fc, **pfc;
      int        did_free = FALSE;
  #ifdef FEAT_WINDOWS
      tabpage_T    *tp;
***************
*** 6574,6579 ****
--- 6583,6602 ----
      else
          ll = ll->lv_used_next;
+     /* check if any funccal can be freed now */
+     for (pfc = &previous_funccal; *pfc != NULL; )
+     {
+     if (can_free_funccal(*pfc, copyID))
+     {
+         fc = *pfc;
+         *pfc = fc->caller;
+         free_funccal(fc, TRUE);
+         did_free = TRUE;
+     }
+     else
+         pfc = &(*pfc)->caller;
+     }
+
      return did_free;
  }
***************
*** 18962,18968 ****
      dictitem_T    *dict_var;
  {
      hash_init(&dict->dv_hashtab);
!     dict->dv_refcount = 99999;
      dict_var->di_tv.vval.v_dict = dict;
      dict_var->di_tv.v_type = VAR_DICT;
      dict_var->di_tv.v_lock = VAR_FIXED;
--- 18985,18991 ----
      dictitem_T    *dict_var;
  {
      hash_init(&dict->dv_hashtab);
!     dict->dv_refcount = DO_NOT_FREE_CNT;
      dict_var->di_tv.vval.v_dict = dict;
      dict_var->di_tv.v_type = VAR_DICT;
      dict_var->di_tv.v_lock = VAR_FIXED;
***************
*** 19299,19304 ****
--- 19322,19329 ----
   * Copy the values from typval_T "from" to typval_T "to".
   * When needed allocates string or increases reference count.
   * Does not make a copy of a list or dict but copies the reference!
+  * It is OK for "from" and "to" to point to the same item.  This is used to
+  * make a copy later.
   */
      static void
  copy_tv(from, to)
***************
*** 21111,21117 ****
      char_u    *save_sourcing_name;
      linenr_T    save_sourcing_lnum;
      scid_T    save_current_SID;
!     funccall_T    fc;
      int        save_did_emsg;
      static int    depth = 0;
      dictitem_T    *v;
--- 21136,21142 ----
      char_u    *save_sourcing_name;
      linenr_T    save_sourcing_lnum;
      scid_T    save_current_SID;
!     funccall_T    *fc;
      int        save_did_emsg;
      static int    depth = 0;
      dictitem_T    *v;
***************
*** 21137,21172 ****
      line_breakcheck();        /* check for CTRL-C hit */
!     fc.caller = current_funccal;
!     current_funccal = &fc;
!     fc.func = fp;
!     fc.rettv = rettv;
      rettv->vval.v_number = 0;
!     fc.linenr = 0;
!     fc.returned = FALSE;
!     fc.level = ex_nesting_level;
      /* Check if this function has a breakpoint. */
!     fc.breakpoint = dbg_find_breakpoint(FALSE, fp->uf_name, (linenr_T)0);
!     fc.dbg_tick = debug_tick;
      /*
!      * Note about using fc.fixvar[]: This is an array of FIXVAR_CNT variables
       * with names up to VAR_SHORT_LEN long.  This avoids having to alloc/free
       * each argument variable and saves a lot of time.
       */
      /*
       * Init l: variables.
       */
!     init_var_dict(&fc.l_vars, &fc.l_vars_var);
      if (selfdict != NULL)
      {
      /* Set l:self to "selfdict".  Use "name" to avoid a warning from
       * some compiler that checks the destination size. */
!     v = &fc.fixvar[fixvar_idx++].var;
      name = v->di_key;
      STRCPY(name, "self");
      v->di_flags = DI_FLAGS_RO + DI_FLAGS_FIX;
!     hash_add(&fc.l_vars.dv_hashtab, DI2HIKEY(v));
      v->di_tv.v_type = VAR_DICT;
      v->di_tv.v_lock = 0;
      v->di_tv.vval.v_dict = selfdict;
--- 21162,21198 ----
      line_breakcheck();        /* check for CTRL-C hit */
!     fc = (funccall_T *)alloc(sizeof(funccall_T));
!     fc->caller = current_funccal;
!     current_funccal = fc;
!     fc->func = fp;
!     fc->rettv = rettv;
      rettv->vval.v_number = 0;
!     fc->linenr = 0;
!     fc->returned = FALSE;
!     fc->level = ex_nesting_level;
      /* Check if this function has a breakpoint. */
!     fc->breakpoint = dbg_find_breakpoint(FALSE, fp->uf_name, (linenr_T)0);
!     fc->dbg_tick = debug_tick;
      /*
!      * Note about using fc->fixvar[]: This is an array of FIXVAR_CNT variables
       * with names up to VAR_SHORT_LEN long.  This avoids having to alloc/free
       * each argument variable and saves a lot of time.
       */
      /*
       * Init l: variables.
       */
!     init_var_dict(&fc->l_vars, &fc->l_vars_var);
      if (selfdict != NULL)
      {
      /* Set l:self to "selfdict".  Use "name" to avoid a warning from
       * some compiler that checks the destination size. */
!     v = &fc->fixvar[fixvar_idx++].var;
      name = v->di_key;
      STRCPY(name, "self");
      v->di_flags = DI_FLAGS_RO + DI_FLAGS_FIX;
!     hash_add(&fc->l_vars.dv_hashtab, DI2HIKEY(v));
      v->di_tv.v_type = VAR_DICT;
      v->di_tv.v_lock = 0;
      v->di_tv.vval.v_dict = selfdict;
***************
*** 21178,21208 ****
       * Set a:0 to "argcount".
       * Set a:000 to a list with room for the "..." arguments.
       */
!     init_var_dict(&fc.l_avars, &fc.l_avars_var);
!     add_nr_var(&fc.l_avars, &fc.fixvar[fixvar_idx++].var, "0",
                  (varnumber_T)(argcount - fp->uf_args.ga_len));
      /* Use "name" to avoid a warning from some compiler that checks the
       * destination size. */
!     v = &fc.fixvar[fixvar_idx++].var;
      name = v->di_key;
      STRCPY(name, "000");
      v->di_flags = DI_FLAGS_RO | DI_FLAGS_FIX;
!     hash_add(&fc.l_avars.dv_hashtab, DI2HIKEY(v));
      v->di_tv.v_type = VAR_LIST;
      v->di_tv.v_lock = VAR_FIXED;
!     v->di_tv.vval.v_list = &fc.l_varlist;
!     vim_memset(&fc.l_varlist, 0, sizeof(list_T));
!     fc.l_varlist.lv_refcount = 99999;
!     fc.l_varlist.lv_lock = VAR_FIXED;
      /*
       * Set a:firstline to "firstline" and a:lastline to "lastline".
       * Set a:name to named arguments.
       * Set a:N to the "..." arguments.
       */
!     add_nr_var(&fc.l_avars, &fc.fixvar[fixvar_idx++].var, "firstline",
                                (varnumber_T)firstline);
!     add_nr_var(&fc.l_avars, &fc.fixvar[fixvar_idx++].var, "lastline",
                                 (varnumber_T)lastline);
      for (i = 0; i < argcount; ++i)
      {
--- 21204,21234 ----
       * Set a:0 to "argcount".
       * Set a:000 to a list with room for the "..." arguments.
       */
!     init_var_dict(&fc->l_avars, &fc->l_avars_var);
!     add_nr_var(&fc->l_avars, &fc->fixvar[fixvar_idx++].var, "0",
                  (varnumber_T)(argcount - fp->uf_args.ga_len));
      /* Use "name" to avoid a warning from some compiler that checks the
       * destination size. */
!     v = &fc->fixvar[fixvar_idx++].var;
      name = v->di_key;
      STRCPY(name, "000");
      v->di_flags = DI_FLAGS_RO | DI_FLAGS_FIX;
!     hash_add(&fc->l_avars.dv_hashtab, DI2HIKEY(v));
      v->di_tv.v_type = VAR_LIST;
      v->di_tv.v_lock = VAR_FIXED;
!     v->di_tv.vval.v_list = &fc->l_varlist;
!     vim_memset(&fc->l_varlist, 0, sizeof(list_T));
!     fc->l_varlist.lv_refcount = DO_NOT_FREE_CNT;
!     fc->l_varlist.lv_lock = VAR_FIXED;
      /*
       * Set a:firstline to "firstline" and a:lastline to "lastline".
       * Set a:name to named arguments.
       * Set a:N to the "..." arguments.
       */
!     add_nr_var(&fc->l_avars, &fc->fixvar[fixvar_idx++].var, "firstline",
                                (varnumber_T)firstline);
!     add_nr_var(&fc->l_avars, &fc->fixvar[fixvar_idx++].var, "lastline",
                                 (varnumber_T)lastline);
      for (i = 0; i < argcount; ++i)
      {
***************
*** 21218,21224 ****
      }
      if (fixvar_idx < FIXVAR_CNT && STRLEN(name) <= VAR_SHORT_LEN)
      {
!         v = &fc.fixvar[fixvar_idx++].var;
          v->di_flags = DI_FLAGS_RO | DI_FLAGS_FIX;
      }
      else
--- 21244,21250 ----
      }
      if (fixvar_idx < FIXVAR_CNT && STRLEN(name) <= VAR_SHORT_LEN)
      {
!         v = &fc->fixvar[fixvar_idx++].var;
          v->di_flags = DI_FLAGS_RO | DI_FLAGS_FIX;
      }
      else
***************
*** 21230,21236 ****
          v->di_flags = DI_FLAGS_RO;
      }
      STRCPY(v->di_key, name);
!     hash_add(&fc.l_avars.dv_hashtab, DI2HIKEY(v));
      /* Note: the values are copied directly to avoid alloc/free.
       * "argvars" must have VAR_FIXED for v_lock. */
--- 21256,21262 ----
          v->di_flags = DI_FLAGS_RO;
      }
      STRCPY(v->di_key, name);
!     hash_add(&fc->l_avars.dv_hashtab, DI2HIKEY(v));
      /* Note: the values are copied directly to avoid alloc/free.
       * "argvars" must have VAR_FIXED for v_lock. */
***************
*** 21239,21247 ****
      if (ai >= 0 && ai < MAX_FUNC_ARGS)
      {
!         list_append(&fc.l_varlist, &fc.l_listitems[ai]);
!         fc.l_listitems[ai].li_tv = argvars[i];
!         fc.l_listitems[ai].li_tv.v_lock = VAR_FIXED;
      }
      }
--- 21265,21273 ----
      if (ai >= 0 && ai < MAX_FUNC_ARGS)
      {
!         list_append(&fc->l_varlist, &fc->l_listitems[ai]);
!         fc->l_listitems[ai].li_tv = argvars[i];
!         fc->l_listitems[ai].li_tv.v_lock = VAR_FIXED;
      }
      }
***************
*** 21306,21312 ****
      if (!fp->uf_profiling && has_profiling(FALSE, fp->uf_name, NULL))
          func_do_profile(fp);
      if (fp->uf_profiling
!                || (fc.caller != NULL && fc.caller->func->uf_profiling))
      {
          ++fp->uf_tm_count;
          profile_start(&call_start);
--- 21332,21338 ----
      if (!fp->uf_profiling && has_profiling(FALSE, fp->uf_name, NULL))
          func_do_profile(fp);
      if (fp->uf_profiling
!             || (fc->caller != NULL && fc->caller->func->uf_profiling))
      {
          ++fp->uf_tm_count;
          profile_start(&call_start);
***************
*** 21322,21328 ****
      did_emsg = FALSE;
      /* call do_cmdline() to execute the lines */
!     do_cmdline(NULL, get_func_line, (void *)&fc,
                       DOCMD_NOWAIT|DOCMD_VERBOSE|DOCMD_REPEAT);
      --RedrawingDisabled;
--- 21348,21354 ----
      did_emsg = FALSE;
      /* call do_cmdline() to execute the lines */
!     do_cmdline(NULL, get_func_line, (void *)fc,
                       DOCMD_NOWAIT|DOCMD_VERBOSE|DOCMD_REPEAT);
      --RedrawingDisabled;
***************
*** 21337,21352 ****
  #ifdef FEAT_PROFILE
      if (do_profiling == PROF_YES && (fp->uf_profiling
!             || (fc.caller != NULL && fc.caller->func->uf_profiling)))
      {
      profile_end(&call_start);
      profile_sub_wait(&wait_start, &call_start);
      profile_add(&fp->uf_tm_total, &call_start);
      profile_self(&fp->uf_tm_self, &call_start, &fp->uf_tm_children);
!     if (fc.caller != NULL && fc.caller->func->uf_profiling)
      {
!         profile_add(&fc.caller->func->uf_tm_children, &call_start);
!         profile_add(&fc.caller->func->uf_tml_children, &call_start);
      }
      }
  #endif
--- 21363,21378 ----
  #ifdef FEAT_PROFILE
      if (do_profiling == PROF_YES && (fp->uf_profiling
!             || (fc->caller != NULL && fc->caller->func->uf_profiling)))
      {
      profile_end(&call_start);
      profile_sub_wait(&wait_start, &call_start);
      profile_add(&fp->uf_tm_total, &call_start);
      profile_self(&fp->uf_tm_self, &call_start, &fp->uf_tm_children);
!     if (fc->caller != NULL && fc->caller->func->uf_profiling)
      {
!         profile_add(&fc->caller->func->uf_tm_children, &call_start);
!         profile_add(&fc->caller->func->uf_tml_children, &call_start);
      }
      }
  #endif
***************
*** 21359,21367 ****
      if (aborting())
          smsg((char_u *)_("%s aborted"), sourcing_name);
!     else if (fc.rettv->v_type == VAR_NUMBER)
          smsg((char_u *)_("%s returning #%ld"), sourcing_name,
!                            (long)fc.rettv->vval.v_number);
      else
      {
          char_u    buf[MSG_BUF_LEN];
--- 21385,21393 ----
      if (aborting())
          smsg((char_u *)_("%s aborted"), sourcing_name);
!     else if (fc->rettv->v_type == VAR_NUMBER)
          smsg((char_u *)_("%s returning #%ld"), sourcing_name,
!                            (long)fc->rettv->vval.v_number);
      else
      {
          char_u    buf[MSG_BUF_LEN];
***************
*** 21372,21378 ****
          /* The value may be very long.  Skip the middle part, so that we
           * have some idea how it starts and ends. smsg() would always
           * truncate it at the end. */
!         s = tv2string(fc.rettv, &tofree, numbuf2, 0);
          if (s != NULL)
          {
          trunc_string(s, buf, MSG_BUF_CLEN);
--- 21398,21404 ----
          /* The value may be very long.  Skip the middle part, so that we
           * have some idea how it starts and ends. smsg() would always
           * truncate it at the end. */
!         s = tv2string(fc->rettv, &tofree, numbuf2, 0);
          if (s != NULL)
          {
          trunc_string(s, buf, MSG_BUF_CLEN);
***************
*** 21408,21421 ****
      }
      did_emsg |= save_did_emsg;
!     current_funccal = fc.caller;
!     /* The a: variables typevals were not allocated, only free the allocated
!      * variables. */
!     vars_clear_ext(&fc.l_avars.dv_hashtab, FALSE);
!     vars_clear(&fc.l_vars.dv_hashtab);        /* free all l: variables */
!     --depth;
  }
  /*
--- 21434,21517 ----
      }
      did_emsg |= save_did_emsg;
!     current_funccal = fc->caller;
!     --depth;
!     /* if the a:000 list and the a: dict are not referenced we can free the
!      * funccall_T and what's in it. */
!     if (fc->l_varlist.lv_refcount == DO_NOT_FREE_CNT
!         && fc->l_vars.dv_refcount == DO_NOT_FREE_CNT
!         && fc->l_avars.dv_refcount == DO_NOT_FREE_CNT)
!     {
!     free_funccal(fc, FALSE);
!     }
!     else
!     {
!     hashitem_T    *hi;
!     listitem_T    *li;
!     int        todo;
!     /* "fc" is still in use.  This can happen when returning "a:000" or
!      * assigning "l:" to a global variable.
!      * Link "fc" in the list for garbage collection later. */
!     fc->caller = previous_funccal;
!     previous_funccal = fc;
!
!     /* Make a copy of the a: variables, since we didn't do that above. */
!     todo = (int)fc->l_avars.dv_hashtab.ht_used;
!     for (hi = fc->l_avars.dv_hashtab.ht_array; todo > 0; ++hi)
!     {
!         if (!HASHITEM_EMPTY(hi))
!         {
!         --todo;
!         v = HI2DI(hi);
!         copy_tv(&v->di_tv, &v->di_tv);
!         }
!     }
!
!     /* Make a copy of the a:000 items, since we didn't do that above. */
!     for (li = fc->l_varlist.lv_first; li != NULL; li = li->li_next)
!         copy_tv(&li->li_tv, &li->li_tv);
!     }
! }
!
! /*
!  * Return TRUE if items in "fc" do not have "copyID".  That means they are not
!  * referenced from anywyere.
!  */
!     static int
! can_free_funccal(fc, copyID)
!     funccall_T    *fc;
!     int        copyID;
! {
!     return (fc->l_varlist.lv_copyID != copyID
!         && fc->l_vars.dv_copyID != copyID
!         && fc->l_avars.dv_copyID != copyID);
! }
!
! /*
!  * Free "fc" and what it contains.
!  */
!    static void
! free_funccal(fc, free_val)
!     funccall_T    *fc;
!     int        free_val;  /* a: vars were allocated */
! {
!     listitem_T    *li;
!
!     /* The a: variables typevals may not have been allocated, only free the
!      * allocated variables. */
!     vars_clear_ext(&fc->l_avars.dv_hashtab, free_val);
!
!     /* free all l: variables */
!     vars_clear(&fc->l_vars.dv_hashtab);
!
!     /* Free the a:000 variables if they were allocated. */
!     if (free_val)
!     for (li = fc->l_varlist.lv_first; li != NULL; li = li->li_next)
!         clear_tv(&li->li_tv);
!
!     vim_free(fc);
  }
  /*
*** ../vim-7.2.069/src/version.c    Tue Dec  9 22:34:02 2008
--- src/version.c    Sun Dec 21 12:47:07 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     70,
  /**/
--
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/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.073
New file
@@ -0,0 +1,135 @@
To: vim-dev@vim.org
Subject: Patch 7.2.073
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.073
Problem:    ":set <xHome>" has the same output as ":set <Home>". (Matt
        Wozniski)
Solution:   Don't translate "x" keys to its alternative for ":set".
Files:        src/misc2.c, src/option.c, src/proto/misc2.pro
*** ../vim-7.2.072/src/misc2.c    Wed Nov 12 13:07:48 2008
--- src/misc2.c    Sun Dec 14 12:28:47 2008
***************
*** 2561,2567 ****
      int        key;
      int        dlen = 0;
!     key = find_special_key(srcp, &modifiers, keycode);
      if (key == 0)
      return 0;
--- 2561,2567 ----
      int        key;
      int        dlen = 0;
!     key = find_special_key(srcp, &modifiers, keycode, FALSE);
      if (key == 0)
      return 0;
***************
*** 2597,2606 ****
   * returns 0 if there is no match.
   */
      int
! find_special_key(srcp, modp, keycode)
      char_u    **srcp;
      int        *modp;
!     int        keycode; /* prefer key code, e.g. K_DEL instead of DEL */
  {
      char_u    *last_dash;
      char_u    *end_of_name;
--- 2597,2607 ----
   * returns 0 if there is no match.
   */
      int
! find_special_key(srcp, modp, keycode, keep_x_key)
      char_u    **srcp;
      int        *modp;
!     int        keycode;     /* prefer key code, e.g. K_DEL instead of DEL */
!     int        keep_x_key;  /* don't translate xHome to Home key */
  {
      char_u    *last_dash;
      char_u    *end_of_name;
***************
*** 2668,2674 ****
          else
          {
          key = get_special_key_code(last_dash + 1);
!         key = handle_x_keys(key);
          }
          /*
--- 2669,2676 ----
          else
          {
          key = get_special_key_code(last_dash + 1);
!         if (!keep_x_key)
!             key = handle_x_keys(key);
          }
          /*
*** ../vim-7.2.072/src/option.c    Fri Nov 28 21:26:50 2008
--- src/option.c    Sun Dec 14 12:28:56 2008
***************
*** 8328,8334 ****
      {
      --arg;                /* put arg at the '<' */
      modifiers = 0;
!     key = find_special_key(&arg, &modifiers, TRUE);
      if (modifiers)            /* can't handle modifiers here */
          key = 0;
      }
--- 8328,8334 ----
      {
      --arg;                /* put arg at the '<' */
      modifiers = 0;
!     key = find_special_key(&arg, &modifiers, TRUE, TRUE);
      if (modifiers)            /* can't handle modifiers here */
          key = 0;
      }
*** ../vim-7.2.072/src/proto/misc2.pro    Thu Jul 24 20:29:37 2008
--- src/proto/misc2.pro    Sun Dec 14 12:29:05 2008
***************
*** 59,65 ****
  int handle_x_keys __ARGS((int key));
  char_u *get_special_key_name __ARGS((int c, int modifiers));
  int trans_special __ARGS((char_u **srcp, char_u *dst, int keycode));
! int find_special_key __ARGS((char_u **srcp, int *modp, int keycode));
  int extract_modifiers __ARGS((int key, int *modp));
  int find_special_key_in_table __ARGS((int c));
  int get_special_key_code __ARGS((char_u *name));
--- 59,65 ----
  int handle_x_keys __ARGS((int key));
  char_u *get_special_key_name __ARGS((int c, int modifiers));
  int trans_special __ARGS((char_u **srcp, char_u *dst, int keycode));
! int find_special_key __ARGS((char_u **srcp, int *modp, int keycode, int keep_x_key));
  int extract_modifiers __ARGS((int key, int *modp));
  int find_special_key_in_table __ARGS((int c));
  int get_special_key_code __ARGS((char_u *name));
*** ../vim-7.2.072/src/version.c    Wed Dec 24 12:43:15 2008
--- src/version.c    Wed Dec 24 12:51:26 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     73,
  /**/
--
ARTHUR: If you do not open these doors, we will take this castle by force ...
   [A bucket of slops land on ARTHUR.  He tries to retain his dignity.]
                 "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/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.075
New file
@@ -0,0 +1,58 @@
To: vim-dev@vim.org
Subject: Patch 7.2.075
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.075 (after 7.2.058)
Problem:    Explanation about making a diff for extra_patches is unclear.
Solution:   Adjust comment.
Files:        src/version.c
*** ../vim-7.2.074/src/version.c    Wed Dec 24 13:04:41 2008
--- src/version.c    Wed Dec 24 13:07:47 2008
***************
*** 833,839 ****
   * Keep it short, e.g.,: "relative numbers", "persistent undo".
   * Also add a comment marker to separate the lines.
   * See the official Vim patches for the diff format: It must use a context of
!  * one line only.  Use "diff -C2".
   */
  static char *(extra_patches[]) =
  {   /* Add your patch description below this line */
--- 835,841 ----
   * Keep it short, e.g.,: "relative numbers", "persistent undo".
   * Also add a comment marker to separate the lines.
   * See the official Vim patches for the diff format: It must use a context of
!  * one line only.  Create it by hand or use "diff -C2" and edit the patch.
   */
  static char *(extra_patches[]) =
  {   /* Add your patch description below this line */
*** ../vim-7.2.074/src/version.c    Wed Dec 24 13:04:41 2008
--- src/version.c    Wed Dec 24 13:07:47 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     75,
  /**/
--
BEDEVERE: Stand by for attack!!
   [CUT TO enormous army forming up.  Trebuchets, rows of PIKEMEN, siege
   towers, pennants flying, shouts of "Stand by for attack!"  Traditional
   army build-up shots.  The shouts echo across the ranks of the army.
   We see various groups reacting, and stirring themselves in readiness.]
ARTHUR:   Who are they?
BEDEVERE: Oh, just some friends!
                 "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/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.076
New file
@@ -0,0 +1,86 @@
To: vim-dev@vim.org
Subject: Patch 7.2.076
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.076
Problem:    rename(from, to) deletes the file if "from" and "to" are not equal
        but still refer to the same file.  E.g., on a FAT32 filesystem
        under Unix.
Solution:   Go through another file name.
Files:        src/fileio.c
*** ../vim-7.2.075/src/fileio.c    Fri Nov 28 21:26:50 2008
--- src/fileio.c    Tue Dec 30 16:04:44 2008
***************
*** 6119,6124 ****
--- 6119,6165 ----
      if (mch_stat((char *)from, &st) < 0)
      return -1;
+ #ifdef UNIX
+     {
+     struct stat    st_to;
+     char        tempname[MAXPATHL + 1];
+
+     /* It's possible for the source and destination to be the same file.
+      * This happens when "from" and "to" differ in case and are on a FAT32
+      * filesystem.  In that case go through a temp file name. */
+     if (mch_stat((char *)to, &st_to) >= 0
+         && st.st_dev == st_to.st_dev
+         && st.st_ino == st_to.st_ino)
+     {
+         /* Find a name that doesn't exist and is in the same directory.
+          * Move "from" to "tempname" and then to "to". */
+         if (STRLEN(from) >= MAXPATHL - 5)
+         return -1;
+         STRCPY(tempname, from);
+         for (n = 123; n < 99999; ++n)
+         {
+         sprintf(gettail(tempname), "%d", n);
+         if (mch_stat(tempname, &st_to) < 0)
+         {
+             if (mch_rename((char *)from, tempname) == 0)
+             {
+             if (mch_rename(tempname, (char *)to) == 0)
+                 return 0;
+             /* Strange, the second step failed.  Try moving the
+              * file back and return failure. */
+             mch_rename(tempname, (char *)from);
+             return -1;
+             }
+             /* If it fails for one temp name it will most likely fail
+              * for any temp name, give up. */
+             return -1;
+         }
+         }
+         return -1;
+     }
+     }
+ #endif
+
      /*
       * Delete the "to" file, this is required on some systems to make the
       * mch_rename() work, on other systems it makes sure that we don't have
*** ../vim-7.2.075/src/version.c    Wed Dec 24 14:24:41 2008
--- src/version.c    Tue Dec 30 16:09:51 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     76,
  /**/
--
FATAL ERROR! SYSTEM HALTED! - Press any key to continue doing nothing.
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.077
New file
@@ -0,0 +1,164 @@
To: vim-dev@vim.org
Subject: Patch 7.2.077
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.077 (after 7.2.076)
Problem:    rename(from, to) doesn't work if "from" and "to" differ only in
        case on a system that ignores case in file names.
Solution:   Go through another file name.
Files:        src/fileio.c
*** ../vim-7.2.076/src/fileio.c    Tue Dec 30 16:15:16 2008
--- src/fileio.c    Wed Dec 31 14:59:59 2008
***************
*** 6106,6117 ****
  #ifdef HAVE_ACL
      vim_acl_T    acl;        /* ACL from original file */
  #endif
      /*
!      * When the names are identical, there is nothing to do.
       */
      if (fnamecmp(from, to) == 0)
!     return 0;
      /*
       * Fail if the "from" file doesn't exist.  Avoids that "to" is deleted.
--- 6106,6129 ----
  #ifdef HAVE_ACL
      vim_acl_T    acl;        /* ACL from original file */
  #endif
+ #if defined(UNIX) || defined(CASE_INSENSITIVE_FILENAME)
+     int        use_tmp_file = FALSE;
+ #endif
      /*
!      * When the names are identical, there is nothing to do.  When they refer
!      * to the same file (ignoring case and slash/backslash differences) but
!      * the file name differs we need to go through a temp file.
       */
      if (fnamecmp(from, to) == 0)
!     {
! #ifdef CASE_INSENSITIVE_FILENAME
!     if (STRCMP(gettail(from), gettail(to)) != 0)
!         use_tmp_file = TRUE;
!     else
! #endif
!         return 0;
!     }
      /*
       * Fail if the "from" file doesn't exist.  Avoids that "to" is deleted.
***************
*** 6122,6128 ****
  #ifdef UNIX
      {
      struct stat    st_to;
-     char        tempname[MAXPATHL + 1];
      /* It's possible for the source and destination to be the same file.
       * This happens when "from" and "to" differ in case and are on a FAT32
--- 6134,6139 ----
***************
*** 6130,6162 ****
      if (mch_stat((char *)to, &st_to) >= 0
          && st.st_dev == st_to.st_dev
          && st.st_ino == st_to.st_ino)
      {
!         /* Find a name that doesn't exist and is in the same directory.
!          * Move "from" to "tempname" and then to "to". */
!         if (STRLEN(from) >= MAXPATHL - 5)
!         return -1;
!         STRCPY(tempname, from);
!         for (n = 123; n < 99999; ++n)
          {
!         sprintf(gettail(tempname), "%d", n);
!         if (mch_stat(tempname, &st_to) < 0)
          {
!             if (mch_rename((char *)from, tempname) == 0)
!             {
!             if (mch_rename(tempname, (char *)to) == 0)
!                 return 0;
!             /* Strange, the second step failed.  Try moving the
!              * file back and return failure. */
!             mch_rename(tempname, (char *)from);
!             return -1;
!             }
!             /* If it fails for one temp name it will most likely fail
!              * for any temp name, give up. */
              return -1;
          }
          }
-         return -1;
      }
      }
  #endif
--- 6141,6182 ----
      if (mch_stat((char *)to, &st_to) >= 0
          && st.st_dev == st_to.st_dev
          && st.st_ino == st_to.st_ino)
+         use_tmp_file = TRUE;
+     }
+ #endif
+
+ #if defined(UNIX) || defined(CASE_INSENSITIVE_FILENAME)
+     if (use_tmp_file)
+     {
+     char    tempname[MAXPATHL + 1];
+
+     /*
+      * Find a name that doesn't exist and is in the same directory.
+      * Rename "from" to "tempname" and then rename "tempname" to "to".
+      */
+     if (STRLEN(from) >= MAXPATHL - 5)
+         return -1;
+     STRCPY(tempname, from);
+     for (n = 123; n < 99999; ++n)
      {
!         sprintf((char *)gettail((char_u *)tempname), "%d", n);
!         if (mch_stat(tempname, &st) < 0)
          {
!         if (mch_rename((char *)from, tempname) == 0)
          {
!             if (mch_rename(tempname, (char *)to) == 0)
!             return 0;
!             /* Strange, the second step failed.  Try moving the
!              * file back and return failure. */
!             mch_rename(tempname, (char *)from);
              return -1;
          }
+         /* If it fails for one temp name it will most likely fail
+          * for any temp name, give up. */
+         return -1;
          }
      }
+     return -1;
      }
  #endif
*** ../vim-7.2.076/src/version.c    Tue Dec 30 16:15:16 2008
--- src/version.c    Wed Dec 31 16:19:29 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     77,
  /**/
--
We apologise again for the fault in the subtitles.  Those responsible for
sacking the people who have just been sacked have been sacked.
                 "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/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.078
New file
@@ -0,0 +1,120 @@
To: vim-dev@vim.org
Subject: Patch 7.2.078
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.078
Problem:    When deleting a fold that is specified with markers the cursor
        position may be wrong.  Folds may not be displayed properly after
        a delete.  Wrong fold may be deleted.
Solution:   Fix the problems. (mostly by Lech Lorens)
Files:        src/fold.c
*** ../vim-7.2.077/src/fold.c    Fri Nov 28 21:26:50 2008
--- src/fold.c    Tue Jan  6 14:53:26 2009
***************
*** 740,746 ****
      garray_T    *found_ga;
      fold_T    *found_fp = NULL;
      linenr_T    found_off = 0;
!     int        use_level = FALSE;
      int        maybe_small = FALSE;
      int        level = 0;
      linenr_T    lnum = start;
--- 740,746 ----
      garray_T    *found_ga;
      fold_T    *found_fp = NULL;
      linenr_T    found_off = 0;
!     int        use_level;
      int        maybe_small = FALSE;
      int        level = 0;
      linenr_T    lnum = start;
***************
*** 757,762 ****
--- 757,763 ----
      gap = &curwin->w_folds;
      found_ga = NULL;
      lnum_off = 0;
+     use_level = FALSE;
      for (;;)
      {
          if (!foldFind(gap, lnum - lnum_off, &fp))
***************
*** 783,802 ****
      else
      {
          lnum = found_fp->fd_top + found_fp->fd_len + found_off;
-         did_one = TRUE;
          if (foldmethodIsManual(curwin))
          deleteFoldEntry(found_ga,
              (int)(found_fp - (fold_T *)found_ga->ga_data), recursive);
          else
          {
!         if (found_fp->fd_top + found_off < first_lnum)
!             first_lnum = found_fp->fd_top;
!         if (lnum > last_lnum)
              last_lnum = lnum;
!         parseMarker(curwin);
          deleteFoldMarkers(found_fp, recursive, found_off);
          }
          /* redraw window */
          changed_window_setting();
--- 784,804 ----
      else
      {
          lnum = found_fp->fd_top + found_fp->fd_len + found_off;
          if (foldmethodIsManual(curwin))
          deleteFoldEntry(found_ga,
              (int)(found_fp - (fold_T *)found_ga->ga_data), recursive);
          else
          {
!         if (first_lnum > found_fp->fd_top + found_off)
!             first_lnum = found_fp->fd_top + found_off;
!         if (last_lnum < lnum)
              last_lnum = lnum;
!         if (!did_one)
!             parseMarker(curwin);
          deleteFoldMarkers(found_fp, recursive, found_off);
          }
+         did_one = TRUE;
          /* redraw window */
          changed_window_setting();
***************
*** 811,816 ****
--- 813,822 ----
          redraw_curbuf_later(INVERTED);
  #endif
      }
+     else
+     /* Deleting markers may make cursor column invalid. */
+     check_cursor_col();
+
      if (last_lnum > 0)
      changed_lines(first_lnum, (colnr_T)0, last_lnum, 0L);
  }
*** ../vim-7.2.077/src/version.c    Wed Dec 31 16:20:54 2008
--- src/version.c    Tue Jan  6 15:00:36 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     78,
  /**/
--
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/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.079
New file
@@ -0,0 +1,229 @@
To: vim-dev@vim.org
Subject: Patch 7.2.079
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.079
Problem:    "killed" netbeans events are not handled correctly.
Solution:   A "killed" netbeans event is sent when the buffer is deleted or
        wiped out (in this case, the netbeans annotations in this buffer
        have been removed).  A user can still remove a sign with the
        command ":sign unplace" and this does not trigger a "killed"
        event.  (Xavier de Gaye)
Files:        runtime/doc/netbeans.txt, src/buffer.c, src/globals.h,
        src/netbeans.c, src/proto/netbeans.pro
*** ../vim-7.2.078/runtime/doc/netbeans.txt    Sat Aug  9 19:36:49 2008
--- runtime/doc/netbeans.txt    Tue Jan  6 15:23:39 2009
***************
*** 1,4 ****
! *netbeans.txt*  For Vim version 7.2.  Last change: 2008 Jun 28
            VIM REFERENCE MANUAL    by Gordon Prieur et al.
--- 1,4 ----
! *netbeans.txt*  For Vim version 7.2.  Last change: 2009 Jan 06
            VIM REFERENCE MANUAL    by Gordon Prieur et al.
***************
*** 722,729 ****
          of the cursor.
          New in version 2.1.
! killed        A file was closed by the user.  Only for files that have been
!         assigned a number by the IDE.
  newDotAndMark off off
          Reports the position of the cursor being at "off" bytes into
--- 722,731 ----
          of the cursor.
          New in version 2.1.
! killed        A file was deleted or wiped out by the user and the buffer
!         annotations have been removed.  The bufID number for this
!         buffer has become invalid.  Only for files that have been
!         assigned a bufID number by the IDE.
  newDotAndMark off off
          Reports the position of the cursor being at "off" bytes into
*** ../vim-7.2.078/src/buffer.c    Wed Dec  3 11:21:20 2008
--- src/buffer.c    Tue Jan  6 15:23:02 2009
***************
*** 437,446 ****
      return;
  #endif
- #ifdef FEAT_NETBEANS_INTG
-     if (usingNetbeans)
-     netbeans_file_closed(buf);
- #endif
      /* Change directories when the 'acd' option is set. */
      DO_AUTOCHDIR
--- 437,442 ----
***************
*** 639,644 ****
--- 635,644 ----
  #ifdef FEAT_SIGNS
      buf_delete_signs(buf);        /* delete any signs */
  #endif
+ #ifdef FEAT_NETBEANS_INTG
+     if (usingNetbeans)
+         netbeans_file_killed(buf);
+ #endif
  #ifdef FEAT_LOCALMAP
      map_clear_int(buf, MAP_ALL_MODES, TRUE, FALSE);  /* clear local mappings */
      map_clear_int(buf, MAP_ALL_MODES, TRUE, TRUE);   /* clear local abbrevs */
***************
*** 815,823 ****
      int        bnr;        /* buffer number */
      char_u    *p;
- #ifdef FEAT_NETBEANS_INTG
-     netbeansCloseFile = 1;
- #endif
      if (addr_count == 0)
      {
      (void)do_buffer(command, DOBUF_CURRENT, FORWARD, 0, forceit);
--- 815,820 ----
***************
*** 912,920 ****
      }
      }
- #ifdef FEAT_NETBEANS_INTG
-     netbeansCloseFile = 0;
- #endif
      return errormsg;
  }
--- 909,914 ----
*** ../vim-7.2.078/src/globals.h    Fri Nov 28 21:26:50 2008
--- src/globals.h    Tue Jan  6 15:23:02 2009
***************
*** 1340,1346 ****
  #ifdef FEAT_NETBEANS_INTG
  EXTERN char *netbeansArg INIT(= NULL);    /* the -nb[:host:port:passwd] arg */
- EXTERN int netbeansCloseFile INIT(= 0);    /* send killed if != 0 */
  EXTERN int netbeansFireChanges INIT(= 1); /* send buffer changes if != 0 */
  EXTERN int netbeansForcedQuit INIT(= 0);/* don't write modified files */
  EXTERN int netbeansReadFile INIT(= 1);    /* OK to read from disk if != 0 */
--- 1340,1345 ----
*** ../vim-7.2.078/src/netbeans.c    Wed Dec 24 12:20:10 2008
--- src/netbeans.c    Tue Jan  6 15:23:02 2009
***************
*** 2921,2964 ****
  }
  /*
!  * Tell netbeans a file was closed.
   */
      void
! netbeans_file_closed(buf_T *bufp)
  {
      int        bufno = nb_getbufno(bufp);
      nbbuf_T    *nbbuf = nb_get_buf(bufno);
      char    buffer[2*MAXPATHL];
!     if (!haveConnection || bufno < 0)
      return;
!     if (!netbeansCloseFile)
!     {
!     nbdebug(("Ignoring file_closed for %s. File was closed from IDE\n",
!             bufp->b_ffname));
!     return;
!     }
!
!     nbdebug(("netbeans_file_closed:\n"));
!     nbdebug(("    Closing bufno: %d", bufno));
!     if (curbuf != NULL && curbuf != bufp)
!     {
!     nbdebug(("    Curbuf bufno:  %d\n", nb_getbufno(curbuf)));
!     }
!     else if (curbuf == bufp)
!     {
!     nbdebug(("    curbuf == bufp\n"));
!     }
!
!     if (bufno <= 0)
!     return;
      sprintf(buffer, "%d:killed=%d\n", bufno, r_cmdno);
      nbdebug(("EVT: %s", buffer));
!     nb_send(buffer, "netbeans_file_closed");
      if (nbbuf != NULL)
      nbbuf->bufp = NULL;
--- 2921,2946 ----
  }
  /*
!  * Tell netbeans that a file was deleted or wiped out.
   */
      void
! netbeans_file_killed(buf_T *bufp)
  {
      int        bufno = nb_getbufno(bufp);
      nbbuf_T    *nbbuf = nb_get_buf(bufno);
      char    buffer[2*MAXPATHL];
!     if (!haveConnection || bufno == -1)
      return;
!     nbdebug(("netbeans_file_killed:\n"));
!     nbdebug(("    Killing bufno: %d", bufno));
      sprintf(buffer, "%d:killed=%d\n", bufno, r_cmdno);
      nbdebug(("EVT: %s", buffer));
!     nb_send(buffer, "netbeans_file_killed");
      if (nbbuf != NULL)
      nbbuf->bufp = NULL;
*** ../vim-7.2.078/src/proto/netbeans.pro    Tue Jun 24 23:25:53 2008
--- src/proto/netbeans.pro    Tue Jan  6 15:23:02 2009
***************
*** 11,17 ****
  void netbeans_frame_moved __ARGS((int new_x, int new_y));
  void netbeans_file_activated __ARGS((buf_T *bufp));
  void netbeans_file_opened __ARGS((buf_T *bufp));
! void netbeans_file_closed __ARGS((buf_T *bufp));
  void netbeans_inserted __ARGS((buf_T *bufp, linenr_T linenr, colnr_T col, char_u *txt, int newlen));
  void netbeans_removed __ARGS((buf_T *bufp, linenr_T linenr, colnr_T col, long len));
  void netbeans_unmodified __ARGS((buf_T *bufp));
--- 11,17 ----
  void netbeans_frame_moved __ARGS((int new_x, int new_y));
  void netbeans_file_activated __ARGS((buf_T *bufp));
  void netbeans_file_opened __ARGS((buf_T *bufp));
! void netbeans_file_killed __ARGS((buf_T *bufp));
  void netbeans_inserted __ARGS((buf_T *bufp, linenr_T linenr, colnr_T col, char_u *txt, int newlen));
  void netbeans_removed __ARGS((buf_T *bufp, linenr_T linenr, colnr_T col, long len));
  void netbeans_unmodified __ARGS((buf_T *bufp));
*** ../vim-7.2.078/src/version.c    Tue Jan  6 15:01:58 2009
--- src/version.c    Tue Jan  6 16:11:11 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     79,
  /**/
--
Friends?  I have lots of friends!  In fact, I have every episode ever made.
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.080
New file
@@ -0,0 +1,365 @@
To: vim-dev@vim.org
Subject: Patch 7.2.080
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.080
Problem:    When typing a composing character just after starting completion
        may access memory before its allocation point. (Dominique Pelle)
Solution:   Don't delete before the completion start column.  Add extra checks
        for the offset not being negative.
Files:        src/edit.c
*** ../vim-7.2.079/src/edit.c    Wed Aug  6 18:56:55 2008
--- src/edit.c    Tue Jan 13 12:05:57 2009
***************
*** 147,152 ****
--- 147,153 ----
  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));
***************
*** 197,203 ****
  static void mb_replace_pop_ins __ARGS((int cc));
  #endif
  static void replace_flush __ARGS((void));
! static void replace_do_bs __ARGS((void));
  #ifdef FEAT_CINDENT
  static int cindent_on __ARGS((void));
  #endif
--- 198,205 ----
  static void mb_replace_pop_ins __ARGS((int cc));
  #endif
  static void replace_flush __ARGS((void));
! static void replace_do_bs __ARGS((int limit_col));
! static int del_char_after_col __ARGS((int limit_col));
  #ifdef FEAT_CINDENT
  static int cindent_on __ARGS((void));
  #endif
***************
*** 1933,1938 ****
--- 1935,1942 ----
  /*
   * Backspace the cursor until the given column.  Handles REPLACE and VREPLACE
   * modes correctly.  May also be used when not in insert mode at all.
+  * Will attempt not to go before "col" even when there is a composing
+  * character.
   */
      void
  backspace_until_column(col)
***************
*** 1942,1954 ****
      {
      curwin->w_cursor.col--;
      if (State & REPLACE_FLAG)
!         replace_do_bs();
!     else
!         (void)del_char(FALSE);
      }
  }
  #endif
  #if defined(FEAT_INS_EXPAND) || defined(PROTO)
  /*
   * CTRL-X pressed in Insert mode.
--- 1946,1994 ----
      {
      curwin->w_cursor.col--;
      if (State & REPLACE_FLAG)
!         replace_do_bs(col);
!     else if (!del_char_after_col(col))
!         break;
      }
  }
  #endif
+ /*
+  * Like del_char(), but make sure not to go before column "limit_col".
+  * Only matters when there are composing characters.
+  * Return TRUE when something was deleted.
+  */
+    static int
+ del_char_after_col(limit_col)
+     int limit_col;
+ {
+ #ifdef FEAT_MBYTE
+     if (enc_utf8 && limit_col >= 0)
+     {
+     int ecol = curwin->w_cursor.col + 1;
+
+     /* Make sure the cursor is at the start of a character, but
+      * skip forward again when going too far back because of a
+      * composing character. */
+     mb_adjust_cursor();
+     while (curwin->w_cursor.col < limit_col)
+     {
+         int l = utf_ptr2len(ml_get_cursor());
+
+         if (l == 0)  /* end of line */
+         break;
+         curwin->w_cursor.col += l;
+     }
+     if (*ml_get_cursor() == NUL || curwin->w_cursor.col == ecol)
+         return FALSE;
+     del_bytes((long)(ecol - curwin->w_cursor.col), FALSE, TRUE);
+     }
+     else
+ #endif
+     (void)del_char(FALSE);
+     return TRUE;
+ }
+
  #if defined(FEAT_INS_EXPAND) || defined(PROTO)
  /*
   * CTRL-X pressed in Insert mode.
***************
*** 2418,2424 ****
      {
          had_match = (curwin->w_cursor.col > compl_col);
          ins_compl_delete();
!         ins_bytes(compl_leader + curwin->w_cursor.col - compl_col);
          ins_redraw(FALSE);
          /* When the match isn't there (to avoid matching itself) remove it
--- 2458,2464 ----
      {
          had_match = (curwin->w_cursor.col > compl_col);
          ins_compl_delete();
!         ins_bytes(compl_leader + ins_compl_len());
          ins_redraw(FALSE);
          /* When the match isn't there (to avoid matching itself) remove it
***************
*** 2470,2476 ****
          *p = NUL;
          had_match = (curwin->w_cursor.col > compl_col);
          ins_compl_delete();
!         ins_bytes(compl_leader + curwin->w_cursor.col - compl_col);
          ins_redraw(FALSE);
          /* When the match isn't there (to avoid matching itself) remove it
--- 2510,2516 ----
          *p = NUL;
          had_match = (curwin->w_cursor.col > compl_col);
          ins_compl_delete();
!         ins_bytes(compl_leader + ins_compl_len());
          ins_redraw(FALSE);
          /* When the match isn't there (to avoid matching itself) remove it
***************
*** 3209,3215 ****
  {
      ins_compl_del_pum();
      ins_compl_delete();
!     ins_bytes(compl_leader + curwin->w_cursor.col - compl_col);
      compl_used_match = FALSE;
      if (compl_started)
--- 3249,3255 ----
  {
      ins_compl_del_pum();
      ins_compl_delete();
!     ins_bytes(compl_leader + ins_compl_len());
      compl_used_match = FALSE;
      if (compl_started)
***************
*** 3264,3269 ****
--- 3304,3323 ----
  }
  /*
+  * Return the length of the completion, from the completion start column to
+  * the cursor column.  Making sure it never goes below zero.
+  */
+     static int
+ ins_compl_len()
+ {
+     int off = curwin->w_cursor.col - compl_col;
+
+     if (off < 0)
+     return 0;
+     return off;
+ }
+
+ /*
   * Append one character to the match leader.  May reduce the number of
   * matches.
   */
***************
*** 3621,3630 ****
          {
          ins_compl_delete();
          if (compl_leader != NULL)
!             ins_bytes(compl_leader + curwin->w_cursor.col - compl_col);
          else if (compl_first_match != NULL)
!             ins_bytes(compl_orig_text
!                       + curwin->w_cursor.col - compl_col);
          retval = TRUE;
          }
--- 3675,3683 ----
          {
          ins_compl_delete();
          if (compl_leader != NULL)
!             ins_bytes(compl_leader + ins_compl_len());
          else if (compl_first_match != NULL)
!             ins_bytes(compl_orig_text + ins_compl_len());
          retval = TRUE;
          }
***************
*** 4256,4262 ****
      static void
  ins_compl_insert()
  {
!     ins_bytes(compl_shown_match->cp_str + curwin->w_cursor.col - compl_col);
      if (compl_shown_match->cp_flags & ORIGINAL_TEXT)
      compl_used_match = FALSE;
      else
--- 4309,4315 ----
      static void
  ins_compl_insert()
  {
!     ins_bytes(compl_shown_match->cp_str + ins_compl_len());
      if (compl_shown_match->cp_flags & ORIGINAL_TEXT)
      compl_used_match = FALSE;
      else
***************
*** 4425,4431 ****
      if (!compl_get_longest || compl_used_match)
          ins_compl_insert();
      else
!         ins_bytes(compl_leader + curwin->w_cursor.col - compl_col);
      }
      else
      compl_used_match = FALSE;
--- 4478,4484 ----
      if (!compl_get_longest || compl_used_match)
          ins_compl_insert();
      else
!         ins_bytes(compl_leader + ins_compl_len());
      }
      else
      compl_used_match = FALSE;
***************
*** 7123,7131 ****
   * cc == 0: character was inserted, delete it
   * cc > 0: character was replaced, put cc (first byte of original char) back
   * and check for more characters to be put back
   */
      static void
! replace_do_bs()
  {
      int        cc;
  #ifdef FEAT_VREPLACE
--- 7176,7187 ----
   * cc == 0: character was inserted, delete it
   * cc > 0: character was replaced, put cc (first byte of original char) back
   * and check for more characters to be put back
+  * When "limit_col" is >= 0, don't delete before this column.  Matters when
+  * using composing characters, use del_char_after_col() instead of del_char().
   */
      static void
! replace_do_bs(limit_col)
!     int        limit_col;
  {
      int        cc;
  #ifdef FEAT_VREPLACE
***************
*** 7153,7159 ****
  #ifdef FEAT_MBYTE
      if (has_mbyte)
      {
!         del_char(FALSE);
  # ifdef FEAT_VREPLACE
          if (State & VREPLACE_FLAG)
          orig_len = (int)STRLEN(ml_get_cursor());
--- 7209,7215 ----
  #ifdef FEAT_MBYTE
      if (has_mbyte)
      {
!         (void)del_char_after_col(limit_col);
  # ifdef FEAT_VREPLACE
          if (State & VREPLACE_FLAG)
          orig_len = (int)STRLEN(ml_get_cursor());
***************
*** 7203,7209 ****
      changed_bytes(curwin->w_cursor.lnum, curwin->w_cursor.col);
      }
      else if (cc == 0)
!     (void)del_char(FALSE);
  }
  #ifdef FEAT_CINDENT
--- 7259,7265 ----
      changed_bytes(curwin->w_cursor.lnum, curwin->w_cursor.col);
      }
      else if (cc == 0)
!     (void)del_char_after_col(limit_col);
  }
  #ifdef FEAT_CINDENT
***************
*** 8239,8245 ****
       * Replace mode */
      if (curwin->w_cursor.lnum != Insstart.lnum
          || curwin->w_cursor.col >= Insstart.col)
!         replace_do_bs();
      }
      else
      (void)del_char(FALSE);
--- 8295,8301 ----
       * Replace mode */
      if (curwin->w_cursor.lnum != Insstart.lnum
          || curwin->w_cursor.col >= Insstart.col)
!         replace_do_bs(-1);
      }
      else
      (void)del_char(FALSE);
***************
*** 8556,8562 ****
          break;
          }
          if (State & REPLACE_FLAG)
!         replace_do_bs();
          else
          {
  #ifdef FEAT_MBYTE
--- 8612,8618 ----
          break;
          }
          if (State & REPLACE_FLAG)
!         replace_do_bs(-1);
          else
          {
  #ifdef FEAT_MBYTE
*** ../vim-7.2.079/src/version.c    Tue Jan  6 16:13:42 2009
--- src/version.c    Tue Jan 13 12:25:29 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     80,
  /**/
--
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/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.081
New file
@@ -0,0 +1,60 @@
To: vim-dev@vim.org
Subject: Patch 7.2.081
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.081
Problem:    Compiler warning for floating point overflow on VAX.
Solution:   For VAX use a smaller number. (Zoltan Arpadffy)
Files:        src/message.c
*** ../vim-7.2.080/src/message.c    Fri Nov 28 21:26:50 2008
--- src/message.c    Tue Jan 13 16:19:07 2009
***************
*** 4556,4562 ****
              remove_trailing_zeroes = TRUE;
              }
!             if (fmt_spec == 'f' && abs_f > 1.0e307)
              {
              /* Avoid a buffer overflow */
              strcpy(tmp, "inf");
--- 4556,4568 ----
              remove_trailing_zeroes = TRUE;
              }
!             if (fmt_spec == 'f' &&
! #ifdef VAX
!                 abs_f > 1.0e38
! #else
!                 abs_f > 1.0e307
! #endif
!                 )
              {
              /* Avoid a buffer overflow */
              strcpy(tmp, "inf");
*** ../vim-7.2.080/src/version.c    Tue Jan 13 12:29:03 2009
--- src/version.c    Tue Jan 13 16:19:52 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     81,
  /**/
--
Sometimes you can protect millions of dollars in your budget simply by buying
a bag of cookies, dropping it on the budget anylyst's desk, and saying
something deeply personal such as "How was your weekend, big guy?"
                (Scott Adams - The Dilbert principle)
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.082
New file
@@ -0,0 +1,77 @@
To: vim-dev@vim.org
Subject: Patch 7.2.082
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.082
Problem:    When 'ff' is "mac" then "ga" on a ^J shows 0x0d instead of 0x0a.
        (Andy Wokula)
Solution:   Use NL for this situation. (Lech Lorens)
Files:        src/ex_cmds.c
*** ../vim-7.2.081/src/ex_cmds.c    Fri Nov 28 21:26:50 2008
--- src/ex_cmds.c    Tue Jan 13 16:51:32 2009
***************
*** 49,54 ****
--- 49,55 ----
      exarg_T    *eap;
  {
      int        c;
+     int        cval;
      char    buf1[20];
      char    buf2[20];
      char_u    buf3[7];
***************
*** 75,80 ****
--- 76,85 ----
      {
      if (c == NL)        /* NUL is stored as NL */
          c = NUL;
+     if (c == CAR && get_fileformat(curbuf) == EOL_MAC)
+         cval = NL;        /* NL is stored as CR */
+     else
+         cval = c;
      if (vim_isprintc_strict(c) && (c < ' '
  #ifndef EBCDIC
              || c > '~'
***************
*** 94,100 ****
          buf2[0] = NUL;
      vim_snprintf((char *)IObuff, IOSIZE,
          _("<%s>%s%s  %d,  Hex %02x,  Octal %03o"),
!                        transchar(c), buf1, buf2, c, c, c);
  #ifdef FEAT_MBYTE
      if (enc_utf8)
          c = cc[ci++];
--- 99,105 ----
          buf2[0] = NUL;
      vim_snprintf((char *)IObuff, IOSIZE,
          _("<%s>%s%s  %d,  Hex %02x,  Octal %03o"),
!                   transchar(c), buf1, buf2, cval, cval, cval);
  #ifdef FEAT_MBYTE
      if (enc_utf8)
          c = cc[ci++];
*** ../vim-7.2.081/src/version.c    Tue Jan 13 16:37:31 2009
--- src/version.c    Tue Jan 13 16:53:39 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     82,
  /**/
--
The budget process was invented by an alien race of sadistic beings who
resemble large cats.
                (Scott Adams - The Dilbert principle)
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.083
New file
@@ -0,0 +1,54 @@
To: vim-dev@vim.org
Subject: Patch 7.2.083
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.083
Problem:    ":tag" does not return to the right tag entry from the tag stack.
Solution:   Don't change the current match when there is no argument.
        (Erik Falor)
Files:        src/tag.c
*** ../vim-7.2.082/src/tag.c    Tue Dec  9 12:12:31 2008
--- src/tag.c    Tue Jan 13 17:14:59 2009
***************
*** 515,521 ****
           * If a count is supplied to the ":tag <name>" command, then
           * jump to count'th matching tag.
           */
!         if (type == DT_TAG && count > 0)
          cur_match = count - 1;
          if (type == DT_SELECT || type == DT_JUMP
--- 515,521 ----
           * If a count is supplied to the ":tag <name>" command, then
           * jump to count'th matching tag.
           */
!         if (type == DT_TAG && *tag != NUL && count > 0)
          cur_match = count - 1;
          if (type == DT_SELECT || type == DT_JUMP
*** ../vim-7.2.082/src/version.c    Tue Jan 13 16:57:09 2009
--- src/version.c    Tue Jan 13 17:16:42 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     83,
  /**/
--
Engineers will go without food and hygiene for days to solve a problem.
(Other times just because they forgot.)
                (Scott Adams - The Dilbert principle)
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.084
New file
@@ -0,0 +1,144 @@
To: vim-dev@vim.org
Subject: Patch 7.2.084
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.084
Problem:    Recursive structures are not handled properly in Python
        vim.eval().
Solution:   Keep track of references in a better way. (Yukihiro Nakadaira)
Files:        src/if_python.c
*** ../vim-7.2.083/src/if_python.c    Thu Nov 20 11:04:01 2008
--- src/if_python.c    Tue Jan 13 18:08:06 2009
***************
*** 1151,1164 ****
      /* Check if we run into a recursive loop.  The item must be in lookupDict
       * then and we can use it again. */
!     sprintf(ptrBuf, PRINTF_DECIMAL_LONG_U, (long_u)our_tv);
!     result = PyDict_GetItemString(lookupDict, ptrBuf);
!     if (result != NULL)
!     Py_INCREF(result);
!     else if (our_tv->v_type == VAR_STRING)
      {
      result = Py_BuildValue("s", our_tv->vval.v_string);
-     PyDict_SetItemString(lookupDict, ptrBuf, result);
      }
      else if (our_tv->v_type == VAR_NUMBER)
      {
--- 1151,1173 ----
      /* Check if we run into a recursive loop.  The item must be in lookupDict
       * then and we can use it again. */
!     if ((our_tv->v_type == VAR_LIST && our_tv->vval.v_list != NULL)
!         || (our_tv->v_type == VAR_DICT && our_tv->vval.v_dict != NULL))
!     {
!     sprintf(ptrBuf, PRINTF_DECIMAL_LONG_U,
!             our_tv->v_type == VAR_LIST ? (long_u)our_tv->vval.v_list
!                                    : (long_u)our_tv->vval.v_dict);
!     result = PyDict_GetItemString(lookupDict, ptrBuf);
!     if (result != NULL)
!     {
!         Py_INCREF(result);
!         return result;
!     }
!     }
!
!     if (our_tv->v_type == VAR_STRING)
      {
      result = Py_BuildValue("s", our_tv->vval.v_string);
      }
      else if (our_tv->v_type == VAR_NUMBER)
      {
***************
*** 1167,1173 ****
      /* For backwards compatibility numbers are stored as strings. */
      sprintf(buf, "%ld", (long)our_tv->vval.v_number);
      result = Py_BuildValue("s", buf);
-     PyDict_SetItemString(lookupDict, ptrBuf, result);
      }
  # ifdef FEAT_FLOAT
      else if (our_tv->v_type == VAR_FLOAT)
--- 1176,1181 ----
***************
*** 1176,1182 ****
      sprintf(buf, "%f", our_tv->vval.v_float);
      result = Py_BuildValue("s", buf);
-     PyDict_SetItemString(lookupDict, ptrBuf, result);
      }
  # endif
      else if (our_tv->v_type == VAR_LIST)
--- 1184,1189 ----
***************
*** 1185,1194 ****
      listitem_T    *curr;
      result = PyList_New(0);
-     PyDict_SetItemString(lookupDict, ptrBuf, result);
      if (list != NULL)
      {
          for (curr = list->lv_first; curr != NULL; curr = curr->li_next)
          {
          newObj = VimToPython(&curr->li_tv, depth + 1, lookupDict);
--- 1192,1202 ----
      listitem_T    *curr;
      result = PyList_New(0);
      if (list != NULL)
      {
+         PyDict_SetItemString(lookupDict, ptrBuf, result);
+
          for (curr = list->lv_first; curr != NULL; curr = curr->li_next)
          {
          newObj = VimToPython(&curr->li_tv, depth + 1, lookupDict);
***************
*** 1200,1206 ****
      else if (our_tv->v_type == VAR_DICT)
      {
      result = PyDict_New();
-     PyDict_SetItemString(lookupDict, ptrBuf, result);
      if (our_tv->vval.v_dict != NULL)
      {
--- 1208,1213 ----
***************
*** 1209,1214 ****
--- 1216,1223 ----
          hashitem_T    *hi;
          dictitem_T    *di;
+         PyDict_SetItemString(lookupDict, ptrBuf, result);
+
          for (hi = ht->ht_array; todo > 0; ++hi)
          {
          if (!HASHITEM_EMPTY(hi))
*** ../vim-7.2.083/src/version.c    Tue Jan 13 17:27:18 2009
--- src/version.c    Tue Jan 13 17:54:14 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     84,
  /**/
--
Article in the first Free Software Magazine: "Bram Moolenaar studied electrical
engineering at the Technical University of Delft and graduated in 1985 on a
multi-processor Unix architecture."
Response by "dimator": Could the school not afford a proper stage for the
ceremony?
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.085
New file
@@ -0,0 +1,62 @@
To: vim-dev@vim.org
Subject: Patch 7.2.085
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.085
Problem:    ":set <M-b>=<Esc>b" does not work when 'encoding' is utf-8.
Solution:   Put the <M-b> character in the input buffer as valid utf-8.
        (partly by Matt Wosniski)
Files:        src/term.c
*** ../vim-7.2.084/src/term.c    Tue Jul 29 12:22:12 2008
--- src/term.c    Thu Jan 22 18:18:29 2009
***************
*** 4920,4926 ****
      key_name[0] = KEY2TERMCAP0(key);
      key_name[1] = KEY2TERMCAP1(key);
      if (key_name[0] == KS_KEY)
!         string[new_slen++] = key_name[1];    /* from ":set <M-b>=xx" */
      else
      {
          string[new_slen++] = K_SPECIAL;
--- 4920,4934 ----
      key_name[0] = KEY2TERMCAP0(key);
      key_name[1] = KEY2TERMCAP1(key);
      if (key_name[0] == KS_KEY)
!     {
!         /* from ":set <M-b>=xx" */
! #ifdef FEAT_MBYTE
!         if (has_mbyte)
!         new_slen += (*mb_char2bytes)(key_name[1], string + new_slen);
!         else
! #endif
!         string[new_slen++] = key_name[1];
!     }
      else
      {
          string[new_slen++] = K_SPECIAL;
*** ../vim-7.2.084/src/version.c    Tue Jan 13 18:10:21 2009
--- src/version.c    Thu Jan 22 18:31:50 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     85,
  /**/
--
hundred-and-one symptoms of being an internet addict:
20. When looking at a pageful of someone else's links, you notice all of them
    are already highlighted in purple.
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.086
New file
@@ -0,0 +1,98 @@
To: vim-dev@vim.org
Subject: Patch 7.2.086
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.086
Problem:    Using ":diffget 1" in buffer 1 corrupts the text.
Solution:   Don't do anything when source and destination of ":diffget" or
        ":diffput" is the same buffer. (Dominique Pelle)
Files:        src/diff.c
*** ../vim-7.2.085/src/diff.c    Sun Nov 30 15:15:56 2008
--- src/diff.c    Wed Jan 14 20:40:25 2009
***************
*** 8,14 ****
   */
  /*
!  * diff.c: code for diff'ing two or three buffers.
   */
  #include "vim.h"
--- 8,14 ----
   */
  /*
!  * diff.c: code for diff'ing two, three or four buffers.
   */
  #include "vim.h"
***************
*** 116,122 ****
   * Add a buffer to make diffs for.
   * Call this when a new buffer is being edited in the current window where
   * 'diff' is set.
!  * Marks the current buffer as being part of the diff and requireing updating.
   * This must be done before any autocmd, because a command may use info
   * about the screen contents.
   */
--- 116,122 ----
   * Add a buffer to make diffs for.
   * Call this when a new buffer is being edited in the current window where
   * 'diff' is set.
!  * Marks the current buffer as being part of the diff and requiring updating.
   * This must be done before any autocmd, because a command may use info
   * about the screen contents.
   */
***************
*** 929,935 ****
      goto theend;
  #ifdef UNIX
!     /* Temporaraly chdir to /tmp, to avoid patching files in the current
       * directory when the patch file contains more than one patch.  When we
       * have our own temp dir use that instead, it will be cleaned up when we
       * exit (any .rej files created).  Don't change directory if we can't
--- 929,935 ----
      goto theend;
  #ifdef UNIX
!     /* Temporarily chdir to /tmp, to avoid patching files in the current
       * directory when the patch file contains more than one patch.  When we
       * have our own temp dir use that instead, it will be cleaned up when we
       * exit (any .rej files created).  Don't change directory if we can't
***************
*** 2129,2134 ****
--- 2129,2136 ----
          EMSG2(_("E102: Can't find buffer \"%s\""), eap->arg);
          return;
      }
+     if (buf == curbuf)
+         return;        /* nothing to do */
      idx_other = diff_buf_idx(buf);
      if (idx_other == DB_COUNT)
      {
*** ../vim-7.2.085/src/version.c    Thu Jan 22 18:32:55 2009
--- src/version.c    Thu Jan 22 20:46:54 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     86,
  /**/
--
Shift happens.
                -- Doppler
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.087
New file
@@ -0,0 +1,53 @@
To: vim-dev@vim.org
Subject: Patch 7.2.087
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.087
Problem:    Adding URL to 'path' doesn't work to edit a file.
Solution:   Skip simplify_filename() for URLs. (Matt Wosniski)
Files:        src/misc2.c
*** ../vim-7.2.086/src/misc2.c    Wed Dec 24 12:53:33 2008
--- src/misc2.c    Sun Jan 18 12:26:20 2009
***************
*** 4696,4702 ****
                  stackp->ffs_filearray_cur = i + 1;
                  ff_push(search_ctx, stackp);
!                 simplify_filename(file_path);
                  if (mch_dirname(ff_expand_buffer, MAXPATHL)
                                      == OK)
                  {
--- 4696,4703 ----
                  stackp->ffs_filearray_cur = i + 1;
                  ff_push(search_ctx, stackp);
!                 if (!path_with_url(file_path))
!                     simplify_filename(file_path);
                  if (mch_dirname(ff_expand_buffer, MAXPATHL)
                                      == OK)
                  {
*** ../vim-7.2.086/src/version.c    Thu Jan 22 20:48:07 2009
--- src/version.c    Thu Jan 22 21:30:36 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     87,
  /**/
--
hundred-and-one symptoms of being an internet addict:
21. Your dog has its own home page.
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.090
New file
@@ -0,0 +1,130 @@
To: vim-dev@vim.org
Subject: Patch 7.2.090
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.090
Problem:    User command containing 0x80 in multi-byte character does not work
        properly. (Yasuhiro Matsumoto)
Solution:   Undo replacement of K_SPECIAL and CSI characters when executing
        the command.
Files:        src/ex_docmd.c
*** ../vim-7.2.089/src/ex_docmd.c    Tue Dec  9 11:17:23 2008
--- src/ex_docmd.c    Wed Jan 28 15:34:19 2009
***************
*** 5482,5487 ****
--- 5482,5490 ----
      return OK;
  }
+ /*
+  * ":command ..."
+  */
      static void
  ex_command(eap)
      exarg_T   *eap;
***************
*** 5914,5919 ****
--- 5917,5923 ----
      char_u    *start;
      char_u    *end;
+     char_u    *ksp;
      size_t    len, totlen;
      size_t    split_len = 0;
***************
*** 5930,5945 ****
      /*
       * Replace <> in the command by the arguments.
       */
      buf = NULL;
      for (;;)
      {
!     p = cmd->uc_rep;
!     q = buf;
      totlen = 0;
!     while ((start = vim_strchr(p, '<')) != NULL
!            && (end = vim_strchr(start + 1, '>')) != NULL)
      {
          /* Include the '>' */
          ++end;
--- 5934,5984 ----
      /*
       * Replace <> in the command by the arguments.
+      * First round: "buf" is NULL, compute length, allocate "buf".
+      * Second round: copy result into "buf".
       */
      buf = NULL;
      for (;;)
      {
!     p = cmd->uc_rep;    /* source */
!     q = buf;        /* destinateion */
      totlen = 0;
!
!     for (;;)
      {
+         start = vim_strchr(p, '<');
+         if (start != NULL)
+         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. */
+             len = ksp - p;
+             if (len > 0)
+             {
+             mch_memmove(q, p, len);
+             q += len;
+             }
+             *q++ = ksp[1] == KS_SPECIAL ? K_SPECIAL : CSI;
+             p = ksp + 3;
+             continue;
+         }
+         }
+
+         /* break if there no <item> is found */
+         if (start == NULL || end == NULL)
+         break;
+
          /* Include the '>' */
          ++end;
*** ../vim-7.2.089/src/version.c    Wed Jan 28 14:17:21 2009
--- src/version.c    Wed Jan 28 15:37:40 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     90,
  /**/
--
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/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.091
New file
@@ -0,0 +1,63 @@
To: vim-dev@vim.org
Subject: Patch 7.2.091
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.091
Problem:    ":cs help" output is not aligned for some languages.
Solution:   Compute character size instead of byte size. (Dominique Pelle)
Files:        src/if_cscope.c
*** ../vim-7.2.090/src/if_cscope.c    Mon Aug 25 04:35:13 2008
--- src/if_cscope.c    Thu Jan 22 18:44:46 2009
***************
*** 1177,1184 ****
      (void)MSG_PUTS(_("cscope commands:\n"));
      while (cmdp->name != NULL)
      {
!     (void)smsg((char_u *)_("%-5s: %-30s (Usage: %s)"),
!                       cmdp->name, _(cmdp->help), cmdp->usage);
      if (strcmp(cmdp->name, "find") == 0)
          MSG_PUTS(_("\n"
                 "       c: Find functions calling this function\n"
--- 1177,1192 ----
      (void)MSG_PUTS(_("cscope commands:\n"));
      while (cmdp->name != NULL)
      {
!     char *help = _(cmdp->help);
!     int  space_cnt = 30 - vim_strsize((char_u *)help);
!
!     /* Use %*s rather than %30s to ensure proper alignment in utf-8 */
!     if (space_cnt < 0)
!         space_cnt = 0;
!     (void)smsg((char_u *)_("%-5s: %s%*s (Usage: %s)"),
!                       cmdp->name,
!                       help, space_cnt, " ",
!                       cmdp->usage);
      if (strcmp(cmdp->name, "find") == 0)
          MSG_PUTS(_("\n"
                 "       c: Find functions calling this function\n"
*** ../vim-7.2.090/src/version.c    Wed Jan 28 15:42:07 2009
--- src/version.c    Wed Jan 28 16:02:25 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     91,
  /**/
--
How To Keep A Healthy Level Of Insanity:
18. When leaving the zoo, start running towards the parking lot,
    yelling "run for your lives, they're loose!!"
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.092
New file
@@ -0,0 +1,164 @@
To: vim-dev@vim.org
Subject: Patch 7.2.092
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.092
Problem:    Some error messages are not translated.
Solution:   Add _() around the messages. (Dominique Pelle)
Files:        src/eval.c
*** ../vim-7.2.091/src/eval.c    Sun Dec 21 13:02:47 2008
--- src/eval.c    Sat Jan 24 12:22:47 2009
***************
*** 7918,7926 ****
      else if (!aborting())
      {
      if (argcount == MAX_FUNC_ARGS)
!         emsg_funcname("E740: Too many arguments for function %s", name);
      else
!         emsg_funcname("E116: Invalid arguments for function %s", name);
      }
      while (--argcount >= 0)
--- 7918,7926 ----
      else if (!aborting())
      {
      if (argcount == MAX_FUNC_ARGS)
!         emsg_funcname(N_("E740: Too many arguments for function %s"), name);
      else
!         emsg_funcname(N_("E116: Invalid arguments for function %s"), name);
      }
      while (--argcount >= 0)
***************
*** 8153,8158 ****
--- 8153,8159 ----
  /*
   * Give an error message with a function name.  Handle <SNR> things.
+  * "ermsg" is to be passed without translation, use N_() instead of _().
   */
      static void
  emsg_funcname(ermsg, name)
***************
*** 19867,19873 ****
          }
          }
          else
!         emsg_funcname("E123: Undefined function: %s", name);
      }
      goto ret_free;
      }
--- 19868,19874 ----
          }
          }
          else
!         emsg_funcname(N_("E123: Undefined function: %s"), name);
      }
      goto ret_free;
      }
***************
*** 19911,19917 ****
                                : eval_isnamec(arg[j])))
          ++j;
          if (arg[j] != NUL)
!         emsg_funcname(_(e_invarg2), arg);
      }
      }
--- 19912,19918 ----
                                : eval_isnamec(arg[j])))
          ++j;
          if (arg[j] != NUL)
!         emsg_funcname(e_invarg2, arg);
      }
      }
***************
*** 20183,20189 ****
      v = find_var(name, &ht);
      if (v != NULL && v->di_tv.v_type == VAR_FUNC)
      {
!         emsg_funcname("E707: Function name conflicts with variable: %s",
                                      name);
          goto erret;
      }
--- 20184,20190 ----
      v = find_var(name, &ht);
      if (v != NULL && v->di_tv.v_type == VAR_FUNC)
      {
!         emsg_funcname(N_("E707: Function name conflicts with variable: %s"),
                                      name);
          goto erret;
      }
***************
*** 20198,20204 ****
          }
          if (fp->uf_calls > 0)
          {
!         emsg_funcname("E127: Cannot redefine function %s: It is in use",
                                      name);
          goto erret;
          }
--- 20199,20205 ----
          }
          if (fp->uf_calls > 0)
          {
!         emsg_funcname(N_("E127: Cannot redefine function %s: It is in use"),
                                      name);
          goto erret;
          }
***************
*** 21477,21483 ****
  /*
   * Return TRUE if items in "fc" do not have "copyID".  That means they are not
!  * referenced from anywyere.
   */
      static int
  can_free_funccal(fc, copyID)
--- 21478,21484 ----
  /*
   * Return TRUE if items in "fc" do not have "copyID".  That means they are not
!  * referenced from anywhere.
   */
      static int
  can_free_funccal(fc, copyID)
*** ../vim-7.2.091/src/version.c    Wed Jan 28 16:03:51 2009
--- src/version.c    Wed Jan 28 19:05:47 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     92,
  /**/
--
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/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.094
New file
@@ -0,0 +1,112 @@
To: vim-dev@vim.org
Subject: Patch 7.2.094
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.094
Problem:    Compiler warning for signed/unsigned compare.
Solution:   Add type cast.  Also fix a few typos.
Files:        src/edit.c
*** ../vim-7.2.093/src/edit.c    Tue Jan 13 12:29:03 2009
--- src/edit.c    Wed Jan 28 21:13:51 2009
***************
*** 1958,1963 ****
--- 1958,1964 ----
   * Only matters when there are composing characters.
   * Return TRUE when something was deleted.
   */
+ /*ARGSUSED*/
     static int
  del_char_after_col(limit_col)
      int limit_col;
***************
*** 1971,1977 ****
       * skip forward again when going too far back because of a
       * composing character. */
      mb_adjust_cursor();
!     while (curwin->w_cursor.col < limit_col)
      {
          int l = utf_ptr2len(ml_get_cursor());
--- 1972,1978 ----
       * skip forward again when going too far back because of a
       * composing character. */
      mb_adjust_cursor();
!     while (curwin->w_cursor.col < (colnr_T)limit_col)
      {
          int l = utf_ptr2len(ml_get_cursor());
***************
*** 4240,4246 ****
      }
      /* check if compl_curr_match has changed, (e.g. other type of
!      * expansion added somenthing) */
      if (type != 0 && compl_curr_match != old_match)
          found_new_match = OK;
--- 4241,4247 ----
      }
      /* check if compl_curr_match has changed, (e.g. other type of
!      * expansion added something) */
      if (type != 0 && compl_curr_match != old_match)
          found_new_match = OK;
***************
*** 4741,4747 ****
          }
          compl_length = curwin->w_cursor.col - (int)compl_col;
          /* IObuff is used to add a "word from the next line" would we
!          * have enough space?  just being paranoic */
  #define    MIN_SPACE 75
          if (compl_length > (IOSIZE - MIN_SPACE))
          {
--- 4742,4748 ----
          }
          compl_length = curwin->w_cursor.col - (int)compl_col;
          /* IObuff is used to add a "word from the next line" would we
!          * have enough space?  just being paranoid */
  #define    MIN_SPACE 75
          if (compl_length > (IOSIZE - MIN_SPACE))
          {
***************
*** 8206,8212 ****
  /*
   * If the cursor is on an indent, ^T/^D insert/delete one
   * shiftwidth.    Otherwise ^T/^D behave like a "<<" or ">>".
!  * Always round the indent to 'shiftwith', this is compatible
   * with vi.  But vi only supports ^T and ^D after an
   * autoindent, we support it everywhere.
   */
--- 8207,8213 ----
  /*
   * If the cursor is on an indent, ^T/^D insert/delete one
   * shiftwidth.    Otherwise ^T/^D behave like a "<<" or ">>".
!  * Always round the indent to 'shiftwidth', this is compatible
   * with vi.  But vi only supports ^T and ^D after an
   * autoindent, we support it everywhere.
   */
*** ../vim-7.2.093/src/version.c    Wed Jan 28 21:22:20 2009
--- src/version.c    Wed Feb  4 11:17:02 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     94,
  /**/
--
Despite the cost of living, have you noticed how it remains so popular?
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.095
New file
@@ -0,0 +1,63 @@
To: vim-dev@vim.org
Subject: Patch 7.2.095
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.095
Problem:    With Visual selection, "r" and then CTRL-C Visual mode is stopped
        but the highlighting is not removed.
Solution:   Call reset_VIsual().
Files:        src/normal.c
*** ../vim-7.2.094/src/normal.c    Thu Nov 20 16:11:03 2008
--- src/normal.c    Fri Jan 30 20:37:01 2009
***************
*** 6783,6788 ****
--- 6783,6790 ----
      /* Visual mode "r" */
      if (VIsual_active)
      {
+     if (got_int)
+         reset_VIsual();
      nv_operator(cap);
      return;
      }
***************
*** 7839,7845 ****
      else
          i = curwin->w_leftcol;
      /* Go to the middle of the screen line.  When 'number' is on and lines
!      * are wrapping the middle can be more to the left.*/
      if (cap->nchar == 'm')
          i += (W_WIDTH(curwin) - curwin_col_off()
              + ((curwin->w_p_wrap && i > 0)
--- 7841,7847 ----
      else
          i = curwin->w_leftcol;
      /* Go to the middle of the screen line.  When 'number' is on and lines
!      * are wrapping the middle can be more to the left. */
      if (cap->nchar == 'm')
          i += (W_WIDTH(curwin) - curwin_col_off()
              + ((curwin->w_p_wrap && i > 0)
*** ../vim-7.2.094/src/version.c    Wed Feb  4 11:19:40 2009
--- src/version.c    Wed Feb  4 11:43:28 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     95,
  /**/
--
Nothing is fool-proof to a sufficiently talented fool.
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.096
New file
@@ -0,0 +1,54 @@
To: vim-dev@vim.org
Subject: Patch 7.2.096
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.096
Problem:    After ":number" the "Press Enter" message may be on the wrong
        screen, if switching screens for shell commands.
Solution:   Reset info_message. (James Vega)
Files:        src/ex_cmds.c
*** ../vim-7.2.095/src/ex_cmds.c    Tue Jan 13 16:57:09 2009
--- src/ex_cmds.c    Fri Jan 30 21:01:54 2009
***************
*** 2417,2424 ****
      cursor_on();        /* msg_start() switches it off */
      out_flush();
      silent_mode = save_silent;
-     info_message = FALSE;
      }
  }
  /*
--- 2417,2424 ----
      cursor_on();        /* msg_start() switches it off */
      out_flush();
      silent_mode = save_silent;
      }
+     info_message = FALSE;
  }
  /*
*** ../vim-7.2.095/src/version.c    Wed Feb  4 11:45:28 2009
--- src/version.c    Wed Feb  4 13:12:55 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     96,
  /**/
--
A fine is a tax for doing wrong.  A tax is a fine for doing well.
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.097
New file
@@ -0,0 +1,54 @@
To: vim-dev@vim.org
Subject: Patch 7.2.097
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.097
Problem:    "!xterm&" doesn't work when 'shell' is "bash".
Solution:   Ignore SIGHUP after calling setsid(). (Simon Schubert)
Files:        src/os_unix.c
*** ../vim-7.2.096/src/os_unix.c    Fri Nov 28 21:26:50 2008
--- src/os_unix.c    Wed Feb  4 12:09:55 2009
***************
*** 3950,3956 ****
--- 3950,3966 ----
           * children can be kill()ed.  Don't do this when using pipes,
           * because stdin is not a tty, we would lose /dev/tty. */
          if (p_stmp)
+         {
              (void)setsid();
+ #  if defined(SIGHUP)
+             /* When doing "!xterm&" and 'shell' is bash: the shell
+              * will exit and send SIGHUP to all processes in its
+              * group, killing the just started process.  Ignore SIGHUP
+              * to avoid that. (suggested by Simon Schubert)
+              */
+             signal(SIGHUP, SIG_IGN);
+ #  endif
+         }
  # endif
  # ifdef FEAT_GUI
          if (pty_slave_fd >= 0)
*** ../vim-7.2.096/src/version.c    Wed Feb  4 13:13:42 2009
--- src/version.c    Wed Feb  4 14:16:37 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     97,
  /**/
--
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/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.098
New file
@@ -0,0 +1,69 @@
To: vim-dev@vim.org
Subject: Patch 7.2.098
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.098
Problem:    Warning for signed/unsigned pointer.
Solution:   Add type cast.
Files:        src/eval.c
*** ../vim-7.2.097/src/eval.c    Wed Jan 28 19:08:31 2009
--- src/eval.c    Wed Feb  4 13:09:01 2009
***************
*** 3928,3934 ****
  /*
   * Handle top level expression:
!  *    expr1 ? expr0 : expr0
   *
   * "arg" must point to the first non-white of the expression.
   * "arg" is advanced to the next non-white after the recognized expression.
--- 3928,3934 ----
  /*
   * Handle top level expression:
!  *    expr2 ? expr1 : expr1
   *
   * "arg" must point to the first non-white of the expression.
   * "arg" is advanced to the next non-white after the recognized expression.
***************
*** 19912,19918 ****
                                : eval_isnamec(arg[j])))
          ++j;
          if (arg[j] != NUL)
!         emsg_funcname(e_invarg2, arg);
      }
      }
--- 19912,19918 ----
                                : eval_isnamec(arg[j])))
          ++j;
          if (arg[j] != NUL)
!         emsg_funcname((char *)e_invarg2, arg);
      }
      }
*** ../vim-7.2.097/src/version.c    Wed Feb  4 14:18:44 2009
--- src/version.c    Wed Feb  4 16:24:06 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     98,
  /**/
--
Everybody lies, but it doesn't matter since nobody listens.
                                -- Lieberman's Law
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.099
New file
@@ -0,0 +1,127 @@
To: vim-dev@vim.org
Subject: Patch 7.2.099
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.099
Problem:    Changing GUI options causes an unnecessary redraw when the GUI
        isn't active.
Solution:   Avoid the redraw. (Lech Lorens)
Files:        src/option.c
*** ../vim-7.2.098/src/option.c    Wed Dec 24 12:53:33 2008
--- src/option.c    Wed Feb  4 16:59:56 2009
***************
*** 5407,5412 ****
--- 5407,5416 ----
      int        did_chartab = FALSE;
      char_u    **gvarp;
      long_u    free_oldval = (options[opt_idx].flags & P_ALLOCED);
+ #ifdef FEAT_GUI
+     /* set when changing an option that only requires a redraw in the GUI */
+     int        redraw_gui_only = FALSE;
+ #endif
      /* Get the global option to compare with, otherwise we would have to check
       * two values for all local options. */
***************
*** 6055,6060 ****
--- 6059,6065 ----
              errmsg = (char_u *)N_("E596: Invalid font(s)");
          }
      }
+     redraw_gui_only = TRUE;
      }
  # ifdef FEAT_XFONTSET
      else if (varp == &p_guifontset)
***************
*** 6063,6068 ****
--- 6068,6074 ----
          errmsg = (char_u *)N_("E597: can't select fontset");
      else if (gui.in_use && gui_init_font(p_guifontset, TRUE) != OK)
          errmsg = (char_u *)N_("E598: Invalid fontset");
+     redraw_gui_only = TRUE;
      }
  # endif
  # ifdef FEAT_MBYTE
***************
*** 6072,6077 ****
--- 6078,6084 ----
          errmsg = (char_u *)N_("E533: can't select wide font");
      else if (gui_get_wide_font() == FAIL)
          errmsg = (char_u *)N_("E534: Invalid wide font");
+     redraw_gui_only = TRUE;
      }
  # endif
  #endif
***************
*** 6133,6145 ****
--- 6140,6163 ----
  #ifdef FEAT_GUI
      /* 'guioptions' */
      else if (varp == &p_go)
+     {
      gui_init_which_components(oldval);
+     redraw_gui_only = TRUE;
+     }
  #endif
  #if defined(FEAT_GUI_TABLINE)
      /* 'guitablabel' */
      else if (varp == &p_gtl)
+     {
      redraw_tabline = TRUE;
+     redraw_gui_only = TRUE;
+     }
+     /* 'guitabtooltip' */
+     else if (varp == &p_gtt)
+     {
+     redraw_gui_only = TRUE;
+     }
  #endif
  #if defined(FEAT_MOUSE_TTY) && (defined(UNIX) || defined(VMS))
***************
*** 6717,6723 ****
      if (curwin->w_curswant != MAXCOL)
      curwin->w_set_curswant = TRUE;  /* in case 'showbreak' changed */
!     check_redraw(options[opt_idx].flags);
      return errmsg;
  }
--- 6735,6745 ----
      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)
! #endif
!     check_redraw(options[opt_idx].flags);
      return errmsg;
  }
*** ../vim-7.2.098/src/version.c    Wed Feb  4 16:25:53 2009
--- src/version.c    Wed Feb  4 17:24:11 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     99,
  /**/
--
I started out with nothing, and I still have most of it.
                                -- Michael Davis -- "Tonight Show"
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.100
New file
@@ -0,0 +1,132 @@
To: vim-dev@vim.org
Subject: Patch 7.2.100
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.100
Problem:    When using ":source" on a FIFO or something else that can't rewind
        the first three bytes are skipped.
Solution:   Instead of rewinding read the first line and detect a BOM in that.
        (mostly by James Vega)
Files:        src/ex_cmds2.c
*** ../vim-7.2.099/src/ex_cmds2.c    Sat Nov 15 14:10:23 2008
--- src/ex_cmds2.c    Wed Feb  4 16:05:51 2009
***************
*** 2842,2847 ****
--- 2842,2848 ----
      linenr_T            save_sourcing_lnum;
      char_u            *p;
      char_u            *fname_exp;
+     char_u            *firstline = NULL;
      int                retval = FAIL;
  #ifdef FEAT_EVAL
      scid_T            save_current_SID;
***************
*** 2992,3014 ****
      cookie.level = ex_nesting_level;
  #endif
- #ifdef FEAT_MBYTE
-     cookie.conv.vc_type = CONV_NONE;        /* no conversion */
-
-     /* Try reading the first few bytes to check for a UTF-8 BOM. */
-     {
-     char_u        buf[3];
-
-     if (fread((char *)buf, sizeof(char_u), (size_t)3, cookie.fp)
-                                   == (size_t)3
-         && buf[0] == 0xef && buf[1] == 0xbb && buf[2] == 0xbf)
-         /* Found BOM, setup conversion and skip over it. */
-         convert_setup(&cookie.conv, (char_u *)"utf-8", p_enc);
-     else
-         /* No BOM found, rewind. */
-         fseek(cookie.fp, 0L, SEEK_SET);
-     }
- #endif
      /*
       * Keep the sourcing name/lnum, for recursive calls.
--- 2993,2998 ----
***************
*** 3018,3023 ****
--- 3002,3026 ----
      save_sourcing_lnum = sourcing_lnum;
      sourcing_lnum = 0;
+ #ifdef FEAT_MBYTE
+     cookie.conv.vc_type = CONV_NONE;        /* no conversion */
+
+     /* Read the first line so we can check for a UTF-8 BOM. */
+     firstline = getsourceline(0, (void *)&cookie, 0);
+     if (firstline != NULL && STRLEN(firstline) >= 3 && firstline[0] == 0xef
+                   && firstline[1] == 0xbb && firstline[2] == 0xbf)
+     {
+     /* Found BOM; setup conversion, skip over BOM and recode the line. */
+     convert_setup(&cookie.conv, (char_u *)"utf-8", p_enc);
+     p = string_convert(&cookie.conv, firstline + 3, NULL);
+     if (p != NULL)
+     {
+         vim_free(firstline);
+         firstline = p;
+     }
+     }
+ #endif
+
  #ifdef STARTUPTIME
      time_push(&tv_rel, &tv_start);
  #endif
***************
*** 3111,3119 ****
      /*
       * Call do_cmdline, which will call getsourceline() to get the lines.
       */
!     do_cmdline(NULL, getsourceline, (void *)&cookie,
                       DOCMD_VERBOSE|DOCMD_NOWAIT|DOCMD_REPEAT);
-
      retval = OK;
  #ifdef FEAT_PROFILE
--- 3114,3121 ----
      /*
       * Call do_cmdline, which will call getsourceline() to get the lines.
       */
!     do_cmdline(firstline, getsourceline, (void *)&cookie,
                       DOCMD_VERBOSE|DOCMD_NOWAIT|DOCMD_REPEAT);
      retval = OK;
  #ifdef FEAT_PROFILE
***************
*** 3171,3176 ****
--- 3173,3179 ----
  #endif
      fclose(cookie.fp);
      vim_free(cookie.nextline);
+     vim_free(firstline);
  #ifdef FEAT_MBYTE
      convert_setup(&cookie.conv, NULL, NULL);
  #endif
*** ../vim-7.2.099/src/version.c    Wed Feb  4 17:27:50 2009
--- src/version.c    Wed Feb  4 17:48:47 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     100,
  /**/
--
Well, you come from nothing, you go back to nothing...  What have you
lost?  Nothing!
                -- Monty Python: The life of Brian
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.102
New file
@@ -0,0 +1,47 @@
To: vim-dev@vim.org
Subject: Patch 7.2.102
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.102 (after 7.2.100)
Problem:    When 'encoding' is "utf-8" a BOM at the start of a Vim script is
        not removed. (Tony Mechelynck)
Solution:   When no conversion is taking place make a copy of the line without
        the BOM.
Files:        src/ex_cmds2.c
*** ../vim-7.2.101/src/ex_cmds2.c    Wed Feb  4 17:49:46 2009
--- src/ex_cmds2.c    Thu Feb  5 20:41:56 2009
***************
*** 3013,3018 ****
--- 3013,3020 ----
      /* Found BOM; setup conversion, skip over BOM and recode the line. */
      convert_setup(&cookie.conv, (char_u *)"utf-8", p_enc);
      p = string_convert(&cookie.conv, firstline + 3, NULL);
+     if (p == NULL)
+         p = vim_strsave(firstline + 3);
      if (p != NULL)
      {
          vim_free(firstline);
*** ../vim-7.2.101/src/version.c    Wed Feb  4 18:34:54 2009
--- src/version.c    Thu Feb  5 20:44:55 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     102,
  /**/
--
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/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.103
New file
@@ -0,0 +1,216 @@
To: vim-dev@vim.org
Subject: Patch 7.2.103
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.103
Problem:    When 'bomb' is changed the window title is updated to show/hide a
        "+", but the tab page label isn't. (Patrick Texier)
Solution:   Set "redraw_tabline" in most places where "need_maketitle" is set.
        (partly by Lech Lorens)
Files:        src/option.c
*** ../vim-7.2.102/src/option.c    Wed Feb  4 17:27:50 2009
--- src/option.c    Wed Feb  4 17:40:02 2009
***************
*** 5268,5273 ****
--- 5268,5288 ----
  }
  #endif
+ #ifdef FEAT_TITLE
+ static void redraw_titles __ARGS((void));
+
+ /*
+  * Redraw the window title and/or tab page text later.
+  */
+ static void redraw_titles()
+ {
+     need_maketitle = TRUE;
+ # ifdef FEAT_WINDOWS
+     redraw_tabline = TRUE;
+ # endif
+ }
+ #endif
+
  /*
   * Set a string option to a new value (without checking the effect).
   * The string is copied into allocated memory.
***************
*** 5672,5678 ****
          {
  # ifdef FEAT_TITLE
          /* May show a "+" in the title now. */
!         need_maketitle = TRUE;
  # endif
          /* Add 'fileencoding' to the swap file. */
          ml_setflags(curbuf);
--- 5687,5693 ----
          {
  # ifdef FEAT_TITLE
          /* May show a "+" in the title now. */
!         redraw_titles();
  # endif
          /* Add 'fileencoding' to the swap file. */
          ml_setflags(curbuf);
***************
*** 5691,5697 ****
          {
          errmsg = mb_init();
  # ifdef FEAT_TITLE
!         need_maketitle = TRUE;
  # endif
          }
      }
--- 5706,5712 ----
          {
          errmsg = mb_init();
  # ifdef FEAT_TITLE
!         redraw_titles();
  # endif
          }
      }
***************
*** 5800,5806 ****
          else
          curbuf->b_p_tx = FALSE;
  #ifdef FEAT_TITLE
!         need_maketitle = TRUE;
  #endif
          /* update flag in swap file */
          ml_setflags(curbuf);
--- 5815,5821 ----
          else
          curbuf->b_p_tx = FALSE;
  #ifdef FEAT_TITLE
!         redraw_titles();
  #endif
          /* update flag in swap file */
          ml_setflags(curbuf);
***************
*** 7127,7148 ****
          curbuf->b_did_warn = FALSE;
  #ifdef FEAT_TITLE
!     need_maketitle = TRUE;
  #endif
      }
  #ifdef FEAT_TITLE
      /* when 'modifiable' is changed, redraw the window title */
      else if ((int *)varp == &curbuf->b_p_ma)
!     need_maketitle = TRUE;
      /* when 'endofline' is changed, redraw the window title */
      else if ((int *)varp == &curbuf->b_p_eol)
!     need_maketitle = TRUE;
! #ifdef FEAT_MBYTE
!     /* when 'bomb' is changed, redraw the window title */
      else if ((int *)varp == &curbuf->b_p_bomb)
!     need_maketitle = TRUE;
! #endif
  #endif
      /* when 'bin' is set also set some other options */
--- 7142,7169 ----
          curbuf->b_did_warn = FALSE;
  #ifdef FEAT_TITLE
!     redraw_titles();
  #endif
      }
  #ifdef FEAT_TITLE
      /* when 'modifiable' is changed, redraw the window title */
      else if ((int *)varp == &curbuf->b_p_ma)
!     {
!     redraw_titles();
!     }
      /* when 'endofline' is changed, redraw the window title */
      else if ((int *)varp == &curbuf->b_p_eol)
!     {
!     redraw_titles();
!     }
! # ifdef FEAT_MBYTE
!     /* when 'bomb' is changed, redraw the window title and tab page text */
      else if ((int *)varp == &curbuf->b_p_bomb)
!     {
!     redraw_titles();
!     }
! # endif
  #endif
      /* when 'bin' is set also set some other options */
***************
*** 7150,7156 ****
      {
      set_options_bin(old_value, curbuf->b_p_bin, opt_flags);
  #ifdef FEAT_TITLE
!     need_maketitle = TRUE;
  #endif
      }
--- 7171,7177 ----
      {
      set_options_bin(old_value, curbuf->b_p_bin, opt_flags);
  #ifdef FEAT_TITLE
!     redraw_titles();
  #endif
      }
***************
*** 7301,7307 ****
      if (!value)
          save_file_ff(curbuf);    /* Buffer is unchanged */
  #ifdef FEAT_TITLE
!     need_maketitle = TRUE;
  #endif
  #ifdef FEAT_AUTOCMD
      modified_was_set = value;
--- 7322,7328 ----
      if (!value)
          save_file_ff(curbuf);    /* Buffer is unchanged */
  #ifdef FEAT_TITLE
!     redraw_titles();
  #endif
  #ifdef FEAT_AUTOCMD
      modified_was_set = value;
***************
*** 7736,7742 ****
      newFoldLevel();
      }
!     /* 'foldminlevel' */
      else if (pp == &curwin->w_p_fml)
      {
      foldUpdateAll(curwin);
--- 7757,7763 ----
      newFoldLevel();
      }
!     /* 'foldminlines' */
      else if (pp == &curwin->w_p_fml)
      {
      foldUpdateAll(curwin);
*** ../vim-7.2.102/src/version.c    Thu Feb  5 20:47:14 2009
--- src/version.c    Wed Feb 11 11:32:20 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     103,
  /**/
--
hundred-and-one symptoms of being an internet addict:
73. You give your dog used motherboards instead of bones
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.104
New file
@@ -0,0 +1,51 @@
To: vim-dev@vim.org
Subject: Patch 7.2.104
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.104
Problem:    When using ":saveas bar.c" the tab label isn't updated right away.
Solution:   Set redraw_tabline. (Francois Ingelrest)
Files:      src/ex_cmds.c
*** ../vim-7.2.103/src/ex_cmds.c    Wed Feb  4 13:13:42 2009
--- src/ex_cmds.c    Wed Feb 11 15:58:06 2009
***************
*** 2707,2713 ****
--- 2707,2718 ----
      if (eap->cmdidx == CMD_saveas)
      {
          if (retval == OK)
+         {
          curbuf->b_p_ro = FALSE;
+ #ifdef FEAT_WINDOWS
+         redraw_tabline = TRUE;
+ #endif
+         }
          /* Change directories when the 'acd' option is set. */
          DO_AUTOCHDIR
      }
*** ../vim-7.2.103/src/version.c    Wed Feb 11 11:34:24 2009
--- src/version.c    Wed Feb 11 16:02:19 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     104,
  /**/
--
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/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.105
New file
@@ -0,0 +1,72 @@
To: vim-dev@vim.org
Subject: Patch 7.2.105
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.105
Problem:    Modeline setting for 'foldmethod' overrules diff options. (Ingo
        Karkat)
Solution:   Don't set 'foldmethod' and 'wrap' from a modeline when 'diff' is
        on.
Files:        src/option.c
*** ../vim-7.2.104/src/option.c    Wed Feb 11 11:34:24 2009
--- src/option.c    Wed Feb 11 16:29:56 2009
***************
*** 4119,4129 ****
                         && options[opt_idx].var == VAR_WIN)
          goto skip;
!         /* Disallow changing some options from modelines */
!         if ((opt_flags & OPT_MODELINE) && (flags & P_SECURE))
          {
!         errmsg = (char_u *)_("E520: Not allowed in a modeline");
!         goto skip;
          }
  #ifdef HAVE_SANDBOX
--- 4119,4139 ----
                         && options[opt_idx].var == VAR_WIN)
          goto skip;
!         /* Disallow changing some options from modelines. */
!         if (opt_flags & OPT_MODELINE)
          {
!         if (flags & P_SECURE)
!         {
!             errmsg = (char_u *)_("E520: Not allowed in a modeline");
!             goto skip;
!         }
!         /* In diff mode some options are overruled.  This avoids that
!          * 'foldmethod' becomes "marker" instead of "diff" and that
!          * "wrap" gets set. */
!         if (curwin->w_p_diff
!             && (options[opt_idx].indir == PV_FDM
!                 || options[opt_idx].indir == PV_WRAP))
!             goto skip;
          }
  #ifdef HAVE_SANDBOX
*** ../vim-7.2.104/src/version.c    Wed Feb 11 16:02:29 2009
--- src/version.c    Wed Feb 11 16:40:35 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     105,
  /**/
--
hundred-and-one symptoms of being an internet addict:
76. Your ISP regards you as a business partner rather than as a customer.
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.106
New file
@@ -0,0 +1,103 @@
To: vim-dev@vim.org
Subject: Patch 7.2.106
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.106
Problem:    Endless loop when using "]s" in HTML when there are no
        misspellings. (Ingo Karkat)
Solution:   Break the search loop.  Also fix pointer alignment for systems
        with pointers larger than int.
Files:        src/spell.c
*** ../vim-7.2.105/src/spell.c    Tue Dec  9 22:34:02 2008
--- src/spell.c    Wed Feb 11 17:54:50 2009
***************
*** 2376,2382 ****
          /* If we are back at the starting line and there is no match then
           * give up. */
!         if (lnum == wp->w_cursor.lnum && !found_one)
          break;
          /* Skip the characters at the start of the next line that were
--- 2376,2382 ----
          /* If we are back at the starting line and there is no match then
           * give up. */
!         if (lnum == wp->w_cursor.lnum && (!found_one || wrapped))
          break;
          /* Skip the characters at the start of the next line that were
***************
*** 4956,4968 ****
   * Structure that is used to store the items in the word tree.  This avoids
   * the need to keep track of each allocated thing, everything is freed all at
   * once after ":mkspell" is done.
   */
  #define  SBLOCKSIZE 16000    /* size of sb_data */
  typedef struct sblock_S sblock_T;
  struct sblock_S
  {
-     sblock_T    *sb_next;    /* next block in list */
      int        sb_used;    /* nr of bytes already in use */
      char_u    sb_data[1];    /* data, actually longer */
  };
--- 4956,4971 ----
   * Structure that is used to store the items in the word tree.  This avoids
   * the need to keep track of each allocated thing, everything is freed all at
   * once after ":mkspell" is done.
+  * Note: "sb_next" must be just before "sb_data" to make sure the alignment of
+  * "sb_data" is correct for systems where pointers must be aligned on
+  * pointer-size boundaries and sizeof(pointer) > sizeof(int) (e.g., Sparc).
   */
  #define  SBLOCKSIZE 16000    /* size of sb_data */
  typedef struct sblock_S sblock_T;
  struct sblock_S
  {
      int        sb_used;    /* nr of bytes already in use */
+     sblock_T    *sb_next;    /* next block in list */
      char_u    sb_data[1];    /* data, actually longer */
  };
***************
*** 15011,15017 ****
      case 0:
          /*
!          * Lenghts are equal, thus changes must result in same length: An
           * insert is only possible in combination with a delete.
           * 1: check if for identical strings
           */
--- 15014,15020 ----
      case 0:
          /*
!          * Lengths are equal, thus changes must result in same length: An
           * insert is only possible in combination with a delete.
           * 1: check if for identical strings
           */
*** ../vim-7.2.105/src/version.c    Wed Feb 11 16:45:56 2009
--- src/version.c    Wed Feb 11 17:56:34 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     106,
  /**/
--
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/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.107
New file
@@ -0,0 +1,56 @@
To: vim-dev@vim.org
Subject: Patch 7.2.107
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.107
Problem:    When using a GUI dialog and ":echo" commands the messages are
        deleted after the dialog. (Vicent Birebent)
Solution:   Don't call msg_end_prompt() since there was no prompt.
Files:        src/message.c
*** ../vim-7.2.106/src/message.c    Tue Jan 13 16:37:31 2009
--- src/message.c    Wed Feb 11 18:38:14 2009
***************
*** 3309,3315 ****
      {
      c = gui_mch_dialog(type, title, message, buttons, dfltbutton,
                                     textfield);
!     msg_end_prompt();
      /* Flush output to avoid that further messages and redrawing is done
       * in the wrong order. */
--- 3309,3318 ----
      {
      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;
!     cmdline_row = msg_row;
      /* Flush output to avoid that further messages and redrawing is done
       * in the wrong order. */
*** ../vim-7.2.106/src/version.c    Wed Feb 11 17:57:43 2009
--- src/version.c    Wed Feb 11 18:46:12 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     107,
  /**/
--
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/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.108
New file
@@ -0,0 +1,55 @@
To: vim-dev@vim.org
Subject: Patch 7.2.108
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.108 (after 7.2.105)
Problem:    Can't build without the diff feature.
Solution:   Add #ifdef.
Files:        src/option.c
*** ../vim-7.2.107/src/option.c    Wed Feb 11 16:45:56 2009
--- src/option.c    Wed Feb 11 22:21:16 2009
***************
*** 4127,4132 ****
--- 4127,4133 ----
              errmsg = (char_u *)_("E520: Not allowed in a modeline");
              goto skip;
          }
+ #ifdef FEAT_DIFF
          /* In diff mode some options are overruled.  This avoids that
           * 'foldmethod' becomes "marker" instead of "diff" and that
           * "wrap" gets set. */
***************
*** 4134,4139 ****
--- 4135,4141 ----
              && (options[opt_idx].indir == PV_FDM
                  || options[opt_idx].indir == PV_WRAP))
              goto skip;
+ #endif
          }
  #ifdef HAVE_SANDBOX
*** ../vim-7.2.107/src/version.c    Wed Feb 11 18:46:48 2009
--- src/version.c    Wed Feb 11 22:46:40 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     108,
  /**/
--
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/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.109
New file
@@ -0,0 +1,423 @@
To: vim-dev@vim.org
Subject: Patch 7.2.109
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.109
Problem:    'langmap' does not work for multi-byte characters.
Solution:   Add a list of mapped multi-byte characters. (based on work by
            Konstantin Korikov, Agathoklis Hatzimanikas)
Files:      runtime/doc/options.txt, src/edit.c, src/getchar.c, src/macros.h,
            src/normal.c, src/option.c, src/proto/option.pro, src/window.c
*** ../vim-7.2.108/runtime/doc/options.txt    Fri Nov 28 10:59:57 2008
--- runtime/doc/options.txt    Wed Feb 11 18:59:34 2009
***************
*** 4175,4183 ****
      be able to execute Normal mode commands.
      This is the opposite of the 'keymap' option, where characters are
      mapped in Insert mode.
-     This only works for 8-bit characters.  The value of 'langmap' may be
-     specified with multi-byte characters (e.g., UTF-8), but only the lower
-     8 bits of each character will be used.
      Example (for Greek, in UTF-8):                *greek*  >
          :set langmap=ΑA,ΒB,ΨC,ΔD,ΕE,ΦF,ΓG,ΗH,ΙI,ΞJ,ΚK,ΛL,ΜM,ΝN,ΟO,ΠP,QQ,ΡR,ΣS,ΤT,ΘU,ΩV,WW,ΧX,ΥY,ΖZ,αa,βb,ψc,δd,εe,φf,γg,ηh,ιi,ξj,κk,λl,μm,νn,οo,πp,qq,ρr,σs,τt,θu,ωv,ςw,χx,υy,ζz
--- 4188,4193 ----
*** ../vim-7.2.108/src/edit.c    Wed Feb  4 11:19:40 2009
--- src/edit.c    Sat Feb 21 19:54:03 2009
***************
*** 7703,7711 ****
       */
      ++no_mapping;
      regname = plain_vgetc();
- #ifdef FEAT_LANGMAP
      LANGMAP_ADJUST(regname, TRUE);
- #endif
      if (regname == Ctrl_R || regname == Ctrl_O || regname == Ctrl_P)
      {
      /* Get a third key for literal register insertion */
--- 7703,7709 ----
***************
*** 7714,7722 ****
      add_to_showcmd_c(literally);
  #endif
      regname = plain_vgetc();
- #ifdef FEAT_LANGMAP
      LANGMAP_ADJUST(regname, TRUE);
- #endif
      }
      --no_mapping;
--- 7712,7718 ----
*** ../vim-7.2.108/src/macros.h    Wed Aug 15 20:41:07 2007
--- src/macros.h    Sat Feb 21 19:55:38 2009
***************
*** 127,141 ****
  #ifdef FEAT_LANGMAP
  /*
   * Adjust chars in a language according to 'langmap' option.
!  * NOTE that there is NO overhead if 'langmap' is not set; but even
!  * when set we only have to do 2 ifs and an array lookup.
   * Don't apply 'langmap' if the character comes from the Stuff buffer.
   * The do-while is just to ignore a ';' after the macro.
   */
! # define LANGMAP_ADJUST(c, condition) do { \
!     if (*p_langmap && (condition) && !KeyStuffed && (c) >= 0 && (c) < 256) \
!         c = langmap_mapchar[c]; \
      } while (0)
  #endif
  /*
--- 127,157 ----
  #ifdef FEAT_LANGMAP
  /*
   * Adjust chars in a language according to 'langmap' option.
!  * NOTE that there is no noticeable overhead if 'langmap' is not set.
!  * When set the overhead for characters < 256 is small.
   * Don't apply 'langmap' if the character comes from the Stuff buffer.
   * The do-while is just to ignore a ';' after the macro.
   */
! # ifdef FEAT_MBYTE
! #  define LANGMAP_ADJUST(c, condition) \
!     do { \
!         if (*p_langmap && (condition) && !KeyStuffed && (c) >= 0) \
!     { \
!         if ((c) < 256) \
!         c = langmap_mapchar[c]; \
!         else \
!         c = langmap_adjust_mb(c); \
!     } \
      } while (0)
+ # else
+ #  define LANGMAP_ADJUST(c, condition) \
+     do { \
+         if (*p_langmap && (condition) && !KeyStuffed && (c) >= 0 && (c) < 256) \
+             c = langmap_mapchar[c]; \
+     } while (0)
+ # endif
+ #else
+ # define LANGMAP_ADJUST(c, condition) /* nop */
  #endif
  /*
*** ../vim-7.2.108/src/normal.c    Wed Feb  4 11:45:28 2009
--- src/normal.c    Sat Feb 21 19:55:17 2009
***************
*** 651,660 ****
       * Get the command character from the user.
       */
      c = safe_vgetc();
-
- #ifdef FEAT_LANGMAP
      LANGMAP_ADJUST(c, TRUE);
- #endif
  #ifdef FEAT_VISUAL
      /*
--- 651,657 ----
***************
*** 744,752 ****
          }
          ++no_zero_mapping;        /* don't map zero here */
          c = plain_vgetc();
- #ifdef FEAT_LANGMAP
          LANGMAP_ADJUST(c, TRUE);
- #endif
          --no_zero_mapping;
          if (ctrl_w)
          {
--- 741,747 ----
***************
*** 769,777 ****
          ++no_mapping;
          ++allow_keys;        /* no mapping for nchar, but keys */
          c = plain_vgetc();        /* get next character */
- #ifdef FEAT_LANGMAP
          LANGMAP_ADJUST(c, TRUE);
- #endif
          --no_mapping;
          --allow_keys;
  #ifdef FEAT_CMDL_INFO
--- 764,770 ----
***************
*** 959,967 ****
           * "gr", "g'" and "g`".
           */
          ca.nchar = plain_vgetc();
- #ifdef FEAT_LANGMAP
          LANGMAP_ADJUST(ca.nchar, TRUE);
- #endif
  #ifdef FEAT_CMDL_INFO
          need_flushbuf |= add_to_showcmd(ca.nchar);
  #endif
--- 952,958 ----
***************
*** 1062,1071 ****
          }
  #endif
- #ifdef FEAT_LANGMAP
          /* adjust chars > 127, except after "tTfFr" commands */
          LANGMAP_ADJUST(*cp, !lang);
- #endif
  #ifdef FEAT_RIGHTLEFT
          /* adjust Hebrew mapped char */
          if (p_hkmap && lang && KeyTyped)
--- 1053,1060 ----
***************
*** 4630,4638 ****
          ++no_mapping;
          ++allow_keys;   /* no mapping for nchar, but allow key codes */
          nchar = plain_vgetc();
- #ifdef FEAT_LANGMAP
          LANGMAP_ADJUST(nchar, TRUE);
- #endif
          --no_mapping;
          --allow_keys;
  #ifdef FEAT_CMDL_INFO
--- 4619,4625 ----
***************
*** 4988,4996 ****
          ++no_mapping;
          ++allow_keys;   /* no mapping for nchar, but allow key codes */
          nchar = plain_vgetc();
- #ifdef FEAT_LANGMAP
          LANGMAP_ADJUST(nchar, TRUE);
- #endif
          --no_mapping;
          --allow_keys;
  #ifdef FEAT_CMDL_INFO
--- 4975,4981 ----
*** ../vim-7.2.108/src/option.c    Wed Feb 11 22:47:32 2009
--- src/option.c    Sat Feb 21 19:46:13 2009
***************
*** 10153,10177 ****
  #ifdef FEAT_LANGMAP
  /*
!  * Any character has an equivalent character.  This is used for keyboards that
!  * have a special language mode that sends characters above 128 (although
!  * other characters can be translated too).
   */
  /*
!  * char_u langmap_mapchar[256];
!  * Normally maps each of the 128 upper chars to an <128 ascii char; used to
!  * "translate" native lang chars in normal mode or some cases of
!  * insert mode without having to tediously switch lang mode back&forth.
   */
      static void
  langmap_init()
  {
      int i;
!     for (i = 0; i < 256; i++)        /* we init with a-one-to one map */
!     langmap_mapchar[i] = i;
  }
  /*
--- 10153,10262 ----
  #ifdef FEAT_LANGMAP
  /*
!  * Any character has an equivalent 'langmap' character.  This is used for
!  * keyboards that have a special language mode that sends characters above
!  * 128 (although other characters can be translated too).  The "to" field is a
!  * Vim command character.  This avoids having to switch the keyboard back to
!  * ASCII mode when leaving Insert mode.
!  *
!  * langmap_mapchar[] maps any of 256 chars to an ASCII char used for Vim
!  * commands.
!  * When FEAT_MBYTE is defined langmap_mapga.ga_data is a sorted table of
!  * langmap_entry_T.  This does the same as langmap_mapchar[] for characters >=
!  * 256.
!  */
! # ifdef FEAT_MBYTE
! /*
!  * With multi-byte support use growarray for 'langmap' chars >= 256
   */
+ typedef struct
+ {
+     int        from;
+     int     to;
+ } langmap_entry_T;
+
+ static garray_T langmap_mapga;
+ static void langmap_set_entry __ARGS((int from, int to));
+
+ /*
+  * Search for an entry in "langmap_mapga" for "from".  If found set the "to"
+  * field.  If not found insert a new entry at the appropriate location.
+  */
+     static void
+ langmap_set_entry(from, to)
+     int    from;
+     int    to;
+ {
+     langmap_entry_T *entries = (langmap_entry_T *)(langmap_mapga.ga_data);
+     int             a = 0;
+     int             b = langmap_mapga.ga_len;
+
+     /* Do a binary search for an existing entry. */
+     while (a != b)
+     {
+     int i = (a + b) / 2;
+     int d = entries[i].from - from;
+
+     if (d == 0)
+     {
+         entries[i].to = to;
+         return;
+     }
+     if (d < 0)
+         a = i + 1;
+     else
+         b = i;
+     }
+
+     if (ga_grow(&langmap_mapga, 1) != OK)
+     return;  /* out of memory */
+
+     /* insert new entry at position "a" */
+     entries = (langmap_entry_T *)(langmap_mapga.ga_data) + a;
+     mch_memmove(entries + 1, entries,
+             (langmap_mapga.ga_len - a) * sizeof(langmap_entry_T));
+     ++langmap_mapga.ga_len;
+     entries[0].from = from;
+     entries[0].to = to;
+ }
  /*
!  * Apply 'langmap' to multi-byte character "c" and return the result.
   */
+     int
+ langmap_adjust_mb(c)
+     int c;
+ {
+     langmap_entry_T *entries = (langmap_entry_T *)(langmap_mapga.ga_data);
+     int a = 0;
+     int b = langmap_mapga.ga_len;
+
+     while (a != b)
+     {
+     int i = (a + b) / 2;
+     int d = entries[i].from - c;
+
+     if (d == 0)
+         return entries[i].to;  /* found matching entry */
+     if (d < 0)
+         a = i + 1;
+     else
+         b = i;
+     }
+     return c;  /* no entry found, return "c" unmodified */
+ }
+ # endif
      static void
  langmap_init()
  {
      int i;
!     for (i = 0; i < 256; i++)
!     langmap_mapchar[i] = i;     /* we init with a one-to-one map */
! # ifdef FEAT_MBYTE
!     ga_init2(&langmap_mapga, sizeof(langmap_entry_T), 8);
! # endif
  }
  /*
***************
*** 10185,10191 ****
      char_u  *p2;
      int        from, to;
!     langmap_init();                /* back to one-to-one map first */
      for (p = p_langmap; p[0] != NUL; )
      {
--- 10270,10279 ----
      char_u  *p2;
      int        from, to;
! #ifdef FEAT_MBYTE
!     ga_clear(&langmap_mapga);            /* clear the previous map first */
! #endif
!     langmap_init();                /* back to one-to-one map */
      for (p = p_langmap; p[0] != NUL; )
      {
***************
*** 10235,10241 ****
                                   transchar(from));
          return;
          }
!         langmap_mapchar[from & 255] = to;
          /* Advance to next pair */
          mb_ptr_adv(p);
--- 10323,10335 ----
                                   transchar(from));
          return;
          }
!
! #ifdef FEAT_MBYTE
!         if (from >= 256)
!         langmap_set_entry(from, to);
!         else
! #endif
!         langmap_mapchar[from & 255] = to;
          /* Advance to next pair */
          mb_ptr_adv(p);
*** ../vim-7.2.108/src/proto/option.pro    Sat May  5 19:28:04 2007
--- src/proto/option.pro    Wed Feb 11 21:21:05 2009
***************
*** 44,49 ****
--- 44,50 ----
  void set_context_in_set_cmd __ARGS((expand_T *xp, char_u *arg, int opt_flags));
  int ExpandSettings __ARGS((expand_T *xp, regmatch_T *regmatch, int *num_file, char_u ***file));
  int ExpandOldSetting __ARGS((int *num_file, char_u ***file));
+ int langmap_adjust_mb __ARGS((int c));
  int has_format_option __ARGS((int x));
  int shortmess __ARGS((int x));
  void vimrc_found __ARGS((char_u *fname, char_u *envname));
*** ../vim-7.2.108/src/window.c    Fri Nov 28 21:26:50 2008
--- src/window.c    Sat Feb 21 19:55:25 2009
***************
*** 594,602 ****
          ++allow_keys;   /* no mapping for xchar, but allow key codes */
          if (xchar == NUL)
              xchar = plain_vgetc();
- #ifdef FEAT_LANGMAP
          LANGMAP_ADJUST(xchar, TRUE);
- #endif
          --no_mapping;
          --allow_keys;
  #ifdef FEAT_CMDL_INFO
--- 594,600 ----
*** ../vim-7.2.108/src/version.c    Wed Feb 11 22:47:32 2009
--- src/version.c    Sat Feb 21 19:34:28 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     109,
  /**/
--
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/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.110
New file
@@ -0,0 +1,53 @@
To: vim-dev@vim.org
Subject: Patch 7.2.110
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.110
Problem:    Compiler warning for unused variable.
Solution:   Init the variable.
Files:      src/ex_docmd.c
*** ../vim-7.2.109/src/ex_docmd.c    Wed Jan 28 15:42:07 2009
--- src/ex_docmd.c    Tue Feb 17 03:47:13 2009
***************
*** 5916,5922 ****
      char_u    *q;
      char_u    *start;
!     char_u    *end;
      char_u    *ksp;
      size_t    len, totlen;
--- 5916,5922 ----
      char_u    *q;
      char_u    *start;
!     char_u    *end = NULL;
      char_u    *ksp;
      size_t    len, totlen;
*** ../vim-7.2.109/src/version.c    Sat Feb 21 20:27:00 2009
--- src/version.c    Sat Feb 21 20:35:50 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     110,
  /**/
--
hundred-and-one symptoms of being an internet addict:
100. The most exciting sporting events you noticed during summer 1996
    was Netscape vs. Microsoft.
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.111
New file
@@ -0,0 +1,88 @@
To: vim-dev@vim.org
Subject: Patch 7.2.111
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.111
Problem:    When using Visual block mode with 'cursorcolumn' it's unclear what
            is selected.
Solution:   Don't use 'cursorcolumn' highlighting inside the Visual selection.
            (idea by Dominique Pelle)
Files:      src/screen.c
*** ../vim-7.2.110/src/screen.c    Wed Oct  1 21:09:02 2008
--- src/screen.c    Sat Feb 21 21:04:19 2009
***************
*** 2596,2601 ****
--- 2596,2602 ----
      int        noinvcur = FALSE;    /* don't invert the cursor */
  #ifdef FEAT_VISUAL
      pos_T    *top, *bot;
+     int        lnum_in_visual_area = FALSE;
  #endif
      pos_T    pos;
      long    v;
***************
*** 2792,2800 ****
          top = &VIsual;
          bot = &curwin->w_cursor;
      }
      if (VIsual_mode == Ctrl_V)    /* block mode */
      {
!         if (lnum >= top->lnum && lnum <= bot->lnum)
          {
          fromcol = wp->w_old_cursor_fcol;
          tocol = wp->w_old_cursor_lcol;
--- 2793,2802 ----
          top = &VIsual;
          bot = &curwin->w_cursor;
      }
+     lnum_in_visual_area = (lnum >= top->lnum && lnum <= bot->lnum);
      if (VIsual_mode == Ctrl_V)    /* block mode */
      {
!         if (lnum_in_visual_area)
          {
          fromcol = wp->w_old_cursor_fcol;
          tocol = wp->w_old_cursor_lcol;
***************
*** 4557,4563 ****
       * highlight the cursor position itself. */
      if (wp->w_p_cuc && vcol == (long)wp->w_virtcol
          && lnum != wp->w_cursor.lnum
!         && draw_state == WL_LINE)
      {
          vcol_save_attr = char_attr;
          char_attr = hl_combine_attr(char_attr, hl_attr(HLF_CUC));
--- 4560,4567 ----
       * highlight the cursor position itself. */
      if (wp->w_p_cuc && vcol == (long)wp->w_virtcol
          && lnum != wp->w_cursor.lnum
!         && draw_state == WL_LINE
!         && !lnum_in_visual_area)
      {
          vcol_save_attr = char_attr;
          char_attr = hl_combine_attr(char_attr, hl_attr(HLF_CUC));
*** ../vim-7.2.110/src/version.c    Sat Feb 21 20:36:30 2009
--- src/version.c    Sat Feb 21 21:08:14 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     111,
  /**/
--
Contrary to popular belief, Unix is user friendly.
It just happens to be selective about who it makes friends with.
                                               -- Dave Parnas
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.112
New file
@@ -0,0 +1,47 @@
To: vim-dev@vim.org
Subject: Patch 7.2.112
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.112
Problem:    Cursor invisible in Visual mode when 'number' is set and cursor in
            first column. (Matti Niemenmaa, Renato Alves)
Solution:   Check that vcol_prev is smaller than vcol.
Files:      src/screen.c
*** ../vim-7.2.111/src/screen.c    Sat Feb 21 21:10:24 2009
--- src/screen.c    Sat Feb 21 21:04:19 2009
***************
*** 3422,3427 ****
--- 3422,3428 ----
              && (*mb_ptr2cells)(ptr) > 1)
  #endif
              || ((int)vcol_prev == fromcol_prev
+             && vcol_prev < vcol    /* not at margin */
              && vcol < tocol))
          area_attr = attr;        /* start highlighting */
          else if (area_attr != 0
*** ../vim-7.2.111/src/version.c    Sat Feb 21 21:10:24 2009
--- src/version.c    Sat Feb 21 21:20:51 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     112,
  /**/
--
hundred-and-one symptoms of being an internet addict:
102. When filling out your driver's license application, you give
     your IP address.
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.113
New file
@@ -0,0 +1,99 @@
To: vim-dev@vim.org
Subject: Patch 7.2.113
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.113
Problem:    Crash for substitute() call using submatch(1) while there is no
            such submatch. (Yukihiro Nakadaira)
Solution:   Also check the start of the submatch is set, it can be NULL when
            an attempted match didn't work out.
Files:      src/regexp.c
*** ../vim-7.2.112/src/regexp.c    Fri Aug  8 13:45:31 2008
--- src/regexp.c    Sat Feb 21 21:46:49 2009
***************
*** 4532,4538 ****
          cleanup_subexpr();
          if (!REG_MULTI)        /* Single-line regexp */
          {
!             if (reg_endp[no] == NULL)
              {
              /* Backref was not set: Match an empty string. */
              len = 0;
--- 4532,4538 ----
          cleanup_subexpr();
          if (!REG_MULTI)        /* Single-line regexp */
          {
!             if (reg_startp[no] == NULL || reg_endp[no] == NULL)
              {
              /* Backref was not set: Match an empty string. */
              len = 0;
***************
*** 4548,4554 ****
          }
          else                /* Multi-line regexp */
          {
!             if (reg_endpos[no].lnum < 0)
              {
              /* Backref was not set: Match an empty string. */
              len = 0;
--- 4548,4554 ----
          }
          else                /* Multi-line regexp */
          {
!             if (reg_startpos[no].lnum < 0 || reg_endpos[no].lnum < 0)
              {
              /* Backref was not set: Match an empty string. */
              len = 0;
***************
*** 7279,7291 ****
      }
      else
      {
!     if (submatch_match->endp[no] == NULL)
          retval = NULL;
      else
-     {
-         s = submatch_match->startp[no];
          retval = vim_strnsave(s, (int)(submatch_match->endp[no] - s));
-     }
      }
      return retval;
--- 7279,7289 ----
      }
      else
      {
!     s = submatch_match->startp[no];
!     if (s == NULL || submatch_match->endp[no] == NULL)
          retval = NULL;
      else
          retval = vim_strnsave(s, (int)(submatch_match->endp[no] - s));
      }
      return retval;
*** ../vim-7.2.112/src/version.c    Sat Feb 21 21:22:44 2009
--- src/version.c    Sat Feb 21 22:01:56 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     113,
  /**/
--
hundred-and-one symptoms of being an internet addict:
103. When you find yourself in the "Computer" section of Barnes & Noble
     enjoying yourself.
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.114
New file
@@ -0,0 +1,86 @@
To: vim-dev@vim.org
Subject: Patch 7.2.114
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.114
Problem:    Using wrong printf format.
Solution:   Use "%ld" instead of "%d". (Dominique Pelle)
Files:      src/netbeans.c
*** ../vim-7.2.113/src/netbeans.c    Tue Jan  6 16:13:42 2009
--- src/netbeans.c    Tue Feb 17 03:21:33 2009
***************
*** 1924,1930 ****
          vim_free(path);
          if (bufp == NULL)
          {
!             nbdebug(("    File %s not found in setBufferNumber\n", args));
          EMSG2("E642: File %s not found in setBufferNumber", args);
          return FAIL;
          }
--- 1924,1930 ----
          vim_free(path);
          if (bufp == NULL)
          {
!         nbdebug(("    File %s not found in setBufferNumber\n", args));
          EMSG2("E642: File %s not found in setBufferNumber", args);
          return FAIL;
          }
***************
*** 2318,2324 ****
          }
          if (pos)
          {
!         coloncmd(":sign place %d line=%d name=%d buffer=%d",
                 serNum, pos->lnum, typeNum, buf->bufp->b_fnum);
          if (typeNum == curPCtype)
              coloncmd(":sign jump %d buffer=%d", serNum,
--- 2318,2324 ----
          }
          if (pos)
          {
!         coloncmd(":sign place %d line=%ld name=%d buffer=%d",
                 serNum, pos->lnum, typeNum, buf->bufp->b_fnum);
          if (typeNum == curPCtype)
              coloncmd(":sign jump %d buffer=%d", serNum,
***************
*** 2422,2428 ****
                  GUARDED) == 0)
                  {
                  coloncmd(
!                     ":sign place %d line=%d name=%d buffer=%d",
                       guardId++, lnum, GUARDED,
                       buf->bufp->b_fnum);
                  }
--- 2422,2428 ----
                  GUARDED) == 0)
                  {
                  coloncmd(
!                     ":sign place %d line=%ld name=%d buffer=%d",
                       guardId++, lnum, GUARDED,
                       buf->bufp->b_fnum);
                  }
*** ../vim-7.2.113/src/version.c    Sat Feb 21 22:03:06 2009
--- src/version.c    Sat Feb 21 22:11:21 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     114,
  /**/
--
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/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.115
New file
@@ -0,0 +1,133 @@
To: vim-dev@vim.org
Subject: Patch 7.2.115
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.115
Problem:    Some debugging code is never used.
Solution:   Remove nbtrace() and nbprt(). (Dominique Pelle)
Files:      src/nbdebug.c, src/nbdebug.h
*** ../vim-7.2.114/src/nbdebug.c    Tue Jun 24 23:54:30 2008
--- src/nbdebug.c    Tue Feb 17 03:26:07 2009
***************
*** 33,39 ****
  u_int         nb_dlevel = 0;        /* nb_debug verbosity level */
  void         nbdb(char *, ...);
- void         nbtrace(char *, ...);
  static int     lookup(char *);
  #ifdef USE_NB_ERRORHANDLER
--- 33,38 ----
***************
*** 100,124 ****
  }    /* end nbdebug_log_init */
-
-
- void
- nbtrace(
-     char        *fmt,
-     ...)
- {
-     va_list         ap;
-
-     if (nb_debug!= NULL && (nb_dlevel & (NB_TRACE | NB_TRACE_VERBOSE))) {
-         va_start(ap, fmt);
-         vfprintf(nb_debug, fmt, ap);
-         va_end(ap);
-         fflush(nb_debug);
-     }
-
- }    /* end nbtrace */
-
-
  void
  nbdbg(
      char        *fmt,
--- 99,104 ----
***************
*** 136,158 ****
  }    /* end nbdbg */
- void
- nbprt(
-     char        *fmt,
-     ...)
- {
-     va_list         ap;
-
-     if (nb_debug != NULL && nb_dlevel & NB_PRINT) {
-         va_start(ap, fmt);
-         vfprintf(nb_debug, fmt, ap);
-         va_end(ap);
-         fflush(nb_debug);
-     }
-
- }    /* end nbprt */
-
-
  static int
  lookup(
      char        *file)
--- 116,121 ----
*** ../vim-7.2.114/src/nbdebug.h    Wed Jun 25 00:47:21 2008
--- src/nbdebug.h    Tue Feb 17 03:26:38 2009
***************
*** 43,50 ****
  void         nbdbg(char *, ...);
- void         nbprt(char *, ...);
- void         nbtrace(char *, ...);
  void nbdebug_wait __ARGS((u_int wait_flags, char *wait_var, u_int wait_secs));
  void nbdebug_log_init __ARGS((char *log_var, char *level_var));
--- 43,48 ----
***************
*** 70,88 ****
  {
  }
- void
- nbprt(
-     char        *fmt,
-     ...)
- {
- }
-
- void
- nbtrace(
-     char        *fmt,
-     ...)
- {
- }
-
  #endif /* NBDEBUG */
  #endif /* NBDEBUG_H */
--- 68,72 ----
*** ../vim-7.2.114/src/version.c    Sat Feb 21 22:12:43 2009
--- src/version.c    Sat Feb 21 22:28:21 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     115,
  /**/
--
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/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.116
New file
@@ -0,0 +1,55 @@
To: vim-dev@vim.org
Subject: Patch 7.2.116
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.116
Problem:    Not all memory is freed when EXITFREE is defined.
Solution:   Free allocated memory on exit. (Dominique Pelle)
Files:      src/ex_docmd.c, src/gui_gtk_x11.c, src/misc2.c, src/search.c,
            src/tag.c
*** ../vim-7.2.115/src/tag.c    Tue Jan 13 17:27:18 2009
--- src/tag.c    Tue Feb 17 03:43:32 2009
***************
*** 2542,2547 ****
--- 2542,2556 ----
  {
      ga_clear_strings(&tag_fnames);
      do_tag(NULL, DT_FREE, 0, 0, 0);
+     tag_freematch();
+
+ # if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX)
+     if (ptag_entry.tagname)
+     {
+         vim_free(ptag_entry.tagname);
+         ptag_entry.tagname = NULL;
+     }
+ # endif
  }
  #endif
*** ../vim-7.2.115/src/version.c    Sat Feb 21 22:29:12 2009
--- src/version.c    Sat Feb 21 22:56:14 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     116,
  /**/
--
hundred-and-one symptoms of being an internet addict:
106. When told to "go to your room" you inform your parents that you
     can't...because you were kicked out and banned.
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.117
New file
@@ -0,0 +1,107 @@
To: vim-dev@vim.org
Subject: Patch 7.2.117
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.117
Problem:    Location list incorrectly labelled "Quickfix List".
Solution:   Break out of both loops for finding window for location list
            buffer. (Lech Lorens)
Files:      src/buffer.c, src/quickfix.c, src/screen.c
*** ../vim-7.2.116/src/buffer.c    Tue Jan  6 16:13:42 2009
--- src/buffer.c    Tue Feb 17 04:00:51 2009
***************
*** 5098,5104 ****
       */
      FOR_ALL_TAB_WINDOWS(tp, win)
          if (win->w_buffer == buf)
!         break;
      if (win != NULL && win->w_llist_ref != NULL)
          return _("[Location List]");
      else
--- 5098,5105 ----
       */
      FOR_ALL_TAB_WINDOWS(tp, win)
          if (win->w_buffer == buf)
!         goto win_found;
! win_found:
      if (win != NULL && win->w_llist_ref != NULL)
          return _("[Location List]");
      else
*** ../vim-7.2.116/src/quickfix.c    Sat Nov 15 14:10:23 2008
--- src/quickfix.c    Sat Feb 21 22:54:25 2009
***************
*** 1610,1619 ****
          {
              goto_tabpage_win(tp, wp);
              usable_win = 1;
!             break;
          }
          }
      }
      /*
       * If there is only one window and it is the quickfix window, create a
--- 1612,1622 ----
          {
              goto_tabpage_win(tp, wp);
              usable_win = 1;
!             goto win_found;
          }
          }
      }
+ win_found:
      /*
       * If there is only one window and it is the quickfix window, create a
*** ../vim-7.2.116/src/screen.c    Sat Feb 21 21:22:44 2009
--- src/screen.c    Sat Feb 21 21:04:19 2009
***************
*** 7452,7461 ****
      {
          outofmem = TRUE;
  #ifdef FEAT_WINDOWS
!         break;
  #endif
      }
      }
  #ifdef FEAT_MBYTE
      for (i = 0; i < p_mco; ++i)
--- 7452,7464 ----
      {
          outofmem = TRUE;
  #ifdef FEAT_WINDOWS
!         goto give_up;
  #endif
      }
      }
+ #ifdef FEAT_WINDOWS
+ give_up:
+ #endif
  #ifdef FEAT_MBYTE
      for (i = 0; i < p_mco; ++i)
*** ../vim-7.2.116/src/version.c    Sat Feb 21 22:57:10 2009
--- src/version.c    Sat Feb 21 23:58:24 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     117,
  /**/
--
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/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.118
New file
@@ -0,0 +1,78 @@
To: vim-dev@vim.org
Subject: Patch 7.2.118
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.118
Problem:    <PageUp> at the more prompt only does half a page.
Solution:   Make <PageUp> go up a whole page.  Also make 'f' go a page
            forward, but not quit the more prompt. (Markus Heidelberg)
Files:      src/message.c
*** ../vim-7.2.117/src/message.c    Wed Feb 11 18:46:48 2009
--- src/message.c    Fri Feb 20 05:20:15 2009
***************
*** 976,982 ****
              }
          }
          else if (msg_scrolled > Rows - 2
!                      && (c == 'j' || c == K_DOWN || c == 'd'))
              c = K_IGNORE;
          }
      } while ((had_got_int && c == Ctrl_C)
--- 976,982 ----
              }
          }
          else if (msg_scrolled > Rows - 2
!              && (c == 'j' || c == K_DOWN || c == 'd' || c == 'f'))
              c = K_IGNORE;
          }
      } while ((had_got_int && c == Ctrl_C)
***************
*** 2504,2510 ****
          break;
      case 'u':        /* Up half a page */
-     case K_PAGEUP:
          scroll = -(Rows / 2);
          break;
--- 2504,2509 ----
***************
*** 2513,2522 ****
--- 2512,2523 ----
          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;
*** ../vim-7.2.117/src/version.c    Sun Feb 22 00:01:42 2009
--- src/version.c    Sun Feb 22 00:57:16 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     118,
  /**/
--
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/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.119
New file
@@ -0,0 +1,51 @@
To: vim-dev@vim.org
Subject: Patch 7.2.119
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.119
Problem:    Status line is redrawn too often.
Solution:   Check ScreeenLinesUC[] properly. (Yukihiro Nakadaira)
Files:      src/screen.c
*** ../vim-7.2.118/src/screen.c    Sun Feb 22 00:01:42 2009
--- src/screen.c    Sun Feb 22 01:07:38 2009
***************
*** 6362,6368 ****
              && c == 0x8e
              && ScreenLines2[off] != ptr[1])
          || (enc_utf8
!             && (ScreenLinesUC[off] != (u8char_T)u8c
              || screen_comp_differs(off, u8cc)))
  #endif
          || ScreenAttrs[off] != attr
--- 6362,6368 ----
              && c == 0x8e
              && ScreenLines2[off] != ptr[1])
          || (enc_utf8
!             && (ScreenLinesUC[off] != (u8char_T)(c >= 0x80 ? u8c : 0)
              || screen_comp_differs(off, u8cc)))
  #endif
          || ScreenAttrs[off] != attr
*** ../vim-7.2.118/src/version.c    Sun Feb 22 00:58:03 2009
--- src/version.c    Sun Feb 22 01:09:54 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     119,
  /**/
--
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/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.120
New file
@@ -0,0 +1,277 @@
To: vim-dev@vim.org
Subject: Patch 7.2.120
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.120
Problem:    When opening the quickfix window or splitting the window and
            setting the location list, the location list is copied and then
            deleted, which is inefficient.
Solution:   Don't copy the location list when not needed. (Lech Lorens)
Files:      src/quickfix.c, src/vim.h, src/window.c
*** ../vim-7.2.119/src/quickfix.c    Sun Feb 22 00:01:42 2009
--- src/quickfix.c    Sat Feb 21 22:54:25 2009
***************
*** 1419,1424 ****
--- 1419,1425 ----
      int            opened_window = FALSE;
      win_T        *win;
      win_T        *altwin;
+     int            flags;
  #endif
      win_T        *oldwin = curwin;
      int            print_message = TRUE;
***************
*** 1531,1537 ****
      if (qf_ptr->qf_type == 1 && (!curwin->w_buffer->b_help || cmdmod.tab != 0))
      {
      win_T    *wp;
-     int    n;
      if (cmdmod.tab != 0)
          wp = NULL;
--- 1532,1537 ----
***************
*** 1547,1559 ****
           * Split off help window; put it at far top if no position
           * specified, the current window is vertically split and narrow.
           */
!         n = WSP_HELP;
  # ifdef FEAT_VERTSPLIT
          if (cmdmod.split == 0 && curwin->w_width != Columns
                                && curwin->w_width < 80)
!         n |= WSP_TOP;
  # endif
!         if (win_split(0, n) == FAIL)
          goto theend;
          opened_window = TRUE;    /* close it when fail */
--- 1547,1562 ----
           * Split off help window; put it at far top if no position
           * specified, the current window is vertically split and narrow.
           */
!         flags = WSP_HELP;
  # ifdef FEAT_VERTSPLIT
          if (cmdmod.split == 0 && curwin->w_width != Columns
                                && curwin->w_width < 80)
!         flags |= WSP_TOP;
  # endif
!         if (qi != &ql_info)
!         flags |= WSP_NEWLOC;  /* don't copy the location list */
!
!         if (win_split(0, flags) == FAIL)
          goto theend;
          opened_window = TRUE;    /* close it when fail */
***************
*** 1563,1569 ****
          if (qi != &ql_info)        /* not a quickfix list */
          {
          /* The new window should use the supplied location list */
-         qf_free_all(curwin);
          curwin->w_llist = qi;
          qi->qf_refcount++;
          }
--- 1566,1571 ----
***************
*** 1624,1630 ****
      {
          ll_ref = curwin->w_llist_ref;
!         if (win_split(0, WSP_ABOVE) == FAIL)
          goto failed;        /* not enough room for window */
          opened_window = TRUE;    /* close it when fail */
          p_swb = empty_option;    /* don't split again */
--- 1626,1635 ----
      {
          ll_ref = curwin->w_llist_ref;
!         flags = WSP_ABOVE;
!         if (ll_ref != NULL)
!         flags |= WSP_NEWLOC;
!         if (win_split(0, flags) == FAIL)
          goto failed;        /* not enough room for window */
          opened_window = TRUE;    /* close it when fail */
          p_swb = empty_option;    /* don't split again */
***************
*** 1636,1642 ****
          {
          /* The new window should use the location list from the
           * location list window */
-         qf_free_all(curwin);
          curwin->w_llist = ll_ref;
          ll_ref->qf_refcount++;
          }
--- 1641,1646 ----
***************
*** 2311,2325 ****
      if (eap->cmdidx == CMD_copen || eap->cmdidx == CMD_cwindow)
          /* Create the new window at the very bottom. */
          win_goto(lastwin);
!     if (win_split(height, WSP_BELOW) == FAIL)
          return;        /* not enough room for window */
  #ifdef FEAT_SCROLLBIND
      curwin->w_p_scb = FALSE;
  #endif
-     /* Remove the location list for the quickfix window */
-     qf_free_all(curwin);
-
      if (eap->cmdidx == CMD_lopen || eap->cmdidx == CMD_lwindow)
      {
          /*
--- 2315,2326 ----
      if (eap->cmdidx == CMD_copen || eap->cmdidx == CMD_cwindow)
          /* Create the new window at the very bottom. */
          win_goto(lastwin);
!     if (win_split(height, WSP_BELOW | WSP_NEWLOC) == FAIL)
          return;        /* not enough room for window */
  #ifdef FEAT_SCROLLBIND
      curwin->w_p_scb = FALSE;
  #endif
      if (eap->cmdidx == CMD_lopen || eap->cmdidx == CMD_lwindow)
      {
          /*
*** ../vim-7.2.119/src/vim.h    Thu Nov 20 14:11:47 2008
--- src/vim.h    Sat Feb 21 22:53:03 2009
***************
*** 1057,1062 ****
--- 1057,1063 ----
  #define WSP_HELP    16    /* creating the help window */
  #define WSP_BELOW    32    /* put new window below/right */
  #define WSP_ABOVE    64    /* put new window above/left */
+ #define WSP_NEWLOC    128    /* don't copy location list */
  /*
   * arguments for gui_set_shellsize()
*** ../vim-7.2.119/src/window.c    Sat Feb 21 20:27:00 2009
--- src/window.c    Sat Feb 21 23:56:41 2009
***************
*** 12,18 ****
  static int path_is_url __ARGS((char_u *p));
  #if defined(FEAT_WINDOWS) || defined(PROTO)
  static int win_split_ins __ARGS((int size, int flags, win_T *newwin, int dir));
! static void win_init __ARGS((win_T *newp, win_T *oldp));
  static void frame_comp_pos __ARGS((frame_T *topfrp, int *row, int *col));
  static void frame_setheight __ARGS((frame_T *curfrp, int height));
  #ifdef FEAT_VERTSPLIT
--- 12,18 ----
  static int path_is_url __ARGS((char_u *p));
  #if defined(FEAT_WINDOWS) || defined(PROTO)
  static int win_split_ins __ARGS((int size, int flags, win_T *newwin, int dir));
! static void win_init __ARGS((win_T *newp, win_T *oldp, int flags));
  static void frame_comp_pos __ARGS((frame_T *topfrp, int *row, int *col));
  static void frame_setheight __ARGS((frame_T *curfrp, int height));
  #ifdef FEAT_VERTSPLIT
***************
*** 911,917 ****
          return FAIL;
      /* make the contents of the new window the same as the current one */
!     win_init(wp, curwin);
      }
      /*
--- 911,917 ----
          return FAIL;
      /* make the contents of the new window the same as the current one */
!     win_init(wp, curwin, flags);
      }
      /*
***************
*** 1160,1170 ****
   * Initialize window "newp" from window "oldp".
   * Used when splitting a window and when creating a new tab page.
   * The windows will both edit the same buffer.
   */
      static void
! win_init(newp, oldp)
      win_T    *newp;
      win_T    *oldp;
  {
      int        i;
--- 1160,1174 ----
   * Initialize window "newp" from window "oldp".
   * Used when splitting a window and when creating a new tab page.
   * The windows will both edit the same buffer.
+  * WSP_NEWLOC may be specified in flags to prevent the location list from
+  * being copied.
   */
+ /*ARGSUSED*/
      static void
! win_init(newp, oldp, flags)
      win_T    *newp;
      win_T    *oldp;
+     int         flags;
  {
      int        i;
***************
*** 1189,1195 ****
      copy_jumplist(oldp, newp);
  #endif
  #ifdef FEAT_QUICKFIX
!     copy_loclist(oldp, newp);
  #endif
      if (oldp->w_localdir != NULL)
      newp->w_localdir = vim_strsave(oldp->w_localdir);
--- 1193,1206 ----
      copy_jumplist(oldp, newp);
  #endif
  #ifdef FEAT_QUICKFIX
!     if (flags & WSP_NEWLOC)
!     {
!     /* Don't copy the location list.  */
!     newp->w_llist = NULL;
!     newp->w_llist_ref = NULL;
!     }
!     else
!     copy_loclist(oldp, newp);
  #endif
      if (oldp->w_localdir != NULL)
      newp->w_localdir = vim_strsave(oldp->w_localdir);
***************
*** 3219,3225 ****
      else
      {
      /* First window in new tab page, initialize it from "oldwin". */
!     win_init(curwin, oldwin);
  # ifdef FEAT_SCROLLBIND
      /* We don't want scroll-binding in the first window. */
--- 3230,3236 ----
      else
      {
      /* First window in new tab page, initialize it from "oldwin". */
!     win_init(curwin, oldwin, 0);
  # ifdef FEAT_SCROLLBIND
      /* We don't want scroll-binding in the first window. */
*** ../vim-7.2.119/src/version.c    Sun Feb 22 01:13:45 2009
--- src/version.c    Sun Feb 22 02:32:14 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     120,
  /**/
--
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/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.121
New file
@@ -0,0 +1,180 @@
To: vim-dev@vim.org
Subject: Patch 7.2.121
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.121
Problem:    In gvim "!grep a *.c" spews out a lot of text that can't be
            stopped with CTRL-C.
Solution:   When looping to read and show text, do check for typed characters
            every two seconds.
Files:      src/os_unix.c
*** ../vim-7.2.120/src/os_unix.c    Wed Feb  4 14:18:44 2009
--- src/os_unix.c    Sun Feb 22 00:54:05 2009
***************
*** 4092,4097 ****
--- 4092,4100 ----
          int        fromshell_fd;
          garray_T    ga;
          int        noread_cnt;
+ # if defined(HAVE_GETTIMEOFDAY) && defined(HAVE_SYS_TIME_H)
+         struct timeval  start_tv;
+ # endif
  # ifdef FEAT_GUI
          if (pty_master_fd >= 0)
***************
*** 4201,4207 ****
              ga_init2(&ga, 1, BUFLEN);
          noread_cnt = 0;
!
          for (;;)
          {
              /*
--- 4204,4212 ----
              ga_init2(&ga, 1, BUFLEN);
          noread_cnt = 0;
! # if defined(HAVE_GETTIMEOFDAY) && defined(HAVE_SYS_TIME_H)
!         gettimeofday(&start_tv, NULL);
! # endif
          for (;;)
          {
              /*
***************
*** 4214,4238 ****
               * that a typed password is echoed for ssh or gpg command.
               * Don't get characters when the child has already
               * finished (wait_pid == 0).
-              * Don't get extra characters when we already have one.
               * Don't read characters unless we didn't get output for a
!              * while, avoids that ":r !ls" eats typeahead.
               */
              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
                              )
                  && wait_pid == 0
!                 && (ta_len > 0
!                 || (noread_cnt > 4
!                     && (len = ui_inchar(ta_buf,
!                                BUFLEN, 10L, 0)) > 0)))
              {
              /*
               * For pipes:
               * Check for CTRL-C: send interrupt signal to child.
--- 4219,4252 ----
               * that a typed password is echoed for ssh or gpg command.
               * Don't get characters when the child has already
               * finished (wait_pid == 0).
               * Don't read characters unless we didn't get output for a
!              * while (noread_cnt > 4), avoids that ":r !ls" eats
!              * typeahead.
               */
              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
                              )
                  && wait_pid == 0
!                 && (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.
***************
*** 4334,4342 ****
                  {
                  ta_len -= len;
                  mch_memmove(ta_buf, ta_buf + len, ta_len);
-                 noread_cnt = 0;
                  }
              }
              }
              if (got_int)
--- 4348,4356 ----
                  {
                  ta_len -= len;
                  mch_memmove(ta_buf, ta_buf + len, ta_len);
                  }
              }
+               }
              }
              if (got_int)
***************
*** 4444,4449 ****
--- 4458,4482 ----
              out_flush();
              if (got_int)
                  break;
+
+ # if defined(HAVE_GETTIMEOFDAY) && defined(HAVE_SYS_TIME_H)
+             {
+                 struct timeval  now_tv;
+                 long        msec;
+
+                 /* Avoid that we keep looping here without
+                  * checking for a CTRL-C for a long time.  Don't
+                  * break out too often to avoid losing typeahead. */
+                 gettimeofday(&now_tv, NULL);
+                 msec = (now_tv.tv_sec - start_tv.tv_sec) * 1000L
+                 + (now_tv.tv_usec - start_tv.tv_usec) / 1000L;
+                 if (msec > 2000)
+                 {
+                 noread_cnt = 5;
+                 break;
+                 }
+             }
+ # endif
              }
              /* If we already detected the child has finished break the
*** ../vim-7.2.120/src/version.c    Sun Feb 22 02:36:36 2009
--- src/version.c    Sun Feb 22 02:48:03 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     121,
  /**/
--
hundred-and-one symptoms of being an internet addict:
111. You and your friends get together regularly on IRC, even though
     all of you live in the same city.
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.122
New file
@@ -0,0 +1,80 @@
To: vim-dev@vim.org
Subject: Patch 7.2.122
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.122
Problem:    Invalid memory access when the VimResized autocommand changes
            'columns' and/or 'lines'.
Solution:   After VimResized check for changed values. (Dominique Pelle)
Files:      src/screen.c
*** ../vim-7.2.121/src/screen.c    Sun Feb 22 01:13:45 2009
--- src/screen.c    Sun Feb 22 01:07:38 2009
***************
*** 7368,7374 ****
--- 7368,7378 ----
  #endif
      static int        entered = FALSE;        /* avoid recursiveness */
      static int        done_outofmem_msg = FALSE;    /* did outofmem message */
+ #ifdef FEAT_AUTOCMD
+     int            retry_count = 0;
+ retry:
+ #endif
      /*
       * Allocation of the screen buffers is done only when the size changes and
       * when Rows and Columns have been set and we have started doing full
***************
*** 7643,7650 ****
      --RedrawingDisabled;
  #ifdef FEAT_AUTOCMD
!     if (starting == 0)
      apply_autocmds(EVENT_VIMRESIZED, NULL, NULL, FALSE, curbuf);
  #endif
  }
--- 7647,7663 ----
      --RedrawingDisabled;
  #ifdef FEAT_AUTOCMD
!     /*
!      * Do not apply autocommands more than 3 times to avoid an endless loop
!      * in case applying autocommands always changes Rows or Columns.
!      */
!     if (starting == 0 && ++retry_count <= 3)
!     {
      apply_autocmds(EVENT_VIMRESIZED, NULL, NULL, FALSE, curbuf);
+     /* In rare cases, autocommands may have altered Rows or Columns,
+      * jump back to check if we need to allocate the screen again. */
+     goto retry;
+     }
  #endif
  }
*** ../vim-7.2.121/src/version.c    Sun Feb 22 02:51:37 2009
--- src/version.c    Sun Feb 22 21:11:14 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     122,
  /**/
--
FIXME and XXX are two common keywords used to mark broken or incomplete code
not only since XXX as a sex reference would grab everbodys 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/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.123
New file
@@ -0,0 +1,50 @@
To: vim-dev@vim.org
Subject: Patch 7.2.123
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.123
Problem:    Typing 'q' at more prompt for ":map" output still displays another
            line, causing another more prompt. (Markus Heidelberg)
Solution:   Quit listing maps when 'q' typed.
Files:      src/getchar.c
*** ../vim-7.2.122/src/getchar.c    Fri Nov 28 12:05:07 2008
--- src/getchar.c    Sun Feb 22 23:10:45 2009
***************
*** 3816,3822 ****
--- 3816,3826 ----
      int len = 1;
      if (msg_didout || msg_silent != 0)
+     {
      msg_putchar('\n');
+     if (got_int)        /* 'q' typed at MORE prompt */
+         return;
+     }
      if ((mp->m_mode & (INSERT + CMDLINE)) == INSERT + CMDLINE)
      msg_putchar('!');            /* :map! */
      else if (mp->m_mode & INSERT)
*** ../vim-7.2.122/src/version.c    Sun Feb 22 21:12:22 2009
--- src/version.c    Sun Feb 22 23:16:29 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     123,
  /**/
--
hundred-and-one symptoms of being an internet addict:
120. You ask a friend, "What's that big shiny thing?" He says, "It's the sun."
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.124
New file
@@ -0,0 +1,122 @@
To: vim-dev@vim.org
Subject: Patch 7.2.124
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.124
Problem:    Typing 'q' at more prompt for ":tselect" output still displays
            more lines, causing another more prompt. (Markus Heidelberg)
Solution:   Quit listing tags when 'q' typed.
Files:      src/tag.c
*** ../vim-7.2.123/src/tag.c    Sat Feb 21 22:57:10 2009
--- src/tag.c    Mon Feb 23 00:07:24 2009
***************
*** 618,624 ****
          taglen_advance(taglen);
          MSG_PUTS_ATTR(_("file\n"), hl_attr(HLF_T));
!         for (i = 0; i < num_matches; ++i)
          {
              parse_match(matches[i], &tagp);
              if (!new_tag && (
--- 618,624 ----
          taglen_advance(taglen);
          MSG_PUTS_ATTR(_("file\n"), hl_attr(HLF_T));
!         for (i = 0; i < num_matches && !got_int; ++i)
          {
              parse_match(matches[i], &tagp);
              if (!new_tag && (
***************
*** 655,660 ****
--- 655,662 ----
              }
              if (msg_col > 0)
              msg_putchar('\n');
+             if (got_int)
+             break;
              msg_advance(15);
              /* print any extra fields */
***************
*** 689,694 ****
--- 691,698 ----
                  if (msg_col + ptr2cells(p) >= Columns)
                  {
                      msg_putchar('\n');
+                     if (got_int)
+                     break;
                      msg_advance(15);
                  }
                  p = msg_outtrans_one(p, attr);
***************
*** 704,709 ****
--- 708,715 ----
              if (msg_col > 15)
              {
                  msg_putchar('\n');
+                 if (got_int)
+                 break;
                  msg_advance(15);
              }
              }
***************
*** 734,739 ****
--- 740,747 ----
              {
              if (msg_col + (*p == TAB ? 1 : ptr2cells(p)) > Columns)
                  msg_putchar('\n');
+             if (got_int)
+                 break;
              msg_advance(15);
              /* skip backslash used for escaping command char */
***************
*** 760,771 ****
              if (msg_col)
              msg_putchar('\n');
              ui_breakcheck();
-             if (got_int)
-             {
-             got_int = FALSE;    /* only stop the listing */
-             break;
-             }
          }
          ask_for_selection = TRUE;
          }
  #if defined(FEAT_QUICKFIX) && defined(FEAT_EVAL)
--- 768,776 ----
              if (msg_col)
              msg_putchar('\n');
              ui_breakcheck();
          }
+         if (got_int)
+             got_int = FALSE;    /* only stop the listing */
          ask_for_selection = TRUE;
          }
  #if defined(FEAT_QUICKFIX) && defined(FEAT_EVAL)
*** ../vim-7.2.123/src/version.c    Sun Feb 22 23:42:08 2009
--- src/version.c    Mon Feb 23 00:51:57 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     124,
  /**/
--
hundred-and-one symptoms of being an internet addict:
123. You ask the car dealer to install an extra cigarette lighter
     on your new car to power your notebook.
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.125
New file
@@ -0,0 +1,161 @@
To: vim-dev@vim.org
Subject: Patch 7.2.125
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.125
Problem:    Leaking memory when reading XPM bitmap for a sign.
Solution:   Don't allocate the memory twice. (Dominique Pelle)
Files:      src/gui_x11.c
*** ../vim-7.2.124/src/gui_x11.c    Wed Nov 12 13:07:48 2008
--- src/gui_x11.c    Sun Feb 22 21:58:19 2009
***************
*** 1587,1592 ****
--- 1587,1594 ----
      XtCloseDisplay(gui.dpy);
      gui.dpy = NULL;
      vimShell = (Widget)0;
+     vim_free(gui_argv);
+     gui_argv = NULL;
  }
  /*
***************
*** 1761,1766 ****
--- 1763,1770 ----
       * says that this isn't needed when exiting, so just skip it. */
      XtCloseDisplay(gui.dpy);
  #endif
+     vim_free(gui_argv);
+     gui_argv = NULL;
  }
  /*
***************
*** 3439,3485 ****
      char_u        *signfile;
  {
      XpmAttributes   attrs;
!     XImage        *sign;
      int            status;
      /*
       * Setup the color substitution table.
       */
-     sign = NULL;
      if (signfile[0] != NUL && signfile[0] != '-')
      {
!     sign = (XImage *)alloc(sizeof(XImage));
!     if (sign != NULL)
      {
!         XpmColorSymbol color[5] =
!         {
!         {"none", NULL, 0},
!         {"iconColor1", NULL, 0},
!         {"bottomShadowColor", NULL, 0},
!         {"topShadowColor", NULL, 0},
!         {"selectColor", NULL, 0}
!         };
!         attrs.valuemask = XpmColorSymbols;
!         attrs.numsymbols = 2;
!         attrs.colorsymbols = color;
!         attrs.colorsymbols[0].pixel = gui.back_pixel;
!         attrs.colorsymbols[1].pixel = gui.norm_pixel;
!         status = XpmReadFileToImage(gui.dpy, (char *)signfile,
                               &sign, NULL, &attrs);
!
!         if (status == 0)
!         {
!         /* Sign width is fixed at two columns now.
!         if (sign->width > gui.sign_width)
!             gui.sign_width = sign->width + 8; */
!         }
!         else
!         {
!         vim_free(sign);
!         sign = NULL;
!         EMSG(_(e_signdata));
!         }
      }
      }
      return (void *)sign;
--- 3443,3479 ----
      char_u        *signfile;
  {
      XpmAttributes   attrs;
!     XImage        *sign = NULL;
      int            status;
      /*
       * Setup the color substitution table.
       */
      if (signfile[0] != NUL && signfile[0] != '-')
      {
!     XpmColorSymbol color[5] =
      {
!         {"none", NULL, 0},
!         {"iconColor1", NULL, 0},
!         {"bottomShadowColor", NULL, 0},
!         {"topShadowColor", NULL, 0},
!         {"selectColor", NULL, 0}
!     };
!     attrs.valuemask = XpmColorSymbols;
!     attrs.numsymbols = 2;
!     attrs.colorsymbols = color;
!     attrs.colorsymbols[0].pixel = gui.back_pixel;
!     attrs.colorsymbols[1].pixel = gui.norm_pixel;
!     status = XpmReadFileToImage(gui.dpy, (char *)signfile,
                               &sign, NULL, &attrs);
!     if (status == 0)
!     {
!         /* Sign width is fixed at two columns now.
!         if (sign->width > gui.sign_width)
!             gui.sign_width = sign->width + 8; */
      }
+     else
+         EMSG(_(e_signdata));
      }
      return (void *)sign;
***************
*** 3489,3496 ****
  gui_mch_destroy_sign(sign)
      void *sign;
  {
!     XFree(((XImage *)sign)->data);
!     vim_free(sign);
  }
  #endif
--- 3483,3489 ----
  gui_mch_destroy_sign(sign)
      void *sign;
  {
!     XDestroyImage((XImage*)sign);
  }
  #endif
*** ../vim-7.2.124/src/version.c    Mon Feb 23 00:53:35 2009
--- src/version.c    Tue Feb 24 04:09:33 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     125,
  /**/
--
I have a watch cat! Just break in and she'll watch.
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.126
New file
@@ -0,0 +1,174 @@
To: vim-dev@vim.org
Subject: Patch 7.2.126
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.126
Problem:    When EXITFREE is defined signs are not freed.
Solution:   Free all signs on exit.  Also free keymaps. (Dominique Pelle)
Files:      src/misc2.c, src/ex_cmds.c, src/proto/ex_cmds.pro
*** ../vim-7.2.125/src/misc2.c    Thu Jan 22 21:31:24 2009
--- src/misc2.c    Sun Feb 22 22:04:53 2009
***************
*** 1010,1015 ****
--- 1010,1018 ----
  # if defined(FEAT_PROFILE)
      do_cmdline_cmd((char_u *)"profdel *");
  # endif
+ # if defined(FEAT_KEYMAP)
+     do_cmdline_cmd((char_u *)"set keymap=");
+ #endif
  # ifdef FEAT_TITLE
      free_titles();
***************
*** 1034,1039 ****
--- 1037,1045 ----
      free_regexp_stuff();
      free_tag_stuff();
      free_cd_dir();
+ # ifdef FEAT_SIGNS
+     free_signs();
+ # endif
  # ifdef FEAT_EVAL
      set_expr_line(NULL);
  # endif
*** ../vim-7.2.125/src/ex_cmds.c    Wed Feb 11 16:02:29 2009
--- src/ex_cmds.c    Sun Feb 22 22:07:08 2009
***************
*** 6541,6546 ****
--- 6541,6547 ----
  static int    last_sign_typenr = MAX_TYPENR;    /* is decremented */
  static void sign_list_defined __ARGS((sign_T *sp));
+ static void sign_undefine __ARGS((sign_T *sp, sign_T *sp_prev));
  /*
   * ":sign" command
***************
*** 6749,6772 ****
          /* ":sign list {name}" */
          sign_list_defined(sp);
          else
-         {
          /* ":sign undefine {name}" */
!         vim_free(sp->sn_name);
!         vim_free(sp->sn_icon);
! #ifdef FEAT_SIGN_ICONS
!         if (sp->sn_image != NULL)
!         {
!             out_flush();
!             gui_mch_destroy_sign(sp->sn_image);
!         }
! #endif
!         vim_free(sp->sn_text);
!         if (sp_prev == NULL)
!             first_sign = sp->sn_next;
!         else
!             sp_prev->sn_next = sp->sn_next;
!         vim_free(sp);
!         }
      }
      }
      else
--- 6750,6757 ----
          /* ":sign list {name}" */
          sign_list_defined(sp);
          else
          /* ":sign undefine {name}" */
!         sign_undefine(sp, sp_prev);
      }
      }
      else
***************
*** 7015,7020 ****
--- 7000,7030 ----
  }
  /*
+  * Undefine a sign and free its memory.
+  */
+     static void
+ sign_undefine(sp, sp_prev)
+     sign_T    *sp;
+     sign_T    *sp_prev;
+ {
+     vim_free(sp->sn_name);
+     vim_free(sp->sn_icon);
+ #ifdef FEAT_SIGN_ICONS
+     if (sp->sn_image != NULL)
+     {
+     out_flush();
+     gui_mch_destroy_sign(sp->sn_image);
+     }
+ #endif
+     vim_free(sp->sn_text);
+     if (sp_prev == NULL)
+     first_sign = sp->sn_next;
+     else
+     sp_prev->sn_next = sp->sn_next;
+     vim_free(sp);
+ }
+
+ /*
   * Get highlighting attribute for sign "typenr".
   * If "line" is TRUE: line highl, if FALSE: text highl.
   */
***************
*** 7088,7093 ****
--- 7098,7115 ----
      return (char_u *)_("[Deleted]");
  }
+ #if defined(EXITFREE) || defined(PROTO)
+ /*
+  * Undefine/free all signs.
+  */
+     void
+ free_signs()
+ {
+     while (first_sign != NULL)
+     sign_undefine(first_sign, NULL);
+ }
+ #endif
+
  #endif
  #if defined(FEAT_GUI) || defined(FEAT_CLIENTSERVER) || defined(PROTO)
*** ../vim-7.2.125/src/proto/ex_cmds.pro    Sat Nov 15 14:10:23 2008
--- src/proto/ex_cmds.pro    Sun Feb 22 22:04:53 2009
***************
*** 40,45 ****
--- 40,46 ----
  int read_viminfo_sub_string __ARGS((vir_T *virp, int force));
  void write_viminfo_sub_string __ARGS((FILE *fp));
  void free_old_sub __ARGS((void));
+ void free_signs __ARGS((void));
  int prepare_tagpreview __ARGS((int undo_sync));
  void ex_help __ARGS((exarg_T *eap));
  char_u *check_help_lang __ARGS((char_u *arg));
*** ../vim-7.2.125/src/version.c    Tue Feb 24 04:11:07 2009
--- src/version.c    Tue Feb 24 04:24:46 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     126,
  /**/
--
hundred-and-one symptoms of being an internet addict:
125. You begin to wonder how often it REALLY is necessary to get up
     and shower or bathe.
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.127
New file
@@ -0,0 +1,59 @@
To: vim-dev@vim.org
Subject: Patch 7.2.127
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.127
Problem:    When listing mappings and a wrapping line causes the more prompt,
            after typing 'q' there can be another more prompt. (Markus
            Heidelberg)
Solution:   Set "lines_left" to allow more lines to be displayed.
Files:      src/message.c
*** ../vim-7.2.126/src/message.c    Sun Feb 22 00:58:03 2009
--- src/message.c    Mon Feb 23 04:17:39 2009
***************
*** 2553,2559 ****
          {
          /* Jump to the choices of the dialog. */
          retval = TRUE;
-         lines_left = Rows - 1;
          }
          else
  #endif
--- 2553,2558 ----
***************
*** 2561,2566 ****
--- 2560,2568 ----
          got_int = TRUE;
          quit_more = TRUE;
          }
+         /* When there is some more output (wrapping line) display that
+          * without another prompt. */
+         lines_left = Rows - 1;
          break;
  #ifdef FEAT_CLIPBOARD
*** ../vim-7.2.126/src/version.c    Tue Feb 24 04:28:40 2009
--- src/version.c    Tue Feb 24 04:35:38 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     127,
  /**/
--
The difference between theory and practice, is that in theory, there
is no difference between theory and practice.
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.128
New file
@@ -0,0 +1,52 @@
To: vim-dev@vim.org
Subject: Patch 7.2.128
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.128 (after 7.2.055)
Problem:    Using ":lcd" makes session files not work.
Solution:   Compare return value of mch_chdir() properly. (Andreas Bernauer)
Files:      src/ex_docmd.c
*** ../vim-7.2.127/src/ex_docmd.c    Sat Feb 21 20:36:30 2009
--- src/ex_docmd.c    Sun Mar  1 02:39:38 2009
***************
*** 8792,8798 ****
          else if (*dirnow != NUL
              && (ssop_flags & SSOP_CURDIR) && globaldir != NULL)
          {
!             if (mch_chdir((char *)globaldir) == OK)
              shorten_fnames(TRUE);
          }
--- 8799,8805 ----
          else if (*dirnow != NUL
              && (ssop_flags & SSOP_CURDIR) && globaldir != NULL)
          {
!             if (mch_chdir((char *)globaldir) == 0)
              shorten_fnames(TRUE);
          }
*** ../vim-7.2.127/src/version.c    Tue Feb 24 04:36:50 2009
--- src/version.c    Sun Mar  1 02:42:47 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     128,
  /**/
--
hundred-and-one symptoms of being an internet addict:
138. You develop a liking for cold coffee.
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.129
New file
@@ -0,0 +1,73 @@
To: vim-dev@vim.org
Subject: Patch 7.2.129
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.129
Problem:    When opening a command window from input() it uses the search
            history.
Solution:   Use get_cmdline_type(). (James Vega)
Files:      src/ex_getln.c
*** ../vim-7.2.128/src/ex_getln.c    Fri Nov 28 10:59:57 2008
--- src/ex_getln.c    Mon Mar  2 00:53:39 2009
***************
*** 6047,6055 ****
  # endif
      return K_IGNORE;
      }
!     cmdwin_type = ccline.cmdfirstc;
!     if (cmdwin_type == NUL)
!     cmdwin_type = '-';
      /* Create the command-line buffer empty. */
      (void)do_ecmd(0, NULL, NULL, NULL, ECMD_ONE, ECMD_HIDE, NULL);
--- 6062,6068 ----
  # endif
      return K_IGNORE;
      }
!     cmdwin_type = get_cmdline_type();
      /* Create the command-line buffer empty. */
      (void)do_ecmd(0, NULL, NULL, NULL, ECMD_ONE, ECMD_HIDE, NULL);
***************
*** 6073,6079 ****
      /* Showing the prompt may have set need_wait_return, reset it. */
      need_wait_return = FALSE;
!     histtype = hist_char2type(ccline.cmdfirstc);
      if (histtype == HIST_CMD || histtype == HIST_DEBUG)
      {
      if (p_wc == TAB)
--- 6086,6092 ----
      /* Showing the prompt may have set need_wait_return, reset it. */
      need_wait_return = FALSE;
!     histtype = hist_char2type(cmdwin_type);
      if (histtype == HIST_CMD || histtype == HIST_DEBUG)
      {
      if (p_wc == TAB)
*** ../vim-7.2.128/src/version.c    Sun Mar  1 02:43:50 2009
--- src/version.c    Mon Mar  2 02:10:11 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     129,
  /**/
--
hundred-and-one symptoms of being an internet addict:
146. You experience ACTUAL physical withdrawal symptoms when away
     from your 'puter and the net.
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.130
New file
@@ -0,0 +1,413 @@
To: vim-dev@vim.org
Subject: Patch 7.2.130
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.130
Problem:    Vim may haing until CTRL-C is typed when using CTRL-Z.
Solution:   Avoid using pause().  Also use "volatile" for variables used in
            signal functions. (Dominique Pelle)
Files:      src/auto/configure, src/configure.in, src/config.h.in,
            src/globals.h, src/os_unix.c
*** ../vim-7.2.129/src/auto/configure    Thu Nov 20 10:36:04 2008
--- src/auto/configure    Mon Mar  2 02:36:52 2009
***************
*** 11565,11570 ****
--- 11565,11631 ----
  fi
+ { $as_echo "$as_me:$LINENO: checking for working volatile" >&5
+ $as_echo_n "checking for working volatile... " >&6; }
+ if test "${ac_cv_c_volatile+set}" = set; then
+   $as_echo_n "(cached) " >&6
+ else
+   cat >conftest.$ac_ext <<_ACEOF
+ /* confdefs.h.  */
+ _ACEOF
+ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h.  */
+
+ int
+ main ()
+ {
+
+ volatile int x;
+ int * volatile y = (int *) 0;
+ return !x && !y;
+   ;
+   return 0;
+ }
+ _ACEOF
+ rm -f conftest.$ac_objext
+ if { (ac_try="$ac_compile"
+ case "(($ac_try" in
+   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+   *) ac_try_echo=$ac_try;;
+ esac
+ eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+ $as_echo "$ac_try_echo") >&5
+   (eval "$ac_compile") 2>conftest.er1
+   ac_status=$?
+   grep -v '^ *+' conftest.er1 >conftest.err
+   rm -f conftest.er1
+   cat conftest.err >&5
+   $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   (exit $ac_status); } && {
+      test -z "$ac_c_werror_flag" ||
+      test ! -s conftest.err
+        } && test -s conftest.$ac_objext; then
+   ac_cv_c_volatile=yes
+ else
+   $as_echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+     ac_cv_c_volatile=no
+ fi
+
+ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+ { $as_echo "$as_me:$LINENO: result: $ac_cv_c_volatile" >&5
+ $as_echo "$ac_cv_c_volatile" >&6; }
+ if test $ac_cv_c_volatile = no; then
+
+ cat >>confdefs.h <<\_ACEOF
+ #define volatile /**/
+ _ACEOF
+
+ fi
+
  { $as_echo "$as_me:$LINENO: checking for mode_t" >&5
  $as_echo_n "checking for mode_t... " >&6; }
  if test "${ac_cv_type_mode_t+set}" = set; then
*** ../vim-7.2.129/src/configure.in    Thu Nov 20 10:36:04 2008
--- src/configure.in    Sun Feb 22 21:47:44 2009
***************
*** 2148,2153 ****
--- 2148,2154 ----
  dnl Checks for typedefs, structures, and compiler characteristics.
  AC_PROG_GCC_TRADITIONAL
  AC_C_CONST
+ AC_C_VOLATILE
  AC_TYPE_MODE_T
  AC_TYPE_OFF_T
  AC_TYPE_PID_T
*** ../vim-7.2.129/src/config.h.in    Tue Jun 24 23:47:46 2008
--- src/config.h.in    Mon Feb 23 00:13:17 2009
***************
*** 50,55 ****
--- 50,58 ----
  /* Define to empty if the keyword does not work.  */
  #undef const
+ /* Define to empty if the keyword does not work.  */
+ #undef volatile
+
  /* Define to `int' if <sys/types.h> doesn't define.  */
  #undef mode_t
*** ../vim-7.2.129/src/globals.h    Tue Jan  6 16:13:42 2009
--- src/globals.h    Mon Mar  2 02:40:16 2009
***************
*** 482,489 ****
  /*
   * While executing external commands or in Ex mode, should not insert GUI
   * events in the input buffer: Set hold_gui_events to non-zero.
   */
! EXTERN int    hold_gui_events INIT(= 0);
  /*
   * When resizing the shell is postponed, remember the new size, and call
--- 482,491 ----
  /*
   * While executing external commands or in Ex mode, should not insert GUI
   * events in the input buffer: Set hold_gui_events to non-zero.
+  *
+  * volatile because it is used in signal handler sig_sysmouse().
   */
! EXTERN volatile int hold_gui_events INIT(= 0);
  /*
   * When resizing the shell is postponed, remember the new size, and call
***************
*** 597,603 ****
  EXTERN int    really_exiting INIT(= FALSE);
                  /* TRUE when we are sure to exit, e.g., after
                   * a deadly signal */
! EXTERN int    full_screen INIT(= FALSE);
                  /* TRUE when doing full-screen output
                   * otherwise only writing some messages */
--- 599,606 ----
  EXTERN int    really_exiting INIT(= FALSE);
                  /* TRUE when we are sure to exit, e.g., after
                   * a deadly signal */
! /* volatile because it is used in signal handler deathtrap(). */
! EXTERN volatile int full_screen INIT(= FALSE);
                  /* TRUE when doing full-screen output
                   * otherwise only writing some messages */
***************
*** 739,748 ****
   */
  EXTERN JMP_BUF lc_jump_env;    /* argument to SETJMP() */
  # ifdef SIGHASARG
! EXTERN int lc_signal;        /* catched signal number, 0 when no was signal
!                    catched; used for mch_libcall() */
  # endif
! EXTERN int lc_active INIT(= FALSE); /* TRUE when lc_jump_env is valid. */
  #endif
  #if defined(FEAT_MBYTE) || defined(FEAT_POSTSCRIPT)
--- 747,758 ----
   */
  EXTERN JMP_BUF lc_jump_env;    /* argument to SETJMP() */
  # ifdef SIGHASARG
! /* volatile because it is used in signal handlers. */
! EXTERN volatile int lc_signal;    /* caught signal number, 0 when no was signal
!                    caught; used for mch_libcall() */
  # endif
! /* volatile because it is used in signal handler deathtrap(). */
! EXTERN volatile int lc_active INIT(= FALSE); /* TRUE when lc_jump_env is valid. */
  #endif
  #if defined(FEAT_MBYTE) || defined(FEAT_POSTSCRIPT)
***************
*** 986,992 ****
  EXTERN FILE    *scriptout  INIT(= NULL);   /* stream to write script to */
  EXTERN int    read_cmd_fd INIT(= 0);        /* fd to read commands from */
! EXTERN int    got_int INIT(= FALSE);        /* set to TRUE when interrupt
                          signal occurred */
  #ifdef USE_TERM_CONSOLE
  EXTERN int    term_console INIT(= FALSE); /* set to TRUE when console used */
--- 996,1003 ----
  EXTERN FILE    *scriptout  INIT(= NULL);   /* stream to write script to */
  EXTERN int    read_cmd_fd INIT(= 0);        /* fd to read commands from */
! /* volatile because it is used in signal handler catch_sigint(). */
! EXTERN volatile int got_int INIT(= FALSE);    /* set to TRUE when interrupt
                          signal occurred */
  #ifdef USE_TERM_CONSOLE
  EXTERN int    term_console INIT(= FALSE); /* set to TRUE when console used */
*** ../vim-7.2.129/src/os_unix.c    Sun Feb 22 02:51:37 2009
--- src/os_unix.c    Mon Mar  2 01:05:50 2009
***************
*** 181,187 ****
      && defined(FEAT_TITLE) && !defined(FEAT_GUI_GTK)
  # define SET_SIG_ALARM
  static RETSIGTYPE sig_alarm __ARGS(SIGPROTOARG);
! static int sig_alarm_called;
  #endif
  static RETSIGTYPE deathtrap __ARGS(SIGPROTOARG);
--- 181,188 ----
      && defined(FEAT_TITLE) && !defined(FEAT_GUI_GTK)
  # define SET_SIG_ALARM
  static RETSIGTYPE sig_alarm __ARGS(SIGPROTOARG);
! /* volatile because it is used in signal handler sig_alarm(). */
! static volatile int sig_alarm_called;
  #endif
  static RETSIGTYPE deathtrap __ARGS(SIGPROTOARG);
***************
*** 201,213 ****
  # define SIG_ERR    ((RETSIGTYPE (*)())-1)
  #endif
! static int    do_resize = FALSE;
  #ifndef __EMX__
  static char_u    *extra_shell_arg = NULL;
  static int    show_shell_mess = TRUE;
  #endif
! static int    deadly_signal = 0;        /* The signal we caught */
! static int    in_mch_delay = FALSE;        /* sleeping in mch_delay() */
  static int curr_tmode = TMODE_COOK;    /* contains current terminal mode */
--- 202,217 ----
  # define SIG_ERR    ((RETSIGTYPE (*)())-1)
  #endif
! /* volatile because it is used in signal handler sig_winch(). */
! static volatile int do_resize = FALSE;
  #ifndef __EMX__
  static char_u    *extra_shell_arg = NULL;
  static int    show_shell_mess = TRUE;
  #endif
! /* volatile because it is used in signal handler deathtrap(). */
! static volatile int deadly_signal = 0;        /* The signal we caught */
! /* volatile because it is used in signal handler deathtrap(). */
! static volatile int in_mch_delay = FALSE;    /* sleeping in mch_delay() */
  static int curr_tmode = TMODE_COOK;    /* contains current terminal mode */
***************
*** 802,808 ****
  #endif
  /*
!  * We need correct potatotypes for a signal function, otherwise mean compilers
   * will barf when the second argument to signal() is ``wrong''.
   * Let me try it with a few tricky defines from my own osdef.h    (jw).
   */
--- 806,812 ----
  #endif
  /*
!  * We need correct prototypes for a signal function, otherwise mean compilers
   * will barf when the second argument to signal() is ``wrong''.
   * Let me try it with a few tricky defines from my own osdef.h    (jw).
   */
***************
*** 1068,1080 ****
      SIGRETURN;
  }
! #ifdef _REENTRANT
  /*
   * On Solaris with multi-threading, suspending might not work immediately.
   * Catch the SIGCONT signal, which will be used as an indication whether the
   * suspending has been done or not.
   */
! static int sigcont_received;
  static RETSIGTYPE sigcont_handler __ARGS(SIGPROTOARG);
  /*
--- 1072,1089 ----
      SIGRETURN;
  }
! #if defined(_REENTRANT) && defined(SIGCONT)
  /*
   * On Solaris with multi-threading, suspending might not work immediately.
   * Catch the SIGCONT signal, which will be used as an indication whether the
   * suspending has been done or not.
+  *
+  * 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);
  /*
***************
*** 1118,1132 ****
      }
  # endif
! # ifdef _REENTRANT
      sigcont_received = FALSE;
  # endif
      kill(0, SIGTSTP);        /* send ourselves a STOP signal */
! # ifdef _REENTRANT
!     /* When we didn't suspend immediately in the kill(), do it now.  Happens
!      * on multi-threaded Solaris. */
!     if (!sigcont_received)
!     pause();
  # endif
  # ifdef FEAT_TITLE
--- 1127,1154 ----
      }
  # endif
! # if defined(_REENTRANT) && defined(SIGCONT)
      sigcont_received = FALSE;
  # endif
      kill(0, SIGTSTP);        /* send ourselves a STOP signal */
! # if defined(_REENTRANT) && defined(SIGCONT)
!     /*
!      * Wait for the SIGCONT signal to be handled. It generally happens
!      * immediately, but somehow not all the time. Do not call pause()
!      * because there would be race condition which would hang Vim if
!      * signal happened in between the test of sigcont_received and the
!      * call to pause(). If signal is not yet received, call sleep(0)
!      * to just yield CPU. Signal should then be received. If somehow
!      * it's still not received, sleep 1, 2, 3 ms. Don't bother waiting
!      * further if signal is not received after 1+2+3+4 ms (not expected
!      * to happen).
!      */
!     {
!     long wait;
!     for (wait = 0; !sigcont_received && wait <= 3L; wait++)
!         /* Loop is not entered most of the time */
!         mch_delay(wait, FALSE);
!     }
  # endif
  # ifdef FEAT_TITLE
***************
*** 1175,1181 ****
  #ifdef SIGTSTP
      signal(SIGTSTP, restricted ? SIG_IGN : SIG_DFL);
  #endif
! #ifdef _REENTRANT
      signal(SIGCONT, sigcont_handler);
  #endif
--- 1197,1203 ----
  #ifdef SIGTSTP
      signal(SIGTSTP, restricted ? SIG_IGN : SIG_DFL);
  #endif
! #if defined(_REENTRANT) && defined(SIGCONT)
      signal(SIGCONT, sigcont_handler);
  #endif
***************
*** 1234,1240 ****
  reset_signals()
  {
      catch_signals(SIG_DFL, SIG_DFL);
! #ifdef _REENTRANT
      /* SIGCONT isn't in the list, because its default action is ignore */
      signal(SIGCONT, SIG_DFL);
  #endif
--- 1256,1262 ----
  reset_signals()
  {
      catch_signals(SIG_DFL, SIG_DFL);
! #if defined(_REENTRANT) && defined(SIGCONT)
      /* SIGCONT isn't in the list, because its default action is ignore */
      signal(SIGCONT, SIG_DFL);
  #endif
***************
*** 5899,5905 ****
--- 5921,5929 ----
           * we are going to suspend or starting an external process
           * so we shouldn't  have problem with this
           */
+ # ifdef SIGTSTP
          signal(SIGTSTP, restricted ? SIG_IGN : SIG_DFL);
+ # endif
          return 1; /* succeed */
      }
      if (gpm_fd == -2)
*** ../vim-7.2.129/src/version.c    Mon Mar  2 02:11:09 2009
--- src/version.c    Mon Mar  2 02:36:00 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     130,
  /**/
--
hundred-and-one symptoms of being an internet addict:
148. You find it easier to dial-up the National Weather Service
     Weather/your_town/now.html than to simply look out the window.
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.131
New file
@@ -0,0 +1,83 @@
To: vim-dev@vim.org
Subject: Patch 7.2.131
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.131
Problem:    When 'keymap' is cleared may still use the cursor highlighting for
            when it's enabled.
Solution:   Reset 'iminsert' and 'imsearch'. (partly by Dominique Pelle)
            Also avoid ":setlocal" for these options have a global effect.
Files:      src/option.c
*** ../vim-7.2.130/src/option.c    Sat Feb 21 20:27:00 2009
--- src/option.c    Wed Mar  4 04:09:51 2009
***************
*** 5797,5810 ****
      /* load or unload key mapping tables */
      errmsg = keymap_init();
!     /* When successfully installed a new keymap switch on using it. */
!     if (*curbuf->b_p_keymap != NUL && errmsg == NULL)
      {
!         curbuf->b_p_iminsert = B_IMODE_LMAP;
!         if (curbuf->b_p_imsearch != B_IMODE_USE_INSERT)
!         curbuf->b_p_imsearch = B_IMODE_LMAP;
!         set_iminsert_global();
!         set_imsearch_global();
  # ifdef FEAT_WINDOWS
          status_redraw_curbuf();
  # endif
--- 5797,5824 ----
      /* load or unload key mapping tables */
      errmsg = keymap_init();
!     if (errmsg == NULL)
      {
!         if (*curbuf->b_p_keymap != NUL)
!         {
!         /* Installed a new keymap, switch on using it. */
!         curbuf->b_p_iminsert = B_IMODE_LMAP;
!         if (curbuf->b_p_imsearch != B_IMODE_USE_INSERT)
!             curbuf->b_p_imsearch = B_IMODE_LMAP;
!         }
!         else
!         {
!         /* Cleared the keymap, may reset 'iminsert' and 'imsearch'. */
!         if (curbuf->b_p_iminsert == B_IMODE_LMAP)
!             curbuf->b_p_iminsert = B_IMODE_NONE;
!         if (curbuf->b_p_imsearch == B_IMODE_LMAP)
!             curbuf->b_p_imsearch = B_IMODE_USE_INSERT;
!         }
!         if ((opt_flags & OPT_LOCAL) == 0)
!         {
!         set_iminsert_global();
!         set_imsearch_global();
!         }
  # ifdef FEAT_WINDOWS
          status_redraw_curbuf();
  # endif
*** ../vim-7.2.130/src/version.c    Mon Mar  2 02:44:54 2009
--- src/version.c    Wed Mar  4 04:10:32 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     131,
  /**/
--
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/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.132
New file
@@ -0,0 +1,268 @@
To: vim-dev@vim.org
Subject: Patch 7.2.132
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.132
Problem:    When changing directory during a SwapExists autocmd freed memory
            may be accessed. (Dominique Pelle)
Solution:   Add the allbuf_lock flag.
Files:      src/ex_getln.c, src/globals.h, src/fileio.c,
            src/proto/ex_getln.pro
*** ../vim-7.2.131/src/ex_getln.c    Mon Mar  2 02:11:09 2009
--- src/ex_getln.c    Mon Mar  2 00:53:39 2009
***************
*** 2000,2007 ****
  #if defined(FEAT_AUTOCMD) || defined(PROTO)
  /*
!  * Check if "curbuf_lock" is set and return TRUE when it is and give an error
!  * message.
   */
      int
  curbuf_locked()
--- 2000,2007 ----
  #if defined(FEAT_AUTOCMD) || defined(PROTO)
  /*
!  * Check if "curbuf_lock" or "allbuf_lock" is set and return TRUE when it is
!  * and give an error message.
   */
      int
  curbuf_locked()
***************
*** 2011,2016 ****
--- 2011,2031 ----
      EMSG(_("E788: Not allowed to edit another buffer now"));
      return TRUE;
      }
+     return allbuf_locked();
+ }
+
+ /*
+  * Check if "allbuf_lock" is set and return TRUE when it is and give an error
+  * message.
+  */
+     int
+ allbuf_locked()
+ {
+     if (allbuf_lock > 0)
+     {
+     EMSG(_("E811: Not allowed to change buffer information now"));
+     return TRUE;
+     }
      return FALSE;
  }
  #endif
*** ../vim-7.2.131/src/globals.h    Mon Mar  2 02:44:54 2009
--- src/globals.h    Mon Mar  2 02:40:16 2009
***************
*** 619,624 ****
--- 619,629 ----
  EXTERN int    curbuf_lock INIT(= 0);
                  /* non-zero when the current buffer can't be
                   * changed.  Used for FileChangedRO. */
+ EXTERN int    allbuf_lock INIT(= 0);
+                 /* non-zero when no buffer name can be
+                  * changed, no buffer can be deleted and
+                  * current directory can't be changed.
+                  * Used for SwapExists et al. */
  #endif
  #ifdef FEAT_EVAL
  # define HAVE_SANDBOX
*** ../vim-7.2.131/src/fileio.c    Wed Dec 31 16:20:54 2008
--- src/fileio.c    Sun Mar  1 23:37:10 2009
***************
*** 69,75 ****
  static int au_find_group __ARGS((char_u *name));
  # define AUGROUP_DEFAULT    -1        /* default autocmd group */
! # define AUGROUP_ERROR        -2        /* errornouse autocmd group */
  # define AUGROUP_ALL        -3        /* all autocmd groups */
  #endif
--- 69,75 ----
  static int au_find_group __ARGS((char_u *name));
  # define AUGROUP_DEFAULT    -1        /* default autocmd group */
! # define AUGROUP_ERROR        -2        /* erroneous autocmd group */
  # define AUGROUP_ALL        -3        /* all autocmd groups */
  #endif
***************
*** 144,150 ****
  # endif
  #endif
  static int move_lines __ARGS((buf_T *frombuf, buf_T *tobuf));
!
      void
  filemess(buf, name, s, attr)
--- 144,152 ----
  # endif
  #endif
  static int move_lines __ARGS((buf_T *frombuf, buf_T *tobuf));
! #ifdef FEAT_AUTOCMD
! static char *e_auchangedbuf = N_("E812: Autocommands changed buffer or buffer name");
! #endif
      void
  filemess(buf, name, s, attr)
***************
*** 295,300 ****
--- 297,315 ----
      int        conv_restlen = 0;    /* nr of bytes in conv_rest[] */
  #endif
+ #ifdef FEAT_AUTOCMD
+     /* Remember the initial values of curbuf, curbuf->b_ffname and
+      * curbuf->b_fname to detect whether they are altered as a result of
+      * executing nasty autocommands.  Also check if "fname" and "sfname"
+      * point to one of these values. */
+     buf_T   *old_curbuf = curbuf;
+     char_u  *old_b_ffname = curbuf->b_ffname;
+     char_u  *old_b_fname = curbuf->b_fname;
+     int     using_b_ffname = (fname == curbuf->b_ffname)
+                           || (sfname == curbuf->b_ffname);
+     int     using_b_fname = (fname == curbuf->b_fname)
+                            || (sfname == curbuf->b_fname);
+ #endif
      write_no_eol_lnum = 0;    /* in case it was set by the previous read */
      /*
***************
*** 589,595 ****
--- 604,624 ----
  #ifdef FEAT_QUICKFIX
              if (!bt_dontwrite(curbuf))
  #endif
+             {
              check_need_swap(newfile);
+ #ifdef FEAT_AUTOCMD
+             /* SwapExists autocommand may mess things up */
+             if (curbuf != old_curbuf
+                 || (using_b_ffname
+                     && (old_b_ffname != curbuf->b_ffname))
+                 || (using_b_fname
+                      && (old_b_fname != curbuf->b_fname)))
+             {
+                 EMSG(_(e_auchangedbuf));
+                 return FAIL;
+             }
+ #endif
+             }
              if (dir_of_file_exists(fname))
              filemess(curbuf, sfname, (char_u *)_("[New File]"), 0);
              else
***************
*** 668,673 ****
--- 697,713 ----
  #endif
      {
      check_need_swap(newfile);
+ #ifdef FEAT_AUTOCMD
+     if (!read_stdin && (curbuf != old_curbuf
+         || (using_b_ffname && (old_b_ffname != curbuf->b_ffname))
+         || (using_b_fname && (old_b_fname != curbuf->b_fname))))
+     {
+         EMSG(_(e_auchangedbuf));
+         if (!read_buffer)
+         close(fd);
+         return FAIL;
+     }
+ #endif
  #ifdef UNIX
      /* Set swap file protection bits after creating it. */
      if (swap_mode > 0 && curbuf->b_ml.ml_mfp->mf_fname != NULL)
***************
*** 698,704 ****
      {
      int    m = msg_scroll;
      int    n = msg_scrolled;
-     buf_T    *old_curbuf = curbuf;
      /*
       * The file must be closed again, the autocommands may want to change
--- 738,743 ----
***************
*** 740,747 ****
--- 779,791 ----
      /*
       * Don't allow the autocommands to change the current buffer.
       * Try to re-open the file.
+      *
+      * Don't allow the autocommands to change the buffer name either
+      * (cd for example) if it invalidates fname or sfname.
       */
      if (!read_stdin && (curbuf != old_curbuf
+         || (using_b_ffname && (old_b_ffname != curbuf->b_ffname))
+         || (using_b_fname && (old_b_fname != curbuf->b_fname))
          || (fd = mch_open((char *)fname, O_RDONLY | O_EXTRA, 0)) < 0))
      {
          --no_wait_return;
***************
*** 6320,6326 ****
      if (!stuff_empty() || global_busy || !typebuf_typed()
  #ifdef FEAT_AUTOCMD
!             || autocmd_busy || curbuf_lock > 0
  #endif
                      )
      need_check_timestamps = TRUE;        /* check later */
--- 6364,6370 ----
      if (!stuff_empty() || global_busy || !typebuf_typed()
  #ifdef FEAT_AUTOCMD
!             || autocmd_busy || curbuf_lock > 0 || allbuf_lock > 0
  #endif
                      )
      need_check_timestamps = TRUE;        /* check later */
***************
*** 6522,6529 ****
--- 6566,6575 ----
          set_vim_var_string(VV_FCS_REASON, (char_u *)reason, -1);
          set_vim_var_string(VV_FCS_CHOICE, (char_u *)"", -1);
  # endif
+         ++allbuf_lock;
          n = apply_autocmds(EVENT_FILECHANGEDSHELL,
                        buf->b_fname, buf->b_fname, FALSE, buf);
+         --allbuf_lock;
          busy = FALSE;
          if (n)
          {
*** ../vim-7.2.131/src/proto/ex_getln.pro    Fri Nov 28 10:59:57 2008
--- src/proto/ex_getln.pro    Sun Mar  1 00:27:12 2009
***************
*** 4,9 ****
--- 4,10 ----
  int text_locked __ARGS((void));
  void text_locked_msg __ARGS((void));
  int curbuf_locked __ARGS((void));
+ int allbuf_locked __ARGS((void));
  char_u *getexline __ARGS((int c, void *dummy, int indent));
  char_u *getexmodeline __ARGS((int promptc, void *dummy, int indent));
  int cmdline_overstrike __ARGS((void));
*** ../vim-7.2.131/src/version.c    Wed Mar  4 04:11:56 2009
--- src/version.c    Thu Mar  5 03:08:54 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     132,
  /**/
--
hundred-and-one symptoms of being an internet addict:
168. You have your own domain name.
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.133
New file
@@ -0,0 +1,53 @@
To: vim-dev@vim.org
Subject: Patch 7.2.133
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.133
Problem:    ":diffoff!" changes settings in windows not in diff mode.
Solution:   Only change settings in other windows when 'diff' is set, always
        do it for the current window. (Lech Lorens)
Files:        src/diff.c
*** ../vim-7.2.132/src/diff.c    Thu Jan 22 20:48:07 2009
--- src/diff.c    Fri Mar  6 04:17:41 2009
***************
*** 1153,1159 ****
      for (wp = firstwin; wp != NULL; wp = wp->w_next)
      {
!     if (wp == curwin || eap->forceit)
      {
          /* Set 'diff', 'scrollbind' off and 'wrap' on. */
          wp->w_p_diff = FALSE;
--- 1153,1159 ----
      for (wp = firstwin; wp != NULL; wp = wp->w_next)
      {
!     if (wp == curwin || (eap->forceit && wp->w_p_diff))
      {
          /* Set 'diff', 'scrollbind' off and 'wrap' on. */
          wp->w_p_diff = FALSE;
*** ../vim-7.2.132/src/version.c    Thu Mar  5 03:13:51 2009
--- src/version.c    Wed Mar 11 12:45:10 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     133,
  /**/
--
hundred-and-one symptoms of being an internet addict:
192. Your boss asks you to "go fer" coffee and you come up with 235 FTP sites.
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.134
New file
@@ -0,0 +1,68 @@
To: vim-dev@vim.org
Subject: Patch 7.2.134
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.134
Problem:    Warning for discarding "const" from pointer.
Solution:   Don't pass const pointer to mch_memmove().
Files:        src/fileio.c
*** ../vim-7.2.133/src/fileio.c    Thu Mar  5 03:13:51 2009
--- src/fileio.c    Wed Mar 11 12:59:35 2009
***************
*** 5288,5300 ****
          /* Convert with iconv(). */
          if (ip->bw_restlen > 0)
          {
          /* Need to concatenate the remainder of the previous call and
           * the bytes of the current call.  Use the end of the
           * conversion buffer for this. */
          fromlen = len + ip->bw_restlen;
!         from = (char *)ip->bw_conv_buf + ip->bw_conv_buflen - fromlen;
!         mch_memmove((void *)from, ip->bw_rest, (size_t)ip->bw_restlen);
!         mch_memmove((void *)(from + ip->bw_restlen), buf, (size_t)len);
          tolen = ip->bw_conv_buflen - fromlen;
          }
          else
--- 5288,5303 ----
          /* Convert with iconv(). */
          if (ip->bw_restlen > 0)
          {
+         char *fp;
+
          /* Need to concatenate the remainder of the previous call and
           * the bytes of the current call.  Use the end of the
           * conversion buffer for this. */
          fromlen = len + ip->bw_restlen;
!         fp = (char *)ip->bw_conv_buf + ip->bw_conv_buflen - fromlen;
!         mch_memmove(fp, ip->bw_rest, (size_t)ip->bw_restlen);
!         mch_memmove(fp + ip->bw_restlen, buf, (size_t)len);
!         from = fp;
          tolen = ip->bw_conv_buflen - fromlen;
          }
          else
*** ../vim-7.2.133/src/version.c    Wed Mar 11 12:45:44 2009
--- src/version.c    Wed Mar 11 13:08:25 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     134,
  /**/
--
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/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.135
New file
@@ -0,0 +1,85 @@
To: vim-dev@vim.org
Subject: Patch 7.2.135
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.135
Problem:    Memory leak when redefining user command with complete argument.
Solution:   Free the old complete argument. (Dominique Pelle)
Files:        src/ex_docmd.c
*** ../vim-7.2.134/src/ex_docmd.c    Sun Mar  1 02:43:50 2009
--- src/ex_docmd.c    Wed Mar 11 11:13:31 2009
***************
*** 5124,5130 ****
          }
          vim_free(cmd->uc_rep);
!         cmd->uc_rep = 0;
          break;
      }
--- 5124,5134 ----
          }
          vim_free(cmd->uc_rep);
!         cmd->uc_rep = NULL;
! #if defined(FEAT_EVAL) && defined(FEAT_CMDL_COMPL)
!         vim_free(cmd->uc_compl_arg);
!         cmd->uc_compl_arg = NULL;
! #endif
          break;
      }
***************
*** 5941,5947 ****
      for (;;)
      {
      p = cmd->uc_rep;    /* source */
!     q = buf;        /* destinateion */
      totlen = 0;
      for (;;)
--- 5945,5951 ----
      for (;;)
      {
      p = cmd->uc_rep;    /* source */
!     q = buf;        /* destination */
      totlen = 0;
      for (;;)
***************
*** 7846,7851 ****
--- 7850,7858 ----
  {
      vim_free(prev_dir);
      prev_dir = NULL;
+
+     vim_free(globaldir);
+     globaldir = NULL;
  }
  #endif
*** ../vim-7.2.134/src/version.c    Wed Mar 11 13:09:30 2009
--- src/version.c    Wed Mar 11 15:06:23 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     135,
  /**/
--
hundred-and-one symptoms of being an internet addict:
194. Your business cards contain your e-mail and home page address.
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.136
New file
@@ -0,0 +1,47 @@
To: vim-dev@vim.org
Subject: Patch 7.2.136
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.136 (after 7.2.132)
Problem:    ":cd" is still possible in a SwapExists autocmd.
Solution:   Check the allbuf_lock flag in ex_cd().
Files:        src/ex_docmd.c
*** ../vim-7.2.135/src/ex_docmd.c    Wed Mar 11 15:09:07 2009
--- src/ex_docmd.c    Wed Mar 11 11:13:31 2009
***************
*** 7875,7880 ****
--- 7875,7884 ----
      else
  #endif
      {
+ #ifdef FEAT_AUTOCMD
+     if (allbuf_locked())
+         return;
+ #endif
      if (vim_strchr(p_cpo, CPO_CHDIR) != NULL && curbufIsChanged()
                                   && !eap->forceit)
      {
*** ../vim-7.2.135/src/version.c    Wed Mar 11 15:09:07 2009
--- src/version.c    Wed Mar 11 15:35:36 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     136,
  /**/
--
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/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
components/vim/vim72-patches/7.2.137
New file
@@ -0,0 +1,343 @@
To: vim-dev@vim.org
Subject: Patch 7.2.137
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Note: The special characters in the patch may cause problems.
Patch 7.2.137
Problem:    When 'virtualedit' is set, a left shift of a blockwise selection
        that starts and ends inside a tab shifts too much. (Helmut
        Stiegler)
Solution:   Redo the block left shift code. (Lech Lorens)
Files:        src/ops.c, src/testdir/Makefile, src/testdir/test66.in,
        src/testdir/test66.ok
*** ../vim-7.2.136/src/ops.c    Wed Dec  3 13:38:00 2008
--- src/ops.c    Thu Mar  5 04:47:09 2009
***************
*** 72,82 ****
   */
  struct block_def
  {
!     int        startspaces;    /* 'extra' cols of first char */
!     int        endspaces;    /* 'extra' cols of first char */
      int        textlen;    /* chars in block */
!     char_u    *textstart;    /* pointer to 1st char in block */
!     colnr_T    textcol;    /* cols of chars (at least part.) in block */
      colnr_T    start_vcol;    /* start col of 1st char wholly inside block */
      colnr_T    end_vcol;    /* start col of 1st char wholly after block */
  #ifdef FEAT_VISUALEXTRA
--- 72,82 ----
   */
  struct block_def
  {
!     int        startspaces;    /* 'extra' cols before first char */
!     int        endspaces;    /* 'extra' cols after last char */
      int        textlen;    /* chars in block */
!     char_u    *textstart;    /* pointer to 1st char (partially) in block */
!     colnr_T    textcol;    /* index of chars (partially) in block */
      colnr_T    start_vcol;    /* start col of 1st char wholly inside block */
      colnr_T    end_vcol;    /* start col of 1st char wholly after block */
  #ifdef FEAT_VISUALEXTRA
***************
*** 382,396 ****
  {
      int            left = (oap->op_type == OP_LSHIFT);
      int            oldstate = State;
!     int            total, split;
!     char_u        *newp, *oldp, *midp, *ptr;
      int            oldcol = curwin->w_cursor.col;
      int            p_sw = (int)curbuf->b_p_sw;
      int            p_ts = (int)curbuf->b_p_ts;
      struct block_def    bd;
-     int            internal = 0;
      int            incr;
!     colnr_T        vcol, col = 0, ws_vcol;
      int            i = 0, j = 0;
      int            len;
--- 382,395 ----
  {
      int            left = (oap->op_type == OP_LSHIFT);
      int            oldstate = State;
!     int            total;
!     char_u        *newp, *oldp;
      int            oldcol = curwin->w_cursor.col;
      int            p_sw = (int)curbuf->b_p_sw;
      int            p_ts = (int)curbuf->b_p_ts;
      struct block_def    bd;
      int            incr;
!     colnr_T        ws_vcol;
      int            i = 0, j = 0;
      int            len;
***************
*** 456,522 ****
      }
      else /* left */
      {
!     vcol = oap->start_vcol;
!     /* walk vcol past ws to be removed */
!     for (midp = oldp + bd.textcol;
!           vcol < (oap->start_vcol + total) && vim_iswhite(*midp); )
!     {
!         incr = lbr_chartabsize_adv(&midp, (colnr_T)vcol);
!         vcol += incr;
!     }
!     /* internal is the block-internal ws replacing a split TAB */
!     if (vcol > (oap->start_vcol + total))
!     {
!         /* we have to split the TAB *(midp-1) */
!         internal = vcol - (oap->start_vcol + total);
!     }
!     /* if 'expandtab' is not set, use TABs */
!     split = bd.startspaces + internal;
!     if (split > 0)
!     {
!         if (!curbuf->b_p_et)
!         {
!         for (ptr = oldp, col = 0; ptr < oldp+bd.textcol; )
!             col += lbr_chartabsize_adv(&ptr, (colnr_T)col);
!         /* col+1 now equals the start col of the first char of the
!          * block (may be < oap.start_vcol if we're splitting a TAB) */
!         i = ((col % p_ts) + split) / p_ts; /* number of tabs */
!         }
!         if (i)
!         j = ((col % p_ts) + split) % p_ts; /* number of spp */
!         else
!         j = split;
!     }
!     newp = alloc_check(bd.textcol + i + j + (unsigned)STRLEN(midp) + 1);
!     if (newp == NULL)
!         return;
!     vim_memset(newp, NUL, (size_t)(bd.textcol + i + j + STRLEN(midp) + 1));
!     /* copy first part we want to keep */
!     mch_memmove(newp, oldp, (size_t)bd.textcol);
!     /* Now copy any TABS and spp to ensure correct alignment! */
!     while (vim_iswhite(*midp))
      {
!         if (*midp == TAB)
!         i++;
!         else /*space */
!         j++;
!         midp++;
      }
!     /* We might have an extra TAB worth of spp now! */
!     if (j / p_ts && !curbuf->b_p_et)
      {
!         i++;
!         j -= p_ts;
      }
-     copy_chars(newp + bd.textcol, (size_t)i, TAB);
-     copy_spaces(newp + bd.textcol + i, (size_t)j);
!     /* the end */
!     STRMOVE(newp + STRLEN(newp), midp);
      }
      /* replace the line */
      ml_replace(curwin->w_cursor.lnum, newp, FALSE);
--- 455,543 ----
      }
      else /* left */
      {
!     colnr_T        destination_col;    /* column to which text in block will
!                        be shifted */
!     char_u        *verbatim_copy_end;    /* end of the part of the line which is
!                        copied verbatim */
!     colnr_T        verbatim_copy_width;/* the (displayed) width of this part
!                        of line */
!     unsigned    fill;        /* nr of spaces that replace a TAB */
!     unsigned    new_line_len;    /* the length of the line after the
!                        block shift */
!     size_t        block_space_width;
!     size_t        shift_amount;
!     char_u        *non_white = bd.textstart;
!     colnr_T        non_white_col;
!     /*
!      * Firstly, let's find the first non-whitespace character that is
!      * displayed after the block's start column and the character's column
!      * number. Also, let's calculate the width of all the whitespace
!      * characters that are displayed in the block and precede the searched
!      * non-whitespace character.
!      */
!     /* If "bd.startspaces" is set, "bd.textstart" points to the character,
!      * the part of which is displayed at the block's beginning. Let's start
!      * searching from the next character. */
!     if (bd.startspaces)
!         mb_ptr_adv(non_white);
!     /* The character's column is in "bd.start_vcol".  */
!     non_white_col = bd.start_vcol;
!     while (vim_iswhite(*non_white))
      {
!         incr = lbr_chartabsize_adv(&non_white, non_white_col);
!         non_white_col += incr;
      }
!
!     block_space_width = non_white_col - oap->start_vcol;
!     /* We will shift by "total" or "block_space_width", whichever is less.
!      */
!     shift_amount = (block_space_width < total? block_space_width: total);
!
!     /* The column to which we will shift the text.  */
!     destination_col = non_white_col - shift_amount;
!
!     /* Now let's find out how much of the beginning of the line we can
!      * reuse without modification.  */
!     verbatim_copy_end = bd.textstart;
!     verbatim_copy_width = bd.start_vcol;
!
!     /* If "bd.startspaces" is set, "bd.textstart" points to the character
!      * preceding the block. We have to subtract its width to obtain its
!      * column number.  */
!     if (bd.startspaces)
!         verbatim_copy_width -= bd.start_char_vcols;
!     while (verbatim_copy_width < destination_col)
      {
!         incr = lbr_chartabsize(verbatim_copy_end, verbatim_copy_width);
!         if (verbatim_copy_width + incr > destination_col)
!         break;
!         verbatim_copy_width += incr;
!         mb_ptr_adv(verbatim_copy_end);
      }
!     /* If "destination_col" is different from the width of the initial
!      * part of the line that will be copied, it means we encountered a tab
!      * character, which we will have to partly replace with spaces.  */
!     fill = destination_col - verbatim_copy_width;
!
!     /* The replacement line will consist of:
!      * - the beginning of the original line up to "verbatim_copy_end",
!      * - "fill" number of spaces,
!      * - the rest of the line, pointed to by non_white.  */
!     new_line_len = (unsigned)(verbatim_copy_end - oldp)
!                + fill
!                + (unsigned)STRLEN(non_white) + 1;
!
!     newp = alloc_check(new_line_len);
!     if (newp == NULL)
!         return;
!     mch_memmove(newp, oldp, (size_t)(verbatim_copy_end - oldp));
!     copy_spaces(newp + (verbatim_copy_end - oldp), (size_t)fill);
!     STRMOVE(newp + (verbatim_copy_end - oldp) + fill, non_white);
      }
      /* replace the line */
      ml_replace(curwin->w_cursor.lnum, newp, FALSE);
***************
*** 4851,4857 ****
   * - textlen includes the first/last char to be (partly) deleted
   * - start/endspaces is the number of columns that are taken by the
   *   first/last deleted char minus the number of columns that have to be
!  *   deleted.  for yank and tilde:
   * - textlen includes the first/last char to be wholly yanked
   * - start/endspaces is the number of columns of the first/last yanked char
   *   that are to be yanked.
--- 4872,4879 ----
   * - textlen includes the first/last char to be (partly) deleted
   * - start/endspaces is the number of columns that are taken by the
   *   first/last deleted char minus the number of columns that have to be
!  *   deleted.
!  * for yank and tilde:
   * - textlen includes the first/last char to be wholly yanked
   * - start/endspaces is the number of columns of the first/last yanked char
   *   that are to be yanked.
*** ../vim-7.2.136/src/testdir/Makefile    Wed Sep 10 18:25:18 2008
--- src/testdir/Makefile    Thu Mar  5 04:53:58 2009
***************
*** 20,26 ****
          test48.out test49.out test51.out test52.out test53.out \
          test54.out test55.out test56.out test57.out test58.out \
          test59.out test60.out test61.out test62.out test63.out \
!         test64.out test65.out
  SCRIPTS_GUI = test16.out
--- 20,26 ----
          test48.out test49.out test51.out test52.out test53.out \
          test54.out test55.out test56.out test57.out test58.out \
          test59.out test60.out test61.out test62.out test63.out \
!         test64.out test65.out test66.out
  SCRIPTS_GUI = test16.out
*** ../vim-7.2.136/src/testdir/test66.in    Wed Mar 11 16:24:44 2009
--- src/testdir/test66.in    Wed Mar 11 11:52:57 2009
***************
*** 0 ****
--- 1,25 ----
+
+ Test for visual block shift and tab characters.
+
+ STARTTEST
+ :so small.vim
+ /^abcdefgh
+ 4jI    j<<11|D
+ 7|a        
+ 7|a           
+ 7|a               4k13|4j<
+ :$-4,$w! test.out
+ :$-4,$s/\s\+//g
+ 4kI    j<<
+ 7|a        
+ 7|a                    
+ 7|a                   4k13|4j3<
+ :$-4,$w >> test.out
+ :qa!
+ ENDTEST
+
+ abcdefghijklmnopqrstuvwxyz
+ abcdefghijklmnopqrstuvwxyz
+ abcdefghijklmnopqrstuvwxyz
+ abcdefghijklmnopqrstuvwxyz
+ abcdefghijklmnopqrstuvwxyz
*** ../vim-7.2.136/src/testdir/test66.ok    Wed Mar 11 16:24:44 2009
--- src/testdir/test66.ok    Thu Mar  5 04:39:36 2009
***************
*** 0 ****
--- 1,10 ----
+     abcdefghijklmnopqrstuvwxyz
+ abcdefghij
+     abc        defghijklmnopqrstuvwxyz
+     abc        defghijklmnopqrstuvwxyz
+     abc        defghijklmnopqrstuvwxyz
+     abcdefghijklmnopqrstuvwxyz
+ abcdefghij
+     abc        defghijklmnopqrstuvwxyz
+     abc        defghijklmnopqrstuvwxyz
+     abc        defghijklmnopqrstuvwxyz
*** ../vim-7.2.136/src/version.c    Wed Mar 11 15:36:01 2009
--- src/version.c    Wed Mar 11 16:23:07 2009
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     137,
  /**/
--
% cat /usr/include/sys/errno.h
#define    EPERM        1        /* Operation not permitted */
#define    ENOENT        2        /* No such file or directory */
#define    ESRCH        3        /* No such process */
[...]
#define EMACS        666        /* Too many macros */
%
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\        download, build and distribute -- http://www.A-A-P.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
Diff truncated after the above file
components/vim/vim72-patches/7.2.139 components/vim/vim72-patches/7.2.140 components/vim/vim72-patches/7.2.141 components/vim/vim72-patches/7.2.142 components/vim/vim72-patches/7.2.143 components/vim/vim72-patches/7.2.144 components/vim/vim72-patches/7.2.145 components/vim/vim72-patches/7.2.146 components/vim/vim72-patches/7.2.147 components/vim/vim72-patches/7.2.148 components/vim/vim72-patches/7.2.149 components/vim/vim72-patches/7.2.151 components/vim/vim72-patches/7.2.152 components/vim/vim72-patches/7.2.153 components/vim/vim72-patches/7.2.154 components/vim/vim72-patches/7.2.155 components/vim/vim72-patches/7.2.156 components/vim/vim72-patches/7.2.157 components/vim/vim72-patches/7.2.158 components/vim/vim72-patches/7.2.159 components/vim/vim72-patches/7.2.160 components/vim/vim72-patches/7.2.161 components/vim/vim72-patches/7.2.162 components/vim/vim72-patches/7.2.163 components/vim/vim72-patches/7.2.164 components/vim/vim72-patches/7.2.165 components/vim/vim72-patches/7.2.166 components/vim/vim72-patches/7.2.167 components/vim/vim72-patches/7.2.168 components/vim/vim72-patches/7.2.169 components/vim/vim72-patches/7.2.170 components/vim/vim72-patches/7.2.171 components/vim/vim72-patches/7.2.173 components/vim/vim72-patches/7.2.174 components/vim/vim72-patches/7.2.175 components/vim/vim72-patches/7.2.176 components/vim/vim72-patches/7.2.177 components/vim/vim72-patches/7.2.178 components/vim/vim72-patches/7.2.179 components/vim/vim72-patches/7.2.180 components/vim/vim72-patches/7.2.181 components/vim/vim72-patches/7.2.182 components/vim/vim72-patches/7.2.183 components/vim/vim72-patches/7.2.184 components/vim/vim72-patches/7.2.185 components/vim/vim72-patches/7.2.186 components/vim/vim72-patches/7.2.187 components/vim/vim72-patches/7.2.188 components/vim/vim72-patches/7.2.189 components/vim/vim72-patches/7.2.190 components/vim/vim72-patches/7.2.191 components/vim/vim72-patches/7.2.192 components/vim/vim72-patches/7.2.193 components/vim/vim72-patches/7.2.195 components/vim/vim72-patches/7.2.196 components/vim/vim72-patches/7.2.197 components/vim/vim72-patches/7.2.198 components/vim/vim72-patches/7.2.199 components/vim/vim72-patches/7.2.200 components/vim/vim72-patches/7.2.201 components/vim/vim72-patches/7.2.202 components/vim/vim72-patches/7.2.203 components/vim/vim72-patches/7.2.206 components/vim/vim72-patches/7.2.207 components/vim/vim72-patches/7.2.208 components/vim/vim72-patches/7.2.209 components/vim/vim72-patches/7.2.210 components/vim/vim72-patches/7.2.211 components/vim/vim72-patches/7.2.213 components/vim/vim72-patches/7.2.214 components/vim/vim72-patches/7.2.215 components/vim/vim72-patches/7.2.216 components/vim/vim72-patches/7.2.217 components/vim/vim72-patches/7.2.218 components/vim/vim72-patches/7.2.220 components/vim/vim72-patches/7.2.221 components/vim/vim72-patches/7.2.222 components/vim/vim72-patches/7.2.223 components/vim/vim72-patches/7.2.224 components/vim/vim72-patches/7.2.225 components/vim/vim72-patches/7.2.226 components/vim/vim72-patches/7.2.227 components/vim/vim72-patches/7.2.228 components/vim/vim72-patches/7.2.229 components/vim/vim72-patches/7.2.230 components/vim/vim72-patches/7.2.231 components/vim/vim72-patches/7.2.232 components/vim/vim72-patches/7.2.234 components/vim/vim72-patches/7.2.235 components/vim/vim72-patches/7.2.236 components/vim/vim72-patches/7.2.237 components/vim/vim72-patches/7.2.238 components/vim/vim72-patches/7.2.239 components/vim/vim72-patches/7.2.240 components/vim/vim72-patches/7.2.241 components/vim/vim72-patches/7.2.242 components/vim/vim72-patches/7.2.243 components/vim/vim72-patches/7.2.244 components/vim/vim72-patches/7.2.245 components/vim/vim72-patches/7.2.246 components/vim/vim72-patches/7.2.247 components/vim/vim72-patches/7.2.251 components/vim/vim72-patches/7.2.252 components/vim/vim72-patches/7.2.253 components/vim/vim72-patches/7.2.254 components/vim/vim72-patches/7.2.255 components/vim/vim72-patches/7.2.256 components/vim/vim72-patches/7.2.257 components/vim/vim72-patches/7.2.258 components/vim/vim72-patches/7.2.259 components/vim/vim72-patches/7.2.261 components/vim/vim72-patches/7.2.262 components/vim/vim72-patches/7.2.263 components/vim/vim72-patches/7.2.264 components/vim/vim72-patches/7.2.265 components/vim/vim72-patches/7.2.266 components/vim/vim72-patches/7.2.267 components/vim/vim72-patches/7.2.268 components/vim/vim72-patches/7.2.269 components/vim/vim72-patches/7.2.270 components/vim/vim72-patches/7.2.271 components/vim/vim72-patches/7.2.272 components/vim/vim72-patches/7.2.273 components/vim/vim72-patches/7.2.274 components/vim/vim72-patches/7.2.275 components/vim/vim72-patches/7.2.276 components/vim/vim72-patches/7.2.277 components/vim/vim72-patches/7.2.278 components/vim/vim72-patches/7.2.279 components/vim/vim72-patches/7.2.280 components/vim/vim72-patches/7.2.281 components/vim/vim72-patches/7.2.282 components/vim/vim72-patches/7.2.283 components/vim/vim72-patches/7.2.284 components/vim/vim72-patches/7.2.285 components/vim/vim72-patches/7.2.286 components/vim/vim72-patches/7.2.287 components/vim/vim72-patches/7.2.288 components/vim/vim72-patches/7.2.289 components/vim/vim72-patches/7.2.290 components/vim/vim72-patches/7.2.291 components/vim/vim72-patches/7.2.292 components/vim/vim72-patches/7.2.293 components/vim/vim72-patches/7.2.294 components/vim/vim72-patches/7.2.295 components/vim/vim72-patches/7.2.296 components/vim/vim72-patches/7.2.297 components/vim/vim72-patches/7.2.298 components/vim/vim72-patches/7.2.299 components/vim/vim72-patches/7.2.300 components/vim/vim72-patches/7.2.301 components/vim/vim72-patches/7.2.303 components/vim/vim72-patches/7.2.304 components/vim/vim72-patches/7.2.305 components/vim/vim72-patches/7.2.306 components/vim/vim72-patches/7.2.307 components/vim/vim72-patches/7.2.308 components/vim/vim72-patches/7.2.309 components/vim/vim72-patches/7.2.310 components/vim/vim72-patches/7.2.311 components/vim/vim72-patches/7.2.312 components/vim/vim72-patches/7.2.313 components/vim/vim72-patches/7.2.314 components/vim/vim72-patches/7.2.315 components/vim/vim72-patches/7.2.316 components/vim/vim72-patches/7.2.317 components/vim/vim72-patches/7.2.318 components/vim/vim72-patches/7.2.319 components/vim/vim72-patches/7.2.320 components/vim/vim72-patches/7.2.321 components/vim/vim72-patches/7.2.322 components/vim/vim72-patches/7.2.324 components/vim/vim72-patches/7.2.325 components/vim/vim72-patches/7.2.326 components/vim/vim72-patches/7.2.327 components/vim/vim72-patches/7.2.328 components/vim/vim72-patches/7.2.329 components/vim/vim72-patches/7.2.330 components/vim/vim72-patches/7.2.331 components/vim/vim72-patches/7.2.332 components/vim/vim72-patches/7.2.333 components/vim/vim72-patches/7.2.334 components/vim/vim72-patches/7.2.335 components/vim/vim72-patches/7.2.336 components/vim/vim72-patches/7.2.337 components/vim/vim72-patches/7.2.338 components/vim/vim72-patches/7.2.339 components/vim/vim72-patches/7.2.340 components/vim/vim72-patches/7.2.341 components/vim/vim72-patches/7.2.342 components/vim/vim72-patches/7.2.343 components/vim/vim72-patches/7.2.344 components/vim/vim72-patches/7.2.345 components/vim/vim72-patches/7.2.346 components/vim/vim72-patches/7.2.347 components/vim/vim72-patches/7.2.348 components/vim/vim72-patches/7.2.349 components/vim/vim72-patches/7.2.350 components/vim/vim72-patches/7.2.351 components/vim/vim72-patches/7.2.353 components/vim/vim72-patches/7.2.354 components/vim/vim72-patches/7.2.355 components/vim/vim72-patches/7.2.356 components/vim/vim72-patches/7.2.357 components/vim/vim72-patches/7.2.358 components/vim/vim72-patches/7.2.359 components/vim/vim72-patches/7.2.360 components/vim/vim72-patches/7.2.361 components/vim/vim72-patches/7.2.363 components/vim/vim72-patches/7.2.366 components/vim/vim72-patches/7.2.367 components/vim/vim72-patches/7.2.368 components/vim/vim72-patches/7.2.369 components/vim/vim72-patches/7.2.370 components/vim/vim72-patches/7.2.371 components/vim/vim72-patches/7.2.373 components/vim/vim72-patches/7.2.374 components/vim/vim72-patches/7.2.375 components/vim/vim72-patches/7.2.376 components/vim/vim72-patches/7.2.378 components/vim/vim72-patches/7.2.379 components/vim/vim72-patches/7.2.380 components/vim/vim72-patches/7.2.381 components/vim/vim72-patches/7.2.382 components/vim/vim72-patches/7.2.383 components/vim/vim72-patches/7.2.385 components/vim/vim72-patches/7.2.386 components/vim/vim72-patches/7.2.387 components/vim/vim72-patches/7.2.389 components/vim/vim72-patches/7.2.390 components/vim/vim72-patches/7.2.391 components/vim/vim72-patches/7.2.392 components/vim/vim72-patches/7.2.393 components/vim/vim72-patches/7.2.394 components/vim/vim72-patches/7.2.395 components/vim/vim72-patches/7.2.396 components/vim/vim72-patches/7.2.397 components/vim/vim72-patches/7.2.398 components/vim/vim72-patches/7.2.400 components/vim/vim72-patches/7.2.401 components/vim/vim72-patches/7.2.402 components/vim/vim72-patches/7.2.403 components/vim/vim72-patches/7.2.404 components/vim/vim72-patches/7.2.405 components/vim/vim72-patches/7.2.406 components/vim/vim72-patches/7.2.407 components/vim/vim72-patches/7.2.408 components/vim/vim72-patches/7.2.409 components/vim/vim72-patches/7.2.410 components/vim/vim72-patches/7.2.411 components/vim/vim72-patches/7.2.412 components/vim/vim72-patches/7.2.413 components/vim/vim72-patches/7.2.414 components/vim/vim72-patches/7.2.415 components/vim/vim72-patches/7.2.416 components/vim/vim72-patches/7.2.417 components/vim/vim72-patches/7.2.418 components/vim/vim72-patches/7.2.419 components/vim/vim72-patches/7.2.420 components/vim/vim72-patches/7.2.421 components/vim/vim72-patches/7.2.422 components/vim/vim72-patches/7.2.423 components/vim/vim72-patches/7.2.424 components/vim/vim72-patches/7.2.425 components/vim/vim72-patches/7.2.426 components/vim/vim72-patches/7.2.427 components/vim/vim72-patches/7.2.428 components/vim/vim72-patches/7.2.429 components/vim/vim72-patches/7.2.430 components/vim/vim72-patches/7.2.431 components/vim/vim72-patches/7.2.432 components/vim/vim72-patches/7.2.433 components/vim/vim72-patches/7.2.434 components/vim/vim72-patches/7.2.435 components/vim/vim72-patches/7.2.436 components/vim/vim72-patches/7.2.437 components/vim/vim72-patches/7.2.438 components/vim/vim72-patches/7.2.439 components/vim/vim72-patches/7.2.440 components/vim/vim72-patches/7.2.441 components/vim/vim72-patches/7.2.442 components/vim/vim72-patches/7.2.443 components/vim/vim72-patches/7.2.444 components/vim/vim72-patches/7.2.445 components/vim/vim72-patches/7.2.446 components/vim/vim72-patches/runtime.patch components/vim/vim72-patches/vim-help.patch make-rules/prep.mk tools/cloney