aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--vim/after/ftplugin/html/timestamp.vim28
-rw-r--r--vim/autoload/html/timestamp.vim15
2 files changed, 43 insertions, 0 deletions
diff --git a/vim/after/ftplugin/html/timestamp.vim b/vim/after/ftplugin/html/timestamp.vim
new file mode 100644
index 00000000..29a215cd
--- /dev/null
+++ b/vim/after/ftplugin/html/timestamp.vim
@@ -0,0 +1,28 @@
+" html/timestamp.vim: Update timestamps in HTML files on save.
+
+" Don't load if running compatible or too old
+if &compatible || v:version < 700
+ finish
+endif
+
+" Don't load if already loaded
+if exists('b:did_ftplugin_html_timestamp')
+ finish
+endif
+
+" Flag as loaded
+let b:did_ftplugin_html_timestamp = 1
+let b:undo_ftplugin = b:undo_ftplugin
+ \ . '|unlet b:did_ftplugin_html_timestamp'
+
+" Set up appropriate hooks
+augroup html_timestamp
+ autocmd!
+ autocmd BufWritePre *.html
+ \ if exists('b:html_timestamp_check')
+ \| call html#timestamp#Update()
+ \|endif
+augroup END
+let b:undo_ftplugin = b:undo_ftplugin
+ \ . '|augroup html_timestamp|autocmd!|augroup END'
+ \ . '|augroup! html_timestamp'
diff --git a/vim/autoload/html/timestamp.vim b/vim/autoload/html/timestamp.vim
new file mode 100644
index 00000000..1b3ea830
--- /dev/null
+++ b/vim/autoload/html/timestamp.vim
@@ -0,0 +1,15 @@
+function! html#timestamp#Update() abort
+ if !&modified
+ return
+ endif
+ let l:cv = winsaveview()
+ call cursor(1,1)
+ let l:li = search('\C^\s*<em>Last updated: .\+</em>$', 'n')
+ if l:li
+ let l:date = substitute(system('date -u'), '\C\n$', '', '')
+ let l:line = getline(l:li)
+ call setline(l:li, substitute(l:line, '\C\S.*',
+ \ '<em>Last updated: '.l:date.'</em>', ''))
+ endif
+ call winrestview(l:cv)
+endfunction