Subject: bug#54285: 29.0.50; Scrolling the calc help buffer

From: Rudolf Adamkovič <[email-masked]>
Date: Mon, 07 Mar 2022 08:26:14 +0100

Reproduction steps:

1. emacs -Q
2. C-x * ? ?

At this point:

- the frame splits vertically, and
- the bottom window shows help with a scroll bar.

Scenario 1:

The user starts reading help and as they reach the end of the visible
part of the buffer, they scroll the window *with the mouse wheel*.

Expected: the window scrolls, the user continues reading
Actual: Emacs beeps and closes the window

Scenario 2:

The user starts reading help and as they reach the end of the visible
part of the buffer, they scroll the window *with the scroll bar*.

Expected: the window scrolls, the user continues reading
Actual: Emacs beeps, closes the window, and tells the user:

"Wrong type argument: stringp, nil"

Scenario 3 (optional):

The user starts reading help and as they reach the end of the visible
part of the buffer, they move the cursor with C-n.

Expected: the cursor in the window advances to the next line
Actual: Emacs beeps, closes the window, and tells the user:

"No active formulas in the buffer"

Note:

Emacs should never abruptly close any help window just because the user
typed some "bad" key or performed some "bad" mouse interaction.  Doing
so frustrates the user and prevents them from learning.

Rudy

In GNU Emacs 29.0.50 (build 11, x86_64-apple-darwin21.2.0, NS appkit-2113.20 Version 12.1 (Build 21C52))
 of 2022-03-01 built on Workstation.local
Repository revision: caae254bb478ad83ba9caec6ec94b54e9abfb4c9
Repository branch: master
Windowing system distributor 'Apple', version 10.3.2113
System Description:  macOS 12.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: Org

Minor modes in effect:
  global-git-commit-mode: t
  magit-auto-revert-mode: t
  telega-root-auto-fill-mode: t
  telega-active-locations-mode: t
  telega-patrons-mode: t
  telega-mode-line-mode: t
  TeX-PDF-mode: t
  display-fill-column-indicator-mode: t
  global-hl-todo-mode: t
  global-diff-hl-mode: t
  diff-hl-mode: t
  lingua-franca-mode: t
  flyspell-mode: t
  marginalia-mode: t
  vertico-mouse-mode: t
  vertico-mode: t
  corfu-global-mode: t
  corfu-mode: t
  global-subword-mode: t
  subword-mode: t
  save-place-mode: t
  global-auto-revert-mode: t
  delete-selection-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
  global-font-lock-mode: t
  font-lock-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  size-indication-mode: t
  column-number-mode: t
  line-number-mode: t
  transient-mark-mode: t

Load-path shadows:
/Users/salutis/.emacs.d/elpa/transient-20220227.1751/transient hides /Users/salutis/src/emacs/nextstep/Emacs.app/Contents/Resources/lisp/transient

Features:
(shadow sort bbdb-message mail-extr cus-start cl-print calc-graph
calc-help calc-incom calc-keypd calc-lang calc-mode calc-rules calc-sel
calc-undo calcsel2 calc-bin calc-comb calc-cplx calc-fin calc-forms
calc-frac calc-funcs calc-map calc-math calc-mtx calc-prog calc-rewr
calc-stat calc-store calc-stuff calc-units calcalg2 calcalg3 shortdoc
calc-arith calc-embed calccomp calc-alg calc-vec calc-aent calc-menu
calc-yank calc-ext calc-misc calc calc-loaddefs calc-macs org-duration
sh-script smie executable misearch multi-isearch epa-file rcirc
bug-reference rect 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 ox-html table ox-ascii ox-publish ox consult-xref
array jsonrpc ert debug backtrace ediff ediff-merg ediff-mult ediff-wind
ediff-diff ediff-help ediff-init ediff-util 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 magit-diff smerge-mode
diff git-commit log-edit add-log magit-core magit-autorevert
magit-margin magit-transient magit-process magit-mode magit-git
magit-base which-func imenu ido magit-section modus-vivendi-theme
auth-source-pass with-editor server telega telega-obsolete
telega-tdlib-events telega-webpage emacsbug sendmail visual-fill-column
telega-root telega-info telega-chat telega-modes telega-filter
telega-sort telega-company telega-user telega-notifications
notifications telega-voip telega-ins pcase telega-folders telega-inline
telega-msg telega-tme telega-sticker telega-i18n telega-vvnote
telega-util rainbow-identifiers dired-aux color bindat telega-ffplay
telega-media telega-tdlib telega-server telega-core telega-customize
autoload lisp-mnt tar-mode arc-mode archive-mode mm-archive gnutls
network-stream url-http url-gw nsm url-cache url-auth char-fold
tramp-cmds orderless cursor-sensor preview tex-buf font-latex latex
latex-flymake flymake-proc flymake tex-ispell tex-style tex crm texmathp
tex-mode holidays hol-loaddefs diary-lib diary-loaddefs cal-iso
image-file image-converter disp-table hl-line face-remap org-habit
org-agenda org-refile display-fill-column-indicator hl-todo diff-hl
log-view pcvs-util vc-dir ewoc paredit fortune pdf-loader lingua-franca
flyspell ispell org-clock oc-csl citeproc citeproc-itemgetters
citeproc-biblatex citeproc-bibtex parsebib 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 f citeproc-rt citeproc-lib citeproc-s s let-alist queue
dash ob-sqlite ob-sql 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
consult-vertico consult recentf tree-widget marginalia vertico-mouse
vertico corfu cap-words superword subword saveplace autorevert
filenotify vc-mtn vc-hg vc-bzr vc-src vc-sccs vc-svn vc-cvs vc-rcs vc
modus-operandi-theme modus-themes delsel diminish bbdb bbdb-site
timezone geiser-guile tramp tramp-loaddefs trampver tramp-integration
cus-edit cus-load files-x tramp-compat shell ls-lisp info-look geiser
geiser-repl geiser-compile geiser-debug compile transient comp comp-cstr
warnings edmacro kmacro geiser-image geiser-company geiser-doc
geiser-menu geiser-edit etags fileloop xref project geiser-completion
geiser-autodoc geiser-eval geiser-connection tq geiser-syntax scheme
geiser-impl help-fns radix-tree geiser-log geiser-popup view
geiser-custom geiser-base savehist exec-path-from-shell finder-inf
elfeed-link elfeed-show elfeed-search elfeed-csv elfeed elfeed-curl
elfeed-log xml-query bookmark pp elfeed-db elfeed-lib vc-git diff-mode
vc-dispatcher ffap org-element avl-tree generator ol-eww eww xdg
url-queue thingatpt mm-url ol-rmail ol-mhe ol-irc ol-info ol-gnus
nnselect gnus-art mm-uu mml2015 mm-view mml-smime smime dig gnus-sum shr
pixel-fill kinsoku url-file url-dired svg dom gnus-group gnus-undo
gnus-start gnus-dbus dbus xml gnus-cloud nnimap nnmail mail-source utf7
netrc nnoo parse-time gnus-spec gnus-int gnus-range message yank-media
rmc puny rfc822 mml mml-sec epa derived epg rfc6068 epg-config mm-decode
mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045 ietf-drums
mailabbrev gmm-utils mailheader gnus-win gnus nnheader gnus-util
text-property-search mail-utils range mm-util mail-prsvr wid-edit
ol-docview doc-view jka-compr image-mode exif dired dired-loaddefs
ol-bibtex ol-bbdb ol-w3m ol-doi org-link-doi cl-extra help-mode 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 ring org-list
org-faces org-entities noutline outline easy-mmode org-version
ob-emacs-lisp ob-core ob-eval org-table oc-basic bibtex iso8601
time-date ol rx org-keys oc org-compat advice org-macs org-loaddefs
format-spec find-func cal-menu calendar cal-loaddefs tex-site 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 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 simple abbrev obarray
cl-preloaded nadvice 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 2774640 188842)
 (symbols 48 71586 6)
 (strings 32 434479 17036)
 (string-bytes 1 12898038)
 (vectors 16 136130)
 (vector-slots 8 2905087 140047)
 (floats 8 8281 837)
 (intervals 56 194131 9874)
 (buffers 992 50))

-- 
"The introduction of suitable abstractions is our only mental aid to
organize and master complexity."
-- Edsger Wybe Dijkstra, 1930-2002

Rudolf Adamkovič <[email-masked]> [he/him]
Studenohorská 25
84103 Bratislava
Slovakia