emacs-orgmode
[Top][All Lists]
Advanced

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

Re: [feature request] A new cookie type [!] showing the last note taken


From: Ihor Radchenko
Subject: Re: [feature request] A new cookie type [!] showing the last note taken
Date: Sun, 30 Aug 2020 20:18:29 +0800

> Again, on a given document, you can only guess what is the "last note".
> This is not reliable enough to extend the syntax.

I feel that my understand of "note" in context of org is different from
yours. Is there a formal definition of "note" in org?

If no, there is indeed no reliable way to capture "last note". However,
we can formalise the "last note taken" to "last note taken using
org-add-note".

> This implementation is only tangentially related to a "last note". You
> want to introduce some syntax to display the value a given property,
> here SUMMARY. But `org-add-note' is not the only way to add a note. 

org-add-note is the only way I am aware about (except plain text,
indeed). That's why I wrote the function saving the last note taken
using org-add-note into SUMMARY. The property is only used here for
convenient retrieval, not because I implied showing a property value.

May I know what are the other ways to add note via interactive function
in Org?

Best,
Ihor

Nicolas Goaziou <mail@nicolasgoaziou.fr> writes:

> Ihor Radchenko <yantar92@gmail.com> writes:
>
>> I was mainly referring to org-add-note. The last note taken with
>> org-add-note can be found quite reliably.
>>
>> I am using the following code saving the last note into :SUMMARY:
>> property upon exiting the note buffer. Though it may be an overkill, not
>> sure how easy would it be to parse the note syntax for notes created by
>> org-add-note.
>
> You cannot reliably.
>
>> (defvar yant/last-note-taken ""
>>   "Text of the last note taken.")
>>
>> (define-advice org-store-log-note (:before (&rest args) 
>> yant/org-store-last-note)
>>   "Store the last saved note into `yant/last-note-taken'."
>>   (let ((txt (buffer-string)))
>>     (while (string-match "\\`# .*\n[ \t\n]*" txt)
>>       (setq txt (replace-match "" t t txt)))
>>     (when (string-match "\\s-+\\'" txt)
>>       (setq txt (replace-match " " t t txt)))
>>     (when (string-match "\n" txt)
>>       (setq txt (replace-match " " t t txt)))
>>     (if (not (seq-empty-p txt))
>>      (setq yant/last-note-taken txt))))
>>
>> (define-advice org-store-log-note (:after (&rest args) 
>> yant/org-save-last-note-into-summary-prop)
>>   "Save the last saved note into SUMMARY property."
>>   (when (and (not org-note-abort) (not (seq-empty-p yant/last-note-taken)))
>>     (if (eq major-mode 'org-agenda-mode)
>>      (org-with-point-at-org-buffer
>>       (org-set-property "SUMMARY" (or yant/last-note-taken "")))
>>       (org-set-property "SUMMARY" (or yant/last-note-taken "")))
>>     (setq yant/last-note-taken nil)))
>
> This implementation is only tangentially related to a "last note". You
> want to introduce some syntax to display the value a given property,
> here SUMMARY. But `org-add-note' is not the only way to add a note. 
>
> Again, on a given document, you can only guess what is the "last note".
> This is not reliable enough to extend the syntax.
>
> Regards,



reply via email to

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