aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* chore: Update todo.org with new inbox items and music-config improvementsCraig Jennings2025-11-012-18/+81
| | | | | | | | | | | | todo.org updates: - Added 2 new inbox items about printing keybindings - Reordered Method 1 tasks by priority - Removed blank lines (linter formatting) music-config.el improvements: - Added validation checks to cj/music--valid-file-p and cj/music--valid-directory-p - Fixed regex escaping in cj/music--m3u-file-tracks - Added new cj/music--append-track-to-m3u-file function for testing
* feat: Add session workflow framework and complete first inbox zeroCraig Jennings2025-11-017-56/+1512
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Created emacs-inbox-zero session definition and validated it by executing the workflow. Processed 5 inbox items to zero in 10 minutes. Session Framework: - Created docs/sessions/ directory for session definitions - Added create-session.org (meta-workflow for creating sessions) - Added emacs-inbox-zero.org (weekly inbox processing workflow) - Updated NOTES.org with terminology and session tracking Inbox Zero Results: - Deleted 1 duplicate task (chime fix) - Moved 2 to Method 1: org-capture performance [#B], EMMS keybindings [#D] - Moved 2 to someday-maybe: dashboard icons, persistence files - Recognized perfectionism pattern (V2MOM Obstacle #4) Learnings captured in living documents: - Save Q&A answers incrementally during session creation - Capture useful context during triage (impact estimates, theories) - Validation by execution catches what theory misses Files reorganized: - Renamed docs files to UPPERCASE for consistency - Removed SESSION-HANDOFF-ACTIVE-PROJECT.org (replaced by NOTES.org) V2MOM Metrics fulfilled: - Weekly triage consistency: ✓ (2025-11-01) - Active todo count: 29 items (working toward < 20)
* wip:org-roam: first pass at consult-org-roam, but disabledCraig Jennings2025-11-011-0/+30
|
* admin: adding to inboxCraig Jennings2025-11-011-1/+8
|
* chore:system-utils: Fix indentation and update history persistenceCraig Jennings2025-11-011-4/+31
| | | | | | | Fix inconsistent indentation in dired-mode section to improve code readability. Enhance history persistence settings by configuring 'savehist' to include additional variables and set history length limits, ensuring better session management.
* chore:scripts: update reset script to remove additional filesCraig Jennings2025-11-011-1/+4
| | | | | | Add removal of `emms` and `request` directories and several files to enhance the reset-to-first-launch script to ensure complete cleanup of user data.
* perf:system-defaults: Unpropertize kill ring on exitCraig Jennings2025-11-011-0/+7
| | | | | | | 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`.
* feat:mail-config: Add custom prefix to 'From' or 'To' headersCraig Jennings2025-11-011-0/+1
| | | | | | Set 'mu4e-headers-from-or-to-prefix' to use a custom arrow symbol as a prefix in email headers, improving visual distinction for 'From' or 'To' fields.
* refactor:init: remove network availability checks for package reposCraig Jennings2025-11-011-56/+10
| | | | | | | | | 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.
* feat:eshell: Add custom 'clear' function and set PAGER to 'cat'Craig Jennings2025-11-011-3/+11
| | | | | | Set the environment variable PAGER to 'cat' to disable pagination in eshell. Remove existing alias for 'clear' and introduce a new custom 'eshell/clear' function that clears the eshell buffer.
* feat:buffer: Add diffing buffer contents with saved fileCraig Jennings2025-11-011-0/+22
| | | | | | | | Introduce a new function `cj/diff-buffer-with-file` to compare current buffer with saved file version using unified diff format. Bind it to "C-; b D" for easy access. This enhances buffer management capabilities by allowing users to view changes before saving.
* chore: updating local repo packageCraig Jennings2025-11-012-1/+0
|
* admin: rework todo to focus on the v2momCraig Jennings2025-11-013-1678/+1832
| | | | | | - wrote a v2mom about what the config should deliver - focused the inbox only on tasks related to the v2mom - moved all other tasks to someday-maybe
* feat:keybindings: Implement consult line or repeat featureCraig Jennings2025-10-311-65/+75
| | | | | | | Add a new command `cj/consult-line-or-repeat` that calls `consult-line` or repeats the last search if invoked consecutively. Bind this command to "C-s". This enhances user experience by providing a quick way to repeat search actions.
* chore:custom-misc: update keybindings for word/char countCraig Jennings2025-10-311-4/+4
| | | | | | Change keybindings for counting words and characters to "# w" and "# c" to improve mnemonic efficiency. Update the corresponding which-key descriptions accordingly.
* feat:dirvish-config: Enable file marking for mu4e attachmentsCraig Jennings2025-10-311-0/+3
| | | | | Add 'turn-on-gnus-dired-mode' to 'dired-mode-hook' to facilitate marking files in Dirvish for attachment in mu4e emails.
* feat:custom-buffer-file: add mark, revert buffer keybindingsCraig Jennings2025-10-311-2/+6
| | | | | Added new keybindings for marking the whole buffer and reverting the buffer. Updated the descriptions to reflect these additions.
* feat:count-characters: Add character counting functionalityCraig Jennings2025-10-313-0/+423
| | | | | Introduce functions to count characters in a buffer or region. Bind new character counting function to "C-; C" in custom keymap.
* fix:eshell:allow eshell to load by removing dependency on itselfCraig Jennings2025-10-311-1/+0
|
* feat:mail:auto download mail every 10 minutesCraig Jennings2025-10-311-1/+2
|
* init:doc:correcting comment on video captureCraig Jennings2025-10-311-1/+1
|
* docs: Add active project handoff documentsCraig Jennings2025-10-315-4495/+3003
| | | | | | | | | | 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.
* fix(org-agenda): improve chime startup integrationCraig Jennings2025-10-301-16/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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)
* fix(dirvish): move deadgrep from D to G, preserve dired-do-delete on DCraig Jennings2025-10-292-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* feat(dirvish): add file duplication with 'd' key, move deadgrep to 'D'Craig Jennings2025-10-292-2/+33
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* feat: add debug infrastructure for config modulesCraig Jennings2025-10-293-0/+92
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* fix: update chime variable names after breaking changesCraig Jennings2025-10-291-2/+2
| | | | | | | | | | | | 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.
* feat:org-gcal: Auto-save files after sync completionCraig Jennings2025-10-291-1/+15
| | | | | | | 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.
* refactor:script: simplify elisp compiled file deletion scriptCraig Jennings2025-10-291-20/+3
| | | | | | Remove user confirmation and file listing prompt. Simplify the script by directly deleting .eln and .elc files in the specified location and confirming completion.
* refactor:org-agenda-config: Update chime packageCraig Jennings2025-10-291-15/+12
| | | | | | | 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.
* docs: add test future-proofing and large-scale refactoring lessonsCraig Jennings2025-10-291-0/+114
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* feat: ensure elisp-lint auto-installs via use-packageCraig Jennings2025-10-291-1/+4
| | | | | | 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.
* feat:org-agenda: Enhance chime notifications and modelineCraig Jennings2025-10-281-4/+16
| | | | | | | 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.
* maint:loading org-msg from development local repo for testingCraig Jennings2025-10-281-1/+2
|
* refactor:selection-framework: Remove dead code and enhance configsCraig Jennings2025-10-281-14/+11
| | | | | | | 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.
* chore:org-roam: Defer org-roam package loading by 1 secondCraig Jennings2025-10-281-0/+1
| | | | | | | 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.
* refactor:prog-general: Simplify yasnippet configurationCraig Jennings2025-10-281-6/+2
| | | | | | | 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.
* feat:popper: Add async-native-compile-log buffer to popup rulesCraig Jennings2025-10-271-0/+1
| | | | | Include the `*Async-native-compile-log*` buffer in the list of popup rules for improved buffer management.
* maint:vc install org-msg, disable debugging on org-gcalCraig Jennings2025-10-273-10/+4
|
* maint: update localrepo packagesCraig Jennings2025-10-273-0/+2
|
* refactor: Rename custom-file-buffer to custom-buffer-fileCraig Jennings2025-10-2712-200/+185
| | | | | | | | | 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'.
* docs:quality-engineer: add to integration test guidelines + examplesCraig Jennings2025-10-271-7/+360
| | | | | | | | | 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.
* maint:localrepo:latest packagesCraig Jennings2025-10-277-2/+4
|
* maint:weather: update wttrin installation to vc-installCraig Jennings2025-10-271-2/+1
| | | | | Remove local load-path in favor of vc installation for wttrin to use the source (latest revision).
* maint:org-gcal: Add forward declarations and update org-gcal usageCraig Jennings2025-10-271-1/+7
| | | | | | 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).
* test:org-gcal: Add mock tests for API request captureCraig Jennings2025-10-271-0/+112
| | | | | | | 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.
* chore:init.el: remove commented import for show-kill-ringCraig Jennings2025-10-271-1/+0
| | | | | Clean up the code by removing an unnecessary commented-out import line for show-kill-ring in the initialization file.
* docs:quality-engineer: Revise testing guidelinesCraig Jennings2025-10-271-3/+16
| | | | | | 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.
* feat:which-key: Add descriptive labels for custom keymapsCraig Jennings2025-10-2734-30/+322
| | | | | | | | | | | | 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.
* chore(init): remove test status comments from require statementsCraig Jennings2025-10-271-13/+13
| | | | | Removed comments indicating test status for required modules to clean up and simplify the init.el file.