Re: How can I use org-add-note with emacsclient?

2023-12-26 Thread equal . moon0346
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.



Re: How can I use org-add-note with emacsclient?

2023-12-25 Thread Ihor Radchenko
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))'

-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at .
Support Org development at ,
or support my work at 



How can I use org-add-note with emacsclient?

2023-12-23 Thread equal . moon0346
Hello Org mode users,

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:

Start Emacs:

emacs --fg-daemon=test -Q -nw --eval "(setq-default org-agenda-files 
'(\"~/org-agenda-files\"))"

Connect to the daemon in a different terminal, load the agenda:

emacsclient -s test -nw --eval '(org-agenda nil "a")' 

^ In this frame I'll also clock in to some heading with I in the agenda. Then I 
close the terminal.

In another terminal, try to start a new note on the currently clocked task:

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?

Thanks and Happy Holidays!

Moon