diff --git a/runtime/ftplugin/gitcommit.vim b/runtime/ftplugin/gitcommit.vim
index f8788c8..94d635c 100644
--- a/runtime/ftplugin/gitcommit.vim
+++ b/runtime/ftplugin/gitcommit.vim
@@ -1,7 +1,7 @@
 " Vim filetype plugin
 " Language:	git commit file
 " Maintainer:	Tim Pope <vimNOSPAM@tpope.org>
-" Last Change:	2009 Dec 24
+" Last Change:	2010 May 21
 
 " Only do this when not done yet for this buffer
 if (exists("b:did_ftplugin"))
@@ -15,7 +15,7 @@
   " 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 = ""
+    let b:undo_ftplugin = ""
   endif
   let b:undo_ftplugin = b:undo_ftplugin . "|setl tw<"
 endif
@@ -25,7 +25,7 @@
 endif
 
 if !exists("b:git_dir")
-    let b:git_dir = expand("%:p:h")
+  let b:git_dir = expand("%:p:h")
 endif
 
 " Automatically diffing can be done with:
@@ -33,36 +33,36 @@
 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
+  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
-    return args
+  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
+  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
