summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
5 dayschore:custom-misc: update keybindings for word/char countCraig Jennings
Change keybindings for counting words and characters to "# w" and "# c" to improve mnemonic efficiency. Update the corresponding which-key descriptions accordingly.
5 daysfeat:dirvish-config: Enable file marking for mu4e attachmentsCraig Jennings
Add 'turn-on-gnus-dired-mode' to 'dired-mode-hook' to facilitate marking files in Dirvish for attachment in mu4e emails.
5 daysfeat:custom-buffer-file: add mark, revert buffer keybindingsCraig Jennings
Added new keybindings for marking the whole buffer and reverting the buffer. Updated the descriptions to reflect these additions.
5 daysfeat:count-characters: Add character counting functionalityCraig Jennings
Introduce functions to count characters in a buffer or region. Bind new character counting function to "C-; C" in custom keymap.
5 daysfix:eshell:allow eshell to load by removing dependency on itselfCraig Jennings
5 daysfeat:mail:auto download mail every 10 minutesCraig Jennings
5 daysinit:doc:correcting comment on video captureCraig Jennings
5 daysdocs: Add active project handoff documentsCraig Jennings
Introduce detailed session handoff documents for Craig's Emacs configuration project. These provide strategic clarity using the V2MOM framework and outline current progress, project goals, recommended actions, and key insights. This addition aims to streamline handovers and ensure continuity between sessions, facilitating a systematic approach to addressing identified challenges and opportunities for improvement.
6 daysfix(org-agenda): improve chime startup integrationCraig Jennings
This commit fixes timing issues with chime.el startup and simplifies configuration after chime.el's validation improvements. ## Changes **1. Fixed org-agenda lazy loading issue** - Added `:demand t` to org-agenda use-package - Ensures org-agenda loads before chime tries to use it - Prevents "org-agenda not available" errors **2. Cleaned up duplicate rebuild hooks** - Removed duplicate emacs-startup-hook with idle-timer - Kept single emacs-startup-hook for rebuild - Simpler, more maintainable configuration **3. Simplified chime configuration** - Restored `(chime-mode 1)` in use-package :config - Removed conditional fboundp check (no longer needed) - Works with chime.el's new deferred validation - Fixed `:after` clause (removed org-agenda dependency) **4. Fixed formatting issues** - Removed stray 's' character in add-hook indentation - Consistent indentation throughout ## Integration with chime.el v0.6.0 This commit pairs with chime.el's new features: - chime-startup-delay (default 10 sec) gives rebuild hook time to run - Validation moved to first check (no startup blocking) - Clean user experience with no false warnings ## Timeline ``` Time 0s: Emacs starts Time 0s: org-agenda loads (:demand t) Time 0s: chime-mode 1 (starts timer, no validation) Time 0.1s: emacs-startup-hook → rebuild org-agenda-files Time 10s: First chime-check → validates, finds events Time 24s: Modeline populated with events ``` **Result:** 24 second startup (vs previous 463 seconds - 95% improvement) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
7 daysfix(dirvish): move deadgrep from D to G, preserve dired-do-delete on DCraig Jennings
The previous commit incorrectly moved deadgrep to 'D', which conflicts with the important dired-do-delete command (immediate delete of marked files). This commit moves deadgrep to 'G' instead. ## Changes **prog-general.el:** - Move cj/deadgrep-here from 'D' to 'G' (was dired-do-chgrp, rarely used) **dirvish-config.el:** - Updated Commentary to document both 'D' and 'G' keybindings - 'D' remains dired-do-delete (standard dired immediate delete) - 'G' is now deadgrep search ## Final Keybinding Map | Key | Binding | Purpose | |-----|-------------------------------|--------------------------------| | d | cj/dirvish-duplicate-file | Duplicate with "-copy" suffix | | D | dired-do-delete | Delete marked files (standard) | | g | dirvish-quick-access | Quick directory menu | | G | cj/deadgrep-here | Search with deadgrep | Capital G is mnemonic for "Grep" and doesn't conflict with important dired commands. dired-do-chgrp is rarely used and not a loss. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
7 daysfeat(dirvish): add file duplication with 'd' key, move deadgrep to 'D'Craig Jennings
This commit adds a convenient file duplication function to dirvish and reorganizes keybindings to avoid conflicts. ## Changes **1. New function: cj/dirvish-duplicate-file (dirvish-config.el:150)** Duplicates the file at point with "-copy" suffix before the extension: - report.pdf → report-copy.pdf - script.el → script-copy.el - README → README-copy Features: - Prevents duplicating directories (files only) - Checks if target exists and prompts to overwrite - Refreshes buffer automatically after copying - Shows clear message with old and new names **2. Keybinding changes** dirvish-config.el: - Bound 'd' to cj/dirvish-duplicate-file (was dired-flag-file-deletion) - Updated Commentary section to document new binding prog-general.el: - Moved cj/deadgrep-here from 'd' to 'D' (capital D) - More mnemonic: D for Deadgrep - Avoids conflict with new duplicate function ## Rationale The 'd' key is prime real estate in file managers, and duplicating files is a very common operation. The standard dired-flag-file-deletion is still available via 'x' or the mark-and-delete workflow. Deadgrep on 'D' is more discoverable (capital D for Deadgrep) and less likely to be pressed accidentally. ## Usage In dirvish, navigate to a file and press: - 'd' - Duplicate file with "-copy" suffix - 'D' - Search with deadgrep in current directory 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
7 daysfeat: add debug infrastructure for config modulesCraig Jennings
This commit establishes a pattern for organizing debug code in separate files that can be enabled/disabled via a central toggle. ## Changes **1. Added debug toggle to user-constants.el** New variable `cj/debug-modules` controls which modules load debug functions: - Set to nil (default): No debug functions loaded - Set to list of symbols: Load debug for specific modules Example: (setq cj/debug-modules '(org-agenda mail)) - Set to t: Load all debug modules Example: (setq cj/debug-modules t) Placed early in user-constants.el so it's available before other modules load. **2. Created org-agenda-config-debug.el** New debug file contains: - `cj/org-agenda-debug-dump-files` - Shows all org-agenda-files with status, file sizes, and modification times - `cj/org-agenda-debug-rebuild-timing` - Measures rebuild performance and reports detailed timing statistics - `cj/log-silently` - Helper function to write to *Messages* without echo All functions use ;;;###autoload for easy invocation before explicit loading. **3. Added conditional require to org-agenda-config.el** Checks `cj/debug-modules` and conditionally loads org-agenda-config-debug.el: ```elisp (when (or (eq cj/debug-modules t) (memq 'org-agenda cj/debug-modules)) (require 'org-agenda-config-debug ...)) ``` ## Benefits **Cleaner separation of concerns:** - Production code stays in main config files - Debug code isolated in *-debug.el files - Easy to enable/disable debugging per module **Reusable pattern:** - Can be applied to any config module (mail, chime, etc.) - Consistent naming: <module>-debug.el - Consistent namespace: cj/<module>-debug-* **Zero overhead when disabled:** - Debug files not loaded unless explicitly enabled - No performance impact on normal usage ## Usage To enable org-agenda debug functions: ```elisp ;; In user-constants.el or early-init.el (setq cj/debug-modules '(org-agenda)) ``` Then restart Emacs and run: - M-x cj/org-agenda-debug-dump-files - M-x cj/org-agenda-debug-rebuild-timing 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
7 daysfix: update chime variable names after breaking changesCraig Jennings
Update configuration to use renamed chime variables: - chime-modeline-lookahead → chime-modeline-lookahead-minutes - Update comment referencing chime-tooltip-lookahead-hours These variables were renamed in chime.el commit 2a89893 (feat: comprehensive test improvements and lookahead refactoring). Fixes issue where modeline wasn't displaying after Emacs restart because the old variable name had no effect. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
7 daysfeat:org-gcal: Auto-save files after sync completionCraig Jennings
Add a function to automatically save all org-gcal files after synchronization completes. This ensures that any changes are persisted, enhancing data consistency. Advise `org-gcal--sync-unlock` to trigger auto-saving upon sync completion.
7 daysrefactor:script: simplify elisp compiled file deletion scriptCraig Jennings
Remove user confirmation and file listing prompt. Simplify the script by directly deleting .eln and .elc files in the specified location and confirming completion.
7 daysrefactor:org-agenda-config: Update chime packageCraig Jennings
Remove unnecessary blank lines in function docstrings to enhance readability. Update chime package settings to use a local version instead of the latest from GitHub, and adjust modeline lookahead and tooltip settings for better event visibility.
7 daysdocs: add test future-proofing and large-scale refactoring lessonsCraig Jennings
Document key lessons from chime.el timestamp refactoring project: ## New Sections Added **Test Future-Proofing & Time-Based Testing** - Dynamic timestamp generation patterns and benefits - Never hardcode dates in tests - use relative time helpers - Mock time via function substitution (with-test-time pattern) - Code examples showing before/after patterns **Large-Scale Test Refactoring Strategy** - Strategic planning: tackle biggest challenges first - Execution approach: maintain 100% pass rate throughout - Project management: track progress visibly, celebrate milestones - Know when you're done: not all files need changes **Real-World Example** - chime.el project: 23 files, 339 tests - 16 files refactored (251 tests), 7 files skipped (88 tests) - 100% pass rate maintained across all refactoring - Result: future-proof test suite that never expires ## Key Insights - "Tackle biggest challenge first" eliminates intimidation - Work in batches but commit individually for clean history - Don't let perfectionism create unnecessary work - Strategic approach builds momentum and confidence Added "Hardcoded dates in tests" to Red Flags section. These lessons capture the methodology that successfully completed the hardest refactoring task in the project. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
7 daysfeat: ensure elisp-lint auto-installs via use-packageCraig Jennings
Add :ensure t to elisp-lint use-package declaration to guarantee it's always installed. This supports chime.el development workflow where 'make lint' provides comprehensive code quality checks. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
8 daysfeat:org-agenda: Enhance chime notifications and modelineCraig Jennings
Extended the modeline display lookahead to 2 hours and added new formatting for modeline content, including a compact time-until format and title truncation for long event titles. Disabled chime sound notifications for a quieter experience.
8 daysmaint:loading org-msg from development local repo for testingCraig Jennings
8 daysrefactor:selection-framework: Remove dead code and enhance configsCraig Jennings
Remove unused comment and fix consult-line keybinding override. Update completion styles with 'basic' for better flexibility. Clean up Yasnippet integration comments. Add more descriptive which-key labels to improve usability.
8 dayschore:org-roam: Defer org-roam package loading by 1 secondCraig Jennings
This change defers the loading of the org-roam package by 1 second. This is a workaround to org-roam not loading soon enough after launch to have created the necessary capture templates. I'll fix that in an upcoming org-roam refactor session.
8 daysrefactor:prog-general: Simplify yasnippet configurationCraig Jennings
Replace the `setq yas-snippet-dirs` with `list` function for better readability and add `yas-reload-all` to ensure snippets are reloaded. Remove `ivy-yasnippet` configuration as it is not required.
8 daysfeat:popper: Add async-native-compile-log buffer to popup rulesCraig Jennings
Include the `*Async-native-compile-log*` buffer in the list of popup rules for improved buffer management.
8 daysmaint:vc install org-msg, disable debugging on org-gcalCraig Jennings
8 daysmaint: update localrepo packagesCraig Jennings
8 daysrefactor: Rename custom-file-buffer to custom-buffer-fileCraig Jennings
Renamed the module 'custom-file-buffer' to 'custom-buffer-file' to ensure consistency across the codebase. This change affects module imports and test files. Additionally, new module 'system-commands.el' has been created to handle system power and session management commands, removing these functionalities from 'wip.el'.
8 daysdocs:quality-engineer: add to integration test guidelines + examplesCraig Jennings
Added detailed guidelines and examples for writing effective integration tests in the quality-engineer documentation. This includes naming conventions, docstring requirements, file structure, and when to use integration tests. Expanded sections cover balancing test types and organizing test files for clarity and maintainability.
8 daysmaint:localrepo:latest packagesCraig Jennings
8 daysmaint:weather: update wttrin installation to vc-installCraig Jennings
Remove local load-path in favor of vc installation for wttrin to use the source (latest revision).
8 daysmaint:org-gcal: Add forward declarations and update org-gcal usageCraig Jennings
Forward declare internal org-gcal variables and functions to improve code clarity. Update use-package declaration with version control information to use my fork of org-gcal (fixes, better testing).
9 daystest:org-gcal: Add mock tests for API request captureCraig Jennings
Add a new test file `test-org-gcal-mock.el` to mock and capture what org-gcal sends to the Google Calendar API. This enables debugging of sync issues without making real API calls. Includes methods to capture HTTP requests and verify API call details.
9 dayschore:init.el: remove commented import for show-kill-ringCraig Jennings
Clean up the code by removing an unnecessary commented-out import line for show-kill-ring in the initialization file.
9 daysdocs:quality-engineer: Revise testing guidelinesCraig Jennings
Expand file organization to include unit and integration test directions. Provide detailed naming conventions with examples. Clarify expected result naming to ensure tests are self-documenting.
9 daysfeat:which-key: Add descriptive labels for custom keymapsCraig Jennings
Enhance which-key integration by providing detailed descriptions for new key bindings across multiple modules. This improves the usability of custom keymaps by clarifying the purpose of each keybinding, making it easier for users to navigate and understand different menus and options available within the configuration. This update ensures that all custom keymaps now display a descriptive label in the which-key popup to explain their functionality, aiding users in identifying keymap purposes promptly.
9 dayschore(init): remove test status comments from require statementsCraig Jennings
Removed comments indicating test status for required modules to clean up and simplify the init.el file.
9 daysfeat:test-runner: Enhance ERT test runner with focus/unfocus supportCraig Jennings
Add comprehensive documentation and workflow details for the ERT test runner, including integration with Projectile projects for automatic test discovery. Refactor code to support focus/unfocus workflows, allowing developers to efficiently manage test execution by focusing on specific test files. Introduce internal utility functions `cj/test--do-*` to modularize logic for file operations and focus management, improving code maintainability. Add new tests in `test-test-runner.el` to validate the enhanced functionality, ensuring robust handling of focus operations and test execution scenarios.
9 daysfeat:test-runner: Enhance ERT test runner with focus/unfocus supportCraig Jennings
Add comprehensive documentation and workflow details for the ERT test runner, including integration with Projectile projects for automatic test discovery. Refactor code to support focus/unfocus workflows, allowing developers to efficiently manage test execution by focusing on specific test files. Introduce internal utility functions `cj/test--do-*` to modularize logic for file operations and focus management, improving code maintainability. Add new tests in `test-test-runner.el` to validate the enhanced functionality, ensuring robust handling of focus operations and test execution scenarios.
9 daysfeat:test-runner: Enhance ERT test runner with focus/unfocus supportCraig Jennings
Add comprehensive documentation and workflow details for the ERT test runner, including integration with Projectile projects for automatic test discovery. Refactor code to support focus/unfocus workflows, allowing developers to efficiently manage test execution by focusing on specific test files. Introduce internal utility functions `cj/test--do-*` to modularize logic for file operations and focus management, improving code maintainability. Add new tests in `test-test-runner.el` to validate the enhanced functionality, ensuring robust handling of focus operations and test execution scenarios.
9 daysfeat:browser-config: Integrate browser configuration and add testsCraig Jennings
- Move `browser-config` from 'Modules In Test' to active modules - Refactor browser handling functions for better error handling: - Introduce `cj/--do-apply-browser-choice` and - `cj/--do-choose-browser` Return status symbols for success and - error cases Add comprehensive unit tests in - `tests/test-browser-config.el` Focus on internal `cj/--do-*` - functions and file I/O using temp files Validate return values and - ensure isolated tests with setup/teardown functions Ensure - consistent handling of browser configurations and improve - initialization logic
9 daysfeat:jumper: Integrate and enhance 'jumper' module with testsCraig Jennings
Enable 'jumper' module by uncommenting its require statement in init.el. Enhance 'jumper' by adding detailed documentation, refactoring logic into internal functions, and updating keybinding setup for better usability. Integrate 'which-key' for improved keybinding assistance. Add comprehensive unit tests for 'jumper' functionalities to ensure reliability.
9 daysfeat:text-generation: improve and rename lorem generatorCraig Jennings
Rename `lorem-generator.el` to `lorem-optimum.el` for fun. Enhance text tokenization, Markov chain learning, and text generation functions. Introduce new configuration variables for training files and improve efficiency with vectorized access. Add comprehensive benchmarks and unit tests under `tests/`. This improves performance and lays groundwork for further extensions.
9 dayschore: Remove redundant autoload directives from modulesCraig Jennings
Remove unnecessary autoload directives from various functions across multiple modules, cleaning up the codebase and improving readability. These directives were redundant and not needed for the current project setup.
9 daysfeat:org-contacts: Enhance email parsing and add testsCraig Jennings
Add a new function `cj/--parse-email-string` to parse email strings with multiple formats and separators, ensuring robust handling of real-world email variations. This commit also includes extensive tests for the new parsing function, covering normal, edge, and special cases, ensuring comprehensive test coverage and reliability.
9 daysfeat:org-webclipper: Add smart heading adjustmentCraig Jennings
Introduce `cj/--process-webclip-content` to enhance webclip processing by removing the first heading and demoting subsequent headings, preserving page structure. Includes tests for thorough validation of the new functionality.
9 dayschore:init.el: update comments and modules loading statusCraig Jennings
Refined comments to note completion of module tests. Removed outdated function and disabled a module. Adjusted 'org-roam-config' for test addition.
9 dayschore:org-agenda: Remove outdated test file and unused codeCraig Jennings
Deleted `test-custom-org-agenda-functions.el.disabled` as it was obsolete. Removed commented-out global keybinding in `org-agenda-config.el` for clarity.
9 daysfeat:org-roam-config: Add new utilities and testsCraig Jennings
Introduce several utility functions for org-roam configuration, including `cj/--generate-roam-slug`, `cj/--demote-org-subtree`, and `cj/--format-roam-node`. These enhance title-to-slug conversion, subtree demotion, and node file formatting. Additionally, include comprehensive test cases for these functions to ensure correctness and reliability in various scenarios.
9 daysfeat:text-enclose): Enhance text enclosure: new functions and testsCraig Jennings
Add line manipulation utilities: `append-to-lines`, `prepend-to-lines`, `indent-lines`, and `dedent-lines`. Add tests for these functions and improve existing text wrapping functionalities with `wrap`, `unwrap`, and `surround` implementations. Extend keymap for easier access to these functions.
9 daysfeat+test: custom-ordering: line manipulation utils + testsCraig Jennings
Introduce new functions cj/toggle-quotes, cj/reverse-lines, and cj/number-lines for line manipulation. cj/toggle-quotes swaps quotes within a region, cj/reverse-lines reverse the line order, and cj/number-lines adds line numbers with a customizable format, supporting zero-padding. Update keymap with new bindings. Add comprehensive tests for each function.