lisp-mode で保存したら *buffer-package* を設定する

ファイルの先頭付近にあるアレ

;;; -*- mode: lisp; package: editor -*-

を見て、*buffer-package* を設定するやつ。*buffer-package* をちゃんとしておかないと ac-mode が上手く補完してくれないとかインデントがおかしいとか色々調子悪いんで。

;;;; Set *buffer-package* on save-buffer

(defun lisp-detect-buffer-package ()
  (cdr (assoc "package" (ed::find-file-scan-params) :test #'string-equal))
  ;; FIXME: (in-package :PACKAGE)
  )

(defun lisp-set-buffer-package ()
  (when (member buffer-mode '(lisp-mode
                              lisp-interaction-mode
                              ;lisp-repl-mode  ; save-buffer しねーだろ
                              ))
    (setf *buffer-package* (lisp-detect-buffer-package))))

(add-hook '*after-save-buffer-hook* 'lisp-set-buffer-package)