<feed xmlns='http://www.w3.org/2005/Atom'>
<title>dotemacs.git/tests/test-integration-mousetrap-mode-lighter-click.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-20T19:31:36+00:00</updated>
<entry>
<title>fix(mousetrap): use buffer-local keymaps via emulation-mode-map-alists</title>
<updated>2026-02-20T19:31:36+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-02-20T19:31:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs.git/commit/?id=e7b8c249b67ee999e506918a10ce7dd56e45ded0'/>
<id>urn:sha1:e7b8c249b67ee999e506918a10ce7dd56e45ded0</id>
<content type='text'>
minor-mode-map-alist is global, so the last buffer to set its keymap
won for all buffers. Dashboard's scroll+primary profile was immediately
overwritten by other buffers' disabled profile. Switch to
emulation-mode-map-alists with a buffer-local variable so each buffer
gets its own independent keymap. Fixes dashboard click navigation.
</content>
</entry>
<entry>
<title>test: add 86 new tests, fix 3 production bugs, fix 8 stale tests</title>
<updated>2026-02-16T01:58:15+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-02-16T01:58:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs.git/commit/?id=61bfb79f2c55983697f87b9ba3961a9fb46de2fe'/>
<id>urn:sha1:61bfb79f2c55983697f87b9ba3961a9fb46de2fe</id>
<content type='text'>
New test coverage (86 tests across 7 files):
- custom-case: 43 tests (title-case-region, upcase-dwim, downcase-dwim)
- custom-datetime: 10 tests (all insert methods with mocked time)
- config-utilities: 11 tests (format-build-time type branching)
- org-capture-config: 22 tests (date-prefix + event-content)

Production bugs found and fixed:
- custom-case: title-case-region crashes on whitespace/punctuation-only input
  (char-after returns nil when no word chars found)
- org-capture-config: browser branch missing empty-string guard on :initial
  plist value, producing stray newline in capture output
- mousetrap-mode: keymap never registered in minor-mode-map-alist, so mode
  was silently not blocking any mouse events. Now pushes/removes on toggle.

Additional fixes:
- local-repository: fix cons cell syntax bug in localrepo-initialize
  (was calling vars as functions instead of using cons)
- dupre-theme tests: update rainbow-delimiter color expectations
- mousetrap tests: update dashboard profile (primary-click → scroll+primary)
- music completion test: bind completion-ignore-case to prevent pollution
- Delete redundant interactive recording test (duplicate of ERT version)

Refactoring:
- org-capture-config: extract cj/org-capture--date-prefix pure function
  from cj/org-capture-format-event-headline for testability

Test checklist: todo.org updated to [11/25], removed untestable modules
</content>
</entry>
<entry>
<title>feat(mousetrap): Add profile-based architecture and clickable lighter</title>
<updated>2025-11-14T07:22:36+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2025-11-14T07:22:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs.git/commit/?id=1534be5b365431c885c4c5c09c7f157d94a9f942'/>
<id>urn:sha1:1534be5b365431c885c4c5c09c7f157d94a9f942</id>
<content type='text'>
Implement comprehensive profile-based system for selective mouse event
control with dynamic lighter and interactive toggling.

Features:
- Profile-based architecture (7 profiles: disabled, scroll-only,
  primary-click, scroll+primary, read-only, interactive, full)
- Mode-specific configuration (dashboard, pdf-view, nov)
- Dynamic keymap building based on current major mode
- Clickable modeline lighter (🐭 when off, 🪤 when on)
- Dynamic reconfiguration without Emacs reload
- Mode inheritance support via derived-mode-p

Profiles define which event categories are allowed:
- primary-click: Left mouse button only
- secondary-click: Middle and right buttons
- drags: Drag selections
- multi-clicks: Double and triple clicks
- scroll: Mouse wheel/trackpad scrolling

Default configuration:
- dashboard-mode: primary-click (left-click only)
- pdf-view-mode: full (all events)
- nov-mode: full (all events)
- Other modes: disabled (all events blocked)

Tests:
- 66 comprehensive tests across 5 test files
- Unit tests for profile lookup and keymap building
- Integration tests for mode switching and dynamic config
- Lighter functionality and click interaction tests
- All tests passing

Known issue:
- Dashboard-mode clicks blocked despite primary-click profile
- Documented in todo.org for investigation

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

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