GNU bug report logs - #55213
29.0.50; define-minor-mode/easy-mmode--mode-docstring doesn't handle empty DOC ("")

Previous Next

Package: emacs;

Reported by: Taku Tekato <takutekato2 <at> gmail.com>

Date: Sun, 1 May 2022 20:55:01 UTC

Severity: normal

Found in version 29.0.50

Fixed in version 29.1

Done: Lars Ingebrigtsen <larsi <at> gnus.org>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 55213 in the body.
You can then email your comments to 55213 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-gnu-emacs <at> gnu.org:
bug#55213; Package emacs. (Sun, 01 May 2022 20:55:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Taku Tekato <takutekato2 <at> gmail.com>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Sun, 01 May 2022 20:55:02 GMT) Full text and rfc822 format available.

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

From: Taku Tekato <takutekato2 <at> gmail.com>
To: bug-gnu-emacs <at> gnu.org
Subject: 29.0.50; define-minor-mode/easy-mmode--mode-docstring doesn't handle
 empty DOC ("")
Date: Mon, 2 May 2022 01:28:00 +0700
easy-mmode--mode-docstring now calls `string-lines` on DOC and processes
by poping lines from the result.

Therefore the error `(wrong-type-argument char-or-string-p nil)` breaks
various packages who define minor modes with empty docstrings.



In GNU Emacs 29.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.33, cairo version 1.17.6)
of 2022-05-01 built on c18
Repository revision: 7c8bec9e1ffe087918f6f218fc4560fc968aebb2
Repository branch: master
System Description: Arch Linux

Configured using:
'configure --prefix=/usr --sysconfdir=/etc --libexecdir=/usr/lib
--localstatedir=/var --mandir=/usr/share/man --with-gameuser=:games
--with-sound=alsa --with-modules --without-libotf --without-m17n-flt
--without-gconf --without-gsettings --with-native-compilation
--with-xinput2 --with-pgtk --without-xaw3d --with-sound=alsa
--with-xwidgets --without-compress-install
'--program-transform-name=s/\([ec]tags\)/\1.emacs/'
'CFLAGS=-march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions
-Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security
-fstack-clash-protection -fcf-protection'
LDFLAGS=-Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now'

Configured features:
ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM HARFBUZZ JPEG JSON LCMS2
LIBSYSTEMD LIBXML2 MODULES NATIVE_COMP NOTIFY INOTIFY PDUMPER PGTK PNG
RSVG SECCOMP SOUND SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS WEBP XIM
XWIDGETS GTK3 ZLIB

Important settings:
value of $LC_CTYPE: en_GB.UTF-8
value of $LANG: en_US.UTF-8
value of $XMODIFIERS: @im=fcitx
locale-coding-system: utf-8-unix

Major mode: Outline

Minor modes in effect:
global-evil-surround-mode: t
evil-surround-mode: t
eros-mode: t
dap-tooltip-mode: t
dap-ui-controls-mode: t
dap-ui-mode: t
flyspell-lazy-mode: t
whitespace-mode: t
vi-tilde-fringe-mode: t
display-line-numbers-mode: t
highlight-indent-guides-mode: t
adaptive-wrap-prefix-mode: t
+word-wrap-mode: t
global-anzu-mode: t
anzu-mode: t
pixel-scroll-precision-mode: t
diff-hl-margin-mode: t
dired-async-mode: t
git-gutter-mode: t
treemacs-project-follow-mode: t
global-tree-sitter-mode: t
global-blamer-mode: t
my-auto-sidebar-mode: t
treemacs-filewatch-mode: t
treemacs-follow-mode: t
treemacs-git-mode: t
treemacs-fringe-indicator-mode: t
gdb-many-windows: t
dap-mode: t
projectile-mode: t
minibuffer-depth-indicate-mode: t
solaire-global-mode: t
corfu-doc-mode: t
corfu-indexed-mode: t
global-corfu-mode: t
corfu-mode: t
bug-reference-mode: t
yas-global-mode: t
yas-minor-mode: t
dtrt-indent-mode: t
which-key-mode: t
savehist-mode: t
better-jumper-mode: t
better-jumper-local-mode: t
vertico-mouse-mode: t
vertico-mode: t
all-the-icons-completion-mode: t
marginalia-mode: t
evil-goggles-mode: t
evil-snipe-override-mode: t
evil-snipe-mode: t
evil-snipe-override-local-mode: t
evil-snipe-local-mode: t
recentf-mode: t
save-place-mode: t
global-so-long-mode: t
global-git-commit-mode: t
text-scale-mode: t
gcmh-mode: t
global-hl-line-mode: t
hl-line-mode: t
winner-mode: t
smartparens-global-mode: t
smartparens-mode: t
ws-butler-global-mode: t
ws-butler-mode: t
global-undo-fu-session-mode: t
undo-fu-session-mode: t
undo-fu-mode: t
global-flycheck-mode: t
flycheck-mode: t
doom-modeline-mode: t
nyan-mode: t
minions-mode: t
global-subword-mode: t
subword-mode: t
cua-mode: t
key-chord-mode: t
shell-dirtrack-mode: t
evil-mode: t
evil-local-mode: t
windmove-mode: t
+popup-mode: t
override-global-mode: t
my-puni-global-mode: t
general-override-mode: t
puni-mode: t
my-outline-comment-global-mode: t
my-global-auto-format-mode: t
my-auto-format-mode: t
my-minibuffer-input-history-mode: t
global-eldoc-mode: t
show-paren-mode: t
electric-indent-mode: t
mouse-wheel-mode: t
file-name-shadow-mode: t
context-menu-mode: t
global-font-lock-mode: t
font-lock-mode: t
window-divider-mode: t
undelete-frame-mode: t
size-indication-mode: t
column-number-mode: t
line-number-mode: t
visual-line-mode: t
transient-mark-mode: t
auto-composition-mode: t
auto-encryption-mode: t
auto-compression-mode: t

Features:
(shadow sort mail-extr emacsbug mm-archive url-cache define-word
nxml-mode-expansions rng-nxml rng-valid rng-loc rng-uri rng-parse
nxml-parse rng-match rng-dt rng-util rng-pttrn nxml-ns nxml-mode
nxml-outln nxml-rap html-mode-expansions smartparens-html sgml-mode
facemenu nxml-util nxml-enc xmltok elisp-def ert elisp-demos
evil-collection-indent magit-extras overseer pkg-info epl
my-emacs-utilities my-shell-functions evil-collection-help flycheck-cask
evil-embrace evil-surround eros lispyville lispy hydra lispy-inline
etags fileloop lispy-tags mode-local highlight-quoted rainbow-delimiters
my-sticky-header my-outline-comment-mode hideshow lsp lsp-dart
lsp-dart-commands lsp-dart-flutter-widget-guide
lsp-dart-flutter-fringe-colors lsp-dart-flutter-colors lsp-dart-outline
lsp-dart-code-lens lsp-dart-test-tree lsp-dart-test-output
lsp-dart-test-support lsp-dart-dap lsp-dart-devtools
lsp-dart-flutter-daemon lsp-dart-closing-labels lsp-dart-utils
lsp-dart-protocol lsp-haskell lsp-pyright dap-gdb-lldb dap-utils
dap-lldb ccls ccls-member-hierarchy ccls-inheritance-hierarchy
ccls-call-hierarchy ccls-tree ccls-code-lens ccls-semantic-highlight
ccls-common cc-mode-expansions smartparens-c cc-mode cc-fonts cc-guess
cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs dap-mouse
dap-ui lsp-treemacs lsp-treemacs-themes treemacs-magit
treemacs-all-the-icons treemacs-projectile treemacs-evil treemacs
treemacs-header-line treemacs-compatibility treemacs-mode
treemacs-bookmarks treemacs-interface treemacs-extensions
treemacs-mouse-interface treemacs-tags treemacs-persistence
treemacs-filewatch-mode treemacs-faces treemacs-macros gdb-mi bindat gud
bui bui-list bui-info bui-entry bui-core bui-history bui-button
bui-utils lsp-lens dap-mode dap-launch posframe dap-overlays lsp-mode
org-crypt evil-collection-view view org-eldoc embrace expand-region
subword-mode-expansions text-mode-expansions the-org-mode-expansions
er-basic-expansions expand-region-core expand-region-custom toc-org
evil-org writegood-mode org-indent image-file image-converter oc-basic
ol-bibtex bibtex my-goto-outline evil-collection-helpful helpful trace
evil-collection-edebug edebug evil-collection-debug debug info-look
evil-collection-info info evil-collection-elisp-refs elisp-refs dabbrev
hippie-exp cape-keyword cape highlight-numbers parent-mode flyspell-lazy
ispell flyspell conf-mode evil-collection-macrostep macrostep
consult-xref embark-consult evil-collection-embark embark ffap goto-addr
evil-collection-tabulated-list epkg-melpa epkg-gelpa epkg-utils
epkg-list epkg-desc epkg compat-26 whitespace vi-tilde-fringe
display-line-numbers highlight-indent-guides adaptive-wrap tramp-archive
tramp-gvfs tramp-cache zeroconf dbus magit-gitflow magit-delta
xterm-color tabify evil-collection-evil-mc evil-mc
evil-mc-command-execute evil-mc-command-record evil-mc-cursor-make
evil-mc-region evil-mc-cursor-state evil-mc-undo evil-mc-vars
evil-mc-known-commands evil-mc-common jka-compr apheleia
my-version-control-functions my-format evil-anzu anzu char-fold swiper
evil-collection-ivy ivy ivy-faces ivy-overlay colir
evil-collection-sh-script sh-script smie executable my-compiled-commands
pixel-scroll hide-mode-line my-dired-functions diredfl diff-hl-margin
diff-hl-dired evil-collection-diff-hl diff-hl evil-collection-log-view
log-view evil-collection-vc-dir vc-dir all-the-icons-dired dired-async
my-project-file-functions my-dired-count mwim my-commands puni
my-config-evil vertico-directory ace-window avy my-other-window vc-hg
vc-svn vc auto-minor-mode consult-flycheck evil-collection-consult
consult-vertico consult mule-util git-gutter-fringe fringe-helper
git-gutter evil-collection-vc-git vc-git vc-dispatcher
treemacs-project-follow-mode treemacs-follow-mode treemacs-rendering
treemacs-async treemacs-visuals treemacs-fringe-indicator
treemacs-workspaces treemacs-dom treemacs-icons treemacs-themes
treemacs-scope treemacs-core-utils treemacs-logging
treemacs-customization pfuture tree-sitter-langs tree-sitter-langs-build
tree-sitter-hl help-fns radix-tree cl-print backtrace tree-sitter
tree-sitter-load tree-sitter-cli tsc tsc-dyn tsc-dyn-get dired-aux
tsc-obsolete blamer lsp-protocol evil-collection-xref xref project
spinner network-stream lv inline ewoc my-config-minibuffer
my-completion-style cursor-sensor vertico-repeat projectile ibuf-ext
evil-collection-ibuffer ibuffer ibuffer-loaddefs mb-depth
doom-themes-ext-treemacs doom-themes-ext-org solaire-mode
doom-dracula-theme doom-themes doom-themes-base corfu-doc kind-icon
svg-lib corfu-indexed corfu desktop frameset org-capture org-agenda
evil-collection-magit-todos magit-todos pcre2el rxt re-builder hl-todo
async evil-collection-grep grep evil-collection-org smartparens-org
org-yt org-element org-persist xdg org-id org-refile avl-tree org ob
ob-tangle ob-ref ob-lob ob-table ob-exp org-macro org-footnote org-src
ob-comint org-pcomplete org-list org-faces org-entities org-version
ob-emacs-lisp ob-core ob-eval org-table ol org-keys oc org-compat
org-macs org-loaddefs evil-collection-calendar cal-menu calendar
cal-loaddefs code-review code-review-actions code-review-comment
code-review-section code-review-bitbucket code-review-faces shr
pixel-fill kinsoku url-file url-dired svg xml dom emojify
evil-collection-apropos apropos evil-collection-tar-mode tar-mode
evil-collection-arc-mode arc-mode archive-mode ht code-review-gitlab
code-review-utils evil-collection-forge forge-list forge-commands
forge-semi forge-bitbucket buck forge-gogs gogs forge-gitea gtea
forge-gitlab glab forge-github forge-notify forge-revnote forge-pullreq
forge-issue forge-topic yaml bug-reference forge-post
smartparens-markdown evil-collection-markdown-mode markdown-mode
edit-indirect noutline outline forge-repo forge forge-core forge-db
code-review-parse-hunk code-review-github code-review-db uuidgen
calc-misc calc-ext a code-review-interfaces deferred ghub-graphql treepy
gsexp ghub gnutls closql emacsql-sqlite emacsql emacsql-compiler
url-http url-auth url-gw nsm evil-collection-magit magit-bookmark
magit-autoloads magit-submodule magit-obsolete magit-popup magit-blame
magit-stash magit-reflog magit-bisect magit-push magit-pull magit-fetch
magit-clone magit-remote magit-commit magit-sequence magit-notes
magit-worktree magit-tag magit-merge magit-branch magit-reset
magit-files magit-refs magit-status magit magit-repos magit-apply
magit-wip magit-log which-func magit-diff smerge-mode diff
evil-collection-diff-mode diff-mode magit-core magit-autorevert
autorevert filenotify magit-margin magit-transient magit-process
yasnippet-snippets doom-snippets doom-snippets-lib yasnippet
evil-collection-elisp-mode elisp-mode dtrt-indent
evil-collection-which-key which-key savehist better-jumper vertico-mouse
evil-collection-vertico vertico orderless all-the-icons-completion
marginalia evil-goggles pulse evil-easymotion evil-snipe recentf
tree-widget saveplace so-long git-commit with-editor
evil-collection-vterm vterm evil-collection-bookmark bookmark tramp
tramp-loaddefs trampver tramp-integration cus-start files-x tramp-compat
parse-time iso8601 ls-lisp face-remap evil-collection-compile compile
color vterm-module term/xterm xterm evil-collection-term term disp-table
ehelp esh-help evil-collection-man man em-unix eshell-z em-dirs esh-var
evil-collection-eshell em-prompt eshell-did-you-mean esh-mode eshell
esh-cmd generator esh-ext esh-opt esh-proc esh-io esh-arg esh-module
esh-groups esh-util server evil-collection-log-edit log-edit message
sendmail yank-media rmc puny evil-collection-dired dired dired-loaddefs
rfc822 mml mml-sec evil-collection-epa epa epg rfc6068 epg-config
gnus-util text-property-search time-date mm-decode mm-bodies mm-encode
mail-parse rfc2231 rfc2047 rfc2045 mm-util ietf-drums mail-prsvr
mailabbrev mail-utils gmm-utils mailheader pcvs-util add-log magit-mode
transient magit-git magit-base magit-section format-spec crm gcmh
hl-line winner smartparens-config smartparens-text smartparens ws-butler
undo-fu-session undo-fu flycheck-package package-lint
evil-collection-imenu imenu evil-collection-finder finder finder-inf
lisp-mnt evil-collection-package-menu core-packages package browse-url
url url-proxy url-privacy url-expand url-methods url-history url-cookie
url-domsuf url-util mailcap url-handlers url-parse auth-source eieio
eieio-core eieio-loaddefs password-cache url-vars
evil-collection-flycheck evil-collection-custom evil-collection-comint
evil-collection annalist flycheck json map find-func doom-modeline
doom-modeline-segments doom-modeline-env doom-modeline-core shrink-path
all-the-icons all-the-icons-faces data-material data-weathericons
data-octicons data-fileicons data-faicons data-alltheicons my-custom
my-config nyan-mode minions compat cap-words superword subword
two-column cus-edit cus-load wid-edit delsel cua-base key-chord
smartparens-lua smartparens-elixir let-alist evil evil-integration
evil-maps evil-commands reveal evil-jumps evil-command-window
evil-search shell pcomplete comint ansi-color evil-types evil-macros
evil-repeat evil-states evil-core advice evil-common windmove calc
calc-loaddefs calc-macs thingatpt rect evil-digraphs evil-vars ring
edmacro kmacro derived use-package-bind-key bind-key my-config-functions
my-init my-core-functions 00-my-core-macros f s dash my-lib-man
my-early-init core-editor core-projects core-ui easy-mmode core-keybinds
pp general use-package-core core-modules realgud-recursive-autoloads
core comp comp-cstr warnings rx cl-seq cl-extra help-mode seq subr-x
byte-opt bytecomp byte-compile cconv core-lib pcase cl-macs gv
cl-loaddefs cl-lib chemacs iso-transl tooltip eldoc paren electric
uniquify ediff-hook vc-hooks lisp-float-type mwheel term/pgtk-win
pgtk-win term/common-win tool-bar dnd fontset image regexp-opt fringe
tabulated-list replace newcomment text-mode lisp-mode prog-mode register
page tab-bar menu-bar rfn-eshadow isearch easymenu timer select
scroll-bar mouse jit-lock font-lock syntax font-core term/tty-colors
frame minibuffer nadvice simple cl-generic cham georgian utf-8-lang
misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms
cp51932 hebrew greek romanian slovak czech european ethiopic indian
cyrillic chinese composite emoji-zwj charscript charprop case-table
epa-hook jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button
loaddefs faces cus-face macroexp files window text-properties overlay
sha1 md5 base64 format env code-pages mule custom widget keymap
hashtable-print-readable backquote threads xwidget-internal dbusbind
inotify dynamic-setting font-render-setting cairo gtk pgtk lcms2
multi-tty make-network-process native-compile emacs)

Memory information:
((conses 16 2786955 456492)
(symbols 48 101734 1)
(strings 32 553345 55247)
(string-bytes 1 14325932)
(vectors 16 212292)
(vector-slots 8 5229181 233117)
(floats 8 18440 3051)
(intervals 56 136690 51300)
(buffers 992 51))





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#55213; Package emacs. (Sun, 01 May 2022 21:03:01 GMT) Full text and rfc822 format available.

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

From: Lars Ingebrigtsen <larsi <at> gnus.org>
To: Taku Tekato <takutekato2 <at> gmail.com>
Cc: 55213 <at> debbugs.gnu.org
Subject: Re: bug#55213: 29.0.50;
 define-minor-mode/easy-mmode--mode-docstring doesn't handle empty DOC ("")
Date: Sun, 01 May 2022 23:02:14 +0200
Taku Tekato <takutekato2 <at> gmail.com> writes:

> easy-mmode--mode-docstring now calls `string-lines` on DOC and processes
> by poping lines from the result.
>
> Therefore the error `(wrong-type-argument char-or-string-p nil)` breaks
> various packages who define minor modes with empty docstrings.

easy-mmode--mode-docstring does:

    ;; Compose a new doc string.
    (with-temp-buffer
      (let ((lines (if doc
                       (string-lines doc)
                     (list (format "Toggle %s on or off." mode-pretty-name)))))

Perhaps you have some old .elc files lying around?  Try saying "make
bootstrap".

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#55213; Package emacs. (Sun, 01 May 2022 21:07:02 GMT) Full text and rfc822 format available.

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

From: Lars Ingebrigtsen <larsi <at> gnus.org>
To: Taku Tekato <takutekato2 <at> gmail.com>
Cc: 55213 <at> debbugs.gnu.org
Subject: Re: bug#55213: 29.0.50;
 define-minor-mode/easy-mmode--mode-docstring doesn't handle empty DOC ("")
Date: Sun, 01 May 2022 23:05:52 +0200
Lars Ingebrigtsen <larsi <at> gnus.org> writes:

>> Therefore the error `(wrong-type-argument char-or-string-p nil)` breaks
>> various packages who define minor modes with empty docstrings.

Oh, sorry -- empty as in "", not as in nil?  Yes, I can reproduce that
error -- I've fixed it now in Emacs 29.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no




bug marked as fixed in version 29.1, send any further explanations to 55213 <at> debbugs.gnu.org and Taku Tekato <takutekato2 <at> gmail.com> Request was from Lars Ingebrigtsen <larsi <at> gnus.org> to control <at> debbugs.gnu.org. (Sun, 01 May 2022 21:07:02 GMT) Full text and rfc822 format available.

bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Mon, 30 May 2022 11:24:05 GMT) Full text and rfc822 format available.

This bug report was last modified 1 year and 331 days ago.

Previous Next


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