Emacs におけるタイムスタンプの設定

あるファイルにおいて,
最終更新時刻を自動的に記録したいという場面がいくつかあるだろう.
かつて, Emacsen における yahtml-mode においてタイムスタンプ関数の設定をしたのだが,
yahtml が Strict な HTML をキーバインドで補完できないことが分かったので
(例えば li 要素が終了タグ必須のはずなのに不要としている),
html-helper-mode に乗り換えている.
この場合における更新時刻を更新する hook を作ってみた.
HTML でも XHTML でもこれで動作するはず...

(add-hook 'html-helper-mode-hook
	  (function
	   (lambda ()
	     ;; META 要素内の date に対する更新日の自動更新
	     (set (make-local-variable 'system-time-locale) "C")
	     (set (make-local-variable 'time-stamp-time-zone) "JST-9")
	     (set (make-local-variable 'time-stamp-format)
		  "%3a, %02d %3b %:y %02H:%02M:%02S %Z") ; rfc1123-date
	     (set (make-local-variable 'time-stamp-start)
		  (concat "<[Mm][Ee][Tt][Aa][ \t\r\n]+"
			  "\\([Nn][Aa][Mm][Ee]\\|[Hh][Tt][Tt][Pp]-"
			  "[Ee][Qq][Uu][Ii][Vv]\\)"
			  "[ \t\r\n]*=[ \t\r\n]*"
			  "\"\\(date\\|Last-Modified\\)\"[ \t\r\n]+"
			  "[Cc][Oo][Nn][Tt][Ee][Nn][Tt][ \t\r\n]*"
			  "=[ \t\r\n]*\""))
	     (set (make-local-variable 'time-stamp-line-limit) 30)

	     ;; auto time-stamp
	     (add-hook 'local-write-file-hooks 'time-stamp)
	     (auto-fill-mode))))

このコードによって,
<meta name="date" content="Sat, 14 Feb 2009 10:03:09 JST" />
なる記述の時刻の部分が自動的に更新されるはずだ...

コメントを残す