summaryrefslogtreecommitdiff
path: root/modules
AgeCommit message (Collapse)Author
46 hoursfeat: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.
47 hourschore: 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.
47 hoursfeat: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.
47 hoursfeat: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.
47 hourschore: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.
47 hoursfeat: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.
48 hoursfeat: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.
2 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.
2 daysfeat+test:ordering: add prefix/suffix to arrayify/convenience funcsCraig Jennings
Enhanced cj/--arrayify with optional prefix/suffix parameters for flexible formatting: - prefix: string to prepend (e.g., "[" or "(") - suffix: string to append (e.g., "]" or ")") Added convenience functions: - cj/listify: unquoted list (a, b, c) - cj/arrayify-json: JSON array ["a", "b", "c"] - cj/arrayify-python: Python list ["a", "b", "c"] Updated keybindings: - C-; o l → cj/listify - C-; o j → cj/arrayify-json - C-; o p → cj/arrayify-python - C-; o L → cj/comma-separated-text-to-lines (moved from 'l')
2 days test+fix:custom-misc: add tests and fix fraction glyph bugCraig Jennings
Add test coverage for 4 functions in custom-misc.el: - cj/replace-fraction-glyphs (24 tests) - cj/format-region-or-buffer (17 tests) - cj/count-words-buffer-or-region (20 tests) - cj/jump-to-matching-paren (18 tests) Refactored functions using internal/interactive split pattern: - Internal functions (cj/--function-name) contain business logic with explicit parameters and validation - Interactive wrappers handle UI concerns (region detection, messages) - Tests call internal functions directly (no mocking required) Bug Fix: cj/--replace-fraction-glyphs Fixed "Invalid search bound" error when converting glyphs to text. Original code used fixed end position which became invalid when replacements changed buffer size. Fixed by using copy-marker for dynamic end position tracking.
2 days test+feat:custom-whitespace: add 37 tests + 2 new functionsCraig Jennings
Refactor all 4 existing whitespace functions to use interactive/non-interactive pattern and add comprehensive testing (73 tests). Implement 2 new functions: delete-all-whitespace (removes all whitespace) and ensure-single-blank-line (collapses consecutive blanks to one). Add keybindings for untabify/tabify. Total: 110 tests, 100% pass rate, 0 linter warnings.
2 daysfix:webclipper:fixed org-web-tools not loading when neededCraig Jennings
2 days test+refactor:custom-whitespace: add comprehensive testing with 73 testsCraig Jennings
Refactor 4 whitespace manipulation functions (remove-leading-trailing, collapse-whitespace, delete-blank-lines, hyphenate-whitespace) to use interactive/non-interactive pattern for testability. Add 73 tests across 4 test files covering normal, boundary, and error cases. Fix linter warnings and add proper input validation.
2 daysfix: config-utilities: remove duplicate keymap bindingCraig Jennings
Removed a duplicate keymap binding for 'cj/delete-emacs-home-compiled-files'
2 daysdocs:custom-line-paragraph: Update author info, enhance commentaryCraig Jennings
Add author information and improve commentary to detail line and paragraph manipulation utilities more clearly, enhancing the module's documentation.
2 daysfeat+test:comments: add 7 comment generation functions and testsCraig Jennings
Implement 5 new comment styles (simple-divider, padded-divider, heavy-box, unicode-box, block-banner) and refactor 2 existing functions (inline-border, comment-box) to use interactive/non-interactive pattern for testability. Add 178 tests across 7 test files with validation for length constraints and cross-language support. Fix linter warnings for parameter shadowing and docstring formatting.
2 daystest+fix:comments: add tests for cj/comment-reformat; fix arg issueCraig Jennings
Add 14 unit tests for cj/comment-reformat covering: - Emacs Lisp (12 tests): multiline joining, fill-column restoration, unicode, indentation, empty regions, read-only buffers - Python (1 test): hash-based comments - C (1 test): C-style comments (converted to block style by c-mode Fix issue where cj/comment-reformat was being called with args
2 days test+fix:custom-file-buffer: add tests, fix linter warningCraig Jennings
Add 58 unit tests for buffer/file utility functions: - cj/copy-link-to-buffer-file (12 tests) - cj/copy-path-to-buffer-file-as-kill (12 tests) - cj/copy-whole-buffer (14 tests) - cj/clear-to-bottom-of-buffer (10 tests) - cj/clear-to-top-of-buffer (10 tests) Tests cover normal cases, boundary cases (unicode, empty buffers, narrowing, read-only buffers), and error cases. Production code change: - Fix linter warning: unused variable 'err' → '_' in cj/move-buffer-and-file
2 daysfeat+test:custom-file-buffer: add tests and safety refactoringCraig Jennings
Add 106 unit tests with full coverage for move-buffer-and-file (51 tests) and rename-buffer-and-file (55 tests). Refactor both functions using interactive/non-interactive split pattern for simpler testing and reusability. Changes: - Split cj/move-buffer-and-file and cj/rename-buffer-and-file into internal implementations (cj/--*) and interactive wrappers - Add ok-if-exists parameter with user confirmation to prevent data loss - Fix bugs: return values, path expansion, string-match arg order, regex - Add test utilities for proper buffer cleanup and isolation - Document interactive/non-interactive pattern in quality-engineer.org - Document error message testing guidelines in quality-engineer.org All 106 tests passing.
3 daysfix:custom-line-paragraph:missing forward declarationsCraig Jennings
3 daysfeat:custom-line-paragraph: add keybinding for duplicate-and-commentCraig Jennings
- Add C-; l c keybinding to duplicate line/region with commenting - Add which-key description "duplicate and comment" for the new binding - Complements existing C-; l d (duplicate without comment)
3 daysfix+test:custom-line-paragraph:infinite loop remove-lines-containingCraig Jennings
- Add guard clause to handle empty string input gracefully (would cause infinite loop) - Add 33 comprehensive tests covering normal cases, boundary cases, and error cases - Tests verify Unicode support, regex character escaping, region vs buffer operations - All 33 tests passing
3 daystest:custom-line-paragraph: add tests and fix region deactivationCraig Jennings
- Add 11 new tests for cj/join-line-or-region covering boundary cases, Unicode, stress testing, and undo behavior - Fix region deactivation in cj/join-line-or-region function - All 62 tests now passing (41 join-line-or-region + 21 join-paragraph)
3 daysfeat: chime: make chime start immediatelyCraig Jennings
3 daysfix:org-roam: copy completed tasks to dailies on state transitionsCraig Jennings
Fixed and enhanced the org-roam hook that copies completed tasks to daily notes: - Fixed hook not triggering immediately after Emacs launch by moving it outside the lazy-loaded use-package org-roam :config block and into with-eval-after-load 'org - Changed hook to trigger for ANY org-done-keyword (DONE, CANCELLED, etc.) instead of just "DONE" - Updated hook to only trigger on non-done → done transitions using org-last-state, preventing duplicate copies when changing between done states (e.g., DONE → CANCELLED) - Added docstrings to org-roam helper functions to fix checkdoc linter warnings - Created comprehensive ERT test suite with 10 tests covering: * Hook registration before org-roam loads (lazy-loading fix) * Transitions to done states (nil→DONE, TODO→DONE, IN-PROGRESS→DONE, WAITING→CANCELLED) * Non-triggering cases (done→done, transitions to non-done states)
3 daysrefactor:dirvish: Remove redundant nerd-icons setupCraig Jennings
Move the `nerd-icons` setup from `dirvish-config.el` to `font-config.el` to consolidate icon configurations.
3 daysrefactor:dirvish: remove unused dired sidebar codeCraig Jennings
Remove unused functions and configurations related to dired-sidebar and nerd-icons-dired. This cleans up the code and reduces unnecessary dependencies within the dashboard-config.el and dirvish-config.el modules.
3 daysfeat:erc-config: add image inline support and simplify hooksCraig Jennings
Enable inline image support in ERC by adding 'image' to erc-modules. Simplify hook usage by removing ERC colorization setup, leveraging built-in functionality for better color management.
3 daysrefactor:keymaps: Replace define-prefix-command with defvar-keymapCraig Jennings
Refactor the keymap definitions across multiple modules by replacing `define-prefix-command` with `defvar-keymap`. This simplifies the keymap setup and integrates better with the `which-key` package for enhanced documentation and usability. Updated modules include custom-ordering, custom-text-enclose, custom-whitespace, mail-config, music-config, org-drill-config, test-runner, and vc-config.
3 daysfeat:erc: Enable IRC client in dashboard and update keybindingsCraig Jennings
Uncommented ERC client initialization in `init.el`. Replaced "cj/erc-start-or-switch" with "cj/erc-switch-to-buffer-with-completion" in dashboard. Altered keybindings to use "C-; E" instead of "C-c e" for ERC commands. Defined a new keymap "cj/erc-keymap" for better command organization. Removed deprecated `locate-library` checks and `cj/erc-command-map`. Refined code layout for clarity.
3 daysfeat(dirvish-config): Add sidebar attribute settingCraig Jennings
Add `dirvish-side-attributes` for explicit sidebar configuration.
3 daysrefactor:video-audio-recording: remove unused autoload cookiesCraig Jennings
Remove unnecessary `;;;###autoload` comments from function definitions. This cleanup clarifies the code and has no functional impact as these autoload cookies were not utilized.
3 daysfeat:org-config: Add function to clear org-element cacheCraig Jennings
Introduce `cj/org-clear-element-cache` to clear the org-element cache for the current buffer or all buffers. This is useful for resolving parsing errors encountered during agenda generation, such as 'wrong-type-argument stringp nil'. The function can be triggered with a prefix argument to clear the cache for all org buffers, or without it to clear only the current buffer's cache.
3 daysfix:dwim-shell: ensure dirvish starts dwim-shellCraig Jennings
Update `use-package` to load `dwim-shell-command` after both `dired` and `dirvish`, ensuring proper integration and compatibility with the additional package.
3 daysrefactor: org-agenda: add chimeCraig Jennings
Add chime for managing agenda notifications. Update configuration settings for chime, including notification times and modeline display. Enable chime-mode by default.
3 daysfeat:org-drill: Add cj/drill-start command to autoloadCraig Jennings
Extend the use-package setup to include the new command `cj/drill-start` in addition to `org-drill`.
3 daysfeat:org-gcal: Add function to clear sync lock and bindingCraig Jennings
Add `cj/org-gcal-clear-sync-lock` function to allow clearing the `org-gcal` sync lock. This is useful when a sync fails and leaves the lock in place, preventing future syncs. This function can be invoked with the keybinding "C-; G". Additionally, ensure credentials are retrieved from `authinfo.gpg` before loading `org-gcal`.
3 daysfeat:dirvish: shortcuts for Google Drive, remote git:cjennings.netCraig Jennings
Include shortcuts for Google Drive in documents and add a remote access path for git at cjennings.net in the dirvish configuration.
3 dayschore: music: remove eradio-config and update music-configCraig Jennings
Deleted eradio-config.el file as it is no longer needed. Refactored music-config.el to improve readability and maintainability by removing unused autoload directives, unnecessary eval-when-compile blocks, adjusting indentation, and enhancing the setup function for EMMS. Additionally, removed duplicate code and ensured playlist handling is more robust.
5 daysfeat:browser: Add browser configuration moduleCraig Jennings
Introduce `browser-config.el` to handle browser selection and configuration within Emacs. This module discovers available browsers, allows user selection through `M-x cj/choose-browser`, and persists the choice while supporting all link types.
6 daysfeat:dirvish-config: Add absolute path copy functionalityCraig Jennings
Introduce the 'L' key binding to copy the absolute file path in Dirvish. Extend `cj/dired-copy-path-as-kill` function to support force copying of absolute paths with the new `force-absolute` argument. This enhances the path copying capabilities by allowing users to directly copy absolute paths when needed.
6 daysrefactor: unify and simplify key binding setupsCraig Jennings
Optimized key binding configurations across modules for consistency and reduced redundancy. Improved conditional requiring to handle errors gracefully in `music-config.el`, ensuring robustness across different machine environments. Eliminated comments clutter and adjusted function definitions to adhere to revised standards.
6 daysrefactor:org-contacts-config: Update template and keymap bindingsCraig Jennings
Add birthday and website fields to the contact template while removing duplicate template code. Comment out unused org-roam linking function. Replace `define-key` and `global-set-key` with `keymap-set` and `keymap-global-set` for cleaner keymap definitions and bindings.
6 daysrefactor:org-modules: Improve org-mode configurationCraig Jennings
Remove redundant declarations and reorganize settings for clarity. Centralize org-mode customizations and use `use-package` for streamlined loading and configuration. Remove backward-compatible safeguards and reduce inline comments for cleaner code. Optimize key mappings and simplify the setup of org-related packages.
6 daysrefactor:help-config: update keybinding functionsCraig Jennings
Replace `global-set-key` with `keymap-global-set` for consistency and readability. Remove deferring in `helpful` and `man` use-package configurations as it's unnecessary.
6 dayschore:keybindings: update comments and remove unused codeCraig Jennings
Update comments in keybindings.el for clarity by removing tilde markers around key sequences. Remove unused code related to which-key initialization to streamline the configuration.
6 daysstyle:host-environment: Fix quoting in docstringsCraig Jennings
Correct the quoting style in docstrings for commands using backticks instead of incorrect characters.
6 daysrefactor:font-config: update font settings and keybindingsCraig Jennings
Add EBook font setting with specified weight and height. Change global keybinding functions to keymap-global-set for better clarity and maintainability.
6 daysrefactor:mail-config: update command declarations and keymap bindingCraig Jennings
Change the use-package command specification for `mu4e` to use :commands for lazy loading. Update keymap binding from `define-key` to `keymap-set` for readability and maintainability.
6 daysrefactor:eshell-vterm-config): update keymap and eshell loadingCraig Jennings
Replace `define-key` with `keymap-set` for better key binding clarity and reliability. Switch eshell loading from `:defer .5` to `:commands (eshell)` for on-demand loading. Remove unnecessary `:defer` from `xterm-color`.