(require 'request-tracker) (defun planner-rt-annotation-from-rt () "If called from an RT mail, return an annotation. Suitable for use in `planner-annotation-functions'." (save-excursion (goto-char (point-min)) (when (re-search-forward "^RT-Ticket: * \\([^ ]*\\) +#\\([0-9]+\\)" nil t) (let* ((rtname (match-string 1)) (ticket (match-string 2))) (emacs-wiki-make-link (concat "rt://" rtname "/" ticket) (concat "RT#" ticket)))))) (autoload 'rt-web-ticket-url "request-tracker") (defun planner-rt-resolve-url (url) "Replace URL with a link to the RT ticket web page." (when (string-match "^rt://\\([^/]*\\)/\\([0-9]+\\)" url) (let ((rtname (match-string 1 url)) (ticket (match-string 2 url))) (if (string-equal rtname "") (setq rtname nil)) (rt-web-ticket-url ticket rtname)))) (defun planner-rt-browse-url (url) "If this is an RT URL, jump to it." (when (string-match "^rt://\\([^/]*\\)/\\([0-9]+\\)" url) (let ((rtname (match-string 1 url)) (ticket (match-string 2 url))) (rt-web-ticket ticket rtname)))) (planner-add-protocol "rt" 'planner-rt-browse-url 'planner-rt-resolve-url) (add-hook 'planner-annotation-functions 'planner-rt-annotation-from-rt) (custom-add-option 'planner-annotation-functions 'planner-rt-annotation-from-rt) (provide 'planner-rt) ;;; planner-rt.el ends here