emacs-elpa-diffs
[Top][All Lists]
Advanced

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

[elpa] externals/embark d7957f624c 1/4: Add target for Org agenda items


From: ELPA Syncer
Subject: [elpa] externals/embark d7957f624c 1/4: Add target for Org agenda items
Date: Tue, 13 Jun 2023 03:57:44 -0400 (EDT)

branch: externals/embark
commit d7957f624cf3ff20609ac4949115c8ba7d2e3d06
Author: Omar Antolín Camarena <omar.antolin@gmail.com>
Commit: Omar Antolín Camarena <omar.antolin@gmail.com>

    Add target for Org agenda items
    
    This fixes #639.
---
 embark-org.el | 40 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 40 insertions(+)

diff --git a/embark-org.el b/embark-org.el
index f909a283c4..c8c5d5a922 100644
--- a/embark-org.el
+++ b/embark-org.el
@@ -527,5 +527,45 @@ REST are the remaining arguments."
 
 (keymap-set embark-encode-map "o" 'embark-org-export-in-place-map)
 
+;;; Org agenda items
+
+(defun embark-org-target-agenda-item ()
+  "Target Org agenda item at point."
+  (when (and (derived-mode-p 'org-agenda-mode)
+             (get-text-property (line-beginning-position) 'org-marker))
+    (let ((start (+ (line-beginning-position) (current-indentation)))
+          (end (line-end-position)))
+      `(org-agenda-item ,(buffer-substring start end) ,start . ,end))))
+
+(let ((tail (memq 'embark-org-target-element-context embark-target-finders)))
+  (cl-pushnew 'embark-org-target-agenda-item (cdr tail)))
+
+(defvar-keymap embark-org-agenda-item-map
+  :doc "Keymap for actions on Org agenda items"
+  :parent embark-general-map
+  "RET" #'org-agenda-goto
+  "n" #'org-agenda-next-item
+  "p" #'org-agenda-previous-item
+  "t" #'org-agenda-todo
+  "k" #'org-agenda-kill
+  "u" #'org-agenda-undo
+  "d" #'org-agenda-toggle-deadlines
+  "a" #'org-agenda-archive
+  "i" #'org-agenda-clock-in
+  "o" #'org-agenda-clock-out
+  ":" #'org-agenda-set-tags
+  "," #'org-agenda-priority
+  "s" #'org-agenda-schedule
+  "P" #'org-agenda-set-property
+  "e" #'org-agenda-set-effort
+  "R" #'org-agenda-refile
+  "N" #'org-agenda-add-note
+  "b" #'org-agenda-tree-to-indirect-buffer)
+
+(add-to-list 'embark-keymap-alist '(org-agenda-item 
embark-org-agenda-item-map))
+
+(dolist (cmd '(org-agenda-todo org-agenda-next-item org-agenda-previous-item))
+  (cl-pushnew cmd embark-repeat-actions))
+
 (provide 'embark-org)
 ;;; embark-org.el ends here



reply via email to

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