<feed xmlns='http://www.w3.org/2005/Atom'>
<title>dotemacs/early-init.el, branch load-graph-classify-start</title>
<subtitle>My Emacs configuration
</subtitle>
<id>https://git.cjennings.net/dotemacs/atom?h=load-graph-classify-start</id>
<link rel='self' href='https://git.cjennings.net/dotemacs/atom?h=load-graph-classify-start'/>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/'/>
<updated>2026-05-16T07:35:38+00:00</updated>
<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: expand local ELPA mirror paths with expand-file-name</title>
<updated>2026-05-04T00:10:44+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-05-04T00:10:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=9acaf3899aedb69300a29a0d0c8b468e5f4ad729'/>
<id>urn:sha1:9acaf3899aedb69300a29a0d0c8b468e5f4ad729</id>
<content type='text'>
`(concat user-home-dir ".elpa-mirrors/")` was producing `/home/cjennings.elpa-mirrors/` because `getenv HOME` doesn't return a trailing slash on Linux. The local mirrors were silently dropping out of `package-archives` because `file-accessible-directory-p` couldn't find the bogus path.

I replaced the `concat` calls for `elpa-mirror-location` and `localrepo-location` with `expand-file-name`, which handles the slash for us. I also lifted the four per-archive subdirs into their own constants (`elpa-mirror-gnu-location`, `nongnu`, `melpa`, `stable-melpa`) so the archive registration block stops splicing `concat` strings inline.

I added `tests/test-early-init-paths.el`. It loads `early-init.el` against a temp HOME with the package side effects stubbed and asserts each constant and each `package-archives` entry resolves to the right path.
</content>
</entry>
<entry>
<title>fix: load freshness, wttrin path, compile-time package init</title>
<updated>2026-04-22T05:22:23+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-04-22T05:22:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=a80477572b267d2fbf1684d2ef4b34bdb560cfc3'/>
<id>urn:sha1:a80477572b267d2fbf1684d2ef4b34bdb560cfc3</id>
<content type='text'>
Set load-prefer-newer in early-init.el. Emacs was loading the older .elc files even when the .el source was newer, warning on every load but still using the stale byte code.

Point weather-config.el's wttrin :load-path at /home/cjennings/code/emacs-wttrin. The previous value was /home/cjennings/code/wttrin, which does not exist, so use-package could not load the package.

Add (package-initialize) to the Makefile compile target. Without it, batch byte-compile cannot see ELPA packages like git-gutter, git-timemachine, forge, and difftastic, which produced "Cannot load" warnings on every run.
</content>
</entry>
<entry>
<title>feat: Configure scratch buffer for org-mode with cursor at end</title>
<updated>2025-11-05T07:00:38+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2025-11-05T07:00:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=f6b6717ee39a9480a139f2e47a34f006fee07c60'/>
<id>urn:sha1:f6b6717ee39a9480a139f2e47a34f006fee07c60</id>
<content type='text'>
- Set initial-major-mode to org-mode for *scratch* buffer
- Add emacs-startup-hook to position cursor at end of buffer
- Update greeting message comment syntax from ;; to # for org-mode
- Re-enable debug flag reset on startup in early-init.el

This makes the scratch buffer immediately ready for org-mode note-taking
with cursor positioned for typing, eliminating manual mode switching and
cursor movement.
</content>
</entry>
<entry>
<title>feat: Complete modeline overhaul with custom segments and interactive features</title>
<updated>2025-11-04T00:01:24+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2025-11-04T00:01:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=97b03e6764539d586860382ca519060b386325e2'/>
<id>urn:sha1:97b03e6764539d586860382ca519060b386325e2</id>
<content type='text'>
Replaced mood-line with a custom, minimal modeline using only built-in
Emacs functionality to avoid native compilation issues.

**Architecture:**
- Named segment system using defvar-local for easy reordering
- Emacs 30 built-in right-alignment (mode-line-format-right-align)
- All segments marked as risky-local-variable for proper evaluation

**Features:**
- Color-coded buffer names (green=writeable, red=read-only, gold=overwrite)
- VC branch with git symbol (U+E0A0) and state-based coloring
- Position format: L:line C:col
- Help-echo tooltips on all segments
- Mouse click handlers for interactive actions
- String truncation in narrow windows (&lt; 100 chars)
- Active-window-only display for branch and misc-info

**Interactive Actions:**
- Buffer name: mouse-1 = prev-buffer, mouse-3 = next-buffer
- Major mode: mouse-1 = describe-mode
- Git branch: mouse-1 = vc-diff, mouse-3 = vc-root-diff

**Bug Fixes:**
- Disabled async native compilation to prevent "Selecting deleted buffer" errors
- Fixed difftastic loading by changing :demand to :defer
- Abstracted buffer status colors to user-constants.el for reuse

Inspired by Prot's modeline design patterns.
</content>
</entry>
<entry>
<title>refactor:init: remove network availability checks for package repos</title>
<updated>2025-11-01T17:56:59+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2025-11-01T17:56:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=388c516c25a7afb8cc77dbc951b34cd18807d205'/>
<id>urn:sha1:388c516c25a7afb8cc77dbc951b34cd18807d205</id>
<content type='text'>
Remove the logic for checking network availability to simplify the
process of enabling online package repositories. Online repositories
are now added regardless of network status. Reproducible installs
will continue to work offline by prioritizing local repositories.
Reported issues with package operations that fail gracefully when
offline are addressed.
</content>
</entry>
<entry>
<title>refactor:init: adjust startup performance optimizations</title>
<updated>2025-10-25T21:40:46+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2025-10-25T21:40:46+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=810bd343a3b237ada9684549613b0709f22cdd99'/>
<id>urn:sha1:810bd343a3b237ada9684549613b0709f22cdd99</id>
<content type='text'>
Enable error notifications by adjusting warning level. Simplify
startup performance by removing version control backend adjustments.
Restore initial settings after startup.
</content>
</entry>
<entry>
<title>fix:init: disable package signature checking</title>
<updated>2025-10-23T18:10:41+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2025-10-23T18:10:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=54b5fe997cef99ed9e8ea31e354379fc4114a66d'/>
<id>urn:sha1:54b5fe997cef99ed9e8ea31e354379fc4114a66d</id>
<content type='text'>
Commented out signature checking to avoid issues during package
installation.
</content>
</entry>
<entry>
<title>style:early-init: Correct indentation and adjust settings</title>
<updated>2025-10-23T05:15:38+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2025-10-23T05:15:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=b0a4cbd7148a2712d0b314d59a52b4fbdbe9dc2d'/>
<id>urn:sha1:b0a4cbd7148a2712d0b314d59a52b4fbdbe9dc2d</id>
<content type='text'>
Fixes inconsistent indentation in emacs-startup-hook lambda
function. Comments out warning level setting and reenables package
signature checking.
</content>
</entry>
<entry>
<title>test: adding disabled benchmarking code for performance testing</title>
<updated>2025-10-20T11:50:18+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2025-10-20T11:50:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=0aa93ee028eed39f5ff9f399b2d3748b4df68c3c'/>
<id>urn:sha1:0aa93ee028eed39f5ff9f399b2d3748b4df68c3c</id>
<content type='text'>
</content>
</entry>
</feed>
