diff options
Diffstat (limited to 'vim')
-rw-r--r-- | vim/after/ftplugin/html.vim | 11 | ||||
-rw-r--r-- | vim/after/ftplugin/html.vim~ | 35 | ||||
-rw-r--r-- | vim/autoload/html.vim | 7 |
3 files changed, 50 insertions, 3 deletions
diff --git a/vim/after/ftplugin/html.vim b/vim/after/ftplugin/html.vim index b5c387fb..5f7155bc 100644 --- a/vim/after/ftplugin/html.vim +++ b/vim/after/ftplugin/html.vim @@ -3,11 +3,16 @@ if &filetype !=# 'html' finish endif -" Use tidy(1) for checking and program formatting +" Use tidy(1) for checking compiler tidy -setlocal equalprg=tidy\ -quiet let b:undo_ftplugin .= '|unlet b:current_compiler' - \ . '|setlocal equalprg< errorformat< makeprg<' + \ . '|setlocal errorformat< makeprg<' + +" tidy(1) copes fine with formatting an entire document, but not just part of +" it; we map \= to do the former, but don't actually set 'equalprg', falling +" back on the good-enough built-in Vim indentation behavior. +nnoremap <buffer> <Leader>= :<C-U>call html#TidyBuffer()<CR> +let b:undo_ftplugin .= '|nunmap <buffer> <Leader>=' " Set up hooks for timestamp updating augroup html_timestamp diff --git a/vim/after/ftplugin/html.vim~ b/vim/after/ftplugin/html.vim~ new file mode 100644 index 00000000..5f7155bc --- /dev/null +++ b/vim/after/ftplugin/html.vim~ @@ -0,0 +1,35 @@ +" Don't load if the buffer is not actually HTML (e.g. Markdown) +if &filetype !=# 'html' + finish +endif + +" Use tidy(1) for checking +compiler tidy +let b:undo_ftplugin .= '|unlet b:current_compiler' + \ . '|setlocal errorformat< makeprg<' + +" tidy(1) copes fine with formatting an entire document, but not just part of +" it; we map \= to do the former, but don't actually set 'equalprg', falling +" back on the good-enough built-in Vim indentation behavior. +nnoremap <buffer> <Leader>= :<C-U>call html#TidyBuffer()<CR> +let b:undo_ftplugin .= '|nunmap <buffer> <Leader>=' + +" Set up hooks for timestamp updating +augroup html_timestamp + autocmd BufWritePre <buffer> + \ if exists('b:html_timestamp_check') + \| call html#TimestampUpdate() + \|endif +augroup END +let b:undo_ftplugin .= '|execute ''autocmd! html_timestamp''' + \ . '|augroup! html_timestamp' + +" Stop here if the user doesn't want ftplugin mappings +if exists('g:no_plugin_maps') || exists('g:no_html_maps') + finish +endif + +" Transform URLs to HTML anchors +nnoremap <buffer> <LocalLeader>r + \ :<C-U>call html#UrlLink()<CR> +let b:undo_ftplugin .= '|nunmap <buffer> <LocalLeader>r' diff --git a/vim/autoload/html.vim b/vim/autoload/html.vim index c3d99706..e0d47e47 100644 --- a/vim/autoload/html.vim +++ b/vim/autoload/html.vim @@ -14,6 +14,13 @@ function! html#UrlLink() abort endfunction +" Tidy the whole buffer +function! html#TidyBuffer() abort + let l:view = winsaveview() + %!tidy -quiet + call winrestview(l:view) +endfunction + " Update a timestamp function! html#TimestampUpdate() abort if !&modified |