3247e75741
Since the included package set is determined at build time we can also generate the `subdirs.el` file at build time. This improves startup time somewhat since we don't have to traverse the directory to add to `load-path`. For example, ``` sh-session $ bench './emacs-old -Q --batch --kill' './emacs-new -Q --batch --kill' benchmarking bench/./emacs-old -Q --batch --kill time 72.77 ms (71.66 ms .. 73.65 ms) 1.000 R² (0.999 R² .. 1.000 R²) mean 72.49 ms (72.06 ms .. 72.92 ms) std dev 746.5 μs (582.4 μs .. 1.008 ms) benchmarking bench/./emacs-new -Q --batch --kill time 40.56 ms (40.24 ms .. 40.86 ms) 1.000 R² (0.999 R² .. 1.000 R²) mean 40.30 ms (40.12 ms .. 40.51 ms) std dev 401.9 μs (311.1 μs .. 555.8 μs) ``` The change does not actually affect the content of `load-path`: ``` sh-session $ diff -s <(./emacs-old --batch --eval '(prin1 load-path)' | sed -E 's!/nix/store/[[:alnum:]]{32}-!!g') \ <(./emacs-new --batch --eval '(prin1 load-path)' | sed -E 's!/nix/store/[[:alnum:]]{32}-!!g') Files /dev/fd/63 and /dev/fd/62 are identical ``` So in principle the only observable effect should be the improved startup time.
6 lines
278 B
EmacsLisp
6 lines
278 B
EmacsLisp
(defmacro mk-subdirs-expr (path)
|
|
`(setq load-path
|
|
(delete-dups (append '(,path)
|
|
',(let ((default-directory path))
|
|
(normal-top-level-add-subdirs-to-load-path))
|
|
load-path))))
|