blob: cefc5eb68369a25f2c2b253ace5e16e57fd81814 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
;;; my-rtliber.el -- Extensions for rt-liberation -*- lexical-binding: t -*-
;; Copyright (C) 2023 Free Software Foundation.
;; Author: Yuchen Pei <id@ypei.org>
;; Package-Requires: ((emacs "28.2"))
;; This file is part of dotfiles.
;; dotfiles is free software: you can redistribute it and/or modify it under
;; the terms of the GNU Affero General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.
;; dotfiles is distributed in the hope that it will be useful, but WITHOUT
;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
;; or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General
;; Public License for more details.
;; You should have received a copy of the GNU Affero General Public
;; License along with dotfiles. If not, see <https://www.gnu.org/licenses/>.
;;; Commentary:
;; Extensions for rt-liberation.
;;; Code:
(require 'rt-liberation)
;;; fixme: fsf credentials
(defun my-rt-liber-my-open-tickets () (interactive)
(rt-liber-browse-query
(format "owner = '%s' and status != 'resolved'"
rt-liber-username)))
(defun my-rt-liber-my-tickets () (interactive)
(rt-liber-browse-query
(format "owner = '%s'" rt-liber-username)))
(defun my-rt-liber-backlog ()
(interactive)
(rt-liber-browse-query
"created >= '90 days ago' and owner = 'nobody' and status != 'resolved'"))
(defun my-rt-liber-get-ticket-by-id (id)
(interactive "sTicket ID: ") (rt-liber-browse-query (concat "id = "
id)))
(defun my-rt-liber-query-by-subject (query)
(interactive "sQuery in subject: ")
(rt-liber-browse-query
(concat "subject like '" query "'")))
;;; Used to override `rt-liber-viewer-visit-in-browser'
(defun my-rt-liber-viewer-visit-in-browser (&optional external)
"Visit this ticket section in the RT Web interface.
With a prefix arg, browse using secondary browser."
(interactive "P")
(let ((id (rt-liber-ticket-id-only rt-liber-ticket-local))
(browser-function
(if external browse-url-secondary-browser-function
'browse-url)))
(if id
(funcall browser-function
(concat rt-liber-base-url "Ticket/Display.html?id=" id
"#txn-"
(alist-get 'id (rt-liber-viewer2-get-section-data))))
(error "no ticket currently in view"))))
(provide 'my-rtliber)
;;; my-rtliber.el ends here
|