<feed xmlns='http://www.w3.org/2005/Atom'>
<title>dotemacs.git/modules/weather-config.el, branch v0.7.2</title>
<subtitle>my Emacs configuration
</subtitle>
<id>https://git.cjennings.net/dotemacs.git/atom?h=v0.7.2</id>
<link rel='self' href='https://git.cjennings.net/dotemacs.git/atom?h=v0.7.2'/>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs.git/'/>
<updated>2026-02-20T13:16:46+00:00</updated>
<entry>
<title>chore: enable wttrin debug, clean up lorem-optimum startup</title>
<updated>2026-02-20T13:16:46+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-02-20T13:16:46+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs.git/commit/?id=a180ba28b966f080d2692d15eef6fb387c074ac3'/>
<id>urn:sha1:a180ba28b966f080d2692d15eef6fb387c074ac3</id>
<content type='text'>
- Enable wttrin-debug in weather-config.el
- Remove redundant lipsum chain reset at startup (silences noisy message)
- Improve learn message to identify lorem-optimum as source
- Delete unused lipsum-generator.el (superseded by lorem-optimum)
</content>
</entry>
<entry>
<title>fix(terminal): add console/mosh compatibility</title>
<updated>2026-01-24T04:42:10+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-01-24T04:42:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs.git/commit/?id=7854ad74addd9bcae905def8fe4f844fb5c08678'/>
<id>urn:sha1:7854ad74addd9bcae905def8fe4f844fb5c08678</id>
<content type='text'>
- Create terminal-compat.el for arrow key escape sequences
- Fix M-uppercase keybindings (M-O → M-S-o, etc.) that conflicted
  with terminal escape sequences ESC O A/B/C/D
- Add GUI-only guards for emojify and icon rendering
- 18 keybindings updated across 13 modules with override comments
</content>
</entry>
<entry>
<title>chore(weather): update location list</title>
<updated>2025-11-21T14:35:16+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2025-11-21T14:35:16+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs.git/commit/?id=42e3fd284600c84c4158bee6bb0092eba99bece5'/>
<id>urn:sha1:42e3fd284600c84c4158bee6bb0092eba99bece5</id>
<content type='text'>
- Add Huntington Beach, CA
- Reorder locations

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>fix: Reapply dashboard, weather config fixes and todo updates</title>
<updated>2025-11-14T08:40:46+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2025-11-14T08:40:46+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs.git/commit/?id=b22de457ca963f015289db052dd11049a4c355b9'/>
<id>urn:sha1:b22de457ca963f015289db052dd11049a4c355b9</id>
<content type='text'>
- dashboard-config.el: Change "Ebooks" to "Books" label
- weather-config.el: Fix variable name to wttrin-favorite-location
- todo.org: Add music player and mousetrap investigation tasks
- history: Update command history

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Revert "checking in modified/removed tests and other misc changes"</title>
<updated>2025-11-14T08:35:00+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2025-11-14T08:35:00+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs.git/commit/?id=0febc3bb65462fd95a75387c2ec97ffa374efc00'/>
<id>urn:sha1:0febc3bb65462fd95a75387c2ec97ffa374efc00</id>
<content type='text'>
This reverts commit 9d55ed149e100b4fb3ef6f5a79d263dcb26ce835.
</content>
</entry>
<entry>
<title>checking in modified/removed tests and other misc changes</title>
<updated>2025-11-14T08:31:16+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2025-11-14T08:31:16+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs.git/commit/?id=9d55ed149e100b4fb3ef6f5a79d263dcb26ce835'/>
<id>urn:sha1:9d55ed149e100b4fb3ef6f5a79d263dcb26ce835</id>
<content type='text'>
</content>
</entry>
<entry>
<title>refactor:weather-config: streamline wttrin configuration</title>
<updated>2025-11-09T21:35:24+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2025-11-09T21:35:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs.git/commit/?id=89805ee1bd94a932c7d47594c6ccb1b1d64abd1f'/>
<id>urn:sha1:89805ee1bd94a932c7d47594c6ccb1b1d64abd1f</id>
<content type='text'>
Demand wttrin loading for immediate mode-line initialization at
startup. Switch to setopt for customizable variables and simplify
mode activation logic. Remove explicit autoload and use-package
xterm-color as a dependency. Adjust refresh interval and update
default locations list.
</content>
</entry>
<entry>
<title>feat: Fix modeline lag and add org multi-level sort with comprehensive tests</title>
<updated>2025-11-08T22:11:58+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2025-11-08T22:11:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs.git/commit/?id=8176eff73b826f7fec9d7f458f7d2f36f4d12e58'/>
<id>urn:sha1:8176eff73b826f7fec9d7f458f7d2f36f4d12e58</id>
<content type='text'>
Performance improvement and new feature with full test coverage.

## Changes

### 1. Fix modeline line/column position lag (#A priority)
- Replace expensive line-number-at-pos with cached %l/%c format specifiers
- Enable line-number-mode explicitly for caching
- Result: Instant modeline updates, zero performance overhead
- Files: modules/modeline-config.el:81-83, modules/ui-config.el:53

### 2. Implement multi-level org sorting
- New function: cj/org-sort-by-todo-and-priority
- Sorts by TODO status (TODO before DONE) AND priority (A→B→C→D)
- Uses stable sorting: priority first, then TODO state
- Gracefully handles empty sections (no error)
- Bound to C-; o o (ordering → org sort)
- Files: modules/org-config.el:278-299, modules/custom-ordering.el:253,267

### 3. Comprehensive ERT test suite (12/12 passing)
- Normal cases: Mixed TODO/DONE, multiple of same type, same priority
- Boundary cases: Empty sections, single entries, no priorities
- Error cases: Non-org-mode buffer
- Test file: tests/test-org-sort-by-todo-and-priority.el

### 4. Testing improvements discovered
- Disable org-mode hooks to avoid package dependencies in batch mode
- org-sort-entries must be called from parent heading
- Preserve priority cookie in org-get-heading (t t nil t)
- Add condition-case to handle "Nothing to sort" gracefully

### 5. Minor cleanup
- Comment out chime-debug setting (org-agenda-config.el:267)
- Mark modeline lag task as DONE in todo.org

## Technical Details

Modeline optimization:
- line-number-at-pos is O(n) where n = current line
- %l and %c are O(1) lookups from cached values

Org sorting algorithm uses stable sort:
1. Sort by priority (A, B, C, D, unprioritized)
2. Sort by TODO status (preserves priority order within groups)
Result: TODO [#A], TODO [#B], DONE [#A], DONE [#B], etc.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>feat: Add LanguageTool integration for comprehensive grammar checking</title>
<updated>2025-11-05T05:26:42+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2025-11-05T05:26:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs.git/commit/?id=eda461086e94265b67ab5b21032e7ee23112ad87'/>
<id>urn:sha1:eda461086e94265b67ab5b21032e7ee23112ad87</id>
<content type='text'>
Integrated LanguageTool as an on-demand grammar checker, replacing the
previously disabled proselint checker.

Changes:
- Created scripts/languagetool-flycheck wrapper for flycheck integration
  - Converts LanguageTool JSON output to flycheck format
  - Includes suggestions in error messages
  - 30-second timeout for large files

- Updated modules/flycheck-config.el:
  - Defined languagetool checker for text/markdown/org/gfm modes
  - Updated cj/flycheck-prose-on-demand to use LanguageTool
  - Added installation instructions (sudo pacman -S languagetool)
  - Improved documentation clarity

- Usage: Press C-; ? in org/text/markdown files
  - Enables flycheck with LanguageTool
  - Shows errors in *Flycheck errors* buffer
  - On-demand only (no performance impact)

- Updated docs/NOTES.org:
  - Added best practice: Test Emacs launch after non-trivial changes
  - Example: emacs --eval "(kill-emacs)"
  - Catches startup errors before committing

- Disabled weather debug mode (wttrin-debug nil)

- Marked todo.org grammar checker task as DONE

LanguageTool catches real grammar issues (subject-verb agreement, tense,
punctuation, common mistakes) that proselint missed.

Installation: LanguageTool 6.6 (222MB) from Arch repos
Dependencies: Python 3 (for wrapper script)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>fix: Resolve async buffer error and improve modeline spacing</title>
<updated>2025-11-04T23:23:50+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2025-11-04T23:23:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs.git/commit/?id=b520add37ae23f0411e2c6512fe6b8d7418bd525'/>
<id>urn:sha1:b520add37ae23f0411e2c6512fe6b8d7418bd525</id>
<content type='text'>
- Fixed critical "Selecting deleted buffer" error on startup
  - wttrin-mode-line-mode now activates after init completes
  - Uses after-init-hook to prevent async buffer deletion
  - Weather widget loads safely after Emacs finishes initializing

- Improved modeline right-side spacing
  - Added 2 non-breaking spaces after misc-info segment
  - Prevents weather icon from appearing flush with edge
  - Non-breaking spaces survive right-align trimming

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude &lt;noreply@anthropic.com&gt;
</content>
</entry>
</feed>
