From debbugs-submit-bounces@debbugs.gnu.org Wed Aug 20 17:54:27 2025 Received: (at submit) by debbugs.gnu.org; 20 Aug 2025 21:54:27 +0000 Received: from localhost ([127.0.0.1]:57890 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uoqlG-0008Vk-2m for submit@debbugs.gnu.org; Wed, 20 Aug 2025 17:54:27 -0400 Received: from lists.gnu.org ([2001:470:142::17]:58196) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1uoqlD-0008VO-Az for submit@debbugs.gnu.org; Wed, 20 Aug 2025 17:54:24 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uoql4-0001er-CV for bug-gnu-emacs@gnu.org; Wed, 20 Aug 2025 17:54:14 -0400 Received: from mail-ed1-x52b.google.com ([2a00:1450:4864:20::52b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uoql1-0001IU-Mr for bug-gnu-emacs@gnu.org; Wed, 20 Aug 2025 17:54:14 -0400 Received: by mail-ed1-x52b.google.com with SMTP id 4fb4d7f45d1cf-6188b5b113eso534744a12.0 for ; Wed, 20 Aug 2025 14:54:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1755726849; x=1756331649; darn=gnu.org; h=mime-version:user-agent:message-id:date:subject:to:from:from:to:cc :subject:date:message-id:reply-to; bh=ethMEZKLV7boTu2vWKUobFokEGz1YC4z4doWoznQRhE=; b=FbD6pX5LvRgciNnoer1n89L8JrVNxz4z09mTNOxvJEEwp7hg7/LHIjgbd6yYw/JCtV CPxNvZJLXIddIjUNJSnNcNQ0wiNkl9fxqDp5ElgT8jW42oi/5jUe69LV4cjzOaO7YciN uMfYGNLcIckw+EJys6OZfy4BLH45TDQg/KuS8TqUGgRqgDUE34EJoG78/7NblR5fqFc0 fGFWTn1jXJjRcvPmWIk/inhwzdNxmJeDBHTJAUWSeMOm8fpY1Bo1es1v5YwrCEsU/O4p /fQEFN+M0G6WM0IqD2sfDt8VQfOshgEwL7rfePOWjraR2F322I9bibRQnxgso+yOesXm 56RQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1755726849; x=1756331649; h=mime-version:user-agent:message-id:date:subject:to:from :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=ethMEZKLV7boTu2vWKUobFokEGz1YC4z4doWoznQRhE=; b=ln3aApYfDakT6g1M+oJtg0fFdJzH517ZK5xq5tuLKL4rpuNzpGqqnIXD3N5PCtxjhH t/P6Hv5rCKI1NXDblSewD5eJ5712nLFXRjb0bHH/qqZtMdzjT0zBy1v/6s3W43bEpF0n Sn7ORS+NIXiYa1rUjDfst8/mYeDbVchC3xaV4Hk/8WXeYkqOyvs6au+56IuaMpfxl77a Mg2XKGEx1bCm14wdUHweY3iN45MfsxyFXi9yyD1QS/q2tNb5s82jMeVUQw6hIvMxHMwD M7wE8ZT7PRKST862kQvzFVGITKUs5TTiq+zRuhygOBc6keoHMISKqn22zSrL1xIYdNde eHPw== X-Gm-Message-State: AOJu0YwkPfEadmu+AtzqDEfFN8TNI2oUErbSKCnixJpZ1V6YOCDLsZvf 3tUw7QZWs6035foO62p6EdOmnywB/EnAjFQoWcrn6b7XzwpAwXEe7w/XJ/zx X-Gm-Gg: ASbGnctEaCzNVjUSEVMhzUZPpLEu4JVUg42IL5P4ipoZIA04sN64+93clagGbf+P9lk 41YZIMbfPQTtvUiX36y8G3NsNwsLYyDZzAQ1F48xQJwfH41uU6akyGuKG+TemHP813qXGBbXSZ7 SYerYtXhJtkeGbExNUNxHHU+BNA7R+1PSiBAl1kgQfiM3NdGZ709I2pobd2BjYp1T/WvghUcF3+ EtxM4LuQJ2ZkM+5N/AQPVEyEN51gbejENrxHEmpA4HZzXULdSzXIzlA9fkLrwclaFuo7Ml4XUdE oLFyYLG1nfDKmHfdL2G7RmkzusItcHxIwmnHoV+MTdei8U6qQLDpcs6KFEurUtibzxTwVcel50g P88MnL6H71At3fQX6nwpFCA== X-Google-Smtp-Source: AGHT+IH1sRt4rPqJXrC0+MTTs4MdQeBVCt9OH2hvJ3WLCDu3PFSi+P9da/elyjvM0m2tKpb/8m7j7g== X-Received: by 2002:a05:6402:518e:b0:618:7336:9b31 with SMTP id 4fb4d7f45d1cf-61bf86e0052mr178642a12.1.1755726849182; Wed, 20 Aug 2025 14:54:09 -0700 (PDT) Received: from gnu-framework ([188.90.97.167]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-61a75794cfcsm3990628a12.43.2025.08.20.14.54.07 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 20 Aug 2025 14:54:08 -0700 (PDT) From: Joe To: bug-gnu-emacs@gnu.org Subject: 30.1; scheme-mode docstrings not highlighting with font-lock-doc-face X-Debbugs-Cc: Date: Wed, 20 Aug 2025 23:54:37 +0200 Message-ID: <87zfbt7j6q.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain Received-SPF: pass client-ip=2a00:1450:4864:20::52b; envelope-from=jjbigorra@gmail.com; helo=mail-ed1-x52b.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.0 (/) --- 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)) From debbugs-submit-bounces@debbugs.gnu.org Thu Aug 21 02:39:59 2025 Received: (at 79282) by debbugs.gnu.org; 21 Aug 2025 06:39:59 +0000 Received: from localhost ([127.0.0.1]:58697 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uoyxq-0001Fh-G0 for submit@debbugs.gnu.org; Thu, 21 Aug 2025 02:39:59 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41808) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1uoyxh-0001FC-Fq for 79282@debbugs.gnu.org; Thu, 21 Aug 2025 02:39:50 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uoyxa-00078o-Qv; Thu, 21 Aug 2025 02:39:42 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=BWJKWHbAp+Eu9Y6OLlOwusEMXWWnbEBltHGCVO2tDxg=; b=XYKf/R2EYfAz grxuL5VPrzB/rsUW0lOLmPKMUxPqj/BEbNT+7f8eBqJWY6VxOknc/E8Rzfaox7zpg/9IG3F5UOZot LCB5skgn+aJn/I/nT4cphKs8wpr1nDmoj5P1o1E8xFvtKGVFWOjMqODk7e7aT4adKJka4sDzl9xgZ RYTx/PB/5RTfYtV2hwXJ5vPQ2iB9uwxGLKeMCxB9F78zBuzWQNPk/0lVYoymakcYO0oqDbdOhFH0G +Mn+t7NK+aKqooWRy0viwU0FATRTxTCiElLbedTHNPHwt+rnkzFL2tjTnjXYiLiTM0svK+aZ2LEIp G+McZ/wV0mqrEYXoDDjd2w==; Date: Thu, 21 Aug 2025 09:39:29 +0300 Message-Id: <86ldnddvq6.fsf@gnu.org> From: Eli Zaretskii To: Joe , Stefan Monnier In-Reply-To: <87zfbt7j6q.fsf@gmail.com> (message from Joe on Wed, 20 Aug 2025 23:54:37 +0200) Subject: Re: bug#79282: 30.1; scheme-mode docstrings not highlighting with font-lock-doc-face References: <87zfbt7j6q.fsf@gmail.com> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 79282 Cc: 79282@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Joe > 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? From debbugs-submit-bounces@debbugs.gnu.org Sat Sep 06 03:57:41 2025 Received: (at 79282) by debbugs.gnu.org; 6 Sep 2025 07:57:41 +0000 Received: from localhost ([127.0.0.1]:33694 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uunnp-0005tL-1U for submit@debbugs.gnu.org; Sat, 06 Sep 2025 03:57:41 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:40824) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1uunnk-0005sj-BC for 79282@debbugs.gnu.org; Sat, 06 Sep 2025 03:57:36 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uunne-00059l-Tt; Sat, 06 Sep 2025 03:57:30 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=lG4W/vJZMtO8XUgrgOkKTvXWiYXLz8fzEkMvPT2rxWE=; b=fK9ZzO7ANTAj +a4wV5sFTVkqIfx4kLlZB21e6oYK7aHMRqrowGtFjgE4YOYT17koKol2CMALFpJwMoly6aPERSGZ5 zEq5MNbddHezuGQkUmoWg7lUkM5Bjv//n1RQ45R12JpUMpbjA2Y5QyjzPDlR/Wrj/DjGzIWkEHlFS nxIemncy87SXwpWocGqGzGUqkxc+ULJsOZ4eaMJPSp3ScPENETuS5rhyK4UCvKKLi5ULiaUfVIV6h OHNYUzljOihtPc5aeccJE85n0xmo5rw4ISBeAxNz/Hp/LfpRQlOcMTfbqhYyMQUhR1g4O+Ncpzexg h3H7w2Zy4Pyk9V7rS4tAaA==; Date: Sat, 06 Sep 2025 10:57:26 +0300 Message-Id: <86ldmsggih.fsf@gnu.org> From: Eli Zaretskii To: Stefan Monnier In-Reply-To: <86ldnddvq6.fsf@gnu.org> (message from Eli Zaretskii on Thu, 21 Aug 2025 09:39:29 +0300) Subject: Re: bug#79282: 30.1; scheme-mode docstrings not highlighting with font-lock-doc-face References: <87zfbt7j6q.fsf@gmail.com> <86ldnddvq6.fsf@gnu.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 79282 Cc: 79282@debbugs.gnu.org, jjbigorra@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Ping! Stefan, could you please chime in? > Cc: 79282@debbugs.gnu.org > Date: Thu, 21 Aug 2025 09:39:29 +0300 > From: Eli Zaretskii > > > From: Joe > > 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? > > > >