emacs-orgmode
[Top][All Lists]
Advanced

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

[Orgmode] Re: Capture mode seems to be easily confused in Emacs 22


From: Bernt Hansen
Subject: [Orgmode] Re: Capture mode seems to be easily confused in Emacs 22
Date: Thu, 24 Jun 2010 09:14:51 -0400
User-agent: Gnus/5.11 (Gnus v5.11) Emacs/22.2 (gnu/linux)

Carsten Dominik <address@hidden> writes:

> On Jun 24, 2010, at 2:26 PM, Bernt Hansen wrote:
>
>> Carsten Dominik <address@hidden> writes:
>>
>>> On Jun 24, 2010, at 4:57 AM, Bernt Hansen wrote:
>>>
>>>> In my Emacs 22 on Debian
>>>>
>>>> GNU Emacs 22.2.1 (i486-pc-linux-gnu, GTK+ Version 2.12.11) of
>>>> 2008-11-09
>>>> on raven, modified by Debian
>>>>
>>>> if I start a capture buffer with C-c c t and then immediately try to
>>>> file it with C-c C-c (with the point still on the heading) it
>>>> prompts
>>>> for tags instead of filing.  This seems to work fine in Emacs 23.
>>>>
>>>> In Emacs 22 I end up in the CAPTURE-refile.org buffer with the
>>>> overlay
>>>> on line 1 stating to use C-c C-c to file and C-c C-k to abort but
>>>> these
>>>> keys no longer work.  Widening the buffer and using C-c C-c on
>>>> the #+STARTUP line refreshes the config and makes it possible to
>>>> continue.
>>>
>>
>>> this is strange, and also a sign that org-capture-mode is not active
>>> in that buffer. My preliminary test show that it works here under
>>> emacs 22.
>>>
>>> Anything suspicious in *Messages* ?
>>
>> The toggling capture mode off message look suspicious.
>>
>> ,----
>> | Loading /home/bernt/git/org-mode/lisp/org-capture.el (source)...done
>> | Template key:
>> | Loading tabify...done
>> | Clipboard pasted as level 1 subtree
>> | Toggling org-capture-mode off; better pass an explicit argument.
>> | Clock starts at [2010-06-24 Thu 08:24] - showing entire task time.
>> `----
>
> Hi Bernt,
>
> I suspect that you use
>
>     (org-capture-mode)
>
> in one of your hook function, in order to check if the mode is on.
> However, this is a function call, and it will TOGGLE the mode, so you
> are turning it off.
>
> Just remove the parenthesis, to test the *variable*
>
>     (if org-capture-mode
>            .........
>
> If you want to protect yourself from running this hook before org- 
> capture
> is is loaded and org-capture-mode defined, you can do
>
>     (if (and (boundp 'org-capture-mode) org-capture-mode
>             ......
>
> I am willing to bet that this is the problem you are experiencing. :-)

*BINGO*.  Duh now I feel stupid :)

Sorry about that snafu.  /me blames it on the guy that named the
variable and function the same thing ;)

After my post to Nick about not being able to use the capture mode
*variable* I promptly updated my clock in to NEXT function to try to use
it and I wrapped org-capture-mode in parens... so it called the
function.

Just FYI this is my new function

,----
| (defun bh/clock-in-to-next (kw)
|   "Switch task from TODO to NEXT when clocking in.
| Skips remember tasks and tasks with subtasks"
|   (if (and (string-equal kw "TODO")
|          (not (string-equal (buffer-name) "*Remember*"))
| ;        (not (string-match "^CAPTURE-.*\.org" (buffer-name) )))
|          (not org-capture-mode))
|       (let ((subtree-end (save-excursion (org-end-of-subtree t)))
|           (has-subtask nil))
|       (save-excursion
|         (forward-line 1)
|         (while (and (not has-subtask)
|                     (< (point) subtree-end)
|                     (re-search-forward "^\*+ " subtree-end t))
|           (message "Found todo keyword %s" (org-get-todo-state))
|           (when (member (org-get-todo-state) org-not-done-keywords)
|             (setq has-subtask t))))
|       (when (not has-subtask)
|         "NEXT"))))
`----

and the call to org-capture-mode used to look like this

,----
|          (not (org-capture-mode)))
`----

Thank for solving this one!

Best regards,
Bernt




reply via email to

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