diff --git a/runtime/ftplugin/gitcommit.vim b/runtime/ftplugin/gitcommit.vim
new file mode 100644
index 0000000..bfc5b33
--- /dev/null
+++ b/runtime/ftplugin/gitcommit.vim
@@ -0,0 +1,68 @@
+" Vim filetype plugin
+" Language:	git config file
+" Maintainer:	Tim Pope <vimNOSPAM@tpope.info>
+" Last Change:	2008 Jun 04
+
+" Only do this when not done yet for this buffer
+if (exists("b:did_ftplugin"))
+  finish
+endif
+
+runtime! ftplugin/git.vim
+let b:did_ftplugin = 1
+
+if &textwidth == 0
+  " make sure that log messages play nice with git-log on standard terminals
+  setlocal textwidth=72
+  if !exists("b:undo_ftplugin")
+      let b:undo_ftplugin = ""
+  endif
+  let b:undo_ftplugin = b:undo_ftplugin . "|setl tw<"
+endif
+
+if exists("g:no_gitcommit_commands") || v:version < 700
+  finish
+endif
+
+if !exists("b:git_dir")
+    let b:git_dir = expand("%:p:h")
+endif
+
+" Automatically diffing can be done with:
+"   autocmd FileType gitcommit DiffGitCached | wincmd p
+command! -bang -bar -buffer -complete=custom,s:diffcomplete -nargs=* DiffGitCached :call s:gitdiffcached(<bang>0,b:git_dir,<f-args>)
+
+function! s:diffcomplete(A,L,P)
+    let args = ""
+    if a:P <= match(a:L." -- "," -- ")+3
+        let args = args . "-p\n--stat\n--shortstat\n--summary\n--patch-with-stat\n--no-renames\n-B\n-M\n-C\n"
+    end
+    if exists("b:git_dir") && a:A !~ '^-'
+        let tree = fnamemodify(b:git_dir,':h')
+        if strpart(getcwd(),0,strlen(tree)) == tree
+            let args = args."\n".system("git diff --cached --name-only")
+        endif
+    endif
+    return args
+endfunction
+
+function! s:gitdiffcached(bang,gitdir,...)
+    let tree = fnamemodify(a:gitdir,':h')
+    let name = tempname()
+    let git = "git"
+    if strpart(getcwd(),0,strlen(tree)) != tree
+        let git .= " --git-dir=".(exists("*shellescape") ? shellescape(a:gitdir) : '"'.a:gitdir.'"')
+    endif
+    if a:0
+        let extra = join(map(copy(a:000),exists("*shellescape") ? 'shellescape(v:val)' : "'\"'.v:val.'\"'"))
+    else
+        let extra = "-p --stat=".&columns
+    endif
+    call system(git." diff --cached --no-color ".extra." > ".(exists("*shellescape") ? shellescape(name) : name))
+    exe "pedit ".(exists("*fnameescape") ? fnameescape(name) : name)
+    wincmd P
+    let b:git_dir = a:gitdir
+    command! -bang -bar -buffer -complete=custom,s:diffcomplete -nargs=* DiffGitCached :call s:gitdiffcached(<bang>0,b:git_dir,<f-args>)
+    nnoremap <silent> q :q<CR>
+    setlocal buftype=nowrite nobuflisted noswapfile nomodifiable filetype=git
+endfunction
diff --git a/runtime/ftplugin/html.vim b/runtime/ftplugin/html.vim
index 3d72331..4797f4b 100644
--- a/runtime/ftplugin/html.vim
+++ b/runtime/ftplugin/html.vim
@@ -1,7 +1,7 @@
 " Vim filetype plugin file
 " Language:	html
 " Maintainer:	Dan Sharp <dwsharp at hotmail dot com>
-" Last Changed: 2006 Apr 26
+" Last Changed: 2007 Nov 20
 " URL:		http://mywebpage.netscape.com/sharppeople/vim/ftplugin
 
 if exists("b:did_ftplugin") | finish | endif
@@ -13,63 +13,55 @@
 set cpo-=C
 
 setlocal commentstring=<!--%s-->
+setlocal matchpairs+=<:>
 
 if exists('&omnifunc')
-" Distinguish between HTML versions
-" To use with other HTML versions add another
-" elseif condition to match proper DOCTYPE
-setlocal omnifunc=htmlcomplete#CompleteTags
+    " Distinguish between HTML versions
+    " To use with other HTML versions add another
+    " elseif condition to match proper DOCTYPE
+    setlocal omnifunc=htmlcomplete#CompleteTags
 
-if &filetype == 'xhtml'
-	let b:html_omni_flavor = 'xhtml10s'
-else
-	let b:html_omni_flavor = 'html401t'
-endif
-let i = 1
-while i < 10 && i < line("$")
-	let line = getline(i)
-	if line =~ '<!DOCTYPE.*\<DTD HTML 3\.2'
-		let b:html_omni_flavor = 'html32'
-		break
-	elseif line =~ '<!DOCTYPE.*\<DTD HTML 4\.0 Transitional'
-		let b:html_omni_flavor = 'html40t'
-		break
-	elseif line =~ '<!DOCTYPE.*\<DTD HTML 4\.0 Frameset'
-		let b:html_omni_flavor = 'html40f'
-		break
-	elseif line =~ '<!DOCTYPE.*\<DTD HTML 4\.0'
-		let b:html_omni_flavor = 'html40s'
-		break
-	elseif line =~ '<!DOCTYPE.*\<DTD HTML 4\.01 Transitional'
-		let b:html_omni_flavor = 'html401t'
-		break
-	elseif line =~ '<!DOCTYPE.*\<DTD HTML 4\.01 Frameset'
-		let b:html_omni_flavor = 'html401f'
-		break
-	elseif line =~ '<!DOCTYPE.*\<DTD HTML 4\.01'
-		let b:html_omni_flavor = 'html401s'
-		break
-	elseif line =~ '<!DOCTYPE.*\<DTD XHTML 1\.0 Transitional'
-		let b:html_omni_flavor = 'xhtml10t'
-		break
-	elseif line =~ '<!DOCTYPE.*\<DTD XHTML 1\.0 Frameset'
-		let b:html_omni_flavor = 'xhtml10f'
-		break
-	elseif line =~ '<!DOCTYPE.*\<DTD XHTML 1\.0 Strict'
-		let b:html_omni_flavor = 'xhtml10s'
-		break
-	elseif line =~ '<!DOCTYPE.*\<DTD XHTML 1\.1'
-		let b:html_omni_flavor = 'xhtml11'
-		break
-	endif
-	let i += 1
-endwhile
+    if &filetype == 'xhtml'
+            let b:html_omni_flavor = 'xhtml10s'
+    else
+            let b:html_omni_flavor = 'html401t'
+    endif
+    let i = 1
+    let line = ""
+    while i < 10 && i < line("$")
+        let line = getline(i)
+        if line =~ '<!DOCTYPE.*\<DTD '
+            break
+        endif
+        let i += 1
+    endwhile
+    if line =~ '<!DOCTYPE.*\<DTD '  " doctype line found above
+        if line =~ ' HTML 3\.2'
+            let b:html_omni_flavor = 'html32'
+        elseif line =~ ' XHTML 1\.1'
+            let b:html_omni_flavor = 'xhtml11'
+        else    " two-step detection with strict/frameset/transitional
+            if line =~ ' XHTML 1\.0'
+                let b:html_omni_flavor = 'xhtml10'
+            elseif line =~ ' HTML 4\.01'
+                let b:html_omni_flavor = 'html401'
+            elseif line =~ ' HTML 4.0\>'
+                let b:html_omni_flavor = 'html40'
+            endif
+            if line =~ '\<Transitional\>'
+                let b:html_omni_flavor .= 't'
+            elseif line =~ '\<Frameset\>'
+                let b:html_omni_flavor .= 'f'
+            else
+                let b:html_omni_flavor .= 's'
+            endif
+        endif
+    endif
 endif
 
 " HTML:  thanks to Johannes Zellner and Benji Fisher.
 if exists("loaded_matchit")
     let b:match_ignorecase = 1
-    let b:match_skip = 's:Comment'
     let b:match_words = '<:>,' .
     \ '<\@<=[ou]l\>[^>]*\%(>\|$\):<\@<=li\>:<\@<=/[ou]l>,' .
     \ '<\@<=dl\>[^>]*\%(>\|$\):<\@<=d[td]\>:<\@<=/dl>,' .
@@ -85,7 +77,7 @@
 endif
 
 " Undo the stuff we changed.
-let b:undo_ftplugin = "setlocal commentstring<"
+let b:undo_ftplugin = "setlocal commentstring< matchpairs< omnifunc<"
     \	" | unlet! b:match_ignorecase b:match_skip b:match_words b:browsefilter"
 
 " Restore the saved compatibility options.
