unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#54704: 29.0.50; Broken code assistance for Scheme libraries
@ 2022-04-04  5:33 Rudolf Adamkovič via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2022-12-24  0:31 ` bug#54704: [PATCH] " Rudolf Adamkovič via Bug reports for GNU Emacs, the Swiss army knife of text editors
  0 siblings, 1 reply; 7+ messages in thread
From: Rudolf Adamkovič via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2022-04-04  5:33 UTC (permalink / raw)
  To: 54704


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@me.com> [he/him]
Studenohorská 25
84103 Bratislava
Slovakia





^ permalink raw reply	[flat|nested] 7+ messages in thread

* bug#54704: [PATCH] 29.0.50; Broken code assistance for Scheme libraries
  2022-04-04  5:33 bug#54704: 29.0.50; Broken code assistance for Scheme libraries Rudolf Adamkovič via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2022-12-24  0:31 ` Rudolf Adamkovič via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2022-12-24 12:15   ` Eli Zaretskii
  0 siblings, 1 reply; 7+ messages in thread
From: Rudolf Adamkovič via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2022-12-24  0:31 UTC (permalink / raw)
  To: 54704

[-- Attachment #1: Type: text/plain, Size: 541 bytes --]

Rudolf Adamkovič via "Bug reports for GNU Emacs, the Swiss army knife of
text editors" <bug-gnu-emacs@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


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-Improve-support-for-Scheme-R6RS-and-R7RS-libraries-b.patch --]
[-- Type: text/x-patch, Size: 4216 bytes --]

From 858a6d376f94616b0ec347ed36487befb0871482 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Rudolf=20Adamkovi=C4=8D?= <salutis@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').
+
 \f
 * 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


[-- Attachment #3: Type: text/plain, Size: 329 bytes --]

-- 
"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@me.com> [he/him]
Studenohorská 25
84103 Bratislava
Slovakia

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* bug#54704: [PATCH] 29.0.50; Broken code assistance for Scheme libraries
  2022-12-24  0:31 ` bug#54704: [PATCH] " Rudolf Adamkovič via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2022-12-24 12:15   ` Eli Zaretskii
  2022-12-24 22:32     ` Rudolf Adamkovič via Bug reports for GNU Emacs, the Swiss army knife of text editors
  0 siblings, 1 reply; 7+ messages in thread
From: Eli Zaretskii @ 2022-12-24 12:15 UTC (permalink / raw)
  To: Rudolf Adamkovič; +Cc: 54704

> 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@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.





^ permalink raw reply	[flat|nested] 7+ messages in thread

* bug#54704: [PATCH] 29.0.50; Broken code assistance for Scheme libraries
  2022-12-24 12:15   ` Eli Zaretskii
@ 2022-12-24 22:32     ` Rudolf Adamkovič via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2022-12-26 12:49       ` Eli Zaretskii
  0 siblings, 1 reply; 7+ messages in thread
From: Rudolf Adamkovič via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2022-12-24 22:32 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 54704

[-- Attachment #1: Type: text/plain, Size: 1388 bytes --]

Eli Zaretskii <eliz@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


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-Improve-support-for-Scheme-R6RS-and-R7RS-libraries-b.patch --]
[-- Type: text/x-patch, Size: 4204 bytes --]

From 0cd5b236981fa1dda92fd63da0017ff288fd50b0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Rudolf=20Adamkovi=C4=8D?= <salutis@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').
+
 \f
 * 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


[-- Attachment #3: Type: text/plain, Size: 257 bytes --]

-- 
"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@me.com> [he/him]
Studenohorská 25
84103 Bratislava
Slovakia

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* bug#54704: [PATCH] 29.0.50; Broken code assistance for Scheme libraries
  2022-12-24 22:32     ` Rudolf Adamkovič via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2022-12-26 12:49       ` Eli Zaretskii
  2022-12-27  0:48         ` Rudolf Adamkovič via Bug reports for GNU Emacs, the Swiss army knife of text editors
  0 siblings, 1 reply; 7+ messages in thread
From: Eli Zaretskii @ 2022-12-26 12:49 UTC (permalink / raw)
  To: Rudolf Adamkovič; +Cc: 54704

> From: Rudolf Adamkovič <salutis@me.com>
> Cc: 54704@debbugs.gnu.org
> Date: Sat, 24 Dec 2022 23:32:21 +0100
> 
> Eli Zaretskii <eliz@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?





^ permalink raw reply	[flat|nested] 7+ messages in thread

* bug#54704: [PATCH] 29.0.50; Broken code assistance for Scheme libraries
  2022-12-26 12:49       ` Eli Zaretskii
@ 2022-12-27  0:48         ` Rudolf Adamkovič via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2022-12-27 14:00           ` Eli Zaretskii
  0 siblings, 1 reply; 7+ messages in thread
From: Rudolf Adamkovič via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2022-12-27  0:48 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 54704

[-- Attachment #1: Type: text/plain, Size: 222 bytes --]

Eli Zaretskii <eliz@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


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-Improve-support-for-Scheme-R6RS-and-R7RS-libraries-b.patch --]
[-- Type: text/x-patch, Size: 4092 bytes --]

From 8d3a6f2c384af04a4ae03e9d08bb183da14bf364 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Rudolf=20Adamkovi=C4=8D?= <salutis@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').
+
 \f
 * 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


[-- Attachment #3: Type: text/plain, Size: 300 bytes --]

-- 
"'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@me.com> [he/him]
Studenohorská 25
84103 Bratislava
Slovakia

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* bug#54704: [PATCH] 29.0.50; Broken code assistance for Scheme libraries
  2022-12-27  0:48         ` Rudolf Adamkovič via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2022-12-27 14:00           ` Eli Zaretskii
  0 siblings, 0 replies; 7+ messages in thread
From: Eli Zaretskii @ 2022-12-27 14:00 UTC (permalink / raw)
  To: Rudolf Adamkovič; +Cc: 54704-done

> From: Rudolf Adamkovič <salutis@me.com>
> Cc: 54704@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.





^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2022-12-27 14:00 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-04-04  5:33 bug#54704: 29.0.50; Broken code assistance for Scheme libraries Rudolf Adamkovič via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-12-24  0:31 ` bug#54704: [PATCH] " Rudolf Adamkovič via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-12-24 12:15   ` Eli Zaretskii
2022-12-24 22:32     ` Rudolf Adamkovič via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-12-26 12:49       ` Eli Zaretskii
2022-12-27  0:48         ` Rudolf Adamkovič via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-12-27 14:00           ` Eli Zaretskii

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).