rpms/vim/F-9 7.2.001, NONE, 1.1 7.2.002, NONE, 1.1 7.2.003, NONE, 1.1 7.2.004, NONE, 1.1 7.2.005, NONE, 1.1 7.2.006, NONE, 1.1 7.2.007, NONE, 1.1 7.2.008, NONE, 1.1 7.2.009, NONE, 1.1 7.2.010, NONE, 1.1 7.2.011, NONE, 1.1 7.2.012, NONE, 1.1 7.2.013, NONE, 1.1 7.2.014, NONE, 1.1 7.2.015, NONE, 1.1 7.2.016, NONE, 1.1 7.2.017, NONE, 1.1 7.2.018, NONE, 1.1 7.2.019, NONE, 1.1 7.2.020, NONE, 1.1 7.2.021, NONE, 1.1 7.2.022, NONE, 1.1 7.2.023, NONE, 1.1 7.2.024, NONE, 1.1 7.2.025, NONE, 1.1 7.2.026, NONE, 1.1 7.2.027, NONE, 1.1 7.2.028, NONE, 1.1 7.2.029, NONE, 1.1 7.2.030, NONE, 1.1 7.2.031, NONE, 1.1 7.2.032, NONE, 1.1 7.2.033, NONE, 1.1 7.2.034, NONE, 1.1 7.2.035, NONE, 1.1 7.2.036, NONE, 1.1 7.2.037, NONE, 1.1 7.2.038, NONE, 1.1 7.2.039, NONE, 1.1 7.2.040, NONE, 1.1 7.2.041, NONE, 1.1 7.2.042, NONE, 1.1 7.2.043, NONE, 1.1 7.2.044, NONE, 1.1 7.2.045, NONE, 1.1 7.2.046, NONE, 1.1 7.2.047, NONE, 1.1 7.2.048, NONE, 1.1 7.2.049, NONE, 1.1 7.2.050, NONE, 1.1 7.2.051, NONE, 1.1 7.2.052, NONE, 1.1 7.2.053, NONE, 1.1 7.2.054, NONE, 1.1 7.2.055, NONE, 1.1 7.2.056, NONE, 1.1 7.2.057, NONE, 1.1 7.2.058, NONE, 1.1 7.2.059, NONE, 1.1 7.2.060, NONE, 1.1 filetype.vim, NONE, 1.1 gzip.vim, NONE, 1.1 netrw.vim, NONE, 1.1 netrwFileHandlers.vim, NONE, 1.1 netrwPlugin.vim, NONE, 1.1 netrwSettings.vim, NONE, 1.1 tar.vim, NONE, 1.1 vim-7.1-lib64.patch, NONE, 1.1 vim-7.2-fstabsyntax.patch, NONE, 1.1 zip.vim, NONE, 1.1 .cvsignore, 1.22, 1.23 README.patches, 1.104, 1.105 sources, 1.22, 1.23 vim.spec, 1.207, 1.208 7.1.001, 1.1, NONE 7.1.002, 1.1, NONE 7.1.003, 1.1, NONE 7.1.004, 1.1, NONE 7.1.005, 1.1, NONE 7.1.006, 1.1, NONE 7.1.007, 1.1, NONE 7.1.008, 1.1, NONE 7.1.009, 1.1, NONE 7.1.010, 1.1, NONE 7.1.011, 1.1, NONE 7.1.012, 1.1, NONE 7.1.013, 1.1, NONE 7.1.014, 1.1, NONE 7.1.015, 1.1, NONE 7.1.016, 1.1, NONE 7.1.017, 1.1, NONE 7.1.018, 1.1, NONE 7.1.019, 1.1, NONE 7.1.020, 1.1, NONE 7.1.021, 1.1, NONE 7.1.022, 1.1, NONE 7.1.023, 1.1, NONE 7.1.024, 1.1, NONE 7.1.025, 1.1, NONE 7.1.026, 1.1, NONE 7.1.027, 1.1, NONE 7.1.028, 1.1, NONE 7.1.029, 1.1, NONE 7.1.030, 1.1, NONE 7.1.031, 1.1, NONE 7.1.032, 1.1, NONE 7.1.033, 1.1, NONE 7.1.034, 1.1, NONE 7.1.035, 1.1, NONE 7.1.036, 1.1, NONE 7.1.037, 1.1, NONE 7.1.038, 1.1, NONE 7.1.039, 1.1, NONE 7.1.040, 1.1, NONE 7.1.041, 1.1, NONE 7.1.042, 1.1, NONE 7.1.043, 1.1, NONE 7.1.044, 1.1, NONE 7.1.045, 1.1, NONE 7.1.046, 1.1, NONE 7.1.047, 1.1, NONE 7.1.048, 1.1, NONE 7.1.049, 1.1, NONE 7.1.050, 1.1, NONE 7.1.051, 1.1, NONE 7.1.052, 1.1, NONE 7.1.053, 1.1, NONE 7.1.054, 1.1, NONE 7.1.055, 1.1, NONE 7.1.056, 1.1, NONE 7.1.057, 1.1, NONE 7.1.058, 1.1, NONE 7.1.059, 1.1, NONE 7.1.060, 1.1, NONE 7.1.061, 1.1, NONE 7.1.062, 1.1, NONE 7.1.063, 1.1, NONE 7.1.064, 1.1, NONE 7.1.065, 1.1, NONE 7.1.066, 1.1, NONE 7.1.067, 1.1, NONE 7.1.068, 1.1, NONE 7.1.069, 1.1, NONE 7.1.070, 1.1, NONE 7.1.071, 1.1, NONE 7.1.072, 1.1, NONE 7.1.073, 1.1, NONE 7.1.074, 1.1, NONE 7.1.075, 1.1, NONE 7.1.076, 1.1, NONE 7.1.077, 1.1, NONE 7.1.078, 1.1, NONE 7.1.079, 1.1, NONE 7.1.080, 1.1, NONE 7.1.081, 1.1, NONE 7.1.082, 1.1, NONE 7.1.083, 1.1, NONE 7.1.084, 1.1, NONE 7.1.085, 1.1, NONE 7.1.086, 1.1, NONE 7.1.087, 1.1, NONE 7.1.088, 1.1, NONE 7.1.089, 1.1, NONE 7.1.090, 1.1, NONE 7.1.091, 1.1, NONE 7.1.092, 1.1, NONE 7.1.093, 1.1, NONE 7.1.094, 1.1, NONE 7.1.095, 1.1, NONE 7.1.096, 1.1, NONE 7.1.097, 1.1, NONE 7.1.098, 1.1, NONE 7.1.099, 1.1, NONE 7.1.100, 1.1, NONE 7.1.101, 1.1, NONE 7.1.102, 1.1, NONE 7.1.103, 1.1, NONE 7.1.104, 1.1, NONE 7.1.105, 1.1, NONE 7.1.106, 1.1, NONE 7.1.107, 1.1, NONE 7.1.108, 1.1, NONE 7.1.109, 1.1, NONE 7.1.110, 1.1, NONE 7.1.111, 1.1, NONE 7.1.112, 1.1, NONE 7.1.113, 1.1, NONE 7.1.114, 1.1, NONE 7.1.115, 1.1, NONE 7.1.116, 1.1, NONE 7.1.117, 1.1, NONE 7.1.118, 1.1, NONE 7.1.119, 1.1, NONE 7.1.120, 1.1, NONE 7.1.121, 1.1, NONE 7.1.122, 1.1, NONE 7.1.123, 1.1, NONE 7.1.124, 1.1, NONE 7.1.125, 1.1, NONE 7.1.126, 1.1, NONE 7.1.127, 1.1, NONE 7.1.128, 1.1, NONE 7.1.129, 1.1, NONE 7.1.130, 1.1, NONE 7.1.131, 1.1, NONE 7.1.132, 1.1, NONE 7.1.133, 1.1, NONE 7.1.134, 1.1, NONE 7.1.135, 1.1, NONE 7.1.136, 1.1, NONE 7.1.137, 1.1, NONE 7.1.138, 1.1, NONE 7.1.139, 1.1, NONE 7.1.140, 1.1, NONE 7.1.141, 1.1, NONE 7.1.142, 1.1, NONE 7.1.143, 1.1, NONE 7.1.144, 1.1, NONE 7.1.145, 1.1, NONE 7.1.146, 1.1, NONE 7.1.147, 1.1, NONE 7.1.148, 1.1, NONE 7.1.149, 1.1, NONE 7.1.150, 1.1, NONE 7.1.151, 1.1, NONE 7.1.152, 1.1, NONE 7.1.153, 1.1, NONE 7.1.154, 1.1, NONE 7.1.155, 1.1, NONE 7.1.156, 1.1, NONE 7.1.157, 1.1, NONE 7.1.158, 1.1, NONE 7.1.159, 1.1, NONE 7.1.160, 1.1, NONE 7.1.161, 1.1, NONE 7.1.162, 1.1, NONE 7.1.163, 1.1, NONE 7.1.164, 1.1, NONE 7.1.165, 1.1, NONE 7.1.166, 1.1, NONE 7.1.167, 1.1, NONE 7.1.168, 1.1, NONE 7.1.169, 1.1, NONE 7.1.170, 1.1, NONE 7.1.171, 1.1, NONE 7.1.172, 1.1, NONE 7.1.173, 1.1, NONE 7.1.174, 1.1, NONE 7.1.175, 1.1, NONE 7.1.176, 1.1, NONE 7.1.177, 1.1, NONE 7.1.178, 1.1, NONE 7.1.179, 1.1, NONE 7.1.180, 1.1, NONE 7.1.181, 1.1, NONE 7.1.182, 1.1, NONE 7.1.183, 1.1, NONE 7.1.184, 1.1, NONE 7.1.185, 1.1, NONE 7.1.186, 1.1, NONE 7.1.187, 1.1, NONE 7.1.188, 1.1, NONE 7.1.189, 1.1, NONE 7.1.190, 1.1, NONE 7.1.191, 1.1, NONE 7.1.192, 1.1, NONE 7.1.193, 1.1, NONE 7.1.194, 1.1, NONE 7.1.195, 1.1, NONE 7.1.196, 1.1, NONE 7.1.197, 1.1, NONE 7.1.198, 1.1, NONE 7.1.199, 1.1, NONE 7.1.200, 1.1, NONE 7.1.201, 1.1, NONE 7.1.202, 1.1, NONE 7.1.203, 1.1, NONE 7.1.204, 1.1, NONE 7.1.205, 1.1, NONE 7.1.206, 1.1, NONE 7.1.207, 1.1, NONE 7.1.208, 1.1, NONE 7.1.209, 1.1, NONE 7.1.210, 1.1, NONE 7.1.211, 1.1, NONE 7.1.212, 1.1, NONE 7.1.213, 1.1, NONE 7.1.214, 1.1, NONE 7.1.215, 1.1, NONE 7.1.216, 1.1, NONE 7.1.217, 1.1, NONE 7.1.218, 1.1, NONE 7.1.219, 1.1, NONE 7.1.220, 1.1, NONE 7.1.221, 1.1, NONE 7.1.222, 1.1, NONE 7.1.223, 1.1, NONE 7.1.224, 1.1, NONE 7.1.225, 1.1, NONE 7.1.226, 1.1, NONE 7.1.227, 1.1, NONE 7.1.228, 1.1, NONE 7.1.229, 1.1, NONE 7.1.230, 1.1, NONE 7.1.231, 1.1, NONE 7.1.232, 1.1, NONE 7.1.233, 1.1, NONE 7.1.234, 1.1, NONE 7.1.235, 1.1, NONE 7.1.236, 1.1, NONE 7.1.237, 1.1, NONE 7.1.238, 1.1, NONE 7.1.239, 1.1, NONE 7.1.240, 1.1, NONE 7.1.241, 1.1, NONE 7.1.242, 1.1, NONE 7.1.243, 1.1, NONE 7.1.244, 1.1, NONE 7.1.245, 1.1, NONE 7.1.246, 1.1, NONE 7.1.247, 1.1, NONE 7.1.248, 1.1, NONE 7.1.249, 1.1, NONE 7.1.250, 1.1, NONE 7.1.251, 1.1, NONE 7.1.252, 1.1, NONE 7.1.253, 1.1, NONE 7.1.254, 1.1, NONE 7.1.255, 1.1, NONE 7.1.256, 1.1, NONE 7.1.257, 1.1, NONE 7.1.258, 1.1, NONE 7.1.259, 1.1, NONE 7.1.260, 1.1, NONE 7.1.261, 1.1, NONE 7.1.262, 1.1, NONE 7.1.263, 1.1, NONE 7.1.264, 1.1, NONE 7.1.265, 1.1, NONE 7.1.266, 1.1, NONE 7.1.267, 1.1, NONE 7.1.268, 1.1, NONE 7.1.269, 1.1, NONE 7.1.270, 1.1, NONE 7.1.271, 1.1, NONE 7.1.272, 1.1, NONE 7.1.273, 1.1, NONE 7.1.274, 1.1, NONE 7.1.275, 1.1, NONE 7.1.276, 1.1, NONE 7.1.277, 1.1, NONE 7.1.278, 1.1, NONE 7.1.279, 1.1, NONE 7.1.280, 1.1, NONE 7.1.281, 1.1, NONE 7.1.282, 1.1, NONE 7.1.283, 1.1, NONE 7.1.284, 1.1, NONE 7.1.285, 1.1, NONE 7.1.286, 1.1, NONE 7.1.287, 1.1, NONE 7.1.288, 1.1, NONE 7.1.289, 1.1, NONE 7.1.290, 1.1, NONE 7.1.291, 1.1, NONE 7.1.292, 1.1, NONE 7.1.293, 1.1, NONE vim-6.4-cvim.patch, 1.2, NONE vim-6.4-lib64.patch, 1.1, NONE vim-7.0-fstabsyntax.patch, 1.4, NONE vim-7.0-vimspelltypo.patch, 1.1, NONE vim-7.1-ada.patch, 1.3, NONE vim-7.1-erlang.patch, 1.1, NONE vim-selinux.patch, 1.3, NONE vim-selinux2.patch, 1.1, NONE

Karsten Hopp karsten at fedoraproject.org
Mon Dec 1 15:06:53 UTC 2008


Author: karsten

Update of /cvs/extras/rpms/vim/F-9
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv3587

Modified Files:
	.cvsignore README.patches sources vim.spec 
Added Files:
	7.2.001 7.2.002 7.2.003 7.2.004 7.2.005 7.2.006 7.2.007 
	7.2.008 7.2.009 7.2.010 7.2.011 7.2.012 7.2.013 7.2.014 
	7.2.015 7.2.016 7.2.017 7.2.018 7.2.019 7.2.020 7.2.021 
	7.2.022 7.2.023 7.2.024 7.2.025 7.2.026 7.2.027 7.2.028 
	7.2.029 7.2.030 7.2.031 7.2.032 7.2.033 7.2.034 7.2.035 
	7.2.036 7.2.037 7.2.038 7.2.039 7.2.040 7.2.041 7.2.042 
	7.2.043 7.2.044 7.2.045 7.2.046 7.2.047 7.2.048 7.2.049 
	7.2.050 7.2.051 7.2.052 7.2.053 7.2.054 7.2.055 7.2.056 
	7.2.057 7.2.058 7.2.059 7.2.060 filetype.vim gzip.vim 
	netrw.vim netrwFileHandlers.vim netrwPlugin.vim 
	netrwSettings.vim tar.vim vim-7.1-lib64.patch 
	vim-7.2-fstabsyntax.patch zip.vim 
Removed Files:
	7.1.001 7.1.002 7.1.003 7.1.004 7.1.005 7.1.006 7.1.007 
	7.1.008 7.1.009 7.1.010 7.1.011 7.1.012 7.1.013 7.1.014 
	7.1.015 7.1.016 7.1.017 7.1.018 7.1.019 7.1.020 7.1.021 
	7.1.022 7.1.023 7.1.024 7.1.025 7.1.026 7.1.027 7.1.028 
	7.1.029 7.1.030 7.1.031 7.1.032 7.1.033 7.1.034 7.1.035 
	7.1.036 7.1.037 7.1.038 7.1.039 7.1.040 7.1.041 7.1.042 
	7.1.043 7.1.044 7.1.045 7.1.046 7.1.047 7.1.048 7.1.049 
	7.1.050 7.1.051 7.1.052 7.1.053 7.1.054 7.1.055 7.1.056 
	7.1.057 7.1.058 7.1.059 7.1.060 7.1.061 7.1.062 7.1.063 
	7.1.064 7.1.065 7.1.066 7.1.067 7.1.068 7.1.069 7.1.070 
	7.1.071 7.1.072 7.1.073 7.1.074 7.1.075 7.1.076 7.1.077 
	7.1.078 7.1.079 7.1.080 7.1.081 7.1.082 7.1.083 7.1.084 
	7.1.085 7.1.086 7.1.087 7.1.088 7.1.089 7.1.090 7.1.091 
	7.1.092 7.1.093 7.1.094 7.1.095 7.1.096 7.1.097 7.1.098 
	7.1.099 7.1.100 7.1.101 7.1.102 7.1.103 7.1.104 7.1.105 
	7.1.106 7.1.107 7.1.108 7.1.109 7.1.110 7.1.111 7.1.112 
	7.1.113 7.1.114 7.1.115 7.1.116 7.1.117 7.1.118 7.1.119 
	7.1.120 7.1.121 7.1.122 7.1.123 7.1.124 7.1.125 7.1.126 
	7.1.127 7.1.128 7.1.129 7.1.130 7.1.131 7.1.132 7.1.133 
	7.1.134 7.1.135 7.1.136 7.1.137 7.1.138 7.1.139 7.1.140 
	7.1.141 7.1.142 7.1.143 7.1.144 7.1.145 7.1.146 7.1.147 
	7.1.148 7.1.149 7.1.150 7.1.151 7.1.152 7.1.153 7.1.154 
	7.1.155 7.1.156 7.1.157 7.1.158 7.1.159 7.1.160 7.1.161 
	7.1.162 7.1.163 7.1.164 7.1.165 7.1.166 7.1.167 7.1.168 
	7.1.169 7.1.170 7.1.171 7.1.172 7.1.173 7.1.174 7.1.175 
	7.1.176 7.1.177 7.1.178 7.1.179 7.1.180 7.1.181 7.1.182 
	7.1.183 7.1.184 7.1.185 7.1.186 7.1.187 7.1.188 7.1.189 
	7.1.190 7.1.191 7.1.192 7.1.193 7.1.194 7.1.195 7.1.196 
	7.1.197 7.1.198 7.1.199 7.1.200 7.1.201 7.1.202 7.1.203 
	7.1.204 7.1.205 7.1.206 7.1.207 7.1.208 7.1.209 7.1.210 
	7.1.211 7.1.212 7.1.213 7.1.214 7.1.215 7.1.216 7.1.217 
	7.1.218 7.1.219 7.1.220 7.1.221 7.1.222 7.1.223 7.1.224 
	7.1.225 7.1.226 7.1.227 7.1.228 7.1.229 7.1.230 7.1.231 
	7.1.232 7.1.233 7.1.234 7.1.235 7.1.236 7.1.237 7.1.238 
	7.1.239 7.1.240 7.1.241 7.1.242 7.1.243 7.1.244 7.1.245 
	7.1.246 7.1.247 7.1.248 7.1.249 7.1.250 7.1.251 7.1.252 
	7.1.253 7.1.254 7.1.255 7.1.256 7.1.257 7.1.258 7.1.259 
	7.1.260 7.1.261 7.1.262 7.1.263 7.1.264 7.1.265 7.1.266 
	7.1.267 7.1.268 7.1.269 7.1.270 7.1.271 7.1.272 7.1.273 
	7.1.274 7.1.275 7.1.276 7.1.277 7.1.278 7.1.279 7.1.280 
	7.1.281 7.1.282 7.1.283 7.1.284 7.1.285 7.1.286 7.1.287 
	7.1.288 7.1.289 7.1.290 7.1.291 7.1.292 7.1.293 
	vim-6.4-cvim.patch vim-6.4-lib64.patch 
	vim-7.0-fstabsyntax.patch vim-7.0-vimspelltypo.patch 
	vim-7.1-ada.patch vim-7.1-erlang.patch vim-selinux.patch 
	vim-selinux2.patch 
Log Message:
update to vim-7.2 patchlevel 60


--- NEW FILE 7.2.001 ---
To: vim-dev at vim.org
Subject: Patch 7.2.001
Fcc: outbox
From: Bram Moolenaar <Bram at 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 at 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    ///


--- NEW FILE 7.2.002 ---
To: vim-dev at vim.org
Subject: Patch 7.2.002
Fcc: outbox
From: Bram Moolenaar <Bram at 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 at 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    ///


--- NEW FILE 7.2.003 ---
To: vim-dev at vim.org
Subject: Patch 7.2.003
Fcc: outbox
From: Bram Moolenaar <Bram at 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 at 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    ///


--- NEW FILE 7.2.004 ---
To: vim-dev at vim.org
Subject: Patch 7.2.004
Fcc: outbox
From: Bram Moolenaar <Bram at 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 at 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    ///


--- NEW FILE 7.2.005 ---
To: vim-dev at vim.org
Subject: Patch 7.2.005
Fcc: outbox
From: Bram Moolenaar <Bram at 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 at 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    ///


--- NEW FILE 7.2.006 ---
To: vim-dev at vim.org
Subject: Patch 7.2.006
Fcc: outbox
From: Bram Moolenaar <Bram at 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 at 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    ///


--- NEW FILE 7.2.007 ---
To: vim-dev at vim.org
Subject: Patch 7.2.007 (extra)
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.007 (extra)
Problem:    Minor issues for VMS.
Solution:   Minor fixes for VMS.  Add float support. (Zoltan Arpadffy)
Files:	    runtime/doc/os_vms.txt, src/os_vms_conf.h, src/Make_vms.mms,
	    src/testdir/Make_vms.mms, src/testdir/test30.in,
	    src/testdir/test54.in


*** ../vim-7.2.006/runtime/doc/os_vms.txt	Sat Aug  9 19:36:50 2008
--- runtime/doc/os_vms.txt	Tue Aug 19 06:29:31 2008
***************
*** 1,4 ****
! *os_vms.txt*    For Vim version 7.2.  Last change: 2006 Nov 18
  
  
  		  VIM REFERENCE MANUAL
--- 1,4 ----
! *os_vms.txt*    For Vim version 7.2.  Last change: 2008 Aug 19
  
  
  		  VIM REFERENCE MANUAL
***************
*** 312,318 ****
  
  8. Useful notes						*vms-notes*
  
! 8.1 backspace/delete
  8.2 Filters
  8.3 VMS file version numbers
  8.4 Directory conversion
--- 312,318 ----
  
  8. Useful notes						*vms-notes*
  
! 8.1 Backspace/delete
  8.2 Filters
  8.3 VMS file version numbers
  8.4 Directory conversion
***************
*** 326,333 ****
  8.12 diff-mode
  8.13 Allow '$' in C keywords
  8.14 VIMTUTOR for beginners
  
! 8.1 backspace/delete
  
  There are backspace/delete key inconsistencies with VMS.
  :fixdel doesn't do the trick, but the solution is: >
--- 326,335 ----
  8.12 diff-mode
  8.13 Allow '$' in C keywords
  8.14 VIMTUTOR for beginners
+ 8.15 Slow start in console mode issue 
+ 8.16 Common VIM directory - different architectures 
  
! 8.1 Backspace/delete
  
  There are backspace/delete key inconsistencies with VMS.
  :fixdel doesn't do the trick, but the solution is: >
***************
*** 663,674 ****
  
  (Thomas.R.Wyant III, Vim 6.1)
  
  ==============================================================================
  
  9. VMS related changes					*vms-changes*
  
! Version 7
  - Improved low level char input (affects just console mode)
  
  Version 6.4 (2005 Oct 15)
  - GTKLIB and Vim build on IA64
--- 665,794 ----
  
  (Thomas.R.Wyant III, Vim 6.1)
  
+ 8.14 Slow start in console mode issue
+ 
+ As GUI/GTK Vim works equally well in console mode, many administartors
+ deploy those executables system wide.
+ Unfortunately, on a remote slow connections GUI/GTK executables behave rather
+ slow when user wants to run Vim just in the console mode - because of X environment detection timeout.
+ 
+ Luckily, there is a simple solution for that. Administrators need to deploy
+ both GUI/GTK build and just console build executables, like below: >
+ 
+     |- vim72
+     |----- doc
+     |----- syntax        
+        vimrc    (system rc files)
+        gvimrc
+        gvim.exe (the remaned GUI or GTK built vim.exe)      
+        vim.exe  (the console only executable) 
+ 
+ Define system symbols like below in for ex in LOGIN.COM or SYLOGIN.COM: >
+ 
+ 	$ define/nolog VIM RF10:[UTIL.VIM72] ! where you VIM directory is
+ 	$ vi*m  :== mcr VIM:VIM.EXE
+ 	$ gvi*m :== mcr VIM:GVIM.EXE
+ 	$ ! or you can try to spawn with
+ 	$ gv*im :== spawn/nowait/input=NLA0 mcr VIM:GVIM.EXE -g -GEOMETRY 80x40
+ 
+ 
+ Like this, users that do not have X environment and want to use Vim just in 
+ console mode can avoid performance problems.
+ 
+ (Zoltan Arpadffy, Vim 7.2)
+ 
+ 8.15 Common VIM directory - different architectures
+ 
+ In a cluster that contains nodes with different architectures like below:
+ 
+ $show cluster
+ View of Cluster from system ID 11655  node: TOR                                                                     18-AUG-2008 11:58:31
+ +---------------------------------+
+ ¦        SYSTEMS        ¦ MEMBERS ¦
+ +-----------------------+---------¦
+ ¦  NODE  ¦   SOFTWARE   ¦  STATUS ¦
+ +--------+--------------+---------¦
+ ¦ TOR    ¦ VMS V7.3-2   ¦ MEMBER  ¦
+ ¦ TITAN2 ¦ VMS V8.3     ¦ MEMBER  ¦
+ ¦ ODIN   ¦ VMS V7.3-2   ¦ MEMBER  ¦
+ +---------------------------------+
+ 
+ It is convinient to have a common VIM directory but execute different
+ executables. 
+ There are more solutions for this problem:
+ 
+ solution 1. all executables in the same directory with different names
+ This is easily done with the following script that can be added
+ to the login.com or sylogin.com: >
+ 
+ 	$ if f$getsyi("NODE_HWTYPE") .eqs. "VAX"
+ 	$ then
+ 	$       say "VAX platform"
+ 	$       vi*m:== mcr vim:VIM.EXE_VAX
+ 	$ endif
+ 	$ if f$getsyi("NODE_HWTYPE") .eqs. "ALPH"
+ 	$ then
+ 	$       say "ALPHA platform"
+ 	$       vi*m :== mcr vim:VIM.EXE_AXP
+ 	$ endif
+ 	$ if f$getsyi("ARCH_NAME") .eqs. "IA64"
+ 	$ then
+ 	$      say "IA64 platform"
+ 	$      vi*m :== mcr vim:VIM.EXE_IA64
+ 	$ endif
+ 
+ solution 2. different directories: >
+ 
+ 	$ if f$getsyi("NODE_HWTYPE") .eqs. "VAX"
+ 	$ then
+ 	$       say "VAX platform"
+ 	$       define/nolog VIM RF10:[UTIL.VAX_EXE] ! VAX executables
+ 	$ endif
+ 	$ if f$getsyi("NODE_HWTYPE") .eqs. "ALPH"
+ 	$ then
+ 	$       say "ALPHA platform"
+ 	$       define/nolog VIM RF10:[UTIL.AXP_EXE] ! AXP executables
+ 	$ endif
+ 	$ if f$getsyi("ARCH_NAME") .eqs. "IA64"
+ 	$ then
+ 	$      say "IA64 platform"
+ 	$      define/nolog VIM RF10:[UTIL.IA64_EXE] ! IA64 executables
+ 	$ endif
+         $! VIMRUNTIME must be defined in order to find runtime files
+ 	$ define/nolog VIMRUNTIME RF10:[UTIL.VIM72]
+ 
+ A good examle for this approach is the [GNU]gnu_tools.com script from GNU_TOOLS.ZIP
+ package downloadable from http://www.polarhome.com/vim/
+ 
+ (Zoltan Arpadffy, Vim 7.2)
+ 
  ==============================================================================
  
  9. VMS related changes					*vms-changes*
  
! Recent changes
! - The following plugins are included into VMS runtime: 
!   genutils 2.4, multiselect 2.2, multvals 3.1, selectbuf 4.3,
!   bufexplorer 7.1.7, taglist 4.5
! - minor changes in vimrc (just in VMS runtime) 
! - make_vms.mms - HUGE model is the default
! - [TESTDIR]make_vms.mms include as many tests possible
! - modify test30 and test54 for VMS
! - enable FLOAT feature in VMS port
! - os_vms.txt updated  
! 
! Version 7.2 (2008 Aug 9)
! - VCF files write corrected
! - CTAGS 5.7 included
! - corrected make_vms.mms (on VAX gave syntax error) 
! 
! Version 7.1 (2007 Jun 15)
! - create TAGS file from menu 
! 
! Version 7 (2006 May 8)
  - Improved low level char input (affects just console mode)
+ - Fixed plugin bug
+ - CTAGS 5.6 included
  
  Version 6.4 (2005 Oct 15)
  - GTKLIB and Vim build on IA64
***************
*** 806,811 ****
--- 926,932 ----
  
  OpenVMS documentation and executables are maintained by:
  Zoltan Arpadffy <arpadffy at polarhome.com>
+ OpenVMS Vim page: http://www.polarhome.com/vim/
  
  This document uses parts and remarks from earlier authors and contributors
  of OS_VMS.TXT:
*** ../vim-7.2.006/src/os_vms_conf.h	Thu May 10 19:26:17 2007
--- src/os_vms_conf.h	Sat Aug 16 05:09:17 2008
***************
*** 114,119 ****
--- 114,121 ----
  #define HAVE_PUTENV
  #define HAVE_SETENV
  #define HAVE_SETJMP_H
+ #define HAVE_MATH_H
+ #define HAVE_FLOAT_FUNCS
  
  #undef	HAVE_DIRENT_H
  #undef	HAVE_SYS_NDIR_H
*** ../vim-7.2.006/src/Make_vms.mms	Mon Oct 29 22:38:54 2007
--- src/Make_vms.mms	Sat Aug 16 05:17:41 2008
***************
*** 2,8 ****
  # Makefile for Vim on OpenVMS
  #
  # Maintainer:   Zoltan Arpadffy <arpadffy at polarhome.com>
! # Last change:  2007 Oct 22
  #
  # This has script been tested on VMS 6.2 to 8.2 on DEC Alpha, VAX and IA64
  # with MMS and MMK
--- 2,8 ----
  # Makefile for Vim on OpenVMS
  #
  # Maintainer:   Zoltan Arpadffy <arpadffy at polarhome.com>
! # Last change:  2008 Aug 16
  #
  # This has script been tested on VMS 6.2 to 8.2 on DEC Alpha, VAX and IA64
  # with MMS and MMK
***************
*** 36,42 ****
  # BIG    - Many features enabled, as rich as possible. (default)
  # HUGE   - All possible featues enabled.
  # Please select one of these alternatives above.
! MODEL = BIG
  
  # GUI or terminal mode executable.
  # Comment out if you want just the character terminal mode only.
--- 36,42 ----
  # BIG    - Many features enabled, as rich as possible. (default)
  # HUGE   - All possible featues enabled.
  # Please select one of these alternatives above.
! MODEL = HUGE
  
  # GUI or terminal mode executable.
  # Comment out if you want just the character terminal mode only.
*** ../vim-7.2.006/src/testdir/Make_vms.mms	Wed Jun 25 00:34:23 2008
--- src/testdir/Make_vms.mms	Tue Aug 19 06:28:07 2008
***************
*** 4,12 ****
  # Authors:	Zoltan Arpadffy, <arpadffy at polarhome.com>
  #		Sandor Kopanyi,  <sandor.kopanyi at mailbox.hu>
  #
! # Last change:  2008 Jun 19
  #
! # This has been tested on VMS 6.2 to 7.2 on DEC Alpha and VAX.
  # Edit the lines in the Configuration section below to select.
  #
  # Execute with:
--- 4,12 ----
  # Authors:	Zoltan Arpadffy, <arpadffy at polarhome.com>
  #		Sandor Kopanyi,  <sandor.kopanyi at mailbox.hu>
  #
! # Last change:  2008 Aug 19
  #
! # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64.
  # Edit the lines in the Configuration section below to select.
  #
  # Execute with:
***************
*** 32,37 ****
--- 32,46 ----
  # and directory handling.
  # WANT_UNIX = YES
  
+ # Comment out if you want to run Win32 specific tests as well, but please
+ # be aware, that on OpenVMS will fail, because of cat, rm, etc commands
+ # and directory handling.
+ # WANT_WIN = YES
+ 
+ # Comment out if you want to run spell checker tests. 
+ # They fail because VMS does not support file names.
+ # WANT_SPELL = YES
+ 
  # Comment out if you have gzip on your system
  # HAVE_GZIP = YES
  
***************
*** 53,64 ****
  	 test13.out test14.out test15.out test17.out \
  	 test18.out test19.out test20.out test21.out test22.out \
  	 test23.out test24.out test26.out \
! 	 test28.out test29.out test31.out test32.out \
  	 test33.out test34.out test35.out test36.out test37.out \
  	 test38.out test39.out test40.out test41.out test42.out \
  	 test43.out test44.out test45.out test46.out \
  	 test48.out test51.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
  
  .IFDEF WANT_GUI
--- 62,73 ----
  	 test13.out test14.out test15.out test17.out \
  	 test18.out test19.out test20.out test21.out test22.out \
  	 test23.out test24.out test26.out \
! 	 test28.out test29.out test30.out test31.out test32.out \
  	 test33.out test34.out test35.out test36.out test37.out \
  	 test38.out test39.out test40.out test41.out test42.out \
  	 test43.out test44.out test45.out test46.out \
  	 test48.out test51.out test53.out test54.out test55.out \
! 	 test56.out test57.out test60.out \
  	 test61.out test62.out test63.out test64.out test65.out
  
  .IFDEF WANT_GUI
***************
*** 67,73 ****
  .ENDIF
  
  .IFDEF WANT_UNIX
! SCRIPT_UNIX = test10.out test12.out test25.out test27.out test30.out test49.out
  .ENDIF
  
  .IFDEF HAVE_GZIP
--- 76,90 ----
  .ENDIF
  
  .IFDEF WANT_UNIX
! SCRIPT_UNIX = test10.out test12.out test25.out test27.out test49.out
! .ENDIF
! 
! .IFDEF WANT_WIN
! SCRIPT_WIN = test50.out test52.out
! .ENDIF
! 
! .IFDEF WANT_SPELL
! SCRIPT_SPELL = test58.out test59.out 
  .ENDIF
  
  .IFDEF HAVE_GZIP
***************
*** 84,94 ****
  	-@ write sys$output "                "$*" "
  	-@ write sys$output "-----------------------------------------------"
  	-@ create/term/wait mcr $(VIMPROG) $(GUI_OPTION) -u vms.vim --noplugin -s dotest.in $*.in
! 	-@ if "''F$SEARCH("test.out.*")'" .NES. "" then differences test.out $*.ok;
  	-@ if "''F$SEARCH("test.out.*")'" .NES. "" then rename test.out $*.out
  	-@ if "''F$SEARCH("Xdotest.*")'"  .NES. "" then delete/noconfirm/nolog Xdotest.*.*
  
! all : clean nolog $(SCRIPT) $(SCRIPT_GUI) $(SCRIPT_UNIX) $(SCRIPT_GZIP) $(SCRIPT_GDIFF)
  	-@ write sys$output " "
  	-@ write sys$output "-----------------------------------------------"
  	-@ write sys$output "                All done"
--- 101,111 ----
  	-@ write sys$output "                "$*" "
  	-@ write sys$output "-----------------------------------------------"
  	-@ create/term/wait mcr $(VIMPROG) $(GUI_OPTION) -u vms.vim --noplugin -s dotest.in $*.in
! 	-@ if "''F$SEARCH("test.out.*")'" .NES. "" then differences /par test.out $*.ok;
  	-@ if "''F$SEARCH("test.out.*")'" .NES. "" then rename test.out $*.out
  	-@ if "''F$SEARCH("Xdotest.*")'"  .NES. "" then delete/noconfirm/nolog Xdotest.*.*
  
! all : clean nolog $(SCRIPT) $(SCRIPT_GUI) $(SCRIPT_UNIX) $(SCRIPT_WIN) $(SCRIPT_SPELL) $(SCRIPT_GZIP) $(SCRIPT_GDIFF) 
  	-@ write sys$output " "
  	-@ write sys$output "-----------------------------------------------"
  	-@ write sys$output "                All done"
***************
*** 113,118 ****
--- 130,137 ----
  	-@ write sys$output "MAKE_VMS.MMS options:"
  	-@ write sys$output "   WANT_GUI  = ""$(WANT_GUI)"" "
  	-@ write sys$output "   WANT_UNIX = ""$(WANT_UNIX)"" "
+ 	-@ write sys$output "   WANT_WIN  = ""$(WANT_WIN)"" "
+ 	-@ write sys$output "   WANT_SPELL= ""$(WANT_SPELL)"" "
  	-@ write sys$output "   HAVE_GZIP = ""$(HAVE_GZIP)"" "
  	-@ write sys$output "   HAVE_GDIFF= ""$(HAVE_GDIFF)"" "
  	-@ write sys$output "Default vimrc file is VMS.VIM:
***************
*** 122,126 ****
--- 141,153 ----
  clean :
  	-@ if "''F$SEARCH("*.out")'"     .NES. "" then delete/noconfirm/nolog *.out.*
  	-@ if "''F$SEARCH("test.log")'"  .NES. "" then delete/noconfirm/nolog test.log.*
+ 	-@ if "''F$SEARCH("test.ok")'"   .NES. "" then delete/noconfirm/nolog test.ok.*
  	-@ if "''F$SEARCH("Xdotest.*")'" .NES. "" then delete/noconfirm/nolog Xdotest.*.*
  	-@ if "''F$SEARCH("*.*_sw*")'"   .NES. "" then delete/noconfirm/nolog *.*_sw*.*
+ 	-@ if "''F$SEARCH("*.failed")'"  .NES. "" then delete/noconfirm/nolog *.failed.*
+ 	-@ if "''F$SEARCH("*.rej")'"     .NES. "" then delete/noconfirm/nolog *.rej.*
+ 	-@ if "''F$SEARCH("tiny.vim")'"  .NES. "" then delete/noconfirm/nolog tiny.vim.*
+ 	-@ if "''F$SEARCH("small.vim")'" .NES. "" then delete/noconfirm/nolog small.vim.*
+ 	-@ if "''F$SEARCH("mbyte.vim")'" .NES. "" then delete/noconfirm/nolog mbyte.vim.*
+ 	-@ if "''F$SEARCH("viminfo.*")'" .NES. "" then delete/noconfirm/nolog viminfo.*.*
+ 
*** ../vim-7.2.006/src/testdir/test30.in	Sun Jul 13 19:17:14 2008
--- src/testdir/test30.in	Sat Aug 16 04:59:37 2008
***************
*** 24,33 ****
  :set nobin eol
  :bwipe XXUnix XXDos XXMac
  :" create mixed format files
! :!cat XXUnix XXDos >XXUxDs
! :!cat XXUnix XXMac >XXUxMac
! :!cat XXDos XXMac >XXDosMac
! :!cat XXUnix XXDos XXMac >XXUxDsMc
  :"
  :" try reading and writing with 'fileformats' empty
  :set fileformat=unix
--- 24,40 ----
  :set nobin eol
  :bwipe XXUnix XXDos XXMac
  :" create mixed format files
! :if has("vms")
! : !copy XXUnix,XXDos XXUxDs.
! : !copy XXUnix,XXMac XXUxMac.
! : !copy XXDos,XXMac  XXDosMac.
! : !copy XXUnix,XXDos,XXMac XXUxDsMc.
! :else
! : !cat XXUnix XXDos >XXUxDs
! : !cat XXUnix XXMac >XXUxMac
! : !cat XXDos XXMac >XXDosMac
! : !cat XXUnix XXDos XXMac >XXUxDsMc
! :endif
  :"
  :" try reading and writing with 'fileformats' empty
  :set fileformat=unix
*** ../vim-7.2.006/src/testdir/test54.in	Sun Jan  2 12:43:19 2005
--- src/testdir/test54.in	Tue Aug 19 06:26:55 2008
***************
*** 3,10 ****
  STARTTEST
  :so small.vim
  :e xx
! :!rm -f test.out
! :au BufLeave <buffer> :!echo buffer-local autommand in %>> test.out
  :e somefile           " here, autocommand for xx shall write test.out 
  :                     " but autocommand shall not apply to buffer named <buffer>
  :bwipe xx             " here, autocommand shall be auto-deleted
--- 3,15 ----
  STARTTEST
  :so small.vim
  :e xx
! :if has("vms")
! : !del test.out.*
! : au BufLeave <buffer> :!write sys$output "buffer-local autommand in %" > test.out
! :else
! : !rm -f test.out
! : au BufLeave <buffer> :!echo buffer-local autommand in %>> test.out
! :endif
  :e somefile           " here, autocommand for xx shall write test.out 
  :                     " but autocommand shall not apply to buffer named <buffer>
  :bwipe xx             " here, autocommand shall be auto-deleted
*** ../vim-7.2.006/src/version.c	Mon Aug 25 05:03:29 2008
--- src/version.c	Mon Sep  1 16:46:50 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     7,
  /**/

-- 
How To Keep A Healthy Level Of Insanity:
8. Don't use any punctuation marks.

 /// Bram Moolenaar -- Bram at 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    ///


--- NEW FILE 7.2.008 ---
To: vim-dev at vim.org
Subject: Patch 7.2.008
Fcc: outbox
From: Bram Moolenaar <Bram at 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 at 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    ///


--- NEW FILE 7.2.009 ---
To: vim-dev at vim.org
Subject: Patch 7.2.009
Fcc: outbox
From: Bram Moolenaar <Bram at 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 at 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    ///


--- NEW FILE 7.2.010 ---
To: vim-dev at vim.org
Subject: Patch 7.2.010
Fcc: outbox
From: Bram Moolenaar <Bram at 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 at 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    ///


--- NEW FILE 7.2.011 ---
To: vim-dev at vim.org
Subject: Patch 7.2.011
Fcc: outbox
From: Bram Moolenaar <Bram at 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 at 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    ///


--- NEW FILE 7.2.012 ---
To: vim-dev at vim.org
Subject: Patch 7.2.012
Fcc: outbox
From: Bram Moolenaar <Bram at 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 at 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    ///


--- NEW FILE 7.2.013 ---
To: vim-dev at vim.org
Subject: Patch 7.2.013
Fcc: outbox
From: Bram Moolenaar <Bram at 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 at 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    ///


--- NEW FILE 7.2.014 ---
To: vim-dev at vim.org
Subject: Patch 7.2.014
Fcc: outbox
From: Bram Moolenaar <Bram at 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 at 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    ///


--- NEW FILE 7.2.015 ---
To: vim-dev at vim.org
Subject: Patch 7.2.015
Fcc: outbox
From: Bram Moolenaar <Bram at 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 at 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    ///


--- NEW FILE 7.2.016 ---
To: vim-dev at vim.org
Subject: Patch 7.2.016
Fcc: outbox
From: Bram Moolenaar <Bram at 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 at 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    ///


--- NEW FILE 7.2.017 ---
To: vim-dev at vim.org
Subject: Patch 7.2.017
Fcc: outbox
From: Bram Moolenaar <Bram at 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 at 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    ///


--- NEW FILE 7.2.018 ---
To: vim-dev at vim.org
Subject: Patch 7.2.018
Fcc: outbox
From: Bram Moolenaar <Bram at 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 at 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    ///


--- NEW FILE 7.2.019 ---
To: vim-dev at vim.org
Subject: Patch 7.2.019
Fcc: outbox
From: Bram Moolenaar <Bram at 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 at 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    ///


--- NEW FILE 7.2.020 ---
To: vim-dev at vim.org
Subject: Patch 7.2.020
Fcc: outbox
From: Bram Moolenaar <Bram at 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 at 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    ///


--- NEW FILE 7.2.021 ---
To: vim-dev at vim.org
Subject: Patch 7.2.021
Fcc: outbox
From: Bram Moolenaar <Bram at 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 at 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    ///


--- NEW FILE 7.2.022 ---
To: vim-dev at vim.org
Subject: Patch 7.2.022 (extra)
Fcc: outbox
From: Bram Moolenaar <Bram at 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 at 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    ///


--- NEW FILE 7.2.023 ---
To: vim-dev at vim.org
Subject: Patch 7.2.023
Fcc: outbox
From: Bram Moolenaar <Bram at 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 at 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    ///


--- NEW FILE 7.2.024 ---
To: vim-dev at vim.org
Subject: Patch 7.2.024
Fcc: outbox
From: Bram Moolenaar <Bram at 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 at 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    ///


--- NEW FILE 7.2.025 ---
To: vim-dev at vim.org
Subject: Patch 7.2.025
Fcc: outbox
From: Bram Moolenaar <Bram at 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 at 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    ///


--- NEW FILE 7.2.026 ---
To: vim-dev at vim.org
Subject: Patch 7.2.026
Fcc: outbox
From: Bram Moolenaar <Bram at 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 at 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    ///


--- NEW FILE 7.2.027 ---
To: vim-dev at vim.org
Subject: Patch 7.2.027
Fcc: outbox
From: Bram Moolenaar <Bram at 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 at 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    ///


--- NEW FILE 7.2.028 ---
To: vim-dev at vim.org
Subject: Patch 7.2.028
Fcc: outbox
From: Bram Moolenaar <Bram at 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 at 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    ///


--- NEW FILE 7.2.029 ---
To: vim-dev at vim.org
Subject: Patch 7.2.029
Fcc: outbox
From: Bram Moolenaar <Bram at 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 at 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    ///


--- NEW FILE 7.2.030 ---
To: vim-dev at vim.org
Subject: Patch 7.2.030
Fcc: outbox
From: Bram Moolenaar <Bram at 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 at 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    ///


--- NEW FILE 7.2.031 ---
To: vim-dev at vim.org
Subject: Patch 7.2.031
Fcc: outbox
From: Bram Moolenaar <Bram at 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 at 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    ///


--- NEW FILE 7.2.032 ---
To: vim-dev at vim.org
Subject: Patch 7.2.032
Fcc: outbox
From: Bram Moolenaar <Bram at 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 at 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    ///


--- NEW FILE 7.2.033 ---
To: vim-dev at vim.org
Subject: Patch 7.2.033
Fcc: outbox
From: Bram Moolenaar <Bram at 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 at 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    ///


--- NEW FILE 7.2.034 ---
To: vim-dev at vim.org
Subject: Patch 7.2.034
Fcc: outbox
From: Bram Moolenaar <Bram at 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 at 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    ///


--- NEW FILE 7.2.035 ---
To: vim-dev at vim.org
Subject: Patch 7.2.035
Fcc: outbox
From: Bram Moolenaar <Bram at 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 at 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    ///


--- NEW FILE 7.2.036 ---
To: vim-dev at vim.org
Subject: Patch 7.2.036 (extra)
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.036 (extra)
Problem:    Mismatches between alloc/malloc, free/vim_free,
	    realloc/vim_realloc.
Solution:   Use the right function. (Dominique Pelle)
Files:	    src/gui_riscos.c, src/gui_w48.c, src/mbyte.c, src/os_vms.c,
	    src/os_w32exe.c, src/os_win16.c


*** ../vim-7.2.035/src/gui_riscos.c	Thu May 10 19:33:26 2007
--- src/gui_riscos.c	Wed Nov 12 11:47:54 2008
***************
*** 695,701 ****
  gui_mch_set_shellsize(width, height, min_width, min_height, base_width, base_height, direction)
      int width;		/* In OS units */
      int height;
!     int min_width;	/* Smallest permissable window size (ignored) */
      int min_height;
      int base_width;	/* Space for scroll bars, etc */
      int base_height;
--- 695,701 ----
  gui_mch_set_shellsize(width, height, min_width, min_height, base_width, base_height, direction)
      int width;		/* In OS units */
      int height;
!     int min_width;	/* Smallest permissible window size (ignored) */
      int min_height;
      int base_width;	/* Space for scroll bars, etc */
      int base_height;
***************
*** 863,869 ****
      if (strncmp(file, "ZapFont\015", 8) == 0)
  	return file;	/* Loaded OK! */
  
!     free(file);
      return NULL;	/* Not a valid font file */
  }
  
--- 863,869 ----
      if (strncmp(file, "ZapFont\015", 8) == 0)
  	return file;	/* Loaded OK! */
  
!     vim_free(file);
      return NULL;	/* Not a valid font file */
  }
  
*** ../vim-7.2.035/src/gui_w48.c	Thu Jul 24 20:50:23 2008
--- src/gui_w48.c	Wed Nov 12 11:37:41 2008
***************
*** 3335,3341 ****
  
  /*
   * Convert the string s to the proper format for a filter string by replacing
!  * the \t and \n delimeters with \0.
   * Returns the converted string in allocated memory.
   *
   * Keep in sync with convert_filterW() above!
--- 3335,3341 ----
  
  /*
   * Convert the string s to the proper format for a filter string by replacing
!  * the \t and \n delimiters with \0.
   * Returns the converted string in allocated memory.
   *
   * Keep in sync with convert_filterW() above!
***************
*** 3674,3680 ****
   * Use "prog" as the name of the program and "cmdline" as the arguments.
   * Copy the arguments to allocated memory.
   * Return the number of arguments (including program name).
!  * Return pointers to the arguments in "argvp".
   * Return pointer to buffer in "tofree".
   * Returns zero when out of memory.
   */
--- 3674,3681 ----
   * Use "prog" as the name of the program and "cmdline" as the arguments.
   * Copy the arguments to allocated memory.
   * Return the number of arguments (including program name).
!  * Return pointers to the arguments in "argvp".  Memory is allocated with
!  * malloc(), use free() instead of vim_free().
   * Return pointer to buffer in "tofree".
   * Returns zero when out of memory.
   */
***************
*** 3692,3697 ****
--- 3693,3700 ----
      char	**argv = NULL;
      int		round;
  
+     *tofree = NULL;
+ 
  #ifdef FEAT_MBYTE
      /* Try using the Unicode version first, it takes care of conversion when
       * 'encoding' is changed. */
***************
*** 3802,3816 ****
  	    argv = (char **)malloc((argc + 1) * sizeof(char *));
  	    if (argv == NULL )
  	    {
! 		vim_free(newcmdline);
  		return 0;		   /* malloc error */
  	    }
  	    pnew = newcmdline;
  	}
      }
  
  done:
- 
      argv[argc] = NULL;		/* NULL-terminated list */
      *argvp = argv;
      return argc;
--- 3805,3819 ----
  	    argv = (char **)malloc((argc + 1) * sizeof(char *));
  	    if (argv == NULL )
  	    {
! 		free(newcmdline);
  		return 0;		   /* malloc error */
  	    }
  	    pnew = newcmdline;
+ 	    *tofree = newcmdline;
  	}
      }
  
  done:
      argv[argc] = NULL;		/* NULL-terminated list */
      *argvp = argv;
      return argc;
*** ../vim-7.2.035/src/os_vms.c	Wed Aug  6 18:38:52 2008
--- src/os_vms.c	Wed Nov 12 11:42:12 2008
***************
*** 228,234 ****
      else if ((sbuf = getenv((char *)lognam)))
      {
  	lengte = strlen(sbuf) + 1;
! 	cp = (char_u *)malloc((size_t)lengte);
  	if (cp)
  	    strcpy((char *)cp, sbuf);
  	return cp;
--- 228,234 ----
      else if ((sbuf = getenv((char *)lognam)))
      {
  	lengte = strlen(sbuf) + 1;
! 	cp = (char_u *)alloc((size_t)lengte);
  	if (cp)
  	    strcpy((char *)cp, sbuf);
  	return cp;
***************
*** 381,387 ****
      if (--vms_match_free == 0) {
  	/* add more space to store matches */
  	vms_match_alloced += EXPL_ALLOC_INC;
! 	vms_fmatch = (char_u **)realloc(vms_fmatch,
  		sizeof(char **) * vms_match_alloced);
  	if (!vms_fmatch)
  	    return 0;
--- 381,387 ----
      if (--vms_match_free == 0) {
  	/* add more space to store matches */
  	vms_match_alloced += EXPL_ALLOC_INC;
! 	vms_fmatch = (char_u **)vim_realloc(vms_fmatch,
  		sizeof(char **) * vms_match_alloced);
  	if (!vms_fmatch)
  	    return 0;
***************
*** 460,466 ****
  	    if (--files_free < 1)
  	    {
  		files_alloced += EXPL_ALLOC_INC;
! 		*file = (char_u **)realloc(*file,
  		    sizeof(char_u **) * files_alloced);
  		if (*file == NULL)
  		{
--- 460,466 ----
  	    if (--files_free < 1)
  	    {
  		files_alloced += EXPL_ALLOC_INC;
! 		*file = (char_u **)vim_realloc(*file,
  		    sizeof(char_u **) * files_alloced);
  		if (*file == NULL)
  		{
***************
*** 614,627 ****
      {
  	buflen = len + 128;
  	if (buf)
! 	    buf = (char *)realloc(buf, buflen);
  	else
! 	    buf = (char *)calloc(buflen, sizeof(char));
      }
  
  #ifdef DEBUG
       char		 *tmpbuf = NULL;
!      tmpbuf = (char *)calloc(buflen, sizeof(char));
       strcpy(tmpbuf, instring);
  #endif
  
--- 614,627 ----
      {
  	buflen = len + 128;
  	if (buf)
! 	    buf = (char *)vim_realloc(buf, buflen);
  	else
! 	    buf = (char *)alloc(buflen * sizeof(char));
      }
  
  #ifdef DEBUG
       char		 *tmpbuf = NULL;
!      tmpbuf = (char *)alloc(buflen * sizeof(char));
       strcpy(tmpbuf, instring);
  #endif
  
*** ../vim-7.2.035/src/os_w32exe.c	Fri Jul  1 00:06:20 2005
--- src/os_w32exe.c	Wed Nov 12 11:45:43 2008
***************
*** 129,135 ****
  errout:
  #endif
      free(argv);
!     free(tofree);
  #ifdef FEAT_MBYTE
      free_cmd_argsW();
  #endif
--- 129,136 ----
  errout:
  #endif
      free(argv);
!     if (tofree != NULL)
! 	free(tofree);
  #ifdef FEAT_MBYTE
      free_cmd_argsW();
  #endif
*** ../vim-7.2.035/src/os_win16.c	Wed Jun 25 00:49:34 2008
--- src/os_win16.c	Wed Nov 12 11:45:53 2008
***************
*** 121,127 ****
      pmain(argc, argv);
  
      free(argv);
!     free(tofree);
  
      return 0;
  }
--- 121,128 ----
      pmain(argc, argv);
  
      free(argv);
!     if (tofree != NULL)
! 	free(tofree);
  
      return 0;
  }
*** ../vim-7.2.035/src/version.c	Wed Nov 12 13:07:48 2008
--- src/version.c	Wed Nov 12 13:28:51 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     36,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
239. You think "surfing" is something you do on dry land.

 /// Bram Moolenaar -- Bram at 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    ///


--- NEW FILE 7.2.037 ---
To: vim-dev at vim.org
Subject: Patch 7.2.037
Fcc: outbox
From: Bram Moolenaar <Bram at 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 at 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    ///


--- NEW FILE 7.2.038 ---
To: vim-dev at vim.org
Subject: Patch 7.2.038
Fcc: outbox
From: Bram Moolenaar <Bram at 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 at 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    ///


--- NEW FILE 7.2.039 ---
To: vim-dev at vim.org
Subject: Patch 7.2.039
Fcc: outbox
From: Bram Moolenaar <Bram at 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 at 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    ///


--- NEW FILE 7.2.040 ---
To: vim-dev at vim.org
Subject: Patch 7.2.040
Fcc: outbox
From: Bram Moolenaar <Bram at 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 at 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    ///


--- NEW FILE 7.2.041 ---
To: vim-dev at vim.org
Subject: Patch 7.2.041
Fcc: outbox
From: Bram Moolenaar <Bram at 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/if_sniff.c	Sat Aug  9 19:41:16 2008
--- src/if_sniff.c	Wed Nov 12 17:48:46 2008
***************
*** 1114,1120 ****
      char *fname;
  {
      ++no_wait_return;
!     do_ecmd(0, (char_u *)fname, NULL, NULL, ECMD_ONE, ECMD_HIDE+ECMD_OLDBUF);
      curbuf->b_sniff = TRUE;
      --no_wait_return;					/* [ex_docmd.c] */
  }
--- 1114,1121 ----
      char *fname;
  {
      ++no_wait_return;
!     do_ecmd(0, (char_u *)fname, NULL, NULL, ECMD_ONE, ECMD_HIDE+ECMD_OLDBUF,
! 	    curwin);
      curbuf->b_sniff = TRUE;
      --no_wait_return;					/* [ex_docmd.c] */
  }
*** ../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 at 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    ///


--- NEW FILE 7.2.042 ---
To: vim-dev at vim.org
Subject: Patch 7.2.042
Fcc: outbox
From: Bram Moolenaar <Bram at 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 at 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    ///


--- NEW FILE 7.2.043 ---
To: vim-dev at vim.org
Subject: Patch 7.2.043
Fcc: outbox
From: Bram Moolenaar <Bram at 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 at 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    ///


--- NEW FILE 7.2.044 ---
To: vim-dev at vim.org
Subject: Patch 7.2.044
Fcc: outbox
From: Bram Moolenaar <Bram at 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 at 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    ///


--- NEW FILE 7.2.045 ---
To: vim-dev at vim.org
Subject: Patch 7.2.045
Fcc: outbox
From: Bram Moolenaar <Bram at 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 at 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    ///


--- NEW FILE 7.2.046 ---
To: vim-dev at vim.org
Subject: Patch 7.2.046
Fcc: outbox
From: Bram Moolenaar <Bram at 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 at 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    ///


--- NEW FILE 7.2.047 ---
To: vim-dev at vim.org
Subject: Patch 7.2.047
Fcc: outbox
From: Bram Moolenaar <Bram at 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 at 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    ///


--- NEW FILE 7.2.048 ---
To: vim-dev at vim.org
Subject: Patch 7.2.048
Fcc: outbox
From: Bram Moolenaar <Bram at 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 at 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    ///


--- NEW FILE 7.2.049 ---
To: vim-dev at vim.org
Subject: Patch 7.2.049 (extra)
Fcc: outbox
From: Bram Moolenaar <Bram at moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------

Patch 7.2.049 (extra)
Problem:    Win32: the clipboard doesn't support UTF-16.
Solution:   Change UCS-2 support to UTF-16 support. (Jia Yanwei)
Files:	    src/gui_w32.c, src/gui_w48.c, src/mbyte.c, src/misc1.c,
	    src/os_mswin.c, src/os_win32.c, src/proto/os_mswin.pro


*** ../vim-7.2.048/src/gui_w32.c	Tue Jun 24 23:46:14 2008
--- src/gui_w32.c	Thu Nov 20 16:47:10 2008
***************
*** 992,998 ****
  			    SendMessage(lpdi->hdr.hwndFrom, TTM_SETMAXTIPWIDTH,
  								      0, 500);
  
! 			    tt_text = enc_to_ucs2(str, NULL);
  			    lpdi->lpszText = tt_text;
  			    /* can't show tooltip if failed */
  			}
--- 992,998 ----
  			    SendMessage(lpdi->hdr.hwndFrom, TTM_SETMAXTIPWIDTH,
  								      0, 500);
  
! 			    tt_text = enc_to_utf16(str, NULL);
  			    lpdi->lpszText = tt_text;
  			    /* can't show tooltip if failed */
  			}
***************
*** 1935,1941 ****
      if (buf == NULL)
  	return NULL;
  
!     convbuf = ucs2_to_enc(buf, lenp);
      pImmReleaseContext(hwnd, hIMC);
      vim_free(buf);
      return convbuf;
--- 1935,1941 ----
      if (buf == NULL)
  	return NULL;
  
!     convbuf = utf16_to_enc(buf, lenp);
      pImmReleaseContext(hwnd, hIMC);
      vim_free(buf);
      return convbuf;
***************
*** 2566,2572 ****
  	    {
  		/* 'encoding' differs from active codepage: convert menu name
  		 * and use wide function */
! 		wn = enc_to_ucs2(menu->name, NULL);
  		if (wn != NULL)
  		{
  		    MENUITEMINFOW	infow;
--- 2566,2572 ----
  	    {
  		/* 'encoding' differs from active codepage: convert menu name
  		 * and use wide function */
! 		wn = enc_to_utf16(menu->name, NULL);
  		if (wn != NULL)
  		{
  		    MENUITEMINFOW	infow;
***************
*** 2728,2734 ****
  	{
  	    /* 'encoding' differs from active codepage: convert menu item name
  	     * and use wide function */
! 	    wn = enc_to_ucs2(menu->name, NULL);
  	    if (wn != NULL)
  	    {
  		n = InsertMenuW(parent->submenu_id, (UINT)idx,
--- 2728,2734 ----
  	{
  	    /* 'encoding' differs from active codepage: convert menu item name
  	     * and use wide function */
! 	    wn = enc_to_utf16(menu->name, NULL);
  	    if (wn != NULL)
  	    {
  		n = InsertMenuW(parent->submenu_id, (UINT)idx,
***************
*** 3570,3576 ****
      if (enc_codepage == 0 && (int)GetACP() != enc_codepage)
      {
  	/* Not a codepage, use our own conversion function. */
! 	wn = enc_to_ucs2(lpAnsiIn, NULL);
  	if (wn != NULL)
  	{
  	    wcscpy(lpWCStr, wn);
--- 3570,3576 ----
      if (enc_codepage == 0 && (int)GetACP() != enc_codepage)
      {
  	/* Not a codepage, use our own conversion function. */
! 	wn = enc_to_utf16(lpAnsiIn, NULL);
  	if (wn != NULL)
  	{
  	    wcscpy(lpWCStr, wn);
*** ../vim-7.2.048/src/gui_w48.c	Wed Nov 12 13:35:31 2008
--- src/gui_w48.c	Thu Nov 20 16:42:32 2008
***************
*** 547,553 ****
  	else
  	{
  	    len = 1;
! 	    ws = ucs2_to_enc(wstring, &len);
  	    if (ws == NULL)
  		len = 0;
  	    else
--- 547,553 ----
  	else
  	{
  	    len = 1;
! 	    ws = utf16_to_enc(wstring, &len);
  	    if (ws == NULL)
  		len = 0;
  	    else
***************
*** 2128,2134 ****
      {
  	/* 'encoding' differs from active codepage: convert text and use wide
  	 * function */
! 	wstr = enc_to_ucs2(str, &wlen);
  	if (wstr != NULL)
  	{
  	    n = GetTextExtentPointW(hdc, wstr, wlen, &size);
--- 2128,2134 ----
      {
  	/* 'encoding' differs from active codepage: convert text and use wide
  	 * function */
! 	wstr = enc_to_utf16(str, &wlen);
  	if (wstr != NULL)
  	{
  	    n = GetTextExtentPointW(hdc, wstr, wlen, &size);
***************
*** 2252,2258 ****
      {
  	/* 'encoding' differs from active codepage: convert menu name
  	 * and use wide function */
! 	wn = enc_to_ucs2(item_text, NULL);
  	if (wn != NULL)
  	{
  	    MENUITEMINFOW	infow;
--- 2252,2258 ----
      {
  	/* 'encoding' differs from active codepage: convert menu name
  	 * and use wide function */
! 	wn = enc_to_utf16(item_text, NULL);
  	if (wn != NULL)
  	{
  	    MENUITEMINFOW	infow;
***************
*** 2422,2428 ****
  	if (use_unicode)
  	{
  	    /* Need to go through Unicode. */
! 	    wstr = enc_to_ucs2(NameBuff, NULL);
  	    if (wstr != NULL)
  	    {
  		TCITEMW		tiw;
--- 2422,2428 ----
  	if (use_unicode)
  	{
  	    /* Need to go through Unicode. */
! 	    wstr = enc_to_utf16(NameBuff, NULL);
  	    if (wstr != NULL)
  	    {
  		TCITEMW		tiw;
***************
*** 2521,2528 ****
  	WCHAR	*wbuf;
  	int	n;
  
! 	/* Convert the title from 'encoding' to ucs2. */
! 	wbuf = (WCHAR *)enc_to_ucs2((char_u *)title, NULL);
  	if (wbuf != NULL)
  	{
  	    n = SetWindowTextW(hwnd, wbuf);
--- 2521,2528 ----
  	WCHAR	*wbuf;
  	int	n;
  
! 	/* Convert the title from 'encoding' to UTF-16. */
! 	wbuf = (WCHAR *)enc_to_utf16((char_u *)title, NULL);
  	if (wbuf != NULL)
  	{
  	    n = SetWindowTextW(hwnd, wbuf);
***************
*** 3222,3228 ****
  	char_u *initdir,
  	char_u *filter)
  {
!     /* We always use the wide function.  This means enc_to_ucs2() must work,
       * otherwise it fails miserably! */
      OPENFILENAMEW	fileStruct;
      WCHAR		fileBuf[MAXPATHL];
--- 3222,3228 ----
  	char_u *initdir,
  	char_u *filter)
  {
!     /* We always use the wide function.  This means enc_to_utf16() must work,
       * otherwise it fails miserably! */
      OPENFILENAMEW	fileStruct;
      WCHAR		fileBuf[MAXPATHL];
***************
*** 3238,3244 ****
  	fileBuf[0] = NUL;
      else
      {
! 	wp = enc_to_ucs2(dflt, NULL);
  	if (wp == NULL)
  	    fileBuf[0] = NUL;
  	else
--- 3238,3244 ----
  	fileBuf[0] = NUL;
      else
      {
! 	wp = enc_to_utf16(dflt, NULL);
  	if (wp == NULL)
  	    fileBuf[0] = NUL;
  	else
***************
*** 3263,3273 ****
  #endif
  
      if (title != NULL)
! 	titlep = enc_to_ucs2(title, NULL);
      fileStruct.lpstrTitle = titlep;
  
      if (ext != NULL)
! 	extp = enc_to_ucs2(ext, NULL);
      fileStruct.lpstrDefExt = extp;
  
      fileStruct.lpstrFile = fileBuf;
--- 3263,3273 ----
  #endif
  
      if (title != NULL)
! 	titlep = enc_to_utf16(title, NULL);
      fileStruct.lpstrTitle = titlep;
  
      if (ext != NULL)
! 	extp = enc_to_utf16(ext, NULL);
      fileStruct.lpstrDefExt = extp;
  
      fileStruct.lpstrFile = fileBuf;
***************
*** 3278,3284 ****
      if (initdir != NULL && *initdir != NUL)
      {
  	/* Must have backslashes here, no matter what 'shellslash' says */
! 	initdirp = enc_to_ucs2(initdir, NULL);
  	if (initdirp != NULL)
  	{
  	    for (wp = initdirp; *wp != NUL; ++wp)
--- 3278,3284 ----
      if (initdir != NULL && *initdir != NUL)
      {
  	/* Must have backslashes here, no matter what 'shellslash' says */
! 	initdirp = enc_to_utf16(initdir, NULL);
  	if (initdirp != NULL)
  	{
  	    for (wp = initdirp; *wp != NUL; ++wp)
***************
*** 3318,3324 ****
      vim_free(extp);
  
      /* Convert from UCS2 to 'encoding'. */
!     p = ucs2_to_enc(fileBuf, NULL);
      if (p != NULL)
  	/* when out of memory we get garbage for non-ASCII chars */
  	STRCPY(fileBuf, p);
--- 3318,3324 ----
      vim_free(extp);
  
      /* Convert from UCS2 to 'encoding'. */
!     p = utf16_to_enc(fileBuf, NULL);
      if (p != NULL)
  	/* when out of memory we get garbage for non-ASCII chars */
  	STRCPY(fileBuf, p);
***************
*** 3518,3524 ****
  	{
  #ifdef FEAT_MBYTE
  	    if (DragQueryFileW(hDrop, i, wszFile, BUFPATHLEN) > 0)
! 		fnames[i] = ucs2_to_enc(wszFile, NULL);
  	    else
  #endif
  	    {
--- 3518,3524 ----
  	{
  #ifdef FEAT_MBYTE
  	    if (DragQueryFileW(hDrop, i, wszFile, BUFPATHLEN) > 0)
! 		fnames[i] = utf16_to_enc(wszFile, NULL);
  	    else
  #endif
  	    {
*** ../vim-7.2.048/src/mbyte.c	Thu Nov 20 11:55:53 2008
--- src/mbyte.c	Thu Nov 20 16:47:41 2008
***************
*** 6101,6107 ****
  
  	    /* 1. codepage/UTF-8  ->  ucs-2. */
  	    if (vcp->vc_cpfrom == 0)
! 		tmp_len = utf8_to_ucs2(ptr, len, NULL, NULL);
  	    else
  		tmp_len = MultiByteToWideChar(vcp->vc_cpfrom, 0,
  							      ptr, len, 0, 0);
--- 6101,6107 ----
  
  	    /* 1. codepage/UTF-8  ->  ucs-2. */
  	    if (vcp->vc_cpfrom == 0)
! 		tmp_len = utf8_to_utf16(ptr, len, NULL, NULL);
  	    else
  		tmp_len = MultiByteToWideChar(vcp->vc_cpfrom, 0,
  							      ptr, len, 0, 0);
***************
*** 6109,6121 ****
  	    if (tmp == NULL)
  		break;
  	    if (vcp->vc_cpfrom == 0)
! 		utf8_to_ucs2(ptr, len, tmp, unconvlenp);
  	    else
  		MultiByteToWideChar(vcp->vc_cpfrom, 0, ptr, len, tmp, tmp_len);
  
  	    /* 2. ucs-2  ->  codepage/UTF-8. */
  	    if (vcp->vc_cpto == 0)
! 		retlen = ucs2_to_utf8(tmp, tmp_len, NULL);
  	    else
  		retlen = WideCharToMultiByte(vcp->vc_cpto, 0,
  						    tmp, tmp_len, 0, 0, 0, 0);
--- 6109,6121 ----
  	    if (tmp == NULL)
  		break;
  	    if (vcp->vc_cpfrom == 0)
! 		utf8_to_utf16(ptr, len, tmp, unconvlenp);
  	    else
  		MultiByteToWideChar(vcp->vc_cpfrom, 0, ptr, len, tmp, tmp_len);
  
  	    /* 2. ucs-2  ->  codepage/UTF-8. */
  	    if (vcp->vc_cpto == 0)
! 		retlen = utf16_to_utf8(tmp, tmp_len, NULL);
  	    else
  		retlen = WideCharToMultiByte(vcp->vc_cpto, 0,
  						    tmp, tmp_len, 0, 0, 0, 0);
***************
*** 6123,6129 ****
  	    if (retval != NULL)
  	    {
  		if (vcp->vc_cpto == 0)
! 		    ucs2_to_utf8(tmp, tmp_len, retval);
  		else
  		    WideCharToMultiByte(vcp->vc_cpto, 0,
  					  tmp, tmp_len, retval, retlen, 0, 0);
--- 6123,6129 ----
  	    if (retval != NULL)
  	    {
  		if (vcp->vc_cpto == 0)
! 		    utf16_to_utf8(tmp, tmp_len, retval);
  		else
  		    WideCharToMultiByte(vcp->vc_cpto, 0,
  					  tmp, tmp_len, retval, retlen, 0, 0);
*** ../vim-7.2.048/src/misc1.c	Sun Nov  9 13:43:25 2008
--- src/misc1.c	Thu Nov 20 16:42:59 2008
***************
*** 8728,8734 ****
  	/* The active codepage differs from 'encoding'.  Attempt using the
  	 * wide function.  If it fails because it is not implemented fall back
  	 * to the non-wide version (for Windows 98) */
! 	wn = enc_to_ucs2(buf, NULL);
  	if (wn != NULL)
  	{
  	    hFind = FindFirstFileW(wn, &wfb);
--- 8728,8734 ----
  	/* The active codepage differs from 'encoding'.  Attempt using the
  	 * wide function.  If it fails because it is not implemented fall back
  	 * to the non-wide version (for Windows 98) */
! 	wn = enc_to_utf16(buf, NULL);
  	if (wn != NULL)
  	{
  	    hFind = FindFirstFileW(wn, &wfb);
***************
*** 8756,8762 ****
  #ifdef WIN3264
  # ifdef FEAT_MBYTE
  	if (wn != NULL)
! 	    p = ucs2_to_enc(wfb.cFileName, NULL);   /* p is allocated here */
  	else
  # endif
  	    p = (char_u *)fb.cFileName;
--- 8756,8762 ----
  #ifdef WIN3264
  # ifdef FEAT_MBYTE
  	if (wn != NULL)
! 	    p = utf16_to_enc(wfb.cFileName, NULL);   /* p is allocated here */
  	else
  # endif
  	    p = (char_u *)fb.cFileName;
***************
*** 8830,8836 ****
  	    if (wn != NULL)
  	    {
  		vim_free(wn);
! 		wn = enc_to_ucs2(buf, NULL);
  		if (wn != NULL)
  		    hFind = FindFirstFileW(wn, &wfb);
  	    }
--- 8830,8836 ----
  	    if (wn != NULL)
  	    {
  		vim_free(wn);
! 		wn = enc_to_utf16(buf, NULL);
  		if (wn != NULL)
  		    hFind = FindFirstFileW(wn, &wfb);
  	    }
*** ../vim-7.2.048/src/os_mswin.c	Sat Aug  9 19:37:30 2008
--- src/os_mswin.c	Thu Nov 20 17:05:10 2008
***************
*** 309,315 ****
  	if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
  	{
  	    /* Convert the title from 'encoding' to the active codepage. */
! 	    WCHAR	*wp = enc_to_ucs2(title, NULL);
  	    int	n;
  
  	    if (wp != NULL)
--- 309,315 ----
  	if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
  	{
  	    /* Convert the title from 'encoding' to the active codepage. */
! 	    WCHAR	*wp = enc_to_utf16(title, NULL);
  	    int	n;
  
  	    if (wp != NULL)
***************
*** 406,415 ****
  	     * - invoke _wfullpath()
  	     * - convert the result from UCS2 to 'encoding'.
  	     */
! 	    wname = enc_to_ucs2(fname, NULL);
  	    if (wname != NULL && _wfullpath(wbuf, wname, MAX_PATH - 1) != NULL)
  	    {
! 		cname = ucs2_to_enc((short_u *)wbuf, NULL);
  		if (cname != NULL)
  		{
  		    vim_strncpy(buf, cname, len - 1);
--- 406,415 ----
  	     * - invoke _wfullpath()
  	     * - convert the result from UCS2 to 'encoding'.
  	     */
! 	    wname = enc_to_utf16(fname, NULL);
  	    if (wname != NULL && _wfullpath(wbuf, wname, MAX_PATH - 1) != NULL)
  	    {
! 		cname = utf16_to_enc((short_u *)wbuf, NULL);
  		if (cname != NULL)
  		{
  		    vim_strncpy(buf, cname, len - 1);
***************
*** 507,513 ****
  # endif
         )
      {
! 	WCHAR	*wp = enc_to_ucs2(buf, NULL);
  	int	n;
  
  	if (wp != NULL)
--- 507,513 ----
  # endif
         )
      {
! 	WCHAR	*wp = enc_to_utf16(buf, NULL);
  	int	n;
  
  	if (wp != NULL)
***************
*** 668,674 ****
  #ifdef FEAT_MBYTE
      if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
      {
! 	WCHAR	*p = enc_to_ucs2(path, NULL);
  	int	n;
  
  	if (p != NULL)
--- 668,674 ----
  #ifdef FEAT_MBYTE
      if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
      {
! 	WCHAR	*p = enc_to_utf16(path, NULL);
  	int	n;
  
  	if (p != NULL)
***************
*** 891,909 ****
  
  #if defined(FEAT_MBYTE) || defined(PROTO)
  /*
!  * Convert an UTF-8 string to UCS-2.
   * "instr[inlen]" is the input.  "inlen" is in bytes.
!  * When "outstr" is NULL only return the number of UCS-2 words produced.
   * Otherwise "outstr" must be a buffer of sufficient size.
!  * Returns the number of UCS-2 words produced.
   */
      int
! utf8_to_ucs2(char_u *instr, int inlen, short_u *outstr, int *unconvlenp)
  {
      int		outlen = 0;
      char_u	*p = instr;
      int		todo = inlen;
      int		l;
  
      while (todo > 0)
      {
--- 891,910 ----
  
  #if defined(FEAT_MBYTE) || defined(PROTO)
  /*
!  * Convert an UTF-8 string to UTF-16.
   * "instr[inlen]" is the input.  "inlen" is in bytes.
!  * When "outstr" is NULL only return the number of UTF-16 words produced.
   * Otherwise "outstr" must be a buffer of sufficient size.
!  * Returns the number of UTF-16 words produced.
   */
      int
! utf8_to_utf16(char_u *instr, int inlen, short_u *outstr, int *unconvlenp)
  {
      int		outlen = 0;
      char_u	*p = instr;
      int		todo = inlen;
      int		l;
+     int		ch;
  
      while (todo > 0)
      {
***************
*** 917,924 ****
  	    break;
  	}
  
! 	if (outstr != NULL)
! 	    *outstr++ = utf_ptr2char(p);
  	++outlen;
  	p += l;
  	todo -= l;
--- 918,936 ----
  	    break;
  	}
  
! 	ch = utf_ptr2char(p);
! 	if (ch >= 0x10000)
! 	{
! 	    /* non-BMP character, encoding with surrogate pairs */
! 	    ++outlen;
! 	    if (outstr != NULL)
! 	    {
! 		*outstr++ = (0xD800 - (0x10000 >> 10)) + (ch >> 10);
! 		*outstr++ = 0xDC00 | (ch & 0x3FF);
! 	    }
! 	}
! 	else if (outstr != NULL)
! 	    *outstr++ = ch;
  	++outlen;
  	p += l;
  	todo -= l;
***************
*** 928,956 ****
  }
  
  /*
!  * Convert an UCS-2 string to UTF-8.
!  * The input is "instr[inlen]" with "inlen" in number of ucs-2 words.
   * When "outstr" is NULL only return the required number of bytes.
   * Otherwise "outstr" must be a buffer of sufficient size.
   * Return the number of bytes produced.
   */
      int
! ucs2_to_utf8(short_u *instr, int inlen, char_u *outstr)
  {
      int		outlen = 0;
      int		todo = inlen;
      short_u	*p = instr;
      int		l;
  
      while (todo > 0)
      {
  	if (outstr != NULL)
  	{
! 	    l = utf_char2bytes(*p, outstr);
  	    outstr += l;
  	}
  	else
! 	    l = utf_char2len(*p);
  	++p;
  	outlen += l;
  	--todo;
--- 940,981 ----
  }
  
  /*
!  * Convert an UTF-16 string to UTF-8.
!  * The input is "instr[inlen]" with "inlen" in number of UTF-16 words.
   * When "outstr" is NULL only return the required number of bytes.
   * Otherwise "outstr" must be a buffer of sufficient size.
   * Return the number of bytes produced.
   */
      int
! utf16_to_utf8(short_u *instr, int inlen, char_u *outstr)
  {
      int		outlen = 0;
      int		todo = inlen;
      short_u	*p = instr;
      int		l;
+     int		ch, ch2;
  
      while (todo > 0)
      {
+ 	ch = *p;
+ 	if (ch >= 0xD800 && ch <= 0xDBFF && todo > 1)
+ 	{
+ 	    /* surrogate pairs handling */
+ 	    ch2 = p[1];
+ 	    if (ch2 >= 0xDC00 && ch2 <= 0xDFFF)
+ 	    {
+ 		ch = ((ch - 0xD800) << 10) + (ch2 & 0x3FF) + 0x10000;
+ 		++p;
+ 		--todo;
+ 	    }
+ 	}
  	if (outstr != NULL)
  	{
! 	    l = utf_char2bytes(ch, outstr);
  	    outstr += l;
  	}
  	else
! 	    l = utf_char2len(ch);
  	++p;
  	outlen += l;
  	--todo;
***************
*** 1079,1092 ****
   */
  
  /*
!  * Convert "str" from 'encoding' to UCS-2.
   * Input in "str" with length "*lenp".  When "lenp" is NULL, use strlen().
   * Output is returned as an allocated string.  "*lenp" is set to the length of
   * the result.  A trailing NUL is always added.
   * Returns NULL when out of memory.
   */
      short_u *
! enc_to_ucs2(char_u *str, int *lenp)
  {
      vimconv_T	conv;
      WCHAR	*ret;
--- 1104,1117 ----
   */
  
  /*
!  * Convert "str" from 'encoding' to UTF-16.
   * Input in "str" with length "*lenp".  When "lenp" is NULL, use strlen().
   * Output is returned as an allocated string.  "*lenp" is set to the length of
   * the result.  A trailing NUL is always added.
   * Returns NULL when out of memory.
   */
      short_u *
! enc_to_utf16(char_u *str, int *lenp)
  {
      vimconv_T	conv;
      WCHAR	*ret;
***************
*** 1102,1108 ****
  
      if (enc_codepage > 0)
      {
! 	/* We can do any CP### -> UCS-2 in one pass, and we can do it
  	 * without iconv() (convert_* may need iconv). */
  	MultiByteToWideChar_alloc(enc_codepage, 0, str, *lenp, &ret, &length);
      }
--- 1127,1133 ----
  
      if (enc_codepage > 0)
      {
! 	/* We can do any CP### -> UTF-16 in one pass, and we can do it
  	 * without iconv() (convert_* may need iconv). */
  	MultiByteToWideChar_alloc(enc_codepage, 0, str, *lenp, &ret, &length);
      }
***************
*** 1123,1133 ****
  	}
  	convert_setup(&conv, NULL, NULL);
  
! 	length = utf8_to_ucs2(str, *lenp, NULL, NULL);
  	ret = (WCHAR *)alloc((unsigned)((length + 1) * sizeof(WCHAR)));
  	if (ret != NULL)
  	{
! 	    utf8_to_ucs2(str, *lenp, (short_u *)ret, NULL);
  	    ret[length] = 0;
  	}
  
--- 1148,1158 ----
  	}
  	convert_setup(&conv, NULL, NULL);
  
! 	length = utf8_to_utf16(str, *lenp, NULL, NULL);
  	ret = (WCHAR *)alloc((unsigned)((length + 1) * sizeof(WCHAR)));
  	if (ret != NULL)
  	{
! 	    utf8_to_utf16(str, *lenp, (short_u *)ret, NULL);
  	    ret[length] = 0;
  	}
  
***************
*** 1139,1145 ****
  }
  
  /*
!  * Convert an UCS-2 string to 'encoding'.
   * Input in "str" with length (counted in wide characters) "*lenp".  When
   * "lenp" is NULL, use wcslen().
   * Output is returned as an allocated string.  If "*lenp" is not NULL it is
--- 1164,1170 ----
  }
  
  /*
!  * Convert an UTF-16 string to 'encoding'.
   * Input in "str" with length (counted in wide characters) "*lenp".  When
   * "lenp" is NULL, use wcslen().
   * Output is returned as an allocated string.  If "*lenp" is not NULL it is
***************
*** 1147,1153 ****
   * Returns NULL when out of memory.
   */
      char_u *
! ucs2_to_enc(short_u *str, int *lenp)
  {
      vimconv_T	conv;
      char_u	*utf8_str = NULL, *enc_str = NULL;
--- 1172,1178 ----
   * Returns NULL when out of memory.
   */
      char_u *
! utf16_to_enc(short_u *str, int *lenp)
  {
      vimconv_T	conv;
      char_u	*utf8_str = NULL, *enc_str = NULL;
***************
*** 1161,1167 ****
  
      if (enc_codepage > 0)
      {
! 	/* We can do any UCS-2 -> CP### in one pass. */
  	int length;
  
  	WideCharToMultiByte_alloc(enc_codepage, 0, str, *lenp,
--- 1186,1192 ----
  
      if (enc_codepage > 0)
      {
! 	/* We can do any UTF-16 -> CP### in one pass. */
  	int length;
  
  	WideCharToMultiByte_alloc(enc_codepage, 0, str, *lenp,
***************
*** 1171,1180 ****
      }
  
      /* Avoid allocating zero bytes, it generates an error message. */
!     utf8_str = alloc(ucs2_to_utf8(str, *lenp == 0 ? 1 : *lenp, NULL));
      if (utf8_str != NULL)
      {
! 	*lenp = ucs2_to_utf8(str, *lenp, utf8_str);
  
  	/* We might be called before we have p_enc set up. */
  	conv.vc_type = CONV_NONE;
--- 1196,1205 ----
      }
  
      /* Avoid allocating zero bytes, it generates an error message. */
!     utf8_str = alloc(utf16_to_utf8(str, *lenp == 0 ? 1 : *lenp, NULL));
      if (utf8_str != NULL)
      {
! 	*lenp = utf16_to_utf8(str, *lenp, utf8_str);
  
  	/* We might be called before we have p_enc set up. */
  	conv.vc_type = CONV_NONE;
***************
*** 1308,1314 ****
  		    if (hMemWstr[str_size] == NUL)
  			break;
  	    }
! 	    to_free = str = ucs2_to_enc((short_u *)hMemWstr, &str_size);
  	    GlobalUnlock(hMemW);
  	}
      }
--- 1333,1339 ----
  		    if (hMemWstr[str_size] == NUL)
  			break;
  	    }
! 	    to_free = str = utf16_to_enc((short_u *)hMemWstr, &str_size);
  	    GlobalUnlock(hMemW);
  	}
      }
***************
*** 1340,1346 ****
  
  # if defined(FEAT_MBYTE) && defined(WIN3264)
  	    /* The text is in the active codepage.  Convert to 'encoding',
! 	     * going through UCS-2. */
  	    acp_to_enc(str, str_size, &to_free, &maxlen);
  	    if (to_free != NULL)
  	    {
--- 1365,1371 ----
  
  # if defined(FEAT_MBYTE) && defined(WIN3264)
  	    /* The text is in the active codepage.  Convert to 'encoding',
! 	     * going through UTF-16. */
  	    acp_to_enc(str, str_size, &to_free, &maxlen);
  	    if (to_free != NULL)
  	    {
***************
*** 1404,1410 ****
      if (widestr != NULL)
      {
  	++*outlen;	/* Include the 0 after the string */
! 	*out = ucs2_to_enc((short_u *)widestr, outlen);
  	vim_free(widestr);
      }
  }
--- 1429,1435 ----
      if (widestr != NULL)
      {
  	++*outlen;	/* Include the 0 after the string */
! 	*out = utf16_to_enc((short_u *)widestr, outlen);
  	vim_free(widestr);
      }
  }
***************
*** 1466,1474 ****
  	WCHAR		*out;
  	int		len = metadata.txtlen;
  
! 	/* Convert the text to UCS-2. This is put on the clipboard as
  	 * CF_UNICODETEXT. */
! 	out = (WCHAR *)enc_to_ucs2(str, &len);
  	if (out != NULL)
  	{
  	    WCHAR *lpszMemW;
--- 1491,1499 ----
  	WCHAR		*out;
  	int		len = metadata.txtlen;
  
! 	/* Convert the text to UTF-16. This is put on the clipboard as
  	 * CF_UNICODETEXT. */
! 	out = (WCHAR *)enc_to_utf16(str, &len);
  	if (out != NULL)
  	{
  	    WCHAR *lpszMemW;
***************
*** 1488,1494 ****
  	    WideCharToMultiByte(GetACP(), 0, out, len,
  						  str, metadata.txtlen, 0, 0);
  
! 	    /* Allocate memory for the UCS-2 text, add one NUL word to
  	     * terminate the string. */
  	    hMemW = (LPSTR)GlobalAlloc(GMEM_MOVEABLE | GMEM_DDESHARE,
  						   (len + 1) * sizeof(WCHAR));
--- 1513,1519 ----
  	    WideCharToMultiByte(GetACP(), 0, out, len,
  						  str, metadata.txtlen, 0, 0);
  
! 	    /* Allocate memory for the UTF-16 text, add one NUL word to
  	     * terminate the string. */
  	    hMemW = (LPSTR)GlobalAlloc(GMEM_MOVEABLE | GMEM_DDESHARE,
  						   (len + 1) * sizeof(WCHAR));
*** ../vim-7.2.048/src/os_win32.c	Thu Jul 24 20:50:30 2008
--- src/os_win32.c	Thu Nov 20 16:44:33 2008
***************
*** 1587,1593 ****
  #ifdef FEAT_MBYTE
      if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
      {
! 	WCHAR	*p = enc_to_ucs2(name, NULL);
  	WCHAR	fnamew[_MAX_PATH];
  	WCHAR	*dumw;
  	long	n;
--- 1587,1593 ----
  #ifdef FEAT_MBYTE
      if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
      {
! 	WCHAR	*p = enc_to_utf16(name, NULL);
  	WCHAR	fnamew[_MAX_PATH];
  	WCHAR	*dumw;
  	long	n;
***************
*** 2440,2446 ****
  
  	if (GetCurrentDirectoryW(_MAX_PATH, wbuf) != 0)
  	{
! 	    char_u  *p = ucs2_to_enc(wbuf, NULL);
  
  	    if (p != NULL)
  	    {
--- 2440,2446 ----
  
  	if (GetCurrentDirectoryW(_MAX_PATH, wbuf) != 0)
  	{
! 	    char_u  *p = utf16_to_enc(wbuf, NULL);
  
  	    if (p != NULL)
  	    {
***************
*** 2466,2472 ****
  #ifdef FEAT_MBYTE
      if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
      {
! 	WCHAR	*p = enc_to_ucs2(name, NULL);
  	long	n;
  
  	if (p != NULL)
--- 2466,2472 ----
  #ifdef FEAT_MBYTE
      if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
      {
! 	WCHAR	*p = enc_to_utf16(name, NULL);
  	long	n;
  
  	if (p != NULL)
***************
*** 2495,2501 ****
  #ifdef FEAT_MBYTE
      if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
      {
! 	WCHAR	*p = enc_to_ucs2(name, NULL);
  	long	n;
  
  	if (p != NULL)
--- 2495,2501 ----
  #ifdef FEAT_MBYTE
      if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
      {
! 	WCHAR	*p = enc_to_utf16(name, NULL);
  	long	n;
  
  	if (p != NULL)
***************
*** 2522,2528 ****
      WCHAR	*p = NULL;
  
      if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
! 	p = enc_to_ucs2(name, NULL);
  #endif
  
  #ifdef FEAT_MBYTE
--- 2522,2528 ----
      WCHAR	*p = NULL;
  
      if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
! 	p = enc_to_utf16(name, NULL);
  #endif
  
  #ifdef FEAT_MBYTE
***************
*** 2590,2596 ****
      WCHAR	*wn = NULL;
  
      if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
! 	wn = enc_to_ucs2(fname, NULL);
      if (wn != NULL)
      {
  	hFile = CreateFileW(wn,		/* file name */
--- 2590,2596 ----
      WCHAR	*wn = NULL;
  
      if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
! 	wn = enc_to_utf16(fname, NULL);
      if (wn != NULL)
      {
  	hFile = CreateFileW(wn,		/* file name */
***************
*** 4239,4245 ****
  
      if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
      {
! 	wn = enc_to_ucs2(name, NULL);
  	if (wn != NULL)
  	{
  	    SetFileAttributesW(wn, FILE_ATTRIBUTE_NORMAL);
--- 4239,4245 ----
  
      if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
      {
! 	wn = enc_to_utf16(name, NULL);
  	if (wn != NULL)
  	{
  	    SetFileAttributesW(wn, FILE_ATTRIBUTE_NORMAL);
***************
*** 4382,4389 ****
  
      if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
      {
! 	wold = enc_to_ucs2((char_u *)pszOldFile, NULL);
! 	wnew = enc_to_ucs2((char_u *)pszNewFile, NULL);
  	if (wold != NULL && wnew != NULL)
  	    retval = mch_wrename(wold, wnew);
  	vim_free(wold);
--- 4382,4389 ----
  
      if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
      {
! 	wold = enc_to_utf16((char_u *)pszOldFile, NULL);
! 	wnew = enc_to_utf16((char_u *)pszNewFile, NULL);
  	if (wold != NULL && wnew != NULL)
  	    retval = mch_wrename(wold, wnew);
  	vim_free(wold);
***************
*** 4492,4498 ****
      WCHAR	*wn = NULL;
  
      if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
! 	wn = enc_to_ucs2(n, NULL);
  #endif
  
      if (mch_isdir(n))
--- 4492,4498 ----
      WCHAR	*wn = NULL;
  
      if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
! 	wn = enc_to_utf16(n, NULL);
  #endif
  
      if (mch_isdir(n))
***************
*** 4618,4624 ****
  
  #if defined(FEAT_MBYTE) || defined(PROTO)
  /*
!  * Version of open() that may use ucs2 file name.
   */
      int
  mch_open(char *name, int flags, int mode)
--- 4618,4624 ----
  
  #if defined(FEAT_MBYTE) || defined(PROTO)
  /*
!  * Version of open() that may use UTF-16 file name.
   */
      int
  mch_open(char *name, int flags, int mode)
***************
*** 4630,4636 ****
  
      if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
      {
! 	wn = enc_to_ucs2(name, NULL);
  	if (wn != NULL)
  	{
  	    f = _wopen(wn, flags, mode);
--- 4630,4636 ----
  
      if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
      {
! 	wn = enc_to_utf16(name, NULL);
  	if (wn != NULL)
  	{
  	    f = _wopen(wn, flags, mode);
***************
*** 4648,4654 ****
  }
  
  /*
!  * Version of fopen() that may use ucs2 file name.
   */
      FILE *
  mch_fopen(char *name, char *mode)
--- 4648,4654 ----
  }
  
  /*
!  * Version of fopen() that may use UTF-16 file name.
   */
      FILE *
  mch_fopen(char *name, char *mode)
***************
*** 4675,4682 ****
  	else if (newMode == 'b')
  	    _set_fmode(_O_BINARY);
  # endif
! 	wn = enc_to_ucs2(name, NULL);
! 	wm = enc_to_ucs2(mode, NULL);
  	if (wn != NULL && wm != NULL)
  	    f = _wfopen(wn, wm);
  	vim_free(wn);
--- 4675,4682 ----
  	else if (newMode == 'b')
  	    _set_fmode(_O_BINARY);
  # endif
! 	wn = enc_to_utf16(name, NULL);
! 	wm = enc_to_utf16(mode, NULL);
  	if (wn != NULL && wm != NULL)
  	    f = _wfopen(wn, wm);
  	vim_free(wn);
***************
*** 4776,4783 ****
      int			len;
  
      /* Convert the file names to wide characters. */
!     fromw = enc_to_ucs2(from, NULL);
!     tow = enc_to_ucs2(to, NULL);
      if (fromw != NULL && tow != NULL)
      {
  	/* Open the file for reading. */
--- 4776,4783 ----
      int			len;
  
      /* Convert the file names to wide characters. */
!     fromw = enc_to_utf16(from, NULL);
!     tow = enc_to_utf16(to, NULL);
      if (fromw != NULL && tow != NULL)
      {
  	/* Open the file for reading. */
***************
*** 5122,5128 ****
      for (i = 0; i < used_file_count; ++i)
      {
  	idx = used_file_indexes[i];
! 	str = ucs2_to_enc(ArglistW[idx], NULL);
  	if (str != NULL)
  	{
  #ifdef FEAT_DIFF
--- 5122,5128 ----
      for (i = 0; i < used_file_count; ++i)
      {
  	idx = used_file_indexes[i];
! 	str = utf16_to_enc(ArglistW[idx], NULL);
  	if (str != NULL)
  	{
  #ifdef FEAT_DIFF
*** ../vim-7.2.048/src/proto/os_mswin.pro	Sat May  5 19:07:50 2007
--- src/proto/os_mswin.pro	Thu Nov 20 16:41:00 2008
***************
*** 22,35 ****
  int can_end_termcap_mode __ARGS((int give_msg));
  int mch_screenmode __ARGS((char_u *arg));
  int mch_libcall __ARGS((char_u *libname, char_u *funcname, char_u *argstring, int argint, char_u **string_result, int *number_result));
! int utf8_to_ucs2 __ARGS((char_u *instr, int inlen, short_u *outstr, int *unconvlenp));
! int ucs2_to_utf8 __ARGS((short_u *instr, int inlen, char_u *outstr));
  void MultiByteToWideChar_alloc __ARGS((UINT cp, DWORD flags, LPCSTR in, int inlen, LPWSTR *out, int *outlen));
  void WideCharToMultiByte_alloc __ARGS((UINT cp, DWORD flags, LPCWSTR in, int inlen, LPSTR *out, int *outlen, LPCSTR def, LPBOOL useddef));
  int clip_mch_own_selection __ARGS((VimClipboard *cbd));
  void clip_mch_lose_selection __ARGS((VimClipboard *cbd));
! short_u *enc_to_ucs2 __ARGS((char_u *str, int *lenp));
! char_u *ucs2_to_enc __ARGS((short_u *str, int *lenp));
  void clip_mch_request_selection __ARGS((VimClipboard *cbd));
  void acp_to_enc __ARGS((char_u *str, int str_size, char_u **out, int *outlen));
  void clip_mch_set_selection __ARGS((VimClipboard *cbd));
--- 22,35 ----
  int can_end_termcap_mode __ARGS((int give_msg));
  int mch_screenmode __ARGS((char_u *arg));
  int mch_libcall __ARGS((char_u *libname, char_u *funcname, char_u *argstring, int argint, char_u **string_result, int *number_result));
! int utf8_to_utf16 __ARGS((char_u *instr, int inlen, short_u *outstr, int *unconvlenp));
! int utf16_to_utf8 __ARGS((short_u *instr, int inlen, char_u *outstr));
  void MultiByteToWideChar_alloc __ARGS((UINT cp, DWORD flags, LPCSTR in, int inlen, LPWSTR *out, int *outlen));
  void WideCharToMultiByte_alloc __ARGS((UINT cp, DWORD flags, LPCWSTR in, int inlen, LPSTR *out, int *outlen, LPCSTR def, LPBOOL useddef));
  int clip_mch_own_selection __ARGS((VimClipboard *cbd));
  void clip_mch_lose_selection __ARGS((VimClipboard *cbd));
! short_u *enc_to_utf16 __ARGS((char_u *str, int *lenp));
! char_u *utf16_to_enc __ARGS((short_u *str, int *lenp));
  void clip_mch_request_selection __ARGS((VimClipboard *cbd));
  void acp_to_enc __ARGS((char_u *str, int str_size, char_u **out, int *outlen));
  void clip_mch_set_selection __ARGS((VimClipboard *cbd));
*** ../vim-7.2.048/src/version.c	Thu Nov 20 16:11:03 2008
--- src/version.c	Thu Nov 20 17:08:07 2008
***************
*** 678,679 ****
--- 678,681 ----
  {   /* Add new patch number below this line */
+ /**/
+     49,
  /**/

-- 
FIRST HEAD: All right! All right! We'll kill him first and then have tea and
            biscuits.
                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD

 /// Bram Moolenaar -- Bram at 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    ///


--- NEW FILE 7.2.050 ---
To: vim-dev at vim.org
Subject: Patch 7.2.050
Fcc: outbox
From: Bram Moolenaar <Bram at 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 at 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    ///


--- NEW FILE 7.2.051 ---
To: vim-dev at vim.org
Subject: Patch 7.2.051
Fcc: outbox
From: Bram Moolenaar <Bram at 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 at 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    ///


--- NEW FILE 7.2.052 ---
To: vim-dev at vim.org
Subject: Patch 7.2.052
Fcc: outbox
From: Bram Moolenaar <Bram at 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 at 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    ///


--- NEW FILE 7.2.053 ---
To: vim-dev at vim.org
Subject: Patch 7.2.053
Fcc: outbox
From: Bram Moolenaar <Bram at 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 at 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    ///


--- NEW FILE 7.2.054 ---
To: vim-dev at vim.org
Subject: Patch 7.2.054
Fcc: outbox
From: Bram Moolenaar <Bram at 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 at 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    ///


--- NEW FILE 7.2.055 ---
To: vim-dev at vim.org
Subject: Patch 7.2.055
Fcc: outbox
From: Bram Moolenaar <Bram at 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 at 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    ///


--- NEW FILE 7.2.056 ---
To: vim-dev at vim.org
Subject: Patch 7.2.056
Fcc: outbox
From: Bram Moolenaar <Bram at 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 at 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    ///


--- NEW FILE 7.2.057 ---
To: vim-dev at vim.org
Subject: Patch 7.2.057
Fcc: outbox
From: Bram Moolenaar <Bram at 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 at 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    ///


--- NEW FILE 7.2.058 ---
To: vim-dev at vim.org
Subject: Patch 7.2.058
Fcc: outbox
From: Bram Moolenaar <Bram at 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 at 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    ///


--- NEW FILE 7.2.059 ---
To: vim-dev at vim.org
Subject: Patch 7.2.059
Fcc: outbox
From: Bram Moolenaar <Bram at 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 at 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    ///


--- NEW FILE 7.2.060 ---
To: vim-dev at vim.org
Subject: Patch 7.2.060
Fcc: outbox
From: Bram Moolenaar <Bram at 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 at 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    ///


--- NEW FILE filetype.vim ---
" Vim support file to detect file types
"
" Maintainer:	Bram Moolenaar <Bram at vim.org>
" Last Change:	2008 Nov 01

" Listen very carefully, I will say this only once
if exists("did_load_filetypes")
  finish
endif
let did_load_filetypes = 1

" Line continuation is used here, remove 'C' from 'cpoptions'
let s:cpo_save = &cpo
set cpo&vim

augroup filetypedetect

" Ignored extensions
if exists("*fnameescape")
au BufNewFile,BufRead ?\+.orig,?\+.bak,?\+.old,?\+.new,?\+.dpkg-dist,?\+.dpkg-old,?\+.rpmsave,?\+.rpmnew
	\ exe "doau filetypedetect BufRead " . fnameescape(expand("<afile>:r"))
au BufNewFile,BufRead *~
	\ let s:name = expand("<afile>") |
	\ let s:short = substitute(s:name, '\~$', '', '') |
	\ if s:name != s:short && s:short != "" |
	\   exe "doau filetypedetect BufRead " . fnameescape(s:short) |
	\ endif |
	\ unlet! s:name s:short
au BufNewFile,BufRead ?\+.in
	\ if expand("<afile>:t") != "configure.in" |
	\   exe "doau filetypedetect BufRead " . fnameescape(expand("<afile>:r")) |
	\ endif
elseif &verbose > 0
  echomsg "Warning: some filetypes will not be recognized because this version of Vim does not have fnameescape()"
endif

" Pattern used to match file names which should not be inspected.
" Currently finds compressed files.
if !exists("g:ft_ignore_pat")
  let g:ft_ignore_pat = '\.\(Z\|gz\|bz2\|zip\|tgz\)$'
endif

" Function used for patterns that end in a star: don't set the filetype if the
" file name matches ft_ignore_pat.
func! s:StarSetf(ft)
  if expand("<amatch>") !~ g:ft_ignore_pat
    exe 'setf ' . a:ft
  endif
endfunc

" Abaqus or Trasys
au BufNewFile,BufRead *.inp			call s:Check_inp()

func! s:Check_inp()
  if getline(1) =~ '^\*'
    setf abaqus
  else
    let n = 1
    if line("$") > 500
      let nmax = 500
    else
      let nmax = line("$")
    endif
    while n <= nmax
      if getline(n) =~? "^header surface data"
	setf trasys
	break
      endif
      let n = n + 1
    endwhile
  endif
endfunc

" A-A-P recipe
au BufNewFile,BufRead *.aap			setf aap

" A2ps printing utility
au BufNewFile,BufRead etc/a2ps.cfg,etc/a2ps/*.cfg,a2psrc,.a2psrc setf a2ps

" ABAB/4
au BufNewFile,BufRead *.abap			setf abap

" ABC music notation
au BufNewFile,BufRead *.abc			setf abc

" ABEL
au BufNewFile,BufRead *.abl			setf abel

" AceDB
au BufNewFile,BufRead *.wrm			setf acedb

" Ada (83, 9X, 95)
au BufNewFile,BufRead *.adb,*.ads,*.ada		setf ada
if has("vms")
  au BufNewFile,BufRead *.gpr,*.ada_m,*.adc	setf ada
else
  au BufNewFile,BufRead *.gpr			setf ada
endif

" AHDL
au BufNewFile,BufRead *.tdf			setf ahdl

" AMPL
au BufNewFile,BufRead *.run			setf ampl

" Ant
au BufNewFile,BufRead build.xml			setf ant

" Apache style config file
au BufNewFile,BufRead proftpd.conf*		call s:StarSetf('apachestyle')

" Apache config file
au BufNewFile,BufRead .htaccess			 setf apache
au BufNewFile,BufRead httpd.conf*,srm.conf*,access.conf*,apache.conf*,apache2.conf*,/etc/apache2/*.conf* call s:StarSetf('apache')

" XA65 MOS6510 cross assembler
au BufNewFile,BufRead *.a65			setf a65

" Applescript
au BufNewFile,BufRead *.scpt			setf applescript

" Applix ELF
au BufNewFile,BufRead *.am
	\ if expand("<afile>") !~? 'Makefile.am\>' | setf elf | endif

" ALSA configuration
au BufNewFile,BufRead ~/.asoundrc,/usr/share/alsa/alsa.conf,/etc/asound.conf	setf alsaconf

" Arc Macro Language
au BufNewFile,BufRead *.aml			setf aml

" Arch Inventory file
au BufNewFile,BufRead .arch-inventory,=tagging-method	setf arch

" ART*Enterprise (formerly ART-IM)
au BufNewFile,BufRead *.art			setf art

" ASN.1
au BufNewFile,BufRead *.asn,*.asn1		setf asn

" Active Server Pages (with Visual Basic Script)
au BufNewFile,BufRead *.asa
	\ if exists("g:filetype_asa") |
	\   exe "setf " . g:filetype_asa |
	\ else |
	\   setf aspvbs |
	\ endif

" Active Server Pages (with Perl or Visual Basic Script)
au BufNewFile,BufRead *.asp
	\ if exists("g:filetype_asp") |
	\   exe "setf " . g:filetype_asp |
	\ elseif getline(1) . getline(2) . getline(3) =~? "perlscript" |
	\   setf aspperl |
	\ else |
	\   setf aspvbs |
	\ endif

" Grub (must be before catch *.lst)
au BufNewFile,BufRead /boot/grub/menu.lst,/boot/grub/grub.conf,/etc/grub.conf	setf grub

" Assembly (all kinds)
" *.lst is not pure assembly, it has two extra columns (address, byte codes)
au BufNewFile,BufRead *.asm,*.[sS],*.[aA],*.mac,*.lst	call s:FTasm()

" This function checks for the kind of assembly that is wanted by the user, or
" can be detected from the first five lines of the file.
func! s:FTasm()
  " make sure b:asmsyntax exists
  if !exists("b:asmsyntax")
    let b:asmsyntax = ""
  endif

  if b:asmsyntax == ""
    call s:FTasmsyntax()
  endif

  " if b:asmsyntax still isn't set, default to asmsyntax or GNU
  if b:asmsyntax == ""
    if exists("g:asmsyntax")
      let b:asmsyntax = g:asmsyntax
    else
      let b:asmsyntax = "asm"
    endif
  endif

  exe "setf " . fnameescape(b:asmsyntax)
endfunc

func! s:FTasmsyntax()
  " see if file contains any asmsyntax=foo overrides. If so, change
  " b:asmsyntax appropriately
  let head = " ".getline(1)." ".getline(2)." ".getline(3)." ".getline(4).
	\" ".getline(5)." "
  let match = matchstr(head, '\sasmsyntax=\zs[a-zA-Z0-9]\+\ze\s')
  if match != ''
    let b:asmsyntax = match
  elseif ((head =~? '\.title') || (head =~? '\.ident') || (head =~? '\.macro') || (head =~? '\.subtitle') || (head =~? '\.library'))
    let b:asmsyntax = "vmasm"
[...2050 lines suppressed...]
  endwhile
  setf yacc
endfunc


" Yaml
au BufNewFile,BufRead *.yaml,*.yml		setf yaml

" Zope
"   dtml (zope dynamic template markup language), pt (zope page template),
"   cpt (zope form controller page template)
au BufNewFile,BufRead *.dtml,*.pt,*.cpt		call s:FThtml()
"   zsql (zope sql method)
au BufNewFile,BufRead *.zsql			call s:SQL()

" Z80 assembler asz80
au BufNewFile,BufRead *.z8a			setf z8a

augroup END


" Source the user-specified filetype file, for backwards compatibility with
" Vim 5.x.
if exists("myfiletypefile") && filereadable(expand(myfiletypefile))
  execute "source " . myfiletypefile
endif


" Check for "*" after loading myfiletypefile, so that scripts.vim is only used
" when there are no matching file name extensions.
" Don't do this for compressed files.
augroup filetypedetect
au BufNewFile,BufRead *
	\ if !did_filetype() && expand("<amatch>") !~ g:ft_ignore_pat
	\ | runtime! scripts.vim | endif
au StdinReadPost * if !did_filetype() | runtime! scripts.vim | endif


" Extra checks for when no filetype has been detected now.  Mostly used for
" patterns that end in "*".  E.g., "zsh*" matches "zsh.vim", but that's a Vim
" script file.
" Most of these should call s:StarSetf() to avoid names ending in .gz and the
" like are used.

" More Apache files.
au BufNewFile,BufRead /etc/apache2/conf.*/*,/etc/apache2/sites-*/*,/etc/apache2/mods-*/*		call s:StarSetf('apache')

" Asterisk config file
au BufNewFile,BufRead *asterisk/*.conf*		call s:StarSetf('asterisk')
au BufNewFile,BufRead *asterisk*/*voicemail.conf* call s:StarSetf('asteriskvm')

" Bazaar version control
au BufNewFile,BufRead bzr_log.*			setf bzr

" BIND zone
au BufNewFile,BufRead */named/db.*,*/bind/db.*	call s:StarSetf('bindzone')

" Changelog
au BufNewFile,BufRead [cC]hange[lL]og*
	\ if getline(1) =~ '; urgency='
	\|  call s:StarSetf('debchangelog')
	\|else
	\|  call s:StarSetf('changelog')
	\|endif

" Crontab
au BufNewFile,BufRead crontab,crontab.*,/etc/cron.d/*		call s:StarSetf('crontab')

" Debian Sources.list
au BufNewFile,BufRead /etc/apt/sources.list.d/*	call s:StarSetf('debsources')

" Dracula
au BufNewFile,BufRead drac.*			call s:StarSetf('dracula')

" Fvwm
au BufNewFile,BufRead */.fvwm/*			call s:StarSetf('fvwm')
au BufNewFile,BufRead *fvwmrc*,*fvwm95*.hook
	\ let b:fvwm_version = 1 | call s:StarSetf('fvwm')
au BufNewFile,BufRead *fvwm2rc*
	\ if expand("<afile>:e") == "m4"
	\|  call s:StarSetf('fvwm2m4')
	\|else
	\|  let b:fvwm_version = 2 | call s:StarSetf('fvwm')
	\|endif

" GTK RC
au BufNewFile,BufRead .gtkrc*,gtkrc*		call s:StarSetf('gtkrc')

" Jam
au BufNewFile,BufRead Prl*.*,JAM*.*		call s:StarSetf('jam')

" Jargon
au! BufNewFile,BufRead *jarg*
	\ if getline(1).getline(2).getline(3).getline(4).getline(5) =~? 'THIS IS THE JARGON FILE'
	\|  call s:StarSetf('jargon')
	\|endif

" Kconfig
au BufNewFile,BufRead Kconfig.*			call s:StarSetf('kconfig')

" Makefile
au BufNewFile,BufRead [mM]akefile*		call s:StarSetf('make')

" Ruby Makefile
au BufNewFile,BufRead [rR]akefile*		call s:StarSetf('ruby')

" Mail (also matches muttrc.vim, so this is below the other checks)
au BufNewFile,BufRead mutt[[:alnum:]._-]\{6\}	setf mail

" Modconf
au BufNewFile,BufRead /etc/modprobe.*		call s:StarSetf('modconf')

" Mutt setup file
au BufNewFile,BufRead .mutt{ng,}rc*,*/.mutt{ng,}/mutt{ng,}rc*	call s:StarSetf('muttrc')
au BufNewFile,BufRead mutt{ng,}rc*,Mutt{ng,}rc*		call s:StarSetf('muttrc')

" Nroff macros
au BufNewFile,BufRead tmac.*			call s:StarSetf('nroff')

" Pam conf
au BufNewFile,BufRead /etc/pam.d/*		call s:StarSetf('pamconf')

" Printcap and Termcap
au BufNewFile,BufRead *printcap*
	\ if !did_filetype()
	\|  let b:ptcap_type = "print" | call s:StarSetf('ptcap')
	\|endif
au BufNewFile,BufRead *termcap*
	\ if !did_filetype()
	\|  let b:ptcap_type = "term" | call s:StarSetf('ptcap')
	\|endif

" Vim script
au BufNewFile,BufRead *vimrc*			call s:StarSetf('vim')

" Subversion commit file
au BufNewFile,BufRead svn-commit*.tmp		setf svn

" X resources file
au BufNewFile,BufRead Xresources*,*/app-defaults/*,*/Xresources/* call s:StarSetf('xdefaults')

" XFree86 config
au BufNewFile,BufRead XF86Config-4*
	\ let b:xf86c_xfree86_version = 4 | call s:StarSetf('xf86conf')
au BufNewFile,BufRead XF86Config*
	\ if getline(1) =~ '\<XConfigurator\>'
	\|  let b:xf86c_xfree86_version = 3
	\|endif
	\|call s:StarSetf('xf86conf')

" X11 xmodmap
au BufNewFile,BufRead *xmodmap*			call s:StarSetf('xmodmap')

" Xinetd conf
au BufNewFile,BufRead /etc/xinetd.d/*		call s:StarSetf('xinetd')

" Z-Shell script
au BufNewFile,BufRead zsh*,zlog*		call s:StarSetf('zsh')


" Generic configuration file (check this last, it's just guessing!)
au BufNewFile,BufRead,StdinReadPost *
	\ if !did_filetype() && expand("<amatch>") !~ g:ft_ignore_pat
	\    && (getline(1) =~ '^#' || getline(2) =~ '^#' || getline(3) =~ '^#'
	\	|| getline(4) =~ '^#' || getline(5) =~ '^#') |
	\   setf conf |
	\ endif

" Use the plugin-filetype checks last, they may overrule any of the previously
" detected filetypes.
runtime! ftdetect/*.vim

augroup END


" If the GUI is already running, may still need to install the Syntax menu.
" Don't do it when the 'M' flag is included in 'guioptions'.
if has("menu") && has("gui_running")
      \ && !exists("did_install_syntax_menu") && &guioptions !~# "M"
  source <sfile>:p:h/menu.vim
endif

" Function called for testing all functions defined here.  These are
" script-local, thus need to be executed here.
" Returns a string with error messages (hopefully empty).
func! TestFiletypeFuncs(testlist)
  let output = ''
  for f in a:testlist
    try
      exe f
    catch
      let output = output . "\n" . f . ": " . v:exception
    endtry
  endfor
  return output
endfunc

" Restore 'cpoptions'
let &cpo = s:cpo_save
unlet s:cpo_save


--- NEW FILE gzip.vim ---
" Vim plugin for editing compressed files.
" Maintainer: Bram Moolenaar <Bram at vim.org>
" Last Change: 2005 Jul 26

" Exit quickly when:
" - this plugin was already loaded
" - when 'compatible' is set
" - some autocommands are already taking care of compressed files
if exists("loaded_gzip") || &cp || exists("#BufReadPre#*.gz")
  finish
endif
let loaded_gzip = 1

augroup gzip
  " Remove all gzip autocommands
  au!

  " Enable editing of gzipped files.
  " The functions are defined in autoload/gzip.vim.
  "
  " Set binary mode before reading the file.
  " Use "gzip -d", gunzip isn't always available.
  autocmd BufReadPre,FileReadPre	*.gz,*.bz2,*.Z setlocal bin
  autocmd BufReadPost,FileReadPost	*.gz  call gzip#read("gzip -dn")
  autocmd BufReadPost,FileReadPost	*.bz2 call gzip#read("bzip2 -d")
  autocmd BufReadPost,FileReadPost	*.Z   call gzip#read("uncompress")
  autocmd BufWritePost,FileWritePost	*.gz  call gzip#write("gzip")
  autocmd BufWritePost,FileWritePost	*.bz2 call gzip#write("bzip2")
  autocmd BufWritePost,FileWritePost	*.Z   call gzip#write("compress -f")
  autocmd FileAppendPre			*.gz  call gzip#appre("gzip -dn")
  autocmd FileAppendPre			*.bz2 call gzip#appre("bzip2 -d")
  autocmd FileAppendPre			*.Z   call gzip#appre("uncompress")
  autocmd FileAppendPost		*.gz  call gzip#write("gzip")
  autocmd FileAppendPost		*.bz2 call gzip#write("bzip2")
  autocmd FileAppendPost		*.Z   call gzip#write("compress -f")
augroup END


--- NEW FILE netrw.vim ---
" netrw.vim: Handles file transfer and remote directory listing across
"            AUTOLOAD SECTION
" Date:		Oct 23, 2008
" Version:	134
" Maintainer:	Charles E Campbell, Jr <NdrOchip at ScampbellPfamily.AbizM-NOSPAM>
" GetLatestVimScripts: 1075 1 :AutoInstall: netrw.vim
" Copyright:    Copyright (C) 1999-2008 Charles E. Campbell, Jr. {{{1
"               Permission is hereby granted to use and distribute this code,
"               with or without modifications, provided that this copyright
"               notice is copied with it. Like anything else that's free,
"               netrw.vim, netrwPlugin.vim, and netrwSettings.vim are provided
"               *as is* and come with no warranty of any kind, either
"               expressed or implied. By using this plugin, you agree that
"               in no event will the copyright holder be liable for any damages
"               resulting from the use of this software.
"redraw!|call DechoSep()|call inputsave()|call input("Press <cr> to continue")|call inputrestore()
"
"  But be doers of the Word, and not only hearers, deluding your own selves {{{1
"  (James 1:22 RSV)
" =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
" Load Once: {{{1
if &cp || exists("g:loaded_netrw")
  finish
endif
let g:loaded_netrw = "v134"
if v:version < 702
 echohl WarningMsg
 echo "***warning*** this version of netrw needs vim 7.2"
 echohl Normal
 finish
endif
if !exists("s:NOTE")
 let s:NOTE    = 0
 let s:WARNING = 1
 let s:ERROR   = 2
endif

" sanity checks
if v:version < 700
 call netrw#ErrorMsg(s:WARNING,"you need vim version 7.0 or later for version ".g:loaded_netrw." of netrw",1)
 finish
endif

let s:keepcpo= &cpo
setlocal cpo&vim
"DechoTabOn
"call Decho("doing autoload/netrw.vim version ".g:loaded_netrw)

" ======================
"  Netrw Variables: {{{1
" ======================

" ---------------------------------------------------------------------
"  Netrw Constants: {{{2
if !exists("g:netrw_dirhist_cnt")
 let g:netrw_dirhist_cnt= 0
endif
if !exists("s:LONGLIST")
 let s:THINLIST = 0
 let s:LONGLIST = 1
 let s:WIDELIST = 2
 let s:TREELIST = 3
 let s:MAXLIST  = 4
endif

" ---------------------------------------------------------------------
" Default values for netrw's global protocol variables {{{2
if !exists("g:netrw_dav_cmd")
 if executable("cadaver")
  let g:netrw_dav_cmd	= "cadaver"
 elseif executable("curl")
  let g:netrw_dav_cmd	= "curl"
 else
  let g:netrw_dav_cmd   = ""
 endif
endif
if !exists("g:netrw_fetch_cmd")
 if executable("fetch")
  let g:netrw_fetch_cmd	= "fetch -o"
 else
  let g:netrw_fetch_cmd	= ""
 endif
endif
if !exists("g:netrw_ftp_cmd")
  let g:netrw_ftp_cmd	= "ftp"
endif
if !exists("g:netrw_http_cmd")
 if executable("elinks")
  let g:netrw_http_cmd = "elinks"
  if !exists("g:netrw_http_xcmd")
   let g:netrw_http_xcmd= "-dump >"
  endif
 elseif executable("links")
  let g:netrw_http_cmd = "links"
  if !exists("g:netrw_http_xcmd")
   let g:netrw_http_xcmd= "-dump >"
  endif
 elseif executable("curl")
  let g:netrw_http_cmd	= "curl"
  if !exists("g:netrw_http_xcmd")
   let g:netrw_http_xcmd= "-o"
  endif
 elseif executable("wget")
  let g:netrw_http_cmd	= "wget"
  if !exists("g:netrw_http_xcmd")
   let g:netrw_http_xcmd= "-q -O"
  endif
 elseif executable("fetch")
  let g:netrw_http_cmd	= "fetch"
  if !exists("g:netrw_http_xcmd")
   let g:netrw_http_xcmd= "-o"
  endif
 else
  let g:netrw_http_cmd	= ""
 endif
endif
if !exists("g:netrw_rcp_cmd")
  let g:netrw_rcp_cmd	= "rcp"
endif
if !exists("g:netrw_rsync_cmd")
  let g:netrw_rsync_cmd	= "rsync"
endif
if !exists("g:netrw_scp_cmd")
  let g:netrw_scp_cmd	= "scp -q"
endif
if !exists("g:netrw_sftp_cmd")
  let g:netrw_sftp_cmd	= "sftp"
endif
if !exists("g:netrw_ssh_cmd")
 let g:netrw_ssh_cmd= "ssh"
endif

if (has("win32") || has("win95") || has("win64") || has("win16"))
  \ && exists("g:netrw_use_nt_rcp")
  \ && g:netrw_use_nt_rcp
  \ && executable( $SystemRoot .'/system32/rcp.exe')
 let s:netrw_has_nt_rcp = 1
 let s:netrw_rcpmode    = '-b'
else
 let s:netrw_has_nt_rcp = 0
 let s:netrw_rcpmode    = ''
endif

" ---------------------------------------------------------------------
" Default values for netrw's global variables {{{2
" Cygwin Detection ------- {{{3
if !exists("g:netrw_cygwin")
 if has("win32") || has("win95") || has("win64") || has("win16")
  if &shell =~ '\%(\<bash\>\|\<zsh\>\)\%(\.exe\)\=$'
   let g:netrw_cygwin= 1
  else
   let g:netrw_cygwin= 0
  endif
 else
  let g:netrw_cygwin= 0
 endif
endif
" Default values - a-c ---------- {{{3
if !exists("g:netrw_alto")
 let g:netrw_alto= &sb
endif
if !exists("g:netrw_altv")
 let g:netrw_altv= &spr
endif
if !exists("g:netrw_browse_split")
 let g:netrw_browse_split= 0
endif
if !exists("g:netrw_chgwin")
 let g:netrw_chgwin    = -1
endif
if !exists("g:netrw_compress")
 let g:netrw_compress= "gzip"
endif
if !exists("g:netrw_ctags")
 let g:netrw_ctags= "ctags"
endif
if !exists("g:netrw_cursorline")
 let g:netrw_cursorline= 1
 let s:netrw_usercul   = &cursorline
 let s:netrw_usercuc   = &cursorcolumn
endif
" Default values - d-g ---------- {{{3
if !exists("g:netrw_dirhist_cnt")
 let g:netrw_dirhist_cnt= 0
endif
if !exists("g:netrw_decompress")
 let g:netrw_decompress= { ".gz" : "gunzip" , ".bz2" : "bunzip2" , ".zip" : "unzip" , ".tar" : "tar -xf"}
endif
if !exists("g:netrw_dirhistmax")
 let g:netrw_dirhistmax= 10
endif
if !exists("g:netrw_fastbrowse")
 let g:netrw_fastbrowse= 1
endif
if !exists("g:netrw_ftp_browse_reject")
 let g:netrw_ftp_browse_reject='^total\s\+\d\+$\|^Trying\s\+\d\+.*$\|^KERBEROS_V\d rejected\|^Security extensions not\|No such file\|: connect to address [0-9a-fA-F:]*: No route to host$'
endif
if !exists("g:netrw_ftp_list_cmd")
 if has("unix") || (exists("g:netrw_cygwin") && g:netrw_cygwin)
[...7612 lines suppressed...]
"   UseBufWinVars() get around that.
fun! s:SetBufWinVars()
"  call Dfunc("s:SetBufWinVars()")
  if exists("w:netrw_liststyle")      |let b:netrw_liststyle      = w:netrw_liststyle      |endif
  if exists("w:netrw_bannercnt")      |let b:netrw_bannercnt      = w:netrw_bannercnt      |endif
  if exists("w:netrw_method")         |let b:netrw_method         = w:netrw_method         |endif
  if exists("w:netrw_prvdir")         |let b:netrw_prvdir         = w:netrw_prvdir         |endif
  if exists("w:netrw_explore_indx")   |let b:netrw_explore_indx   = w:netrw_explore_indx   |endif
  if exists("w:netrw_explore_listlen")|let b:netrw_explore_listlen= w:netrw_explore_listlen|endif
  if exists("w:netrw_explore_mtchcnt")|let b:netrw_explore_mtchcnt= w:netrw_explore_mtchcnt|endif
  if exists("w:netrw_explore_bufnr")  |let b:netrw_explore_bufnr  = w:netrw_explore_bufnr  |endif
  if exists("w:netrw_explore_line")   |let b:netrw_explore_line   = w:netrw_explore_line   |endif
  if exists("w:netrw_explore_list")   |let b:netrw_explore_list   = w:netrw_explore_list   |endif
"  call Dret("s:SetBufWinVars")
endfun

" ---------------------------------------------------------------------
" s:SetRexDir: set directory for :Rexplore {{{2
fun! s:SetRexDir(islocal,dirname)
"  call Dfunc("s:SetRexDir(islocal=".a:islocal." dirname<".a:dirname.">)")
  " set up Rex and leftmouse-double-click
  if a:islocal
   exe 'com! Rexplore call s:NetrwRexplore(1,"'.escape(a:dirname,'"\').'")'
   if g:netrw_retmap
    if !hasmapto("<Plug>NetrwReturn") && maparg("<2-leftmouse>","n") == ""
     nmap <unique> <silent> <2-leftmouse>	<Plug>NetrwReturn
    endif
    let dir = escape(a:dirname, s:netrw_map_escape)
    exe 'nnoremap <silent> <Plug>NetrwReturn :call <SID>NetrwRexplore(1,"'.dir.'")<cr>'
   endif
  else
   exe 'com! Rexplore call s:NetrwRexplore(0,"'.escape(a:dirname,'"\').'")'
   if g:netrw_retmap
    if !hasmapto("<Plug>NetrwReturn") && maparg("<2-leftmouse>","n") == ""
     nmap <unique> <silent> <2-leftmouse>	<Plug>NetrwReturn
    endif
    let dir = escape(a:dirname, s:netrw_map_escape)
    exe 'nnoremap <silent> <Plug>NetrwReturn :call <SID>NetrwRexplore(0,"'.dir.'")<cr>'
   endif
  endif
"  call Dret("s:SetRexDir")
endfun

" ---------------------------------------------------------------------
" s:Strlen: this function returns the length of a string, even if its {{{2
"           using two-byte etc characters.
"           Currently, its only used if g:Align_xstrlen is set to a
"           nonzero value.  Solution from Nicolai Weibull, vim docs
"           (:help strlen()), Tony Mechelynck, and my own invention.
fun! s:Strlen(x)
"  call Dfunc("s:Strlen(x<".a:x.">")
  if g:netrw_xstrlen == 1
   " number of codepoints (Latin a + combining circumflex is two codepoints)
   " (comment from TM, solution from NW)
   let ret= strlen(substitute(a:x,'.','c','g'))

  elseif g:netrw_xstrlen == 2
   " number of spacing codepoints (Latin a + combining circumflex is one spacing 
   " codepoint; a hard tab is one; wide and narrow CJK are one each; etc.)
   " (comment from TM, solution from TM)
   let ret=strlen(substitute(a:x, '.\Z', 'x', 'g')) 

  elseif g:netrw_xstrlen == 3
   " virtual length (counting, for instance, tabs as anything between 1 and 
   " 'tabstop', wide CJK as 2 rather than 1, Arabic alif as zero when immediately 
   " preceded by lam, one otherwise, etc.)
   " (comment from TM, solution from me)
   let modkeep= &mod
   exe "norm! o\<esc>"
   call setline(line("."),a:x)
   let ret= virtcol("$") - 1
   d
   let &mod= modkeep

  else
   " at least give a decent default
   ret= strlen(a:x)
  endif
"  call Dret("s:Strlen ".ret)
  return ret
endfun

" ---------------------------------------------------------------------
" s:TreeListMove: {{{2
fun! s:TreeListMove(dir)
"  call Dfunc("s:TreeListMove(dir<".a:dir.">)")
  let curline  = getline('.')
  let prvline  = (line(".") > 1)?         getline(line(".")-1) : ''
  let nxtline  = (line(".") < line("$"))? getline(line(".")+1) : ''
  let curindent= substitute(curline,'^\([| ]*\).\{-}$','\1','')
  let indentm1 = substitute(curindent,'^| ','','')
"  call Decho("prvline  <".prvline."> #".line(".")-1)
"  call Decho("curline  <".curline."> #".line("."))
"  call Decho("nxtline  <".nxtline."> #".line(".")+1)
"  call Decho("curindent<".curindent.">")
"  call Decho("indentm1 <".indentm1.">")

  if curline !~ '/$'
"   call Decho('regfile')
   if     a:dir == '[' && prvline != ''
    norm! 0
    let nl = search('^'.indentm1.'[^|]','bWe')    " search backwards from regular file
"    call Decho("regfile srch back: ".nl)
   elseif a:dir == ']' && nxtline != ''
    norm! $
    let nl = search('^'.indentm1.'[^|]','We')     " search forwards from regular file
"    call Decho("regfile srch fwd: ".nl)
   endif

  elseif a:dir == '[' && prvline != ''
   norm! 0
   let curline= line(".")
   let nl     = search('^'.curindent.'[^|]','bWe') " search backwards From directory, same indentation
"   call Decho("dir srch back ind: ".nl)
   if nl != 0
    if line(".") == curline-1
     let nl= search('^'.indentm1.'[^|]','bWe')     " search backwards from directory, indentation - 1
"     call Decho("dir srch back ind-1: ".nl)
    endif
   endif

  elseif a:dir == ']' && nxtline != ''
   norm! $
   let curline = line(".")
   let nl      = search('^'.curindent.'[^|]','We') " search forwards from directory, same indentation
"   call Decho("dir srch fwd ind: ".nl)
   if nl != 0
    if line(".") == curline+1
     let nl= search('^'.indentm1.'[^|]','We')         " search forwards from directory, indentation - 1
"     call Decho("dir srch fwd ind-1: ".nl)
    endif
   endif

  endif

"  call Dret("s:TreeListMove")
endfun

" ---------------------------------------------------------------------
" s:UpdateBuffersMenu: does emenu Buffers.Refresh (but due to locale, the menu item may not be called that) {{{2
"                      The Buffers.Refresh menu calls s:BMShow(); unfortunately, that means that that function
"                      can't be called except via emenu.  But due to locale, that menu line may not be called
"                      Buffers.Refresh; hence, s:NetrwBMShow() utilizes a "cheat" to call that function anyway.
fun! s:UpdateBuffersMenu()
"  call Dfunc("s:UpdateBuffersMenu()")
  if has("gui") && has("menu") && has("gui_running") && &go =~ 'm'
   try
    silent emenu Buffers.Refresh\ menu
   catch /^Vim\%((\a\+)\)\=:E/
    let v:errmsg= ""
    silent call s:NetrwBMShow()
   endtry
  endif
"  call Dret("s:UpdateBuffersMenu")
endfun

" ---------------------------------------------------------------------
" s:UseBufWinVars: (used by NetrwBrowse() and LocalBrowseCheck() {{{2
"              Matching function to BufferWinVars()
fun! s:UseBufWinVars()
"  call Dfunc("s:UseBufWinVars()")
  if exists("b:netrw_liststyle")       && !exists("w:netrw_liststyle")      |let w:netrw_liststyle       = b:netrw_liststyle      |endif
  if exists("b:netrw_bannercnt")       && !exists("w:netrw_bannercnt")      |let w:netrw_bannercnt       = b:netrw_bannercnt      |endif
  if exists("b:netrw_method")          && !exists("w:netrw_method")         |let w:netrw_method          = b:netrw_method         |endif
  if exists("b:netrw_prvdir")          && !exists("w:netrw_prvdir")         |let w:netrw_prvdir          = b:netrw_prvdir         |endif
  if exists("b:netrw_explore_indx")    && !exists("w:netrw_explore_indx")   |let w:netrw_explore_indx    = b:netrw_explore_indx   |endif
  if exists("b:netrw_explore_listlen") && !exists("w:netrw_explore_listlen")|let w:netrw_explore_listlen = b:netrw_explore_listlen|endif
  if exists("b:netrw_explore_mtchcnt") && !exists("w:netrw_explore_mtchcnt")|let w:netrw_explore_mtchcnt = b:netrw_explore_mtchcnt|endif
  if exists("b:netrw_explore_bufnr")   && !exists("w:netrw_explore_bufnr")  |let w:netrw_explore_bufnr   = b:netrw_explore_bufnr  |endif
  if exists("b:netrw_explore_line")    && !exists("w:netrw_explore_line")   |let w:netrw_explore_line    = b:netrw_explore_line   |endif
  if exists("b:netrw_explore_list")    && !exists("w:netrw_explore_list")   |let w:netrw_explore_list    = b:netrw_explore_list   |endif
"  call Dret("s:UseBufWinVars")
endfun

" ---------------------------------------------------------------------
" s:WinPath: {{{2
fun! s:WinPath(path)
"  call Dfunc("s:WinPath(path<".a:path.">)")
  if !g:netrw_cygwin && (has("win32") || has("win95") || has("win64") || has("win16"))
   " remove trailing slash (Win95)
   let path = substitute(a:path, '\(\\\|/\)$', '', 'g')
   " remove escaped spaces
   let path = substitute(path, '\ ', ' ', 'g')
   " convert slashes to backslashes
   let path = substitute(path, '/', '\', 'g')
  else
   let path= a:path
  endif
"  call Dret("s:WinPath <".path.">")
  return path
endfun

" ---------------------------------------------------------------------
" Settings Restoration: {{{2
let &cpo= s:keepcpo
unlet s:keepcpo

" ------------------------------------------------------------------------
" Modelines: {{{1
" vim:ts=8 fdm=marker


--- NEW FILE netrwFileHandlers.vim ---
" netrwFileHandlers: contains various extension-based file handlers for
"                    netrw's browsers' x command ("eXecute launcher")
" Author:	Charles E. Campbell, Jr.
" Date:		Sep 30, 2008
" Version:	10
" Copyright:    Copyright (C) 1999-2008 Charles E. Campbell, Jr. {{{1
"               Permission is hereby granted to use and distribute this code,
"               with or without modifications, provided that this copyright
"               notice is copied with it. Like anything else that's free,
"               netrwFileHandlers.vim is provided *as is* and comes with no
"               warranty of any kind, either expressed or implied. In no
"               event will the copyright holder be liable for any damages
"               resulting from the use of this software.
"
" Rom 6:23 (WEB) For the wages of sin is death, but the free gift of God {{{1
"                is eternal life in Christ Jesus our Lord.

" ---------------------------------------------------------------------
" Load Once: {{{1
if exists("g:loaded_netrwFileHandlers") || &cp
 finish
endif
let g:loaded_netrwFileHandlers= "v10"
if v:version < 702
 echohl WarningMsg
 echo "***warning*** this version of netrwFileHandlers needs vim 7.2"
 echohl Normal
 finish
endif
let s:keepcpo= &cpo
set cpo&vim

" ---------------------------------------------------------------------
" netrwFileHandlers#Invoke: {{{1
fun! netrwFileHandlers#Invoke(exten,fname)
"  call Dfunc("netrwFileHandlers#Invoke(exten<".a:exten."> fname<".a:fname.">)")
  let fname= a:fname
  " list of supported special characters.  Consider rcs,v --- that can be
  " supported with a NFH_rcsCOMMAv() handler
  if a:fname =~ '[@:,$!=\-+%?;~]'
   let specials= {
\   '@' : 'AT',
\   ':' : 'COLON',
\   ',' : 'COMMA',
\   '$' : 'DOLLAR',
\   '!' : 'EXCLAMATION',
\   '=' : 'EQUAL',
\   '-' : 'MINUS',
\   '+' : 'PLUS',
\   '%' : 'PERCENT',
\   '?' : 'QUESTION',
\   ';' : 'SEMICOLON',
\   '~' : 'TILDE'}
   let fname= substitute(a:fname,'[@:,$!=\-+%?;~]','\=specials[submatch(0)]','ge')
"   call Decho('fname<'.fname.'> done with dictionary')
  endif

  if a:exten != "" && exists("*NFH_".a:exten)
   " support user NFH_*() functions
"   call Decho("let ret= netrwFileHandlers#NFH_".a:exten.'("'.fname.'")')
   exe "let ret= NFH_".a:exten.'("'.fname.'")'
  elseif a:exten != "" && exists("*s:NFH_".a:exten)
   " use builtin-NFH_*() functions
"   call Decho("let ret= netrwFileHandlers#NFH_".a:exten.'("'.fname.'")')
   exe "let ret= s:NFH_".a:exten.'("'.fname.'")'
  endif
  
"  call Dret("netrwFileHandlers#Invoke 0 : ret=".ret)
  return 0
endfun

" ---------------------------------------------------------------------
" s:NFH_html: handles html when the user hits "x" when the {{{1
"                        cursor is atop a *.html file
fun! s:NFH_html(pagefile)
"  call Dfunc("s:NFH_html(".a:pagefile.")")

  let page= substitute(a:pagefile,'^','file://','')

  if executable("mozilla")
"   call Decho("executing !mozilla ".page)
   exe "!mozilla ".shellescape(page,1)
  elseif executable("netscape")
"   call Decho("executing !netscape ".page)
   exe "!netscape ".shellescape(page,1)
  else
"   call Dret("s:NFH_html 0")
   return 0
  endif

"  call Dret("s:NFH_html 1")
  return 1
endfun

" ---------------------------------------------------------------------
" s:NFH_htm: handles html when the user hits "x" when the {{{1
"                        cursor is atop a *.htm file
fun! s:NFH_htm(pagefile)
"  call Dfunc("s:NFH_htm(".a:pagefile.")")

  let page= substitute(a:pagefile,'^','file://','')

  if executable("mozilla")
"   call Decho("executing !mozilla ".page)
   exe "!mozilla ".shellescape(page,1)
  elseif executable("netscape")
"   call Decho("executing !netscape ".page)
   exe "!netscape ".shellescape(page,1)
  else
"   call Dret("s:NFH_htm 0")
   return 0
  endif

"  call Dret("s:NFH_htm 1")
  return 1
endfun

" ---------------------------------------------------------------------
" s:NFH_jpg: {{{1
fun! s:NFH_jpg(jpgfile)
"  call Dfunc("s:NFH_jpg(jpgfile<".a:jpgfile.">)")

  if executable("gimp")
   exe "silent! !gimp -s ".shellescape(a:jpgfile,1)
  elseif executable(expand("$SystemRoot")."/SYSTEM32/MSPAINT.EXE")
"   call Decho("silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT ".escape(a:jpgfile," []|'"))
   exe "!".expand("$SystemRoot")."/SYSTEM32/MSPAINT ".shellescape(a:jpgfile,1)
  else
"   call Dret("s:NFH_jpg 0")
   return 0
  endif

"  call Dret("s:NFH_jpg 1")
  return 1
endfun

" ---------------------------------------------------------------------
" s:NFH_gif: {{{1
fun! s:NFH_gif(giffile)
"  call Dfunc("s:NFH_gif(giffile<".a:giffile.">)")

  if executable("gimp")
   exe "silent! !gimp -s ".shellescape(a:giffile,1)
  elseif executable(expand("$SystemRoot")."/SYSTEM32/MSPAINT.EXE")
   exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT ".shellescape(a:giffile,1)
  else
"   call Dret("s:NFH_gif 0")
   return 0
  endif

"  call Dret("s:NFH_gif 1")
  return 1
endfun

" ---------------------------------------------------------------------
" s:NFH_png: {{{1
fun! s:NFH_png(pngfile)
"  call Dfunc("s:NFH_png(pngfile<".a:pngfile.">)")

  if executable("gimp")
   exe "silent! !gimp -s ".shellescape(a:pngfile,1)
  elseif executable(expand("$SystemRoot")."/SYSTEM32/MSPAINT.EXE")
   exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT ".shellescape(a:pngfile,1)
  else
"   call Dret("s:NFH_png 0")
   return 0
  endif

"  call Dret("s:NFH_png 1")
  return 1
endfun

" ---------------------------------------------------------------------
" s:NFH_pnm: {{{1
fun! s:NFH_pnm(pnmfile)
"  call Dfunc("s:NFH_pnm(pnmfile<".a:pnmfile.">)")

  if executable("gimp")
   exe "silent! !gimp -s ".shellescape(a:pnmfile,1)
  elseif executable(expand("$SystemRoot")."/SYSTEM32/MSPAINT.EXE")
   exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT ".shellescape(a:pnmfile,1)
  else
"   call Dret("s:NFH_pnm 0")
   return 0
  endif

"  call Dret("s:NFH_pnm 1")
  return 1
endfun

" ---------------------------------------------------------------------
" s:NFH_bmp: visualize bmp files {{{1
fun! s:NFH_bmp(bmpfile)
"  call Dfunc("s:NFH_bmp(bmpfile<".a:bmpfile.">)")

  if executable("gimp")
   exe "silent! !gimp -s ".a:bmpfile
  elseif executable(expand("$SystemRoot")."/SYSTEM32/MSPAINT.EXE")
   exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT ".shellescape(a:bmpfile,1)
  else
"   call Dret("s:NFH_bmp 0")
   return 0
  endif

"  call Dret("s:NFH_bmp 1")
  return 1
endfun

" ---------------------------------------------------------------------
" s:NFH_pdf: visualize pdf files {{{1
fun! s:NFH_pdf(pdf)
"  call Dfunc("s:NFH_pdf(pdf<".a:pdf.">)")
  if executable("gs")
   exe 'silent! !gs '.shellescape(a:pdf,1)
  elseif executable("pdftotext")
   exe 'silent! pdftotext -nopgbrk '.shellescape(a:pdf,1)
  else
"  call Dret("s:NFH_pdf 0")
   return 0
  endif

"  call Dret("s:NFH_pdf 1")
  return 1
endfun

" ---------------------------------------------------------------------
" s:NFH_doc: visualize doc files {{{1
fun! s:NFH_doc(doc)
"  call Dfunc("s:NFH_doc(doc<".a:doc.">)")

  if executable("oowriter")
   exe 'silent! !oowriter '.shellescape(a:doc,1)
   redraw!
  else
"  call Dret("s:NFH_doc 0")
   return 0
  endif

"  call Dret("s:NFH_doc 1")
  return 1
endfun

" ---------------------------------------------------------------------
" s:NFH_sxw: visualize sxw files {{{1
fun! s:NFH_sxw(sxw)
"  call Dfunc("s:NFH_sxw(sxw<".a:sxw.">)")

  if executable("oowriter")
   exe 'silent! !oowriter '.shellescape(a:sxw,1)
   redraw!
  else
"   call Dret("s:NFH_sxw 0")
   return 0
  endif

"  call Dret("s:NFH_sxw 1")
  return 1
endfun

" ---------------------------------------------------------------------
" s:NFH_xls: visualize xls files {{{1
fun! s:NFH_xls(xls)
"  call Dfunc("s:NFH_xls(xls<".a:xls.">)")

  if executable("oocalc")
   exe 'silent! !oocalc '.shellescape(a:xls,1)
   redraw!
  else
"  call Dret("s:NFH_xls 0")
   return 0
  endif

"  call Dret("s:NFH_xls 1")
  return 1
endfun

" ---------------------------------------------------------------------
" s:NFH_ps: handles PostScript files {{{1
fun! s:NFH_ps(ps)
"  call Dfunc("s:NFH_ps(ps<".a:ps.">)")
  if executable("gs")
"   call Decho("exe silent! !gs ".a:ps)
   exe "silent! !gs ".shellescape(a:ps,1)
   redraw!
  elseif executable("ghostscript")
"   call Decho("exe silent! !ghostscript ".a:ps)
   exe "silent! !ghostscript ".shellescape(a:ps,1)
   redraw!
  elseif executable("gswin32")
"   call Decho("exe silent! !gswin32 ".shellescape(a:ps,1))
   exe "silent! !gswin32 ".shellescape(a:ps,1)
   redraw!
  else
"   call Dret("s:NFH_ps 0")
   return 0
  endif

"  call Dret("s:NFH_ps 1")
  return 1
endfun

" ---------------------------------------------------------------------
" s:NFH_eps: handles encapsulated PostScript files {{{1
fun! s:NFH_eps(eps)
"  call Dfunc("s:NFH_eps()")
  if executable("gs")
   exe "silent! !gs ".shellescape(a:eps,1)
   redraw!
  elseif executable("ghostscript")
   exe "silent! !ghostscript ".shellescape(a:eps,1)
   redraw!
  elseif executable("ghostscript")
   exe "silent! !ghostscript ".shellescape(a:eps,1)
   redraw!
  elseif executable("gswin32")
   exe "silent! !gswin32 ".shellescape(a:eps,1)
   redraw!
  else
"   call Dret("s:NFH_eps 0")
   return 0
  endif
"  call Dret("s:NFH_eps 0")
  return 1
endfun

" ---------------------------------------------------------------------
" s:NFH_fig: handles xfig files {{{1
fun! s:NFH_fig(fig)
"  call Dfunc("s:NFH_fig()")
  if executable("xfig")
   exe "silent! !xfig ".a:fig
   redraw!
  else
"   call Dret("s:NFH_fig 0")
   return 0
  endif

"  call Dret("s:NFH_fig 1")
  return 1
endfun

" ---------------------------------------------------------------------
" s:NFH_obj: handles tgif's obj files {{{1
fun! s:NFH_obj(obj)
"  call Dfunc("s:NFH_obj()")
  if has("unix") && executable("tgif")
   exe "silent! !tgif ".a:obj
   redraw!
  else
"   call Dret("s:NFH_obj 0")
   return 0
  endif

"  call Dret("s:NFH_obj 1")
  return 1
endfun

let &cpo= s:keepcpo
" ---------------------------------------------------------------------
"  Modelines: {{{1
"  vim: fdm=marker


--- NEW FILE netrwPlugin.vim ---
" netrwPlugin.vim: Handles file transfer and remote directory listing across a network
"            PLUGIN SECTION
" Date:		Aug 10, 2008
" Maintainer:	Charles E Campbell, Jr <NdrOchip at ScampbellPfamily.AbizM-NOSPAM>
" GetLatestVimScripts: 1075 1 :AutoInstall: netrw.vim
" Copyright:    Copyright (C) 1999-2008 Charles E. Campbell, Jr. {{{1
"               Permission is hereby granted to use and distribute this code,
"               with or without modifications, provided that this copyright
"               notice is copied with it. Like anything else that's free,
"               netrw.vim, netrwPlugin.vim, and netrwSettings.vim are provided
"               *as is* and comes with no warranty of any kind, either
"               expressed or implied. By using this plugin, you agree that
"               in no event will the copyright holder be liable for any damages
"               resulting from the use of this software.
"
"  But be doers of the Word, and not only hearers, deluding your own selves {{{1
"  (James 1:22 RSV)
" =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
" Load Once: {{{1
if &cp || exists("g:loaded_netrwPlugin")
 finish
endif
let g:loaded_netrwPlugin = "v134"
if v:version < 702
 echohl WarningMsg | echo "***netrw*** you need vim version 7.2 for this version of netrw" | echohl None
 finish
endif
let s:keepcpo = &cpo
set cpo&vim

" ---------------------------------------------------------------------
" Public Interface: {{{1

" Local Browsing: {{{2
augroup FileExplorer
 au!
 au BufEnter * silent! call s:LocalBrowse(expand("<amatch>"))
 if has("win32") || has("win95") || has("win64") || has("win16")
  au BufEnter .* silent! call s:LocalBrowse(expand("<amatch>"))
 endif
augroup END

" Network Browsing Reading Writing: {{{2
augroup Network
 au!
 if has("win32") || has("win95") || has("win64") || has("win16")
  au BufReadCmd  file://*		exe "silent doau BufReadPre ".fnameescape(netrw#RFC2396(expand("<amatch>")))|exe 'e '.fnameescape(substitute(netrw#RFC2396(expand("<amatch>")),'file://\(.*\)','\1',""))|exe "bwipe ".fnameescape(expand("<amatch>"))|exe "silent doau BufReadPost ".fnameescape(netrw#RFC2396(expand("<amatch>")))
 else
  au BufReadCmd  file://*		exe "silent doau BufReadPre ".fnameescape(netrw#RFC2396(expand("<amatch>")))|exe 'e '.fnameescape(substitute(netrw#RFC2396(expand("<amatch>")),'file://\(.*\)','\1',""))|exe "bwipe ".fnameescape(expand("<amatch>"))|exe "silent doau BufReadPost ".fnameescape(netrw#RFC2396(expand("<amatch>")))
  au BufReadCmd  file://localhost/*	exe "silent doau BufReadPre ".fnameescape(netrw#RFC2396(expand("<amatch>")))|exe 'e '.fnameescape(substitute(netrw#RFC2396(expand("<amatch>")),'file://localhost/\(.*\)','\1',""))|exe "bwipe ".fnameescape(substitute(expand("<amatch>"),'file://\(\k\+@\)\=','',''))|exe "silent doau BufReadPost ".fnameescape(netrw#RFC2396(expand("<amatch>")))
 endif
 au BufReadCmd   ftp://*,rcp://*,scp://*,http://*,dav://*,davs://*,rsync://*,sftp://*	exe "silent doau BufReadPre ".fnameescape(expand("<amatch>"))|exe '2Nread '.fnameescape(expand("<amatch>"))|exe "silent doau BufReadPost ".fnameescape(expand("<amatch>"))
 au FileReadCmd  ftp://*,rcp://*,scp://*,http://*,dav://*,davs://*,rsync://*,sftp://*	exe "silent doau FileReadPre ".fnameescape(expand("<amatch>"))|exe 'Nread '.fnameescape(expand("<amatch>"))|exe "silent doau FileReadPost ".fnameescape(expand("<amatch>"))
 au BufWriteCmd  ftp://*,rcp://*,scp://*,dav://*,davs://*,rsync://*,sftp://*		exe "silent doau BufWritePre ".fnameescape(expand("<amatch>"))|exe 'Nwrite '.fnameescape(expand("<amatch>"))|exe "silent doau BufWritePost ".fnameescape(expand("<amatch>"))
 au FileWriteCmd ftp://*,rcp://*,scp://*,dav://*,davs://*,rsync://*,sftp://*		exe "silent doau FileWritePre ".fnameescape(expand("<amatch>"))|exe "'[,']".'Nwrite '.fnameescape(expand("<amatch>"))|exe "silent doau FileWritePost ".fnameescape(expand("<amatch>"))
 try
  au SourceCmd   ftp://*,rcp://*,scp://*,http://*,dav://*,davs://*,rsync://*,sftp://*	exe 'Nsource '.fnameescape(expand("<amatch>"))
 catch /^Vim\%((\a\+)\)\=:E216/
  au SourcePre   ftp://*,rcp://*,scp://*,http://*,dav://*,davs://*,rsync://*,sftp://*	exe 'Nsource '.fnameescape(expand("<amatch>"))
 endtry
augroup END

" Commands: :Nread, :Nwrite, :NetUserPass {{{2
com! -count=1 -nargs=*	Nread		call netrw#NetrwSavePosn()<bar>call netrw#NetRead(<count>,<f-args>)<bar>call netrw#NetrwRestorePosn()
com! -range=% -nargs=*	Nwrite		call netrw#NetrwSavePosn()<bar><line1>,<line2>call netrw#NetWrite(<f-args>)<bar>call netrw#NetrwRestorePosn()
com! -nargs=*		NetUserPass	call NetUserPass(<f-args>)
com! -nargs=*	        Nsource		call netrw#NetrwSavePosn()<bar>call netrw#NetSource(<f-args>)<bar>call netrw#NetrwRestorePosn()

" Commands: :Explore, :Sexplore, Hexplore, Vexplore {{{2
com! -nargs=* -bar -bang -count=0 -complete=dir	Explore		call netrw#Explore(<count>,0,0+<bang>0,<q-args>)
com! -nargs=* -bar -bang -count=0 -complete=dir	Sexplore	call netrw#Explore(<count>,1,0+<bang>0,<q-args>)
com! -nargs=* -bar -bang -count=0 -complete=dir	Hexplore	call netrw#Explore(<count>,1,2+<bang>0,<q-args>)
com! -nargs=* -bar -bang -count=0 -complete=dir	Vexplore	call netrw#Explore(<count>,1,4+<bang>0,<q-args>)
com! -nargs=* -bar       -count=0 -complete=dir	Texplore	call netrw#Explore(<count>,0,6        ,<q-args>)
com! -nargs=* -bar -bang			Nexplore	call netrw#Explore(-1,0,0,<q-args>)
com! -nargs=* -bar -bang			Pexplore	call netrw#Explore(-2,0,0,<q-args>)

" Commands: NetrwSettings {{{2
com! -nargs=0	NetrwSettings	call netrwSettings#NetrwSettings()
com! -bang	NetrwClean	call netrw#NetrwClean(<bang>0)

" Maps:
if !exists("g:netrw_nogx") && maparg('g','n') == ""
 if !hasmapto('<Plug>NetrwBrowseX')
  nmap <unique> gx <Plug>NetrwBrowseX
 endif
 nno <silent> <Plug>NetrwBrowseX :call netrw#NetrwBrowseX(expand("<cWORD>"),0)<cr>
endif

" ---------------------------------------------------------------------
" LocalBrowse: {{{2
fun! s:LocalBrowse(dirname)
  " unfortunate interaction -- debugging calls can't be used here;
  " the BufEnter event causes triggering when attempts to write to
  " the DBG buffer are made.
"  echomsg "dirname<".a:dirname.">"
  if has("amiga")
   " The check against '' is made for the Amiga, where the empty
   " string is the current directory and not checking would break
   " things such as the help command.
   if a:dirname != '' && isdirectory(a:dirname)
    silent! call netrw#LocalBrowseCheck(a:dirname)
   endif
  elseif isdirectory(a:dirname)
"   echomsg "dirname<".dirname."> isdir"
   silent! call netrw#LocalBrowseCheck(a:dirname)
  endif
  " not a directory, ignore it
endfun

" ---------------------------------------------------------------------
" NetrwStatusLine: {{{1
fun! NetrwStatusLine()
"  let g:stlmsg= "Xbufnr=".w:netrw_explore_bufnr." bufnr=".bufnr("%")." Xline#".w:netrw_explore_line." line#".line(".")
  if !exists("w:netrw_explore_bufnr") || w:netrw_explore_bufnr != bufnr("%") || !exists("w:netrw_explore_line") || w:netrw_explore_line != line(".") || !exists("w:netrw_explore_list")
   let &stl= s:netrw_explore_stl
   if exists("w:netrw_explore_bufnr")|unlet w:netrw_explore_bufnr|endif
   if exists("w:netrw_explore_line")|unlet w:netrw_explore_line|endif
   return ""
  else
   return "Match ".w:netrw_explore_mtchcnt." of ".w:netrw_explore_listlen
  endif
endfun

" ------------------------------------------------------------------------
" NetUserPass: set username and password for subsequent ftp transfer {{{1
"   Usage:  :call NetUserPass()			-- will prompt for userid and password
"	    :call NetUserPass("uid")		-- will prompt for password
"	    :call NetUserPass("uid","password") -- sets global userid and password
fun! NetUserPass(...)

 " get/set userid
 if a:0 == 0
"  call Dfunc("NetUserPass(a:0<".a:0.">)")
  if !exists("g:netrw_uid") || g:netrw_uid == ""
   " via prompt
   let g:netrw_uid= input('Enter username: ')
  endif
 else	" from command line
"  call Dfunc("NetUserPass(a:1<".a:1.">) {")
  let g:netrw_uid= a:1
 endif

 " get password
 if a:0 <= 1 " via prompt
"  call Decho("a:0=".a:0." case <=1:")
  let g:netrw_passwd= inputsecret("Enter Password: ")
 else " from command line
"  call Decho("a:0=".a:0." case >1: a:2<".a:2.">")
  let g:netrw_passwd=a:2
 endif
"  call Dret("NetUserPass")
endfun

" ------------------------------------------------------------------------
" Modelines And Restoration: {{{1
let &cpo= s:keepcpo
unlet s:keepcpo
" vim:ts=8 fdm=marker


--- NEW FILE netrwSettings.vim ---
" netrwSettings.vim: makes netrw settings simpler
" Date:		Sep 03, 2008
" Maintainer:	Charles E Campbell, Jr <drchipNOSPAM at campbellfamily dot biz>
" Version:	13
" Copyright:    Copyright (C) 1999-2007 Charles E. Campbell, Jr. {{{1
"               Permission is hereby granted to use and distribute this code,
"               with or without modifications, provided that this copyright
"               notice is copied with it. Like anything else that's free,
"               netrwSettings.vim is provided *as is* and comes with no
"               warranty of any kind, either expressed or implied. By using
"               this plugin, you agree that in no event will the copyright
"               holder be liable for any damages resulting from the use
"               of this software.
"
" Mat 4:23 (WEB) Jesus went about in all Galilee, teaching in their {{{1
"                synagogues, preaching the gospel of the kingdom, and healing
"                every disease and every sickness among the people.
" Load Once: {{{1
if exists("g:loaded_netrwSettings") || &cp
  finish
endif
let g:loaded_netrwSettings = "v13"
if v:version < 700
 echohl WarningMsg
 echo "***warning*** this version of netrwSettings needs vim 7.0"
 echohl Normal
 finish
endif

" ---------------------------------------------------------------------
" NetrwSettings: {{{1
fun! netrwSettings#NetrwSettings()
  " this call is here largely just to insure that netrw has been loaded
  call netrw#NetrwSavePosn()
  if !exists("g:loaded_netrw")
   echohl WarningMsg | echomsg "***sorry*** netrw needs to be loaded prior to using NetrwSettings" | echohl None
   return
  endif

  above wincmd s
  enew
  setlocal noswapfile bh=wipe
  set ft=vim
  file Netrw\ Settings

  " these variables have the following default effects when they don't
  " exist (ie. have not been set by the user in his/her .vimrc)
  if !exists("g:netrw_liststyle")
   let g:netrw_liststyle= 0
   let g:netrw_list_cmd= "ssh HOSTNAME ls -FLa"
  endif
  if !exists("g:netrw_silent")
   let g:netrw_silent= 0
  endif
  if !exists("g:netrw_use_nt_rcp")
   let g:netrw_use_nt_rcp= 0
  endif
  if !exists("g:netrw_ftp")
   let g:netrw_ftp= 0
  endif
  if !exists("g:netrw_ignorenetrc")
   let g:netrw_ignorenetrc= 0
  endif

  put ='+ ---------------------------------------------'
  put ='+  NetrwSettings:  by Charles E. Campbell, Jr.'
  put ='+ Press <F1> with cursor atop any line for help'
  put ='+ ---------------------------------------------'
  let s:netrw_settings_stop= line(".")

  put =''
  put ='+ Netrw Protocol Commands'
  put = 'let g:netrw_dav_cmd           = '.g:netrw_dav_cmd
  put = 'let g:netrw_fetch_cmd         = '.g:netrw_fetch_cmd
  put = 'let g:netrw_ftp_cmd           = '.g:netrw_ftp_cmd
  put = 'let g:netrw_http_cmd          = '.g:netrw_http_cmd
  put = 'let g:netrw_rcp_cmd           = '.g:netrw_rcp_cmd
  put = 'let g:netrw_rsync_cmd         = '.g:netrw_rsync_cmd
  put = 'let g:netrw_scp_cmd           = '.g:netrw_scp_cmd
  put = 'let g:netrw_sftp_cmd          = '.g:netrw_sftp_cmd
  put = 'let g:netrw_ssh_cmd           = '.g:netrw_ssh_cmd
  let s:netrw_protocol_stop= line(".")
  put = ''

  put ='+Netrw Transfer Control'
  put = 'let g:netrw_cygwin            = '.g:netrw_cygwin
  put = 'let g:netrw_ftp               = '.g:netrw_ftp
  put = 'let g:netrw_ftpmode           = '.g:netrw_ftpmode
  put = 'let g:netrw_ignorenetrc       = '.g:netrw_ignorenetrc
  put = 'let g:netrw_sshport           = '.g:netrw_sshport
  put = 'let g:netrw_use_nt_rcp        = '.g:netrw_use_nt_rcp
  put = 'let g:netrw_win95ftp          = '.g:netrw_win95ftp
  let s:netrw_xfer_stop= line(".")
  put =''
  put ='+ Netrw Messages'
  put ='let g:netrw_use_errorwindow    = '.g:netrw_use_errorwindow

  put = ''
  put ='+ Netrw Browser Control'
  put = 'let g:netrw_alto              = '.g:netrw_alto
  put = 'let g:netrw_altv              = '.g:netrw_altv
  put = 'let g:netrw_browse_split      = '.g:netrw_browse_split
  if exists("g:netrw_browsex_viewer")
   put = 'let g:netrw_browsex_viewer    = '.g:netrw_browsex_viewer
  else
   put = 'let g:netrw_browsex_viewer    = (not defined)'
  endif
  put = 'let g:netrw_compress          = '.g:netrw_compress
  put = 'let g:netrw_cursorline        = '.g:netrw_cursorline
  let decompressline= line("$")
  put ='let g:netrw_decompress...'
  put = 'let g:netrw_dirhistmax        = '.g:netrw_dirhistmax
  put = 'let g:netrw_fastbrowse        = '.g:netrw_fastbrowse
  let fnameescline= line("$")
  put = 'let g:netrw_fname_escape...'
  put = 'let g:netrw_ftp_browse_reject = '.g:netrw_ftp_browse_reject
  put = 'let g:netrw_ftp_list_cmd      = '.g:netrw_ftp_list_cmd
  put = 'let g:netrw_ftp_sizelist_cmd  = '.g:netrw_ftp_sizelist_cmd
  put = 'let g:netrw_ftp_timelist_cmd  = '.g:netrw_ftp_timelist_cmd
  let globescline= line("$")
  put ='let g:netrw_glob_escape...'
  put = 'let g:netrw_hide              = '.g:netrw_hide
  put = 'let g:netrw_keepdir           = '.g:netrw_keepdir
  put = 'let g:netrw_list_cmd          = '.g:netrw_list_cmd
  put = 'let g:netrw_list_hide         = '.g:netrw_list_hide
  put = 'let g:netrw_liststyle         = '.g:netrw_liststyle
  put = 'let g:netrw_localcopycmd      = '.g:netrw_localcopycmd
  put = 'let g:netrw_local_mkdir       = '.g:netrw_local_mkdir
  put = 'let g:netrw_localmovecmd      = '.g:netrw_localmovecmd
  put = 'let g:netrw_local_rmdir       = '.g:netrw_local_rmdir
  put = 'let g:netrw_maxfilenamelen    = '.g:netrw_maxfilenamelen
  put = 'let g:netrw_menu              = '.g:netrw_menu
  put = 'let g:netrw_mkdir_cmd         = '.g:netrw_mkdir_cmd
  put = 'let g:netrw_preview           = '.g:netrw_preview
  put = 'let g:netrw_rename_cmd        = '.g:netrw_rename_cmd
  put = 'let g:netrw_retmap            = '.g:netrw_retmap
  put = 'let g:netrw_rm_cmd            = '.g:netrw_rm_cmd
  put = 'let g:netrw_rmdir_cmd         = '.g:netrw_rmdir_cmd
  put = 'let g:netrw_rmf_cmd           = '.g:netrw_rmf_cmd
  put = 'let g:netrw_silent            = '.g:netrw_silent
  put = 'let g:netrw_sort_by           = '.g:netrw_sort_by
  put = 'let g:netrw_sort_direction    = '.g:netrw_sort_direction
  put = 'let g:netrw_sort_options      = '.g:netrw_sort_options
  put = 'let g:netrw_sort_sequence     = '.g:netrw_sort_sequence
  put = 'let g:netrw_special_syntax    = '.g:netrw_special_syntax
  put = 'let g:netrw_ssh_browse_reject = '.g:netrw_ssh_browse_reject
  put = 'let g:netrw_scpport           = '.g:netrw_scpport
  put = 'let g:netrw_sshport           = '.g:netrw_sshport
  put = 'let g:netrw_timefmt           = '.g:netrw_timefmt
  let tmpfileescline= line("$")
  put ='let g:netrw_tmpfile_escape...'
  put = 'let g:netrw_use_noswf         = '.g:netrw_use_noswf
  put = 'let g:netrw_xstrlen           = '.g:netrw_xstrlen
  put = 'let g:netrw_winsize           = '.g:netrw_winsize

  put =''
  put ='+ For help, place cursor on line and press <F1>'

  1d
  silent %s/^+/"/e
  res 99
  silent %s/= \([^0-9].*\)$/= '\1'/e
  silent %s/= $/= ''/e
  1

  call setline(decompressline,"let g:netrw_decompress        = ".substitute(string(g:netrw_decompress),"^'\\(.*\\)'$",'\1',''))
  call setline(fnameescline,  "let g:netrw_fname_escape      = '".escape(g:netrw_fname_escape,"'")."'")
  call setline(globescline,   "let g:netrw_glob_escape       = '".escape(g:netrw_glob_escape,"'")."'")
  call setline(tmpfileescline,"let g:netrw_tmpfile_escape    = '".escape(g:netrw_tmpfile_escape,"'")."'")

  set nomod

  nmap <buffer> <silent> <F1>                       :call NetrwSettingHelp()<cr>
  nnoremap <buffer> <silent> <leftmouse> <leftmouse>:call NetrwSettingHelp()<cr>
  let tmpfile= tempname()
  exe 'au BufWriteCmd	Netrw\ Settings	silent w! '.tmpfile.'|so '.tmpfile.'|call delete("'.tmpfile.'")|set nomod'
endfun

" ---------------------------------------------------------------------
" NetrwSettingHelp: {{{2
fun! NetrwSettingHelp()
"  call Dfunc("NetrwSettingHelp()")
  let curline = getline(".")
  if curline =~ '='
   let varhelp = substitute(curline,'^\s*let ','','e')
   let varhelp = substitute(varhelp,'\s*=.*$','','e')
"   call Decho("trying help ".varhelp)
   try
    exe "he ".varhelp
   catch /^Vim\%((\a\+)\)\=:E149/
   	echo "***sorry*** no help available for <".varhelp.">"
   endtry
  elseif line(".") < s:netrw_settings_stop
   he netrw-settings
  elseif line(".") < s:netrw_protocol_stop
   he netrw-externapp
  elseif line(".") < s:netrw_xfer_stop
   he netrw-variables
  else
   he netrw-browse-var
  endif
"  call Dret("NetrwSettingHelp")
endfun

" ---------------------------------------------------------------------
" Modelines: {{{1
" vim:ts=8 fdm=marker


--- NEW FILE tar.vim ---
" tar.vim: Handles browsing tarfiles
"            AUTOLOAD PORTION
" Date:			Aug 08, 2008
" Version:		23 + modifications by Bram
" Maintainer:	Charles E Campbell, Jr <NdrOchip at ScampbellPfamily.AbizM-NOSPAM>
" License:		Vim License  (see vim's :help license)
"
"	Contains many ideas from Michael Toren's <tar.vim>
"
" Copyright:    Copyright (C) 2005-2008 Charles E. Campbell, Jr. {{{1
"               Permission is hereby granted to use and distribute this code,
"               with or without modifications, provided that this copyright
"               notice is copied with it. Like anything else that's free,
"               tar.vim and tarPlugin.vim are provided *as is* and comes
"               with no warranty of any kind, either expressed or implied.
"               By using this plugin, you agree that in no event will the
"               copyright holder be liable for any damages resulting from
"               the use of this software.

" ---------------------------------------------------------------------
" Load Once: {{{1
let s:keepcpo= &cpo
set cpo&vim
if &cp || exists("g:loaded_tar") || v:version < 700
 finish
endif
let g:loaded_tar= "v23b"
"call Decho("loading autoload/tar.vim")
if v:version < 701 || (v:version == 701 && !has("patch299"))
 echoerr "(autoload/tar.vim) need vim v7.1 with patchlevel 299"
endif

" ---------------------------------------------------------------------
"  Default Settings: {{{1
if !exists("g:tar_browseoptions")
 let g:tar_browseoptions= "Ptf"
endif
if !exists("g:tar_readoptions")
 let g:tar_readoptions= "OPxf"
endif
if !exists("g:tar_cmd")
 let g:tar_cmd= "tar"
endif
if !exists("g:tar_writeoptions")
 let g:tar_writeoptions= "uf"
endif

if !exists("g:netrw_cygwin")
 if has("win32") || has("win95") || has("win64") || has("win16")
  if &shell =~ '\%(\<bash\>\|\<zsh\>\)\%(\.exe\)\=$'
   let g:netrw_cygwin= 1
  else
   let g:netrw_cygwin= 0
  endif
 else
  let g:netrw_cygwin= 0
 endif
endif

" set up shell quoting character
if !exists("g:tar_shq")
 if exists("&shq") && &shq != ""
  let g:tar_shq= &shq
 elseif has("win32") || has("win95") || has("win64") || has("win16")
  if exists("g:netrw_cygwin") && g:netrw_cygwin
   let g:tar_shq= "'"
  else
   let g:tar_shq= '"'
  endif
 else
  let g:tar_shq= "'"
 endif
" call Decho("g:tar_shq<".g:tar_shq.">")
endif

" ----------------
"  Functions: {{{1
" ----------------

" ---------------------------------------------------------------------
" tar#Browse: {{{2
fun! tar#Browse(tarfile)
"  call Dfunc("tar#Browse(tarfile<".a:tarfile.">)")
  let repkeep= &report
  set report=10

  " sanity checks
  if !executable(g:tar_cmd)
   redraw!
   echohl Error | echo '***error*** (tar#Browse) "'.g:tar_cmd.'" not available on your system'
"   call inputsave()|call input("Press <cr> to continue")|call inputrestore()
   let &report= repkeep
"   call Dret("tar#Browse")
   return
  endif
  if !filereadable(a:tarfile)
"   call Decho('a:tarfile<'.a:tarfile.'> not filereadable')
   if a:tarfile !~# '^\a\+://'
    " if its an url, don't complain, let url-handlers such as vim do its thing
    redraw!
    echohl Error | echo "***error*** (tar#Browse) File not readable<".a:tarfile.">" | echohl None
"    call inputsave()|call input("Press <cr> to continue")|call inputrestore()
   endif
   let &report= repkeep
"   call Dret("tar#Browse : file<".a:tarfile."> not readable")
   return
  endif
  if &ma != 1
   set ma
  endif
  let w:tarfile= a:tarfile

  setlocal noswapfile
  setlocal buftype=nofile
  setlocal bufhidden=hide
  setlocal nobuflisted
  setlocal nowrap
  set ft=tar

  " give header
"  call Decho("printing header")
  let lastline= line("$")
  call setline(lastline+1,'" tar.vim version '.g:loaded_tar)
  call setline(lastline+2,'" Browsing tarfile '.a:tarfile)
  call setline(lastline+3,'" Select a file with cursor and press ENTER')
  $put =''
  0d
  $

  let tarfile= a:tarfile
  if has("win32") && executable("cygpath")
   " assuming cygwin
   let tarfile=substitute(system("cygpath -u ".s:Escape(tarfile,0)),'\n$','','e')
  endif
  let curlast= line("$")
  if tarfile =~# '\.\(gz\|tgz\)$'
"   call Decho("1: exe silent r! gzip -d -c -- ".s:Escape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - ")
   exe "silent r! gzip -d -c -- ".s:Escape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - "
  elseif tarfile =~# '\.lrp'
"   call Decho("2: exe silent r! cat -- ".s:Escape(tarfile,1)."|gzip -d -c -|".g:tar_cmd." -".g:tar_browseoptions." - ")
   exe "silent r! cat -- ".s:Escape(tarfile,1)."|gzip -d -c -|".g:tar_cmd." -".g:tar_browseoptions." - "
  elseif tarfile =~# '\.bz2$'
"   call Decho("3: exe silent r! bzip2 -d -c -- ".s:Escape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - ")
   exe "silent r! bzip2 -d -c -- ".s:Escape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - "
  else
   if tarfile =~ '^\s*-'
    " A file name starting with a dash may be taken as an option.  Prepend ./ to avoid that.
    let tarfile = substitute(tarfile, '-', './-', '')
   endif
"   call Decho("4: exe silent r! ".g:tar_cmd." -".g:tar_browseoptions." ".s:Escape(tarfile,1))
   exe "silent r! ".g:tar_cmd." -".g:tar_browseoptions." ".s:Escape(tarfile,1)
  endif
  if v:shell_error != 0
   redraw!
   echohl WarningMsg | echo "***warning*** (tar#Browse) please check your g:tar_browseoptions<".g:tar_browseoptions.">"
"   call inputsave()|call input("Press <cr> to continue")|call inputrestore()
"   call Dret("tar#Browse : a:tarfile<".a:tarfile.">")
   return
  endif
  if line("$") == curlast || ( line("$") == (curlast + 1) && getline("$") =~ '\c\%(warning\|error\|inappropriate\|unrecognized\)')
   redraw!
   echohl WarningMsg | echo "***warning*** (tar#Browse) ".a:tarfile." doesn't appear to be a tar file" | echohl None
"   call inputsave()|call input("Press <cr> to continue")|call inputrestore()
   silent %d
   let eikeep= &ei
   set ei=BufReadCmd,FileReadCmd
   exe "r ".fnameescape(a:tarfile)
   let &ei= eikeep
   1d
"   call Dret("tar#Browse : a:tarfile<".a:tarfile.">")
   return
  endif

  setlocal noma nomod ro
  noremap <silent> <buffer> <cr> :call <SID>TarBrowseSelect()<cr>

  let &report= repkeep
"  call Dret("tar#Browse : w:tarfile<".w:tarfile.">")
endfun

" ---------------------------------------------------------------------
" TarBrowseSelect: {{{2
fun! s:TarBrowseSelect()
"  call Dfunc("TarBrowseSelect() w:tarfile<".w:tarfile."> curfile<".expand("%").">")
  let repkeep= &report
  set report=10
  let fname= getline(".")
"  call Decho("fname<".fname.">")

  if !exists("g:tar_secure") && fname =~ '^\s*-\|\s\+-'
   redraw!
   echohl WarningMsg | echo '***error*** (tar#BrowseSelect) rejecting tarfile member<'.fname.'> because of embedded "-"; See :help tar-options'
"   call Dret('tar#BrowseSelect : rejecting tarfile member<'.fname.'> because of embedded "-"')
   return
  endif

  " sanity check
  if fname =~ '^"'
   let &report= repkeep
"   call Dret("TarBrowseSelect")
   return
  endif

  " about to make a new window, need to use w:tarfile
  let tarfile= w:tarfile
  let curfile= expand("%")
  if has("win32") && executable("cygpath")
   " assuming cygwin
   let tarfile=substitute(system("cygpath -u ".s:Escape(tarfile,0)),'\n$','','e')
  endif

  new
  if !exists("g:tar_nomax") || g:tar_nomax == 0
   wincmd _
  endif
  let s:tblfile_{winnr()}= curfile
  call tar#Read("tarfile:".tarfile.'::'.fname,1)
  filetype detect

  let &report= repkeep
"  call Dret("TarBrowseSelect : s:tblfile_".winnr()."<".s:tblfile_{winnr()}.">")
endfun

" ---------------------------------------------------------------------
" tar#Read: {{{2
fun! tar#Read(fname,mode)
"  call Dfunc("tar#Read(fname<".a:fname.">,mode=".a:mode.")")
  let repkeep= &report
  set report=10
  let tarfile = substitute(a:fname,'tarfile:\(.\{-}\)::.*$','\1','')
  let fname   = substitute(a:fname,'tarfile:.\{-}::\(.*\)$','\1','')
  if has("win32") && executable("cygpath")
   " assuming cygwin
   let tarfile=substitute(system("cygpath -u ".s:Escape(tarfile,0)),'\n$','','e')
  endif
"  call Decho("tarfile<".tarfile.">")
"  call Decho("fname<".fname.">")

  if      fname =~ '\.gz$'  && executable("zcat")
   let decmp= "|zcat"
   let doro = 1
  elseif  fname =~ '\.bz2$' && executable("bzcat")
   let decmp= "|bzcat"
   let doro = 1
  else
   let decmp=""
   let doro = 0
   if fname =~ '\.gz$\|\.bz2$\|\.Z$\|\.zip$'
    setlocal bin
   endif
  endif

  if exists("g:tar_secure")
   let tar_secure= " -- "
  else
   let tar_secure= " "
  endif
  if tarfile =~# '\.\(gz\|tgz\)$'
"   call Decho("5: exe silent r! gzip -d -c -- ".s:Escape(tarfile,1)."| ".g:tar_cmd.' -'.g:tar_readoptions.' - '.tar_secure.s:Escape(fname,1))
   exe "silent r! gzip -d -c -- ".s:Escape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.s:Escape(fname,1).decmp
  elseif tarfile =~# '\.lrp$'
"   call Decho("6: exe silent r! cat ".s:Escape(tarfile,1)." | gzip -d -c - | ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.s:Escape(fname,1).decmp)
   exe "silent r! cat -- ".s:Escape(tarfile,1)." | gzip -d -c - | ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.s:Escape(fname,1).decmp
  elseif tarfile =~# '\.bz2$'
"   call Decho("7: exe silent r! bzip2 -d -c ".s:Escape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.s:Escape(fname,1).decmp)
   exe "silent r! bzip2 -d -c -- ".s:Escape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.s:Escape(fname,1).decmp
  else
   if tarfile =~ '^\s*-'
    " A file name starting with a dash may be taken as an option.  Prepend ./ to avoid that.
    let tarfile = substitute(tarfile, '-', './-', '')
   endif
"   call Decho("8: exe silent r! ".g:tar_cmd." -".g:tar_readoptions." "s:Escape(tarfile,1).tar_secure..s:Escape(fname,1).decmp)
   exe "silent r! ".g:tar_cmd." -".g:tar_readoptions." ".s:Escape(tarfile,1).tar_secure.s:Escape(fname,1).decmp
  endif

  if doro
   " because the reverse process of compressing changed files back into the tarball is not currently supported
   setlocal ro
  endif

  let w:tarfile= a:fname
  exe "file tarfile::".fnameescape(fname)

  " cleanup
  0d
  set nomod

  let &report= repkeep
"  call Dret("tar#Read : w:tarfile<".w:tarfile.">")
endfun

" ---------------------------------------------------------------------
" tar#Write: {{{2
fun! tar#Write(fname)
"  call Dfunc("tar#Write(fname<".a:fname.">) w:tarfile<".w:tarfile."> tblfile_".winnr()."<".s:tblfile_{winnr()}.">")
  let repkeep= &report
  set report=10

  if !exists("g:tar_secure") && a:fname =~ '^\s*-\|\s\+-'
   redraw!
   echohl WarningMsg | echo '***error*** (tar#Write) rejecting tarfile member<'.a:fname.'> because of embedded "-"; See :help tar-options'
"   call Dret('tar#Write : rejecting tarfile member<'.fname.'> because of embedded "-"')
   return
  endif

  " sanity checks
  if !executable(g:tar_cmd)
   redraw!
   echohl Error | echo '***error*** (tar#Browse) "'.g:tar_cmd.'" not available on your system'
"   call inputsave()|call input("Press <cr> to continue")|call inputrestore()
   let &report= repkeep
"   call Dret("tar#Write")
   return
  endif
  if !exists("*mkdir")
   redraw!
   echohl Error | echo "***error*** (tar#Write) sorry, mkdir() doesn't work on your system" | echohl None
"   call inputsave()|call input("Press <cr> to continue")|call inputrestore()
   let &report= repkeep
"   call Dret("tar#Write")
   return
  endif

  let curdir= getcwd()
  let tmpdir= tempname()
"  call Decho("orig tempname<".tmpdir.">")
  if tmpdir =~ '\.'
   let tmpdir= substitute(tmpdir,'\.[^.]*$','','e')
  endif
"  call Decho("tmpdir<".tmpdir.">")
  call mkdir(tmpdir,"p")

  " attempt to change to the indicated directory
  try
   exe "cd ".fnameescape(tmpdir)
  catch /^Vim\%((\a\+)\)\=:E344/
   redraw!
   echohl Error | echo "***error*** (tar#Write) cannot cd to temporary directory" | Echohl None
"   call inputsave()|call input("Press <cr> to continue")|call inputrestore()
   let &report= repkeep
"   call Dret("tar#Write")
   return
  endtry
"  call Decho("current directory now: ".getcwd())

  " place temporary files under .../_ZIPVIM_/
  if isdirectory("_ZIPVIM_")
   call s:Rmdir("_ZIPVIM_")
  endif
  call mkdir("_ZIPVIM_")
  cd _ZIPVIM_
"  call Decho("current directory now: ".getcwd())

  let tarfile = substitute(w:tarfile,'tarfile:\(.\{-}\)::.*$','\1','')
  let fname   = substitute(w:tarfile,'tarfile:.\{-}::\(.*\)$','\1','')

  " handle compressed archives
  if tarfile =~# '\.gz'
   call system("gzip -d -- ".s:Escape(tarfile,0))
   let tarfile = substitute(tarfile,'\.gz','','e')
   let compress= "gzip -- ".s:Escape(tarfile,0)
"   call Decho("compress<".compress.">")
  elseif tarfile =~# '\.tgz'
   call system("gzip -d -- ".s:Escape(tarfile,0))
   let tarfile = substitute(tarfile,'\.tgz','.tar','e')
   let compress= "gzip -- ".s:Escape(tarfile,0)
   let tgz     = 1
"   call Decho("compress<".compress.">")
  elseif tarfile =~# '\.bz2'
   call system("bzip2 -d -- ".s:Escape(tarfile,0))
   let tarfile = substitute(tarfile,'\.bz2','','e')
   let compress= "bzip2 -- ".s:Escape(tarfile,0)
"   call Decho("compress<".compress.">")
  endif
"  call Decho("tarfile<".tarfile.">")

  if v:shell_error != 0
   redraw!
   echohl Error | echo "***error*** (tar#Write) sorry, unable to update ".tarfile." with ".fname | echohl None
"   call inputsave()|call input("Press <cr> to continue")|call inputrestore()
  else

"   call Decho("tarfile<".tarfile."> fname<".fname.">")
 
   if fname =~ '/'
    let dirpath = substitute(fname,'/[^/]\+$','','e')
    if executable("cygpath")
     let dirpath = substitute(system("cygpath ".s:Escape(dirpath, 0)),'\n','','e')
    endif
    call mkdir(dirpath,"p")
   endif
   if tarfile !~ '/'
    let tarfile= curdir.'/'.tarfile
   endif
   if tarfile =~ '^\s*-'
    " A file name starting with a dash may be taken as an option.  Prepend ./ to avoid that.
    let tarfile = substitute(tarfile, '-', './-', '')
   endif
"   call Decho("tarfile<".tarfile."> fname<".fname.">")
 
   if exists("g:tar_secure")
    let tar_secure= " -- "
   else
    let tar_secure= " "
   endif
   exe "w! ".fnameescape(fname)
   if executable("cygpath")
    let tarfile = substitute(system("cygpath ".s:Escape(tarfile,0)),'\n','','e')
   endif
 
   " delete old file from tarfile
"   call Decho("system(".g:tar_cmd." --delete -f ".s:Escape(tarfile,0)." -- ".s:Escape(fname,0).")")
   call system(g:tar_cmd." --delete -f ".s:Escape(tarfile,0).tar_secure.s:Escape(fname,0))
   if v:shell_error != 0
    redraw!
    echohl Error | echo "***error*** (tar#Write) sorry, unable to update ".fnameescape(tarfile)." with ".fnameescape(fname) | echohl None
"    call inputsave()|call input("Press <cr> to continue")|call inputrestore()
   else
 
    " update tarfile with new file 
"    call Decho(g:tar_cmd." -".g:tar_writeoptions." ".s:Escape(tarfile,0).tar_secure.s:Escape(fname,0))
    call system(g:tar_cmd." -".g:tar_writeoptions." ".s:Escape(tarfile,0).tar_secure.s:Escape(fname,0))
    if v:shell_error != 0
     redraw!
     echohl Error | echo "***error*** (tar#Write) sorry, unable to update ".fnameescape(tarfile)." with ".fnameescape(fname) | echohl None
"     call inputsave()|call input("Press <cr> to continue")|call inputrestore()
    elseif exists("compress")
"     call Decho("call system(".compress.")")
     call system(compress)
     if exists("tgz")
"      call Decho("rename(".tarfile.".gz,".substitute(tarfile,'\.tar$','.tgz','e').")")
      call rename(tarfile.".gz",substitute(tarfile,'\.tar$','.tgz','e'))
     endif
    endif
   endif

   " support writing tarfiles across a network
   if s:tblfile_{winnr()} =~ '^\a\+://'
"    call Decho("handle writing <".tarfile."> across network to <".s:tblfile_{winnr()}.">")
    let tblfile= s:tblfile_{winnr()}
    1split|enew
    let binkeep= &binary
    let eikeep = &ei
    set binary ei=all
    exe "e! ".fnameescape(tarfile)
    call netrw#NetWrite(tblfile)
    let &ei     = eikeep
    let &binary = binkeep
    q!
    unlet s:tblfile_{winnr()}
   endif
  endif
  
  " cleanup and restore current directory
  cd ..
  call s:Rmdir("_ZIPVIM_")
  exe "cd ".fnameescape(curdir)
  setlocal nomod

  let &report= repkeep
"  call Dret("tar#Write")
endfun

" ---------------------------------------------------------------------
" Rmdir: {{{2
fun! s:Rmdir(fname)
"  call Dfunc("Rmdir(fname<".a:fname.">)")
  if has("unix")
   call system("/bin/rm -rf -- ".s:Escape(a:fname,0))
  elseif has("win32") || has("win95") || has("win64") || has("win16")
   if &shell =~? "sh$"
    call system("/bin/rm -rf -- ".s:Escape(a:fname,0))
   else
    call system("del /S ".s:Escape(a:fname,0))
   endif
  endif
"  call Dret("Rmdir")
endfun

" ---------------------------------------------------------------------
" s:Escape: {{{2
fun s:Escape(name,isfilt)
  " shellescape() was added by patch 7.0.111
  if exists("*shellescape")
   if a:isfilt
    let qnameq= shellescape(a:name,1)
   else
    let qnameq= shellescape(a:name)
   endif
  else
   let qnameq= g:tar_shq . a:name . g:tar_shq
  endif
  return qnameq
endfun

" ---------------------------------------------------------------------
" Modelines And Restoration: {{{1
let &cpo= s:keepcpo
unlet s:keepcpo
" vim:ts=8 fdm=marker

vim-7.1-lib64.patch:

--- NEW FILE vim-7.1-lib64.patch ---
diff -up vim71/src/auto/configure.lib64 vim71/src/auto/configure
--- vim71/src/auto/configure.lib64	2008-07-23 12:36:17.000000000 +0200
+++ vim71/src/auto/configure	2008-07-23 12:37:04.000000000 +0200
@@ -4291,7 +4291,7 @@ else
 
 	vi_cv_path_python_conf=
 	for path in "${vi_cv_path_python_pfx}" "${vi_cv_path_python_epfx}"; do
-	  for subdir in lib share; do
+	  for subdir in lib64 lib share; do
 	    d="${path}/${subdir}/python${vi_cv_var_python_version}/config"
 	    if test -d "$d" && test -f "$d/config.c"; then
 	      vi_cv_path_python_conf="$d"
diff -up vim71/src/configure.in.lib64 vim71/src/configure.in
--- vim71/src/configure.in.lib64	2008-07-23 12:36:17.000000000 +0200
+++ vim71/src/configure.in	2008-07-23 12:36:17.000000000 +0200
@@ -634,7 +634,7 @@ if test "$enable_pythoninterp" = "yes"; 
       [
 	vi_cv_path_python_conf=
 	for path in "${vi_cv_path_python_pfx}" "${vi_cv_path_python_epfx}"; do
-	  for subdir in lib share; do
+	  for subdir in lib64 lib share; do
 	    d="${path}/${subdir}/python${vi_cv_var_python_version}/config"
 	    if test -d "$d" && test -f "$d/config.c"; then
 	      vi_cv_path_python_conf="$d"

vim-7.2-fstabsyntax.patch:

--- NEW FILE vim-7.2-fstabsyntax.patch ---
diff -up vim72/runtime/syntax/fstab.vim.fstabsyntax vim72/runtime/syntax/fstab.vim
--- vim72/runtime/syntax/fstab.vim.fstabsyntax	2008-01-16 21:52:16.000000000 +0100
+++ vim72/runtime/syntax/fstab.vim	2008-08-14 17:02:08.000000000 +0200
@@ -46,7 +46,7 @@ syn keyword fsMountPointKeyword containe
 " Type
 syn cluster fsTypeCluster contains=fsTypeKeyword,fsTypeUnknown
 syn match fsTypeUnknown /\s\+\zs\w\+/ contained
-syn keyword fsTypeKeyword contained adfs ados affs atfs audiofs auto autofs befs bfs cd9660 cfs cifs coda cramfs devfs devpts e2compr efs ext2 ext2fs ext3 fdesc ffs filecore fuse hfs hpfs iso9660 jffs jffs2 jfs kernfs lfs linprocfs mfs minix msdos ncpfs nfs none ntfs null nwfs overlay ovlfs portal proc procfs ptyfs qnx4 reiserfs romfs shm smbfs sshfs std subfs swap sysfs sysv tcfs tmpfs udf ufs umap umsdos union usbfs userfs vfat vs3fs vxfs wrapfs wvfs xfs zisofs
+syn keyword fsTypeKeyword contained adfs ados affs atfs audiofs auto autofs befs bfs binfmt_misc cd9660 cfs cifs coda cramfs devfs devpts e2compr efs ext2 ext2fs ext3 fdesc ffs filecore fuse hfs hpfs iso9660 jffs jffs2 jfs kernfs lfs linprocfs mfs minix msdos ncpfs nfs none ntfs null nwfs overlay ovlfs portal proc procfs ptyfs qnx4 reiserfs romfs rpc_pipefs shm smbfs sshfs std subfs swap sysfs sysv tcfs tmpfs udf ufs umap umsdos union usbfs userfs vfat vs3fs vxfs wrapfs wvfs xfs zisofs
 
 " Options
 " -------
@@ -58,7 +58,7 @@ syn match fsOptionsString /[a-zA-Z0-9_-]
 syn keyword fsOptionsYesNo yes no
 syn cluster fsOptionsCheckCluster contains=fsOptionsExt2Check,fsOptionsFatCheck
 syn keyword fsOptionsSize 512 1024 2048
-syn keyword fsOptionsGeneral async atime auto bind current defaults dev devgid devmode devmtime devuid dirsync exec force fstab kudzu loop mand move noatime noauto noclusterr noclusterw nodev nodevmtime nodiratime noexec nomand nosuid nosymfollow nouser owner rbind rdonly remount ro rq rw suid suiddir supermount sw sync union update user users xx
+syn keyword fsOptionsGeneral async atime auto bind current defaults dev devgid devmode devmtime devuid dirsync exec force fstab kudzu loop managed mand move noatime noauto noclusterr noclusterw nodev nodevmtime nodiratime noexec nomand nosuid nosymfollow nouser owner pamconsole rbind rdonly remount ro rq rw suid suiddir supermount sw sync union update user[s] xx
 syn match fsOptionsGeneral /_netdev/
 
 " Options: adfs


--- NEW FILE zip.vim ---
" zip.vim: Handles browsing zipfiles
"            AUTOLOAD PORTION
" Date:		Jul 30, 2008
" Version:	22
" Maintainer:	Charles E Campbell, Jr <NdrOchip at ScampbellPfamily.AbizM-NOSPAM>
" License:	Vim License  (see vim's :help license)
" Copyright:    Copyright (C) 2005-2008 Charles E. Campbell, Jr. {{{1
"               Permission is hereby granted to use and distribute this code,
"               with or without modifications, provided that this copyright
"               notice is copied with it. Like anything else that's free,
"               zip.vim and zipPlugin.vim are provided *as is* and comes with
"               no warranty of any kind, either expressed or implied. By using
"               this plugin, you agree that in no event will the copyright
"               holder be liable for any damages resulting from the use
"               of this software.

" ---------------------------------------------------------------------
" Load Once: {{{1
let s:keepcpo= &cpo
set cpo&vim
if &cp || exists("g:loaded_zip") || v:version < 700
 finish
endif

let g:loaded_zip     = "v22"
let s:zipfile_escape = ' ?&;\'
let s:ERROR          = 2
let s:WARNING        = 1
let s:NOTE           = 0

" ---------------------------------------------------------------------
"  Global Values: {{{1
if !exists("g:zip_shq")
 if &shq != ""
  let g:zip_shq= &shq
 elseif has("unix")
  let g:zip_shq= "'"
 else
  let g:zip_shq= '"'
 endif
endif
if !exists("g:zip_zipcmd")
 let g:zip_zipcmd= "zip"
endif
if !exists("g:zip_unzipcmd")
 let g:zip_unzipcmd= "unzip"
endif

" ----------------
"  Functions: {{{1
" ----------------

" ---------------------------------------------------------------------
" zip#Browse: {{{2
fun! zip#Browse(zipfile)
"  call Dfunc("zip#Browse(zipfile<".a:zipfile.">)")
  let repkeep= &report
  set report=10

  " sanity checks
  if !exists("*fnameescape")
   if &verbose > 1
    echoerr "the zip plugin is not available (your vim doens't support fnameescape())"
   endif
   return
  endif
  if !executable(g:zip_unzipcmd)
   redraw!
   echohl Error | echo "***error*** (zip#Browse) unzip not available on your system"
"   call inputsave()|call input("Press <cr> to continue")|call inputrestore()
   let &report= repkeep
"   call Dret("zip#Browse")
   return
  endif
  if !filereadable(a:zipfile)
   if a:zipfile !~# '^\a\+://'
    " if its an url, don't complain, let url-handlers such as vim do its thing
    redraw!
    echohl Error | echo "***error*** (zip#Browse) File not readable<".a:zipfile.">" | echohl None
"    call inputsave()|call input("Press <cr> to continue")|call inputrestore()
   endif
   let &report= repkeep
"   call Dret("zip#Browse : file<".a:zipfile."> not readable")
   return
  endif
"  call Decho("passed sanity checks")
  if &ma != 1
   set ma
  endif
  let b:zipfile= a:zipfile

  setlocal noswapfile
  setlocal buftype=nofile
  setlocal bufhidden=hide
  setlocal nobuflisted
  setlocal nowrap
  set ft=tar

  " give header
  let lastline= line("$")
  call setline(lastline+1,'" zip.vim version '.g:loaded_zip)
  call setline(lastline+2,'" Browsing zipfile '.a:zipfile)
  call setline(lastline+3,'" Select a file with cursor and press ENTER')
  $put =''
  0d
  $

"  call Decho("exe silent r! ".g:zip_unzipcmd." -l -- ".s:Escape(a:zipfile,1))
  exe "silent r! ".g:zip_unzipcmd." -l -- ".s:Escape(a:zipfile,1)
  if v:shell_error != 0
   redraw!
   echohl WarningMsg | echo "***warning*** (zip#Browse) ".fnameescape(a:zipfile)." is not a zip file" | echohl None
"   call inputsave()|call input("Press <cr> to continue")|call inputrestore()
   silent %d
   let eikeep= &ei
   set ei=BufReadCmd,FileReadCmd
   exe "r ".fnameescape(a:zipfile)
   let &ei= eikeep
   1d
"   call Dret("zip#Browse")
   return
  endif
"  call Decho("line 6: ".getline(6))
  let namecol= stridx(getline(6),'Name') + 1
"  call Decho("namecol=".namecol)
  4,$g/^\s*----/d
  4,$g/^\s*\a/d
  $d
  if namecol > 0
   exe 'silent 4,$s/^.*\%'.namecol.'c//'
  endif

  setlocal noma nomod ro
  noremap <silent> <buffer> <cr> :call <SID>ZipBrowseSelect()<cr>

  let &report= repkeep
"  call Dret("zip#Browse")
endfun

" ---------------------------------------------------------------------
" ZipBrowseSelect: {{{2
fun! s:ZipBrowseSelect()
"  call Dfunc("ZipBrowseSelect() zipfile<".b:zipfile."> curfile<".expand("%").">")
  let repkeep= &report
  set report=10
  let fname= getline(".")

  " sanity check
  if fname =~ '^"'
   let &report= repkeep
"   call Dret("ZipBrowseSelect")
   return
  endif
  if fname =~ '/$'
   redraw!
   echohl Error | echo "***error*** (zip#Browse) Please specify a file, not a directory" | echohl None
"   call inputsave()|call input("Press <cr> to continue")|call inputrestore()
   let &report= repkeep
"   call Dret("ZipBrowseSelect")
   return
  endif

"  call Decho("fname<".fname.">")

  " get zipfile to the new-window
  let zipfile = b:zipfile
  let curfile= expand("%")
"  call Decho("zipfile<".zipfile.">")
"  call Decho("curfile<".curfile.">")

  new
  if !exists("g:zip_nomax") || g:zip_nomax == 0
   wincmd _
  endif
  let s:zipfile_{winnr()}= curfile
"  call Decho("exe e ".fnameescape("zipfile:".zipfile.'::'.fname))
  exe "e ".fnameescape("zipfile:".zipfile.'::'.fname)
  filetype detect

  let &report= repkeep
"  call Dret("ZipBrowseSelect : s:zipfile_".winnr()."<".s:zipfile_{winnr()}.">")
endfun

" ---------------------------------------------------------------------
" zip#Read: {{{2
fun! zip#Read(fname,mode)
"  call Dfunc("zip#Read(fname<".a:fname.">,mode=".a:mode.")")
  let repkeep= &report
  set report=10

  if has("unix")
   let zipfile = substitute(a:fname,'zipfile:\(.\{-}\)::[^\\].*$','\1','')
   let fname   = substitute(a:fname,'zipfile:.\{-}::\([^\\].*\)$','\1','')
  else
   let zipfile = substitute(a:fname,'^.\{-}zipfile:\(.\{-}\)::[^\\].*$','\1','')
   let fname   = substitute(a:fname,'^.\{-}zipfile:.\{-}::\([^\\].*\)$','\1','')
   let fname = substitute(fname, '[', '[[]', 'g')
  endif
"  call Decho("zipfile<".zipfile.">")
"  call Decho("fname  <".fname.">")

"  call Decho("exe r! ".g:zip_unzipcmd." -p -- ".s:Escape(zipfile,1)." ".s:Escape(fname,1))
  exe "silent r! ".g:zip_unzipcmd." -p -- ".s:Escape(zipfile,1)." ".s:Escape(fname,1)

  " cleanup
  0d
  set nomod

  let &report= repkeep
"  call Dret("zip#Read")
endfun

" ---------------------------------------------------------------------
" zip#Write: {{{2
fun! zip#Write(fname)
"  call Dfunc("zip#Write(fname<".a:fname.">) zipfile_".winnr()."<".s:zipfile_{winnr()}.">")
  let repkeep= &report
  set report=10

  " sanity checks
  if !executable(g:zip_zipcmd)
   redraw!
   echohl Error | echo "***error*** (zip#Write) sorry, your system doesn't appear to have the zip pgm" | echohl None
"   call inputsave()|call input("Press <cr> to continue")|call inputrestore()
   let &report= repkeep
"   call Dret("zip#Write")
   return
  endif
  if !exists("*mkdir")
   redraw!
   echohl Error | echo "***error*** (zip#Write) sorry, mkdir() doesn't work on your system" | echohl None
"   call inputsave()|call input("Press <cr> to continue")|call inputrestore()
   let &report= repkeep
"   call Dret("zip#Write")
   return
  endif

  let curdir= getcwd()
  let tmpdir= tempname()
"  call Decho("orig tempname<".tmpdir.">")
  if tmpdir =~ '\.'
   let tmpdir= substitute(tmpdir,'\.[^.]*$','','e')
  endif
"  call Decho("tmpdir<".tmpdir.">")
  call mkdir(tmpdir,"p")

  " attempt to change to the indicated directory
  if s:ChgDir(tmpdir,s:ERROR,"(zip#Write) cannot cd to temporary directory")
   let &report= repkeep
"   call Dret("zip#Write")
   return
  endif
"  call Decho("current directory now: ".getcwd())

  " place temporary files under .../_ZIPVIM_/
  if isdirectory("_ZIPVIM_")
   call s:Rmdir("_ZIPVIM_")
  endif
  call mkdir("_ZIPVIM_")
  cd _ZIPVIM_
"  call Decho("current directory now: ".getcwd())

  if has("unix")
   let zipfile = substitute(a:fname,'zipfile:\(.\{-}\)::[^\\].*$','\1','')
   let fname   = substitute(a:fname,'zipfile:.\{-}::\([^\\].*\)$','\1','')
  else
   let zipfile = substitute(a:fname,'^.\{-}zipfile:\(.\{-}\)::[^\\].*$','\1','')
   let fname   = substitute(a:fname,'^.\{-}zipfile:.\{-}::\([^\\].*\)$','\1','')
  endif
"  call Decho("zipfile<".zipfile.">")
"  call Decho("fname  <".fname.">")

  if fname =~ '/'
   let dirpath = substitute(fname,'/[^/]\+$','','e')
   if executable("cygpath")
    let dirpath = substitute(system("cygpath ".s:Escape(dirpath,0)),'\n','','e')
   endif
"   call Decho("mkdir(dirpath<".dirpath.">,p)")
   call mkdir(dirpath,"p")
  endif
  if zipfile !~ '/'
   let zipfile= curdir.'/'.zipfile
  endif
"  call Decho("zipfile<".zipfile."> fname<".fname.">")

  exe "w! ".fnameescape(fname)
  if executable("cygpath")
   let zipfile = substitute(system("cygpath ".s:Escape(zipfile,0)),'\n','','e')
  endif

  if (has("win32") || has("win95") || has("win64") || has("win16")) && &shell !~? 'sh$'
    let fname = substitute(fname, '[', '[[]', 'g')
  endif

"  call Decho(g:zip_zipcmd." -u ".s:Escape(fnamemodify(zipfile,":p"),0)." ".s:Escape(fname,0))
  call system(g:zip_zipcmd." -u ".s:Escape(fnamemodify(zipfile,":p"),0)." ".s:Escape(fname,0))
  if v:shell_error != 0
   redraw!
   echohl Error | echo "***error*** (zip#Write) sorry, unable to update ".zipfile." with ".fname | echohl None
"   call inputsave()|call input("Press <cr> to continue")|call inputrestore()

  elseif s:zipfile_{winnr()} =~ '^\a\+://'
   " support writing zipfiles across a network
   let netzipfile= s:zipfile_{winnr()}
"   call Decho("handle writing <".zipfile."> across network as <".netzipfile.">")
   1split|enew
   let binkeep= &binary
   let eikeep = &ei
   set binary ei=all
   exe "e! ".fnameescape(zipfile)
   call netrw#NetWrite(netzipfile)
   let &ei     = eikeep
   let &binary = binkeep
   q!
   unlet s:zipfile_{winnr()}
  endif
  
  " cleanup and restore current directory
  cd ..
  call s:Rmdir("_ZIPVIM_")
  call s:ChgDir(curdir,s:WARNING,"(zip#Write) unable to return to ".curdir."!")
  call s:Rmdir(tmpdir)
  setlocal nomod

  let &report= repkeep
"  call Dret("zip#Write")
endfun

" ---------------------------------------------------------------------
" s:Escape: {{{2
fun! s:Escape(fname,isfilt)
"  call Dfunc("QuoteFileDir(fname<".a:fname."> isfilt=".a:isfilt.")")
  if exists("*shellescape")
   if a:isfilt
    let qnameq= shellescape(a:fname,1)
   else
    let qnameq= shellescape(a:fname)
   endif
  else
   let qnameq= g:zip_shq.escape(a:fname,g:zip_shq).g:zip_shq
  endif
"  call Dret("QuoteFileDir <".qnameq.">")
  return qnameq
endfun

" ---------------------------------------------------------------------
" ChgDir: {{{2
fun! s:ChgDir(newdir,errlvl,errmsg)
"  call Dfunc("ChgDir(newdir<".a:newdir."> errlvl=".a:errlvl."  errmsg<".a:errmsg.">)")

  try
   exe "cd ".fnameescape(a:newdir)
  catch /^Vim\%((\a\+)\)\=:E344/
   redraw!
   if a:errlvl == s:NOTE
    echo "***note*** ".a:errmsg
   elseif a:errlvl == s:WARNING
    echohl WarningMsg | echo "***warning*** ".a:errmsg | echohl NONE
   elseif a:errlvl == s:ERROR
    echohl Error | echo "***error*** ".a:errmsg | echohl NONE
   endif
"   call inputsave()|call input("Press <cr> to continue")|call inputrestore()
"   call Dret("ChgDir 1")
   return 1
  endtry

"  call Dret("ChgDir 0")
  return 0
endfun

" ---------------------------------------------------------------------
" s:Rmdir: {{{2
fun! s:Rmdir(fname)
"  call Dfunc("Rmdir(fname<".a:fname.">)")
  if (has("win32") || has("win95") || has("win64") || has("win16")) && &shell !~? 'sh$'
   call system("rmdir /S/Q ".s:Escape(a:fname,0))
  else
   call system("/bin/rm -rf ".s:Escape(a:fname,0))
  endif
"  call Dret("Rmdir")
endfun

" ------------------------------------------------------------------------
" Modelines And Restoration: {{{1
let &cpo= s:keepcpo
unlet s:keepcpo
" vim:ts=8 fdm=marker


Index: .cvsignore
===================================================================
RCS file: /cvs/extras/rpms/vim/F-9/.cvsignore,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -r1.22 -r1.23
--- .cvsignore	5 Jun 2007 10:37:55 -0000	1.22
+++ .cvsignore	1 Dec 2008 15:06:10 -0000	1.23
@@ -1,3 +1,3 @@
-vim-7.1-extra.tar.gz
-vim-7.1-lang.tar.gz
-vim-7.1.tar.bz2
+vim-7.2-extra.tar.gz
+vim-7.2-lang.tar.gz
+vim-7.2.tar.bz2


Index: README.patches
===================================================================
RCS file: /cvs/extras/rpms/vim/F-9/README.patches,v
retrieving revision 1.104
retrieving revision 1.105
diff -u -r1.104 -r1.105
--- README.patches	11 Apr 2008 09:17:31 -0000	1.104
+++ README.patches	1 Dec 2008 15:06:22 -0000	1.105
@@ -1,4 +1,4 @@
-Patches for Vim - Vi IMproved 7.1
+Patches for Vim - Vi IMproved 7.2
 
 The files in this directory contain source code changes to fix
 problems in released versions of Vim.  Each file also contains an
@@ -14,314 +14,74 @@
 and "runtime" directories are located.
 Depending on the version of "patch" that you use, you may have add
 an argument to make it patch the right file:
-        patch -p < 7.1.001
-        patch -p0 < 7.1.001
+        patch -p < 7.2.001
+        patch -p0 < 7.2.001
 
 After applying a patch, you need to compile Vim.  There are no
 patches for binaries.
 
 Checksums for the patch files can be found in the file MD5.
 
-Collection of patches for Vim 7.1:
-  SIZE  NAME                  INCLUDES
- 91424  7.1.001-100.gz	      patches 7.1.001 to 7.1.100, gzip'ed
- 75402  7.1.101-200.gz	      patches 7.1.101 to 7.1.200, gzip'ed
-
-
-Individual patches for Vim 7.1:
+Individual patches for Vim 7.2:
 
   SIZE  NAME     FIXES
-  2404  7.1.001  can't build with Gnome GUI
-  2011  7.1.002  Oracle Pro*C/C++ files are not detected
-  1529  7.1.003  (extra) Win32: menu entries end up in message history
-  2481  7.1.004  crash when editing a directory
-  3841  7.1.005  "cit" used on <foo></foo> deletes <foo>
-  2941  7.1.006  when reading from stdin 'modified' can't be reset in autocmd
-  6458  7.1.007  (extra) Mac: context menu does not work, scrollbars not dimmed
-  2631  7.1.008  getfsize() returns an invalid number for very big files
-  1881  7.1.009  diff mode: tab to spaces change not highlighted correctly
-  2796  7.1.010  Gnome: tab pages are not included in the saved session
-  1934  7.1.011  buffer overflow when $VIMRUNTIME is very long
-  1904  7.1.012  ":let &tw = 'asdf'" does not give an error message
-  2139  7.1.013  ":syn include" only loads the first file
-  1479  7.1.014  crash in C-indenting
-  3743  7.1.015  MzScheme interface doesn't build on Mac; init problem
-  2368  7.1.016  (after 7.1.012) error message when using ":cwindow"
-  6729  7.1.017  ":confirm w" does not give a prompt when file is read-only
-  1771  7.1.018  "p" at end of line doesn't work right when 've' is set
-  1650  7.1.019  ":python" doesn't mention the command is not implemented
-  3229  7.1.020  reading uninitialized memory when using a dialog
-  2875  7.1.021  (after 7.1.015) MzScheme interface doesn't build on Win32
-  1842  7.1.022  when setting 'keymap' twice b:keymap_name variable isn't set
-  1718  7.1.023  "dw" in a line with one character deletes the line
-  1335  7.1.024  using a pointer that may have become invalid
-  2292  7.1.025  search('pat', 'bc) doesn't find word under cursor at BOL
-  1710  7.1.026  "[p" doesn't work in Visual mode
-  3345  7.1.027  on Sun OS reading from a process substitutions doesn't work
-  2239  7.1.028  ":sort" does nothing special with empty search pattern
-  2692  7.1.029  (after 7.1.019) can't compile when all interfaces are used
-  2364  7.1.030  vimtutor shell script checks for "vim6" but not for "vim7"
-  6533  7.1.031  virtcol([123, '$']) doesn't work
-  3006  7.1.032  possible crash when doing completion on the command line
-  1530  7.1.033  buffer marked modified after ":bdel" and ":next"
-  2956  7.1.034  Win64: compiler warnings for typecast, optimizer problem
-  1797  7.1.035  after ":s/./&/#" all listed lines have a line number
- 12171  7.1.036  add "none" to completion of ":echohl" and ":match"
-  1817  7.1.037  using strcpy() for an overlapping string
-  5704  7.1.038  'preseveindent' doesn't always work when 'et' is set
-  1750  7.1.039  weird help-tags tag in docs file may make cause a crash
- 53412  7.1.040  ":match" only supports three matches
-  4614  7.1.041  (extra, after 7.1.040) update test makefiles for new test
-  2366  7.1.042  (after 7.1.040) internal error when using matchadd()
-  2820  7.1.043  in Ex mode using CTRL-D twice may cause a crash
-  1632  7.1.044  in Insert mode 0 CTRL-T deletes all indent
-  3101  7.1.045  double screen redraw in some situations
-  1637  7.1.046  ":s/.*/&/" deletes composing characters
-  1552  7.1.047  wrong argument for vim_regcomp()
-  5010  7.1.048  paren highlighting is not updated after scrolling
-  1722  7.1.049  can't compile with GTK2 when using hangul input feature
-  4800  7.1.050  possible crash in C++ indenting
-  2295  7.1.051  accessing uninitialized memory when finding spell suggestions
-  2435  7.1.052  when creating a new match not all fields are initialized
-  1473  7.1.053  reading uninitialized memory when updating command line
-  4451  7.1.054  accessing uninitialized memory when displaying the fold column
-  5414  7.1.055  using strcpy() with arguments that overlap
-  3151  7.1.056  scrolling back at more prompt doesn't work properly
-  2514  7.1.057  CursorHold causes problems for Normal and Visual mode commands
- 10612  7.1.058  completion menu doesn't work properly when 'righleft' is set
-  3350  7.1.059  in Ex mode "g/^/vi" and pressing CTRL-C: Vim hangs and beeps
-  5066  7.1.060  splitting quickfix window messes up window layout
-  6320  7.1.061  with latin1 'ignorecase' doesn't work for umlauts
-  1550  7.1.062  (after 7.0.038) C comment indent can be wrong
-  1391  7.1.063  compiler warning for uninitialized variable
-  1405  7.1.064  on interix some files appear not to exist
-  2983  7.1.065  Win32: MingW Compilation problem for newer version of w32api
-  4553  7.1.066  when 'bomb' is changed the file should be considered modified
-  7701  7.1.067  'infercase' doesn't work for thesaurus completion
-  6709  7.1.068  'equalalways' equalizes windows too often
-  2757  7.1.069  GTK GUI: confirm() dialog has a default button when not wanted
-  1560  7.1.070  (extra) Win32 GUI: same confirm() default button problem
-  5534  7.1.071  (after 7.1.040) add a basic test for regexp patterns
-  5705  7.1.072  (extra, after 7.1.041 and 7.1.071) extra part of 7.1.071
-  3595  7.1.073  (after 7.1.062) crash when 'preserveindent' is set
-  5259  7.1.074  crash when using string() on a recursively nested List
-  1686  7.1.075  ":let v:statusmsg" reads memory already freed
-  2376  7.1.076  a couple more strcpy() with overlapping arguments
-  1551  7.1.077  "can_spell" is used without initializing it
-  2678  7.1.078  dropping file name on gvim containing CSI byte doesn't work
-  2922  7.1.079  "@" character in 'isfname' doesn't pick up umlauts for latin1
-  2960  7.1.080  (extra) Compiler warnings for gvimex.cpp
-  3253  7.1.081  completion doesn't work after ":!cat <foo"
-  3464  7.1.082  matchparen plugin doesn't update after window split
-  3448  7.1.083  (after 7.1.081) completion doesn't work with wildcards
-  1671  7.1.084  netbeans doesn't get fileOpened events when using -nb twice
-  2496  7.1.085  after ":split fold.c" folds in one window disappear
-  3561  7.1.086  crash when using specific Python syntax highlighting
-  4165  7.1.087  cscope: reading past command end; writing past buffer end
-  2276  7.1.088  (extra) window position wrong when using ":winpos"
- 13841  7.1.089  when listing variables text of command is not cleared
-  2372  7.1.090  compiler warning on Mac OS X 10.5 for sigaltstack()
- 10488  7.1.091  (extra) Win32: add --windowid argument
-  2901  7.1.092  (extra, after 7.1.088) wrong args for MoveWindowStructure()
- 15955  7.1.093  read past end of screen line when checking for double width
-  1901  7.1.094  using wrong buffer to check if syntax HL is present
-  5809  7.1.095  autocmmand for focus events may cause problems
-  2287  7.1.096  reading past end of a string when resizing Vim
-  1620  7.1.097  "setlocal stl=%!expr" doesn't work
-  1780  7.1.098  ":call s:var()" doesn't work if "s:var" is a Funcref
-  4552  7.1.099  ":mkvimrc" doesn't work properly when 'paste' or 'keymap' set
- 14551  7.1.100  Win32: Executing cscope doesn't always work properly
-  1614  7.1.101  Ruby: The Buffer.line= method does not work
-  3276  7.1.102  Perl interface doesn't compile with new version of Perl
-  1976  7.1.103  "dw" past end of last line deletes a character
- 14346  7.1.104  (after 7.1.095) when 'lazyredraw' set redraw may be postponed
-  2426  7.1.105  internal error when using "0 ? {'a': 1} : {}"
-  1580  7.1.106  ":messages" doesn't quit listing on ":"
-  4081  7.1.107  Visual block mode "s" that auto-indents fails in other lines
-  2633  7.1.108  (after 7.1.100) Win32: compilation problems in Cscope code
-  2147  7.1.109  GTK GUI: click on arrow left of tab 
-  2234  7.1.110  (after 7.1.102) Win32: Still compilation problems with Perl
-  2946  7.1.111  after ":vimgrep /pat/j *" folds can be wrong
-  1766  7.1.112  using input() with a wrong argument may crash Vim
-  2765  7.1.113  map() on an empty list causes memory to be freed twice
-  1386  7.1.114  memory leak in getmatches()
-  1472  7.1.115  (after 7.1.105) compiler warning for uninitialized variable
-  3137  7.1.116  can't display characters above 0x10000
-  1414  7.1.117  can't check wether Vim was compiled with Gnome
-  1805  7.1.118  (after 7.1.107) compiler warning for Visual C compiler
-  1761  7.1.119  crash after setting 'cmdheight' to huge value
- 17416  7.1.120  can't use valgrind with "make test" to test for memory leaks
-  2350  7.1.121  ":cd %:h" fails when editing file in current directory
-  3732  7.1.122  Mac: building with Aap doesn't work properly
-  8051  7.1.123  Win32: ":edit foo ~ foo" expands "~"
-  2599  7.1.124  (extra) Mac: may get empty buffer if dropping file on Vim.app
- 12060  7.1.125  the TermResponse autocommand event is not always triggered
- 13372  7.1.126  (extra) ":vimgrep */*" doesn't work if autocmd changes dir
-        12461  7.1.126ne  replacement for 7.1.126 without the (extra)
-  2319  7.1.127  memory leak when doing completing
-  2079  7.1.128  (extra) build problem with Cygwin
-  1740  7.1.129  (extra) Win32: Can't get long user name
-  9494  7.1.130  crash with some combination of undo and redo
-  1535  7.1.131  ":mksession" always adds ":setlocal autoread"
-  1781  7.1.132  getpos("'>") may return < 0 for a Linewise selection
-  1515  7.1.133  shorten_fname1() linked when it's not needed
- 10379  7.1.134  (extra) Win32: Can't build with VC8
-  3337  7.1.135  Win32: ":e c:/tmp/foo" and ":e c:/tmp//foo" create two buffers
-  1522  7.1.136  memory leak when using Ruby syntax highlighting
-  1553  7.1.137  build failure when using EXITFREE
-  1836  7.1.138  Perl: Msg() doesn't stop when "q" is typed at the more prompt
-  1557  7.1.139  fold truncated when ending Insert mode with CTRL-C
-  1664  7.1.140  v:count can't be used in an expression mapping
-  2806  7.1.141  GTK: can't use negative offset with -geom argument
-  2161  7.1.142  ":redir @A>" doesn't work
-  1723  7.1.143  uninitialized memory read when diffing three files
-  1250  7.1.144  after ":diffup" cursor can be in the wrong position
-  6160  7.1.145  stay in Insert completion mode depending on the char typed
-  2838  7.1.146  VMS: writing fails for rare record organisation
-  2079  7.1.147  (after 7.1.127) freeing memory twice completing user name
-  2557  7.1.148  QNX and some other systems require testing for sys/types.h
-  4823  7.1.149  completion menu messed up when using the scroll bar
-  1759  7.1.150  Visual mode "p" doesn't work when 'clipboard' has "unnamed"
-  2108  7.1.151  lalloc(0) error for line completion with 'ic' and 'inf' set
-  3183  7.1.152  display problem when 'hls' and 'cursorcolumn' are set
-  4610  7.1.153  compiler warnings on SGI
-  1547  7.1.154  (after 7.1.152) compiler warning for signed/unsigned compare
-  1594  7.1.155  crash when 'undolevels' is 0 and repeating "udd"
-  4174  7.1.156  overlapping arguments for strcpy() during cmdline completion
-  1541  7.1.157  :" in Ex mode at end of file results in an error message
-  4629  7.1.158  (extra) Win32: with utf-8 and cp1250 Alt-y is the wrong char
-  1646  7.1.159  overlapping arguments for a strcpy()
-  1661  7.1.160  getting/losing focus may cause hit-enter prompt to be redrawn
-  4347  7.1.161  compilation errors with tiny features and EXITFREE
-  4691  7.1.162  crash when using a modifier before "while" or "for"
-  2367  7.1.163  warning for the unknown option 'bufsecret'
-  1576  7.1.164  reading past end of regexp pattern
-  5538  7.1.165  crash related to getting X window ID
-  2134  7.1.166  memory leak when using "gp" in Visual mode
-  2528  7.1.167  xxd crashes when using "xxd -b -c 110"
-  2989  7.1.168  (extra) Win32 GUI: when no focus click doesn't position cursor
-  1926  7.1.169  using uninitialized memory when system() fails
-  1722  7.1.170  overlapping arguments to strcpy()
-  2324  7.1.171  reading one byte before allocated memory.
-  1536  7.1.172  if 'buftype' is "acwrite" Vim still does overwrite check
-  1928  7.1.173  accessing freed memory when using "\%^" pattern
-  2197  7.1.174  writing NUL past end of a buffer
-  4722  7.1.175  <BS> doesn't work with some combination of option settings
-  2943  7.1.176  compiling with Aap fails if "compiledby" contains '<' or '>'
-  5450  7.1.177  freeing memory twice when in debug mode while reading a script
-  1567  7.1.178  "%" doesn't work on "/* comment *//* comment */"
-  6581  7.1.179  configure doesn't find TCL 8.5
-  7099  7.1.180  regexp patterns are not sufficiently tested
-  1878  7.1.181  accessing uninitialized memory in Farsi mode with ":s"
-  5457  7.1.182  with tab pages and an argument list session file may be wrong
-  2489  7.1.183  Internal error for ":echo matchstr('a', 'a\%[\&]')"
-  2132  7.1.184  crash when deleting backwards over a line break in Insert mode
-  3744  7.1.185  "gR" and then BS doesn't work properly with multi-byte chars
-  3294  7.1.186  "expand('<afile>')" returns a bogus value after ":cd dir"
-  2341  7.1.187  Win32 GUI: custom completion using system() doesn't work
-  1688  7.1.188  "W10" message could be displayed in the second column
-  1950  7.1.189  (after 7.1.104) need to call plain_vgetc() in ask_yesno()
-  1685  7.1.190  cursor after end-of-line: "iA sentence.<Esc>)"
-  2007  7.1.191  Win32 GUI: when not in focus click in scrollbar doesn't work 
-  2605  7.1.192  CTRL-C doesn't stop duplicating text for "s" in Visual block
-  2962  7.1.193  some of the Vim 5.x digraphs could be supported
-  1650  7.1.194  Unix: ":echo glob('~/{}')" results in "/home/user//"
-  2273  7.1.195  '0 mark doesn't work for "~/foo ~ foo"
-  2642  7.1.196  (extra) Win32 GUI: "\n" in a tooltip doesn't cause line break
-  2308  7.1.197  Mac: "make install" doesn't work when $prefix is set
-  1460  7.1.198  hang when using ":s/\n//gn"
-  3572  7.1.199  can't do command line completion for a file name extension
-  2310  7.1.200  (after 7.1.177 and 7.1.182) compiler warnings
-  2705  7.1.201  when reading stdin 'fenc' and 'ff' are not set
-  2383  7.1.202  incomplete utf-8 byte sequence is not checked for validity
-  2261  7.1.203  if 'virtualedit' is "onemore" then ":normal 99|" is not right
-  2891  7.1.204  (extra) Win32: 'balloonexpr' tooltip disappears after 4 sec
-  5481  7.1.205  can't get the operator in an ":omap"
-  1690  7.1.206  compiler warnings when using MODIFIED_BY
-  7708  7.1.207  netbeans: "remove" cannot delete one line
-  2051  7.1.208  on Alpha get an unaligned access error
-  2249  7.1.209  GTK GUI: when using the netrw plugin ":gui" causes a hang
-  1923  7.1.210  listing mapping for 0xdb fails when 'encoding' is utf-8
- 25525  7.1.211  matchparen plugin may take so long it looks like Vim hangs
-  1491  7.1.212  accessing a byte before a line
-  1750  7.1.213  aborting ":tabedit" from the ATTENTION dialog leaves tab open
-  8399  7.1.214  ":1s/g\n\zs1//" deletes characters from the first line
-  6476  7.1.215  it's difficult to figure out the nesting of syntax items
-  2360  7.1.216  variants of --remote-tab are not mentioned for "vim --help"
-  7103  7.1.217  the "help-tags" tag may be missing from runtime/doc/tags
-  1864  7.1.218  syntax region without "keepend" could be truncated
- 12134  7.1.219  (after 7.1.215) synstack() doesn't work for one char region
-  3928  7.1.220  cursor may end up on trail byte after ")"
-  1978  7.1.221  when inserting a "(" the following highlighting may be wrong
-  3531  7.1.222  (after 7.1.217) wildcards of ":helptags" are not expanded
-  8138  7.1.223  glob() doesn't handle "'" when 'shell' is "sh" or "bash"
-  2131  7.1.224  "vim -F -o one two" sets 'rightleft' in one window only
-  1767  7.1.225  using unitialized value when XGetWMNormalHints() fails
-  1957  7.1.226  command line completion fails for a file name with a '&' char
-  5595  7.1.227  hang in syntax HL when moving over a ")"
-  1678  7.1.228  with 'foldmethod' "indent" fold can't be closed after "3>>"
-  1758  7.1.229  a fold is closed when backspacing in Insert mode
-  2052  7.1.230  memory leak when executing SourceCmd autocommands
-  8648  7.1.231  when shifting lines the change is acted upon multiple times
-  2002  7.1.232  (after 7.1.207 and 7.1.211) compiler warnings with MSVC
-  3249  7.1.233  crash with Insert mode completion for a user defined command
-  6865  7.1.234  display problems when diff'ing three files
-  5925  7.1.235  pattern matching is slow when using a lot of simple patterns
- 28992  7.1.236  hang when using complicated pattern and 'hlsearch' or ":match"
-  1704  7.1.237  compiler warning on an Alpha processor in Motif code
-  1801  7.1.238  searchpair() may fail when using 'c' or 'r' flag
-  1639  7.1.239  (after 7.1.233) compiler warning for sprintf() argument
-  5157  7.1.240  "gUe" may stop before the end of the word
-  3093  7.1.241  focus change events not always ignored
-  2262  7.1.242  "cib" doesn't work properly on "(x)"
-  4475  7.1.243  (after 7.1.240) "U" doesn't work on all text in Visual mode
-  1847  7.1.244  GUI may have part of the command line cut off
-  2767  7.1.245  pressing CTRL-\ three times causes Vim to quit
-  2739  7.1.246  configure hangs when the man pager is something strange
-  6028  7.1.247  Netbeans: backspacing in Insert mode may skip a character
-  3691  7.1.248  can't set the '" mark; can't know if setpos() was successful
-  2144  7.1.249  after "U" the cursor can be past end of line
-  1684  7.1.250  error for ":setglobal fenc=anything" when 'modifiable' is off
-  3134  7.1.251  accessing freed memory when spell checking enabled
-  1399  7.1.252  (after 7.1.243) test 39 fails when locale uses utf-8 encoding
-  1751  7.1.253  ":sort" doesn't work in a one line file
-  1894  7.1.254  Tests 49 and 55 fail when the locale is French
-  1514  7.1.255  Vim doesn't support utf-32
- 50921  7.1.256  findfile() also returns directories
-  3326  7.1.257  configure can't always find the Tcl header files
-  3360  7.1.258  crash when doing "d/\n/e" and 'virtualedit' is "all"
-  1944  7.1.259  cursor in wrong place with 'rl', "utf-8" and illegal byte
-  1805  7.1.260  cursor position wrong after ^@ wrapping halfway if using utf-8
-  2255  7.1.261  for a 2 byte BOM UCS-2 is used, which doesn't work for UTF-16
-  3438  7.1.262  can't get the process ID of Vim
-  2442  7.1.263  filetype with dot doesn't work for indent plugins
-  6295  7.1.264  crash when C-indenting
-  1310  7.1.265  hang when completing file name and space in 'isfname'
-  2510  7.1.266  version string returned by terminal may be used as typed input
-  1957  7.1.267  when changing folds cursor may be positioned in a wrong place
-  1576  7.1.268  always shows "+" at end of screen line with 'cursurline'
-  6183  7.1.269  matchparen plugin has an arbitrary line number limit
-  2861  7.1.270  ":?foo?" matches in current line since patch 7.1.025
-  1582  7.1.271  in tiny version ":!touch %" causes curbuf to be wrong
-  2334  7.1.272  buffer name [Location List] not used for buffer in other tab
-  2504  7.1.273  when profiling on Linux Vim exits early
-  1549  7.1.274  (after 7.1.272) compiler warning with optimized build
- 40835  7.1.275  (extra) Mac: ATSUI and 'antialias' don't work together
-  4946  7.1.276  "gw" uses 'formatexpr', even though the docs say it doesn't
-  2802  7.1.277  default for 'paragraphs' misses some items
-  1989  7.1.278  (extra, after 7.1.275) build problem
-  3848  7.1.279  when using cscope temporary files are left behind
-  1556  7.1.280  (after 7.1.275) Mac: build problems without multibyte feature
-  2094  7.1.281  (after 7.1.279) Vim hangs when cscope doesn't exit
- 16302  7.1.282  (extra) Win64: Installing context menu, compiler warnings
-  7633  7.1.283  non-extra part of 7.1.282
-  2258  7.1.284  compiler warnings for functions without prototype
-  5787  7.1.285  (extra) Mac: dialog hotkeys don't work
-  2045  7.1.286  (after 7.1.103) "w" at end of buffer moves cursor too far
-  1859  7.1.287  crash when reversing a list after using it
-  3182  7.1.288  (after 7.1.281) cscope leaves behind temp files with gvim
-  1979  7.1.289  when EXITFREE is defined and 'acd' is set freed memory is used
-  2146  7.1.290  reading unwritten bytes when spell checking with large indent
-  1940  7.1.291  compiler warning for int-long conversion
-  6698  7.1.292  when using a pattern with "\@<=" the submatches can be wrong
-  3087  7.1.293  spell checking considers super/subscript chars as word chars
+  1877  7.2.001  Mac: pseudo-ttys don't work properly on Leopard
+  1462  7.2.002  leaking memory when displaying menus
+  3663  7.2.003  typo in translated message, message not translated
+  3413  7.2.004  Cscope help message is not translated
+  4638  7.2.005  a few problems when profiling
+  1552  7.2.006  HTML files are not recognized by contents
+ 16735  7.2.007  (extra) minor issues for VMS
+  1947  7.2.008  wrong window count when using :bunload in a BufHidden autocmd
+  2245  7.2.009  can't compile with Perl 5.10 on MS-aindows
+  5415  7.2.010  "K" in Visual mode does not properly escape all characters
+  2873  7.2.011  error when inserting a float value from expression register
+  1444  7.2.012  compiler warnings when building with startup timing
+  4157  7.2.013  hang when waiting for X selection, consuming lots of CPU time
+  1769  7.2.014  synstack() doesn't work in an emptly line
+  1943  7.2.015  "make all test install" doesn't stop when the test fails
+  4536  7.2.016  cmdline completion pattern can be in freed memory
+  5319  7.2.017  X11: strlen() used wrongly, pasting very big selection fails
+  1390  7.2.018  memory leak when substitute is aborted
+  2269  7.2.019  completion and exists() don't work for ":noautocmd"
+  1521  7.2.020  "kvim" starts the GUI even though KDE is no longer supported
+  4806  7.2.021  getting full file name when executing autocmds may be slow
+  3823  7.2.022  (extra) cannot run tests with the MingW compiler
+  2062  7.2.023  'cursorcolumn' wrong in a closed fold when display is shifted
+  1452  7.2.024  'history' can be made negative, causes out-of-memory error
+  1470  7.2.025  a CursorHold event that invokes system() is retriggered
+  2969  7.2.026  (after 7.2.010) 'K' uses the rest of the line
+  3235  7.2.027  can use cscope commands in the sandbox, might not be safe
+  1466  7.2.028  confusing error message for missing ()
+  1291  7.2.029  no completion for ":doautoall" like for ":doautocmd"
+  1546  7.2.030  (after 7.2.027) can't compile, ex_oldfiles undefined
+ 39400  7.2.031  file names from viminfo are not available to the user
+  1583  7.2.032  (after 7.2.031) can't compile with EXITFREE defined
+  2270  7.2.033  using "ucs-2le" for two-byte BOM, but text might be "utf-16le"
+  2372  7.2.034  memory leak in spell info when deleting a buffer
+  3522  7.2.035  mismatches for library and Vim alloc/free functions
+  7545  7.2.036  (extra) mismatches for library and Vim alloc/free functions
+  1576  7.2.037  double free with GTK 1 and compiled with EXITFREE
+  2438  7.2.038  overlapping arguments to memcpy()
+  1378  7.2.039  accessing freed memory on exit when EXITFREE is defined
+  1836  7.2.040  ":e ++ff=dos foo" gets "unix" 'ff' when CR before NL missing
+ 22993  7.2.041  diff messed up when editing a diff buffer in another tab page
+  4987  7.2.042  restoring view in autocmd sometimes doesn't work completely
+  2550  7.2.043  VMS: Too many chars escaped in filename and shell commands
+  5639  7.2.044  crash because of gcc 4 being over protective for strcpy()
+  2056  7.2.045  the Python interface has an empty entry in sys.path
+  1704  7.2.046  wrong check for filling buffer with encoding
+  2470  7.2.047  using -nb while it is not supported makes other side hang
+  4758  7.2.048  v:count and v:prevcount are not set correctly
+ 32552  7.2.049  (extra) Win32: the clipboard doesn't support UTF-16
+  8484  7.2.050  compiler warnings for not using return value of fwrite()
+ 15179  7.2.051  can't avoid 'wig' and 'suffixes' for glob() and globpath()
+  2611  7.2.052  synIDattr() doesn't support "sp" for special color
+  1754  7.2.053  crash when using WorkShop command ":ws foo"
+  2006  7.2.054  compilation warnings for fprintf format
+ 34319  7.2.055  various compiler warnings with strict checking
+  1635  7.2.056  (after 7.2.050) tests 58 and 59 fail
+  3210  7.2.057  (after 7.2.056) trying to put size_t in int variable
+  2338  7.2.058  can't add a feature name in the :version output
+  1847  7.2.059  diff is not always displayed properly
+ 34772  7.2.060  spell checking doesn't work well for compound words


Index: sources
===================================================================
RCS file: /cvs/extras/rpms/vim/F-9/sources,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -r1.22 -r1.23
--- sources	5 Jun 2007 10:37:55 -0000	1.22
+++ sources	1 Dec 2008 15:06:22 -0000	1.23
@@ -1,3 +1,3 @@
-605cc7ae31bcc9d7864bb0bb6025f55d  vim-7.1-extra.tar.gz
-144aa049ba70621acf4247f0459f3ee7  vim-7.1-lang.tar.gz
-44c6b4914f38d6f9aa959640b89da329  vim-7.1.tar.bz2
+35e04482f07c57221c9a751aaa3b8dac  vim-7.2-extra.tar.gz
+d8884786979e0e520c112faf2e176f05  vim-7.2-lang.tar.gz
+556572edfda7a319541a3bc860c7fd36  vim-7.2.tar.bz2


Index: vim.spec
===================================================================
RCS file: /cvs/extras/rpms/vim/F-9/vim.spec,v
retrieving revision 1.207
retrieving revision 1.208
diff -u -r1.207 -r1.208
--- vim.spec	25 May 2008 14:53:35 -0000	1.207
+++ vim.spec	1 Dec 2008 15:06:23 -0000	1.208
@@ -8,23 +8,23 @@
 %define desktop_file_utils_version 0.2.93
 %endif
 
-%define withnetbeans 0
+%define withnetbeans 1
 
 %define withvimspell 0
 %define withhunspell 0
 %define withruby 1
 
-%define baseversion 7.1
+%define baseversion 7.2
 #used for pre-releases:
 %define beta %{nil}
-%define vimdir vim71%{?beta}
-%define patchlevel 293
+%define vimdir vim72%{?beta}
+%define patchlevel 060
 
 Summary: The VIM editor
 URL:     http://www.vim.org/
 Name: vim
 Version: %{baseversion}.%{beta}%{patchlevel}
-Release: 1%{?dist}.1
+Release: 1%{?dist}
 License: Vim
 Group: Applications/Editors
 Source0: ftp://ftp.vim.org/pub/vim/unix/vim-%{baseversion}%{?beta}%{?CVSDATE}.tar.bz2
@@ -45,6 +45,16 @@
 Source14: spec-template
 Source15: http://www.cvjb.de/comp/vim/forth.vim
 
+# remove this for the next major version, CVE fixes:
+Source16: ftp://ftp.vim.org/vol/2/vim/runtime/plugin/netrwPlugin.vim
+Source17: ftp://ftp.vim.org/vol/2/vim/runtime/plugin/gzip.vim
+Source18: ftp://ftp.vim.org/vol/2/vim/runtime/filetype.vim
+Source19: ftp://ftp.vim.org/vol/2/vim/runtime/autoload/zip.vim
+Source20: ftp://ftp.vim.org/vol/2/vim/runtime/autoload/tar.vim
+Source21: ftp://ftp.vim.org/vol/2/vim/runtime/autoload/netrwFileHandlers.vim
+Source22: ftp://ftp.vim.org/vol/2/vim/runtime/autoload/netrw.vim
+Source23: ftp://ftp.vim.org/vol/2/vim/runtime/autoload/netrwSettings.vim
+
 Patch2002: vim-7.0-fixkeys.patch
 Patch2003: vim-6.2-specsyntax.patch
 Patch2004: vim-7.0-crv.patch
@@ -56,317 +66,77 @@
 # Patches 001 < 999 are patches from the base maintainer.
 # If you're as lazy as me, generate the list using
 # for i in `seq 1 14`; do printf "Patch%03d: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.%03d\n" $i $i; done
-Patch001: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.001
-Patch002: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.002
-Patch003: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.003
-Patch004: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.004
-Patch005: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.005
-Patch006: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.006
-Patch007: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.007
-Patch008: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.008
-Patch009: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.009
-Patch010: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.010
-Patch011: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.011
-Patch012: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.012
-Patch013: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.013
-Patch014: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.014
-Patch015: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.015
-Patch016: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.016
-Patch017: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.017
-Patch018: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.018
-Patch019: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.019
-Patch020: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.020
-Patch021: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.021
-Patch022: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.022
-Patch023: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.023
-Patch024: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.024
-Patch025: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.025
-Patch026: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.026
-Patch027: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.027
-Patch028: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.028
-Patch029: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.029
-Patch030: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.030
-Patch031: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.031
-Patch032: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.032
-Patch033: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.033
-Patch034: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.034
-Patch035: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.035
-Patch036: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.036
-Patch037: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.037
-Patch038: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.038
-Patch039: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.039
-Patch040: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.040
-Patch041: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.041
-Patch042: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.042
-Patch043: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.043
-Patch044: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.044
-Patch045: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.045
-Patch046: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.046
-Patch047: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.047
-Patch048: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.048
-Patch049: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.049
-Patch050: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.050
-Patch051: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.051
-Patch052: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.052
-Patch053: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.053
-Patch054: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.054
-Patch055: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.055
-Patch056: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.056
-Patch057: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.057
-Patch058: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.058
-Patch059: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.059
-Patch060: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.060
-Patch061: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.061
-Patch062: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.062
-Patch063: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.063
-Patch064: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.064
-Patch065: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.065
-Patch066: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.066
-Patch067: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.067
-Patch068: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.068
-Patch069: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.069
-Patch070: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.070
-Patch071: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.071
-Patch072: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.072
-Patch073: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.073
-Patch074: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.074
-Patch075: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.075
-Patch076: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.076
-Patch077: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.077
-Patch078: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.078
-Patch079: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.079
-Patch080: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.080
-Patch081: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.081
-Patch082: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.082
-Patch083: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.083
-Patch084: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.084
-Patch085: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.085
-Patch086: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.086
-Patch087: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.087
-Patch088: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.088
-Patch089: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.089
-Patch090: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.090
-Patch091: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.091
-Patch092: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.092
-Patch093: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.093
-Patch094: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.094
-Patch095: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.095
-Patch096: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.096
-Patch097: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.097
-Patch098: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.098
-Patch099: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.099
-Patch100: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.100
-Patch101: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.101
-Patch102: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.102
-Patch103: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.103
-Patch104: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.104
-Patch105: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.105
-Patch106: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.106
-Patch107: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.107
-Patch108: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.108
-Patch109: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.109
-Patch110: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.110
-Patch111: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.111
-Patch112: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.112
-Patch113: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.113
-Patch114: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.114
-Patch115: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.115
-Patch116: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.116
-Patch117: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.117
-Patch118: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.118
-Patch119: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.119
-Patch120: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.120
-Patch121: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.121
-Patch122: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.122
-Patch123: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.123
-Patch124: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.124
-Patch125: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.125
-Patch126: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.126
-Patch127: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.127
-Patch128: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.128
-Patch129: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.129
-Patch130: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.130
-Patch131: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.131
-Patch132: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.132
-Patch133: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.133
-Patch134: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.134
-Patch135: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.135
-Patch136: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.136
-Patch137: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.137
-Patch138: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.138
-Patch139: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.139
-Patch140: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.140
-Patch141: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.141
-Patch142: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.142
-Patch143: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.143
-Patch144: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.144
-Patch145: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.145
-Patch146: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.146
-Patch147: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.147
-Patch148: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.148
-Patch149: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.149
-Patch150: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.150
-Patch151: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.151
-Patch152: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.152
-Patch153: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.153
-Patch154: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.154
-Patch155: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.155
-Patch156: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.156
-Patch157: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.157
-Patch158: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.158
-Patch159: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.159
-Patch160: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.160
-Patch161: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.161
-Patch162: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.162
-Patch163: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.163
-Patch164: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.164
-Patch165: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.165
-Patch166: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.166
-Patch167: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.167
-Patch168: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.168
-Patch169: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.169
-Patch170: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.170
-Patch171: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.171
-Patch172: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.172
-Patch173: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.173
-Patch174: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.174
-Patch175: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.175
-Patch176: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.176
-Patch177: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.177
-Patch178: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.178
-Patch179: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.179
-Patch180: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.180
-Patch181: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.181
-Patch182: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.182
-Patch183: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.183
-Patch184: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.184
-Patch185: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.185
-Patch186: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.186
-Patch187: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.187
-Patch188: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.188
-Patch189: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.189
-Patch190: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.190
-Patch191: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.191
-Patch192: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.192
-Patch193: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.193
-Patch194: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.194
-Patch195: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.195
-Patch196: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.196
-Patch197: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.197
-Patch198: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.198
-Patch199: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.199
-Patch200: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.200
-Patch201: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.201
-Patch202: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.202
-Patch203: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.203
-Patch204: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.204
-Patch205: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.205
-Patch206: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.206
-Patch207: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.207
-Patch208: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.208
-Patch209: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.209
-Patch210: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.210
-Patch211: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.211
-Patch212: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.212
-Patch213: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.213
-Patch214: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.214
-Patch215: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.215
-Patch216: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.216
-Patch217: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.217
-Patch218: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.218
-Patch219: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.219
-Patch220: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.220
-Patch221: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.221
-Patch222: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.222
-Patch223: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.223
-Patch224: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.224
-Patch225: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.225
-Patch226: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.226
-Patch227: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.227
-Patch228: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.228
-Patch229: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.229
-Patch230: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.230
-Patch231: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.231
-Patch232: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.232
-Patch233: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.233
-Patch234: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.234
-Patch235: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.235
-Patch236: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.236
-Patch237: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.237
-Patch238: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.238
-Patch239: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.239
-Patch240: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.240
-Patch241: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.241
-Patch242: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.242
-Patch243: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.243
-Patch244: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.244
-Patch245: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.245
-Patch246: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.246
-Patch247: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.247
-Patch248: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.248
-Patch249: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.249
-Patch250: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.250
-Patch251: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.251
-Patch252: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.252
-Patch253: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.253
-Patch254: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.254
-Patch255: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.255
-Patch256: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.256
-Patch257: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.257
-Patch258: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.258
-Patch259: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.259
-Patch260: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.260
-Patch261: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.261
-Patch262: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.262
-Patch263: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.263
-Patch264: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.264
-Patch265: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.265
-Patch266: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.266
-Patch267: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.267
-Patch268: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.268
-Patch269: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.269
-Patch270: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.270
-Patch271: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.271
-Patch272: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.272
-Patch273: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.273
-Patch274: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.274
-Patch275: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.275
-Patch276: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.276
-Patch277: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.277
-Patch278: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.278
-Patch279: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.279
-Patch280: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.280
-Patch281: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.281
-Patch282: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.282
-Patch283: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.283
-Patch284: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.284
-Patch285: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.285
-Patch286: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.286
-Patch287: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.287
-Patch288: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.288
-Patch289: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.289
-Patch290: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.290
-Patch291: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.291
-Patch292: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.292
-Patch293: ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.293
+Patch001: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.001
+Patch002: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.002
+Patch003: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.003
+Patch004: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.004
+Patch005: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.005
+Patch006: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.006
+Patch007: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.007
+Patch008: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.008
+Patch009: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.009
+Patch010: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.010
+Patch011: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.011
+Patch012: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.012
+Patch013: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.013
+Patch014: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.014
+Patch015: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.015
+Patch016: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.016
+Patch017: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.017
+Patch018: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.018
+Patch019: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.019
+Patch020: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.020
+Patch021: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.021
+Patch022: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.022
+Patch023: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.023
+Patch024: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.024
+Patch025: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.025
+Patch026: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.026
+Patch027: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.027
+Patch028: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.028
+Patch029: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.029
+Patch030: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.030
+Patch031: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.031
+Patch032: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.032
+Patch033: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.033
+Patch034: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.034
+Patch035: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.035
+Patch036: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.036
+Patch037: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.037
+Patch038: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.038
+Patch039: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.039
+Patch040: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.040
+Patch041: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.041
+Patch042: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.042
+Patch043: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.043
+Patch044: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.044
+Patch045: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.045
+Patch046: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.046
+Patch047: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.047
+Patch048: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.048
+Patch049: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.049
+Patch050: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.050
+Patch051: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.051
+Patch052: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.052
+Patch053: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.053
+Patch054: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.054
+Patch055: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.055
+Patch056: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.056
+Patch057: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.057
+Patch058: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.058
+Patch059: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.059
+Patch060: ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.060
 
 Patch3000: vim-7.0-syntax.patch
 Patch3002: vim-7.1-nowarnings.patch
 Patch3003: vim-6.1-rh3.patch
 Patch3004: vim-7.0-rclocation.patch
 Patch3006: vim-6.4-checkhl.patch
-Patch3007: vim-7.0-fstabsyntax.patch
-Patch3008: vim-6.4-lib64.patch
+Patch3007: vim-7.2-fstabsyntax.patch
+Patch3008: vim-7.1-lib64.patch
 Patch3009: vim-7.0-warning.patch
 Patch3010: vim-7.0-syncolor.patch
-Patch3011: vim-7.0-vimspelltypo.patch
-Patch3012: vim-7.0-specedit.patch
-# Remove this one when the runtime files get updated (#246378):
-Patch3013: vim-7.1-ada.patch
-#
-Patch3014: vim-7.1-erlang.patch
-Patch3100: vim-selinux.patch
-Patch3101: vim-selinux2.patch
+Patch3011: vim-7.0-specedit.patch
 
 Buildroot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 BuildRequires: python-devel ncurses-devel gettext perl-devel
@@ -457,6 +227,7 @@
 Provides: gvim = %{version}-%{release}
 BuildRequires: gtk2-devel libSM-devel libXt-devel libXpm-devel
 Requires: perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version))
+Requires: hicolor-icon-theme
 
 %description X11
 VIM (VIsual editor iMproved) is an updated and improved version of the
@@ -500,22 +271,22 @@
 %patch010 -p0
 %patch011 -p0
 %patch012 -p0
-%patch013 -p0 
-%patch014 -p0 
-%patch015 -p0 
-%patch016 -p0 
-%patch017 -p0 
-%patch018 -p0 
-%patch019 -p0 
-%patch020 -p0 
-%patch021 -p0 
-%patch022 -p0 
-%patch023 -p0 
-%patch024 -p0 
-%patch025 -p0 
-%patch026 -p0 
-%patch027 -p0 
-%patch028 -p0 
+%patch013 -p0
+%patch014 -p0
+%patch015 -p0
+%patch016 -p0
+%patch017 -p0
+%patch018 -p0
+%patch019 -p0
+%patch020 -p0
+%patch021 -p0
+%patch022 -p0
+%patch023 -p0
+%patch024 -p0
+%patch025 -p0
+%patch026 -p0
+%patch027 -p0
+%patch028 -p0
 %patch029 -p0
 %patch030 -p0
 %patch031 -p0
@@ -548,239 +319,6 @@
 %patch058 -p0
 %patch059 -p0
 %patch060 -p0
-%patch061 -p0
-%patch062 -p0
-%patch063 -p0
-%patch064 -p0
-%patch065 -p0
-%patch066 -p0
-%patch067 -p0
-%patch068 -p0
-%patch069 -p0 
-%patch070 -p0 
-%patch071 -p0 
-%patch072 -p0 
-%patch073 -p0 
-%patch074 -p0 
-%patch075 -p0 
-%patch076 -p0 
-%patch077 -p0 
-%patch078 -p0 
-%patch079 -p0 
-%patch080 -p0 
-%patch081 -p0 
-%patch082 -p0 
-%patch083 -p0 
-%patch084 -p0 
-%patch085 -p0 
-%patch086 -p0 
-%patch087 -p0 
-%patch088 -p0 
-%patch089 -p0 
-%patch090 -p0 
-%patch091 -p0 
-%patch092 -p0 
-%patch093 -p0 
-%patch094 -p0 
-%patch095 -p0 
-%patch096 -p0 
-%patch097 -p0 
-%patch098 -p0 
-%patch099 -p0 
-%patch100 -p0 
-%patch101 -p0 
-%patch102 -p0 
-%patch103 -p0 
-%patch104 -p0 
-%patch105 -p0 
-%patch106 -p0 
-%patch107 -p0 
-%patch108 -p0 
-%patch109 -p0 
-%patch110 -p0 
-%patch111 -p0 
-%patch112 -p0 
-%patch113 -p0 
-%patch114 -p0 
-%patch115 -p0 
-%patch116 -p0 
-%patch117 -p0 
-%patch118 -p0 
-%patch119 -p0 
-%patch120 -p0 
-%patch121 -p0 
-%patch122 -p0 
-%patch123 -p0
-%patch124 -p0
-%patch125 -p0
-%patch126 -p0
-%patch127 -p0
-%patch128 -p0
-%patch129 -p0
-%patch130 -p0
-%patch131 -p0
-%patch132 -p0
-%patch133 -p0
-%patch134 -p0
-%patch135 -p0
-%patch136 -p0
-%patch137 -p0
-%patch138 -p0
-%patch139 -p0
-%patch140 -p0
-%patch141 -p0
-%patch142 -p0
-%patch143 -p0
-%patch144 -p0
-%patch145 -p0
-%patch146 -p0
-%patch147 -p0
-%patch148 -p0
-%patch149 -p0
-%patch150 -p0
-%patch151 -p0
-%patch152 -p0
-%patch153 -p0
-%patch154 -p0
-%patch155 -p0
-%patch156 -p0
-%patch157 -p0
-%patch158 -p0
-%patch159 -p0
-%patch160 -p0
-%patch161 -p0
-%patch162 -p0
-%patch163 -p0
-%patch164 -p0
-%patch165 -p0
-%patch166 -p0
-%patch167 -p0
-%patch168 -p0
-%patch169 -p0
-%patch170 -p0
-%patch171 -p0
-%patch172 -p0
-%patch173 -p0
-%patch174 -p0
-%patch175 -p0
-%patch176 -p0 
-%patch177 -p0 
-%patch178 -p0 
-%patch179 -p0 
-%patch180 -p0 
-%patch181 -p0 
-%patch182 -p0 
-%patch183 -p0 
-%patch184 -p0 
-%patch185 -p0 
-%patch186 -p0 
-%patch187 -p0 
-%patch188 -p0 
-%patch189 -p0 
-%patch190 -p0 
-%patch191 -p0 
-%patch192 -p0 
-%patch193 -p0 
-%patch194 -p0 
-%patch195 -p0 
-%patch196 -p0 
-%patch197 -p0 
-%patch198 -p0 
-%patch199 -p0 
-%patch200 -p0 
-%patch201 -p0 
-%patch202 -p0 
-%patch203 -p0 
-%patch204 -p0 
-%patch205 -p0 
-%patch206 -p0 
-%patch207 -p0 
-%patch208 -p0 
-%patch209 -p0 
-%patch210 -p0 
-%patch211 -p0 
-%patch212 -p0
-%patch213 -p0
-%patch214 -p0
-%patch215 -p0
-%patch216 -p0
-%patch217 -p0
-%patch218 -p0
-%patch219 -p0
-%patch220 -p0
-%patch221 -p0
-%patch222 -p0
-%patch223 -p0
-%patch224 -p0
-%patch225 -p0
-%patch226 -p0
-%patch227 -p0
-%patch228 -p0
-%patch229 -p0
-%patch230 -p0
-%patch231 -p0
-%patch232 -p0
-%patch233 -p0
-%patch234 -p0
-%patch235 -p0
-%patch236 -p0
-%patch237 -p0
-%patch238 -p0
-%patch239 -p0
-%patch240 -p0
-%patch241 -p0
-%patch242 -p0
-%patch243 -p0
-%patch244 -p0
-%patch245 -p0
-%patch246 -p0
-%patch247 -p0
-%patch248 -p0
-%patch249 -p0
-%patch250 -p0
-%patch251 -p0
-%patch252 -p0
-%patch253 -p0
-%patch254 -p0
-%patch255 -p0
-%patch256 -p0
-%patch257 -p0
-%patch258 -p0
-%patch259 -p0
-%patch260 -p0
-%patch261 -p0
-%patch262 -p0
-%patch263 -p0
-%patch264 -p0
-%patch265 -p0
-%patch266 -p0
-%patch267 -p0
-%patch268 -p0
-%patch269 -p0
-%patch270 -p0
-%patch271 -p0
-%patch272 -p0
-%patch273 -p0
-%patch274 -p0
-%patch275 -p0
-%patch276 -p0
-%patch277 -p0
-%patch278 -p0
-%patch279 -p0
-%patch280 -p0
-%patch281 -p0
-%patch282 -p0
-%patch283 -p0
-%patch284 -p0
-%patch285 -p0
-%patch286 -p0
-%patch287 -p0
-%patch288 -p0
-%patch289 -p0
-%patch290 -p0
-%patch291 -p0
-%patch292 -p0
-%patch293 -p0
 
 
 # install spell files
@@ -799,15 +337,16 @@
 %patch3009 -p1
 %patch3010 -p1
 %patch3011 -p1
-%patch3012 -p1
-%patch3013 -p1
-%patch3014 -p1
 
-%if %{WITH_SELINUX}
-%patch3100 -p1
-%patch3101 -p1
-%endif
 cp -f %{SOURCE15} runtime/syntax/forth.vim
+cp -f %{SOURCE16} runtime/plugin/netrwPlugin.vim
+cp -f %{SOURCE17} runtime/plugin/gzip.vim
+cp -f %{SOURCE18} runtime/plugin/filetype.vim
+cp -f %{SOURCE19} runtime/autoload/zip.vim
+cp -f %{SOURCE20} runtime/autoload/tar.vim
+cp -f %{SOURCE21} runtime/autoload/netrwFileHandlers.vim
+cp -f %{SOURCE22} runtime/autoload/netrw.vim
+cp -f %{SOURCE23} runtime/autoload/netrwSettings.vim
 
 
 %build
@@ -829,6 +368,11 @@
 %else
   --disable-netbeans \
 %endif
+%if %{WITH_SELINUX}
+  --enable-selinux \
+%else
+  --disable-selinux \
+%endif
 %if "%{withruby}" == "1"
   --enable-rubyinterp \
 %else
@@ -850,6 +394,11 @@
 %else
   --disable-netbeans \
 %endif
+%if %{WITH_SELINUX}
+  --enable-selinux \
+%else
+  --disable-selinux \
+%endif
 %if "%{withruby}" == "1"
   --enable-rubyinterp \
 %else
@@ -865,6 +414,11 @@
 %configure --prefix=%{_prefix} --with-features=small --with-x=no \
   --enable-multibyte \
   --disable-netbeans \
+%if %{WITH_SELINUX}
+  --enable-selinux \
+%else
+  --disable-selinux \
+%endif
   --disable-pythoninterp --disable-perlinterp --disable-tclinterp \
   --with-tlib=ncurses --enable-gui=no --disable-gpm --exec-prefix=/ \
   --with-compiledby="<bugzilla at redhat.com>" \
@@ -876,15 +430,20 @@
 rm -rf $RPM_BUILD_ROOT
 mkdir -p $RPM_BUILD_ROOT/bin
 mkdir -p $RPM_BUILD_ROOT/%{_bindir}
-mkdir -p $RPM_BUILD_ROOT/%{_datadir}/%{name}/vimfiles/after
+mkdir -p $RPM_BUILD_ROOT/%{_datadir}/%{name}/vimfiles/{after,autoload,colors,compiler,doc,ftdetect,ftplugin,indent,keymap,lang,plugin,print,spell,syntax,tutor}
+mkdir -p $RPM_BUILD_ROOT/%{_datadir}/%{name}/vimfiles/after/{autoload,colors,compiler,doc,ftdetect,ftplugin,indent,keymap,lang,plugin,print,spell,syntax,tutor}
 cp -f %{SOURCE11} .
 cp -f %{SOURCE14} $RPM_BUILD_ROOT/%{_datadir}/%{name}/vimfiles/template.spec
 cp runtime/doc/uganda.txt LICENSE
+# Those aren't Linux info files but some binary files for Amiga:
+rm -f README*.info
 
 
 cd src
 make install DESTDIR=$RPM_BUILD_ROOT BINDIR=/bin
+make installgtutorbin  DESTDIR=$RPM_BUILD_ROOT BINDIR=/bin
 mv $RPM_BUILD_ROOT/bin/xxd $RPM_BUILD_ROOT/%{_bindir}/xxd
+mv $RPM_BUILD_ROOT/bin/gvimtutor $RPM_BUILD_ROOT/%{_bindir}/gvimtutor
 mkdir -p $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/{16x16,32x32,48x48,64x64}/apps
 install -m755 gvim $RPM_BUILD_ROOT/%{_bindir}/gvim
 install -p -m644 %{SOURCE7} \
@@ -912,20 +471,17 @@
   rm -f .%{_mandir}/man1/rvim.1
   ln -sf vim.1.gz .%{_mandir}/man1/vi.1.gz
   ln -sf vim.1.gz .%{_mandir}/man1/rvi.1.gz
-  ln -sf vim.1.gz .%{_mandir}/man1/rvim.1.gz
   ln -sf vim.1.gz .%{_mandir}/man1/vimdiff.1.gz
   ln -sf gvim ./%{_bindir}/gview
   ln -sf gvim ./%{_bindir}/gex
   ln -sf gvim ./%{_bindir}/evim
   ln -sf gvim ./%{_bindir}/gvimdiff
-  ln -sf vim.1.gz .%{_mandir}/man1/gvim.1.gz
-  ln -sf vim.1.gz .%{_mandir}/man1/gvimdiff.1.gz
   ln -sf gvim ./%{_bindir}/vimx
   %if "%{desktop_file}" == "1"
     mkdir -p $RPM_BUILD_ROOT/%{_datadir}/applications
     desktop-file-install --vendor fedora \
         --dir $RPM_BUILD_ROOT/%{_datadir}/applications \
-        --add-category "Application;Development;X-Red-Hat-Base" \
+        --add-category "Development;TextEditor;X-Red-Hat-Base" \
         %{SOURCE3}
   %else
     mkdir -p ./%{_sysconfdir}/X11/applnk/Applications
@@ -940,7 +496,7 @@
 mkdir conv
    iconv -f CP1252 -t UTF8 tutor.ca > conv/tutor.ca
    iconv -f CP1252 -t UTF8 tutor.it > conv/tutor.it
-   iconv -f CP1253 -t UTF8 tutor.gr > conv/tutor.gr
+   #iconv -f CP1253 -t UTF8 tutor.gr > conv/tutor.gr
    iconv -f CP1252 -t UTF8 tutor.fr > conv/tutor.fr
    iconv -f CP1252 -t UTF8 tutor.es > conv/tutor.es
    iconv -f CP1252 -t UTF8 tutor.de > conv/tutor.de
@@ -954,7 +510,7 @@
    iconv -f ISO-8859-2 -t UTF8 tutor.sk > conv/tutor.sk
    iconv -f KOI8R -t UTF8 tutor.ru > conv/tutor.ru
    iconv -f CP1252 -t UTF8 tutor.sv > conv/tutor.sv
-   mv -f tutor.gr.cp737 tutor.ja.euc tutor.ja.sjis tutor.ko.euc tutor.pl.cp1250 tutor.zh.big5 tutor.ru.cp1251 tutor.zh.euc conv/
+   mv -f tutor.ja.euc tutor.ja.sjis tutor.ko.euc tutor.pl.cp1250 tutor.zh.big5 tutor.ru.cp1251 tutor.zh.euc conv/
    rm -f tutor.ca tutor.de tutor.es tutor.fr tutor.gr tutor.it tutor.ja.utf-8 tutor.ko.utf-8 tutor.no tutor.pl tutor.sk tutor.ru tutor.sv
 mv -f conv/* .
 rmdir conv
@@ -1008,6 +564,23 @@
   done
 )
 
+# Remove not UTF-8 manpages
+for i in pl.ISO8859-2 it.ISO8859-1 ru.KOI8-R fr.ISO8859-1; do
+  rm -rf $RPM_BUILD_ROOT/%{_mandir}/$i
+done
+
+# use common man1/ru directory
+mv $RPM_BUILD_ROOT/%{_mandir}/ru.UTF-8 $RPM_BUILD_ROOT/%{_mandir}/ru
+
+# Remove duplicate man pages
+for i in fr.UTF-8 it.UTF-8 pl.UTF-8; do
+  rm -rf $RPM_BUILD_ROOT/%{_mandir}/$i
+done
+
+for i in rvim gvim.1 gvimdiff.1; do 
+  echo ".so man1/vim.1" > $RPM_BUILD_ROOT/%{_mandir}/man1/$i
+done
+
 %post X11
 touch --no-create %{_datadir}/icons/hicolor
 if [ -x /%{_bindir}/gtk-update-icon-cache ]; then
@@ -1035,6 +608,21 @@
 %dir %{_datadir}/%{name}/%{vimdir}
 %dir %{_datadir}/%{name}/vimfiles
 %dir %{_datadir}/%{name}/vimfiles/after
+%dir %{_datadir}/%{name}/vimfiles/after/*
+%dir %{_datadir}/%{name}/vimfiles/autoload
+%dir %{_datadir}/%{name}/vimfiles/colors
+%dir %{_datadir}/%{name}/vimfiles/compiler
+%dir %{_datadir}/%{name}/vimfiles/doc
+%dir %{_datadir}/%{name}/vimfiles/ftdetect
+%dir %{_datadir}/%{name}/vimfiles/ftplugin
+%dir %{_datadir}/%{name}/vimfiles/indent
+%dir %{_datadir}/%{name}/vimfiles/keymap
+%dir %{_datadir}/%{name}/vimfiles/lang
+%dir %{_datadir}/%{name}/vimfiles/plugin
+%dir %{_datadir}/%{name}/vimfiles/print
+%dir %{_datadir}/%{name}/vimfiles/spell
+%dir %{_datadir}/%{name}/vimfiles/syntax
+%dir %{_datadir}/%{name}/vimfiles/tutor
 %{_datadir}/%{name}/vimfiles/template.spec
 %{_datadir}/%{name}/%{vimdir}/autoload
 %{_datadir}/%{name}/%{vimdir}/colors
@@ -1060,7 +648,9 @@
 %lang(cs) %{_datadir}/%{name}/%{vimdir}/lang/cs
 %lang(de) %{_datadir}/%{name}/%{vimdir}/lang/de
 %lang(en_GB) %{_datadir}/%{name}/%{vimdir}/lang/en_GB
+%lang(eo) %{_datadir}/%{name}/%{vimdir}/lang/eo
 %lang(es) %{_datadir}/%{name}/%{vimdir}/lang/es
+%lang(fi) %{_datadir}/%{name}/%{vimdir}/lang/fi
 %lang(fr) %{_datadir}/%{name}/%{vimdir}/lang/fr
 %lang(ga) %{_datadir}/%{name}/%{vimdir}/lang/ga
 %lang(it) %{_datadir}/%{name}/%{vimdir}/lang/it
@@ -1068,6 +658,7 @@
 %lang(ko) %{_datadir}/%{name}/%{vimdir}/lang/ko
 %lang(no) %{_datadir}/%{name}/%{vimdir}/lang/no
 %lang(pl) %{_datadir}/%{name}/%{vimdir}/lang/pl
+%lang(pt_BR) %{_datadir}/%{name}/%{vimdir}/lang/pt_BR
 %lang(ru) %{_datadir}/%{name}/%{vimdir}/lang/ru
 %lang(sk) %{_datadir}/%{name}/%{vimdir}/lang/sk
 %lang(sv) %{_datadir}/%{name}/%{vimdir}/lang/sv
@@ -1085,10 +676,10 @@
 %{_mandir}/man1/rvi.*
 %{_mandir}/man1/rview.*
 %{_mandir}/man1/xxd.*
-%lang(fr) %{_mandir}/fr*/*/*
-%lang(it) %{_mandir}/it*/*/*
-%lang(ru) %{_mandir}/ru*/*/*
-%lang(pl) %{_mandir}/pl*/*/*
+%lang(fr) %{_mandir}/fr/man1/*
+%lang(it) %{_mandir}/it/man1/*
+%lang(pl) %{_mandir}/pl/man1/*
+%lang(ru) %{_mandir}/ru/man1/*
 
 %if %{withvimspell}
 %files spell
@@ -1175,6 +766,7 @@
 %else
 /%{_sysconfdir}/X11/applnk/*/gvim.desktop
 %endif
+%{_bindir}/gvimtutor
 %{_bindir}/gvim
 %{_bindir}/gvimdiff
 %{_bindir}/gview
@@ -1186,353 +778,46 @@
 %{_datadir}/icons/hicolor/*/apps/*
 
 %changelog
-* Sun May 25 2008 Dennis Gilmore <dennis at ausil.us> 7.1.293-1.1
-- minor rebuild for sparc
-
-* Fri Apr 11 2008 Karsten Hopp <karsten at redhat.com> 7.1.293-1
-- patchlevel 293
-- update forth syntax file (Benjamin Krill)
-
-* Wed Apr 02 2008 Karsten Hopp <karsten at redhat.com> 7.1.291-1
-- patchlevel 291, more fixes for leftover /tmp/cscope* files 
-
-* Tue Mar 18 2008 Tom "spot" Callaway <tcallawa at redhat.com> 7.1.283-2
-- add Requires for versioned perl (libperl.so)
-
-* Mon Mar 17 2008 Karsten Hopp <karsten at redhat.com> 7.1.283-1
-- patchlevel 283, fixes leftover cscope files in /tmp
-
-* Wed Mar 12 2008 Karsten Hopp <karsten at redhat.com> 7.1.273-1
-- update to patchlevel 273, this fixes #436902
-
-* Tue Mar 11 2008 Karsten Hopp <karsten at redhat.com> 7.1.270-1
-- patchlevel 270
-- don't write swapfile on most common locations for USB-sticks (#436752)
-- add spec file template
-
-* Mon Mar 10 2008 Tom "spot" Callaway <tcallawa at redhat.com> 7.1.269-2
-- BR: ExtUtils::Embed to find perl headers
-
-* Mon Mar 10 2008 Karsten Hopp <karsten at redhat.com> 7.1.269-1
-- patchlevel 269
-- rebuild with new perl (#436731)
-
-* Mon Mar 03 2008 Karsten Hopp <karsten at redhat.com> 7.1.266-1
-- patchlevel 266
-- add minimal help page for /bin/vi (#173974)
-
-* Mon Feb 25 2008 Karsten Hopp <karsten at redhat.com> 7.1.262-1
-- patchlevel 262
-- add fix for #231124, BOM was ignored
-- enable ruby interpreter (#215207)
-- add filetype for Erlang header files (#417371)
-
-* Mon Feb 11 2008 Karsten Hopp <karsten at redhat.com> 7.1.245-1
-- patchlevel 245
-
-* Sun Jan 27 2008 Karsten Hopp <karsten at redhat.com> 7.1.242-1
-- patchlevel 242
-
-* Fri Jan 18 2008 Karsten Hopp <karsten at redhat.com> 7.1.233-2
-- silence taglist plugin (#429200)
-
-* Fri Jan 18 2008 Karsten Hopp <karsten at redhat.com> 7.1.233-1
-- patchlevel 233
-- fix ada patch
-
-* Wed Jan 16 2008 Karsten Hopp <karsten at redhat.com> 7.1.230-2
-- add newer ada runtime files to fix bugzilla #246378
-
-* Wed Jan 16 2008 Karsten Hopp <karsten at redhat.com> 7.1.230-1
-- patchlevel 230, fixes memory leak
-
-* Mon Jan 14 2008 Karsten Hopp <karsten at redhat.com> 7.1.228-1
-- patchlevel 228
-- allow overwriting WITH_SELING at build time (#427710)
-
-* Thu Jan 10 2008 Karsten Hopp <karsten at redhat.com> 7.1.214-1
-- patchlevel 214
-
-* Mon Jan 07 2008 Karsten Hopp <karsten at redhat.com> 7.1.211-1
-- patchlevel 211
-
-* Sat Dec 22 2007 Karsten Hopp <karsten at redhat.com> 7.1.175-1
-- patchlevel 175
-
-* Thu Nov 22 2007 Karsten Hopp <karsten at redhat.com> 7.1.159-1
-- patchlevel 159
-- vim-enhanced requires which for vimtutor (#395371)
-
-* Thu Oct 04 2007 Karsten Hopp <karsten at redhat.com> 7.1.135-1
-- patchlevel 135
-
-* Wed Sep 26 2007 Karsten Hopp <karsten at redhat.com> 7.1.122-1
-- patchlevel 122
-
-* Tue Sep 25 2007 Karsten Hopp <karsten at redhat.com> 7.1.119-1
-- patchlevel 119
-
-* Mon Sep 24 2007 Karsten Hopp <karsten at redhat.com> 7.1.116-1
-- patchlevel 116
-
-* Fri Sep 07 2007 Karsten Hopp <karsten at redhat.com> 7.1.100-1
-- patchlevel 100
-
-* Fri Aug 24 2007 Karsten Hopp <karsten at redhat.com> 7.1.87-1
-- add build requirement perl-devel
-- fix tarball unpacking
-- patchlevel 87
-
-* Wed Aug 15 2007 Karsten Hopp <karsten at redhat.com> 7.1.77-1
-- patchlevel 77
-
-* Mon Aug 13 2007 Karsten Hopp <karsten at redhat.com> 7.1.68-1
-- patchlevel 68
-
-* Thu Aug 02 2007 Karsten Hopp <karsten at redhat.com> 7.1.47-1
-- patchlevel 47
+* Mon Dec 01 2008 Karsten Hopp <karsten at redhat.com> 7.2.060-1
+- patchlevel 60
 
-* Wed Jul 11 2007 Karsten Hopp <karsten at redhat.com> 7.1.28-1
-- patchlevel 28
+* Mon Nov 10 2008 Karsten Hopp <karsten at redhat.com> 7.2.032-1
+- patchlevel 32
 
-* Wed Jun 27 2007 Karsten Hopp <karsten at redhat.com> 7.1.12-1
-- Patchlevel 12
+* Mon Nov 03 2008 Karsten Hopp <karsten at redhat.com> 7.2.026-2
+- add more /usr/share/vim/vimfiles directories (#444387)
 
-* Mon Jun 04 2007 Karsten Hopp <karsten at redhat.com> 7.1.2-1
-- vim 7.1
-- drop 240 patches
+* Mon Nov 03 2008 Karsten Hopp <karsten at redhat.com> 7.2.026-1
+- patchlevel 26
+- own some directories in /usr/share/vim/vimfiles (#469491)
+
+* Tue Oct 21 2008 Karsten Hopp <karsten at redhat.com> 7.2.025-2
+- re-enable clean
+
+* Mon Oct 20 2008 Karsten Hopp <karsten at redhat.com> 7.2.025-1
+- patchlevel 25
+- add Categories tag to desktop file (#226526)
+- add requirement on hicolor-icon-theme to vim-X11 (#226526)
+- drop Amiga info files (#226526)
+- remove non-utf8 man pages (#226526)
+- drop Application from categories (#226526)
 
-* Tue May 22 2007 Karsten Hopp <karsten at redhat.com> 7.0.235-1
-- Don't wake up system with blinking gvim cursor:
-  http://www.linuxpowertop.org/known.php
-
-* Mon Apr 30 2007 Karsten Hopp <karsten at redhat.com> 7.0.235-1
-- update to patchlevel 235, fixes modeline issues 
-
-* Tue Apr 17 2007 Karsten Hopp <karsten at redhat.com> 7.0.224-3
-- fix typo in require line (vim-X11 - 2:7.0.224-2.fc7.i386 requires 4)
-
-* Mon Apr 16 2007 Karsten Hopp <karsten at redhat.com> 7.0.224-2
-- use more macros
-- drop BR perl
-- move license to main doc directory
-- set vendor to 'fedora' (desktop-file)
-- don't own man directories
-- preserve timestamps of non-generated files
-- run update-desktop-database
-
-* Thu Apr 05 2007 Karsten Hopp <karsten at redhat.com> 7.0.224-1
-- vim-X11 provides gvim
-
-* Fri Mar 30 2007 Karsten Hopp <karsten at redhat.com> 7.0.224-1
-- patchlevel 224
-
-* Wed Feb 21 2007 Karsten Hopp <karsten at redhat.com> 7.0.195-2
-- rpmlint fixes (#226526)
-
-* Tue Feb 13 2007 Karsten Hopp <karsten at redhat.com> 7.0.195-1
-- patchlevel 195
-
-* Mon Feb 12 2007 Karsten Hopp <karsten at redhat.com> 7.0.192-1
-- patchlevel 192
-- test fix for highlighting problems with curly brackets in #define (#203577)
-
-* Tue Feb 06 2007 Karsten Hopp <karsten at redhat.com> 7.0.191-2
-- uses ncurses instead of ncursesw
-
-* Tue Feb 06 2007 Karsten Hopp <karsten at redhat.com> 7.0.191-1
-- patchlevel 191
-- clean up spec file for rpmlint
-- drop cvim stuff
-
-* Tue Jan 23 2007 Karsten Hopp <karsten at redhat.com> 7.0.188-3
-- patchlevel 188
-
-* Mon Jan 08 2007 Karsten Hopp <karsten at redhat.com> 7.0.178-3
-- enable filetype plugin
-
-* Thu Dec 14 2006 Karsten Hopp <karsten at redhat.com> 7.0.178-2
-- build vim-minimal with features=small instead of tiny (#219605)
-
-* Tue Dec 12 2006 Karsten Hopp <karsten at redhat.com> 7.0.178-1
-- add vimfiles/after to list of owned directories
-
-* Tue Dec 12 2006 Karsten Hopp <karsten at redhat.com> 7.0.178-1
-- patchlevel 178
-- use macros 
-- Resolves: #219154
-  add directory /usr/share/vim/vimfiles for plugins
-
-* Thu Dec  7 2006 Jeremy Katz <katzj at redhat.com>
-- rebuild for python 2.5
-
-* Wed Nov 22 2006 Karsten Hopp <karsten at redhat.com> 7.0.168-1
-- patchlevel 168
-- link with ncurses
-
-* Tue Nov 21 2006 Karsten Hopp <karsten at redhat.com> 7.0.164-2
-- patchlevel 164
-
-* Mon Nov 13 2006 Karsten Hopp <karsten at redhat.com> 7.0.162-2
-- fix lang problem in spec file mode
-- use old g:packager variable when set
-
-* Fri Nov 10 2006 Karsten Hopp <karsten at redhat.com> 7.0.162-1
-- patchlevel 162
-
-* Mon Nov 06 2006 Karsten Hopp <karsten at redhat.com> 7.0.158-1
-- patchlevel 158
-
-* Tue Oct 17 2006 Karsten Hopp <karsten at redhat.com> 7.0.139-1
-- patchlevel 139
-- provide vim, vi (#210950)
-
-* Thu Sep 28 2006 Jeremy Katz <katzj at redhat.com> - 7.0.109-3
-- disable vim-spell subpackage as it pushes us over CD boundaries
-
-* Tue Sep 28 2006 Karsten Hopp <karsten at redhat.com> 7.0.109-2
-- fix typo in vimspell.sh (#203178)
-
-* Tue Sep 19 2006 Karsten Hopp <karsten at redhat.com> 7.0.109-1
-- update to patchlevel 109 to fix some redraw problems
-- fix invisible comments in diff mode (#204042)
-
-* Tue Sep 12 2006 Karsten Hopp <karsten at redhat.com> 7.0.100-1
-- Patchlevel 100
-- replace runtime files with newer ones
-
-* Mon Sep 11 2006 Karsten Hopp <karsten at redhat.de> 7.0.099-1
-- Patchlevel 99
-
-* Mon Sep 05 2006 Karsten Hopp <karsten at redhat.de> 7.0.086-1
-- Patchlevel 86
-
-* Mon Sep 04 2006 Karsten Hopp <karsten at redhat.de> 7.0.083-1
-- Patchlevel 83
-
-* Wed Aug 30 2006 Karsten Hopp <karsten at redhat.de> 7.0.076-1
-- Patchlevel 76
-
-* Thu Aug 25 2006 Karsten Hopp <karsten at redhat.de> 7.0.066-2
-- fix vimdiff colors (#204042)
-
-* Thu Aug 24 2006 Karsten Hopp <karsten at redhat.de> 7.0.066-1
-- fix syntax patch (#203798)
-- patchlevel 66
-
-* Wed Aug 17 2006 Karsten Hopp <karsten at redhat.de> 7.0.063-1
-- Patchlevel 63
-
-* Wed Aug 15 2006 Karsten Hopp <karsten at redhat.de> 7.0.053-1
-- Patchlevel 53
-- Buildrequires libXpm-devel
-
-* Wed Aug 09 2006 Karsten Hopp <karsten at redhat.de> 7.0.050-1
-- Patchlevel 50
-
-* Thu Aug 03 2006  Karsten Hopp <karsten at redhat.de> 7.0.042-2
-- clean up spec file
-
-* Mon Jul 24 2006 Karsten Hopp <karsten at redhat.de> 7.0.042-1
-- patchlevel 42
-
-* Wed Jul 20 2006 Karsten Hopp <karsten at redhat.de> 7.0.039-1
-- patchlevel 39
-- allow usage of $VIM variable (#199465)
-
-* Wed Jul 12 2006 Jesse Keating <jkeating at redhat.com> - 2:7.0.035-1.1
-- rebuild
-
-* Tue Jun 27 2006 Karsten Hopp <karsten at redhat.de> 7.0.035-1
-- patchlevel 35
-
-* Wed Jun 21 2006 Karsten Hopp <karsten at redhat.de> 7.0.022-2
-- add binfmt_misc rpc_pipefs to fstypes for better mtab highlighting
-
-* Tue Jun 20 2006 Karsten Hopp <karsten at redhat.de> 7.0.022-1
+* Tue Sep 30 2008 Karsten Hopp <karsten at redhat.com> 7.2.022-1
 - patchlevel 22
 
-* Tue Jun 20 2006 Karsten Hopp <karsten at redhat.de> 7.0.020-1
-- patchlevel 20
+* Mon Sep 08 2008 Karsten Hopp <karsten at redhat.com> 7.2.013-1
+- patchlevel 13
+
+* Mon Aug 25 2008 Karsten Hopp <karsten at redhat.com> 7.2.006-1
+- patchlevel 6
 
-* Tue Jun 20 2006 Karsten Hopp <karsten at redhat.de> 7.0.019-1
-- patchlevel 19
-- buildrequire autoconf
-
-* Tue May 30 2006 Karsten Hopp <karsten at redhat.de> 7.0.017-1
-- patchlevel 17, although it affects just the Motif version
-- own some directories (#192787)
-
-* Sat May 13 2006 Karsten Hopp <karsten at redhat.de> 7.0.016-1
-- patchlevel 016
-
-* Fri May 12 2006 Karsten Hopp <karsten at redhat.de> 7.0.012-1
-- patchlevel 012
-
-* Thu May 11 2006 Karsten Hopp <karsten at redhat.de> 7.0.010-1
-- patchlevel 010
-
-* Wed May 10 2006 Karsten Hopp <karsten at redhat.de> 7.0.005-2
-- patchlevel 005
-- move older changelogs (<7.0) into a file, no need to keep them 
-  in the rpm database
-
-* Tue May 09 2006 Karsten Hopp <karsten at redhat.de> 7.0.000-2
-- bump epoch, the buildsystem thinks 7.0.000-2 is older than 7.0.g001-1
-  although rpm is quite happy with it.
-
-* Mon May 08 2006 Karsten Hopp <karsten at redhat.de> 7.0.000-1
-- vim-7.0 
-- Spell checking support for about 50 languages
-- Intelligent completion for C, HTML, Ruby, Python, PHP, etc.
-- Tab pages, each containing multiple windows
-- Undo branches: never accidentally lose text again
-- Vim script supports Lists and Dictionaries (similar to Python)
-- Vim script profiling
-- Improved Unicode support
-- Highlighting of cursor line, cursor column and matching braces
-- Translated manual pages support.
-- Internal grep; works on all platforms, searches compressed files
-- Browsing remote directories, zip and tar archives
-- Printing multi-byte text
-- find details about the changes since vim-6.4 with :help version7
-
-- fix SE Linux context of temporary (.swp) files (#189968)
-- /bin/vi /vim-minimal is now using /etc/virc to avoid .rpmnew files
-  when updating
-
-* Tue May 02 2006 Karsten Hopp <karsten at redhat.de> 7.0.g001-1
-- vim-7.0g BETA
-
-* Fri Apr 28 2006 Karsten Hopp <karsten at redhat.de> 7.0.f001-1
-- vim-7.0f3 BETA
-
-* Thu Apr 20 2006 Karsten Hopp <karsten at redhat.de> 7.0.e001-1
-- vim-7.0e BETA
-
-* Tue Apr 11 2006 Karsten Hopp <karsten at redhat.de> 7.0.d001-1
-- vim-7.0d BETA
-
-* Fri Apr 07 2006 Karsten Hopp <karsten at redhat.de> 7.0c.000-3
-- fix vimrc filename
-
-* Thu Apr 06 2006 Karsten Hopp <karsten at redhat.de> 7.0c.000-2
-- new snapshot
-
-* Tue Apr 04 2006 Karsten Hopp <karsten at redhat.de> 7.0c.000-1
-- vim-7.0c BETA
-
-* Wed Mar 22 2006 Karsten Hopp <karsten at redhat.de> 7.0aa.000-3
-- Rawhide build as vim, opposed to vim7 (prerelease)
-- conflict with older man-pages-{it,fr} packages
-- cleanup lang stuff
-
-* Thu Mar 16 2006 Karsten Hopp <karsten at redhat.de> 7.0aa.000-2
-- make it coexist with vim-6 (temporarily)
-- new CVS snapshot
-
-* Tue Mar 14 2006 Karsten Hopp <karsten at redhat.de> 7.0aa.000-1
-- vim7 pre Release
-- older changelogs available in Changelog.rpm
+* Mon Aug 18 2008 Karsten Hopp <karsten at redhat.com> 7.2.002-1
+- patchlevel 2
+- fix specfile template (#446070)
+- old specfile changelog moved to Changelog.rpm
+
+* Fri Aug 14 2008 Karsten Hopp <karsten at redhat.com> 7.2.000-1
+- vim 7.2
+- drop 330 patches
 
 # vim:nrformats-=octal


--- 7.1.001 DELETED ---


--- 7.1.002 DELETED ---


--- 7.1.003 DELETED ---


--- 7.1.004 DELETED ---


--- 7.1.005 DELETED ---


--- 7.1.006 DELETED ---


--- 7.1.007 DELETED ---


--- 7.1.008 DELETED ---


--- 7.1.009 DELETED ---


--- 7.1.010 DELETED ---


--- 7.1.011 DELETED ---


--- 7.1.012 DELETED ---


--- 7.1.013 DELETED ---


--- 7.1.014 DELETED ---


--- 7.1.015 DELETED ---


--- 7.1.016 DELETED ---


--- 7.1.017 DELETED ---


--- 7.1.018 DELETED ---


--- 7.1.019 DELETED ---


--- 7.1.020 DELETED ---


--- 7.1.021 DELETED ---


--- 7.1.022 DELETED ---


--- 7.1.023 DELETED ---


--- 7.1.024 DELETED ---


--- 7.1.025 DELETED ---


--- 7.1.026 DELETED ---


--- 7.1.027 DELETED ---


--- 7.1.028 DELETED ---


--- 7.1.029 DELETED ---


--- 7.1.030 DELETED ---


--- 7.1.031 DELETED ---


--- 7.1.032 DELETED ---


--- 7.1.033 DELETED ---


--- 7.1.034 DELETED ---


--- 7.1.035 DELETED ---


--- 7.1.036 DELETED ---


--- 7.1.037 DELETED ---


--- 7.1.038 DELETED ---


--- 7.1.039 DELETED ---


--- 7.1.040 DELETED ---


--- 7.1.041 DELETED ---


--- 7.1.042 DELETED ---


--- 7.1.043 DELETED ---


--- 7.1.044 DELETED ---


--- 7.1.045 DELETED ---


--- 7.1.046 DELETED ---


--- 7.1.047 DELETED ---


--- 7.1.048 DELETED ---


--- 7.1.049 DELETED ---


--- 7.1.050 DELETED ---


--- 7.1.051 DELETED ---


--- 7.1.052 DELETED ---


--- 7.1.053 DELETED ---


--- 7.1.054 DELETED ---


--- 7.1.055 DELETED ---


--- 7.1.056 DELETED ---


--- 7.1.057 DELETED ---


--- 7.1.058 DELETED ---


--- 7.1.059 DELETED ---


--- 7.1.060 DELETED ---


--- 7.1.061 DELETED ---


--- 7.1.062 DELETED ---


--- 7.1.063 DELETED ---


--- 7.1.064 DELETED ---


--- 7.1.065 DELETED ---


--- 7.1.066 DELETED ---


--- 7.1.067 DELETED ---


--- 7.1.068 DELETED ---


--- 7.1.069 DELETED ---


--- 7.1.070 DELETED ---


--- 7.1.071 DELETED ---


--- 7.1.072 DELETED ---


--- 7.1.073 DELETED ---


--- 7.1.074 DELETED ---


--- 7.1.075 DELETED ---


--- 7.1.076 DELETED ---


--- 7.1.077 DELETED ---


--- 7.1.078 DELETED ---


--- 7.1.079 DELETED ---


--- 7.1.080 DELETED ---


--- 7.1.081 DELETED ---


--- 7.1.082 DELETED ---


--- 7.1.083 DELETED ---


--- 7.1.084 DELETED ---


--- 7.1.085 DELETED ---


--- 7.1.086 DELETED ---


--- 7.1.087 DELETED ---


--- 7.1.088 DELETED ---


--- 7.1.089 DELETED ---


--- 7.1.090 DELETED ---


--- 7.1.091 DELETED ---


--- 7.1.092 DELETED ---


--- 7.1.093 DELETED ---


--- 7.1.094 DELETED ---


--- 7.1.095 DELETED ---


--- 7.1.096 DELETED ---


--- 7.1.097 DELETED ---


--- 7.1.098 DELETED ---


--- 7.1.099 DELETED ---


--- 7.1.100 DELETED ---


--- 7.1.101 DELETED ---


--- 7.1.102 DELETED ---


--- 7.1.103 DELETED ---


--- 7.1.104 DELETED ---


--- 7.1.105 DELETED ---


--- 7.1.106 DELETED ---


--- 7.1.107 DELETED ---


--- 7.1.108 DELETED ---


--- 7.1.109 DELETED ---


--- 7.1.110 DELETED ---


--- 7.1.111 DELETED ---


--- 7.1.112 DELETED ---


--- 7.1.113 DELETED ---


--- 7.1.114 DELETED ---


--- 7.1.115 DELETED ---


--- 7.1.116 DELETED ---


--- 7.1.117 DELETED ---


--- 7.1.118 DELETED ---


--- 7.1.119 DELETED ---


--- 7.1.120 DELETED ---


--- 7.1.121 DELETED ---


--- 7.1.122 DELETED ---


--- 7.1.123 DELETED ---


--- 7.1.124 DELETED ---


--- 7.1.125 DELETED ---


--- 7.1.126 DELETED ---


--- 7.1.127 DELETED ---


--- 7.1.128 DELETED ---


--- 7.1.129 DELETED ---


--- 7.1.130 DELETED ---


--- 7.1.131 DELETED ---


--- 7.1.132 DELETED ---


--- 7.1.133 DELETED ---


--- 7.1.134 DELETED ---


--- 7.1.135 DELETED ---


--- 7.1.136 DELETED ---


--- 7.1.137 DELETED ---


--- 7.1.138 DELETED ---


--- 7.1.139 DELETED ---


--- 7.1.140 DELETED ---


--- 7.1.141 DELETED ---


--- 7.1.142 DELETED ---


--- 7.1.143 DELETED ---


--- 7.1.144 DELETED ---


--- 7.1.145 DELETED ---


--- 7.1.146 DELETED ---


--- 7.1.147 DELETED ---


--- 7.1.148 DELETED ---


--- 7.1.149 DELETED ---


--- 7.1.150 DELETED ---


--- 7.1.151 DELETED ---


--- 7.1.152 DELETED ---


--- 7.1.153 DELETED ---


--- 7.1.154 DELETED ---


--- 7.1.155 DELETED ---


--- 7.1.156 DELETED ---


--- 7.1.157 DELETED ---


--- 7.1.158 DELETED ---


--- 7.1.159 DELETED ---


--- 7.1.160 DELETED ---


--- 7.1.161 DELETED ---


--- 7.1.162 DELETED ---


--- 7.1.163 DELETED ---


--- 7.1.164 DELETED ---


--- 7.1.165 DELETED ---


--- 7.1.166 DELETED ---


--- 7.1.167 DELETED ---


--- 7.1.168 DELETED ---


--- 7.1.169 DELETED ---


--- 7.1.170 DELETED ---


--- 7.1.171 DELETED ---


--- 7.1.172 DELETED ---


--- 7.1.173 DELETED ---


--- 7.1.174 DELETED ---


--- 7.1.175 DELETED ---


--- 7.1.176 DELETED ---


--- 7.1.177 DELETED ---


--- 7.1.178 DELETED ---


--- 7.1.179 DELETED ---


--- 7.1.180 DELETED ---


--- 7.1.181 DELETED ---


--- 7.1.182 DELETED ---


--- 7.1.183 DELETED ---


--- 7.1.184 DELETED ---


--- 7.1.185 DELETED ---


--- 7.1.186 DELETED ---


--- 7.1.187 DELETED ---


--- 7.1.188 DELETED ---


--- 7.1.189 DELETED ---


--- 7.1.190 DELETED ---


--- 7.1.191 DELETED ---


--- 7.1.192 DELETED ---


--- 7.1.193 DELETED ---


--- 7.1.194 DELETED ---


--- 7.1.195 DELETED ---


--- 7.1.196 DELETED ---


--- 7.1.197 DELETED ---


--- 7.1.198 DELETED ---


--- 7.1.199 DELETED ---


--- 7.1.200 DELETED ---


--- 7.1.201 DELETED ---


--- 7.1.202 DELETED ---


--- 7.1.203 DELETED ---


--- 7.1.204 DELETED ---


--- 7.1.205 DELETED ---


--- 7.1.206 DELETED ---


--- 7.1.207 DELETED ---


--- 7.1.208 DELETED ---


--- 7.1.209 DELETED ---


--- 7.1.210 DELETED ---


--- 7.1.211 DELETED ---


--- 7.1.212 DELETED ---


--- 7.1.213 DELETED ---


--- 7.1.214 DELETED ---


--- 7.1.215 DELETED ---


--- 7.1.216 DELETED ---


--- 7.1.217 DELETED ---


--- 7.1.218 DELETED ---


--- 7.1.219 DELETED ---


--- 7.1.220 DELETED ---


--- 7.1.221 DELETED ---


--- 7.1.222 DELETED ---


--- 7.1.223 DELETED ---


--- 7.1.224 DELETED ---


--- 7.1.225 DELETED ---


--- 7.1.226 DELETED ---


--- 7.1.227 DELETED ---


--- 7.1.228 DELETED ---


--- 7.1.229 DELETED ---


--- 7.1.230 DELETED ---


--- 7.1.231 DELETED ---


--- 7.1.232 DELETED ---


--- 7.1.233 DELETED ---


--- 7.1.234 DELETED ---


--- 7.1.235 DELETED ---


--- 7.1.236 DELETED ---


--- 7.1.237 DELETED ---


--- 7.1.238 DELETED ---


--- 7.1.239 DELETED ---


--- 7.1.240 DELETED ---


--- 7.1.241 DELETED ---


--- 7.1.242 DELETED ---


--- 7.1.243 DELETED ---


--- 7.1.244 DELETED ---


--- 7.1.245 DELETED ---


--- 7.1.246 DELETED ---


--- 7.1.247 DELETED ---


--- 7.1.248 DELETED ---


--- 7.1.249 DELETED ---


--- 7.1.250 DELETED ---


--- 7.1.251 DELETED ---


--- 7.1.252 DELETED ---


--- 7.1.253 DELETED ---


--- 7.1.254 DELETED ---


--- 7.1.255 DELETED ---


--- 7.1.256 DELETED ---


--- 7.1.257 DELETED ---


--- 7.1.258 DELETED ---


--- 7.1.259 DELETED ---


--- 7.1.260 DELETED ---


--- 7.1.261 DELETED ---


--- 7.1.262 DELETED ---


--- 7.1.263 DELETED ---


--- 7.1.264 DELETED ---


--- 7.1.265 DELETED ---


--- 7.1.266 DELETED ---


--- 7.1.267 DELETED ---


--- 7.1.268 DELETED ---


--- 7.1.269 DELETED ---


--- 7.1.270 DELETED ---


--- 7.1.271 DELETED ---


--- 7.1.272 DELETED ---


--- 7.1.273 DELETED ---


--- 7.1.274 DELETED ---


--- 7.1.275 DELETED ---


--- 7.1.276 DELETED ---


--- 7.1.277 DELETED ---


--- 7.1.278 DELETED ---


--- 7.1.279 DELETED ---


--- 7.1.280 DELETED ---


--- 7.1.281 DELETED ---


--- 7.1.282 DELETED ---


--- 7.1.283 DELETED ---


--- 7.1.284 DELETED ---


--- 7.1.285 DELETED ---


--- 7.1.286 DELETED ---


--- 7.1.287 DELETED ---


--- 7.1.288 DELETED ---


--- 7.1.289 DELETED ---


--- 7.1.290 DELETED ---


--- 7.1.291 DELETED ---


--- 7.1.292 DELETED ---


--- 7.1.293 DELETED ---


--- vim-6.4-cvim.patch DELETED ---


--- vim-6.4-lib64.patch DELETED ---


--- vim-7.0-fstabsyntax.patch DELETED ---


--- vim-7.0-vimspelltypo.patch DELETED ---


--- vim-7.1-ada.patch DELETED ---


--- vim-7.1-erlang.patch DELETED ---


--- vim-selinux.patch DELETED ---


--- vim-selinux2.patch DELETED ---




More information about the fedora-extras-commits mailing list