Subject: Re: bug#74739: 31.0.50; eshell/which doesn't return a non-zero exit code on not finding a file

From: Ship Mints <[email-masked]>
Date: Sun, 8 Dec 2024 15:52:20 -0500

Not a big eshell user myself and I can't speak to its history. Reading the
code suggests that return values from functions like eshell/which weren't
considered significant by the authors. Every "print" ultimately seems to
return nil. Not sure if there's a way to detect if errors make it to the
stderr channel eshell is coded to use. I suppose you could write your own
eshell aliases in elisp to return better values. Seems like a lot of work,
though.

On Sun, Dec 8, 2024 at 3:48 PM the_wurfkreuz <[email-masked]>
wrote:

> But yeah, i'm not an expert on unix, maybe other standard utilities also
> behave like this.
>
> On Sunday, December 8th, 2024 at 23:46, the_wurfkreuz <
> [email-masked]> wrote:
>
> I understand that eshell built-ins might behave differently from Unix
> commands, but isn't it still inconsistent for eshell/which to use stderr
> (indicating an error) while returning exit code 0 (indicating success)? If
> this isn't an accidental oversight, i'd be interested to know why it was
> designed this way.
>
> On Sunday, December 8th, 2024 at 23:30, Ship Mints <[email-masked]>
> wrote:
>
> I don't know why I'm choosing to answer eshell questions today...
>
> which is an eshell built-in command. You can see this by running
>
> $ which which
> eshell/which is a native-compiled Lisp function in 'esh-cmd.el'.
>
> Try running /usr/bin/false and then echo $? and you'll see the correct
> unix command exit value.
>
> I do not think eshell builtins are intended to behave the same way.
>
> On Sun, Dec 8, 2024 at 11:31 AM the_wurfkreuz via Bug reports for GNU
> Emacs, the Swiss army knife of text editors <[email-masked]> wrote:
>
>> eshell/which doesn't return a non-zero exit code on not finding a file.
>> Yet it sends the output to stderr. It looks like there is an
>> inconsistency.
>>
>> Steps to reproduce:
>>
>> ~ $ which test-file
>> which: no test-file in ([...]/usr/local/bin:/usr/bin:/snap/bin)
>> ~ $ which test-file | grep theoretical
>> which: no test-file in ([...]/usr/local/bin:/usr/bin:/snap/bin)
>> ~ $ echo $?
>> 0
>> ~ $ which test-file 2>&1 | grep theoretical
>> ~ [1] $
>>
>>
>>
>> In GNU Emacs 31.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version
>> 3.24.41, cairo version 1.18.0) of 2024-12-06 built on
>> wurfkreuz-B650M-PG-Riptide
>> Repository revision: 9ddec89e422d0dd6e9069731b8f2dd2c90aa5607
>> Repository branch: master
>> Windowing system distributor 'The X.Org Foundation', version
>> 11.0.12302006
>> System Description: Ubuntu 24.04.1 LTS
>>
>> Configured using:
>> 'configure --with-native-compilation=aot --with-tree-sitter --with-gif
>> --with-png --with-jpeg --with-tiff --with-imagemagick
>> --with-x-toolkit=gtk3 --with-xwidgets --without-rsvg
>> 'WEBKIT_CFLAGS=-I/usr/include/webkitgtk-4.1 -I/usr/include/glib-2.0
>> -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/gtk-3.0
>> -I/usr/include/pango-1.0 -I/usr/include/harfbuzz
>> -I/usr/include/freetype2 -I/usr/include/libpng16
>> -I/usr/include/libmount -I/usr/include/blkid -I/usr/include/fribidi
>> -I/usr/include/cairo -I/usr/include/pixman-1
>> -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/x86_64-linux-gnu
>> -I/usr/include/webp -I/usr/include/gio-unix-2.0 -I/usr/include/atk-1.0
>> -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0
>> -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include
>> -I/usr/include/libsoup-3.0 -I/usr/include/sysprof-6 -pthread '
>> 'WEBKIT_LIBS=-lwebkit2gtk-4.1 -lgtk-3 -lgdk-3 -lz -lpangocairo-1.0
>> -lpango-1.0 -lharfbuzz -latk-1.0 -lcairo-gobject -lcairo
>> -lgdk_pixbuf-2.0 -lsoup-3.0 -Wl,--export-dynamic -lgmodule-2.0 -pthread
>> -lglib-2.0 -lgio-2.0 -ljavascriptcoregtk-4.1 -lgobject-2.0 -lglib-2.0 '
>> CPPFLAGS=-I/usr/lib/gcc/x86_64-linux-gnu/14/include --with-mailutils'
>>
>> Configured features:
>> CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GSETTINGS HARFBUZZ IMAGEMAGICK
>> JPEG LCMS2 LIBSELINUX LIBXML2 MODULES NATIVE_COMP NOTIFY INOTIFY PDUMPER
>> PNG SECCOMP SOUND SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS TREE_SITTER
>> WEBP X11 XDBE XIM XINPUT2 XPM XWIDGETS GTK3 ZLIB
>>
>> Important settings:
>> value of $LC_MONETARY: be_BY.UTF-8
>> value of $LC_NUMERIC: be_BY.UTF-8
>> value of $LC_TIME: be_BY.UTF-8
>> value of $LANG: en_US.UTF-8
>> locale-coding-system: utf-8-unix
>>
>> Major mode: ELisp/l
>>
>> Minor modes in effect:
>> windmove-mode: t
>> savehist-mode: t
>> eshell-syntax-highlighting-global-mode: t
>> global-evil-collection-unimpaired-mode: t
>> evil-collection-unimpaired-mode: t
>> global-evil-surround-mode: t
>> evil-surround-mode: t
>> evil-mode: t
>> evil-local-mode: t
>> global-org-modern-mode: t
>> envrc-global-mode: t
>> envrc-mode: t
>> eat-eshell-visual-command-mode: t
>> eat-eshell-mode: t
>> shackle-mode: t
>> popper-echo-mode: t
>> popper-mode: t
>> global-git-commit-mode: t
>> magit-auto-revert-mode: t
>> all-the-icons-completion-mode: t
>> marginalia-mode: t
>> vertico-mode: t
>> global-fish-completion-mode: t
>> fish-completion-mode: t
>> corfu-popupinfo-mode: t
>> corfu-history-mode: t
>> corfu-echo-mode: t
>> global-corfu-mode: t
>> corfu-mode: t
>> yas-global-mode: t
>> yas-minor-mode: t
>> which-key-mode: t
>> global-treesit-auto-mode: t
>> global-undo-tree-mode: t
>> undo-tree-mode: t
>> delete-selection-mode: t
>> global-auto-revert-mode: t
>> save-place-mode: t
>> electric-pair-mode: t
>> recentf-mode: t
>> global-display-line-numbers-mode: t
>> display-line-numbers-mode: t
>> override-global-mode: t
>> tooltip-mode: t
>> show-paren-mode: t
>> electric-indent-mode: t
>> mouse-wheel-mode: t
>> tab-bar-mode: t
>> file-name-shadow-mode: t
>> global-font-lock-mode: t
>> font-lock-mode: t
>> minibuffer-regexp-mode: t
>> line-number-mode: t
>> transient-mark-mode: t
>> auto-composition-mode: t
>> auto-encryption-mode: t
>> auto-compression-mode: t
>>
>> Load-path shadows:
>> /home/wurfkreuz/.emacs.d/elpa/eat/eat hides
>> /home/wurfkreuz/.emacs.d/elpa/emacs-eat/eat
>> /home/wurfkreuz/.emacs.d/elpa/eat/eat-tests hides
>> /home/wurfkreuz/.emacs.d/elpa/emacs-eat/eat-tests
>> /home/wurfkreuz/.emacs.d/elpa/transient-20241201.1616/transient hides
>> /home/wurfkreuz/.source/emacs/lisp/transient
>> ~/.source/org-mode/lisp/org-element-ast hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-element-ast
>> ~/.source/org-mode/lisp/org-list hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-list
>> ~/.source/org-mode/lisp/org-clock hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-clock
>> ~/.source/org-mode/lisp/ob-eval hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-eval
>> ~/.source/org-mode/lisp/ob-lisp hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-lisp
>> ~/.source/org-mode/lisp/ob-table hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-table
>> ~/.source/org-mode/lisp/ol-rmail hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ol-rmail
>> ~/.source/org-mode/lisp/ol-gnus hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ol-gnus
>> ~/.source/org-mode/lisp/ob-shell hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-shell
>> ~/.source/org-mode/lisp/ol-irc hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ol-irc
>> ~/.source/org-mode/lisp/ob-exp hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-exp
>> ~/.source/org-mode/lisp/ob-tangle hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-tangle
>> ~/.source/org-mode/lisp/ob-julia hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-julia
>> ~/.source/org-mode/lisp/ob-fortran hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-fortran
>> ~/.source/org-mode/lisp/ob-haskell hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-haskell
>> ~/.source/org-mode/lisp/org-refile hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-refile
>> ~/.source/org-mode/lisp/org-timer hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-timer
>> ~/.source/org-mode/lisp/org-version hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-version
>> ~/.source/org-mode/lisp/org-attach-git hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-attach-git
>> ~/.source/org-mode/lisp/ob-awk hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-awk
>> ~/.source/org-mode/lisp/ob-C hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-C
>> ~/.source/org-mode/lisp/ol-bibtex hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ol-bibtex
>> ~/.source/org-mode/lisp/oc-basic hides
>> /home/wurfkreuz/.source/emacs/lisp/org/oc-basic
>> ~/.source/org-mode/lisp/org-inlinetask hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-inlinetask
>> ~/.source/org-mode/lisp/ob-ref hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-ref
>> ~/.source/org-mode/lisp/ob-emacs-lisp hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-emacs-lisp
>> ~/.source/org-mode/lisp/ob-sed hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-sed
>> ~/.source/org-mode/lisp/org-archive hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-archive
>> ~/.source/org-mode/lisp/ob-lua hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-lua
>> ~/.source/org-mode/lisp/org-goto hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-goto
>> ~/.source/org-mode/lisp/org-fold-core hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-fold-core
>> ~/.source/org-mode/lisp/oc-csl hides
>> /home/wurfkreuz/.source/emacs/lisp/org/oc-csl
>> ~/.source/org-mode/lisp/org hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org
>> ~/.source/org-mode/lisp/ob-forth hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-forth
>> ~/.source/org-mode/lisp/ox-koma-letter hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ox-koma-letter
>> ~/.source/org-mode/lisp/ob-eshell hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-eshell
>> ~/.source/org-mode/lisp/ol-info hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ol-info
>> ~/.source/org-mode/lisp/ol-docview hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ol-docview
>> ~/.source/org-mode/lisp/ox-latex hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ox-latex
>> ~/.source/org-mode/lisp/org-crypt hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-crypt
>> ~/.source/org-mode/lisp/ob-makefile hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-makefile
>> ~/.source/org-mode/lisp/org-plot hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-plot
>> ~/.source/org-mode/lisp/ob-ocaml hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-ocaml
>> ~/.source/org-mode/lisp/org-faces hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-faces
>> ~/.source/org-mode/lisp/org-datetree hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-datetree
>> ~/.source/org-mode/lisp/ob-lilypond hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-lilypond
>> ~/.source/org-mode/lisp/ob-octave hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-octave
>> ~/.source/org-mode/lisp/oc hides /home/wurfkreuz/.source/emacs/lisp/org/oc
>> ~/.source/org-mode/lisp/ob-sass hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-sass
>> ~/.source/org-mode/lisp/ob-maxima hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-maxima
>> ~/.source/org-mode/lisp/ob-latex hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-latex
>> ~/.source/org-mode/lisp/ob-python hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-python
>> ~/.source/org-mode/lisp/org-keys hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-keys
>> ~/.source/org-mode/lisp/org-pcomplete hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-pcomplete
>> ~/.source/org-mode/lisp/ob-sqlite hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-sqlite
>> ~/.source/org-mode/lisp/org-duration hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-duration
>> ~/.source/org-mode/lisp/org-id hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-id
>> ~/.source/org-mode/lisp/ob-plantuml hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-plantuml
>> ~/.source/org-mode/lisp/org-macro hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-macro
>> ~/.source/org-mode/lisp/ob-ruby hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-ruby
>> ~/.source/org-mode/lisp/ob-groovy hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-groovy
>> ~/.source/org-mode/lisp/ox-beamer hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ox-beamer
>> ~/.source/org-mode/lisp/ob-comint hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-comint
>> ~/.source/org-mode/lisp/ox-odt hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ox-odt
>> ~/.source/org-mode/lisp/ob-calc hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-calc
>> ~/.source/org-mode/lisp/ob-R hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-R
>> ~/.source/org-mode/lisp/org-loaddefs hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-loaddefs
>> ~/.source/org-mode/lisp/ol-man hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ol-man
>> ~/.source/org-mode/lisp/org-capture hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-capture
>> ~/.source/org-mode/lisp/ol-eshell hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ol-eshell
>> ~/.source/org-mode/lisp/ox-texinfo hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ox-texinfo
>> ~/.source/org-mode/lisp/ox-ascii hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ox-ascii
>> ~/.source/org-mode/lisp/org-element hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-element
>> ~/.source/org-mode/lisp/org-macs hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-macs
>> ~/.source/org-mode/lisp/org-compat hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-compat
>> ~/.source/org-mode/lisp/ob hides /home/wurfkreuz/.source/emacs/lisp/org/ob
>> ~/.source/org-mode/lisp/ob-js hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-js
>> ~/.source/org-mode/lisp/ol-bbdb hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ol-bbdb
>> ~/.source/org-mode/lisp/org-fold hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-fold
>> ~/.source/org-mode/lisp/ol hides /home/wurfkreuz/.source/emacs/lisp/org/ol
>> ~/.source/org-mode/lisp/oc-biblatex hides
>> /home/wurfkreuz/.source/emacs/lisp/org/oc-biblatex
>> ~/.source/org-mode/lisp/ob-perl hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-perl
>> ~/.source/org-mode/lisp/ob-screen hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-screen
>> ~/.source/org-mode/lisp/org-ctags hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-ctags
>> ~/.source/org-mode/lisp/org-table hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-table
>> ~/.source/org-mode/lisp/org-persist hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-persist
>> ~/.source/org-mode/lisp/ob-scheme hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-scheme
>> ~/.source/org-mode/lisp/org-agenda hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-agenda
>> ~/.source/org-mode/lisp/oc-natbib hides
>> /home/wurfkreuz/.source/emacs/lisp/org/oc-natbib
>> ~/.source/org-mode/lisp/ob-processing hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-processing
>> ~/.source/org-mode/lisp/org-habit hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-habit
>> ~/.source/org-mode/lisp/org-entities hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-entities
>> ~/.source/org-mode/lisp/ob-java hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-java
>> ~/.source/org-mode/lisp/ob-gnuplot hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-gnuplot
>> ~/.source/org-mode/lisp/ol-w3m hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ol-w3m
>> ~/.source/org-mode/lisp/ox-org hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ox-org
>> ~/.source/org-mode/lisp/ox-man hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ox-man
>> ~/.source/org-mode/lisp/org-lint hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-lint
>> ~/.source/org-mode/lisp/org-protocol hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-protocol
>> ~/.source/org-mode/lisp/ob-core hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-core
>> ~/.source/org-mode/lisp/ol-eww hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ol-eww
>> ~/.source/org-mode/lisp/ox-publish hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ox-publish
>> ~/.source/org-mode/lisp/org-footnote hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-footnote
>> ~/.source/org-mode/lisp/ox-md hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ox-md
>> ~/.source/org-mode/lisp/org-feed hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-feed
>> ~/.source/org-mode/lisp/ol-doi hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ol-doi
>> ~/.source/org-mode/lisp/ox-html hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ox-html
>> ~/.source/org-mode/lisp/org-src hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-src
>> ~/.source/org-mode/lisp/ob-org hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-org
>> ~/.source/org-mode/lisp/oc-bibtex hides
>> /home/wurfkreuz/.source/emacs/lisp/org/oc-bibtex
>> ~/.source/org-mode/lisp/org-mouse hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-mouse
>> ~/.source/org-mode/lisp/org-colview hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-colview
>> ~/.source/org-mode/lisp/ol-mhe hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ol-mhe
>> ~/.source/org-mode/lisp/ob-lob hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-lob
>> ~/.source/org-mode/lisp/ox-icalendar hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ox-icalendar
>> ~/.source/org-mode/lisp/org-tempo hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-tempo
>> ~/.source/org-mode/lisp/ob-matlab hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-matlab
>> ~/.source/org-mode/lisp/ob-sql hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-sql
>> ~/.source/org-mode/lisp/ob-dot hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-dot
>> ~/.source/org-mode/lisp/ob-ditaa hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-ditaa
>> ~/.source/org-mode/lisp/ob-clojure hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-clojure
>> ~/.source/org-mode/lisp/org-indent hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-indent
>> ~/.source/org-mode/lisp/org-cycle hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-cycle
>> ~/.source/org-mode/lisp/org-mobile hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-mobile
>> ~/.source/org-mode/lisp/org-num hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-num
>> ~/.source/org-mode/lisp/ob-css hides
>> /home/wurfkreuz/.source/emacs/lisp/org/ob-css
>> ~/.source/org-mode/lisp/org-attach hides
>> /home/wurfkreuz/.source/emacs/lisp/org/org-attach
>> ~/.source/org-mode/lisp/ox hides /home/wurfkreuz/.source/emacs/lisp/org/ox
>>
>> Features:
>> (shadow sort mail-extr emacsbug tramp-cmds pulse color help-fns
>> radix-tree pcmpl-unix windmove flymake-shellcheck python bug-reference
>> org-bullets org-indent dired-aux toc-org image-file image-converter
>> oc-basic ol-eww eww vtable mule-util url-queue mm-url ol-rmail ol-mhe
>> ol-irc ol-info ol-gnus nnselect gnus-art mm-uu mml2015 mm-view mml-smime
>> smime gnutls dig gnus-sum shr pixel-fill kinsoku url-file svg dom
>> gnus-group gnus-undo gnus-start gnus-dbus dbus xml gnus-cloud nnimap
>> nnmail mail-source utf7 nnoo gnus-spec gnus-int gnus-range gnus-win gnus
>> nnheader range ol-docview doc-view jka-compr image-mode exif ol-bibtex
>> bibtex ol-bbdb ol-w3m ol-doi org-link-doi vc-git vc-dispatcher em-unix
>> em-term evil-collection-term term disp-table ehelp em-script em-pred
>> em-ls em-hist em-glob em-extpipe em-basic em-banner em-elecslash eshell
>> savehist em-tramp eshell-syntax-highlighting em-prompt em-alias
>> evil-collection-unimpaired evil-collection-debug evil-collection-magit
>> evil-collection-docker evil-collection-minibuffer evil-collection-org
>> evil-collection-dired evil-collection annalist evil-org evil-surround
>> evil evil-integration evil-maps evil-commands reveal evil-jumps
>> evil-command-window evil-types evil-search evil-ex evil-macros
>> evil-repeat evil-states evil-core evil-common rect evil-vars org-modern
>> org-tempo tempo org-drill persist org-agenda org-download org-attach
>> url-http url-auth url-gw nsm async embark-org org-element org-persist
>> org-id org-refile org-element-ast inline avl-tree org ob ob-tangle
>> ob-ref ob-lob ob-table ob-exp org-macro org-src ob-comint org-pcomplete
>> org-list org-footnote org-faces org-entities ob-emacs-lisp ob-core
>> ob-eval org-cycle org-table ol org-fold org-fold-core org-keys oc
>> org-loaddefs cal-menu calendar cal-loaddefs org-version org-compat
>> org-macs eglot external-completion jsonrpc ert ewoc debug backtrace
>> systemd conf-mode nix-mode nix-repl nix-shell nix-store nix-log
>> nix-instantiate nix-shebang nix-format nix yaml-mode haskell-mode
>> haskell-cabal haskell-utils haskell-font-lock haskell-indentation
>> haskell-string haskell-sort-imports haskell-lexeme haskell-align-imports
>> haskell-complete-module haskell-ghc-support flymake-proc dabbrev
>> haskell-customize dockerfile-mode sh-script executable terraform-mode
>> noutline outline hcl-mode lua-mode go-mode find-file etags fileloop xref
>> raku-mode raku-repl raku-imenu raku-indent smie raku-font-lock
>> raku-detect flymake-hadolint flymake envrc inheritenv eat shackle trace
>> cl-print popper-echo popper transpose-frame magit-bookmark
>> magit-submodule magit-blame magit-stash magit-reflog magit-bisect
>> magit-push magit-pull magit-fetch magit-clone magit-remote magit-commit
>> magit-sequence magit-notes magit-worktree magit-tag magit-merge
>> magit-branch magit-reset magit-files magit-refs magit-status magit
>> magit-repos magit-apply magit-wip magit-log which-func imenu magit-diff
>> smerge-mode diff-mode track-changes git-commit log-edit message sendmail
>> yank-media puny 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 pcvs-util add-log magit-core magit-autorevert magit-margin
>> magit-transient magit-process magit-mode benchmark magit-git magit-base
>> magit-section cursor-sensor crm hydra lv with-editor server
>> all-the-icons-completion all-the-icons-dired all-the-icons
>> all-the-icons-faces data-material data-weathericons data-octicons
>> data-fileicons data-faicons data-alltheicons embark-consult embark ffap
>> thingatpt consult bookmark marginalia vertico project zoxide sudo-edit
>> exec-path-from-shell fish-completion em-cmpl em-dirs esh-mode esh-var
>> esh-cmd esh-ext esh-proc esh-opt esh-io esh-arg esh-module
>> esh-module-loaddefs esh-util cape corfu-popupinfo corfu-history
>> corfu-echo corfu orderless yasnippet commander f wgrep grep compile
>> text-property-search which-key docker docker-context docker-volume
>> docker-network docker-image docker-container docker-faces docker-core
>> docker-compose docker-process docker-utils tablist advice tablist-filter
>> semantic/wisent/comp semantic/wisent semantic/wisent/wisent
>> semantic/util-modes semantic/util semantic pp semantic/tag semantic/lex
>> semantic/fw mode-local find-func cedet dired dired-loaddefs docker-group
>> transient edmacro kmacro compat dash aio generator s avy clojure-ts-mode
>> treesit-auto treesit rose-pine-theme undo-tree diff queue delsel
>> midnight autorevert filenotify saveplace tramp-cache time-stamp tramp-sh
>> tramp trampver tramp-integration files-x tramp-message tramp-compat xdg
>> shell pcomplete comint ansi-osc ring parse-time iso8601 time-date
>> format-spec ansi-color tramp-loaddefs desktop frameset comp comp-cstr
>> cl-extra help-mode warnings comp-run comp-common elec-pair recentf
>> tree-widget wid-edit display-line-numbers use-package use-package-ensure
>> use-package-delight use-package-diminish use-package-bind-key bind-key
>> easy-mmode use-package-core all-the-icons-completion-autoloads
>> all-the-icons-dired-autoloads all-the-icons-autoloads avy-autoloads
>> cape-autoloads clojure-ts-mode-autoloads commander-autoloads
>> corfu-autoloads docker-autoloads aio-autoloads dockerfile-mode-autoloads
>> eat-autoloads emacs-eat-autoloads finder-inf embark-consult-autoloads
>> consult-autoloads embark-autoloads envrc-autoloads
>> eshell-syntax-highlighting-autoloads evil-collection-autoloads
>> annalist-autoloads evil-org-autoloads evil-surround-autoloads
>> evil-autoloads exec-path-from-shell-autoloads f-autoloads
>> fish-completion-autoloads flymake-ansible-lint-autoloads
>> flymake-hadolint-autoloads flymake-shellcheck-autoloads
>> go-mode-autoloads goto-chg-autoloads haskell-mode-autoloads
>> hydra-autoloads inheritenv-autoloads lua-mode-autoloads lv-autoloads
>> magit-autoloads pcase marginalia-autoloads meow-autoloads
>> nix-mode-autoloads magit-section-autoloads orderless-autoloads
>> org-bullets-autoloads org-download-autoloads async-autoloads
>> org-drill-autoloads org-modern-autoloads persist-autoloads
>> popper-autoloads pyvenv-autoloads raku-mode-autoloads s-autoloads
>> shackle-autoloads sudo-edit-autoloads swiper-autoloads ivy-autoloads
>> systemd-autoloads rx tablist-autoloads terraform-mode-autoloads
>> dash-autoloads hcl-mode-autoloads toc-org-autoloads transient-autoloads
>> transpose-frame-autoloads treesit-auto-autoloads undo-tree-autoloads
>> queue-autoloads vertico-autoloads wgrep-autoloads info
>> with-editor-autoloads yaml-mode-autoloads yasnippet-autoloads
>> zoxide-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
>> xwidget-internal dbusbind inotify lcms2 dynamic-setting
>> system-font-setting font-render-setting cairo gtk x-toolkit xinput2 x
>> multi-tty move-toolbar make-network-process native-compile emacs)
>>
>> Memory information:
>> ((conses 16 1092583 211653) (symbols 48 57721 53) (strings 32 278315
>> 13612)
>> (string-bytes 1 8739130) (vectors 16 111852) (vector-slots 8 2563160
>> 82266)
>> (floats 8 1134 533) (intervals 56 27324 2396) (buffers 992 52))
>>
>>
>
>