Scratch bufferを付箋として使う


Emacsのscratchバッファーを簡易メモとして使うという目的で作られたパッケージはいくつかありますが、設定だけで実現できる簡単なものを紹介します。設定に必要な手順は以下の通りです。

  1. Scratch buffer を kill させない。
  2. Scratch buffer の内容を記憶させる。
  3. Scratch buffer をPopupさせる。

Scratch buffer を kill させない

特にpackageを導入せずともemacsの標準機能で実現できます。

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Set buffer that can not be killed.

(with-current-buffer "*scratch*"
  (emacs-lock-mode 'kill))

設定反映後、scratch bufferを kill-buffer すると

Buffer "*scratch*" is locked and cannot be killed

とmessageがでます。

Scratch buffer の内容を記憶させる

大方のemacserは auto-save-buffers-enhanced を導入していると思います。

以下の設定をすることで scratch buffer の内容を記憶させることが可能です。

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; auto-save-buffers-enhanced

(setq auto-save-buffers-enhanced-quiet-save-p t)
;; scratch bufferの内容を `~/.emacs.d/scratch` に保存
(setq auto-save-buffers-enhanced-save-scratch-buffer-to-file-p t)
(setq auto-save-buffers-enhanced-file-related-with-scratch-buffer
      (locate-user-emacs-file "scratch"))
(auto-save-buffers-enhanced t)

Scratch bufferをPopupさせる

popwinの機能を使います。

my:pop-scratch を起動するとscratch bufferがpopupします。メモしたあと C-g で隠せるので便利です。

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Popup the scratch buffer

(bind-key
 "s-x"
 (defun my:pop-scratch ()
   "Popup the scratch buffer."
   (interactive)
   (setq popwin:special-display-config '("*scratch*"))
   (display-buffer "*scratch*")))