From 8bc82d358f961f04db5b46f8cbada38dd02aa61c Mon Sep 17 00:00:00 2001 From: Daneel Date: Mon, 23 Feb 2026 13:24:37 +0100 Subject: [PATCH] ement: auto-connect on startup, my/ement-open, remove ement-sync binding MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - my/ement-maybe-restore: restores saved session on after-init-hook, no credentials prompt (requires one manual login first) - my/ement-open: SPC o M o — connects if needed, then ement-list-rooms - Remove SPC o M s (ement-sync is internal, manual call causes double-loop) - Update quick reference comments --- config.el | 32 +++++++++++++++++++++++++------- 1 file changed, 25 insertions(+), 7 deletions(-) diff --git a/config.el b/config.el index d0fc605..39d7a6d 100644 --- a/config.el +++ b/config.el @@ -852,20 +852,21 @@ Keeps the status bar and tab bar fully visible at any zoom level.") ;; Matrix client. Package declared in packages.el. ;; Keybindings: SPC o M (open → matrix) ;; Note: SPC o m is taken by Doom's mu4e module (#'mu4e), hence uppercase M. -;; E2EE: connect via Pantalaimon proxy (see notes/emacs-matrix.org) ;; ;; Quick reference: -;; SPC o M c — connect (ement-connect) +;; SPC o M o — open Matrix panel (connect + room list, no credentials) +;; SPC o M c — connect / re-connect manually +;; SPC o M C — disconnect ;; SPC o M l — list rooms ;; SPC o M r — open room ;; SPC o M d — direct message (after! ement - ;; Persist session across restarts (token stored in ~/.cache/emacs/ement.el) + ;; Persist session across restarts (saved token = no credentials on next start) (setq ement-save-sessions t) - ;; Background auto-sync + ;; Background auto-sync (internal — do NOT call ement-sync manually, causes issues) (setq ement-auto-sync t) ;; Show timestamp on every message @@ -877,11 +878,29 @@ Keeps the status bar and tab bar fully visible at any zoom level.") ;; Notify on mentions (@martin) (setq ement-notify-mentions-p t - ement-notify-dingalings-p nil)) ; no sound + ement-notify-dingalings-p nil) ; no sound + + ;; Auto-connect on startup: restore saved session without prompting for credentials. + ;; Activates only when session file exists (requires one manual ement-connect first). + (defun my/ement-maybe-restore () + "Restore saved ement session silently (no credentials prompt)." + (when (file-exists-p (expand-file-name ement-sessions-file)) + (ement-connect :user-id "@martin:sukany.cz"))) + + ;; Open Matrix panel: restore/connect if needed, then show room list. + (defun my/ement-open () + "Switch to Matrix: reconnect if needed, then open room list." + (interactive) + (if (and (boundp 'ement-sessions) ement-sessions) + (ement-list-rooms) + (my/ement-maybe-restore))) + + (add-hook 'after-init-hook #'my/ement-maybe-restore)) ;; Keybindings under SPC o M (uppercase M — o m is taken by mu4e) (map! :leader (:prefix ("o M" . "Matrix") + :desc "Open panel" "o" #'my/ement-open :desc "Connect" "c" #'ement-connect :desc "Disconnect" "C" #'ement-disconnect :desc "List rooms" "l" #'ement-list-rooms @@ -889,5 +908,4 @@ Keeps the status bar and tab bar fully visible at any zoom level.") :desc "Direct message" "d" #'ement-send-direct-message :desc "Join room" "j" #'ement-join-room :desc "Notifications" "n" #'ement-notifications - :desc "Mentions" "m" #'ement-mentions - :desc "Sync" "s" #'ement-sync)) + :desc "Mentions" "m" #'ement-mentions))