ement: auto-connect on startup, my/ement-open, remove ement-sync binding

- 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
This commit is contained in:
2026-02-23 13:24:37 +01:00
parent acb38759b9
commit 8bc82d358f

View File

@@ -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 cconnect (ement-connect)
;; SPC o M oopen 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))