GNU bug report logs - #54704
29.0.50; Broken code assistance for Scheme libraries

Previous Next

Package: emacs;

Reported by: Rudolf Adamkovič <salutis <at> me.com>

Date: Mon, 4 Apr 2022 05:34:01 UTC

Severity: normal

Found in version 29.0.50

Done: Eli Zaretskii <eliz <at> gnu.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 54704 in the body.
You can then email your comments to 54704 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#54704; Package emacs. (Mon, 04 Apr 2022 05:34:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Rudolf Adamkovič <salutis <at> me.com>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Mon, 04 Apr 2022 05:34:02 GMT) Full text and rfc822 format available.

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

From: Rudolf Adamkovič <salutis <at> me.com>
To: bug-gnu-emacs <at> gnu.org
Subject: 29.0.50; Broken code assistance for Scheme libraries
Date: Mon, 04 Apr 2022 07:33:19 +0200
Hello there!

Emacs indents Scheme libraries as follows:

(define-library (foo bar)
  (export foo
          bar
          baz)

  (begin
    (define (foo)
      'unimplemented)
      
    (define (bar)
      'unimplemented)
      
    (define (baz)
      'unimplemented))

With this (default) indentation,

- the Outline minor mode does not show the library procedures,
- the Imenu mode does not show the library procedures, and
- the entire library file has indent.

When I re-indent manually to ...

(define-library (foo bar)

(export foo
        bar
        baz)

(begin
(define (foo)
  'unimplemented)

(define (bar)
  'unimplemented)

(define (baz)
  'unimplemented))

... everything starts working (!).

The bug applies to both

- R6RS libraries ("library") and
- R7RS libraries ("define-library").

A possible fix:

1. Make the Outline mode find *indented* definitions.
2. Make the Imenu mode find *indented* definitions.
3. Make Emacs indent libraries as shown above (optional).

Rudy


In GNU Emacs 29.0.50 (build 3, x86_64-apple-darwin21.2.0, NS appkit-2113.20 Version 12.1 (Build 21C52))
 of 2022-03-29 built on Workstation.local
Repository revision: 55932a65ed719d4277e0e781ca5e323b189d7f63
Repository branch: master
Windowing system distributor 'Apple', version 10.3.2113
System Description:  macOS 12.3.1

Configured using:
 'configure --with-json --with-native-compilation'

Configured features:
ACL DBUS GIF GLIB GMP GNUTLS JPEG JSON LCMS2 LIBXML2 MODULES NATIVE_COMP
NOTIFY KQUEUE NS PDUMPER PNG RSVG SQLITE3 THREADS TIFF
TOOLKIT_SCROLL_BARS WEBP XIM ZLIB

Important settings:
  value of $LC_ALL: en_US.UTF-8
  locale-coding-system: utf-8-unix

Major mode: Fundamental

Minor modes in effect:
  global-hl-todo-mode: t
  global-diff-hl-mode: t
  global-git-commit-mode: t
  magit-auto-revert-mode: t
  marginalia-mode: t
  vertico-mouse-mode: t
  vertico-mode: t
  global-company-mode: t
  global-subword-mode: t
  save-place-mode: t
  global-auto-revert-mode: t
  pulsar-global-mode: t
  delete-selection-mode: t
  global-goto-address-mode: t
  shell-dirtrack-mode: t
  savehist-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  context-menu-mode: t
  global-font-lock-mode: t
  buffer-read-only: t
  size-indication-mode: t
  column-number-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:
/Users/salutis/src/geiser-guile/geiser-guile hides /Users/salutis/.emacs.d/elpa/geiser-guile-20220323.2352/geiser-guile
/Users/salutis/src/geiser/elisp/geiser-eval hides /Users/salutis/.emacs.d/elpa/geiser-20220327.2323/geiser-eval
/Users/salutis/src/geiser/elisp/geiser-popup hides /Users/salutis/.emacs.d/elpa/geiser-20220327.2323/geiser-popup
/Users/salutis/src/geiser/elisp/geiser-company hides /Users/salutis/.emacs.d/elpa/geiser-20220327.2323/geiser-company
/Users/salutis/src/geiser/elisp/geiser-mode hides /Users/salutis/.emacs.d/elpa/geiser-20220327.2323/geiser-mode
/Users/salutis/src/geiser/elisp/geiser-base hides /Users/salutis/.emacs.d/elpa/geiser-20220327.2323/geiser-base
/Users/salutis/src/geiser/elisp/geiser hides /Users/salutis/.emacs.d/elpa/geiser-20220327.2323/geiser
/Users/salutis/src/geiser/elisp/geiser-impl hides /Users/salutis/.emacs.d/elpa/geiser-20220327.2323/geiser-impl
/Users/salutis/src/geiser/elisp/geiser-connection hides /Users/salutis/.emacs.d/elpa/geiser-20220327.2323/geiser-connection
/Users/salutis/src/geiser/elisp/geiser-custom hides /Users/salutis/.emacs.d/elpa/geiser-20220327.2323/geiser-custom
/Users/salutis/src/geiser/elisp/geiser-table hides /Users/salutis/.emacs.d/elpa/geiser-20220327.2323/geiser-table
/Users/salutis/src/geiser/elisp/geiser-doc hides /Users/salutis/.emacs.d/elpa/geiser-20220327.2323/geiser-doc
/Users/salutis/src/geiser/elisp/geiser-image hides /Users/salutis/.emacs.d/elpa/geiser-20220327.2323/geiser-image
/Users/salutis/src/geiser/elisp/geiser-log hides /Users/salutis/.emacs.d/elpa/geiser-20220327.2323/geiser-log
/Users/salutis/src/geiser/elisp/geiser-syntax hides /Users/salutis/.emacs.d/elpa/geiser-20220327.2323/geiser-syntax
/Users/salutis/src/geiser/elisp/geiser-menu hides /Users/salutis/.emacs.d/elpa/geiser-20220327.2323/geiser-menu
/Users/salutis/src/geiser/elisp/geiser-reload hides /Users/salutis/.emacs.d/elpa/geiser-20220327.2323/geiser-reload
/Users/salutis/src/geiser/elisp/geiser-xref hides /Users/salutis/.emacs.d/elpa/geiser-20220327.2323/geiser-xref
/Users/salutis/src/geiser/elisp/geiser-compile hides /Users/salutis/.emacs.d/elpa/geiser-20220327.2323/geiser-compile
/Users/salutis/src/geiser/elisp/geiser-completion hides /Users/salutis/.emacs.d/elpa/geiser-20220327.2323/geiser-completion
/Users/salutis/src/geiser/elisp/geiser-edit hides /Users/salutis/.emacs.d/elpa/geiser-20220327.2323/geiser-edit
/Users/salutis/src/geiser/elisp/geiser-autodoc hides /Users/salutis/.emacs.d/elpa/geiser-20220327.2323/geiser-autodoc
/Users/salutis/src/geiser/elisp/geiser-repl hides /Users/salutis/.emacs.d/elpa/geiser-20220327.2323/geiser-repl
/Users/salutis/src/geiser/elisp/geiser-debug hides /Users/salutis/.emacs.d/elpa/geiser-20220327.2323/geiser-debug
/Users/salutis/.emacs.d/elpa/transient-20220331.2312/transient hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/transient
~/src/org-mode/lisp/ob-exp hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-exp
~/src/org-mode/lisp/ob-emacs-lisp hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-emacs-lisp
~/src/org-mode/lisp/oc hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/oc
~/src/org-mode/lisp/ob-css hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-css
~/src/org-mode/lisp/ob-lob hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-lob
~/src/org-mode/lisp/ol-irc hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ol-irc
~/src/org-mode/lisp/ob-forth hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-forth
~/src/org-mode/lisp/org-macs hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/org-macs
~/src/org-mode/lisp/ob hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob
~/src/org-mode/lisp/org-version hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/org-version
~/src/org-mode/lisp/ob-scheme hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-scheme
~/src/org-mode/lisp/ox hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ox
~/src/org-mode/lisp/ob-C hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-C
~/src/org-mode/lisp/org-capture hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/org-capture
~/src/org-mode/lisp/ob-ref hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-ref
~/src/org-mode/lisp/ob-clojure hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-clojure
~/src/org-mode/lisp/org-mouse hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/org-mouse
~/src/org-mode/lisp/org-ctags hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/org-ctags
~/src/org-mode/lisp/org-entities hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/org-entities
~/src/org-mode/lisp/org-archive hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/org-archive
~/src/org-mode/lisp/ob-screen hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-screen
~/src/org-mode/lisp/ol-bibtex hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ol-bibtex
~/src/org-mode/lisp/ob-haskell hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-haskell
~/src/org-mode/lisp/org-table hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/org-table
~/src/org-mode/lisp/ol-eww hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ol-eww
~/src/org-mode/lisp/ol-man hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ol-man
~/src/org-mode/lisp/ox-org hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ox-org
~/src/org-mode/lisp/org-num hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/org-num
~/src/org-mode/lisp/org-plot hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/org-plot
~/src/org-mode/lisp/ol-rmail hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ol-rmail
~/src/org-mode/lisp/ob-awk hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-awk
~/src/org-mode/lisp/ob-groovy hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-groovy
~/src/org-mode/lisp/ob-octave hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-octave
~/src/org-mode/lisp/org-faces hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/org-faces
~/src/org-mode/lisp/oc-biblatex hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/oc-biblatex
~/src/org-mode/lisp/org-colview hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/org-colview
~/src/org-mode/lisp/ob-R hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-R
~/src/org-mode/lisp/org-refile hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/org-refile
~/src/org-mode/lisp/org-timer hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/org-timer
~/src/org-mode/lisp/org-mobile hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/org-mobile
~/src/org-mode/lisp/ob-fortran hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-fortran
~/src/org-mode/lisp/ob-shell hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-shell
~/src/org-mode/lisp/ob-perl hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-perl
~/src/org-mode/lisp/ob-sqlite hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-sqlite
~/src/org-mode/lisp/oc-basic hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/oc-basic
~/src/org-mode/lisp/ob-sed hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-sed
~/src/org-mode/lisp/org-list hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/org-list
~/src/org-mode/lisp/ob-ruby hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-ruby
~/src/org-mode/lisp/ob-eval hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-eval
~/src/org-mode/lisp/org-habit hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/org-habit
~/src/org-mode/lisp/org-clock hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/org-clock
~/src/org-mode/lisp/org-goto hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/org-goto
~/src/org-mode/lisp/ox-html hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ox-html
~/src/org-mode/lisp/org-src hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/org-src
~/src/org-mode/lisp/ob-lisp hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-lisp
~/src/org-mode/lisp/ol-eshell hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ol-eshell
~/src/org-mode/lisp/ob-ditaa hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-ditaa
~/src/org-mode/lisp/org-pcomplete hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/org-pcomplete
~/src/org-mode/lisp/org-lint hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/org-lint
~/src/org-mode/lisp/ox-latex hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ox-latex
~/src/org-mode/lisp/ob-sass hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-sass
~/src/org-mode/lisp/ob-tangle hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-tangle
~/src/org-mode/lisp/ob-calc hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-calc
~/src/org-mode/lisp/ob-java hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-java
~/src/org-mode/lisp/ox-icalendar hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ox-icalendar
~/src/org-mode/lisp/ol-mhe hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ol-mhe
~/src/org-mode/lisp/org-attach-git hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/org-attach-git
~/src/org-mode/lisp/ox-md hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ox-md
~/src/org-mode/lisp/ox-beamer hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ox-beamer
~/src/org-mode/lisp/org-element hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/org-element
~/src/org-mode/lisp/oc-natbib hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/oc-natbib
~/src/org-mode/lisp/org-protocol hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/org-protocol
~/src/org-mode/lisp/ob-gnuplot hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-gnuplot
~/src/org-mode/lisp/org-tempo hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/org-tempo
~/src/org-mode/lisp/ob-latex hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-latex
~/src/org-mode/lisp/ol-w3m hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ol-w3m
~/src/org-mode/lisp/org-id hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/org-id
~/src/org-mode/lisp/ox-man hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ox-man
~/src/org-mode/lisp/ol-doi hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ol-doi
~/src/org-mode/lisp/org-feed hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/org-feed
~/src/org-mode/lisp/ob-julia hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-julia
~/src/org-mode/lisp/ob-lua hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-lua
~/src/org-mode/lisp/ob-table hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-table
~/src/org-mode/lisp/ob-ocaml hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-ocaml
~/src/org-mode/lisp/oc-csl hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/oc-csl
~/src/org-mode/lisp/ol-gnus hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ol-gnus
~/src/org-mode/lisp/org-indent hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/org-indent
~/src/org-mode/lisp/ob-lilypond hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-lilypond
~/src/org-mode/lisp/ob-matlab hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-matlab
~/src/org-mode/lisp/org-datetree hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/org-datetree
~/src/org-mode/lisp/ol-docview hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ol-docview
~/src/org-mode/lisp/ob-python hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-python
~/src/org-mode/lisp/ob-makefile hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-makefile
~/src/org-mode/lisp/org-duration hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/org-duration
~/src/org-mode/lisp/org-agenda hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/org-agenda
~/src/org-mode/lisp/ob-dot hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-dot
~/src/org-mode/lisp/ob-js hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-js
~/src/org-mode/lisp/ox-publish hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ox-publish
~/src/org-mode/lisp/org-inlinetask hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/org-inlinetask
~/src/org-mode/lisp/ob-org hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-org
~/src/org-mode/lisp/org-keys hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/org-keys
~/src/org-mode/lisp/ob-core hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-core
~/src/org-mode/lisp/org-compat hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/org-compat
~/src/org-mode/lisp/ol hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ol
~/src/org-mode/lisp/ox-odt hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ox-odt
~/src/org-mode/lisp/ol-info hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ol-info
~/src/org-mode/lisp/ob-plantuml hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-plantuml
~/src/org-mode/lisp/ob-eshell hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-eshell
~/src/org-mode/lisp/ox-ascii hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ox-ascii
~/src/org-mode/lisp/org-loaddefs hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/org-loaddefs
~/src/org-mode/lisp/ox-koma-letter hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ox-koma-letter
~/src/org-mode/lisp/ob-maxima hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-maxima
~/src/org-mode/lisp/org hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/org
~/src/org-mode/lisp/ol-bbdb hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ol-bbdb
~/src/org-mode/lisp/org-macro hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/org-macro
~/src/org-mode/lisp/ob-sql hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-sql
~/src/org-mode/lisp/org-attach hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/org-attach
~/src/org-mode/lisp/ob-processing hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-processing
~/src/org-mode/lisp/ox-texinfo hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ox-texinfo
~/src/org-mode/lisp/org-crypt hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/org-crypt
~/src/org-mode/lisp/org-footnote hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/org-footnote
~/src/org-mode/lisp/org-install hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/org-install
~/src/org-mode/lisp/ob-comint hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/org/ob-comint

Features:
(shadow bbdb-message mail-extr emacsbug tramp-cmds cursor-sensor
display-fill-column-indicator org-pomodoro alert log4e notifications
dbus xml gntp org-timer network-stream nsm emms-player-mpd emms-url
emms-player-simple emms-browser sort emms-playlist-sort emms-last-played
emms-volume 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
emms-compat hl-todo diff-hl log-view vc-dir ewoc magit-bookmark
magit-submodule magit-obsolete 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 rmc
puny rfc822 mml mml-sec epa epg rfc6068 epg-config gnus-util 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-core magit-autorevert magit-margin
magit-transient magit-process magit-mode magit-git magit-base
magit-section display-line-numbers fortune pdf-outline pdf-links
pdf-occur ibuf-ext ibuffer ibuffer-loaddefs tablist tablist-filter
semantic/wisent/comp semantic/wisent semantic/wisent/wisent
semantic/util-modes semantic/util semantic semantic/tag semantic/lex
semantic/fw mode-local cedet pdf-isearch pdf-misc pdf-tools pdf-view
pdf-cache pdf-info pdf-util pdf-macs image-mode exif pdf-loader
lingua-franca flyspell-correct flyspell ispell citar-org oc-basic citar
crm citar-file oc-csl citeproc citeproc-itemgetters citeproc-biblatex
citeproc-bibtex parsebib ol-bibtex citeproc-cite citeproc-subbibs
citeproc-sort citeproc-name citeproc-formatters citeproc-number rst
citeproc-proc citeproc-disamb citeproc-itemdata
citeproc-generic-elements citeproc-macro citeproc-choose citeproc-date
citeproc-context citeproc-prange citeproc-style citeproc-locale
citeproc-term citeproc-rt citeproc-lib citeproc-s let-alist queue bibtex
org-clock ob-sqlite ob-sql ob-java ob-shell ob-C cc-mode cc-fonts
cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs
ob-R ob-scheme org-habit ox-texinfo ox-md 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-element org-persist xdg org-id org-refile
avl-tree vterm face-remap term disp-table ehelp vterm-module term/xterm
xterm consult-vertico consult recentf tree-widget bookmark marginalia
vertico-mouse vertico orderless company-oddmuse company-keywords
company-etags company-gtags company-dabbrev-code company-dabbrev
company-files company-clang company-capf company-cmake company-semantic
company-template company-bbdb company pcase corfu dired dired-loaddefs
cap-words superword subword saveplace bug-reference autorevert
filenotify flymake-proc flymake pass f dash s imenu password-store
auth-source-pass with-editor server vc-mtn vc-hg vc-git diff-mode vc-bzr
vc-src vc-sccs vc-svn vc-cvs vc-rcs vc vc-dispatcher
modus-operandi-theme modus-themes pulsar pulse color delsel goto-addr
thingatpt diminish bbdb bbdb-site timezone paredit geiser-guile tramp
tramp-loaddefs trampver tramp-integration cus-edit pp cus-load wid-edit
files-x tramp-compat shell parse-time iso8601 ls-lisp info-look
geiser-repl geiser-compile geiser-debug compile text-property-search
transient comp comp-cstr warnings edmacro kmacro geiser-image
geiser-company geiser-doc geiser-menu geiser-edit etags fileloop
generator xref project geiser-completion geiser-autodoc geiser-eval
geiser-connection tq geiser-syntax scheme jka-compr geiser-log derived
geiser-popup view geiser savehist exec-path-from-shell cl-extra org ob
ob-tangle ob-ref ob-lob ob-table ob-exp org-macro org-footnote org-src
ob-comint org-pcomplete pcomplete comint ansi-color org-list org-faces
org-entities time-date noutline outline easy-mmode org-version
ob-emacs-lisp ob-core ob-eval org-table ol rx org-keys oc org-compat
advice org-macs org-loaddefs format-spec find-func cal-menu calendar
cal-loaddefs tex-site geiser-impl help-fns radix-tree help-mode
geiser-custom geiser-base ring info 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 cl-seq eieio
eieio-core cl-macs eieio-loaddefs password-cache json map url-vars seq
gv subr-x byte-opt bytecomp byte-compile cconv cl-loaddefs cl-lib
iso-transl tooltip eldoc paren electric uniquify ediff-hook vc-hooks
lisp-float-type elisp-mode mwheel term/ns-win ns-win ucs-normalize
mule-util 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 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 dbusbind kqueue cocoa ns
lcms2 multi-tty make-network-process native-compile emacs)

Memory information:
((conses 16 759355 200532)
 (symbols 48 45103 5)
 (strings 32 199247 48877)
 (string-bytes 1 7317913)
 (vectors 16 79698)
 (vector-slots 8 1393245 34592)
 (floats 8 522 59)
 (intervals 56 10415 634)
 (buffers 992 13))

-- 
"Logic is a science of the necessary laws of thought, without which no
employment of the understanding and the reason takes place."
-- Immanuel Kant, 1785

Rudolf Adamkovič <salutis <at> me.com> [he/him]
Studenohorská 25
84103 Bratislava
Slovakia




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#54704; Package emacs. (Sat, 24 Dec 2022 00:32:02 GMT) Full text and rfc822 format available.

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

From: Rudolf Adamkovič <salutis <at> me.com>
To: 54704 <at> debbugs.gnu.org
Subject: Re: bug#54704: [PATCH] 29.0.50; Broken code assistance for Scheme
 libraries
Date: Sat, 24 Dec 2022 01:31:24 +0100
[Message part 1 (text/plain, inline)]
Rudolf Adamkovič via "Bug reports for GNU Emacs, the Swiss army knife of
text editors" <bug-gnu-emacs <at> gnu.org> writes:

> Hello there!

Hello to myself from the future! :-)

> The bug applies to both
>
> - R6RS libraries ("library") and
> - R7RS libraries ("define-library").
>
> A possible fix:
>
> [...]

Please see the attached patch that makes Emacs recognize R6RS/R7RS
library files, as well as, makes Emacs recognize their members.

To the Emacs maintainers: Please see the attached patch.

Thank you!

Rudy

[0001-Improve-support-for-Scheme-R6RS-and-R7RS-libraries-b.patch (text/x-patch, inline)]
From 858a6d376f94616b0ec347ed36487befb0871482 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Rudolf=20Adamkovi=C4=8D?= <salutis <at> me.com>
Date: Sat, 24 Dec 2022 01:00:32 +0100
Subject: [PATCH] Improve support for Scheme R6RS and R7RS libraries
 (bug#54704)

* etc/NEWS (Scheme mode): Document improved file-type auto-detection
and Imenu support for R6RS and R7RS Scheme libraries.
* lisp/files.el (auto-mode-alist): Associate the '.sls' (R6RS Scheme
Library Source) and '.sld' (R7RS Scheme Library Definition) file name
extensions with the Scheme mode.
* lisp/progmodes/scheme.el (scheme-imenu-generic-expression): Make
Imenu recognize the members nested (and so indented) inside of
'library' (R6RS) or 'define-library' (R7RS) forms.
---
 etc/NEWS                 | 14 ++++++++++++++
 lisp/files.el            |  2 +-
 lisp/progmodes/scheme.el | 20 +++++++++++++-------
 3 files changed, 28 insertions(+), 8 deletions(-)

diff --git a/etc/NEWS b/etc/NEWS
index af7f1050b7..ae12847ea9 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -93,6 +93,20 @@ This command either fills a single paragraph in a defun, such as a
 doc-string, or a comment, or (re)indents the surrounding defun if
 point is not in a comment or a string.  It is by default bound to
 'M-q' in 'prog-mode' and all its descendants.
+
+** Scheme mode
+
++++
+*** Auto-detection of Scheme library files
+Emacs now automatically enables the Scheme mode for R6RS library
+sources ('.sls') and R7RS library definitions ('.sld').
+
++++
+*** Imenu members for R6RS and R7RS library members
+Imenu now lists the library members, such as methods and record types,
+nested inside R6RS library sources ('library') and R7RS library
+definitions ('define-library').
+
 
 * New Modes and Packages in Emacs 30.1
 
diff --git a/lisp/files.el b/lisp/files.el
index f352d3a9a7..522e4fbf93 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -2850,7 +2850,7 @@ auto-mode-alist
      ("\\.emacs-places\\'" . lisp-data-mode)
      ("\\.el\\'" . emacs-lisp-mode)
      ("Project\\.ede\\'" . emacs-lisp-mode)
-     ("\\.\\(scm\\|stk\\|ss\\|sch\\)\\'" . scheme-mode)
+     ("\\.\\(scm\\|sls\\|sld\\|stk\\|ss\\|sch\\)\\'" . scheme-mode)
      ("\\.l\\'" . lisp-mode)
      ("\\.li?sp\\'" . lisp-mode)
      ("\\.[fF]\\'" . fortran-mode)
diff --git a/lisp/progmodes/scheme.el b/lisp/progmodes/scheme.el
index 8454f24356..f45d799252 100644
--- a/lisp/progmodes/scheme.el
+++ b/lisp/progmodes/scheme.el
@@ -115,7 +115,8 @@ 'scheme-mode-abbrev-table
 
 (defvar scheme-imenu-generic-expression
   `((nil
-     ,(rx bol "(define"
+     ,(rx bol (zero-or-more space)
+          "(define"
           (zero-or-one "*")
           (zero-or-one "-public")
           (one-or-more space)
@@ -123,36 +124,41 @@ scheme-imenu-generic-expression
           (group (one-or-more (or word (syntax symbol)))))
      1)
     ("Methods"
-     ,(rx bol "(define-"
+     ,(rx bol (zero-or-more space)
+          "(define-"
           (or "generic" "method" "accessor")
           (one-or-more space)
           (zero-or-one "(")
           (group (one-or-more (or word (syntax symbol)))))
      1)
     ("Classes"
-     ,(rx bol "(define-class"
+     ,(rx bol (zero-or-more space)
+          "(define-class"
           (one-or-more space)
           (zero-or-one "(")
           (group (one-or-more (or word (syntax symbol)))))
      1)
     ("Records"
-     ,(rx bol "(define-record-type"
+     ,(rx bol (zero-or-more space)
+          "(define-record-type"
           (zero-or-one "*")
           (one-or-more space)
           (group (one-or-more (or word (syntax symbol)))))
      1)
     ("Conditions"
-     ,(rx bol "(define-condition-type"
+     ,(rx bol (zero-or-more space)
+          "(define-condition-type"
           (one-or-more space)
           (group (one-or-more (or word (syntax symbol)))))
      1)
     ("Modules"
-     ,(rx bol "(define-module"
+     ,(rx bol (zero-or-more space)
+          "(define-module"
           (one-or-more space)
           (group "(" (one-or-more any) ")"))
      1)
     ("Macros"
-     ,(rx bol "("
+     ,(rx bol (zero-or-more space) "("
           (or (and "defmacro"
                    (zero-or-one "*")
                    (zero-or-one "-public"))
-- 
2.39.0

[Message part 3 (text/plain, inline)]
-- 
"Programming reliably -- must be an activity of an undeniably
mathematical nature […] You see, mathematics is about thinking, and
doing mathematics is always trying to think as well as possible."
-- Edsger W. Dijkstra, 1981

Rudolf Adamkovič <salutis <at> me.com> [he/him]
Studenohorská 25
84103 Bratislava
Slovakia

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#54704; Package emacs. (Sat, 24 Dec 2022 12:16:02 GMT) Full text and rfc822 format available.

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

From: Eli Zaretskii <eliz <at> gnu.org>
To: Rudolf Adamkovič <salutis <at> me.com>
Cc: 54704 <at> debbugs.gnu.org
Subject: Re: bug#54704: [PATCH] 29.0.50;
 Broken code assistance for Scheme libraries
Date: Sat, 24 Dec 2022 14:15:46 +0200
> Date: Sat, 24 Dec 2022 01:31:24 +0100
> From:  Rudolf Adamkovič via "Bug reports for GNU Emacs,
>  the Swiss army knife of text editors" <bug-gnu-emacs <at> gnu.org>
> 
> Please see the attached patch that makes Emacs recognize R6RS/R7RS
> library files, as well as, makes Emacs recognize their members.

Thanks.

> ++++

The "+++" mark means that the manuals have been updated with this
information.  I don't think this is the case, and we don't have any
manuals for the Scheme mode, right?  So this should be "---" instead.

> +*** Auto-detection of Scheme library files

Heading lines in NEWS should end with a period.

> +Emacs now automatically enables the Scheme mode for R6RS library
> +sources ('.sls') and R7RS library definitions ('.sld').

"source files" and "library definition files", right?

> ++++
> +*** Imenu members for R6RS and R7RS library members

Same comments here.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#54704; Package emacs. (Sat, 24 Dec 2022 22:33:01 GMT) Full text and rfc822 format available.

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

From: Rudolf Adamkovič <salutis <at> me.com>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 54704 <at> debbugs.gnu.org
Subject: Re: bug#54704: [PATCH] 29.0.50; Broken code assistance for Scheme
 libraries
Date: Sat, 24 Dec 2022 23:32:21 +0100
[Message part 1 (text/plain, inline)]
Eli Zaretskii <eliz <at> gnu.org> writes:

>> Please see the attached patch that makes Emacs recognize R6RS/R7RS
>> library files, as well as, makes Emacs recognize their members.
>
> Thanks.

Thank you for your review!

> The "+++" mark means that the manuals have been updated with this
> information.  I don't think this is the case, and we don't have any
> manuals for the Scheme mode, right?  So this should be "---" instead.

Fixed.

>> +*** Auto-detection of Scheme library files
>
> Heading lines in NEWS should end with a period.

Fixed.

>> +Emacs now automatically enables the Scheme mode for R6RS library
>> +sources ('.sls') and R7RS library definitions ('.sld').
>
> "source files" and "library definition files", right?

Nope.  Historically, Scheme has two *standard* library definitions,
incompatible with each other, due to a bit "screwed up" transition from
R5RS to R6RS and then R7RS.  While not mandated by the standards R6RS
and R7RS standards, in the wild, these come as:

- Scheme Library Source ('.sls') for R6RS
- Scheme Library Definition ('.sld) for R7RS

However!  I see how this can confuse the user, so I reworded both items
in the NEWS file.  Importantly, I capitalized the names and put them
right next to their extensions, to tie it all together.  Better?

>> ++++
>> +*** Imenu members for R6RS and R7RS library members
>
> Same comments here.

Fixed.

Rudy

[0001-Improve-support-for-Scheme-R6RS-and-R7RS-libraries-b.patch (text/x-patch, inline)]
From 0cd5b236981fa1dda92fd63da0017ff288fd50b0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Rudolf=20Adamkovi=C4=8D?= <salutis <at> me.com>
Date: Sat, 24 Dec 2022 01:00:32 +0100
Subject: [PATCH] Improve support for Scheme R6RS and R7RS libraries
 (bug#54704)

* etc/NEWS (Scheme mode): Document improved file-type auto-detection
and Imenu support for R6RS and R7RS Scheme libraries.
* lisp/files.el (auto-mode-alist): Associate the '.sls' (R6RS Scheme
Library Source) and '.sld' (R7RS Scheme Library Definition) file name
extensions with the Scheme mode.
* lisp/progmodes/scheme.el (scheme-imenu-generic-expression): Make
Imenu recognize the members nested (and so indented) inside of
'library' (R6RS) or 'define-library' (R7RS) forms.
---
 etc/NEWS                 | 14 ++++++++++++++
 lisp/files.el            |  2 +-
 lisp/progmodes/scheme.el | 20 +++++++++++++-------
 3 files changed, 28 insertions(+), 8 deletions(-)

diff --git a/etc/NEWS b/etc/NEWS
index af7f1050b7..c121a0dd24 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -93,6 +93,20 @@ This command either fills a single paragraph in a defun, such as a
 doc-string, or a comment, or (re)indents the surrounding defun if
 point is not in a comment or a string.  It is by default bound to
 'M-q' in 'prog-mode' and all its descendants.
+
+** Scheme mode
+
+---
+*** Auto-detection of Scheme library files.
+Emacs now automatically enables the Scheme mode when opening R6RS
+Scheme Library Source ('.sls') files and R7RS Scheme Library
+Definition ('.sld') files.
+
+---
+*** Imenu members for R6RS and R7RS library members.
+Imenu now lists the members directly nested in R6RS Scheme libraries
+('library') and R7RS libraries ('define-library').
+
 
 * New Modes and Packages in Emacs 30.1
 
diff --git a/lisp/files.el b/lisp/files.el
index f352d3a9a7..522e4fbf93 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -2850,7 +2850,7 @@ auto-mode-alist
      ("\\.emacs-places\\'" . lisp-data-mode)
      ("\\.el\\'" . emacs-lisp-mode)
      ("Project\\.ede\\'" . emacs-lisp-mode)
-     ("\\.\\(scm\\|stk\\|ss\\|sch\\)\\'" . scheme-mode)
+     ("\\.\\(scm\\|sls\\|sld\\|stk\\|ss\\|sch\\)\\'" . scheme-mode)
      ("\\.l\\'" . lisp-mode)
      ("\\.li?sp\\'" . lisp-mode)
      ("\\.[fF]\\'" . fortran-mode)
diff --git a/lisp/progmodes/scheme.el b/lisp/progmodes/scheme.el
index 8454f24356..f45d799252 100644
--- a/lisp/progmodes/scheme.el
+++ b/lisp/progmodes/scheme.el
@@ -115,7 +115,8 @@ 'scheme-mode-abbrev-table
 
 (defvar scheme-imenu-generic-expression
   `((nil
-     ,(rx bol "(define"
+     ,(rx bol (zero-or-more space)
+          "(define"
           (zero-or-one "*")
           (zero-or-one "-public")
           (one-or-more space)
@@ -123,36 +124,41 @@ scheme-imenu-generic-expression
           (group (one-or-more (or word (syntax symbol)))))
      1)
     ("Methods"
-     ,(rx bol "(define-"
+     ,(rx bol (zero-or-more space)
+          "(define-"
           (or "generic" "method" "accessor")
           (one-or-more space)
           (zero-or-one "(")
           (group (one-or-more (or word (syntax symbol)))))
      1)
     ("Classes"
-     ,(rx bol "(define-class"
+     ,(rx bol (zero-or-more space)
+          "(define-class"
           (one-or-more space)
           (zero-or-one "(")
           (group (one-or-more (or word (syntax symbol)))))
      1)
     ("Records"
-     ,(rx bol "(define-record-type"
+     ,(rx bol (zero-or-more space)
+          "(define-record-type"
           (zero-or-one "*")
           (one-or-more space)
           (group (one-or-more (or word (syntax symbol)))))
      1)
     ("Conditions"
-     ,(rx bol "(define-condition-type"
+     ,(rx bol (zero-or-more space)
+          "(define-condition-type"
           (one-or-more space)
           (group (one-or-more (or word (syntax symbol)))))
      1)
     ("Modules"
-     ,(rx bol "(define-module"
+     ,(rx bol (zero-or-more space)
+          "(define-module"
           (one-or-more space)
           (group "(" (one-or-more any) ")"))
      1)
     ("Macros"
-     ,(rx bol "("
+     ,(rx bol (zero-or-more space) "("
           (or (and "defmacro"
                    (zero-or-one "*")
                    (zero-or-one "-public"))
-- 
2.39.0

[Message part 3 (text/plain, inline)]
-- 
"Logic is a science of the necessary laws of thought, without which no
employment of the understanding and the reason takes place."
-- Immanuel Kant, 1785

Rudolf Adamkovič <salutis <at> me.com> [he/him]
Studenohorská 25
84103 Bratislava
Slovakia

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#54704; Package emacs. (Mon, 26 Dec 2022 12:50:01 GMT) Full text and rfc822 format available.

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

From: Eli Zaretskii <eliz <at> gnu.org>
To: Rudolf Adamkovič <salutis <at> me.com>
Cc: 54704 <at> debbugs.gnu.org
Subject: Re: bug#54704: [PATCH] 29.0.50; Broken code assistance for Scheme
 libraries
Date: Mon, 26 Dec 2022 14:49:33 +0200
> From: Rudolf Adamkovič <salutis <at> me.com>
> Cc: 54704 <at> debbugs.gnu.org
> Date: Sat, 24 Dec 2022 23:32:21 +0100
> 
> Eli Zaretskii <eliz <at> gnu.org> writes:
> 
> >> Please see the attached patch that makes Emacs recognize R6RS/R7RS
> >> library files, as well as, makes Emacs recognize their members.
> >
> > Thanks.
> 
> Thank you for your review!
> 
> > The "+++" mark means that the manuals have been updated with this
> > information.  I don't think this is the case, and we don't have any
> > manuals for the Scheme mode, right?  So this should be "---" instead.
> 
> Fixed.
> 
> >> +*** Auto-detection of Scheme library files
> >
> > Heading lines in NEWS should end with a period.
> 
> Fixed.
> 
> >> +Emacs now automatically enables the Scheme mode for R6RS library
> >> +sources ('.sls') and R7RS library definitions ('.sld').
> >
> > "source files" and "library definition files", right?
> 
> Nope.  Historically, Scheme has two *standard* library definitions,
> incompatible with each other, due to a bit "screwed up" transition from
> R5RS to R6RS and then R7RS.  While not mandated by the standards R6RS
> and R7RS standards, in the wild, these come as:
> 
> - Scheme Library Source ('.sls') for R6RS
> - Scheme Library Definition ('.sld) for R7RS
> 
> However!  I see how this can confuse the user, so I reworded both items
> in the NEWS file.  Importantly, I capitalized the names and put them
> right next to their extensions, to tie it all together.  Better?
> 
> >> ++++
> >> +*** Imenu members for R6RS and R7RS library members
> >
> > Same comments here.
> 
> Fixed.

Thanks.  I'd like to install this on the emacs-29 branch, so could you
please rebase the patch on top of emacs-29 and resubmit?




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#54704; Package emacs. (Tue, 27 Dec 2022 00:49:01 GMT) Full text and rfc822 format available.

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

From: Rudolf Adamkovič <salutis <at> me.com>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 54704 <at> debbugs.gnu.org
Subject: Re: bug#54704: [PATCH] 29.0.50; Broken code assistance for Scheme
 libraries
Date: Tue, 27 Dec 2022 01:48:34 +0100
[Message part 1 (text/plain, inline)]
Eli Zaretskii <eliz <at> gnu.org> writes:

> Thanks.

Thank you!

> I'd like to install this on the emacs-29 branch, so could you please
> rebase the patch on top of emacs-29 and resubmit?

Please see the attached file.

Rudy

[0001-Improve-support-for-Scheme-R6RS-and-R7RS-libraries-b.patch (text/x-patch, inline)]
From 8d3a6f2c384af04a4ae03e9d08bb183da14bf364 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Rudolf=20Adamkovi=C4=8D?= <salutis <at> me.com>
Date: Sat, 24 Dec 2022 01:00:32 +0100
Subject: [PATCH] Improve support for Scheme R6RS and R7RS libraries
 (bug#54704)

* etc/NEWS (Scheme mode): Document improved file-type auto-detection
and Imenu support for R6RS and R7RS Scheme libraries.
* lisp/files.el (auto-mode-alist): Associate the '.sls' (R6RS Scheme
Library Source) and '.sld' (R7RS Scheme Library Definition) file name
extensions with the Scheme mode.
* lisp/progmodes/scheme.el (scheme-imenu-generic-expression): Make
Imenu recognize the members nested (and so indented) inside of
'library' (R6RS) or 'define-library' (R7RS) forms.
---
 etc/NEWS                 | 13 +++++++++++++
 lisp/files.el            |  2 +-
 lisp/progmodes/scheme.el | 20 +++++++++++++-------
 3 files changed, 27 insertions(+), 8 deletions(-)

diff --git a/etc/NEWS b/etc/NEWS
index 5b804b82b7..c64db9973d 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -3055,6 +3055,19 @@ name.
 This key is now bound to 'Buffer-menu-view-other-window', which will
 view this line's buffer in View mode in another window.
 
+** Scheme mode
+
+---
+*** Auto-detection of Scheme library files.
+Emacs now automatically enables the Scheme mode when opening R6RS
+Scheme Library Source ('.sls') files and R7RS Scheme Library
+Definition ('.sld') files.
+
+---
+*** Imenu members for R6RS and R7RS library members.
+Imenu now lists the members directly nested in R6RS Scheme libraries
+('library') and R7RS libraries ('define-library').
+
 
 * New Modes and Packages in Emacs 29.1
 
diff --git a/lisp/files.el b/lisp/files.el
index f352d3a9a7..522e4fbf93 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -2850,7 +2850,7 @@ auto-mode-alist
      ("\\.emacs-places\\'" . lisp-data-mode)
      ("\\.el\\'" . emacs-lisp-mode)
      ("Project\\.ede\\'" . emacs-lisp-mode)
-     ("\\.\\(scm\\|stk\\|ss\\|sch\\)\\'" . scheme-mode)
+     ("\\.\\(scm\\|sls\\|sld\\|stk\\|ss\\|sch\\)\\'" . scheme-mode)
      ("\\.l\\'" . lisp-mode)
      ("\\.li?sp\\'" . lisp-mode)
      ("\\.[fF]\\'" . fortran-mode)
diff --git a/lisp/progmodes/scheme.el b/lisp/progmodes/scheme.el
index 8454f24356..f45d799252 100644
--- a/lisp/progmodes/scheme.el
+++ b/lisp/progmodes/scheme.el
@@ -115,7 +115,8 @@ 'scheme-mode-abbrev-table
 
 (defvar scheme-imenu-generic-expression
   `((nil
-     ,(rx bol "(define"
+     ,(rx bol (zero-or-more space)
+          "(define"
           (zero-or-one "*")
           (zero-or-one "-public")
           (one-or-more space)
@@ -123,36 +124,41 @@ scheme-imenu-generic-expression
           (group (one-or-more (or word (syntax symbol)))))
      1)
     ("Methods"
-     ,(rx bol "(define-"
+     ,(rx bol (zero-or-more space)
+          "(define-"
           (or "generic" "method" "accessor")
           (one-or-more space)
           (zero-or-one "(")
           (group (one-or-more (or word (syntax symbol)))))
      1)
     ("Classes"
-     ,(rx bol "(define-class"
+     ,(rx bol (zero-or-more space)
+          "(define-class"
           (one-or-more space)
           (zero-or-one "(")
           (group (one-or-more (or word (syntax symbol)))))
      1)
     ("Records"
-     ,(rx bol "(define-record-type"
+     ,(rx bol (zero-or-more space)
+          "(define-record-type"
           (zero-or-one "*")
           (one-or-more space)
           (group (one-or-more (or word (syntax symbol)))))
      1)
     ("Conditions"
-     ,(rx bol "(define-condition-type"
+     ,(rx bol (zero-or-more space)
+          "(define-condition-type"
           (one-or-more space)
           (group (one-or-more (or word (syntax symbol)))))
      1)
     ("Modules"
-     ,(rx bol "(define-module"
+     ,(rx bol (zero-or-more space)
+          "(define-module"
           (one-or-more space)
           (group "(" (one-or-more any) ")"))
      1)
     ("Macros"
-     ,(rx bol "("
+     ,(rx bol (zero-or-more space) "("
           (or (and "defmacro"
                    (zero-or-one "*")
                    (zero-or-one "-public"))
-- 
2.39.0

[Message part 3 (text/plain, inline)]
-- 
"'Contrariwise,' continued Tweedledee, 'if it was so, it might be; and
if it were so, it would be; but as it isn't, it ain't.  That's logic.'"
-- Lewis Carroll, Through the Looking Glass, 1871/1872

Rudolf Adamkovič <salutis <at> me.com> [he/him]
Studenohorská 25
84103 Bratislava
Slovakia

Reply sent to Eli Zaretskii <eliz <at> gnu.org>:
You have taken responsibility. (Tue, 27 Dec 2022 14:01:02 GMT) Full text and rfc822 format available.

Notification sent to Rudolf Adamkovič <salutis <at> me.com>:
bug acknowledged by developer. (Tue, 27 Dec 2022 14:01:02 GMT) Full text and rfc822 format available.

Message #25 received at 54704-done <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Rudolf Adamkovič <salutis <at> me.com>
Cc: 54704-done <at> debbugs.gnu.org
Subject: Re: bug#54704: [PATCH] 29.0.50; Broken code assistance for Scheme
 libraries
Date: Tue, 27 Dec 2022 16:00:11 +0200
> From: Rudolf Adamkovič <salutis <at> me.com>
> Cc: 54704 <at> debbugs.gnu.org
> Date: Tue, 27 Dec 2022 01:48:34 +0100
> 
> > I'd like to install this on the emacs-29 branch, so could you please
> > rebase the patch on top of emacs-29 and resubmit?
> 
> Please see the attached file.

Thanks, installed on the emacs-29 branch, and closing the bug.




bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Wed, 25 Jan 2023 12:24:04 GMT) Full text and rfc822 format available.

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

Previous Next


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