Commit 48fb1f3e6592
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