From 289d3ff93c9f7f56ee54d98fd7d6294c4472a37b Mon Sep 17 00:00:00 2001 From: Nicholas Vollmer Date: Tue, 7 Apr 2020 14:39:29 -0400 Subject: [PATCH] org-archive.el: fix org-archive-subtree-save-file-p Consider case of 'from-org setting in saving logic. Improve docstring. Remove dead code comment. --- lisp/org-archive.el | 31 ++++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/lisp/org-archive.el b/lisp/org-archive.el index 10a5eb501..5e11c3743 100644 --- a/lisp/org-archive.el +++ b/lisp/org-archive.el @@ -92,14 +92,20 @@ When a string, a %s formatter will be replaced by the file name." (const :tag "Always" t))) (defcustom org-archive-subtree-save-file-p 'from-org - "Non-nil means save the archive file after archiving a subtree." + "Conditionally save the archive file after archiving a subtree. +This variable can be any of the following symbols: + +t saves in all cases. +`from-org' prevents saving from an agenda-view. +`from-agenda' saves only when the archive is initiated from an agenda-view. +nil prevents saving in all cases." :group 'org-archive :package-version '(Org . "9.4") :type '(choice - (const :tag "Always save the archive buffer" t) - (const :tag "Save target buffer when archiving from an agenda view" from-agenda) - (const :tag "Save target buffer when archiving from an org buffer" from-org) - (const :tag "Do not save the archive buffer"))) + (const :tag "from-org" from-org) + (const :tag "from-agenda" from-agenda) + (const :tag "t" t) + (const :tag "nil"))) (defcustom org-archive-save-context-info '(time file olpath category todo itags) "Parts of context info that should be stored as properties when archiving. @@ -373,14 +379,13 @@ direct children of this heading." value)))) ;; Save and kill the buffer, if it is not the same ;; buffer and depending on `org-archive-subtree-save-file-p' - (unless (eq this-buffer buffer) - (when (or (eq org-archive-subtree-save-file-p t) - (and (boundp 'org-archive-from-agenda) - (eq org-archive-subtree-save-file-p 'from-agenda))) - (save-buffer))) - ;; (unless (or (not org-archive-subtree-save-file-p) - ;; (eq this-buffer buffer)) - ;; (save-buffer)) + (unless (eq this-buffer buffer) + (when (or (eq org-archive-subtree-save-file-p t) + (and (boundp 'org-archive-from-agenda) + (eq org-archive-subtree-save-file-p 'from-agenda)) + (and (not (boundp 'org-archive-from-agenda)) + (eq org-archive-subtree-save-file-p 'from-org))) + (save-buffer))) (widen)))) ;; Here we are back in the original buffer. Everything seems ;; to have worked. So now run hooks, cut the tree and finish -- 2.26.0