はじめに
Hugoではmarkdownではなくasciidoctorを利用しています。
編集は主にemacsで行なっているのですが、Front matterの日付を手動で更新するのは忘れることが多かったので、hookを設定して自動的に保存の時に更新するようにしてみました。
環境
- Ubuntu 22.04 LTS
- emacs 27.1 (デフォルトのemacs-gtkパッケージを使用)
参考文献
- https://masatotoro.github.io/blog/emacs/auto-timestamp.html
- http://ochiailab.blogspot.com/2012/11/time-stamp.html
- https://github.com/sensorflo/adoc-mode/blob/master/adoc-mode.el
- https://github.com/emacs-mirror/emacs/blob/master/lisp/time-stamp.el
~/.emacs/init.el の編集
adoc-modeのために、次のようなコードを追加しています。
~/.emacs/init.el
;; asciidoc mode from https://github.com/sensorflo/adoc-mode
(load "~/lib/elisp/markup-faces.el")
(load "~/lib/elisp/adoc-mode.el")
(autoload 'adoc-mode "adoc-mode" nil t)
(add-to-list 'auto-mode-alist '("\\.adoc\\'" . adoc-mode))
;; update timestamp for adoc-mode
(add-hook 'adoc-mode-hook (lambda()
(require 'time-stamp)
(add-hook 'before-save-hook 'time-stamp)
(custom-set-variables
'(time-stamp-active t)
'(time-stamp-start "date: ")
'(time-stamp-format "%Y-%02m-%02dT%02H:%02M:%02S%:z")
'(time-stamp-end "$"))))
emacs 26などの古いemacsを利用している場合
Ubuntu 20.04などの古いemacsのtime-stamp.elではtime-stamp-formatにtimezoneの指定はできないので次のように"+09:00"を文字列として含めていました。
'(time-stamp-format "%04y-%02m-%02dT%02H:%02M:%02S+09:00")
さいごに
emacs 26系列は古くなったので、現在の~/.emacs.d/init.elに書いているtime-stamp-formatに変更しました。