;;; 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"))

Generated by apteryx using scpaste at Fri May 29 16:09:51 2026. JST. (original)