Package: emacs;
Reported by: Joe <jjbigorra <at> gmail.com>
Date: Wed, 20 Aug 2025 21:55:02 UTC
Severity: normal
Found in version 30.1
To reply to this bug, email your comments to 79282 AT debbugs.gnu.org.
Toggle the display of automated, internal messages from the tracker.
View this report as an mbox folder, status mbox, maintainer mbox
bug-gnu-emacs <at> gnu.org
:bug#79282
; Package emacs
.
(Wed, 20 Aug 2025 21:55:02 GMT) Full text and rfc822 format available.Joe <jjbigorra <at> gmail.com>
:bug-gnu-emacs <at> gnu.org
.
(Wed, 20 Aug 2025 21:55:02 GMT) Full text and rfc822 format available.Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
From: Joe <jjbigorra <at> gmail.com> To: bug-gnu-emacs <at> gnu.org Subject: 30.1; scheme-mode docstrings not highlighting with font-lock-doc-face Date: Wed, 20 Aug 2025 23:54:37 +0200
--- Dear Emacs Maintainers, I am writing to report an issue I've observed in scheme-mode, specifically concerning the highlighting of docstrings. In scheme-mode (which inherits from lisp-mode), docstrings are currently being displayed as regular strings, using `font-lock-string-face', instead of being highlighted with `font-lock-doc-face'. I expected docstrings in Scheme code, similar to those in Elisp or Common Lisp modes, should be highlighted distinctly using `font-lock-doc-face' for better readability and semantic distinction. I noticed in Elisp and Common Lisp this works perfectly, for all forms and variants (variables, defmethods, defun, etc.) The problem is, when defining functions or macros in scheme-mode with a docstring, the docstring string literal is treated identically to any other string literal in terms of font locking. I am a bit of a newbie when it comes to the lower levels of Emacs, and its modes, but I have looked into the source code of scheme-mode and it appears to contain the necessary functionality to correctly identify and highlight docstrings. For instance, I found lines such as : (put 'define* 'scheme-doc-string-elt 2) which seems to properly register docstring elements for font locking. This suggests that the mechanism for identifying docstrings is in place, but perhaps the application of font-lock-doc-face isn't occurring as intended, or there's an interaction issue with lisp-mode's inheritance. Example (for illustration and clarity purposes): (define (my-function arg) "This is a docstring for my-function." (+ arg 1)) In the example above, the string "This is a docstring for my-function." now appears with the font-lock-string-face , when it should instead be using font-lock-doc-face. I run Emacs on Guix btw. I would appreciate it if you could investigate this issue. Thank you for your time and dedication to maintaining the allmighty Emacs. Best regards, Josep Bigorra --- In GNU Emacs 30.1 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.43, cairo version 1.18.4) System Description: Guix System Configured using: 'configure CONFIG_SHELL=/gnu/store/nnx8iifrj6jfih4sivivq17cf65aa968-bash-minimal-5.2.37/bin/bash SHELL=/gnu/store/nnx8iifrj6jfih4sivivq17cf65aa968-bash-minimal-5.2.37/bin/bash --prefix=/gnu/store/mx2ca3l10v0vwj0izgrs2sqzpfqrshn9-emacs-pgtk-30.1 --enable-fast-install --with-pgtk --with-cairo --with-modules --with-native-compilation=aot 'CFLAGS=-g -O2 -Wno-error=incompatible-pointer-types' --disable-build-details' Configured features: ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ JPEG LCMS2 LIBOTF LIBSELINUX LIBSYSTEMD LIBXML2 MODULES NATIVE_COMP NOTIFY INOTIFY PDUMPER PGTK PNG RSVG SECCOMP SOUND SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS TREE_SITTER WEBP XIM GTK3 ZLIB Important settings: value of $EMACSLOADPATH: /run/current-system/profile/share/emacs/site-lisp:/gnu/store/mx2ca3l10v0vwj0izgrs2sqzpfqrshn9-emacs-pgtk-30.1/share/emacs/30.1/lisp value of $LANG: nl_NL.UTF-8 locale-coding-system: utf-8-unix Major mode: Scheme Minor modes in effect: display-fill-column-indicator-mode: t smartparens-mode: t corfu-popupinfo-mode: t corfu-history-mode: t global-corfu-mode: t corfu-mode: t super-save-mode: t global-git-commit-mode: t server-mode: t ultra-scroll-mode: t pixel-scroll-precision-mode: t nerd-icons-completion-mode: t marginalia-mode: t vertico-mode: t keycast-mode: t spacious-padding-mode: t pulsar-global-mode: t pulsar-mode: t emms-mode-line-mode: t emms-playing-time-display-mode: t emms-playing-time-mode: t elmacro-mode: t diff-hl-margin-local-mode: t diff-hl-margin-mode: t global-diff-hl-mode: t diff-hl-mode: t arei-mode: t fancy-compilation-mode: t sly-symbol-completion-mode: t jinx-mode: t erc-track-mode: t erc-spelling-mode: t erc-ring-mode: t erc-notifications-mode: t erc-netsplit-mode: t erc-menu-mode: t erc-match-mode: t erc-list-mode: t erc-irccontrols-mode: t erc-move-to-prompt-mode: t erc-readonly-mode: t erc-imenu-mode: t erc-button-mode: t erc-fill-mode: t erc-stamp-mode: t erc-autojoin-mode: t erc-services-mode: t erc-networks-mode: t global-hl-line-mode: t recentf-mode: t windmove-mode: t delete-selection-mode: t global-auto-revert-mode: t save-place-mode: t savehist-mode: t which-key-mode: t elpaca-use-package-mode: t override-global-mode: t tooltip-mode: t global-eldoc-mode: t eldoc-mode: t show-paren-mode: t electric-indent-mode: t mouse-wheel-mode: t global-prettify-symbols-mode: t prettify-symbols-mode: t file-name-shadow-mode: t context-menu-mode: t global-font-lock-mode: t font-lock-mode: t blink-cursor-mode: t minibuffer-regexp-mode: t line-number-mode: t transient-mark-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t Load-path shadows: /home/joe/.emacs.d/elpaca/builds/compat/compat hides /gnu/store/y118fz0hp27mkyzmgpg4p5jv98n5ibdh-emacs-compat-30.0.2.0/share/emacs/site-lisp/compat-30.0.2.0/compat /home/joe/.emacs.d/elpaca/builds/compat/compat-macs hides /gnu/store/y118fz0hp27mkyzmgpg4p5jv98n5ibdh-emacs-compat-30.0.2.0/share/emacs/site-lisp/compat-30.0.2.0/compat-macs /home/joe/.emacs.d/elpaca/builds/compat/compat-autoloads hides /gnu/store/y118fz0hp27mkyzmgpg4p5jv98n5ibdh-emacs-compat-30.0.2.0/share/emacs/site-lisp/compat-30.0.2.0/compat-autoloads /home/joe/.emacs.d/elpaca/builds/compat/compat-30 hides /gnu/store/y118fz0hp27mkyzmgpg4p5jv98n5ibdh-emacs-compat-30.0.2.0/share/emacs/site-lisp/compat-30.0.2.0/compat-30 /home/joe/.emacs.d/elpaca/builds/compat/compat-29 hides /gnu/store/y118fz0hp27mkyzmgpg4p5jv98n5ibdh-emacs-compat-30.0.2.0/share/emacs/site-lisp/compat-30.0.2.0/compat-29 /home/joe/.emacs.d/elpaca/builds/compat/compat-28 hides /gnu/store/y118fz0hp27mkyzmgpg4p5jv98n5ibdh-emacs-compat-30.0.2.0/share/emacs/site-lisp/compat-30.0.2.0/compat-28 /home/joe/.emacs.d/elpaca/builds/compat/compat-27 hides /gnu/store/y118fz0hp27mkyzmgpg4p5jv98n5ibdh-emacs-compat-30.0.2.0/share/emacs/site-lisp/compat-30.0.2.0/compat-27 /home/joe/.emacs.d/elpaca/builds/compat/compat-26 hides /gnu/store/y118fz0hp27mkyzmgpg4p5jv98n5ibdh-emacs-compat-30.0.2.0/share/emacs/site-lisp/compat-30.0.2.0/compat-26 /home/joe/.emacs.d/elpaca/builds/compat/compat-25 hides /gnu/store/y118fz0hp27mkyzmgpg4p5jv98n5ibdh-emacs-compat-30.0.2.0/share/emacs/site-lisp/compat-30.0.2.0/compat-25 /home/joe/.emacs.d/elpaca/builds/transient/transient hides /gnu/store/mx2ca3l10v0vwj0izgrs2sqzpfqrshn9-emacs-pgtk-30.1/share/emacs/30.1/lisp/transient /home/joe/.emacs.d/elpaca/builds/ef-themes/theme-loaddefs hides /gnu/store/mx2ca3l10v0vwj0izgrs2sqzpfqrshn9-emacs-pgtk-30.1/share/emacs/30.1/lisp/theme-loaddefs /home/joe/.emacs.d/elpaca/builds/compat/compat hides /gnu/store/mx2ca3l10v0vwj0izgrs2sqzpfqrshn9-emacs-pgtk-30.1/share/emacs/30.1/lisp/emacs-lisp/compat Features: (shadow mail-extr emacsbug tramp-cmds tempel bug-reference magit-extras cl-print embark-org embark-consult embark dabbrev cape eglot external-completion jsonrpc ert debug backtrace vertico-sort make-mode org-indent org-auto-tangle ox-odt rng-loc rng-uri rng-parse rng-match rng-dt rng-util rng-pttrn nxml-parse nxml-ns nxml-enc xmltok nxml-util ox-latex ox-icalendar org-agenda ox-html table ox-ascii ox-publish ox org-attach async oc-basic org-element org-persist org-id org-refile org-element-ast inline avl-tree ol-eww eww url-queue mm-url ol-rmail ol-mhe ol-irc ol-info ol-gnus nnselect gnus-art mm-uu mml2015 mm-view mml-smime smime gnutls dig gnus-sum shr pixel-fill kinsoku url-file gnus-group gnus-undo gnus-start gnus-dbus gnus-cloud nnimap nnmail mail-source utf7 nnoo gnus-spec gnus-int gnus-range gnus-win gnus nnheader range ol-docview doc-view jka-compr image-mode exif ol-bibtex bibtex ol-bbdb ol-w3m ol-doi org-link-doi geiser-mode geiser-xref geiser-compile mule-util consult magit-bookmark bookmark descr-text dired-subtree vc-hg vc-git vc-bzr vc-src vc-sccs vc-svn vc-cvs vc-rcs nerd-icons-dired disp-table ef-winter-theme ef-tritanopia-dark-theme ef-trio-dark-theme ef-symbiosis-theme ef-rosa-theme ef-owl-theme ef-night-theme ef-melissa-dark-theme ef-maris-dark-theme ef-elea-dark-theme ef-duo-dark-theme ef-dream-theme ef-deuteranopia-dark-theme ef-dark-theme ef-cherie-theme ef-bio-theme ef-autumn-theme ef-tritanopia-light-theme ef-trio-light-theme ef-summer-theme ef-spring-theme ef-reverie-theme ef-melissa-light-theme ef-maris-light-theme ef-light-theme ef-kassio-theme ef-frost-theme ef-elea-light-theme ef-eagle-theme ef-duo-light-theme ef-deuteranopia-light-theme ef-day-theme ef-cyprus-theme ef-arbutus-theme time welkomscherm aggressive-indent checkdoc flymake display-fill-column-indicator smartparens-config smartparens-javascript smartparens-rust smartparens-org smartparens-text smartparens-go smartparens-c smartparens advice loadhist corfu-popupinfo corfu-history kind-icon corfu move-text orderless mermaid-mode rainbow-mode super-save magit-submodule 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 git-commit log-edit message sendmail yank-media rfc822 mml mml-sec epa gnus-util mm-decode mailabbrev gmm-utils add-log magit-core magit-autorevert magit-margin magit-transient magit-process with-editor server magit-mode benchmark magit-git magit-base magit-section cursor-sensor crm llama ultra-scroll pixel-scroll cua-base nerd-icons-completion marginalia vertico modusregel keycast svg-lib svg spacious-padding nerd-icons nerd-icons-faces nerd-icons-data nerd-icons-data-mdicon nerd-icons-data-flicon nerd-icons-data-codicon nerd-icons-data-devicon nerd-icons-data-sucicon nerd-icons-data-wicon nerd-icons-data-faicon nerd-icons-data-powerline nerd-icons-data-octicon nerd-icons-data-pomicon nerd-icons-data-ipsicon tekengrootte olivetti face-remap pulsar dracula-theme gruvbox-theme gruvbox autothemer solarized-theme solarized solarized-faces ef-themes ripgrep grep ob-mermaid ob-http ob-http-mode org-present emms-idapi-browser emms-idapi emms-idapi-musicbrainz mm-bodies mm-encode emms-librefm-stream emms-librefm-scrobbler emms-playlist-limit emms-i18n emms-history emms-score emms-stream-info emms-metaplaylist-mode emms-bookmarks emms-cue emms-mode-line-icon emms-player-xine emms-player-mpd emms-lyrics emms-url emms-streams emms-show-all emms-tag-editor emms-tag-tracktag emms-mark emms-mode-line emms-info-native emms-info-native-spc emms-info-native-mp3 emms-info-native-ogg emms-info-native-opus emms-info-native-flac emms-info-native-vorbis bindat emms-info-exiftool emms-info-tinytag emms-info-metaflac emms-info-opusinfo emms-info-ogginfo emms-info-mp3info emms-player-vlc emms-player-mplayer emms-mpris emms-browser emms-filters sort emms-playlist-sort emms-last-played emms-volume emms-volume-mpv emms-player-mpv emms-playing-time emms-player-simple emms-volume-sndioctl emms-volume-mixerctl emms-volume-pulse emms-volume-amixer emms-playlist-mode emms-source-playlist emms-source-file locate emms-cache emms-info emms-later-do emms-setup emms emms-compat smudge smudge-connect smudge-dbus smudge-remote smudge-device-select smudge-playlist smudge-track smudge-controller smudge-api oauth2 plstore epg rfc6068 epg-config simple-httpd fretboard hi-lock pandoc-mode pandoc-mode-utils hydra lv guix speed-type dom url-http url-auth mail-parse rfc2231 rfc2047 rfc2045 mm-util ietf-drums mail-prsvr url-gw nsm puny gptel-gemini gptel gptel-openai git-riddance prodigy elmacro page-break-lines f go-mode find-file ffap dired-open-with dired-hacks-utils dired-aux swagg s org ob ob-tangle ob-ref ob-lob ob-table ob-exp org-macro org-src sh-script smie executable ob-comint org-pcomplete org-list org-footnote org-faces org-entities noutline outline org-version ob-emacs-lisp ob-core ob-eval org-cycle org-table ol org-fold org-fold-core org-keys oc org-loaddefs cal-menu calendar cal-loaddefs org-compat org-macs yaml dash json-mode json-snatcher js c-ts-common treesit cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs request mailheader mail-utils diff-hl-margin diff-hl-dired dired dired-loaddefs diff-hl log-view pcvs-util vc-dir ewoc diff-mode track-changes geiser-guile tramp trampver tramp-integration files-x tramp-message tramp-compat xdg shell parse-time iso8601 tramp-loaddefs info-look transient geiser-debug geiser-repl geiser-image geiser-capf geiser-doc geiser-menu geiser-autodoc geiser-edit geiser-completion geiser-eval geiser-connection tq geiser-syntax geiser-impl help-fns radix-tree geiser-log geiser-popup view geiser-custom geiser-base geiser arei scheme arei-meta-commands arei-logging arei-macroexpansion arei-module arei-evaluation arei-debugger arei-stack arei-ui eros pulse color arei-spinner arei-completion arei-xref arei-eldoc arei-syntax arei-client sesman vc vc-dispatcher arei-nrepl queue package-lint let-alist finder finder-inf find-func lisp-mnt package url-handlers inheritenv rust-utils rust-prog-mode rust-mode rust-playpen rust-cargo rust-common rust-rustfmt rust-compile fancy-compilation compile text-property-search cus-start sly info sly-completion derived sly-buttons sly-messages sly-common apropos etags fileloop generator xref arc-mode archive-mode hyperspec thingatpt cape-autoloads helpful-autoloads elisp-refs-autoloads corfu-autoloads move-text-autoloads orderless-autoloads mermaid-mode-autoloads rainbow-mode-autoloads super-save-autoloads tempel-autoloads magit-autoloads pcase with-editor-autoloads embark-consult-autoloads embark-autoloads ultra-scroll-autoloads marginalia-autoloads vertico-autoloads keycast-autoloads modusregel-autoloads kind-icon-autoloads svg-lib-autoloads spacious-padding-autoloads nerd-icons-completion-autoloads tekengrootte-autoloads olivetti-autoloads pulsar-autoloads dracula-theme-autoloads gruvbox-theme-autoloads autothemer-autoloads everforest-autoloads everforest-theme solarized-theme-autoloads ef-themes-autoloads deadgrep-autoloads spinner-autoloads ripgrep-autoloads ob-mermaid-autoloads ob-http-autoloads org-auto-tangle-autoloads async-autoloads org-present-autoloads org-roam-ui-autoloads org-roam-autoloads emacsql-autoloads magit-section-autoloads llama-autoloads websocket-autoloads emms-autoloads smudge-autoloads simple-httpd-autoloads oauth2-autoloads fretboard-autoloads pandoc-mode-autoloads hydra-autoloads lv-autoloads guix-autoloads bui-autoloads edit-indirect-autoloads speed-type-autoloads gptel-autoloads dagboek-autoloads git-riddance-autoloads prodigy-autoloads osm-autoloads elmacro-autoloads f-autoloads go-mode-autoloads nerd-icons-dired-autoloads nerd-icons-autoloads dired-open-with-autoloads dired-subtree-autoloads dired-hacks-utils-autoloads swagg-autoloads yaml-autoloads json-mode-autoloads json-snatcher-autoloads flymake-collection-autoloads request-autoloads markdown-mode-autoloads diff-hl-autoloads fancy-compilation-autoloads geiser-guile-autoloads geiser-autoloads arei-autoloads eros-autoloads sesman-autoloads queue-autoloads docker-autoloads aio-autoloads s-autoloads tablist-autoloads transient-autoloads aggressive-indent-autoloads direnv-autoloads smartparens-autoloads yaml-mode-autoloads toml-mode-autoloads nix-ts-mode-autoloads typescript-mode-autoloads lua-mode-autoloads scala-ts-mode-autoloads haskell-mode-autoloads python-black-autoloads dash-autoloads reformatter-autoloads package-lint-autoloads inheritenv-autoloads rust-mode-autoloads welkomscherm-autoloads page-break-lines-autoloads consult-autoloads sly-autoloads sss/ui sss/theme sss/shell sss/search sss/org sss/music sss/misc jinx sss/maps sss/mail sss/macros sss/libs sss/go sss/erc erc-track erc-spelling flyspell ispell erc-ring erc-desktop-notifications notifications dbus xml erc-netsplit erc-menu erc-match erc-list erc-goodies erc-imenu imenu erc-pcomplete time-date pcomplete comint ansi-osc ansi-color ring erc-button browse-url erc-fill erc-stamp erc-join erc-services erc format-spec erc-backend erc-networks erc-common erc-compat compat erc-loaddefs sss/emacs-self hl-line recentf tree-widget comp comp-cstr warnings comp-run comp-common rx windmove delsel autorevert filenotify saveplace savehist which-key project sss/eglot edmacro kmacro sss/dired sss/dev sss/dashboard elpaca-menu-elpa cus-edit pp cus-load wid-edit sss/consult cl-extra help-mode sss/common-lisp elpaca-menu-melpa elpaca-menu-org sss/sss elpaca-use-package use-package use-package-ensure use-package-delight use-package-diminish use-package-bind-key bind-key easy-mmode use-package-core elpaca-use-package-autoloads elpaca-log elpaca-ui url url-proxy url-privacy url-expand url-methods url-history url-cookie generate-lisp-file url-domsuf url-util url-parse auth-source eieio eieio-core cl-macs icons password-cache json subr-x map byte-opt gv bytecomp byte-compile url-vars mailcap cl-seq elpaca elpaca-process cl-loaddefs cl-lib elpaca-autoloads compat-autoloads jinx-autoloads guix-emacs rmc iso-transl tooltip cconv eldoc paren electric uniquify ediff-hook vc-hooks lisp-float-type elisp-mode mwheel term/pgtk-win pgtk-win term/common-win touch-screen pgtk-dnd 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 seq simple cl-generic indonesian philippine 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 theme-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 dbusbind inotify dynamic-setting system-font-setting font-render-setting cairo gtk pgtk lcms2 multi-tty move-toolbar make-network-process native-compile emacs) Memory information: ((conses 16 1963766 1295124) (symbols 48 104934 3) (strings 32 500698 60836) (string-bytes 1 12512495) (vectors 16 119041) (vector-slots 8 2150724 889033) (floats 8 9211 1588) (intervals 56 6836 5804) (buffers 992 42))
bug-gnu-emacs <at> gnu.org
:bug#79282
; Package emacs
.
(Thu, 21 Aug 2025 06:40:02 GMT) Full text and rfc822 format available.Message #8 received at 79282 <at> debbugs.gnu.org (full text, mbox):
From: Eli Zaretskii <eliz <at> gnu.org> To: Joe <jjbigorra <at> gmail.com>, Stefan Monnier <monnier <at> iro.umontreal.ca> Cc: 79282 <at> debbugs.gnu.org Subject: Re: bug#79282: 30.1; scheme-mode docstrings not highlighting with font-lock-doc-face Date: Thu, 21 Aug 2025 09:39:29 +0300
> From: Joe <jjbigorra <at> gmail.com> > Date: Wed, 20 Aug 2025 23:54:37 +0200 > > Dear Emacs Maintainers, > > I am writing to report an issue I've observed in scheme-mode, > specifically concerning the highlighting of docstrings. In scheme-mode > (which inherits from lisp-mode), docstrings are currently being > displayed as regular strings, using `font-lock-string-face', instead > of being highlighted with `font-lock-doc-face'. > > I expected docstrings in Scheme code, similar to those in Elisp or > Common Lisp modes, should be highlighted distinctly using > `font-lock-doc-face' for better readability and semantic distinction. > I noticed in Elisp and Common Lisp this works perfectly, for all forms > and variants (variables, defmethods, defun, etc.) > > The problem is, when defining functions or macros in scheme-mode with > a docstring, the docstring string literal is treated identically to > any other string literal in terms of font locking. > > I am a bit of a newbie when it comes to the lower levels of Emacs, and > its modes, but I have looked into the source code of scheme-mode and > it appears to contain the necessary functionality to correctly > identify and highlight docstrings. For instance, I found lines such as > : > > (put 'define* 'scheme-doc-string-elt 2) > > which seems to properly register docstring elements for font locking. > This suggests that the mechanism for identifying docstrings is in > place, but perhaps the application of font-lock-doc-face isn't > occurring as intended, or there's an interaction issue with > lisp-mode's inheritance. > > Example (for illustration and clarity purposes): > > (define (my-function arg) > "This is a docstring for my-function." > (+ arg 1)) > > In the example above, the string "This is a docstring for > my-function." now appears with the font-lock-string-face , when it > should instead be using font-lock-doc-face. > > I run Emacs on Guix btw. > > I would appreciate it if you could investigate this issue. Thank you > for your time and dedication to maintaining the allmighty Emacs. Stefan, any suggestions?
bug-gnu-emacs <at> gnu.org
:bug#79282
; Package emacs
.
(Sat, 06 Sep 2025 07:58:02 GMT) Full text and rfc822 format available.Message #11 received at 79282 <at> debbugs.gnu.org (full text, mbox):
From: Eli Zaretskii <eliz <at> gnu.org> To: Stefan Monnier <monnier <at> iro.umontreal.ca> Cc: 79282 <at> debbugs.gnu.org, jjbigorra <at> gmail.com Subject: Re: bug#79282: 30.1; scheme-mode docstrings not highlighting with font-lock-doc-face Date: Sat, 06 Sep 2025 10:57:26 +0300
Ping! Stefan, could you please chime in? > Cc: 79282 <at> debbugs.gnu.org > Date: Thu, 21 Aug 2025 09:39:29 +0300 > From: Eli Zaretskii <eliz <at> gnu.org> > > > From: Joe <jjbigorra <at> gmail.com> > > Date: Wed, 20 Aug 2025 23:54:37 +0200 > > > > Dear Emacs Maintainers, > > > > I am writing to report an issue I've observed in scheme-mode, > > specifically concerning the highlighting of docstrings. In scheme-mode > > (which inherits from lisp-mode), docstrings are currently being > > displayed as regular strings, using `font-lock-string-face', instead > > of being highlighted with `font-lock-doc-face'. > > > > I expected docstrings in Scheme code, similar to those in Elisp or > > Common Lisp modes, should be highlighted distinctly using > > `font-lock-doc-face' for better readability and semantic distinction. > > I noticed in Elisp and Common Lisp this works perfectly, for all forms > > and variants (variables, defmethods, defun, etc.) > > > > The problem is, when defining functions or macros in scheme-mode with > > a docstring, the docstring string literal is treated identically to > > any other string literal in terms of font locking. > > > > I am a bit of a newbie when it comes to the lower levels of Emacs, and > > its modes, but I have looked into the source code of scheme-mode and > > it appears to contain the necessary functionality to correctly > > identify and highlight docstrings. For instance, I found lines such as > > : > > > > (put 'define* 'scheme-doc-string-elt 2) > > > > which seems to properly register docstring elements for font locking. > > This suggests that the mechanism for identifying docstrings is in > > place, but perhaps the application of font-lock-doc-face isn't > > occurring as intended, or there's an interaction issue with > > lisp-mode's inheritance. > > > > Example (for illustration and clarity purposes): > > > > (define (my-function arg) > > "This is a docstring for my-function." > > (+ arg 1)) > > > > In the example above, the string "This is a docstring for > > my-function." now appears with the font-lock-string-face , when it > > should instead be using font-lock-doc-face. > > > > I run Emacs on Guix btw. > > > > I would appreciate it if you could investigate this issue. Thank you > > for your time and dedication to maintaining the allmighty Emacs. > > Stefan, any suggestions? > > > >
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.