emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: No Wayman <iarchivedmywholelife@gmail.com>
To: emacs-orgmode@gnu.org
Subject: Bug: org-archive-subtree-save-file-p logic [9.3.6 (release_9.3.6-399-ge6df03 @ /home/n/.emacs.d/straight/build/org/)]
Date: Mon, 02 Mar 2020 15:05:51 -0500	[thread overview]
Message-ID: <87zhcybjz5.fsf@gmail.com> (raw)


The logic for saving the archive buffer in org-archive-subtree 
does not consider the (default) value  of 'from-org for 
org-archive-subtree-save-file-p.

#+begin_src emacs-lisp
;; 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)))
#+end_src

While patching this, I realized I'm not sure I understand the 
intended logic of each value for org-archive-subtree-save-file-p.
When setting it to 't', the defcustom :tag string claims "Always 
save the archive buffer".
This is not the case if archiving from within the current buffer. 
Perhaps a clearer :tag string?

#+begin_src emacs-lisp
(defcustom org-archive-subtree-save-file-p 'from-org
  ;;...
  (const :tag "Save the archive buffer unless it is the current 
  buffer" t)
  ;;...
  ))
#+end_src

The value 'from-org also still saves the archive buffer when 
archiving from a buffer that is not in Org mode.
I'm not entirely sure of its purpose. If the intent is to allow an 
option that prevents saving only when archiving from the agenda,
I suggest a single option excluding that case and saving for 
other, non-nil values:

#+begin_src emacs-lisp
(defcustom org-archive-subtree-save-file-p 'unless-agenda
  "Conditionally save the archive file after archiving a subtree.
The value 'unless-agenda prevents saving from the agenda-view.
Other non-nil values save the archive buffer unless it is the 
current buffer."
  :group 'org-archive
  :package-version '(Org . "9.4")
  :type '(choice
          (const :tag "Do not save archive buffer when archiving 
          from an agenda view" unless-agenda)
          (const :tag "Save the archive buffer unless it is the 
          current buffer" t)
          (const :tag "Do not save the archive buffer")))
#+end_src

Then the saving logic in org-archive-subtree becomes:

#+begin_src emacs-lisp
(when org-archive-subtree-save-file-p
  (unless (or (eq buffer this-buffer)
              (and (eq org-archive-subtree-save-file-p 
              'unless-agenda)
                   ;;bound when called from org-agenda.el
                   (boundp 'org-archive-from-agenda)))
    (save-buffer)))
#+end_src

If this is the intended logic, I think it could be cleaned up even 
more so that it reads better and I'm happy to submit a patch.
If not, I'm interested to hear the actual case.

Thanks


Emacs  : GNU Emacs 28.0.50 (build 1, x86_64-pc-linux-gnu, X 
toolkit, cairo version 1.17.3, Xaw3d scroll bars)
 of 2020-02-23
Package: Org mode version 9.3.6 (release_9.3.6-399-ge6df03 @ 
/home/n/.emacs.d/straight/build/org/)

             reply	other threads:[~2020-03-02 20:05 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-03-02 20:05 No Wayman [this message]
2020-04-06  5:51 ` Bug: org-archive-subtree-save-file-p logic [9.3.6 (release_9.3.6-399-ge6df03 @ /home/n/.emacs.d/straight/build/org/)] Kyle Meyer
2020-04-06 16:49   ` No Wayman
2020-04-07  0:37     ` Kyle Meyer
2020-04-07 19:00       ` No Wayman
2020-04-07 19:06         ` No Wayman
2020-04-08  2:58           ` Kyle Meyer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87zhcybjz5.fsf@gmail.com \
    --to=iarchivedmywholelife@gmail.com \
    --cc=emacs-orgmode@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).