* [PATCH] Document custom org agenda functions
@ 2022-04-05 12:08 thecashewtrader
2022-11-07 8:13 ` Ihor Radchenko
0 siblings, 1 reply; 2+ messages in thread
From: thecashewtrader @ 2022-04-05 12:08 UTC (permalink / raw)
To: emacs-orgmode; +Cc: thecashewtrader
---
org-tutorials/org-custom-agenda-commands.org | 40 +++++++++++++++++++-
1 file changed, 39 insertions(+), 1 deletion(-)
diff --git a/org-tutorials/org-custom-agenda-commands.org b/org-tutorials/org-custom-agenda-commands.org
index e54bcef3..5b55ebb5 100644
--- a/org-tutorials/org-custom-agenda-commands.org
+++ b/org-tutorials/org-custom-agenda-commands.org
@@ -64,7 +64,7 @@ command is a list consisting of the following:
(optional).
- 3) Type of search :: The desired agenda display/search. The options
include agenda, todo, search, tags, alltodo, tags-todo,
- todo-tree, tags-tree, occur-tree, or a user-defined function.
+ todo-tree, tags-tree, occur-tree, or a [[*User Defined Functions][user-defined function]].
- 4) Search term :: Depending on the type of search, this will be a
TODO keyword, a tag (or property), a word, or a
regular expression.
@@ -372,6 +372,44 @@ deadlines and nothing else.
Tip: if you want to exclude all agenda entry types, just set
=org-agenda-entry-types= to nil.
+* User Defined Functions
+** Function Signature
+User defined functions should:
+
+- Optionally accept one parameter i.e. the =match= variable. The Org agenda dispatch function will call the user-defined function with one parameter representing the =match= component from the agenda definition. In other words, ~(udf/test "Hello")~ in =org-agenda-custom-commands= will result in a function call of ~udf/test~ with an argument of ="Hello"=.
+
+- Prepare a buffer to write the agenda information to using ~org-agenda-prepare~.
+
+- Handle setting a unique buffer name for the cases where =org-agenda-sticky= has a value of =t=.
+
+- Honor the setting of =org-agenda-overriding-header= and insert that text into the agenda buffer. This can be done using the macro ~org-agenda--insert-overriding-header~.
+
+- Insert into the buffer the desired contents, accounting for also setting text properties.
+
+- Call ~org-agenda-finalize~ and ~(setq buffer-read-only t)~
+
+** Example
+This is a simple function to insert notes into the Agenda.
+
+*NOTE: This example is not fully complete as it doesn't respect =org-agenda-sticky=.*
+
+#+begin_src emacs-lisp
+
+(defun udf/org-agenda-notes (&optional arg)
+ (org-agenda-prepare "Notes")
+ (org-agenda--insert-overriding-header "Notes")
+ (let ((org-agenda-notes
+ (list "Note 1"
+ "Note 2"
+ "Note 3")))
+ (dolist (note org-agenda-notes)
+ (insert (format "- %s\n" note))))
+ (org-agenda-finalize)
+ (setq buffer-read-only t))
+
+#+end_src
+
+
* Other configuration ideas
This section is for additional ideas for configuring
--
2.35.1
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH] Document custom org agenda functions
2022-04-05 12:08 [PATCH] Document custom org agenda functions thecashewtrader
@ 2022-11-07 8:13 ` Ihor Radchenko
0 siblings, 0 replies; 2+ messages in thread
From: Ihor Radchenko @ 2022-11-07 8:13 UTC (permalink / raw)
To: thecashewtrader; +Cc: emacs-orgmode
thecashewtrader <thecashewtrader@protonmail.com> writes:
> +* User Defined Functions
> +** Function Signature
> +User defined functions should:
> +
> +- Optionally accept one parameter i.e. the =match= variable. The Org agenda dispatch function will call the user-defined function with one parameter representing the =match= component from the agenda definition. In other words, ~(udf/test "Hello")~ in =org-agenda-custom-commands= will result in a function call of ~udf/test~ with an argument of ="Hello"=.
> +
> +- Prepare a buffer to write the agenda information to using ~org-agenda-prepare~.
> +
> +- Handle setting a unique buffer name for the cases where =org-agenda-sticky= has a value of =t=.
> +
> +- Honor the setting of =org-agenda-overriding-header= and insert that text into the agenda buffer. This can be done using the macro ~org-agenda--insert-overriding-header~.
> +
> +- Insert into the buffer the desired contents, accounting for also setting text properties.
> +
> +- Call ~org-agenda-finalize~ and ~(setq buffer-read-only t)~
Thanks for the patch, and sorry for the late reply.
I am not sure if this explanation is useful.
Yes, it kind of works and also inserts text into agenda. However, the
inserted text will not allow the usual agenda interaction. One would
also need to set various text properties pointing to an Org heading in
order to make the inserted lines interactive.
--
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2022-11-07 8:14 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-04-05 12:08 [PATCH] Document custom org agenda functions thecashewtrader
2022-11-07 8:13 ` Ihor Radchenko
Code repositories for project(s) associated with this public 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).