From f40e97a7b131975f88a6c520eefe8f9a125b23b2 Mon Sep 17 00:00:00 2001 From: Adrian Kummerlaender Date: Mon, 5 Jan 2026 13:57:01 +0100 Subject: Update, Emacs tweaks --- gui/conf/init.el | 75 ++++++++++++++++++++++++++++++++++------------------- gui/conf/metakr.org | 5 ++++ gui/emacs.nix | 12 +++++++++ 3 files changed, 66 insertions(+), 26 deletions(-) (limited to 'gui') diff --git a/gui/conf/init.el b/gui/conf/init.el index b543c6b..567b1cf 100644 --- a/gui/conf/init.el +++ b/gui/conf/init.el @@ -47,6 +47,8 @@ (setq fast-but-imprecise-scrolling t) (fset 'yes-or-no-p 'y-or-n-p) +(setq use-dialog-box nil) + (setq-default indent-tabs-mode nil) (setq-default tab-width 2) (setq-default c-basic-offset 2) @@ -201,6 +203,7 @@ (org-icalendar-timezone "Europe/Berlin") (org-icalendar-use-deadline '(event-if-not-todo event-if-todo)) (org-icalendar-use-scheduled '(event-if-not-todo event-if-todo)) + (org-agenda-skip-deadline-prewarning-if-scheduled t) :init (require 'org-protocol) (require 'ox-bibtex) @@ -320,6 +323,45 @@ (use-package ob-async :ensure t) +(use-package gptel + :ensure t + :config + (evil-leader/set-key "am" 'gptel-menu) + (evil-leader/set-key "as" 'gptel-send) + (evil-leader/set-key "ac" 'gptel-abort) + (evil-leader/set-key "ar" 'gptel-rewrite) + (setq gptel-default-mode 'org-mode) + (setq gptel-org-branching-context t) + (setq gptel-include-reasoning nil) + (setq gptel-rewrite-default-action 'dispatch) + (defun gptel--read-key-file (path) + "Read API key from PATH, trimming whitespace." + (with-temp-buffer + (insert-file-contents path) + (string-trim (buffer-string)))) + (setq gptel-backend + (gptel-make-gemini "Google" + :key (lambda () (gptel--read-key-file "~/.gemini-ai-key")) + :models '("gemini-flash-latest" "gemini-pro-latest") + :stream t)) + (setq gptel--kit-backend + (gptel-make-openai "KIT-Toolbox" + :host "ki-toolbox.scc.kit.edu" + :endpoint "/api/v1/chat/completions" + :stream t + :key (lambda () (gptel--read-key-file "~/.kit-ai-key")) + :models '("azure.gpt-5"))) + (setq gptel-default-model "Google:gemini-flash-latest")) + +(use-package ob-gptel + :ensure t + :hook ((org-mode . ob-gptel-install-completions)) + :defines ob-gptel-install-completions + :config + (defun ob-gptel-install-completions () + (add-hook 'completion-at-point-functions + 'ob-gptel-capf nil t))) + (custom-theme-set-faces 'user '(org-level-1 ((t (:family "Iosevka Aile" :weight light)))) @@ -433,7 +475,8 @@ (latex . t) (org . t) (dot . t) - (C . t))) + (C . t) + (gptel . t))) (setq org-confirm-babel-evaluate nil) @@ -536,10 +579,10 @@ (electric-indent-local-mode -1)) (add-hook 'c-mode-common-hook 'disable-electric-indent-mode t) -(use-package ace-jump-mode +(use-package avy :ensure t :config - (evil-leader/set-key "SPC" 'ace-jump-mode)) + (evil-leader/set-key "SPC" 'avy-goto-char)) (use-package auctex :defer t) @@ -606,9 +649,11 @@ ad-do-it (message "org-tangle took %f sec" (float-time (time-subtract (current-time) time))))) -(use-package gptel +(use-package envrc :ensure t) +(envrc-global-mode) + (let ((mu4e-config "~/.emacs.d/email.el")) (when (file-exists-p mu4e-config) (load-file mu4e-config))) @@ -616,25 +661,3 @@ (let ((patches "~/.emacs.d/patches.el")) (when (file-exists-p patches) (load-file patches))) - -(use-package envrc - :ensure t) - -(use-package gptel - :ensure t - :config - (defun read-file-contents (file-path) - "Read the contents of FILE-PATH and return it as a string." - (with-temp-buffer - (insert-file-contents file-path) - (buffer-string))) - (defun gptel-api-key () - (read-file-contents "~/.kit-ai-api")) - (setq gptel-backend (gptel-make-openai "KIT-Toolbox" - :host "ki-toolbox.scc.kit.edu" - :endpoint "/api/v1/chat/completions" - :stream t - :key #'gptel-api-key - :models '("azure.gpt-5")))) - -(envrc-global-mode) diff --git a/gui/conf/metakr.org b/gui/conf/metakr.org index 16c9717..2fec43c 100644 --- a/gui/conf/metakr.org +++ b/gui/conf/metakr.org @@ -400,6 +400,11 @@ For quick iteration all colors are stored in a table. (font-latex-italic-face :inherit italic :foreground @muted) + +;; gptel + (gptel-rewrite-highlight-face + :background @meta + :foreground @bg) ) #+END_SRC diff --git a/gui/emacs.nix b/gui/emacs.nix index d197bce..43bb4e1 100644 --- a/gui/emacs.nix +++ b/gui/emacs.nix @@ -80,6 +80,18 @@ }; buildInputs = [ prev.melpaPackages.helm ]; }; + + ob-gptel = prev.trivialBuild { + pname = "ob-gptel"; + version = "dev"; + src = pkgs.fetchFromGitHub { + owner = "jwiegley"; + repo = "ob-gptel"; + rev = "60e704a390d767a7d06c8d3845ba8786b75f7da3"; + hash = "sha256-G3edExxR/Ebm2lcCBhqGEqUdAEDFVxOjqB7h0ulbilA="; + }; + buildInputs = [ prev.melpaPackages.gptel ]; + }; }; extraEmacsPackages = epkgs: -- cgit v1.2.3