トップ 差分 一覧 ソース 検索 ヘルプ RSS ログイン

kill-xyzzy

Table of Contents

 *scratch* の保存確認を常にしたい

[xyzzy:07651](KAMEI Tetsuya さん)より。

 (add-hook '*lisp-interaction-mode-hook*
           #'(lambda () (setq need-not-save nil)))

 終了時の保存確認を慎重に

[xyzzy:03872](Tetsuya Kamei さん)より。write-file では悲しいことになる場合があるので, emacs-write-file に変更してあります。

(defun query-kill-xyzzy ()
  (handler-case
      (save-excursion
        (dolist (buffer (buffer-list))
          (when (need-buffer-save-p buffer)
            (set-buffer buffer)
            (refresh-screen)
            (cond ((yes-no-or-cancel-p "~a~%は変更されちょります。保存しますか?"
                                       (if (file-visited-p) (get-buffer-file-name) buffer))
                   (call-interactively (if (file-visited-p) 'save-buffer 'emacs-write-file)))
                  ((no-or-yes-p "ほんまにええのん?")
                   (not-modified))
                  (t
                   (quit)))))
        t)
    (quit () nil)
    (error () nil))) 

(add-hook '*query-kill-xyzzy-hook* 'query-kill-xyzzy)

 終了時の保存確認をWindowsらしく

[xyzzy:07073](KAMEI Tetsuya さん)より。バッファ毎に保存確認がされます。

 (defun query-kill-xyzzy ()
   (handler-case
       (save-excursion
         (dolist (buffer (buffer-list) t)
           (when (need-buffer-save-p buffer)
             (set-buffer buffer)
             (refresh-screen)
             (when (yes-no-or-cancel-p "~a~%をセーブする?"
                                       (if (file-visited-p) (get-buffer-file-name) buffer))
               (or (call-interactively (if (file-visited-p) 'save-buffer 'emacs-write-file))
                   (return nil))))))
     (quit () nil)
     (error () nil)))
 
 (add-hook '*query-kill-xyzzy-hook* 'query-kill-xyzzy)

 デフォルトの終了ダイアログを表示させない

「終了時の保存確認をWindowsらしく」をもとに,標準の保存確認ダイアログを表示しないようにしたもの。[xyzzy:07674](kazu.y さん)より。

 (defun query-kill-xyzzy ()
   (handler-case
       (save-excursion
         (dolist (buffer (buffer-list) t)
           (when (need-buffer-save-p buffer)
             (set-buffer buffer)
             (refresh-screen)
             (when (yes-no-or-cancel-p "~a~%をセーブする?"
                                       (if (file-visited-p) (get-buffer-file-name) buffer))
               (or (call-interactively (if (file-visited-p) 'save-buffer
                                         'emacs-write-file))
                   (return nil)))
             (set-buffer-modified-p nil))))
     (quit () nil)
     (error () nil)))
 
 (add-hook '*query-kill-xyzzy-hook* 'query-kill-xyzzy)

ファイル保存をダイアログから行う場合は,こんな感じ。私が使ってるやつ。

(defun query-kill-xyzzy ()
  (handler-case
      (save-excursion
        (dolist (buffer (buffer-list) t)
          (when (need-buffer-save-p buffer)
            (set-buffer buffer)
            (refresh-screen)
            (when (yes-no-or-cancel-p "~a~%は変更されちょります。保存しますか?"
                                      (if (file-visited-p) (get-buffer-file-name) buffer))
              (or (call-interactively 'save-buffer-dialog)
                  (return nil)))
            (set-buffer-modified-p nil))))
    (quit () nil)
    (error () nil)))

最終更新時間:2004年09月14日 20時44分18秒 GMT