Hi Simon,
I won't rehash your points, it seems our experience has a lot in common.
I'd just like to point the better (still far from perfect) Forgejo
client I've used so far, emacs-forgejo. Contrary to emacs-fj, it keeps
a local sqlite database of all the issues, and you can hopefully (I
haven't tried) consult them offline, in a tabular view (no pesky pages!)
similar to what could be done with Debbugs. Unfortunately, the author
(Thanos) recently decided against using Forgejo (and switched to Nix),
so the tool is currently abandoned :-/.
Anyway, you may want to try it; it's still packaged in Guix for
now. It's at least useful to browse issues and configured via
bug-reference; below is, I think, the relevant configurations (it's a
dump, probably there's too many things there, but hopefully you find
something useful):
--8<---------------cut here---------------start------------->8---
;;; Forgejo & Codeberg
;;; fj.el
(require 'fj)
(setopt fj-user "apteryx")
;;; Visual-fill-column.
(require 'visual-fill-column)
(add-hook 'visual-line-mode-hook #'visual-fill-column-for-vline)
;;; Emacs-forgejo.
(require 'forgejo)
(add-hook 'forgejo-watch-hooks #'forgejo-alert-notify)
(setopt forgejo-buffer-setup-functions
(list (lambda (buffer)
(unless (derived-mode-p 'tabulated-list-mode)
(visual-line-mode t))))
forgejo-watch-rules '(("*")))
;;; Bug-reference, Debbugs & friends.
(require 'bug-reference)
(add-hook 'erc-mode-hook #'bug-reference-mode)
(add-hook 'gnus-mode-hook #'bug-reference-mode)
(add-hook 'gnus-summary-mode-hook #'bug-reference-mode)
(add-hook 'gnus-article-mode-hook #'bug-reference-mode)
(add-hook 'magit-revision-mode #'bug-reference-mode)
(add-hook 'prog-mode-hook #'bug-reference-prog-mode)
(let* ((bug-regexp (rx (seq (?? "bug")
(group (seq (? "guix/guix") (or "#" "!"))
(group (one-or-more digit))))))
(make-url-format (lambda (org repo)
(lambda ()
(let ((matched-text (match-string 0))
(number (match-string 2)))
(if (string-search "bug#" matched-text)
(concat "https://issues.guix.gnu.org/" number)
(format "https://codeberg.org/%s/%s/issues/%s"
org repo number))))))
(guix-url-format (funcall make-url-format "guix" "guix"))
(guile-url-format (funcall make-url-format "guile" "guile")))
;; For ERC.
(add-to-list 'bug-reference-setup-from-irc-alist
(list "#guix" "Libera.Chat" bug-regexp guix-url-format)
(list "#guile" "Libera.Chat" bug-regexp guile-url-format))
;; For Gnus.
(add-to-list 'bug-reference-setup-from-mail-alist
(list (rx "guixotic.coop") ;catch-all
nil bug-regexp guix-url-format))
(add-to-list 'bug-reference-setup-from-mail-alist
(list (rx (seq "lists." (* anything) "guile"))
nil bug-regexp guile-url-format)))
(require 'debbugs)
(require 'debbugs-browse)
(add-hook 'bug-reference-mode-hook #'debbugs-browse-mode)
(add-hook 'bug-reference-prog-mode-hook #'debbugs-browse-mode)
(add-hook 'log-view-mode-hook #'debbugs-browse-mode) ;for vc-chage-log
(add-hook 'bug-reference-mode-hook #'forgejo-browse-mode)
(add-hook 'bug-reference-prog-mode-hook #'forgejo-browse-mode)
(add-hook 'log-view-mode-hook #'forgejo-browse-mode) ;for vc-chage-log
;; The following allows Emacs Debbugs user to open the issue directly within
;; Emacs.
(setq debbugs-browse-url-regexp
(rx "http" (zero-or-one "s") "://"
(or "debbugs" "issues.guix" "bugs")
".gnu.org" (one-or-more "/")
(group (zero-or-one "cgi/bugreport.cgi?bug="))
(group-n 3 (one-or-more digit))))
;; Reduce the number of prompts with 'M-x debbugs-gnu'.
(setq debbugs-gnu-default-packages '("guix" "guix-patches"))
;; Show feature requests.
(setq debbugs-gnu-default-severities
'("serious" "important" "normal" "minor" "wishlist"))
--8<---------------cut here---------------end--------------->8---
The review comments being made near-useless after force-pushing has
occurred at least twice, invalidating some of my time-intensive
reviews. Is there a Forgejo issue tracking that problem already?
--
Thanks,
Maxim