<feed xmlns='http://www.w3.org/2005/Atom'>
<title>dotemacs/modules/system-defaults.el, branch load-graph-classify-end</title>
<subtitle>My Emacs configuration
</subtitle>
<id>https://git.cjennings.net/dotemacs/atom?h=load-graph-classify-end</id>
<link rel='self' href='https://git.cjennings.net/dotemacs/atom?h=load-graph-classify-end'/>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/'/>
<updated>2026-05-24T21:13:01+00:00</updated>
<entry>
<title>docs(load-graph): seed module inventory and annotate foundation headers</title>
<updated>2026-05-24T21:13:01+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-05-24T21:13:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=2d83f8f55977dbf69f4f80e490ed0b96aeea4eee'/>
<id>urn:sha1:2d83f8f55977dbf69f4f80e490ed0b96aeea4eee</id>
<content type='text'>
I started the init.el load-graph classification with the foundation batch. I added docs/design/module-inventory.org as the living per-module inventory and annotated the seven foundation modules (system-lib, user-constants, host-environment, system-defaults, keyboard-compat, keybindings, config-utilities) with the load-graph header contract: layer, category, load shape, eager reason, top-level side effects, runtime requires, and direct-test-load safety.

I changed no load order, so init.el keeps its current eager order. The inventory records one hidden dependency for Phase 2: system-defaults uses host-environment and user-constants symbols at load while declaring them eval-when-compile, so the compiled module cannot load standalone.
</content>
</entry>
<entry>
<title>refactor(foundation): hygiene pass across early-init, user-constants, system-defaults, chrono-tools</title>
<updated>2026-05-16T07:35:38+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-05-16T07:35:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=1c5a2ebab7c721d795ed9331afdb305fd683e172'/>
<id>urn:sha1:1c5a2ebab7c721d795ed9331afdb305fd683e172</id>
<content type='text'>
Six small fixes the 2026-05-15 module-by-module re-review surfaced:

- Consolidate `user-home-dir` -- canonical defconst stays in
  early-init.el (package-archive bootstrap needs it before normal
  modules load); user-constants.el switches to a `defvar` with the
  identical `(getenv "HOME")` expression so the module still loads /
  byte-compiles standalone, but at runtime early-init's defconst
  wins.
- Drop the redundant `(autoload 'env-bsd-p ...)` line in
  system-defaults.el.  The `(eval-when-compile (require
  'host-environment))` already exposes the symbol to the byte
  compiler, and at runtime host-environment is loaded earlier in
  init.el.  Added a comment documenting the boundary.
- Convert `cj/debug-modules` and `cj/use-online-repos` from `defvar`
  to `defcustom`, with `:type`, `:group 'cj`, and a top-level
  `(defgroup cj ...)` so both show up in M-x customize.
- Name the package-archive priorities in early-init.el.  Nine new
  defconsts replace the magic numbers (200 / 125 / 120 / 115 / 100 /
  25 / 20 / 15 / 5) with one constant each, plus a header comment
  explaining the local-first ordering and the gnu &gt; nongnu &gt; melpa &gt;
  melpa-stable trust ranking within each tier.
- Delete the 19-line commented-out `use-package time` world-clock
  block in chrono-tools.el.  `time-zones` immediately above is the
  active replacement; git history preserves the old config if anyone
  needs it.
- Add coverage for `cj/tmr-select-sound-file`.  Collapsed the
  prefix-arg branch into a delegation to
  `cj/tmr-reset-sound-to-default` (single reset source) and
  extracted `cj/tmr--available-sound-files` as a pure helper that
  tests directly.  9 ERT tests across Normal / Boundary / Error
  cover the available-sounds helper, the reset path, the prefix-arg
  delegation (no prompt), the normal selection path, and the
  empty-dir / missing-dir / cancel boundaries.
</content>
</entry>
<entry>
<title>fix: set vc-follow-symlinks explicitly to t</title>
<updated>2026-05-04T00:10:47+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-05-04T00:10:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=875887fc3821869c7ca8f23777e79caa00b3999e'/>
<id>urn:sha1:875887fc3821869c7ca8f23777e79caa00b3999e</id>
<content type='text'>
The line read `(setq-default vc-follow-symlinks)` with no value. That left the variable at nil, so the comment "don't ask to follow symlinks if target is version controlled" was a lie. Opening any version-controlled symlink still prompted.

I checked the Emacs docs first. The value `t` is the one that follows the link without asking, so that's what I set.

I added `tests/test-system-defaults-vc-follow-symlinks.el` as a regression test. It loads the module with the unrelated side effects stubbed and asserts `vc-follow-symlinks` ends up as `t`.
</content>
</entry>
<entry>
<title>fix(font): prevent HarfBuzz SIGSEGV crash on emoji in mu4e headers</title>
<updated>2026-02-09T15:41:36+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-02-09T15:41:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=c829a0a66c2c98fe634af2aa5d41bfc38c3608c0'/>
<id>urn:sha1:c829a0a66c2c98fe634af2aa5d41bfc38c3608c0</id>
<content type='text'>
Emacs 30.2 + HarfBuzz 12.3.2 segfaults when arabic-shape-gstring is
called on emoji characters during mu4e header rendering. Disable Arabic
composition ranges, set inhibit-compacting-font-caches, and disable
auto-composition in mu4e-headers-mode. Remove duplicate bidi settings
from system-defaults.el (already in early-init.el).
</content>
</entry>
<entry>
<title>feat(system): start server for pinentry-emacs, exclude airootfs from recentf</title>
<updated>2026-01-24T18:25:44+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-01-24T18:25:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=dec883797c0660596d72d501622f7d8a92bdf19b'/>
<id>urn:sha1:dec883797c0660596d72d501622f7d8a92bdf19b</id>
<content type='text'>
</content>
</entry>
<entry>
<title>perf:system-defaults: Unpropertize kill ring on exit</title>
<updated>2025-11-01T17:57:49+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2025-11-01T17:57:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=76a2e91f840c94309edeb4d61a17c738531ce382'/>
<id>urn:sha1:76a2e91f840c94309edeb4d61a17c738531ce382</id>
<content type='text'>
Add `unpropertize-kill-ring` function to remove text properties from
the kill ring when Emacs is exiting. This improves performance by
reducing unnecessary data retention. The function is hooked into
`kill-emacs-hook`.
</content>
</entry>
<entry>
<title>refactor: unify and simplify key binding setups</title>
<updated>2025-10-23T05:15:14+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2025-10-23T05:15:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=d22d004ed9bdc11dbc21be368f90384ed8b1b795'/>
<id>urn:sha1:d22d004ed9bdc11dbc21be368f90384ed8b1b795</id>
<content type='text'>
Optimized key binding configurations across modules for consistency
and reduced redundancy. Improved conditional requiring to handle
errors gracefully in `music-config.el`, ensuring robustness across
different machine environments. Eliminated comments clutter and
adjusted function definitions to adhere to revised standards.
</content>
</entry>
<entry>
<title>refactor: system-defaults: update key remapping method</title>
<updated>2025-10-20T16:32:53+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2025-10-20T16:32:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=6afe36bd22996e84ee384072a0ccc852dd2c97f2'/>
<id>urn:sha1:6afe36bd22996e84ee384072a0ccc852dd2c97f2</id>
<content type='text'>
Change key remapping from `global-set-key` to `keymap-global-set`
for mouse-wheel text scale.
</content>
</entry>
<entry>
<title>refactor: created specific org-dir variable for ~/sync/org</title>
<updated>2025-10-18T05:21:37+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2025-10-18T05:21:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=2e875a849085b3d34d028c7ef3ca780ff78019b7'/>
<id>urn:sha1:2e875a849085b3d34d028c7ef3ca780ff78019b7</id>
<content type='text'>
</content>
</entry>
<entry>
<title>changing repositories</title>
<updated>2025-10-12T16:47:26+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2025-10-12T16:47:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=092304d9e0ccc37cc0ddaa9b136457e56a1cac20'/>
<id>urn:sha1:092304d9e0ccc37cc0ddaa9b136457e56a1cac20</id>
<content type='text'>
</content>
</entry>
</feed>
