From: Gustavo Barros <gusbrs.2016@gmail.com>
To: emacs-orgmode@gnu.org
Subject: Bug: Saving and killing buffers with org-capture-refile and multiple agenda files [9.2.4 (9.2.4-11-g1c3eae-elpaplus @ /home/gustavo/.emacs.d/elpa/org-plus-contrib-20190722/)]
Date: Sun, 28 Jul 2019 11:08:21 -0300 [thread overview]
Message-ID: <87ef2afe0a.fsf@gmail.com> (raw)
Hi all,
I document here some behaviors of =org-capture-refile= which occur when
settings
involve multiple files as refile targets, with respect to saving and
killing
buffers. Most of them are designed to show some more integration
between
=org-capture= and =org-capture-refile= would be welcome, and one of them
actually
does not correspond to documented behavior.
Consider the following scenario. We have two agenda files, one for work,
another for personal tasks. They have the following content:
#+name: ~/org/home.org
#+begin_src org
,* Home tasks
,* Capture
#+end_src
#+name: ~/org/work.org
#+begin_src org
,* Work tasks
#+end_src
We start ~emacs -Q~, and do some basic setup:
#+begin_src emacs-lisp
(package-initialize)
(global-set-key (kbd "C-c c") 'org-capture)
(setq org-agenda-files
'("~/org/home.org"
"~/org/work.org"))
(setq org-refile-targets
'((org-agenda-files :maxlevel . 2)))
(setq org-capture-templates
'(("t" "TODO entry" entry
(file+headline "~/org/home.org" "Capture")
"* TODO %?"
:kill-buffer t)))
#+end_src
In particular, we are not setting the =:no-save= flag, so we expect the
default
behavior of buffers getting saved.
Now, we start a capture of an arbitrary task, and leave the capture
process by
refiling it to the heading =* Home tasks=.
If we then list-buffers ("C-x C-b"), we find that =home.org= has been
killed as
expected, given the template's =:kill-buffer= flag. But =work.org=,
which was
opened to get the refile targets, is still there.
Now we do the same operation, but refile it to the heading =* Work
tasks=
instead.
If we then list-buffers again, we find that =work.org= is not only
trailing, but
has been left unsaved.
Now we first visit =home.org= and start a capture and end it refiling to
the
heading =* Work tasks=.
Notice here in particular that =home.org= is killed, even though it was
being
visited before the capture process started. This does not correspond to
documented behavior of =:kill-buffer=.
Summing up:
1. When refiling anywhere, all agenda files (as we set them as refile
targets)
are visited to supply refile targets, so any of those which are not
the
base of a capture template are left open, even when option
:kill-buffer is
set.
2. In this same case, if the refile operation is done to a file which is
not
the capture base file, the other file is left both modified and
trailing.
3. In this same case, even if =:kill-buffer= is not set, the other file
is left
unsaved after refile.
4. Furthermore, when =:kill-buffer= is set, when leaving the capture
operation
with =org-capture-refile= the capture base file is killed
independently of
whether it was opened before or not (contrary to what is stated in
the
documentation about it).
I understand, of course, that the refile operation is an independent one
which
is layered upon =org-capture=. So items 1-3 there would, in this sense
be
"expected". But, I meant to show with these cases, which I don’t think
can be
labeled "corner" ones, that some further integration between
=org-capture= and
=org-capture-refile= would be welcome. Item 4, is indeed a behavior
that does
not correspond to documentation and, to my understanding, should be
considered
a bug.
Best regards,
Gustavo Barros.
Emacs : GNU Emacs 26.2 (build 1, x86_64-pc-linux-gnu, GTK+ Version
3.22.30)
of 2019-04-19
Package: Org mode version 9.2.4 (9.2.4-11-g1c3eae-elpaplus @
/home/gustavo/.emacs.d/elpa/org-plus-contrib-20190722/)
current state:
==============
(setq
org-src-mode-hook '(org-src-babel-configure-edit-buffer
org-src-mode-configure-edit-buffer)
org-metadown-hook '(org-babel-pop-to-session-maybe)
org-clock-out-hook '(org-clock-remove-empty-clock-drawer)
org-refile-targets '((org-agenda-files :maxlevel . 2))
org-agenda-files '("~/org/home.org" "~/org/work.org")
org-mode-hook '(#[0 "\300\301\302\303\304$\207" [add-hook
change-major-mode-hook org-show-all append local] 5]
#[0 "\300\301\302\303\304$\207"
[add-hook change-major-mode-hook
org-babel-show-result-all append local] 5]
org-babel-result-hide-spec org-babel-hide-all-hashes
org-eldoc-load)
org-archive-hook '(org-attach-archive-delete-maybe)
org-confirm-elisp-link-function 'yes-or-no-p
org-agenda-before-write-hook '(org-agenda-add-entry-text)
org-metaup-hook '(org-babel-load-in-session-maybe)
org-bibtex-headline-format-function #[257 "\300\236A\207" [:title] 3
"\n\n(fn ENTRY)"]
org-babel-pre-tangle-hook '(save-buffer)
org-tab-first-hook '(org-babel-hide-result-toggle-maybe
org-babel-header-arg-expand)
org-src-lang-modes '(("arduino" . arduino) ("redis" . redis) ("php"
. php) ("C" . c) ("C++" . c++)
("asymptote" . asy) ("bash" . sh) ("beamer"
. latex) ("calc" . fundamental) ("cpp" . c++)
("ditaa" . artist) ("dot" . fundamental) ("elisp"
. emacs-lisp) ("ocaml" . tuareg)
("screen" . shell-script) ("shell" . sh) ("sqlite"
. sql))
org-occur-hook '(org-first-headline-recenter)
org-cycle-hook '(org-cycle-hide-archived-subtrees
org-cycle-show-empty-lines
org-optimize-window-after-visibility-change)
org-speed-command-hook '(org-speed-command-activate
org-babel-speed-command-activate)
org-confirm-shell-link-function 'yes-or-no-p
org-link-parameters '(("id" :follow org-id-open) ("eww" :follow eww
:store org-eww-store-link)
("rmail" :follow org-rmail-open :store
org-rmail-store-link)
("mhe" :follow org-mhe-open :store
org-mhe-store-link)
("irc" :follow org-irc-visit :store
org-irc-store-link :export org-irc-export)
("info" :follow org-info-open :export
org-info-export :store org-info-store-link)
("gnus" :follow org-gnus-open :store
org-gnus-store-link)
("docview" :follow org-docview-open :export
org-docview-export :store
org-docview-store-link)
("bibtex" :follow org-bibtex-open :store
org-bibtex-store-link)
("bbdb" :follow org-bbdb-open :export
org-bbdb-export :complete org-bbdb-complete-link
:store org-bbdb-store-link)
("w3m" :store org-w3m-store-link) ("file+sys")
("file+emacs")
("elfeed" :follow elfeed-link-open :store
elfeed-link-store-link)
("doi" :follow org--open-doi-link) ("elisp"
:follow org--open-elisp-link)
("file" :complete org-file-complete-link)
("ftp" :follow (lambda (path) (browse-url (concat
"ftp:" path))))
("help" :follow org--open-help-link)
("http" :follow (lambda (path) (browse-url
(concat "http:" path))))
("https" :follow (lambda (path) (browse-url
(concat "https:" path))))
("mailto" :follow (lambda (path) (browse-url
(concat "mailto:" path))))
("news" :follow (lambda (path) (browse-url
(concat "news:" path))))
("shell" :follow org--open-shell-link))
org-capture-templates '(("t" "TODO entry" entry (file+headline
"~/org/home.org" "Capture") "* TODO %?"
:kill-buffer t)
)
)
next reply other threads:[~2019-07-28 14:08 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-07-28 14:08 Gustavo Barros [this message]
2019-07-29 2:09 ` Bug: Saving and killing buffers with org-capture-refile and multiple agenda files [9.2.4 (9.2.4-11-g1c3eae-elpaplus @ /home/gustavo/.emacs.d/elpa/org-plus-contrib-20190722/)] Samuel Wales
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=87ef2afe0a.fsf@gmail.com \
--to=gusbrs.2016@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).