Function: denote--handle-save-and-kill-buffer

denote--handle-save-and-kill-buffer is a byte-compiled function defined in denote.el.

Signature

(denote--handle-save-and-kill-buffer MODE FILE INITIAL-STATE)

Documentation

Save and kill buffer of FILE according to MODE and INITIAL-STATE.

The values of denote-save-buffers and denote-kill-buffers are used to decide whether to save and/or kill the buffer visiting FILE.

MODE is one of the symbols creation or rename.

INITIAL-STATE is nil or one of the following symbols: not-visited, visited. If a buffer was already visited at the beginning of a rename operation, it is NOT killed automatically.

If a buffer needs to be killed, it is also automatically saved, no matter the value of denote-save-buffers.

Source Code

;; Defined in ~/.emacs.d/elpa/denote-4.2.3/denote.el
(defun denote--handle-save-and-kill-buffer (mode file initial-state)
  "Save and kill buffer of FILE according to MODE and INITIAL-STATE.

The values of `denote-save-buffers' and `denote-kill-buffers' are
used to decide whether to save and/or kill the buffer visiting
FILE.

MODE is one of the symbols `creation' or `rename'.

INITIAL-STATE is nil or one of the following symbols:
`not-visited', `visited'.  If a buffer was already visited at the
beginning of a rename operation, it is NOT killed automatically.

If a buffer needs to be killed, it is also automatically saved,
no matter the value of `denote-save-buffers'."
  (let* ((do-kill-buffer (and (not (eq initial-state 'visited))
                              (or (eq denote-kill-buffers t)
                                  (and (eq mode 'creation)
                                       (eq denote-kill-buffers 'on-creation))
                                  (and (eq mode 'rename)
                                       (eq denote-kill-buffers 'on-rename)))))
         (do-save-buffer (or do-kill-buffer denote-save-buffers)))
    (when-let* ((buffer (find-buffer-visiting file)))
      (when do-save-buffer (with-current-buffer buffer (save-buffer)))
      (when do-kill-buffer (kill-buffer buffer)))))