diff mbox series

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

Message ID 0f74c4468dae139ae2406b8200d0ba6bdc374455.1694490271.git.maxim.cournoyer@gmail.com
State New
Headers show
Series [bug#65883] .dir-locals.el: Update bug-reference configuration and document it. | expand

Commit Message

Maxim Cournoyer Sept. 12, 2023, 3:44 a.m. UTC
(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(-)


base-commit: 2a7f031ca9d6d16fe0264023d8beca02b3ac0050

Comments

Brian Cully Sept. 12, 2023, 2:20 p.m. UTC | #1
Maxim Cournoyer <maxim.cournoyer@gmail.com> writes:

> +;;; 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:
--8<---------------cut here---------------start------------->8---
(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")))
                         ">")))))
--8<---------------cut here---------------end--------------->8---

-bjc
Brian Cully Sept. 12, 2023, 2:34 p.m. UTC | #2
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:
--8<---------------cut here---------------start------------->8---
(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))
--8<---------------cut here---------------end--------------->8---

-bjc
Ludovic Courtès Sept. 13, 2023, 8:31 p.m. UTC | #3
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.  :-)

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

Should we add issues.guix here?


[...]

> +(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’.
Maxim Cournoyer Sept. 14, 2023, 3:20 a.m. UTC | #4
Hi,

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

> 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.

>>       (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.

>
> [...]
>
>> +(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.

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

Thanks!
Maxim Cournoyer Sept. 17, 2023, 8:45 p.m. UTC | #5
Hi,

brian <bjc@spork.org> writes:

> 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!
Simon Tournier Sept. 19, 2023, 8:08 a.m. UTC | #6
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.

Cheers,
simon
Maxim Cournoyer Sept. 20, 2023, 3:28 p.m. UTC | #7
Hello Simon,

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

> 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.
Simon Tournier Sept. 20, 2023, 3:39 p.m. UTC | #8
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?

Cheers,
simon
Maxim Cournoyer Sept. 25, 2023, 4:13 p.m. UTC | #9
Hi,

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

> 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.
Simon Tournier Sept. 25, 2023, 4:24 p.m. UTC | #10
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:] :-)

Cheers,
simon
Maxim Cournoyer Sept. 25, 2023, 5:27 p.m. UTC | #11
Hi Simon,

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

> 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 :-).
diff mbox series

Patch

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