| Age | Commit message (Collapse) | Author |
|
Changes:
- Changed dashboard to :demand t (load immediately instead of defer)
- Reduced bookmark display from 15 to 10 items
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
|
Updated chime configuration for severity refactor:
- Replaced chime-alert-time and chime-alert-severity with
chime-alert-intervals '((5 . medium) (0 . medium))
- Changed polling interval from 60s to 30s for faster response
- Added chime-day-wide-time "09:00" for all-day event notifications
- Removed settings that match defaults (play-sound, keyword filters, etc.)
- Changed chime-debug from t to nil
All notifications now use medium urgency.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
|
Fixed two critical bugs preventing Emacs from launching after fresh clone:
1. prog-go.el: Moved go-ts-mode-map keybinding from :bind clause
- The :bind macro tried to reference go-ts-mode-map before it was loaded
- Moved "C-; f" gofmt binding into cj/go-mode-keybindings function
- Function executes via hook after mode loads, ensuring keymap exists
2. org-config.el: Moved function definitions before use-package block
- cj/org-general-settings, cj/org-appearance-settings, and
cj/org-todo-settings were called in :config but defined after
- Moved all three function definitions before (use-package org)
- Functions now defined before :config section tries to call them
Both fixes follow the pattern of ensuring dependencies exist before use.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
|
Changed from bidirectional "org" mode to "gcal" mode to avoid sync conflicts.
This prevents HTTP 412 errors on recurring events and HTTP 400 errors on
modified events.
Google Calendar is now authoritative:
- org-gcal-managed-newly-fetched-mode: "gcal" (was "org")
- org-gcal-managed-update-existing-mode: "gcal" (was "org")
Benefits:
- No more version conflicts on recurring events
- Cleaner sync without errors
- Google Calendar changes always win
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
|
org-gcal-config.el:
- Add use-package declarations for deferred and oauth2-auto
- Ensures dependencies are automatically installed on fresh systems
- Fixes "Cannot open load file" errors when syncing
org-contacts-config.el:
- Add automatic birthday timestamp insertion via capture template
- Parse YYYY-MM-DD or MM-DD birthday formats
- Insert yearly repeating timestamps after properties drawer
- Add NICKNAME and NOTE fields to capture template
org-agenda-config.el:
- Enable chime-debug mode for troubleshooting
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
|
Explicitly set chime-debug to nil in :init section.
Matches new chime.el default (changed from t to nil in recent commit).
Clean production setup - debug mode available by changing to t when needed.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
|
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
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
|
|
|
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.
|
|
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`.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
Change keybindings for counting words and characters to "# w" and "#
c" to improve mnemonic efficiency. Update the corresponding
which-key descriptions accordingly.
|
|
Add 'turn-on-gnus-dired-mode' to 'dired-mode-hook' to facilitate
marking files in Dirvish for attachment in mu4e emails.
|
|
Added new keybindings for marking the whole buffer and reverting the
buffer. Updated the descriptions to reflect these additions.
|
|
Introduce functions to count characters in a buffer or region. Bind
new character counting function to "C-; C" in custom keymap.
|
|
|
|
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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.
|
|
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.
|
|
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>
|
|
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.
|
|
|
|
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.
|
|
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.
|
|
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.
|
|
Include the `*Async-native-compile-log*` buffer in the list of popup
rules for improved buffer management.
|
|
|
|
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'.
|
|
Remove local load-path in favor of vc installation for wttrin to use
the source (latest revision).
|
|
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).
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
- 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
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
Deleted `test-custom-org-agenda-functions.el.disabled` as it was
obsolete. Removed commented-out global keybinding in
`org-agenda-config.el` for clarity.
|
|
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.
|