From b601ed675fa6ff247e61b8907dbbd41bbd32bcdd Mon Sep 17 00:00:00 2001 From: Yuchen Pei Date: Mon, 26 Jul 2021 15:23:23 +1000 Subject: Adding functionality storing an rt org link in ticket browser mode. --- rt-liberation-org.el | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/rt-liberation-org.el b/rt-liberation-org.el index 74530b1..1e59f15 100644 --- a/rt-liberation-org.el +++ b/rt-liberation-org.el @@ -33,7 +33,7 @@ (require 'org) (defun rt-org-open (link) - "Open the rt LINK. + "Opens the rt LINK. Open the rt ticket (for links starting with 'id:') or run the query (for links starting with 'query:')." (require 'rt-liberation) @@ -47,12 +47,31 @@ (rt-liber-browse-query (match-string 1 link))) (t (error "Unrecognized link type '%s'" link)))) +(defun rt-org-store-link () + "Stores an rt link in ticket-browser mode." + (require 'rt-liberation) + (let* ( + (ticket (get-text-property (point) 'rt-ticket)) + (link (concat "rt:id:" (rt-liber-ticket-id-only ticket))) + (subject (cdr (assoc "Subject" ticket))) + ) + (org-link-add-props + :link link + :description subject + ) + (when ticket link) + )) + ;; org-add-link-type is obsolete as of org-mode 9. Instead we will use the ;; org-link-set-parameters method (if (fboundp 'org-link-set-parameters) (org-link-set-parameters "rt" - :follow #'rt-org-open) - (org-add-link-type "rt" rt-org-open)) + :follow #'rt-org-open + :store #'rt-org-store-link + ) + (org-add-link-type "rt" rt-org-open) + (add-hook 'org-store-link-functions 'rt-org-store-link) + ) ;;; _ (provide 'rt-liberation-org) -- cgit v1.2.3