--- Begin Message ---
Subject: |
29.1; chart-space-usage in chart.el does not work correctly on windows |
Date: |
Sat, 31 Aug 2024 20:52:41 +0200 |
Load the builtin chart package. When chart-space-usage is run, targeting
any directory, chart fails to find any files and therefore can't create
the chart. The expected behavior is that a bar chart is shown, ranking
the files of the directory by size.
This only fails on my Windows machine, it works on my Ubuntu
installation.
The output as shown in *Messages* is as follows:
Collecting statistics...
Running ‘cd g:/Shakespeare/;du -sk *’...
Scanning output ...
chart-space-usage: No files found!
chart-space-usage makes use of the du (disk usage) utility, which might
not be present on all machines. In my case I have du installed, but
chart-space-usage still failed to find any files.
I have patched chart-space-usage to remove the dependency on du and make
it OS agnostic and attached the patch to this email.
In GNU Emacs 29.1 (build 2, x86_64-w64-mingw32) of 2023-07-31 built on
AVALON
Windowing system distributor 'Microsoft Corp.', version 10.0.19045
System Description: Microsoft Windows 10 Home (v10.0.2009.19045.4780)
Configured using:
'configure --with-modules --without-dbus --with-native-compilation=aot
--without-compress-install --with-tree-sitter CFLAGS=-O2'
Configured features:
ACL GIF GMP GNUTLS HARFBUZZ JPEG JSON LCMS2 LIBXML2 MODULES NATIVE_COMP
NOTIFY W32NOTIFY PDUMPER PNG RSVG SOUND SQLITE3 THREADS TIFF
TOOLKIT_SCROLL_BARS TREE_SITTER WEBP XPM ZLIB
(NATIVE_COMP present but libgccjit not available)
Important settings:
value of $LANG: NLD
locale-coding-system: cp1252
Major mode: ELisp/l
Minor modes in effect:
bug-reference-prog-mode: t
erefactor-check-eval-mode: t
erefactor-highlight-mode: t
treemacs-filewatch-mode: t
treemacs-follow-mode: t
treemacs-git-mode: t
treemacs-fringe-indicator-mode: t
global-magit-file-mode: t
magit-file-mode: t
magit-auto-revert-mode: t
auto-revert-mode: t
global-git-commit-mode: t
async-bytecomp-package-mode: t
shell-dirtrack-mode: t
server-mode: t
which-key-mode: t
global-corfu-mode: t
corfu-mode: t
marginalia-mode: t
override-global-mode: t
savehist-mode: t
vertico-mode: t
tooltip-mode: t
global-eldoc-mode: t
eldoc-mode: t
show-paren-mode: t
electric-indent-mode: t
mouse-wheel-mode: t
tool-bar-mode: t
menu-bar-mode: t
file-name-shadow-mode: t
global-font-lock-mode: t
font-lock-mode: t
blink-cursor-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:
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ox hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/ox
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ox-texinfo hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/ox-texinfo
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ox-publish hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/ox-publish
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ox-org hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/ox-org
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ox-odt hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/ox-odt
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ox-md hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/ox-md
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ox-man hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/ox-man
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ox-latex hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/ox-latex
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ox-icalendar hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/ox-icalendar
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ox-html hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/ox-html
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ox-beamer hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/ox-beamer
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ox-ascii hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/ox-ascii
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/org hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/org
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/org-version hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/org-version
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/org-timer hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/org-timer
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/org-tempo hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/org-tempo
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/org-table hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/org-table
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/org-src hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/org-src
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/org-protocol hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/org-protocol
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/org-plot hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/org-plot
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/org-pcomplete hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/org-pcomplete
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/org-num hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/org-num
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/org-mouse hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/org-mouse
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/org-mobile hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/org-mobile
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/org-macs hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/org-macs
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/org-macro hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/org-macro
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/org-loaddefs hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/org-loaddefs
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/org-list hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/org-list
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/org-lint hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/org-lint
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/org-keys hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/org-keys
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/org-install hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/org-install
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/org-inlinetask hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/org-inlinetask
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/org-indent hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/org-indent
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/org-id hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/org-id
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/org-habit hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/org-habit
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/org-goto hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/org-goto
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/org-footnote hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/org-footnote
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/org-feed hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/org-feed
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/org-faces hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/org-faces
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/org-entities hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/org-entities
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/org-element hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/org-element
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/org-duration hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/org-duration
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/org-datetree hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/org-datetree
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/org-ctags hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/org-ctags
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/org-crypt hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/org-crypt
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/org-compat hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/org-compat
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/org-colview hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/org-colview
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/org-clock hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/org-clock
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/org-capture hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/org-capture
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/org-attach hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/org-attach
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/org-attach-git hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/org-attach-git
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/org-archive hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/org-archive
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/org-agenda hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/org-agenda
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ol hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/ol
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ol-w3m hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/ol-w3m
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ol-rmail hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/ol-rmail
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ol-mhe hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/ol-mhe
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ol-irc hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/ol-irc
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ol-info hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/ol-info
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ol-gnus hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/ol-gnus
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ol-eww hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/ol-eww
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ol-eshell hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/ol-eshell
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ol-docview hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/ol-docview
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ol-bibtex hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/ol-bibtex
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ol-bbdb hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/ol-bbdb
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/ob
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-vala hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/ob-vala
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-tangle hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/ob-tangle
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-table hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/ob-table
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-stan hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/ob-stan
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-sqlite hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/ob-sqlite
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-sql hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/ob-sql
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-shen hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/ob-shen
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-shell hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/ob-shell
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-sed hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/ob-sed
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-screen hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/ob-screen
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-scheme hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/ob-scheme
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-sass hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/ob-sass
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-ruby hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/ob-ruby
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-ref hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/ob-ref
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-R hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/ob-R
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-python hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/ob-python
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-processing hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/ob-processing
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-plantuml hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/ob-plantuml
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-picolisp hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/ob-picolisp
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-perl hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/ob-perl
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-org hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/ob-org
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-octave hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/ob-octave
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-ocaml hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/ob-ocaml
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-mscgen hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/ob-mscgen
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-maxima hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/ob-maxima
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-matlab hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/ob-matlab
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-makefile hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/ob-makefile
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-lua hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/ob-lua
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-lob hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/ob-lob
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-lisp hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/ob-lisp
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-lilypond hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/ob-lilypond
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-ledger hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/ob-ledger
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-latex hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/ob-latex
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-js hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/ob-js
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-java hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/ob-java
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-J hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/ob-J
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-io hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/ob-io
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-hledger hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/ob-hledger
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-haskell hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/ob-haskell
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-groovy hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/ob-groovy
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-gnuplot hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/ob-gnuplot
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-fortran hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/ob-fortran
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-forth hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/ob-forth
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-exp hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/ob-exp
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-eval hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/ob-eval
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-eshell hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/ob-eshell
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-emacs-lisp hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/ob-emacs-lisp
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-ebnf hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/ob-ebnf
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-dot hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/ob-dot
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-ditaa hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/ob-ditaa
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-css hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/ob-css
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-core hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/ob-core
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-coq hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/ob-coq
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-comint hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/ob-comint
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-clojure hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/ob-clojure
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-calc hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/ob-calc
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-C hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/ob-C
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-awk hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/ob-awk
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-asymptote hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/ob-asymptote
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-abc hides c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/ob-abc
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/transient-20200622.2050/transient hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/transient
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/use-package-20201110.2133/use-package hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/use-package/use-package
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/use-package-20201110.2133/use-package-lint hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/use-package/use-package-lint
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/use-package-20201110.2133/use-package-jump hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/use-package/use-package-jump
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/use-package-20201110.2133/use-package-ensure hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/use-package/use-package-ensure
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/use-package-20201110.2133/use-package-diminish hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/use-package/use-package-diminish
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/use-package-20201110.2133/use-package-delight hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/use-package/use-package-delight
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/use-package-20201110.2133/use-package-core hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/use-package/use-package-core
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/use-package-20201110.2133/use-package-bind-key hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/use-package/use-package-bind-key
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/bind-key-20200805.1727/bind-key hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/use-package/bind-key
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ox hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/ox
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ox-texinfo hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/ox-texinfo
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ox-publish hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/ox-publish
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ox-org hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/ox-org
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ox-odt hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/ox-odt
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ox-md hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/ox-md
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ox-man hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/ox-man
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ox-latex hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/ox-latex
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/ox-koma-letter hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/ox-koma-letter
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ox-icalendar hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/ox-icalendar
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ox-html hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/ox-html
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ox-beamer hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/ox-beamer
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ox-ascii hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/ox-ascii
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/org hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/org
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/org-version hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/org-version
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/org-timer hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/org-timer
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/org-tempo hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/org-tempo
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/org-table hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/org-table
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/org-src hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/org-src
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/org-refile hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/org-refile
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/org-protocol hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/org-protocol
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/org-plot hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/org-plot
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/org-pcomplete hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/org-pcomplete
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/org-num hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/org-num
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/org-mouse hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/org-mouse
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/org-mobile hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/org-mobile
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/org-macs hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/org-macs
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/org-macro hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/org-macro
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/org-loaddefs hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/org-loaddefs
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/org-list hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/org-list
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/org-lint hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/org-lint
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/org-keys hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/org-keys
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/org-inlinetask hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/org-inlinetask
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/org-indent hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/org-indent
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/org-id hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/org-id
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/org-habit hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/org-habit
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/org-goto hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/org-goto
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/org-footnote hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/org-footnote
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/org-feed hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/org-feed
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/org-faces hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/org-faces
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/org-entities hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/org-entities
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/org-element hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/org-element
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/org-duration hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/org-duration
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/org-datetree hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/org-datetree
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/org-ctags hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/org-ctags
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/org-crypt hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/org-crypt
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/org-compat hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/org-compat
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/org-colview hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/org-colview
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/org-clock hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/org-clock
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/org-capture hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/org-capture
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/org-attach hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/org-attach
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/org-attach-git hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/org-attach-git
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/org-archive hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/org-archive
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/org-agenda hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/org-agenda
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ol hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/ol
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ol-w3m hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/ol-w3m
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ol-rmail hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/ol-rmail
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ol-mhe hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/ol-mhe
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/ol-man hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/ol-man
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ol-irc hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/ol-irc
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ol-info hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/ol-info
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ol-gnus hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/ol-gnus
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ol-eww hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/ol-eww
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ol-eshell hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/ol-eshell
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ol-docview hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/ol-docview
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ol-bibtex hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/ol-bibtex
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ol-bbdb hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/ol-bbdb
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/ob
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-tangle hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/ob-tangle
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-table hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/ob-table
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-sqlite hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/ob-sqlite
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-sql hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/ob-sql
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-shell hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/ob-shell
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-sed hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/ob-sed
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-screen hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/ob-screen
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-scheme hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/ob-scheme
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-sass hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/ob-sass
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-ruby hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/ob-ruby
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-ref hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/ob-ref
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-R hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/ob-R
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-python hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/ob-python
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-processing hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/ob-processing
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-plantuml hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/ob-plantuml
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-perl hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/ob-perl
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-org hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/ob-org
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-octave hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/ob-octave
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-ocaml hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/ob-ocaml
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-maxima hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/ob-maxima
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-matlab hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/ob-matlab
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-makefile hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/ob-makefile
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-lua hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/ob-lua
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-lob hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/ob-lob
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-lisp hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/ob-lisp
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-lilypond hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/ob-lilypond
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-latex hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/ob-latex
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-plus-contrib-20210222/ob-julia hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/ob-julia
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-js hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/ob-js
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-java hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/ob-java
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-haskell hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/ob-haskell
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-groovy hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/ob-groovy
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-gnuplot hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/ob-gnuplot
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-fortran hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/ob-fortran
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-forth hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/ob-forth
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-exp hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/ob-exp
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-eval hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/ob-eval
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-eshell hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/ob-eshell
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-emacs-lisp hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/ob-emacs-lisp
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-dot hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/ob-dot
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-ditaa hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/ob-ditaa
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-css hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/ob-css
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-core hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/ob-core
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-comint hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/ob-comint
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-clojure hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/ob-clojure
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-calc hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/ob-calc
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-C hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/ob-C
c:/Users/Harm/Documents/Emacs/.emacs.d/elpa/org-20200406/ob-awk hides g:/Emacs/emacs-29.1/share/emacs/29.1/lisp/org/ob-awk
Features:
(shadow sort mail-extr emacsbug sh-script smie treesit executable
files-x whitespace magit-patch magit-subtree magit-ediff ediff
ediff-merg ediff-mult ediff-wind ediff-diff ediff-help ediff-init
ediff-util misearch multi-isearch magit-extras checkdoc shortdoc
help-fns radix-tree bug-reference vc-git vc-dispatcher cus-edit
cus-start cus-load wid-edit dired-aux display-line-numbers
treemacs-bookmarks treemacs-tags xref magit-bookmark bookmark pp chart
lisp-mnt mule-util erefactor flymake-proc flymake project compile
thingatpt gptel gptel-openai treemacs treemacs-header-line
treemacs-compatibility treemacs-mode treemacs-interface
treemacs-persistence treemacs-filewatch-mode treemacs-follow-mode
treemacs-rendering treemacs-annotations treemacs-async
treemacs-workspaces treemacs-dom treemacs-visuals
treemacs-fringe-indicator pulse color treemacs-faces treemacs-icons
treemacs-scope treemacs-themes treemacs-core-utils pfuture inline
hl-line ht treemacs-logging treemacs-customization treemacs-macros pcase
s magit-submodule magit-obsolete magit-blame magit-stash magit-reflog
magit-bisect magit-push magit-pull magit-fetch magit-clone magit-remote
magit-commit magit-sequence magit-notes magit-worktree magit-tag
magit-merge magit-branch magit-reset magit-files magit-refs magit-status
magit magit-repos magit-apply magit-wip magit-log which-func imenu
magit-diff smerge-mode diff diff-mode magit-core magit-autorevert
autorevert filenotify magit-margin magit-transient magit-process
magit-mode git-commit transient magit-git magit-section magit-utils crm
log-edit message sendmail yank-media puny dired dired-loaddefs rfc822
mml mml-sec epa derived epg rfc6068 epg-config gnus-util
text-property-search 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 with-editor comp comp-cstr
warnings rx async-bytecomp async shell server dash which-key corfu
edmacro kmacro marginalia use-package-bind-key bind-key easy-mmode
savehist orderless vertico compat cl-extra help-mode use-package-ensure
use-package-core finder-inf org-checklist 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-osc ansi-color ring org-list org-faces
org-entities time-date noutline outline icons org-version ob-emacs-lisp
ob-core ob-eval org-table ol org-keys org-compat advice org-macs
org-loaddefs format-spec find-func cal-menu calendar cal-loaddefs
corfu-autoloads devdocs-autoloads embark-autoloads erefactor-autoloads
gptel-autoloads marginalia-autoloads orderless-autoloads
treemacs-autoloads cfrs-autoloads posframe-autoloads ht-autoloads
hydra-autoloads lv-autoloads pfuture-autoloads ace-window-autoloads
avy-autoloads vertico-autoloads compat-autoloads which-key-autoloads
info yaml-mode-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 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 dos-w32 ls-lisp disp-table term/w32-win w32-win
w32-vars term/common-win tool-bar dnd fontset image regexp-opt fringe
tabulated-list replace newcomment text-mode lisp-mode prog-mode register
page tab-bar menu-bar rfn-eshadow isearch easymenu timer select
scroll-bar mouse jit-lock font-lock syntax font-core term/tty-colors
frame minibuffer nadvice 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 w32notify w32 lcms2 multi-tty make-network-process
native-compile emacs)
Memory information:
((conses 16 604727 66916)
(symbols 48 32728 0)
(strings 32 171750 4795)
(string-bytes 1 5874342)
(vectors 16 64504)
(vector-slots 8 1649805 128430)
(floats 8 345 545)
(intervals 56 7272 265)
(buffers 984 34))
0001-Make-chart-space-usage-OS-independent.patch
Description: Binary data
--- End Message ---
--- Begin Message ---
Subject: |
Re: bug#72919: 29.1; chart-space-usage in chart.el does not work correctly on windows |
Date: |
Sat, 07 Sep 2024 12:24:21 +0300 |
> Cc: 72919@debbugs.gnu.org
> Date: Sun, 01 Sep 2024 21:35:03 +0300
> From: Eli Zaretskii <eliz@gnu.org>
>
> > I've tried your changes with and without du. This uncovered something in the
> > original implementation, namely that the original implementation did not
> > count
> > hidden files and directories. du * skips dotfiles for me.
> >
> > With du present chart-space-usage shows the lisp directory as the largest
> > in the
> > emacs repository root. Without du it shows .git as the largest.
>
> This just means minor adjustments in the code I posted: we need to use
> a different regexp in the call to directory-files-recursively, and
> also ignore files that start with a dot in the command itself. I will
> make those changes, thanks for pointing them out
Actually, there's more here than meets the eye. 'du' does NOT skip
dotfiles (unless instructed to do so via the --exclude= command-line
option). What happens here is that a typical Unix shell does not
include dotfiles in the expansion of the "*" wildcard, so "du *" does
not count dotfiles, but only in the directory in which 'du' was
invoked; dotfiles in subdirectories _are_ counted.
I made the Lisp implementation skip dotfiles in the directory for
which the command is invoked, but not in the subdirectories. Windows
users who do have 'du' installed will now depend on how "*" is
expanded, which is probably different in different ports of 'du'. I
considered using --exclude=, but that would exclude dotfiles in
subdirectories as well, which is not what happens in the Unix case.
> I will post a version that ignores dotfiles.
I installed a modified version on the emacs-30 branch. The patch is
below in case you want to try it.
With that, I'm closing this bug.
diff --git a/lisp/emacs-lisp/chart.el b/lisp/emacs-lisp/chart.el
index da61e45..2ca9b64 100644
--- a/lisp/emacs-lisp/chart.el
+++ b/lisp/emacs-lisp/chart.el
@@ -641,27 +641,68 @@ chart-file-count
(lambda (a b) (> (cdr a) (cdr b))))
))
+;; This assumes 4KB blocks
+(defun chart--file-size (size)
+ (* (/ (+ size 4095) 4096) 4096))
+
+(defun chart--directory-size (dir)
+ "Compute total size of files in directory DIR and its subdirectories.
+DIR is assumed to be a directory, verified by the caller."
+ (let ((size 0))
+ (dolist (file (directory-files-recursively dir "." t))
+ (let ((fsize (nth 7 (file-attributes file))))
+ (if (> fsize 0)
+ (setq size
+ (+ size (chart--file-size fsize))))))
+ size))
+
(defun chart-space-usage (d)
"Display a top usage chart for directory D."
(interactive "DDirectory: ")
(message "Collecting statistics...")
(let ((nmlst nil)
(cntlst nil)
- (b (get-buffer-create " *du-tmp*")))
- (set-buffer b)
- (erase-buffer)
- (insert "cd " d ";du -sk * \n")
- (message "Running `cd %s;du -sk *'..." d)
- (call-process-region (point-min) (point-max) shell-file-name t
- (current-buffer) nil)
- (goto-char (point-min))
- (message "Scanning output ...")
- (while (re-search-forward "^\\([0-9]+\\)[ \t]+\\([^ \n]+\\)$" nil t)
- (let* ((nam (buffer-substring (match-beginning 2) (match-end 2)))
- (num (buffer-substring (match-beginning 1) (match-end 1))))
- (setq nmlst (cons nam nmlst)
- ;; * 1000 to put it into bytes
- cntlst (cons (* (string-to-number num) 1000) cntlst))))
+ b)
+ (if (executable-find "du")
+ (progn
+ (setq b (get-buffer-create " *du-tmp*"))
+ (set-buffer b)
+ (erase-buffer)
+ (if (and (memq system-type '(windows-nt ms-dos))
+ (fboundp 'w32-shell-dos-semantics)
+ (w32-shell-dos-semantics))
+ (progn
+ ;; With Windows shells, 'cd' does not change the drive,
+ ;; and ';' is not reliable for running multiple
+ ;; commands, so use alternatives. We quote the
+ ;; directory because otherwise pushd will barf on a
+ ;; directory with forward slashes. Note that * will not
+ ;; skip dotfiles with Windows shells, unlike on Unix.
+ (insert "pushd \"" d "\" && du -sk * \n")
+ (message "Running `pushd \"%s\" && du -sk *'..." d))
+ (insert "cd " d ";du -sk * \n")
+ (message "Running `cd %s;du -sk *'..." d))
+ (call-process-region (point-min) (point-max) shell-file-name t
+ (current-buffer) nil)
+ (goto-char (point-min))
+ (message "Scanning output ...")
+ (while (re-search-forward "^\\([0-9]+\\)[ \t]+\\([^ \n]+\\)$" nil t)
+ (let* ((nam (buffer-substring (match-beginning 2) (match-end 2)))
+ (num (buffer-substring (match-beginning 1) (match-end 1))))
+ (setq nmlst (cons nam nmlst)
+ ;; * 1000 to put it into bytes
+ cntlst (cons (* (string-to-number num) 1000) cntlst)))))
+ (dolist (file (directory-files d t directory-files-no-dot-files-regexp))
+ (let ((fbase (file-name-nondirectory file)))
+ ;; Typical shells exclude files and subdirectories whose names
+ ;; begin with a period when it expands *, so we do the same.
+ (unless (string-match-p "\\`\\." fbase)
+ (setq nmlst (cons fbase nmlst))
+ (if (file-regular-p file)
+ (setq cntlst (cons (chart--file-size
+ (nth 7 (file-attributes file)))
+ cntlst))
+ (setq cntlst (cons (chart--directory-size file) cntlst)))))))
(if (not nmlst)
(error "No files found!"))
(chart-bar-quickie 'vertical (format "Largest files in %s" d)
--- End Message ---