--- a/vim/.vimrc Sun Jun 13 02:47:04 2010 -0400
+++ b/vim/.vimrc Wed Jun 16 15:34:44 2010 -0400
@@ -148,3 +148,7 @@
" Easier linewise reselection
map <leader>v V`]
+
+" HTML tag closing
+imap <C-_> <Space><BS><Esc>:call InsertCloseTag()<CR>a
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/vim/ftplugin/html/closetags.vim Wed Jun 16 15:34:44 2010 -0400
@@ -0,0 +1,58 @@
+function! InsertCloseTag()
+" inserts the appropriate closing HTML tag; used for the \hc operation defined
+" above;
+" requires ignorecase to be set, or to type HTML tags in exactly the same case
+" that I do;
+" doesn't treat <P> as something that needs closing;
+" clobbers register z and mark z
+"
+" by Smylers http://www.stripey.com/vim/
+" 2000 May 3
+
+ if &filetype == 'html'
+
+ " list of tags which shouldn't be closed:
+ let UnaryTags = ' Area Base Br DD DT HR Img Input Link Meta Param '
+
+ " remember current position:
+ normal mz
+
+ " loop backwards looking for tags:
+ let Found = 0
+ while Found == 0
+ " find the previous <, then go forwards one character and grab the first
+ " character plus the entire word:
+ execute "normal ?\<LT>\<CR>l"
+ normal "zyl
+ let Tag = expand('<cword>')
+
+ " if this is a closing tag, skip back to its matching opening tag:
+ if @z == '/'
+ execute "normal ?\<LT>" . Tag . "\<CR>"
+
+ " if this is a unary tag, then position the cursor for the next
+ " iteration:
+ elseif match(UnaryTags, ' ' . Tag . ' ') > 0
+ normal h
+
+ " otherwise this is the tag that needs closing:
+ else
+ let Found = 1
+
+ endif
+ endwhile " not yet found match
+
+ " create the closing tag and insert it:
+ let @z = '</' . Tag . '>'
+ normal `z"zp
+
+ else " filetype is not HTML
+ echohl ErrorMsg
+ echo 'The InsertCloseTag() function is only intended to be used in HTML ' .
+ \ 'files.'
+ sleep
+ echohl None
+
+ endif " check on filetype
+
+endfunction " InsertCloseTag()
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/vim/ftplugin/htmldjango/closetags.vim Wed Jun 16 15:34:44 2010 -0400
@@ -0,0 +1,1 @@
+/Users/sjl/lib/dotfiles/vim/ftplugin/html/closetags.vim
\ No newline at end of file