« SearchWPで単語の区切りに全角スペースを使う | Main | A罫?B罫? 6.5mm? »



Wed, 26 Oct 2005

scratch をメモ代わりに使う on xyzzy

Posted at Wed, 26 Oct 2005 in computer::xyzzy

xyzzyをはじめて起動する人は、最初から謎のバッファ(≒空のファイルのようなもの)が開かれているので、「なんだこれ?」と思ったりすると思うのですが、このバッファ(*scratch* バッファ)をメモ代わりにして、xyzzy の終了時に保存し、起動時に前回の終了時の状態を表示するようにすると意外と便利です。

以下はあちこちからもらってきたものの寄せ集めです。
これを.xyzzy などに書いてからxyzzyを再起動し、そのあと *scratch* に適当な文書を書き、xyzzy を終了 → 起動 してみてください。

;;;;;;;;;;;;;;;;;
;; ■ *scratch* をメモ代わりに使う。

;; *scratch* を終了時に保存
(add-hook '*kill-xyzzy-hook*
          #'(lambda ()
              (save-excursion
                (set-buffer (find-buffer "*scratch*"))
                (write-file "~/scratch")
; ~/memorandom フォルダに毎回日付と時刻が含まれるファイル名で
; 保存する場合はフォルダを作ってこの下2行をコメントアウト。(履歴もどき)
;              (unless (equal (point-min) (point-max))
;                (write-file (format-date-string "~/memorandom/%Y_%m_%d_%H%M_scratch.txt")))
                )))

;; *scratch* を起動時にロード
(add-hook '*post-startup-hook*
          #'(lambda ()
              (save-excursion
                (set-buffer (find-buffer "*scratch*"))
                (insert-file-contents "~/scratch" t))))

;; *scratch* な場合は nil を返してkillさせない
(add-hook '*query-kill-buffer-hook*
          #'(lambda ()
              (if (and (not *kill-buffer-kills-scratch*)
                       (equal (buffer-name (selected-buffer))
                              "*scratch*"))
                  nil
                t)))

私は2つのxyzzyを開いていたときなどうっかり~/scratchファイルの上書きをしてしまうことがあるので、xyzzy を閉じるときの状態も別に記録しています。(↑でコメントアウトしてある部分)

* ネタ元

tips/scratchの中身って消さなくてもいいじゃん - Xyzzy Wiki
http://xyzzy.s53.xrea.com/wiki/?cmd=read&page=tips%2Fscratchの中身って消さなくてもいいじゃん
tips/scratch をkill-bufferから保護 - Xyzzy Wiki
http://xyzzy.s53.xrea.com/wiki/?tips%2Fscratch%20をkill-bufferから保護

« SearchWPで単語の区切りに全角スペースを使う | Main | A罫?B罫? 6.5mm? »