emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Orgmode] capture initial "level" and refile of capture buffer


From: Carsten Dominik
Subject: Re: [Orgmode] capture initial "level" and refile of capture buffer
Date: Mon, 25 Oct 2010 11:11:04 +0200


On Oct 25, 2010, at 10:54 AM, Noorul Islam wrote:

On Mon, Oct 25, 2010 at 12:41 PM, Carsten Dominik
<address@hidden> wrote:
Hi Noorul, hi Richard,


On Oct 23, 2010, at 12:16 PM, Noorul Islam wrote:

On Sat, Oct 23, 2010 at 2:12 PM, Noorul Islam <address@hidden> wrote:

On Fri, Oct 22, 2010 at 5:13 PM, Richard Riley <address@hidden >
wrote:

What determines the level of a new capture element? e.g I just created
one and it started at "****".

feature request : when I added some sub elements to a capture buffer e.g

* my new capture

** sub point

*** sub sub point 1
*** sub sub point 2

and hit C-c C-w to refile, it only refiled the sub element (where cursor was) and then lost the rest. I would like to suggest that refile from the capture buffer should refile the entire buffer and not only the
"current nested org item". Or am I missing something in my setup?

On my box I have this observation.

If I have something like this in my capture buffer

* TODO Test

* my new capture

** sub point

*** sub sub point 1
*** sub sub point 2


and if I press C-c C-w at the last line (*** sub sub point 2) and
refile it to refile.org then what I get in refile.org is this


* TODO Test

* my new capture

** sub point

*** sub sub point 1
* sub sub point 2


The last one's level got changed.
I have latest pull from git repo.

Org-mode version 7.01trans (release_7.01h.833.g21ad0)
GNU Emacs 23.2.2 (i686-pc-linux-gnu)
 of 2010-06-08 on sajida


Fix org-capture bug.

* lisp/org.el (org-capture-refile): Consider entire temporary buffer
for refiling.


diff --git a/lisp/org-capture.el b/lisp/org-capture.el
index 7915f7f..6c62114 100644
--- a/lisp/org-capture.el
+++ b/lisp/org-capture.el
@@ -548,7 +548,7 @@ already gone."
  (unless (eq (org-capture-get :type 'local) 'entry)
    (error
"Refiling from a capture buffer makes only sense for `entry'- type
templates"))
-  (let ((pos (point))
+  (let ((pos (point-min))
       (base (buffer-base-buffer (current-buffer)))
       (org-refile-for-capture t))
    (org-capture-finalize)


This patch catures the problem and brings forward a correct idea.
But I believe we need to think a bit further.  The current
implementation of C-c C-w as a way to finish capture works
as closely as possible to the standard refile mechanism.
I.e. the tree *where the cursor is at* will be refiled.

Your patch makes the cursor move back to beginning of the
accessible part of the buffer and refiles from there.

If the captured entry starts at this point, and if all
the narrowed section contains is a single tree, this
is a good solution. However, if we move away from having
refile work in the exact same way as normally, the
following questions arise:

1. Maybe the user has entered an empty line before the subtree.
  In this case, the outline node *before* the captured tree
  will now be refiled.

2. Maybe the user has widened the capture buffer.  In this case
  the code will now refile the first node in the buffer, possibly
  very far from the current location of point.  Or, it will
  throw an error because the may not be an outline
  node at point min.

3. Maybe the user has added several trees (siblings) into the
  capture buffer.  In this case, the refile will only
  affect the first of those siblings.


Fair enough. Thank you!

So we have two solutions here:

Solution 1:  Be aware that you are just calling refile, so
            move the cursor to the appropriate place before
            running the command.


If we insist this in the manual then I think no change is required.

But what about the bug that I mentioned earlier, the one that looses the level?

Still need to look at that one.

- Carsten




reply via email to

[Prev in Thread] Current Thread [Next in Thread]