GNU bug report logs - #79212
31.0.50; Malformed C-h m output

Previous Next

Package: emacs;

Reported by: Eshel Yaron <me <at> eshelyaron.com>

Date: Sun, 10 Aug 2025 18:33:02 UTC

Severity: normal

Found in version 31.0.50

Fixed in version 31.1

Done: Eshel Yaron <me <at> eshelyaron.com>

Bug is archived. No further changes may be made.

Full log


Message #8 received at 79212 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Eshel Yaron <me <at> eshelyaron.com>
Cc: 79212 <at> debbugs.gnu.org
Subject: Re: bug#79212: 31.0.50; Malformed C-h m output
Date: Mon, 11 Aug 2025 14:56:31 +0300
> Date: Sun, 10 Aug 2025 20:32:16 +0200
> From:  Eshel Yaron via "Bug reports for GNU Emacs,
>  the Swiss army knife of text editors" <bug-gnu-emacs <at> gnu.org>
> 
> 
> Hi,
> 
> With emacs -Q, evaluate the following form:
> 
>   (define-derived-mode foo-mode nil "Foo" "Major mode for bar.")
> 
> Now switch to a new buffer (C-x b foo RET) and put it in foo-mode with
> M-x foo-mode, and then hit C-h m to describe the current major mode.
> 
> The Help buffer starts with the following malformed line:
> 
>   The major mode is Foo modeMajor mode for bar.
> 
> Whereas I would expect something like:
> 
>   The major mode is Foo mode.
> 
>   Major mode for bar.
> 
> The following diff seems to do the trick:
> 
> diff --git a/lisp/help-fns.el b/lisp/help-fns.el
> index 9cd30107002..5f4734fb69d 100644
> --- a/lisp/help-fns.el
> +++ b/lisp/help-fns.el
> @@ -2252,13 +2252,14 @@ describe-mode
>                     (lambda (_)
>                       (describe-function major))))
>            (insert " mode")
> -          (when-let* ((file-name (find-lisp-object-file-name major nil)))
> -	    (insert (format " defined in %s:\n\n"
> -                            (buttonize
> -                             (help-fns-short-filename file-name)
> -                             (lambda (_)
> -                               (help-function-def--button-function
> -                                major file-name))))))
> +          (if-let* ((file-name (find-lisp-object-file-name major nil)))
> +	      (insert (format " defined in %s:\n\n"
> +                              (buttonize
> +                               (help-fns-short-filename file-name)
> +                               (lambda (_)
> +                                 (help-function-def--button-function
> +                                  major file-name)))))
> +            (insert ".\n\n"))
>            (insert (help-split-fundoc (documentation major) nil 'doc)
>                    (with-current-buffer buffer
>                      (help-fns--list-local-commands)))

Thanks, but do we really need to have two copies of \n\n?  And why
there's no colon if the mode is not defined in any file?




This bug report was last modified 1 day ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.