diff options
Diffstat (limited to 'todo.org')
| -rw-r--r-- | todo.org | 181 |
1 files changed, 160 insertions, 21 deletions
@@ -17,7 +17,8 @@ If the answer is "no" to all five → DON'T ADD IT. V2MOM is located at: [[file:docs/emacs-config-v2mom.org][emacs-config-v2mom.org]] Research/ideas that don't serve vision: [[file:docs/someday-maybe.org][someday-maybe.org]] -* Method 1: Make Using Emacs Frictionless [5/13] +* Method 1: Make Using Emacs Frictionless [8/14] + ** DONE [#A] Remove network check from startup (saves 1+ seconds) CLOSED: [2025-10-31 Fri] @@ -57,11 +58,20 @@ CLOSED: [2025-10-31 Fri] Bound to C-; b D. Weekly need satisfied. -** TODO [#B] Fix go-ts-mode-map keybinding error (void-variable) +** DONE [#B] Fix go-ts-mode-map keybinding error (void-variable) +CLOSED: [2025-11-03 Sun] Error: "Debugger entered--Lisp error: (void-variable go-ts-mode-map)" Location: modules/prog-go.el - trying to bind keys before mode loads. -Fix: Wrap keybinding in with-eval-after-load or check if variable is bound. + +✅ Already fixed in commit 196b289 (Nov 2, 2025) +- Moved keybinding from `:bind (:map go-ts-mode-map ...)` to hook function +- Keybinding now set in `cj/go-mode-keybindings` called via `:hook` +- Function executes after mode loads, ensuring keymap exists +- Today's cleanup: Removed unused forward declarations (lines 34-35) + +Fix was: Wrap keybinding in hook function instead of :bind clause. +Result: No more void-variable error, keybinding works correctly. ** TODO [#B] Fix org-noter (reading/annotation workflow currently "so painful") @@ -184,6 +194,52 @@ Generate transcript (once transcription workflow exists). Daily workflow improvement. +** TODO [#A] Fix Google Calendar password prompts every 15 minutes + +IRRITANT: gcal-sync triggers password prompts approximately every 15 minutes, +interrupting workflow and breaking focus. This defeats the purpose of having +passphrase caching configured. + +**Current Setup:** +- GPG agent configured with 400-day cache (gpg-agent.conf): + - default-cache-ttl 34560000 + - max-cache-ttl 34560000 + - allow-loopback-pinentry enabled +- Plstore caching enabled (auth-config.el:54): + - plstore-cache-passphrase-for-symmetric-encryption t + - plstore-encrypt-to nil (symmetric encryption) +- Auth-source cache: 24 hours (auth-config.el:31) +- Auto-sync interval: 30 minutes (org-gcal-config.el:50) + +**Problem:** +Despite proper GPG agent caching, oauth2-auto.plist prompts for passphrase +every ~15 minutes during gcal-sync operations. This suggests: +1. plstore may not be using GPG agent cache properly for symmetric encryption +2. oauth2-auto token refresh might be bypassing cache +3. EPinentry mode may need explicit configuration (currently commented out) + +**Goal:** +Passphrase should be entered ONCE per Emacs session, then cached until Emacs +closes. No interruptions during normal work. + +**Investigation Paths:** +1. Check if oauth2-auto respects plstore passphrase caching +2. Investigate plstore symmetric encryption cache behavior with GPG agent +3. Test enabling epa-pinentry-mode 'loopback (auth-config.el:42) +4. Check oauth2-auto token refresh cycle vs password prompt timing +5. Consider oauth2-auto configuration options for token persistence +6. Review org-gcal or oauth2-auto issues for similar problems + +**Files:** +- modules/auth-config.el (plstore and GPG configuration) +- modules/org-gcal-config.el (org-gcal and oauth2-auto setup) +- ~/.gnupg/gpg-agent.conf (GPG agent cache settings) +- oauth2-auto.plist (encrypted OAuth tokens - prompts every access?) + +**Related:** +This violates the "Frictionless" value - interruptions every 15 minutes during +calendar sync breaks concentration and workflow momentum. + ** TODO [#B] Optimize org-agenda performance using built-in profiler THE BOTTLENECK. Currently 30+ seconds, target < 5 seconds. @@ -194,9 +250,26 @@ Use M-x profiler-start before Method 3 debug-profiling.el is built. 15-20 seconds every time capturing a task (12+ times/day). Major daily bottleneck - minutes lost waiting, plus context switching cost. -** TODO [#C] Fix grammar checker performance (currently disabled) +** DONE [#C] Fix grammar checker performance (currently disabled) +CLOSED: [2025-11-04 Mon] + +✅ **Installed and configured LanguageTool for comprehensive grammar checking** + +Replaced disabled grammar checker with on-demand LanguageTool integration: +- Installed LanguageTool 6.6-2 from Arch repos (222MB) +- Created wrapper script: scripts/languagetool-flycheck (Python 3) +- Integrated with flycheck for on-demand checking via C-; ? +- Removed proselint (redundant - LanguageTool catches more) +- No performance impact: only runs when explicitly invoked +- Installation instructions added to modules/flycheck-config.el commentary -Currently disabled because it breaks flow when writing. +LanguageTool catches: +- Real grammar errors (subject-verb agreement, tense, etc.) +- Missing punctuation (commas, periods) +- Common mistakes (could of → could have) +- Style issues (redundant phrases, wordiness) + +Workflow: Open org/text/markdown file → press C-; ? → see errors in *Flycheck errors* buffer ** TODO [#D] Fix EMMS keybinding inconsistency with other buffers @@ -204,7 +277,7 @@ EMMS keybindings conflict with standard buffer keybindings, causing mistypes. Results in accidental destructive actions (clearing buffers), requires undo + context switch. Violates Intuitive value - muscle memory should help, not hurt. -* Method 2: Stop Problems Before They Appear [2/5] +* Method 2: Stop Problems Before They Appear [3/5] ** TODO [#B] Migrate from Company to Corfu :PROPERTIES: @@ -213,15 +286,37 @@ Violates Intuitive value - muscle memory should help, not hurt. Complete config already exists in someday-maybe.org. Just needs to be executed. -** DONE [#C] Switch to mood-line +** DONE [#C] Switch to mood-line (actually: built custom modeline) CLOSED: [2025-11-03 Sun] -✅ Replaced doom-modeline with mood-line in modules/modeline-config.el -- Simplified from 70+ lines to ~10 lines of configuration -- mood-line is lightweight, minimal, inspired by doom-modeline -- Better performance with no dependencies -- Features: buffer status, major mode, VCS, flycheck, cursor position -- Net reduction: -40 lines of configuration code +✅ **Built custom modeline (better than mood-line)** + +Went beyond mood-line and created a fully custom modeline using only built-in +Emacs functionality to avoid native-compilation issues. Features: + +**Architecture:** +- Named segment system using defvar-local (easy to reorder) +- Emacs 30 built-in right-alignment (mode-line-format-right-align) +- All segments marked as risky-local-variable for proper evaluation + +**Interactive Features:** +- Color-coded buffer names (green=writeable, red=read-only, gold=overwrite) +- VC branch with git symbol () and state-based coloring +- Mouse click handlers: buffer name (prev/next), branch (vc-diff), mode (describe-mode) +- Help-echo tooltips on all segments +- String truncation for narrow windows (< 100 chars wide) +- Active-window-only display for branch and misc-info (less clutter) + +**Layout:** +- Left: Major mode, buffer name, position (L:# C:#) +- Right: Git branch, chime notifications + +**Bug Fixes:** +- Disabled async native compilation (prevented "Selecting deleted buffer" errors) +- Fixed difftastic loading (:demand → :defer) +- Abstracted buffer status colors to user-constants.el + +Inspired by Prot's modeline design. See commit c0c4b17. ** DONE [#C] Remove deprecated tree-sitter package (rely on treesit-auto) CLOSED: [2025-11-03 Sun] @@ -232,21 +327,31 @@ CLOSED: [2025-11-03 Sun] - treesit-auto continues to manage tree-sitter grammars automatically - No functionality lost, cleaner dependency tree -** TODO [#C] Add org-appear (show emphasis markers only when point is on them) +** DONE [#C] Add org-appear (show emphasis markers only when point is on them) +CLOSED: [2025-11-03 Sun] -Cleaner org files, supports Intuitive value. +✅ Added org-appear package to modules/org-config.el +- Shows emphasis markers (* / _) only when cursor is on them +- Also shows link markup and sub/superscripts when editing +- Changed org-fontify-emphasized-text from nil to t (line 75) +- Updated comment on line 71 to reference org-appear +- Cleaner editing experience while maintaining visual clarity ** TODO [#C] Integrate prescient with Corfu (smart sorting) Already using prescient with vertico. Extend to Corfu after migration. -* Method 3: Make *Fixing* Emacs Frictionless [0/5] +* Method 3: Make *Fixing* Emacs Frictionless [1/4] ** TODO [#B] Build debug-profiling.el module Reusable profiling infrastructure for any future performance work. -** TODO [#C] Document localrepo limitations (treesitter grammars not included) +** TODO [#C] Build localrepo out (package snapshot system) + +Repeatable installs and safe rollbacks. + +*** TODO [#C] Document localrepo limitations (treesitter grammars not included) .localrepo only contains packages from package.el archives. Treesitter grammars are downloaded separately by treesit-auto on first use. @@ -256,13 +361,46 @@ For true offline reproducibility, need to cache treesitter grammars separately. Complex workflow testing capability. -** TODO [#C] Build localrepo out (package snapshot system) +** DONE [#C] Integrate difftastic (structural diffs) +CLOSED: [2025-11-03 Sun] -Repeatable installs and safe rollbacks. +✅ Completed difftastic integration: +1. **Upgraded cj/diff-buffer-with-file to use ediff** (modules/custom-buffer-file.el) + - Replaced basic unified diff with ediff-current-file + - Now uses same ediff config (horizontal split, j/k navigation) + - Keybinding C-; b D now launches interactive ediff + +2. **Added difftastic for git diffs** (modules/vc-config.el) + - Installed binary: difftastic 0.64.0 + - Added difftastic.el package integrated with magit + - Keybindings in magit-diff: D for dwim, S for show + - Provides structural, language-aware diffs for git changes + +Result: Better diffs everywhere - ediff for interactive buffer comparison, +difftastic for understanding git changes. + +** TODO [#C] Remove orphaned dwim-shell-security tests and unused production code + +Why: 12 tests in test-dwim-shell-security.el fail because the functions they test +are inside a use-package :config block (dwim-shell-config.el:101-108) that only +loads when the dwim-shell-command package is available. During batch testing, +the package isn't loaded, so functions are never defined (void-function errors). + +These are PDF password protection and ZIP encryption functions that likely have +never been used in practice - they're placeholder code from initial setup. + +What to delete: +1. Test file: tests/test-dwim-shell-security.el (12 failing tests) +2. Production functions in modules/dwim-shell-config.el (lines ~302-347): + - cj/dwim-shell-commands-pdf-password-protect (lines 302-324) + - cj/dwim-shell-commands-pdf-password-unprotect (lines 326-347) + - cj/dwim-shell-commands-create-encrypted-zip (search for it) + - cj/dwim-shell-commands-remove-zip-encryption (search for it) -** TODO [#C] Integrate difftastic (structural diffs) +After deletion: Run "make test-all" to confirm 18 failures → 6 failures +(only benchmark performance tests remain, which are environment-dependent). -Structural diffs that show semantic changes. Hook into cj/diff-buffer-with-file. +Aligns with: Reducing test failures from 18 to 6, cleaning up unused code. * Method 4: Contribute to the Emacs Ecosystem [0/4] @@ -312,3 +450,4 @@ Review this inbox, cancel stale items, keep < 20 active. Track in calendar. Can't research next thing until current thing is implemented. * Emacs Config Inbox +** TODO cj/flyspell-then-abbrev loses keybinding in scratch org-mode buffer |
