

ファイルを編集して保存していない際に、 emacs 終了時に、"Save file XXXXXX (OPTIONS)"
が表示されます。これをひとつひとつ表示されて、それについて保存する・しないを確認するよりは、「このリストをあらかじめ一覧的に確認して、必要に応じてそのまま
kill したい」と考えました。

## 質問

終了時などに「保存しますか？」と聞かれるファイル（を visit しているバッファ）を一覧して必要に応じて各種操作(最低その buffer
を選択)することはできますか？


CC BY-SA 3.0
2017-03-01T10:36:19.950
33017
2017-03-06T07:22:12.607
754
question
emacs
emacs 終了時に聞かれる、「変更があるけれども大丈夫？」のファイル一覧を取得したい。


こんな感じでしょうか。

[code]

    (defun user/buffer-needs-save-p (buffer)
      "Return non-nil if the visited-file BUFFER is still modified."
      (and (buffer-file-name buffer)
           (buffer-modified-p buffer)))
    
    ;; 未保存のバッファに対して処理を行う
    (dolist (b (buffer-list))
      (when (user/buffer-needs-save-p b)
        ...))
    
[/code]

Emacsのソースコード([1](https://github.com/emacs-
mirror/emacs/blob/emacs-25/src/buffer.c#L1665),[2](https://github.com/emacs-
mirror/emacs/blob/emacs-25/lisp/files.el#L6675))を眺めるに、「保存の必要があるバッファかどうか」を調べる関数等はelispでは提供されていないように見えたので自作しています。


CC BY-SA 3.0
2017-03-04T20:20:15.667
33099
2017-03-04T21:29:59.053
2017-03-04T21:29:59.053
2391
2391
33017
answer


@kosh さんの回答を参考に、「一覧表示」をしてみると次になりました。 (keybind が多少いけていないけれども、ひとまず。)

[code]

    (defun user/buffer-needs-save-p (buffer)
      "Return non-nil if the visited-file BUFFER is still modified."
      (and (buffer-file-name buffer)
           (buffer-modified-p buffer)))
    
    ;; 未保存のバッファに対して処理を行う
    
    (defun modified-buffer-list ()
      (interactive)
      (let (ret)
        (dolist (b (buffer-list))
          (when (user/buffer-needs-save-p b)
            (setq ret (cons b ret))))
        (switch-to-buffer (list-buffers-noselect nil ret))))
    
[/code]


CC BY-SA 3.0
2017-03-06T07:22:12.607
33126
2017-03-06T07:22:12.607
754
33017
answer