On Mon, Dec 25, 2023, at 14:35, Ihor Radchenko wrote:
> equal.moon0...@fastmail.com writes:
>
>> I'm trying to figure out how to start a note (C-c C-z) on the currently 
>> clocked task from emacsclient. Here's what I have so far:
>> ...
>> emacsclient -s test -nw --eval '(progn (org-clock-goto) (org-add-note))'
>>
>> This seems to have no effect. Oddly, if I paste this into M-:, it works 
>> fine. I've tried a number of things with e.g. plain capture templates that 
>> run the above code :after-finalize, using call-interactively, etc. After a 
>> cursory reading through the info manual on interactivity I find I'm still a 
>> bit lost. Can anyone explain what I'm doing wrong and hopefully point me to 
>> the right manual page to read on this?
>
> `org-add-note' is implemented a bit awkwardly using post-command-hook,
> which makes it work only interactively.
> The hook does not trigger when you use --eval. That's why you are not
> seeing the note buffer after running the above shell command.
>
> What you can do is manually call the function used to raise the note
> buffer:
>
> emacsclient -nw --eval '(progn (org-clock-goto) (org-add-note) 
> (org-add-log-note))'

Thanks, this works! I'm curious as to why though. Shouldn't something like 
call-interactively solve this problem too? I'm thinking it has something to do 
with how the command loop works that I don't understand.

Reply via email to