emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* Manually/programmatically adding a state transition message
@ 2021-09-18 18:28 Trevoke
  2021-10-02  9:19 ` Ihor Radchenko
  0 siblings, 1 reply; 4+ messages in thread
From: Trevoke @ 2021-09-18 18:28 UTC (permalink / raw)
  To: Org-Mode mailing list

[-- Attachment #1: Type: text/plain, Size: 687 bytes --]

I am writing some code to change the state of an org headline. I have
figured out that an error will pop up if I am automatically transitioning
to a state that requires a note logged. How can I automatically add a state
transition note?

I know I can write this:

    (universal-argument)
    (universal-argument)
    (universal-argument)
    (org-todo "WAIT")

and this will automatically skip note logging.

I've looked at the code around adding a log-note and it looks like it might
be automatable but there's a lot of pieces I don't know in there, so if
there's a way to add just a state transition with a programmatically
provided note, I'll take that, please :)

Thanks,

--Aldric

[-- Attachment #2: Type: text/html, Size: 904 bytes --]

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Manually/programmatically adding a state transition message
  2021-09-18 18:28 Manually/programmatically adding a state transition message Trevoke
@ 2021-10-02  9:19 ` Ihor Radchenko
  2021-10-03 14:30   ` Trevoke
  0 siblings, 1 reply; 4+ messages in thread
From: Ihor Radchenko @ 2021-10-02  9:19 UTC (permalink / raw)
  To: Trevoke; +Cc: Org-Mode mailing list

Trevoke <trevoke@gmail.com> writes:

> I've looked at the code around adding a log-note and it looks like it might
> be automatable but there's a lot of pieces I don't know in there, so if
> there's a way to add just a state transition with a programmatically
> provided note, I'll take that, please :)

It may be fragile, but you can try let-binding

(org-inhibit-logging 'note)

around elisp org-todo call

Best,
Ihor


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Manually/programmatically adding a state transition message
  2021-10-02  9:19 ` Ihor Radchenko
@ 2021-10-03 14:30   ` Trevoke
  2021-10-03 14:54     ` Ihor Radchenko
  0 siblings, 1 reply; 4+ messages in thread
From: Trevoke @ 2021-10-03 14:30 UTC (permalink / raw)
  To: Ihor Radchenko; +Cc: Org-Mode mailing list

[-- Attachment #1: Type: text/plain, Size: 839 bytes --]

On Sat, Oct 2, 2021 at 5:18 AM Ihor Radchenko <yantar92@gmail.com> wrote:

> It may be fragile, but you can try let-binding
>
> (org-inhibit-logging 'note)
>
> around elisp org-todo call
>
> Hi Ihor,

If I understand correctly, this will prevent the addition of a note; I have
already found a way to do this. Please let me know if I am mistaken.
What I am looking for is a way to programmatically, without user input,
change the state and add an automatic note.

If I understand correctly, org-mode implements the addition of the note
through the function `org-add-log-note` and `org-store-log-note`, and I was
really hoping I wouldn't have to sift through these two functions to figure
out and possibly reimplement all the logic of how it finds the place where
to add the note so I can insert the string there myself.

Sincerely,
-Aldric

[-- Attachment #2: Type: text/html, Size: 1256 bytes --]

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Manually/programmatically adding a state transition message
  2021-10-03 14:30   ` Trevoke
@ 2021-10-03 14:54     ` Ihor Radchenko
  0 siblings, 0 replies; 4+ messages in thread
From: Ihor Radchenko @ 2021-10-03 14:54 UTC (permalink / raw)
  To: Trevoke; +Cc: Org-Mode mailing list

Trevoke <trevoke@gmail.com> writes:

> If I understand correctly, this will prevent the addition of a note; I have
> already found a way to do this. Please let me know if I am mistaken.
> What I am looking for is a way to programmatically, without user input,
> change the state and add an automatic note.

No.  Setting this variable programatically is an equivalent of "0"
prefix arg.  Just try it yourself (replacing CANCELLED with whatever
todo keyword that normally triggers interactive note for you):

(let ((org-inhibit-logging 'note)) (org-todo "CANCELLED"))

> If I understand correctly, org-mode implements the addition of the note
> through the function `org-add-log-note` and `org-store-log-note`, and I was
> really hoping I wouldn't have to sift through these two functions to figure
> out and possibly reimplement all the logic of how it finds the place where
> to add the note so I can insert the string there myself.

Yes. Unfortunately, this note system is not very configurable. Though
your specific case is (somewhat awkwardly) covered. In org-add-log-note,
there is the following line:

(if (memq org-log-note-how '(time state))

The org-log-note-how is set in org-add-log-setup according to its args.

org-todo calls org-add-log-setup depending on the value of
org-inhibit-logging.

Thus, my suggestion.

And yes, it is cumbersome. We should re-implement the note system some
day in future.

Best,
Ihor


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2021-10-03 14:55 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-09-18 18:28 Manually/programmatically adding a state transition message Trevoke
2021-10-02  9:19 ` Ihor Radchenko
2021-10-03 14:30   ` Trevoke
2021-10-03 14:54     ` Ihor Radchenko

Code repositories for project(s) associated with this 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).