emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Carsten Dominik <carsten.dominik@gmail.com>
To: Noorul Islam <noorul@noorul.com>
Cc: Richard Riley <rileyrg@googlemail.com>, emacs-orgmode@gnu.org
Subject: Re: capture initial "level" and refile of capture buffer
Date: Mon, 25 Oct 2010 09:11:20 +0200	[thread overview]
Message-ID: <4D2F89B4-6F6C-411D-B272-3FF3DAD80B23@gmail.com> (raw)
In-Reply-To: <AANLkTim4khW3tXmP0az0w_knV82FFdV=JGDbzKWcG7Ov@mail.gmail.com>

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 <noorul@noorul.com>  
> wrote:
>> On Fri, Oct 22, 2010 at 5:13 PM, Richard Riley <rileyrg@googlemail.com 
>> > 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.

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.

Solution 2:  Install two markers at the beginning and end of
              the region to which the buffer has been narrowed,
              and then select that entire region for refiling.
              This is non-trivial, but probably can be made to
              work.

In either case we will probably have to update the manual
to make things clearer.

- Carsten

  parent reply	other threads:[~2010-10-25  8:08 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-10-22 11:43 capture initial "level" and refile of capture buffer Richard Riley
2010-10-23  8:42 ` Noorul Islam
2010-10-23 10:16   ` Noorul Islam
2010-10-23 10:34     ` Noorul Islam
2010-10-25  7:11     ` Carsten Dominik [this message]
2010-10-25  8:54       ` Noorul Islam
2010-10-25  9:11         ` Carsten Dominik
2010-12-12  8:39         ` Carsten Dominik
2010-10-25 11:34   ` Carsten Dominik
2010-10-26  8:37     ` Noorul Islam
2010-10-26  8:53 ` Carsten Dominik

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=4D2F89B4-6F6C-411D-B272-3FF3DAD80B23@gmail.com \
    --to=carsten.dominik@gmail.com \
    --cc=emacs-orgmode@gnu.org \
    --cc=noorul@noorul.com \
    --cc=rileyrg@googlemail.com \
    /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).