[PATCH] .dir-locals.el: Update bug-reference configuration and document it.

  • Done
  • quality assurance status badge
Details
4 participants
  • brian
  • Ludovic Courtès
  • Maxim Cournoyer
  • Simon Tournier
Owner
unassigned
Submitted by
Maxim Cournoyer
Severity
normal
M
M
Maxim Cournoyer wrote on 12 Sep 2023 05:44
0f74c4468dae139ae2406b8200d0ba6bdc374455.1694490271.git.maxim.cournoyer@gmail.com
(nil) <bug-reference-url-format>: Update URL. Add comment.
* doc/contributing.texi (The Perfect Setup): New "Viewing bugs within Emacs"
subsection.
---
.dir-locals.el | 6 ++++--
doc/contributing.texi | 45 +++++++++++++++++++++++++++++++++++++++++++
2 files changed, 49 insertions(+), 2 deletions(-)

Toggle diff (79 lines)
diff --git a/.dir-locals.el b/.dir-locals.el
index 36714c1aa4..c63262848c 100644
--- a/.dir-locals.el
+++ b/.dir-locals.el
@@ -5,10 +5,12 @@
(tab-width . 8)
(sentence-end-double-space . t)
- ;; For use with 'bug-reference-prog-mode'.
+ ;; For use with 'bug-reference-prog-mode'. Extra bug-reference
+ ;; configuration should be done in your Emacs user configuration file;
+ ;; refer to (info (guix) The Perfect Setup).
(bug-reference-bug-regexp
. "\\(<https?://\\bugs\\.gnu\\.org/\\([0-9]+\\)>\\)")
- (bug-reference-url-format . "https://bugs.gnu.org/%s")
+ (bug-reference-url-format . "https://issues.guix.gnu.org/%s")
(eval . (add-to-list 'completion-ignored-extensions ".go"))
diff --git a/doc/contributing.texi b/doc/contributing.texi
index a0da871f1a..608da89a2c 100644
--- a/doc/contributing.texi
+++ b/doc/contributing.texi
@@ -379,6 +379,51 @@ The Perfect Setup
save then add @code{(add-hook 'after-save-hook 'copyright-update)} in
Emacs.
+@subsection Viewing Bugs within Emacs
+
+Emacs has a nice minor mode called @code{bug-reference}, which, when
+combined with @samp{emacs-debbugs} (the Emacs package), can be used to
+open links such as @samp{<https://bugs.gnu.org/58697>} or
+@samp{<https://issues.guix.gnu.org/58697>} as bug report buffers. From
+there you can easily consult the email thread via the Gnus interface,
+reply or modify the bug status, all without leaving the comfort of
+Emacs! Below is a sample configuration to add to your @file{~/.emacs}
+configuration file:
+
+@lisp
+;;; Bug references.
+(add-hook 'prog-mode-hook #'bug-reference-prog-mode)
+(add-hook 'gnus-mode-hook #'bug-reference-mode)
+(add-hook 'erc-mode-hook #'bug-reference-mode)
+(add-hook 'bug-reference-mode-hook 'debbugs-browse-mode)
+(add-hook 'bug-reference-prog-mode-hook 'debbugs-browse-mode)
+(add-hook 'gnus-summary-mode-hook 'bug-reference-mode)
+(add-hook 'gnus-article-mode-hook 'bug-reference-mode)
+
+;;; This extends the default expression (the first complicated blob) to also
+;;; match URLs such as <https://issues.guix.gnu.org/58697> or
+;;; <https://bugs.gnu.org/58697>. It is also extended to detect "Fixes:
+;;; #NNNNN" git trailers.
+(setq bug-reference-bug-regexp
+ (concat
+ "\\("
+ "\\(?:\\b\\(?:[Bb]ug ?#?\\|[Pp]atch ?#\\|[Ff]ixes:? ?#\\|\
+RFE ?#\\|PR [a-z+-]+/\\)\\([0-9]+\\(?:#[0-9]+\\)?\\)\\)"
+ "\\|"
+ "\\(?:<https://bugs\\.gnu\\.org/\\(?2:[0-9]+\\)>\\)"
+ "\\)"))
+(setq bug-reference-url-format "https://bugs.gnu.org/%s")
+;; The following allows Emacs Debbugs user to open the issue directly within
+;; Emacs.
+(setq debbugs-browse-url-regexp
+ "^https?://\\(debbugs\\|\\(issues\\.guix\\|bugs\\)\\)\\.gnu\\.org/\
+\\(cgi/bugreport\\.cgi\\?bug=\\)?\\(?3:[[:digit:]]+\\)$")
+@end lisp
+
+For more information, refer to @ref{Bug Reference,,, emacs, The GNU
+Emacs Manual} and @ref{Minor Mode,,, debbugs-ug, The Debbugs User
+Guide}.
+
@node Packaging Guidelines
@section Packaging Guidelines

base-commit: 2a7f031ca9d6d16fe0264023d8beca02b3ac0050
--
2.41.0
B
(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
87zg1rzd5x.fsf@spork.org
Maxim Cournoyer <maxim.cournoyer@gmail.com> writes:

Toggle quote (13 lines)
> +;;; This extends the default expression (the first complicated blob) to also
> +;;; match URLs such as <https://issues.guix.gnu.org/58697> or
> +;;; <https://bugs.gnu.org/58697>. It is also extended to detect "Fixes:
> +;;; #NNNNN" git trailers.
> +(setq bug-reference-bug-regexp
> + (concat
> + "\\("
> + "\\(?:\\b\\(?:[Bb]ug ?#?\\|[Pp]atch ?#\\|[Ff]ixes:? ?#\\|\
> +RFE ?#\\|PR [a-z+-]+/\\)\\([0-9]+\\(?:#[0-9]+\\)?\\)\\)"
> + "\\|"
> + "\\(?:<https://bugs\\.gnu\\.org/\\(?2:[0-9]+\\)>\\)"
> + "\\)"))

Is there any reason not to use ‘rx’, rather than, as you say,
“complicated blobs’? Particularly with Emacs' requirement for ‘\\’
everywhere, regexps become even more like line noise.

If I'm reading this regexp right, for example, it could be:
Toggle snippet (24 lines)
(setq bug-reference-bug-regexp2
(rx (group (or (seq word-boundary
(or (seq (char "Bb") "ug"
(zero-or-one " ")
(zero-or-one "#"))
(seq (char "Pp") "atch"
(zero-or-one " ")
"#")
(seq (char "Ff") "ixes"
(zero-or-one ":")
(zero-or-one " ") "#")
(seq "RFE"
(zero-or-one " ") "#")
(seq "PR "
(one-or-more (char "a-z+-")) "/"))
(group (one-or-more (char "0-9"))
(zero-or-one
(seq "#" (one-or-more
(char "0-9"))))))
(seq "<https://bugs.gnu.org/"
(group-n 2 (one-or-more (char "0-9")))
">")))))

-bjc
B
(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
87v8cfzcie.fsf@spork.org
Maxim Cournoyer <maxim.cournoyer@gmail.com> writes:

Toggle quote (5 lines)
> +(setq debbugs-browse-url-regexp
> + "^https?://\\(debbugs\\|\\(issues\\.guix\\|bugs\\)\\)\\.gnu\\.org/\
> +\\(cgi/bugreport\\.cgi\\?bug=\\)?\\(?3:[[:digit:]]+\\)$")
> +@end lisp

While I'm at it, here's the ‘rx’ form of the above:
Toggle snippet (11 lines)
(setq debbugs-browse-url-regexp
(rx
line-start
"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))
line-end))

-bjc
L
L
Ludovic Courtès wrote on 13 Sep 2023 22:31
(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)(address . 65883@debbugs.gnu.org)
87msxpke73.fsf@gnu.org
Hi,

Maxim Cournoyer <maxim.cournoyer@gmail.com> skribis:

Toggle quote (4 lines)
> (nil) <bug-reference-url-format>: Update URL. Add comment.
> * doc/contributing.texi (The Perfect Setup): New "Viewing bugs within Emacs"
> subsection.

[...]

Toggle quote (4 lines)
> + ;; For use with 'bug-reference-prog-mode'. Extra bug-reference
> + ;; configuration should be done in your Emacs user configuration file;
> + ;; refer to (info (guix) The Perfect Setup).

Nitpick: (info "(guix) The Perfect Setup“), so one can C-x C-e it. :-)

Toggle quote (3 lines)
> (bug-reference-bug-regexp
> . "\\(<https?://\\bugs\\.gnu\\.org/\\([0-9]+\\)>\\)")

Should we add issues.guix here?


[...]

Toggle quote (5 lines)
> +(setq bug-reference-bug-regexp
> + (concat
> + "\\("
> + "\\(?:\\b\\(?:[Bb]ug ?#?\\|[Pp]atch ?#\\|[Ff]ixes:? ?#\\|\

I second Brian’s suggestion to use ‘rx’.

Other than that, I think it’s wonderful, well done!

Ludo’.
M
M
Maxim Cournoyer wrote on 14 Sep 2023 05:20
(name . Ludovic Courtès)(address . ludo@gnu.org)(address . 65883@debbugs.gnu.org)
87ttrxtp7r.fsf@gmail.com
Hi,

Ludovic Courtès <ludo@gnu.org> writes:

Toggle quote (16 lines)
> Hi,
>
> Maxim Cournoyer <maxim.cournoyer@gmail.com> skribis:
>
>> (nil) <bug-reference-url-format>: Update URL. Add comment.
>> * doc/contributing.texi (The Perfect Setup): New "Viewing bugs within Emacs"
>> subsection.
>
> [...]
>
>> + ;; For use with 'bug-reference-prog-mode'. Extra bug-reference
>> + ;; configuration should be done in your Emacs user configuration file;
>> + ;; refer to (info (guix) The Perfect Setup).
>
> Nitpick: (info "(guix) The Perfect Setup“), so one can C-x C-e it. :-)

Neat! I was wondering what's the trick to get them turn into links in
Emacs.

Toggle quote (5 lines)
>> (bug-reference-bug-regexp
>> . "\\(<https?://\\bugs\\.gnu\\.org/\\([0-9]+\\)>\\)")
>
> Should we add issues.guix here?

No, because issues.guix ones are already URLs, opened in a browser. For
Emacs users who prefer to have them open in Debbugs, that's what the
documented debbugs-browse-url-regexp is for.

Toggle quote (10 lines)
>
> [...]
>
>> +(setq bug-reference-bug-regexp
>> + (concat
>> + "\\("
>> + "\\(?:\\b\\(?:[Bb]ug ?#?\\|[Pp]atch ?#\\|[Ff]ixes:? ?#\\|\
>
> I second Brian’s suggestion to use ‘rx’.

That looks nicer indeed. Will review it soon.

Toggle quote (2 lines)
> Other than that, I think it’s wonderful, well done!

Thanks!

--
Maxim
M
M
Maxim Cournoyer wrote on 17 Sep 2023 22:45
(name . brian)(address . bjc@spork.org)
87fs3c7cm5.fsf@gmail.com
Hi,

brian <bjc@spork.org> writes:

Toggle quote (19 lines)
> Maxim Cournoyer <maxim.cournoyer@gmail.com> writes:
>
>> +(setq debbugs-browse-url-regexp
>> + "^https?://\\(debbugs\\|\\(issues\\.guix\\|bugs\\)\\)\\.gnu\\.org/\
>> +\\(cgi/bugreport\\.cgi\\?bug=\\)?\\(?3:[[:digit:]]+\\)$")
>> +@end lisp
>
> While I'm at it, here's the ‘rx’ form of the above:
>
> (setq debbugs-browse-url-regexp
> (rx
> line-start
> "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))
> line-end))

Installed with your changes!

--
Thanks,
Maxim
Closed
S
S
Simon Tournier wrote on 19 Sep 2023 10:08
(address . ludo@gnu.org)
86il86lh4p.fsf@gmail.com
Hi Maxim,

Sorry to be late to the party.

On Mon, 11 Sep 2023 at 23:44, Maxim Cournoyer <maxim.cournoyer@gmail.com> wrote:

Toggle quote (9 lines)
> - ;; For use with 'bug-reference-prog-mode'.
> + ;; For use with 'bug-reference-prog-mode'. Extra bug-reference
> + ;; configuration should be done in your Emacs user configuration file;
> + ;; refer to (info (guix) The Perfect Setup).
> (bug-reference-bug-regexp
> . "\\(<https?://\\bugs\\.gnu\\.org/\\([0-9]+\\)>\\)")
> - (bug-reference-url-format . "https://bugs.gnu.org/%s")
> + (bug-reference-url-format . "https://issues.guix.gnu.org/%s")

Just to point that in addition, this:


is also valid.

Toggle quote (8 lines)
> +(setq bug-reference-url-format "https://bugs.gnu.org/%s")
> +;; The following allows Emacs Debbugs user to open the issue directly within
> +;; Emacs.
> +(setq debbugs-browse-url-regexp
> + "^https?://\\(debbugs\\|\\(issues\\.guix\\|bugs\\)\\)\\.gnu\\.org/\
> +\\(cgi/bugreport\\.cgi\\?bug=\\)?\\(?3:[[:digit:]]+\\)$")
> +@end lisp

Idem here.

Cheers,
simon
M
M
Maxim Cournoyer wrote on 20 Sep 2023 17:28
(name . Simon Tournier)(address . zimon.toutoune@gmail.com)
87msxg6ezr.fsf@gmail.com
Hello Simon,

Simon Tournier <zimon.toutoune@gmail.com> writes:

Toggle quote (31 lines)
> Hi Maxim,
>
> Sorry to be late to the party.
>
> On Mon, 11 Sep 2023 at 23:44, Maxim Cournoyer <maxim.cournoyer@gmail.com> wrote:
>
>> - ;; For use with 'bug-reference-prog-mode'.
>> + ;; For use with 'bug-reference-prog-mode'. Extra bug-reference
>> + ;; configuration should be done in your Emacs user configuration file;
>> + ;; refer to (info (guix) The Perfect Setup).
>> (bug-reference-bug-regexp
>> . "\\(<https?://\\bugs\\.gnu\\.org/\\([0-9]+\\)>\\)")
>> - (bug-reference-url-format . "https://bugs.gnu.org/%s")
>> + (bug-reference-url-format . "https://issues.guix.gnu.org/%s")
>
> Just to point that in addition, this:
>
> https://issues.guix.gnu.org/issue/12345
>
> is also valid.
>
>> +(setq bug-reference-url-format "https://bugs.gnu.org/%s")
>> +;; The following allows Emacs Debbugs user to open the issue directly within
>> +;; Emacs.
>> +(setq debbugs-browse-url-regexp
>> + "^https?://\\(debbugs\\|\\(issues\\.guix\\|bugs\\)\\)\\.gnu\\.org/\
>> +\\(cgi/bugreport\\.cgi\\?bug=\\)?\\(?3:[[:digit:]]+\\)$")
>> +@end lisp
>
> Idem here.

Thanks for pointing these other possibilities. Unless they are
prominently documented though, I'd maybe opt to leave them out, as their
format simply uses more characters for no added value.

--
Thanks,
Maxim
S
S
Simon Tournier wrote on 20 Sep 2023 17:39
(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
CAJ3okZ3YdeafYtkBUztmVuEVevbQ-Kx6PWYG97U3GLxgHOQyqg@mail.gmail.com
Hi Maxim,

On Wed, 20 Sept 2023 at 17:28, Maxim Cournoyer
<maxim.cournoyer@gmail.com> wrote:

Toggle quote (4 lines)
> Thanks for pointing these other possibilities. Unless they are
> prominently documented though, I'd maybe opt to leave them out, as their
> format simply uses more characters for no added value.

M
M
Maxim Cournoyer wrote on 25 Sep 2023 18:13
(name . Simon Tournier)(address . zimon.toutoune@gmail.com)
87msxa2ptx.fsf@gmail.com
Hi,

Simon Tournier <zimon.toutoune@gmail.com> writes:

Toggle quote (17 lines)
> Hi Maxim,
>
> On Wed, 20 Sept 2023 at 17:28, Maxim Cournoyer
> <maxim.cournoyer@gmail.com> wrote:
>
>> Thanks for pointing these other possibilities. Unless they are
>> prominently documented though, I'd maybe opt to leave them out, as their
>> format simply uses more characters for no added value.
>
> What I have noticed is the way Mumi resolves from Message-ID to Debbugs-ID:
>
> https://issues.guix.gnu.org/msgid/63a33d011b9154bbb4de7ad1d183043220fec49a.1691432343.git.h.goebel@crazy-compilers.com
> ->
> https://issues.guix.gnu.org/issue/65131#msgid-4f7b841a5c1ab6ea0ee22d3bbd2bedab2ed435fa
>
> And this case could be handled, no?

I'm not sure how it'd work; bug-reference understand a simple full bug
URLs, not ones pointing to a particular message.

--
Thanks,
Maxim
S
S
Simon Tournier wrote on 25 Sep 2023 18:24
(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
CAJ3okZ0Uhm4M=3JnNK_e22LOEp+6iMRk_ar=OxaTMPvA98LfEQ@mail.gmail.com
Hi,

On Mon, 25 Sept 2023 at 18:13, Maxim Cournoyer
<maxim.cournoyer@gmail.com> wrote:

Toggle quote (15 lines)
> >> Thanks for pointing these other possibilities. Unless they are
> >> prominently documented though, I'd maybe opt to leave them out, as their
> >> format simply uses more characters for no added value.
> >
> > What I have noticed is the way Mumi resolves from Message-ID to Debbugs-ID:
> >
> > https://issues.guix.gnu.org/msgid/63a33d011b9154bbb4de7ad1d183043220fec49a.1691432343.git.h.goebel@crazy-compilers.com
> > ->
> > https://issues.guix.gnu.org/issue/65131#msgid-4f7b841a5c1ab6ea0ee22d3bbd2bedab2ed435fa
> >
> > And this case could be handled, no?
>
> I'm not sure how it'd work; bug-reference understand a simple full bug
> URLs, not ones pointing to a particular message.

I was answering about "Unless they are prominently documented though"
by mentioning the /issue/ part is there when Mumi resolves from
Message-ID to Debbugs-ID. Well, "prominently" documented when
speaking about Mumi is difficult to evaluate. ;-) Instead, I notice
Mumi uses it.

And I was asking about the regular expression for
where bug-reference can extract 65131.

Somehow, I think that the regular expression of bug-reference should

Cheers,
simon
M
M
Maxim Cournoyer wrote on 25 Sep 2023 19:27
(name . Simon Tournier)(address . zimon.toutoune@gmail.com)
87cyy62mfs.fsf@gmail.com
Hi Simon,

Simon Tournier <zimon.toutoune@gmail.com> writes:

Toggle quote (35 lines)
> Hi,
>
> On Mon, 25 Sept 2023 at 18:13, Maxim Cournoyer
> <maxim.cournoyer@gmail.com> wrote:
>
>> >> Thanks for pointing these other possibilities. Unless they are
>> >> prominently documented though, I'd maybe opt to leave them out, as their
>> >> format simply uses more characters for no added value.
>> >
>> > What I have noticed is the way Mumi resolves from Message-ID to Debbugs-ID:
>> >
>> > https://issues.guix.gnu.org/msgid/63a33d011b9154bbb4de7ad1d183043220fec49a.1691432343.git.h.goebel@crazy-compilers.com
>> > ->
>> > https://issues.guix.gnu.org/issue/65131#msgid-4f7b841a5c1ab6ea0ee22d3bbd2bedab2ed435fa
>> >
>> > And this case could be handled, no?
>>
>> I'm not sure how it'd work; bug-reference understand a simple full bug
>> URLs, not ones pointing to a particular message.
>
> I was answering about "Unless they are prominently documented though"
> by mentioning the /issue/ part is there when Mumi resolves from
> Message-ID to Debbugs-ID. Well, "prominently" documented when
> speaking about Mumi is difficult to evaluate. ;-) Instead, I notice
> Mumi uses it.
>
> And I was asking about the regular expression for
> https://issues.guix.gnu.org/issue/65131#msgid-4f7b841a5c1ab6ea0ee22d3bbd2bedab2ed435fa
> where bug-reference can extract 65131.
>
> Somehow, I think that the regular expression of bug-reference should
> handle https://issues.guix.gnu.org/issue/12345 in addition to
> https://issues.guix.gnu.org/12345. And bonus for
> https://issues.guix.gnu.org/issue/65131#msgid-[:alnum:] :-)

OK, thanks for explaining. I don't object to the proposed change, but
I'll pass on the implementation :-).

--
Thanks,
Maxim
?