Commit 48fb1f3e6592

Vincent Demeester <vincent@sbr.pm>
2026-06-19 11:17:09
refactor(emacs): clean up init.el configuration
Removed use-package blocks for journelly, org-kanban, goose, and chatgpt-shell. Removed Eisenhower matrix tags, agenda views (D/w/R/A/e/1-4), and related function. Trimmed gptel to Gemini backends only. Rebound M-j to avy-goto-char-timer with dispatch actions (kill, copy, embark). Removed org-journelly references and whisper comments.
1 parent 30ece3d
Changed files (1)
dots
config
emacs
dots/config/emacs/init.el
@@ -34,9 +34,6 @@ share elsewhere, with Flat habits on iOS for example.")
 Most likely these needs to be added to readwise reader or ditch.")
 (defconst org-calendar-file (expand-file-name "calendar.org" org-directory)
   "`org-mode' calendar file, auto-generated from Google Calendar (read-only).")
-(defconst org-journelly-file (expand-file-name "Journelly.org" org-directory)
-  "`org-mode' file for journalling.
-It is shared with iOS and replace the deprecated `org-journal-file' below.")
 (defconst org-journal-file (expand-file-name "20250620T144103--journal__journal.org" org-notes-directory)
   "`org-mode' journal file, for journal-ling.")
 (defconst org-archive-dir (expand-file-name "archive" org-directory)
@@ -51,7 +48,7 @@ It is shared with iOS and replace the deprecated `org-journal-file' below.")
 (set-register ?i `(file . ,org-inbox-file))
 (set-register ?t `(file . ,org-todos-file))
 (set-register ?c `(file . ,org-calendar-file))
-(set-register ?j `(file . ,org-journelly-file))
+(set-register ?j `(file . ,org-journal-file))
 (set-register ?o `(file . ,org-directory))
 (set-register ?n `(file . ,org-notes-directory))
 (set-register ?P `(file . ,org-people-dir))
@@ -289,7 +286,7 @@ Otherwise, call `backward-kill-word'."
   ("C-x m" . mark-defun)
   ("C-x C-b" . bs-show)
   ("M-o" . other-window)
-  ("M-j" . duplicate-dwim)
+  ("C-c j d" . duplicate-dwim)
   ("<f5>" . revert-buffer)
   ;; (:map completion-preview-active-mode-map
   ;; ("M-n" . #'completion-preview-next-candidate)
@@ -1383,10 +1380,27 @@ minibuffer, even without explicitly focusing it."
 (use-package avy
   :unless noninteractive
   :commands (avy-goto-char avy-goto-line avy-goto-word-1 avy-pop-mark avy-goto-char-timer)
-  :bind (("C-c j w" . avy-goto-word-1)
+  :bind (("M-j" . avy-goto-char-timer)
+         ("C-c j w" . avy-goto-word-1)
          ("C-c j b" . avy-pop-mark)
-         ("C-c j t" . avy-goto-char-timer)
-         ("C-c j l" . avy-goto-line)))
+         ("C-c j l" . avy-goto-line))
+  :custom
+  (avy-dispatch-alist
+   '((?k . avy-action-kill-move)
+     (?K . avy-action-kill-stay)
+     (?y . avy-action-copy)
+     (?m . avy-action-mark)
+     (?o . avy-action-embark)
+     (?z . avy-action-zap-to-char)))
+  :config
+  (defun avy-action-embark (pt)
+    (unwind-protect
+        (save-excursion
+          (goto-char pt)
+          (embark-act))
+      (select-window
+       (cdr (ring-ref avy-ring 0))))
+    t))
 
 (use-package embark
   :unless noninteractive
@@ -1651,12 +1665,6 @@ minibuffer, even without explicitly focusing it."
   (eljira-username "vdemeest@redhat.com")
   (eljira-url "https://issues.redhat.com"))
 
-(use-package chatgpt-shell
-  :commands (chatgpt-shell)
-  :custom
-  (chatgpt-shell-google-key (passage-get "ai/gemini/api_key"))
-  (chatgpt-shell-openrouter-key (passage-get "ai/openroute/api_key"))
-  (chatgpt-shell-deepseek-key (passage-get "ai/deepseek/api_key")))
 
 ;; TODO window management
 ;; TODO ORG mode configuration (BIG one)
@@ -1735,11 +1743,7 @@ minibuffer, even without explicitly focusing it."
      ("Handsoff" . ?f)
      (:grouptags)
      ("Read" . ?r) ("Watch" . ?W) ("Listen" . ?l)
-     (:endgroup)
-
-     ;; Eisenhower Matrix tags
-     ("urgent" . ?u)
-     ("important" . ?i)))
+     (:endgroup)))
   (org-log-done 'time)
   (org-log-redeadline 'time)
   (org-log-reschedule 'time)
@@ -1800,59 +1804,14 @@ minibuffer, even without explicitly focusing it."
 		(org-agenda-overriding-header "๐Ÿ“… Schedule & Deadlines")))
        (todo "NEXT"
 	     ((org-agenda-overriding-header "โžก๏ธ Focus (NEXT)")))))
-     ("D" "Daily Agenda (old)"
-      ((agenda ""
-	       ((org-agenda-files (vde/all-org-agenda-files))
-		(org-agenda-span 'day)
-		(org-deadline-warning-days 5)))
-       (tags-todo "+PRIORITY=\"A\""
-		  ((org-agenda-files (vde/all-org-agenda-files))
-		   (org-agenda-overriding-header "High Priority Tasks")))
-       (todo "NEXT"
-	     ((org-agenda-files (vde/all-org-agenda-files))
-	      (org-agenda-overriding-header "Next Tasks")))))
      ("i" "Inbox (triage)"
       ((tags-todo ".*"
 		  ((org-agenda-files `(,org-inbox-file)) ;; FIXME use constant here
 		   (org-agenda-overriding-header "Unprocessed Inbox Item")))))
-     ("A" "All (old)"
-      ((tags-todo ".*"
-		  ((org-agenda-files (vde/all-org-agenda-files))))))
      ("u" "Untagged Tasks"
       ((tags-todo "-{.*}"
 		  ((org-agenda-overriding-header "Untagged tasks")))))
-     ("w" "Weekly Review"
-      ((agenda ""
-	       ((org-agenda-overriding-header "Completed Tasks")
-		(org-agenda-skip-function '(org-agenda-skip-entry-if 'nottodo 'done))
-		(org-agenda-span 'week)))
-       (agenda ""
-	       ((org-agenda-overriding-header "Unfinished Scheduled Tasks")
-		(org-agenda-skip-function '(org-agenda-skip-entry-if 'todo 'done))
-		(org-agenda-span 'week)))))
-     ;; FIXME Should only take into account projects and areas ?
-     ("R" "Review projects" tags-todo "-CANX/"
-      ((org-agenda-overriding-header "Reviews Scheduled")
-       (org-agenda-skip-function 'org-review-agenda-skip)
-       (org-agenda-cmp-user-defined 'org-review-compare)
-       (org-agenda-sorting-strategy '(user-defined-down))))
-
-     ;; Eisenhower Matrix views
-     ("e" "Eisenhower Matrix"
-      ((tags-todo "+urgent+important"
-                  ((org-agenda-overriding-header "Q1: Do First (Urgent & Important)")))
-       (tags-todo "+important-urgent"
-                  ((org-agenda-overriding-header "Q2: Schedule (Important, Not Urgent)")))
-       (tags-todo "+urgent-important"
-                  ((org-agenda-overriding-header "Q3: Delegate (Urgent, Not Important)")))
-       (tags-todo "-urgent-important"
-                  ((org-agenda-overriding-header "Q4: Eliminate (Neither Urgent nor Important)")))))
-
-     ;; Individual Eisenhower quadrants
-     ("1" "Q1: Do First" tags-todo "+urgent+important")
-     ("2" "Q2: Schedule" tags-todo "+important-urgent")
-     ("3" "Q3: Delegate" tags-todo "+urgent-important")
-     ("4" "Q4: Eliminate" tags-todo "-urgent-important")))
+   ))
   ;; TODO cleanup this list a bit
   (org-agenda-category-icon-alist `(("personal"  ,(list (propertize "๐Ÿก")))
 				    ("work"  ,(list (propertize "๐Ÿข")))
@@ -1899,7 +1858,6 @@ minibuffer, even without explicitly focusing it."
 	("C-<right>" . org-shiftright)
 	("C-<up>" . org-shiftup)
 	("C-<down>" . org-shiftdown)
-	("C-c e" . vde/org-eisenhower-set-tags)
 	("C-c C-S-o" . vde/org-open-at-point-in-new-tab))
   :config
   ;; Unbind C-, to allow embark-act to work
@@ -1957,26 +1915,9 @@ buffer."
 	     (--remove (s-contains? "==readwise=" it))
 	     (--map (format "%s/%s" org-notes-directory it))
 	     (--map `(,it :maxlevel . 3)))
-	    ))
+	    )))
 
-  (defun vde/org-eisenhower-set-tags ()
-    "Quickly set Eisenhower Matrix tags (urgent/important) on current heading."
-    (interactive)
-    (let* ((choices '((?1 . ("+urgent" "+important"))    ; Q1: Do First
-                      (?2 . ("+important" "-urgent"))     ; Q2: Schedule
-                      (?3 . ("+urgent" "-important"))     ; Q3: Delegate
-                      (?4 . ("-urgent" "-important"))     ; Q4: Eliminate
-                      (?u . ("+urgent"))                  ; Just urgent
-                      (?i . ("+important"))               ; Just important
-                      (?c . ("-urgent" "-important"))))   ; Clear both
-           (key (read-char-choice
-                 "Quadrant: [1]Do [2]Schedule [3]Delegate [4]Eliminate | [u]rgent [i]mportant [c]lear: "
-                 '(?1 ?2 ?3 ?4 ?u ?i ?c)))
-           (tags (cdr (assoc key choices))))
-      (dolist (tag tags)
-        (org-toggle-tag (substring tag 1) (if (string-prefix-p "+" tag) 'on 'off))))))
-
-  (defun vde/org-todo-subtree (state)
+(defun vde/org-todo-subtree (state)
     "Set TODO entries in the current subtree to STATE.
 By default, only changes entries with an active TODO keyword,
 skipping plain headings and already-done items.
@@ -2355,10 +2296,6 @@ parameter), remove all other windows so the capture buffer fills the frame."
 
   (add-hook 'org-capture-mode-hook #'vde/org-capture-full-frame))
 
-;; Journelly - Smart journal capture with location/weather
-(use-package journelly
-  :after org-capture
-  :demand t)
 
 ;; Usage Metrics - dumps loaded features and command frequency for usage-metrics collector
 (use-package usage-metrics
@@ -2381,9 +2318,6 @@ parameter), remove all other windows so the capture buffer fills the frame."
       map)
     "Keymap for daily-plan commands under C-c d."))
 
-(use-package org-kanban
-  :commands (org-kanban org-kanban-work org-kanban-projects org-kanban-systems)
-  :bind ("C-c K" . org-kanban))
 
 (use-package org-habit
   :after org
@@ -3121,15 +3055,8 @@ the appropriate file in ~/.local/share/imapfilter-rules/"
     (add-to-list 'mm-discouraged-alternatives "text/html")
     (add-to-list 'mm-discouraged-alternatives "text/richtext")))
 
-;; (use-package whisper
-;;   :commands (whisper-run whisper-file)
-;;   :custom
-;;   (whisper-install-whispercpp nil))
 ;; TODO gptel configuration (and *maybe* copilot)
 
-(use-package goose
-  :commands (goose-transient goose-start-session)
-  :bind (("C-c a G" . goose-transient)))
 
 (use-package mcp
   :commands (mcp-hub-start-all-server)
@@ -3169,7 +3096,6 @@ the appropriate file in ~/.local/share/imapfilter-rules/"
   :config
   ;; (require 'gptel-curl)
   (require 'gptel-gemini)
-  (require 'gptel-ollama)
   (require 'gptel-transient)
   (require 'gptel-integrations)
   (require 'gptel-rewrite)
@@ -3187,72 +3113,6 @@ the appropriate file in ~/.local/share/imapfilter-rules/"
   (gptel-make-gemini "Gemini Red Hat"
 		     :key (passage-get "redhat/google/osp/vdeemest-api-key"))
   
-  (gptel-make-openai "MistralLeChat"
-		     :host "api.mistral.ai/v1"
-		     :endpoint "/chat/completions"
-		     :protocol "https"
-		     :key (passage-get "ai/mistralai/api_key")
-		     :models '("mistral-small"))
-  
-  (gptel-make-openai "OpenRouter"
-		     :host "openrouter.ai"
-		     :endpoint "/api/v1/chat/completions"
-		     :stream t
-		     :key (passage-get "ai/openroute/api_key")
-		     :models '(cognittivecomputations/dolphin3.0-mistral-24b:free
-			       cognitivecomputations/dolphin3.0-r1-mistral-24b:free
-			       deepseek/deepseek-r1-zero:free
-			       deepseek/deepseek-chat:free
-			       deepseek/deepseek-r1-distill-qwen-32b:free
-			       deepseek/deepseek-r1-distill-llama-70b:free
-			       google/gemini-2.0-flash-lite-preview-02-05:free
-			       google/gemini-2.0-pro-exp-02-05:free
-			       google/gemini-2.5-pro-exp-03-25:free
-			       google/gemma-3-12b-it:free
-			       google/gemma-3-27b-it:free
-			       google/gemma-3-4b-it:free
-			       mistralai/mistral-small-3.1-24b-instruct:free
-			       open-r1/olympiccoder-32b:free
-			       qwen/qwen2.5-vl-3b-instruct:free
-			       qwen/qwen-2.5-coder-32b-instruct:free
-			       qwen/qwq-32b:free
-			       codellama/codellama-70b-instruct
-			       google/gemini-pro
-			       google/palm-2-codechat-bison-32k
-			       meta-llama/codellama-34b-instruct
-			       mistralai/mixtral-8x7b-instruct
-			       openai/gpt-3.5-turbo))
-  (gptel-make-ollama "Ollama (with metrics)"
-		     :host "192.168.1.23:8000"  ; Exporter endpoint for metrics
-		     :stream nil  ; Disabled due to gptel streaming issues with Ollama
-		     :models '(;; Tool Calling / OpenCode Support
-			       "llama3.1:8b"              ; Best for tool calling
-			       "mistral-nemo:latest"      ; Fast tool calling
-
-			       ;; Coding Models
-			       "qwen2.5-coder:7b"         ; Best coding performance
-			       "codestral:latest"         ; Large coding model (22B)
-			       "qwen-opencode:latest"     ; Custom OpenCode model
-
-			       ;; Reasoning Models
-			       "deepseek-r1:7b"           ; Lightweight reasoning
-			       "phi4-reasoning:latest"    ; 14B reasoning
-
-			       ;; Multimodal
-			       "qwen2.5vl:7b"             ; Vision support
-
-			       ;; Quick Tasks
-			       "phi3.5:3.8b"))
-  ;; TODO: configure shikoku/kobe ollama instances here
-  ;; (gptel-make-ollama "Ollama"
-  ;;   :host "localhost:11434"
-  ;;   :stream t
-  ;;   :models '("smollm:latest"
-  ;; 	      "llama3.1:latest"
-  ;; 	      "deepseek-r1:latest"
-  ;; 	      "mistral-small:latest"
-  ;; 	      "deepseek-r1:7b"
-  ;; 	      "nomic-embed-text:latest"))
   )
 
 (use-package acp