updated for version 7.2a
diff --git a/runtime/ftplugin/denyhosts.vim b/runtime/ftplugin/denyhosts.vim
new file mode 100644
index 0000000..86796eb
--- /dev/null
+++ b/runtime/ftplugin/denyhosts.vim
@@ -0,0 +1,18 @@
+" Vim filetype plugin file
+" Maintainer:       Nikolai Weibull <now@bitwi.se>
+" Latest Revision:  2007-09-18
+
+if exists("b:did_ftplugin")
+  finish
+endif
+let b:did_ftplugin = 1
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+let b:undo_ftplugin = "setl com< cms< fo<"
+
+setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql
+
+let s:cpo_save = &cpo
+set cpo&vim
diff --git a/runtime/ftplugin/php.vim b/runtime/ftplugin/php.vim
index 86cf89c..c9a0bc7 100644
--- a/runtime/ftplugin/php.vim
+++ b/runtime/ftplugin/php.vim
@@ -1,7 +1,7 @@
 " Vim filetype plugin file
 " Language:	php
 " Maintainer:	Dan Sharp <dwsharp at hotmail dot com>
-" Last Changed: 2006 Jul 15
+" Last Changed: 2007 Nov 10
 " URL:		http://mywebpage.netscape.com/sharppeople/vim/ftplugin
 
 if exists("b:did_ftplugin") | finish | endif
@@ -42,7 +42,9 @@
 " ###
 " Provided by Mikolaj Machowski <mikmach at wp dot pl>
 setlocal include=\\\(require\\\|include\\\)\\\(_once\\\)\\\?
-setlocal iskeyword+=$
+" Disabled changing 'iskeyword', it breaks a command such as "*"
+" setlocal iskeyword+=$
+
 if exists("loaded_matchit")
     let b:match_words = '<?php:?>,\<switch\>:\<endswitch\>,' .
 		      \ '\<if\>:\<elseif\>:\<else\>:\<endif\>,' .
@@ -55,15 +57,24 @@
 endif
 " ###
 
-if exists('&ofu')
-  setlocal ofu=phpcomplete#CompletePHP
+if exists('&omnifunc')
+  setlocal omnifunc=phpcomplete#CompletePHP
 endif
 
+" Section jumping: [[ and ]] provided by Antony Scriven <adscriven at gmail dot com>
+let s:function = '\(abstract\s\+\|final\s\+\|private\s\+\|protected\s\+\|public\s\+\|static\s\+\)*function'
+let s:class = '\(abstract\s\+\|final\s\+\)*class'
+let s:interface = 'interface'
+let s:section = '\(.*\%#\)\@!\_^\s*\zs\('.s:function.'\|'.s:class.'\|'.s:interface.'\)'
+exe 'nno <buffer> <silent> [[ ?' . escape(s:section, '|') . '?<CR>:nohls<CR>'
+exe 'nno <buffer> <silent> ]] /' . escape(s:section, '|') . '/<CR>:nohls<CR>'
+exe 'ono <buffer> <silent> [[ ?' . escape(s:section, '|') . '?<CR>:nohls<CR>'
+exe 'ono <buffer> <silent> ]] /' . escape(s:section, '|') . '/<CR>:nohls<CR>'
 
 setlocal commentstring=/*%s*/
 
 " Undo the stuff we changed.
-let b:undo_ftplugin = "setlocal cms< inc< isk<" .
+let b:undo_ftplugin = "setlocal commentstring< include< omnifunc<" .
 	    \	      " | unlet! b:browsefilter b:match_words | " .
 	    \	      s:undo_ftplugin
 
diff --git a/runtime/ftplugin/vim.vim b/runtime/ftplugin/vim.vim
index 78fb6ec..ca66597 100644
--- a/runtime/ftplugin/vim.vim
+++ b/runtime/ftplugin/vim.vim
@@ -1,7 +1,7 @@
 " Vim filetype plugin
 " Language:	Vim
 " Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last Change:	2006 Sep 26
+" Last Change:	2008 Feb 27
 
 " Only do this when not done yet for this buffer
 if exists("b:did_ftplugin")
@@ -33,14 +33,20 @@
 setlocal commentstring=\"%s
 
 " Move around functions.
-noremap <silent><buffer> [[ m':call search('^\s*fu\%[nction]\>', "bW")<CR>
-noremap <silent><buffer> ]] m':call search('^\s*fu\%[nction]\>', "W")<CR>
-noremap <silent><buffer> [] m':call search('^\s*endf*\%[unction]\>', "bW")<CR>
-noremap <silent><buffer> ][ m':call search('^\s*endf*\%[unction]\>', "W")<CR>
+nnoremap <silent><buffer> [[ m':call search('^\s*fu\%[nction]\>', "bW")<CR>
+vnoremap <silent><buffer> [[ m':<C-U>exe "normal! gv"<Bar>call search('^\s*fu\%[nction]\>', "bW")<CR>
+nnoremap <silent><buffer> ]] m':call search('^\s*fu\%[nction]\>', "W")<CR>
+vnoremap <silent><buffer> ]] m':<C-U>exe "normal! gv"<Bar>call search('^\s*fu\%[nction]\>', "W")<CR>
+nnoremap <silent><buffer> [] m':call search('^\s*endf*\%[unction]\>', "bW")<CR>
+vnoremap <silent><buffer> [] m':<C-U>exe "normal! gv"<Bar>call search('^\s*endf*\%[unction]\>', "bW")<CR>
+nnoremap <silent><buffer> ][ m':call search('^\s*endf*\%[unction]\>', "W")<CR>
+vnoremap <silent><buffer> ][ m':<C-U>exe "normal! gv"<Bar>call search('^\s*endf*\%[unction]\>', "W")<CR>
 
 " Move around comments
-noremap <silent><buffer> ]" :call search('^\(\s*".*\n\)\@<!\(\s*"\)', "W")<CR>
-noremap <silent><buffer> [" :call search('\%(^\s*".*\n\)\%(^\s*"\)\@!', "bW")<CR>
+nnoremap <silent><buffer> ]" :call search('^\(\s*".*\n\)\@<!\(\s*"\)', "W")<CR>
+vnoremap <silent><buffer> ]" :<C-U>exe "normal! gv"<Bar>call search('^\(\s*".*\n\)\@<!\(\s*"\)', "W")<CR>
+nnoremap <silent><buffer> [" :call search('\%(^\s*".*\n\)\%(^\s*"\)\@!', "bW")<CR>
+vnoremap <silent><buffer> [" :<C-U>exe "normal! gv"<Bar>call search('\%(^\s*".*\n\)\%(^\s*"\)\@!', "bW")<CR>
 
 " Let the matchit plugin know what items can be matched.
 if exists("loaded_matchit")