unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#73722: 30.0.91; error calling eshell/clear with no argument
@ 2024-10-09 17:33 Christopher Howard
  2024-10-15 17:00 ` Jim Porter
  0 siblings, 1 reply; 8+ messages in thread
From: Christopher Howard @ 2024-10-09 17:33 UTC (permalink / raw)
  To: 73722


(same with or without emacs -Q)
1. M-x eshell
2. clear <return>

Gives error "wrong-type-argument listp progn".

I can run "clear 1" to include the scrollback parameter. I can also do (eshell/clear nil) and that does a non-destructive scrollback.

Here is the backtrace from entering "clear" all by itself:

``` bt
Debugger entered--Lisp error: (wrong-type-argument listp progn)
  cdr(progn)
  eshell-resume-eval((nil (let ((eshell-current-handles '[nil (... t) (... t)]) eshell-current-subjob-p) (progn 'nil progn)) nil))
  eshell-eval-command((let ((eshell-current-handles '[nil ((... . 2) t) ((... . 2) t)]) eshell-current-subjob-p) (progn 'nil progn)) "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n")
  eshell-send-input()
  eshell/clear()
  apply(eshell/clear nil)
  eshell-exec-lisp(eshell-print-maybe-n eshell-error-maybe-n eshell/clear nil nil)
  eshell-lisp-command(eshell/clear nil)
  eshell-plain-command("clear" nil)
  eshell-named-command("clear")
  (unwind-protect (eshell-named-command "clear") (mapc #'funcall eshell-this-command-hook))
  (let ((eshell-this-command-hook '(ignore))) (unwind-protect (eshell-named-command "clear") (mapc #'funcall eshell-this-command-hook)))
  (condition-case err (let ((eshell-this-command-hook '(ignore))) (unwind-protect (eshell-named-command "clear") (mapc #'funcall eshell-this-command-hook))) ((debug error) (eshell-errorn (error-message-string err)) (eshell-close-handles 1)))
  (condition-case-unless-debug err (let ((eshell-this-command-hook '(ignore))) (unwind-protect (eshell-named-command "clear") (mapc #'funcall eshell-this-command-hook))) (error (eshell-errorn (error-message-string err)) (eshell-close-handles 1)))
  (if eshell-handle-errors (condition-case-unless-debug err (let ((eshell-this-command-hook '(ignore))) (unwind-protect (eshell-named-command "clear") (mapc #'funcall eshell-this-command-hook))) (error (eshell-errorn (error-message-string err)) (eshell-close-handles 1))) (let ((eshell-this-command-hook '(ignore))) (unwind-protect (eshell-named-command "clear") (mapc #'funcall eshell-this-command-hook))))
  (eshell-condition-case err (let ((eshell-this-command-hook '(ignore))) (unwind-protect (eshell-named-command "clear") (mapc #'funcall eshell-this-command-hook))) (error (eshell-errorn (error-message-string err)) (eshell-close-handles 1)))
  (eshell-trap-errors (eshell-named-command "clear"))
  (let ((eshell-current-handles (eshell-duplicate-handles eshell-current-handles t))) (eshell-trap-errors (eshell-named-command "clear")))
  (eshell-with-copied-handles (eshell-trap-errors (eshell-named-command "clear")) t)
  (progn (eshell-with-copied-handles (eshell-trap-errors (eshell-named-command "clear")) t))
  (unwind-protect (progn (eshell-with-copied-handles (eshell-trap-errors (eshell-named-command "clear")) t)) (run-hooks 'eshell-post-command-hook))
  (progn (run-hooks 'eshell-pre-command-hook) (unwind-protect (progn (eshell-with-copied-handles (eshell-trap-errors (eshell-named-command "clear")) t)) (run-hooks 'eshell-post-command-hook)))
  (let ((eshell-current-handles (eshell-create-handles t 'append)) eshell-current-subjob-p) (progn (run-hooks 'eshell-pre-command-hook) (unwind-protect (progn (eshell-with-copied-handles (eshell-trap-errors (eshell-named-command "clear")) t)) (run-hooks 'eshell-post-command-hook))))
  (eshell-commands (progn (run-hooks 'eshell-pre-command-hook) (unwind-protect (progn (eshell-with-copied-handles (eshell-trap-errors (eshell-named-command "clear")) t)) (run-hooks 'eshell-post-command-hook))))
  eval((eshell-commands (progn (run-hooks 'eshell-pre-command-hook) (unwind-protect (progn (eshell-with-copied-handles (eshell-trap-errors (eshell-named-command "clear")) t)) (run-hooks 'eshell-post-command-hook)))))
  eshell-send-input(nil)
  funcall-interactively(eshell-send-input nil)
  call-interactively(eshell-send-input nil nil)
  command-execute(eshell-send-input)
```


In GNU Emacs 30.0.91 (build 12, x86_64-pc-linux-gnu, GTK+ Version
 3.24.41, cairo version 1.18.0) of 2024-10-09 built on theoden
Repository revision: f520008744b1eb71accded4108888d1f2055402e
Repository branch: emacs-30
Windowing system distributor 'The X.Org Foundation', version 11.0.12101012
System Description: Guix System

Configured using:
 'configure --prefix=/home/christopher/local/emacs 'CFLAGS=-O0 -g3'
 PKG_CONFIG_PATH=/gnu/store/f335yc4x4ps0qalm4hafy0dggsfczfkj-profile/lib/pkgconfig:/gnu/store/f335yc4x4ps0qalm4hafy0dggsfczfkj-profile/share/pkgconfig:/home/christopher/.guix-home/profile/lib/pkgconfig:/home/christopher/.guix-home/profile/share/pkgconfig:/home/christopher/.guix-profile/lib/pkgconfig:/home/christopher/.guix-profile/share/pkgconfig'

Configured features:
ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ JPEG
LCMS2 LIBSELINUX LIBXML2 MODULES NOTIFY INOTIFY PDUMPER PNG RSVG SECCOMP
SOUND SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS X11 XDBE XIM XINPUT2 XPM
GTK3 ZLIB

Important settings:
  value of $EMACSLOADPATH: /home/christopher/local/emacs/share/emacs/30.0.91/lisp:/home/christopher/.guix-home/profile/share/emacs/site-lisp
  value of $EMACSNATIVELOADPATH: /home/christopher/.guix-home/profile/lib/emacs/native-site-lisp:/home/christopher/.guix-profile/lib/emacs/native-site-lisp
  value of $LANG: en_US.utf8
  locale-coding-system: utf-8-unix

Major mode: Info

Minor modes in effect:
  pdf-occur-global-minor-mode: t
  global-completion-preview-mode: t
  rcirc-track-minor-mode: t
  roam-track-minor-mode: t
  org-roam-db-autosync-mode: t
  global-centered-cursor-mode: t
  centered-cursor-mode: t
  server-mode: t
  helm-mode: t
  helm-minibuffer-history-mode: t
  async-bytecomp-package-mode: t
  straight-use-package-mode: t
  straight-package-neutering-mode: t
  minibuffer-depth-indicate-mode: t
  global-display-line-numbers-mode: t
  display-line-numbers-mode: t
  cl-old-struct-compat-mode: 1
  tooltip-mode: t
  global-eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  file-name-shadow-mode: t
  isearch-fold-quotes-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  minibuffer-regexp-mode: t
  buffer-read-only: 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:
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/net/soap-client hides /gnu/store/8pr1yy7pcai1g1r52c2xcha58nmbi32a-emacs-soap-client-3.2.3/share/emacs/site-lisp/soap-client-3.2.3/soap-client
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/net/soap-inspect hides /gnu/store/8pr1yy7pcai1g1r52c2xcha58nmbi32a-emacs-soap-client-3.2.3/share/emacs/site-lisp/soap-client-3.2.3/soap-inspect
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/emacs-lisp/compat hides /gnu/store/5fz4hfsqgh2rgdz2gxpxsnf6ak2nbsnx-emacs-compat-30.0.0.0/share/emacs/site-lisp/compat-30.0.0.0/compat
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/progmodes/eglot hides /gnu/store/dc8j46wg6msy43sm8473i2ghb0kkqzrm-emacs-eglot-1.17/share/emacs/site-lisp/eglot-1.17/eglot
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/emacs-lisp/eldoc hides /gnu/store/yzh97y7djcn0zylrdqzcq0k3kziwkh3c-emacs-eldoc-1.15.0/share/emacs/site-lisp/eldoc-1.15.0/eldoc
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/external-completion hides /gnu/store/w2s88x6rgc8cripdd662pxfh0wdfks2x-emacs-external-completion-0.1/share/emacs/site-lisp/external-completion-0.1/external-completion
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/jsonrpc hides /gnu/store/68sh2hccihmj9skgmb3gcc8nr3jhnn9k-emacs-jsonrpc-1.0.25/share/emacs/site-lisp/jsonrpc-1.0.25/jsonrpc
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/progmodes/project hides /gnu/store/rhmkc30ad8j5dhl9yws1s2byyqs84yq0-emacs-project-0.11.1/share/emacs/site-lisp/project-0.11.1/project
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/progmodes/xref hides /gnu/store/612wcw3lg8gxwsigqkm8b72hj3pnwr8x-emacs-xref-1.7.0/share/emacs/site-lisp/xref-1.7.0/xref
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/emacs-lisp/seq hides /gnu/store/prl5nb68h3dj1wx4jivdls5d8f8p9jjc-emacs-seq-2.24/share/emacs/site-lisp/seq-2.24/seq
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/org-element-ast hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/org-element-ast
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/ob-lisp hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/ob-lisp
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/ob-awk hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/ob-awk
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/ol-mhe hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/ol-mhe
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/ob-haskell hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/ob-haskell
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/org-pcomplete hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/org-pcomplete
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/ob-makefile hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/ob-makefile
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/ob-processing hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/ob-processing
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/ob-sql hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/ob-sql
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/org-id hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/org-id
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/org-refile hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/org-refile
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/ob-lilypond hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/ob-lilypond
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/ox-html hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/ox-html
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/oc hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/oc
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/ob-octave hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/ob-octave
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/ox-texinfo hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/ox-texinfo
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/org-entities hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/org-entities
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/ob-C hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/ob-C
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/ol-w3m hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/ol-w3m
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/org-archive hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/org-archive
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/ol-doi hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/ol-doi
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/ol-eww hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/ol-eww
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/ox-man hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/ox-man
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/org-mobile hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/org-mobile
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/ol-gnus hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/ol-gnus
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/ol-bbdb hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/ol-bbdb
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/ox-koma-letter hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/ox-koma-letter
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/org hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/org
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/ob-maxima hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/ob-maxima
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/ob-css hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/ob-css
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/org-element hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/org-element
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/ox hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/ox
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/org-datetree hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/org-datetree
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/org-tempo hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/org-tempo
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/org-keys hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/org-keys
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/ob-js hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/ob-js
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/ob-emacs-lisp hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/ob-emacs-lisp
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/org-lint hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/org-lint
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/org-habit hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/org-habit
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/org-crypt hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/org-crypt
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/org-attach hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/org-attach
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/ob-plantuml hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/ob-plantuml
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/org-agenda hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/org-agenda
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/org-indent hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/org-indent
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/org-timer hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/org-timer
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/ox-beamer hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/ox-beamer
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/org-macs hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/org-macs
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/ob-exp hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/ob-exp
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/org-persist hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/org-persist
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/ob-eshell hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/ob-eshell
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/ox-icalendar hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/ox-icalendar
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/ob-scheme hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/ob-scheme
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/oc-bibtex hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/oc-bibtex
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/ob-screen hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/ob-screen
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/ob-matlab hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/ob-matlab
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/org-num hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/org-num
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/org-list hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/org-list
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/oc-csl hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/oc-csl
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/ob-clojure hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/ob-clojure
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/ol hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/ol
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/ob-sass hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/ob-sass
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/ob-ditaa hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/ob-ditaa
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/org-faces hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/org-faces
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/ob-sqlite hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/ob-sqlite
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/ob-table hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/ob-table
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/ox-latex hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/ox-latex
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/ox-ascii hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/ox-ascii
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/ob-perl hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/ob-perl
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/org-mouse hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/org-mouse
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/org-macro hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/org-macro
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/org-goto hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/org-goto
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/org-duration hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/org-duration
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/ox-org hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/ox-org
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/ob-python hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/ob-python
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/org-inlinetask hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/org-inlinetask
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/org-fold-core hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/org-fold-core
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/ol-eshell hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/ol-eshell
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/org-cycle hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/org-cycle
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/org-capture hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/org-capture
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/ob-forth hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/ob-forth
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/org-feed hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/org-feed
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/ob-lob hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/ob-lob
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/ol-rmail hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/ol-rmail
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/org-clock hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/org-clock
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/ol-bibtex hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/ol-bibtex
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/ob-julia hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/ob-julia
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/ob-sed hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/ob-sed
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/org-table hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/org-table
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/ob-ref hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/ob-ref
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/org-compat hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/org-compat
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/ob-lua hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/ob-lua
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/ob-comint hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/ob-comint
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/org-colview hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/org-colview
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/ob-eval hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/ob-eval
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/ox-odt hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/ox-odt
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/ob-fortran hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/ob-fortran
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/ob-shell hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/ob-shell
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/org-version hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/org-version
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/ob hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/ob
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/ol-docview hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/ol-docview
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/oc-basic hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/oc-basic
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/ob-calc hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/ob-calc
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/oc-biblatex hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/oc-biblatex
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/ob-R hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/ob-R
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/ox-publish hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/ox-publish
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/ob-dot hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/ob-dot
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/ob-tangle hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/ob-tangle
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/ob-ocaml hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/ob-ocaml
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/org-attach-git hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/org-attach-git
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/ox-md hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/ox-md
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/org-loaddefs hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/org-loaddefs
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/ob-groovy hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/ob-groovy
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/org-ctags hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/org-ctags
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/ob-ruby hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/ob-ruby
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/org-fold hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/org-fold
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/org-protocol hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/org-protocol
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/oc-natbib hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/oc-natbib
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/ob-org hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/ob-org
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/ol-man hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/ol-man
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/ol-info hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/ol-info
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/org-footnote hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/org-footnote
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/org-plot hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/org-plot
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/ol-irc hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/ol-irc
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/ob-core hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/ob-core
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/ob-java hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/ob-java
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/ob-latex hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/ob-latex
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/ob-gnuplot hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/ob-gnuplot
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/org/org-src hides /gnu/store/f304gcja6dc9b48p3gsbbpnxsgg07pc4-emacs-org-9.7.11/share/emacs/site-lisp/org-9.7.11/org-src
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/transient hides /gnu/store/0v0vh9km8vmylcb9crf52l8rw933c1m6-emacs-transient-0.7.5/share/emacs/site-lisp/transient-0.7.5/transient
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/progmodes/peg hides /gnu/store/ak6hlqd0zb5ij1zqrfvqy2p06iigqixq-emacs-peg-1.0.1/share/emacs/site-lisp/peg-1.0.1/peg
/home/christopher/.emacs.d/straight/build/straight/straight hides /gnu/store/5mynqak4gavxcjpkjdk96a75pqxd2ki3-emacs-straight-el-0-3.b3760f5/share/emacs/site-lisp/straight-el-0-3.b3760f5/straight
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/indent hides /gnu/store/5mynqak4gavxcjpkjdk96a75pqxd2ki3-emacs-straight-el-0-3.b3760f5/share/emacs/site-lisp/straight-el-0-3.b3760f5/indent
/home/christopher/.emacs.d/straight/build/straight/straight-x hides /gnu/store/5mynqak4gavxcjpkjdk96a75pqxd2ki3-emacs-straight-el-0-3.b3760f5/share/emacs/site-lisp/straight-el-0-3.b3760f5/straight-x
/home/christopher/.emacs.d/straight/build/straight/straight-ert-print-hack hides /gnu/store/5mynqak4gavxcjpkjdk96a75pqxd2ki3-emacs-straight-el-0-3.b3760f5/share/emacs/site-lisp/straight-el-0-3.b3760f5/straight-ert-print-hack
/home/christopher/local/emacs/share/emacs/30.0.91/lisp/net/sasl hides /gnu/store/aq7g7fgljahgnibnsnj1z9ibpnnd2brz-emacs-flim-lb-1.14.9-143.23bb29d/share/emacs/site-lisp/flim-lb-1.14.9-143.23bb29d/sasl
/gnu/store/5mynqak4gavxcjpkjdk96a75pqxd2ki3-emacs-straight-el-0-3.b3760f5/share/emacs/site-lisp/straight-el-0-3.b3760f5/install hides /gnu/store/nh3vfsdyc82vp2l46v7nkad0zr1f7l33-emacs-apel-lb-10.8-81.82eb232/share/emacs/site-lisp/apel-lb-10.8-81.82eb232/install

Features:
(shadow sort bbdb-message face-remap mail-extr emacsbug misearch
multi-isearch tramp-cache time-stamp tramp-sh shortdoc comp-common
project ffap pcmpl-unix vc-git diff-mode track-changes vc-dispatcher
dabbrev tabify cus-start help-fns cl-print em-unix em-term term
disp-table ehelp em-script em-prompt em-pred em-ls em-hist em-glob
em-extpipe em-cmpl em-dirs em-basic em-banner em-alias esh-mode esh-var
eshell esh-cmd mule-util winner tramp-archive tramp-gvfs helm-command
helm-elisp helm-eval helm-info 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 let-alist pdf-misc imenu pdf-tools compile cus-edit pdf-view
jka-compr pdf-cache pdf-info tq pdf-util pdf-macs engine-mode discomfort
debase-objectmanager debase dbus eieio-base completion-preview rcirc
bbdb bbdb-site timezone text-decoration s names edebug debug backtrace
org-roam-protocol org-protocol org-roam-migrate org-roam-log
org-roam-mode org-roam-capture org-roam-id org-roam-node org-roam-db
emacsql-sqlite-builtin sqlite org-roam-utils org-roam-compat org-roam
org-capture org-element org-persist org-attach org-id org-refile
org-element-ast inline org ob ob-tangle ob-ref ob-lob ob-table ob-exp
org-macro org-src sh-script smie treesit executable ob-comint
org-pcomplete org-list org-footnote org-faces org-entities noutline
outline org-version ob-emacs-lisp ob-core ob-eval org-cycle org-table ol
org-fold org-fold-core org-keys oc org-loaddefs find-func cal-menu
calendar cal-loaddefs org-compat org-macs emacsql-sqlite
emacsql-sqlite-common emacsql emacsql-compiler magit-section
cursor-sensor compat dash centered-cursor-mode
centered-cursor-mode-autoloads hyperclim printing ps-print
ps-print-loaddefs lpr esh-ext esh-proc esh-opt esh-io esh-arg esh-module
esh-module-loaddefs esh-util elfeed-show elfeed-search wid-edit bookmark
pp message sendmail yank-media rfc822 mml mml-sec epa derived 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 shr text-property-search pixel-fill
kinsoku puny svg dom elfeed-csv elfeed elfeed-curl elfeed-log elfeed-db
elfeed-lib avl-tree generator url-queue url-file xml-query xml dired-x
ascii-table-autoloads server helm-mode helm-misc helm-files image-dired
image-dired-tags image-dired-external image-dired-util image-mode dired
dired-loaddefs exif filenotify helm-buffers all-the-icons
all-the-icons-faces data-material data-weathericons data-octicons
data-fileicons data-faicons data-alltheicons helm-occur helm-tags
helm-locate helm-grep helm-regexp helm-utils helm-help helm-types helm
helm-global-bindings helm-easymenu edmacro kmacro helm-core
async-bytecomp helm-source helm-multi-match helm-lib async
straight-autoloads cl-extra straight info loaddefs-gen lisp-mnt
radix-tree easy-mmode pcase green-phosphor-theme mb-depth
display-line-numbers crux tramp trampver tramp-integration files-x
tramp-message help-mode tramp-compat xdg shell pcomplete comint ansi-osc
ring parse-time iso8601 time-date format-spec ansi-color tramp-loaddefs
thingatpt cus-load mu4e-autoloads yeetube-autoloads xmlgen-autoloads
xterm-color-autoloads wttrin-autoloads oauth2-autoloads
apel-lb-autoloads flim-lb-autoloads semi-epg-autoloads unfill-autoloads
tmr-autoloads rainbow-identifiers-autoloads company-autoloads
visual-fill-column-autoloads telega-autoloads straight-el-autoloads
srfi-autoloads helm-slime-autoloads macrostep-autoloads slime-autoloads
restart-emacs-autoloads puni-autoloads poke-mode-autoloads
placeholder-autoloads pdfgrep-autoloads tablist-autoloads
pdf-tools-autoloads password-generator-autoloads paredit-autoloads
sqlite3-api-autoloads pg-autoloads finalize-autoloads emacsql-autoloads
org-roam-autoloads peg-autoloads ov-autoloads ht-autoloads
org-super-agenda-autoloads org-ql-autoloads org-present-autoloads
org-noter-autoloads org-modern-autoloads hydra-autoloads
org-fc-autoloads ox-gemini-autoloads osm-autoloads
org-contacts-autoloads orderless-autoloads nssh-autoloads kv-autoloads
nov-el-autoloads names-autoloads advice memory-usage-autoloads
math-preview-autoloads persist-autoloads ts-autoloads deferred-autoloads
request-autoloads mastodon-autoloads markdown-mode-autoloads
transient-autoloads magit-autoloads m-buffer-el-autoloads
helm-org-contacts-autoloads magit-popup-autoloads
edit-indirect-autoloads bui-autoloads guix-autoloads rx gemini-autoloads
geiser-guile-autoloads geiser-autoloads srv-autoloads hexrgb-autoloads
fsm-autoloads jabber-autoloads inspector-autoloads htmlize-autoloads
shut-up-autoloads loop-autoloads list-utils-autoloads
elisp-refs-autoloads helpful-autoloads helm-wordnut-autoloads
password-store-autoloads helm-pass-autoloads helm-org-rifle-autoloads
popup-autoloads async-autoloads helm-autoloads f3-autoloads
expand-region-autoloads everywhere-autoloads eshell-z-autoloads
engine-mode-autoloads elpher-autoloads elfeed-autoloads eldev-autoloads
seq-autoloads xref-autoloads project-autoloads jsonrpc-autoloads
external-completion-autoloads eldoc-autoloads eglot-autoloads
ed-mode-autoloads compat-autoloads eat-autoloads debase-autoloads
discomfort-autoloads soap-client-autoloads debbugs-autoloads
daemons-autoloads crux-autoloads casual-info-autoloads
casual-dired-autoloads casual-lib-autoloads casual-calc-autoloads
browse-kill-ring-autoloads eimp-autoloads blimp-autoloads bbdb-autoloads
memoize-autoloads dash-autoloads s-autoloads f-autoloads
all-the-icons-autoloads 0x0-autoloads guix-emacs annotate-autoloads
package browse-url url url-proxy url-privacy url-expand url-methods
url-history url-cookie generate-lisp-file url-domsuf url-util mailcap
url-handlers url-parse auth-source cl-seq eieio eieio-core cl-macs icons
password-cache json subr-x map byte-opt gv bytecomp byte-compile
url-vars cl-loaddefs cl-lib rmc iso-transl tooltip cconv eldoc paren
electric uniquify ediff-hook vc-hooks lisp-float-type elisp-mode mwheel
term/x-win x-win term/common-win x-dnd touch-screen tool-bar dnd fontset
image regexp-opt fringe tabulated-list replace newcomment text-mode
lisp-mode prog-mode register page tab-bar menu-bar rfn-eshadow isearch
easymenu timer select scroll-bar mouse jit-lock font-lock syntax
font-core term/tty-colors frame minibuffer nadvice seq simple cl-generic
indonesian philippine cham georgian utf-8-lang misc-lang vietnamese
tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek
romanian slovak czech european ethiopic indian cyrillic chinese
composite emoji-zwj charscript charprop case-table epa-hook
jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button loaddefs
theme-loaddefs faces cus-face macroexp files window text-properties
overlay sha1 md5 base64 format env code-pages mule custom widget keymap
hashtable-print-readable backquote threads dbusbind inotify lcms2
dynamic-setting system-font-setting font-render-setting cairo gtk
x-toolkit xinput2 x multi-tty move-toolbar make-network-process emacs)

Memory information:
((conses 16 446535 114646) (symbols 48 36736 0)
 (strings 32 129084 7285) (string-bytes 1 3566601) (vectors 16 68312)
 (vector-slots 8 1343061 207025) (floats 8 907 818)
 (intervals 56 5928 1316) (buffers 984 38))

-- 
📛 Christopher Howard
🚀 gemini://gem.librehacker.com
🌐 http://gem.librehacker.com

בראשית ברא אלהים את השמים ואת הארץ





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

* bug#73722: 30.0.91; error calling eshell/clear with no argument
  2024-10-09 17:33 bug#73722: 30.0.91; error calling eshell/clear with no argument Christopher Howard
@ 2024-10-15 17:00 ` Jim Porter
  2024-10-15 18:04   ` Eli Zaretskii
  0 siblings, 1 reply; 8+ messages in thread
From: Jim Porter @ 2024-10-15 17:00 UTC (permalink / raw)
  To: Christopher Howard, 73722

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

On 10/9/2024 10:33 AM, Christopher Howard wrote:
> 
> (same with or without emacs -Q)
> 1. M-x eshell
> 2. clear <return>
> 
> Gives error "wrong-type-argument listp progn".

I think this is probably the result of some improvements I've made to 
Eshell's command evaluator that revealed a latent bug in 'eshell/clear' 
(it actually runs a *second* Eshell command consisting only of newlines, 
which shouldn't be necessary).

The actual error reported here is fixed in Emacs 31; in Emacs 30, 
'eshell-do-eval' mis-evaluates an empty '(progn)', but that generally 
shouldn't occur except in odd cases like this. The "clear" command still 
doesn't *work* correctly in Emacs 31 though.

Attached is the smallest fix I could come up with for this. This is made 
somewhat more complex due to 'eshell/clear' also being used as an 
interactive Emacs-level command. The two forms ("clear" at an Eshell 
prompt and "M-x eshell/clear" in Emacs) should probably be separate 
functions entirely since they behave differently regarding the current 
prompt, but for the sake of compatibility, let's keep them fused 
together for now...

Eli, does this look ok for the release branch? It fixes a regression 
from Emacs 29 and adds a pair of regression tests to prevent future 
breakage. (If and when this merges, I'll see about a more-thorough fix 
for the master branch too.)

[-- Attachment #2: 0001-Fix-error-when-calling-clear-in-Eshell.patch --]
[-- Type: text/plain, Size: 2853 bytes --]

From 4c868dbad546b604076ab7c33839b4d3b5919f32 Mon Sep 17 00:00:00 2001
From: Jim Porter <jporterbugs@gmail.com>
Date: Thu, 10 Oct 2024 21:03:45 -0700
Subject: [PATCH] Fix error when calling "clear" in Eshell.

* lisp/eshell/esh-mode.el (eshell/clear): Fix error, and improve
handling for using as an interactive Emacs command.

* test/lisp/eshell/esh-mode-tests.el
(esh-mode-test/clear/eshell-command, esh-mode-test/clear/emacs-command):
New tests.
---
 lisp/eshell/esh-mode.el            |  7 +++++--
 test/lisp/eshell/esh-mode-tests.el | 23 +++++++++++++++++++++++
 2 files changed, 28 insertions(+), 2 deletions(-)

diff --git a/lisp/eshell/esh-mode.el b/lisp/eshell/esh-mode.el
index 34ce82cfbc4..78e43e84173 100644
--- a/lisp/eshell/esh-mode.el
+++ b/lisp/eshell/esh-mode.el
@@ -869,8 +869,11 @@ eshell/clear
   (if scrollback
       (eshell/clear-scrollback)
     (let ((eshell-input-filter-functions nil))
-      (insert (make-string (window-size) ?\n))
-      (eshell-send-input))))
+      (eshell-interactive-print (make-string (window-size) ?\n))
+      (when (and (null eshell-current-handles)
+                 (eshell-using-module 'eshell-prompt))
+        (declare-function eshell-emit-prompt "em-prompt" ())
+        (eshell-emit-prompt)))))
 
 (defun eshell/clear-scrollback ()
   "Clear the scrollback content of the eshell window."
diff --git a/test/lisp/eshell/esh-mode-tests.el b/test/lisp/eshell/esh-mode-tests.el
index 306e11ce445..896931c47f6 100644
--- a/test/lisp/eshell/esh-mode-tests.el
+++ b/test/lisp/eshell/esh-mode-tests.el
@@ -26,6 +26,8 @@
 (require 'ert)
 (require 'esh-mode)
 (require 'eshell)
+(require 'em-banner)
+(require 'em-prompt)
 
 (require 'eshell-tests-helpers
          (expand-file-name "eshell-tests-helpers"
@@ -59,4 +61,25 @@ esh-mode-test/handle-control-codes/backspace
     (eshell-match-command-output (format "(format \"hello%c%cp\")" ?\C-h ?\C-h)
                                  "\\`help\n")))
 
+(ert-deftest esh-mode-test/clear/eshell-command ()
+  "Test that `eshell/clear' works as an Eshell command."
+  (let ((eshell-banner-message "")
+        (eshell-prompt-function (lambda () "$ ")))
+    (with-temp-eshell
+      (eshell-insert-command "echo hi")
+      (eshell-insert-command "clear")
+      (should (string-match "\\$ echo hi\nhi\n\\$ clear\n+\\$ "
+                            (buffer-string))))))
+
+(ert-deftest esh-mode-test/clear/emacs-command ()
+  "Test that `eshell/clear' works as an interactive Emacs command."
+  (let ((eshell-banner-message "")
+        (eshell-prompt-function (lambda () "$ ")))
+    (with-temp-eshell
+      (eshell-insert-command "echo hi")
+      (insert "echo b")
+      (eshell/clear)
+      (should (string-match "\\$ echo hi\nhi\n\\$ \n+\\$ echo b"
+                            (buffer-string))))))
+
 ;; esh-mode-tests.el ends here
-- 
2.25.1


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

* bug#73722: 30.0.91; error calling eshell/clear with no argument
  2024-10-15 17:00 ` Jim Porter
@ 2024-10-15 18:04   ` Eli Zaretskii
  2024-10-15 21:31     ` Jim Porter
  0 siblings, 1 reply; 8+ messages in thread
From: Eli Zaretskii @ 2024-10-15 18:04 UTC (permalink / raw)
  To: Jim Porter; +Cc: christopher, 73722

> Date: Tue, 15 Oct 2024 10:00:40 -0700
> From: Jim Porter <jporterbugs@gmail.com>
> 
> On 10/9/2024 10:33 AM, Christopher Howard wrote:
> > 
> > (same with or without emacs -Q)
> > 1. M-x eshell
> > 2. clear <return>
> > 
> > Gives error "wrong-type-argument listp progn".
> 
> I think this is probably the result of some improvements I've made to 
> Eshell's command evaluator that revealed a latent bug in 'eshell/clear' 
> (it actually runs a *second* Eshell command consisting only of newlines, 
> which shouldn't be necessary).
> 
> The actual error reported here is fixed in Emacs 31; in Emacs 30, 
> 'eshell-do-eval' mis-evaluates an empty '(progn)', but that generally 
> shouldn't occur except in odd cases like this. The "clear" command still 
> doesn't *work* correctly in Emacs 31 though.
> 
> Attached is the smallest fix I could come up with for this. This is made 
> somewhat more complex due to 'eshell/clear' also being used as an 
> interactive Emacs-level command. The two forms ("clear" at an Eshell 
> prompt and "M-x eshell/clear" in Emacs) should probably be separate 
> functions entirely since they behave differently regarding the current 
> prompt, but for the sake of compatibility, let's keep them fused 
> together for now...
> 
> Eli, does this look ok for the release branch? It fixes a regression 
> from Emacs 29 and adds a pair of regression tests to prevent future 
> breakage. (If and when this merges, I'll see about a more-thorough fix 
> for the master branch too.)

If the problem is with empty body of progn, why does the fix have to
be so much less self-evident?  Can you fix it by protecting against
empty body of progn instead, so that the fix is less likely to cause
unintended consequences?

In any case, please don't forget "Do not merge to master" in the
commit log message.

Thanks.





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

* bug#73722: 30.0.91; error calling eshell/clear with no argument
  2024-10-15 18:04   ` Eli Zaretskii
@ 2024-10-15 21:31     ` Jim Porter
  2024-10-16  5:17       ` Eli Zaretskii
  0 siblings, 1 reply; 8+ messages in thread
From: Jim Porter @ 2024-10-15 21:31 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: christopher, 73722

On 10/15/2024 11:04 AM, Eli Zaretskii wrote:
>> Eli, does this look ok for the release branch? It fixes a regression
>> from Emacs 29 and adds a pair of regression tests to prevent future
>> breakage. (If and when this merges, I'll see about a more-thorough fix
>> for the master branch too.)
> 
> If the problem is with empty body of progn, why does the fix have to
> be so much less self-evident?  Can you fix it by protecting against
> empty body of progn instead, so that the fix is less likely to cause
> unintended consequences?

That's just the loudest part of the bug. Even though I've already fixed 
that part on Emacs 31, things still don't work correctly there. If you 
run the "clear" command in Eshell it clears the screen, but then prints 
two new prompts on the same line together. However, this behavior is 
pretty close to what "clear" did in Emacs 29: it prints two prompts (but 
there's a newline between them).

If I fix the empty 'progn' case, I guess that would fix the regression 
(aside from the missing newline, which I'm not sure how to fix). 
However, "clear" still wouldn't work correctly.

What do you think would be better for Emacs 30? Fix "clear" so it works 
properly, or just fix the new regression? (In the latter case, I can fix 
it with a one-liner.)





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

* bug#73722: 30.0.91; error calling eshell/clear with no argument
  2024-10-15 21:31     ` Jim Porter
@ 2024-10-16  5:17       ` Eli Zaretskii
  2024-10-16 18:04         ` Jim Porter
  0 siblings, 1 reply; 8+ messages in thread
From: Eli Zaretskii @ 2024-10-16  5:17 UTC (permalink / raw)
  To: Jim Porter; +Cc: christopher, 73722

> Date: Tue, 15 Oct 2024 14:31:21 -0700
> Cc: christopher@librehacker.com, 73722@debbugs.gnu.org
> From: Jim Porter <jporterbugs@gmail.com>
> 
> On 10/15/2024 11:04 AM, Eli Zaretskii wrote:
> >> Eli, does this look ok for the release branch? It fixes a regression
> >> from Emacs 29 and adds a pair of regression tests to prevent future
> >> breakage. (If and when this merges, I'll see about a more-thorough fix
> >> for the master branch too.)
> > 
> > If the problem is with empty body of progn, why does the fix have to
> > be so much less self-evident?  Can you fix it by protecting against
> > empty body of progn instead, so that the fix is less likely to cause
> > unintended consequences?
> 
> That's just the loudest part of the bug. Even though I've already fixed 
> that part on Emacs 31, things still don't work correctly there. If you 
> run the "clear" command in Eshell it clears the screen, but then prints 
> two new prompts on the same line together. However, this behavior is 
> pretty close to what "clear" did in Emacs 29: it prints two prompts (but 
> there's a newline between them).
> 
> If I fix the empty 'progn' case, I guess that would fix the regression 
> (aside from the missing newline, which I'm not sure how to fix). 
> However, "clear" still wouldn't work correctly.
> 
> What do you think would be better for Emacs 30? Fix "clear" so it works 
> properly, or just fix the new regression? (In the latter case, I can fix 
> it with a one-liner.)

At this late stage, I prefer the latter, yes.





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

* bug#73722: 30.0.91; error calling eshell/clear with no argument
  2024-10-16  5:17       ` Eli Zaretskii
@ 2024-10-16 18:04         ` Jim Porter
  2024-10-17  4:47           ` Jim Porter
  0 siblings, 1 reply; 8+ messages in thread
From: Jim Porter @ 2024-10-16 18:04 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: christopher, 73722

On 10/15/2024 10:17 PM, Eli Zaretskii wrote:
>> Date: Tue, 15 Oct 2024 14:31:21 -0700
>> Cc: christopher@librehacker.com, 73722@debbugs.gnu.org
>> From: Jim Porter <jporterbugs@gmail.com>
>>
>> What do you think would be better for Emacs 30? Fix "clear" so it works
>> properly, or just fix the new regression? (In the latter case, I can fix
>> it with a one-liner.)
> 
> At this late stage, I prefer the latter, yes.

Ok, pushed the one-liner fix to the release branch as d3c94102266. I'll 
leave this open to work on a better fix for the master branch.






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

* bug#73722: 30.0.91; error calling eshell/clear with no argument
  2024-10-16 18:04         ` Jim Porter
@ 2024-10-17  4:47           ` Jim Porter
  2024-11-01  5:40             ` Jim Porter
  0 siblings, 1 reply; 8+ messages in thread
From: Jim Porter @ 2024-10-17  4:47 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: christopher, 73722

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

On 10/16/2024 11:04 AM, Jim Porter wrote:
> Ok, pushed the one-liner fix to the release branch as d3c94102266. I'll 
> leave this open to work on a better fix for the master branch.

And here's a patch for the master branch. I split out 'eshell/clear' 
into two versions: one for interactive (from M-x) use, and one for use 
as "clear" at the Eshell prompt. For compatibility, you can still call 
'eshell/clear' interactively from M-x, but 99% of the time the 
'eshell/FOO' commands aren't meant to be used that way; hence the new 
'eshell-clear'.

[-- Attachment #2: 0001-Fix-and-improve-behavior-of-eshell-clear.patch --]
[-- Type: text/plain, Size: 6909 bytes --]

From 2e13a01708c4681a51e0bbd16a94d2f052ce53f4 Mon Sep 17 00:00:00 2001
From: Jim Porter <jporterbugs@gmail.com>
Date: Thu, 10 Oct 2024 21:03:45 -0700
Subject: [PATCH] Fix and improve behavior of 'eshell/clear'

* lisp/eshell/esh-mode.el (eshell-clear): New function.
(eshell/clear): Fix incorrect behavior, and do the right thing when
'eshell-scroll-show-maximum-output' is nil.
(eshell/clear-scrollback): Call 'eshell/clear'.

* test/lisp/eshell/esh-mode-tests.el
(esh-mode-test/clear/eshell-command)
(esh-mode-test/clear/eshell-command/erase)
(esh-mode-test/clear/emacs-command)
(esh-mode-test/clear/emacs-command/erase): New tests.

* etc/NEWS: Mention the new 'eshell-command' (bug#73722).
---
 etc/NEWS                           |  8 ++++
 lisp/eshell/esh-mode.el            | 61 +++++++++++++++++++++++++-----
 test/lisp/eshell/esh-mode-tests.el | 42 ++++++++++++++++++++
 3 files changed, 101 insertions(+), 10 deletions(-)

diff --git a/etc/NEWS b/etc/NEWS
index 4346fb4aedd..b8aff8cc76f 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -236,6 +236,14 @@ It removes all the buttons in the specified region.
 
 ** Eshell
 
+---
+*** New interactive command 'eshell-clear'.
+This command scrolls the screen so that only the current prompt is
+visible, optionally erasing all the previous input/output as well.
+Previously, the Eshell built-in command 'eshell/clear' supported this
+(e.g. to call it via 'M-x'), but this new command behaves more
+consistently if you have a partially-typed command at the Eshell prompt.
+
 ---
 *** New user option 'eshell-command-async-buffer'.
 This option lets you tell 'eshell-command' how to respond if its output
diff --git a/lisp/eshell/esh-mode.el b/lisp/eshell/esh-mode.el
index 34ce82cfbc4..c5bcd28ef51 100644
--- a/lisp/eshell/esh-mode.el
+++ b/lisp/eshell/esh-mode.el
@@ -862,20 +862,61 @@ eshell-show-maximum-output
   (goto-char (point-max))
   (recenter -1))
 
-(defun eshell/clear (&optional scrollback)
-  "Scroll contents of eshell window out of sight, leaving a blank window.
-If SCROLLBACK is non-nil, clear the scrollback contents."
+(defun eshell-clear (&optional clear-scrollback)
+  "Scroll contents of the Eshell window out of sight, leaving a blank window.
+If CLEAR-SCROLLBACK is non-nil (interactively, with the prefix
+argument), clear the scrollback contents.
+
+Otherwise, the behavior depends on `eshell-scroll-show-maximum-output'.
+If non-nil, fill newlines before the current prompt so that the prompt
+is the last line in the window; if nil, just scroll the window so that
+the prompt is the first line in the window."
+  (interactive "P")
+  (cond
+   (clear-scrollback
+    (let ((inhibit-read-only t))
+      (widen)
+      (delete-region (point-min) (eshell-end-of-output))))
+   (eshell-scroll-show-maximum-output
+    (save-excursion
+      (goto-char (eshell-end-of-output))
+      (let ((inhibit-read-only t))
+        (insert-and-inherit (make-string (window-size) ?\n))))
+    (when (< (point) eshell-last-output-end)
+      (goto-char eshell-last-output-end)))
+  (t
+   (when (< (point) eshell-last-output-end)
+     (goto-char eshell-last-output-end))
+   (set-window-start nil (eshell-end-of-output)))))
+
+(defun eshell/clear (&optional clear-scrollback)
+  "Scroll contents of the Eshell window out of sight, leaving a blank window.
+If CLEAR-SCROLLBACK is non-nil, clear the scrollback contents.
+
+Otherwise, the behavior depends on `eshell-scroll-show-maximum-output'.
+If non-nil, fill newlines before the current prompt so that the prompt
+is the last line in the window; if nil, just scroll the window so that
+the prompt is the first line in the window.
+
+This command is for use as an Eshell command (entered at the prompt);
+for clearing the Eshell buffer from elsewhere (e.g. via
+\\[execute-extended-command]), use `eshell-clear'."
   (interactive)
-  (if scrollback
-      (eshell/clear-scrollback)
+  (cond
+   ((null eshell-current-handles)
+    (eshell-clear clear-scrollback))
+   (clear-scrollback
+    (let ((inhibit-read-only t))
+      (erase-buffer)))
+   (eshell-scroll-show-maximum-output
     (let ((eshell-input-filter-functions nil))
-      (insert (make-string (window-size) ?\n))
-      (eshell-send-input))))
+      (ignore (eshell-interactive-print (make-string (window-size) ?\n)))))
+   (t
+    (recenter 0))))
 
 (defun eshell/clear-scrollback ()
-  "Clear the scrollback content of the eshell window."
-  (let ((inhibit-read-only t))
-    (erase-buffer)))
+  "Clear the scrollback content of the Eshell window."
+  (eshell/clear t))
 
 (defun eshell-get-old-input (&optional use-current-region)
   "Return the command input on the current line.
diff --git a/test/lisp/eshell/esh-mode-tests.el b/test/lisp/eshell/esh-mode-tests.el
index 306e11ce445..28839eb65cf 100644
--- a/test/lisp/eshell/esh-mode-tests.el
+++ b/test/lisp/eshell/esh-mode-tests.el
@@ -26,6 +26,8 @@
 (require 'ert)
 (require 'esh-mode)
 (require 'eshell)
+(require 'em-banner)
+(require 'em-prompt)
 
 (require 'eshell-tests-helpers
          (expand-file-name "eshell-tests-helpers"
@@ -59,4 +61,44 @@ esh-mode-test/handle-control-codes/backspace
     (eshell-match-command-output (format "(format \"hello%c%cp\")" ?\C-h ?\C-h)
                                  "\\`help\n")))
 
+(ert-deftest esh-mode-test/clear/eshell-command ()
+  "Test that `eshell/clear' works as an Eshell command."
+  (let ((eshell-banner-message "")
+        (eshell-prompt-function (lambda () "$ ")))
+    (with-temp-eshell
+      (eshell-insert-command "echo hi")
+      (eshell-insert-command "clear")
+      (should (string-match "\\`\\$ echo hi\nhi\n\\$ clear\n+\\$ "
+                            (buffer-string))))))
+
+(ert-deftest esh-mode-test/clear/eshell-command/erase ()
+  "Test that `eshell/clear' can erase the buffer."
+  (let ((eshell-banner-message "")
+        (eshell-prompt-function (lambda () "$ ")))
+    (with-temp-eshell
+      (eshell-insert-command "echo hi")
+      (eshell-insert-command "clear t")
+      (should (string-match "\\`\\$ " (buffer-string))))))
+
+(ert-deftest esh-mode-test/clear/emacs-command ()
+  "Test that `eshell-clear' works as an interactive Emacs command."
+  (let ((eshell-banner-message "")
+        (eshell-prompt-function (lambda () "$ ")))
+    (with-temp-eshell
+      (eshell-insert-command "echo hi")
+      (insert "echo b")
+      (eshell-clear)
+      (should (string-match "\\`\\$ echo hi\nhi\n\n+\\$ echo b"
+                            (buffer-string))))))
+
+(ert-deftest esh-mode-test/clear/emacs-command/erase ()
+  "Test that `eshell-clear' can erase the buffer."
+  (let ((eshell-banner-message "")
+        (eshell-prompt-function (lambda () "$ ")))
+    (with-temp-eshell
+      (eshell-insert-command "echo hi")
+      (insert "echo b")
+      (eshell-clear t)
+      (should (string-match "\\`\\$ echo b" (buffer-string))))))
+
 ;; esh-mode-tests.el ends here
-- 
2.25.1


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

* bug#73722: 30.0.91; error calling eshell/clear with no argument
  2024-10-17  4:47           ` Jim Porter
@ 2024-11-01  5:40             ` Jim Porter
  0 siblings, 0 replies; 8+ messages in thread
From: Jim Porter @ 2024-11-01  5:40 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: christopher, 73722-done

On 10/16/2024 9:47 PM, Jim Porter wrote:
> And here's a patch for the master branch. I split out 'eshell/clear' 
> into two versions: one for interactive (from M-x) use, and one for use 
> as "clear" at the Eshell prompt. For compatibility, you can still call 
> 'eshell/clear' interactively from M-x, but 99% of the time the 
> 'eshell/FOO' commands aren't meant to be used that way; hence the new 
> 'eshell-clear'.

Now merged to the master branch as 98e24e369a3, so closing this bug.





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

end of thread, other threads:[~2024-11-01  5:40 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-10-09 17:33 bug#73722: 30.0.91; error calling eshell/clear with no argument Christopher Howard
2024-10-15 17:00 ` Jim Porter
2024-10-15 18:04   ` Eli Zaretskii
2024-10-15 21:31     ` Jim Porter
2024-10-16  5:17       ` Eli Zaretskii
2024-10-16 18:04         ` Jim Porter
2024-10-17  4:47           ` Jim Porter
2024-11-01  5:40             ` Jim Porter

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