ement: silent startup restore via ement--reconnect, explicit homeserver
my/ement-maybe-restore now: - Loads sessions file manually (ement--load-sessions) before connecting - Calls ement--reconnect directly on each loaded session — bypasses all interactive prompts in ement-connect (homeserver discovery, read-passwd) - Fallback to ement-connect with explicit :homeserver if --reconnect absent - condition-case wrapper — startup errors are silent, never block Emacs my/ement-open: use my/ement-maybe-restore (instead of ement-connect directly) for the 'sessions file exists' branch.
This commit is contained in:
24
config.el
24
config.el
@@ -893,10 +893,26 @@ Keeps the status bar and tab bar fully visible at any zoom level.")
|
||||
(ement-list-rooms)))
|
||||
|
||||
(defun my/ement-maybe-restore ()
|
||||
"Restore saved ement session silently (no credentials prompt)."
|
||||
"Restore saved ement session silently on startup. No prompts, no buffer.
|
||||
Loads sessions from file and calls ement--reconnect directly to bypass
|
||||
any interactive prompts in ement-connect (homeserver discovery, password)."
|
||||
(require 'ement)
|
||||
(when (file-readable-p (expand-file-name ement-sessions-file))
|
||||
(ement-connect :user-id "@martin:sukany.cz")))
|
||||
(condition-case err
|
||||
(let ((sf (expand-file-name ement-sessions-file)))
|
||||
(when (file-readable-p sf)
|
||||
;; Pre-load sessions from file so ement-connect won't prompt
|
||||
(unless ement-sessions
|
||||
(when (fboundp 'ement--load-sessions)
|
||||
(setq ement-sessions (ement--load-sessions))))
|
||||
;; Reconnect directly — bypasses interactive ement-connect entirely
|
||||
(if (fboundp 'ement--reconnect)
|
||||
(dolist (entry ement-sessions)
|
||||
(ement--reconnect (cdr entry)))
|
||||
;; Fallback: explicit homeserver avoids discovery/password prompt
|
||||
(when ement-sessions
|
||||
(ement-connect :user-id (caar ement-sessions)
|
||||
:homeserver "https://matrix.apps.sukany.cz")))))
|
||||
(error (message "ement startup restore: %s" (error-message-string err)))))
|
||||
|
||||
(defun my/ement-open ()
|
||||
"Open Matrix panel: show room list (connect/restore if needed).
|
||||
@@ -912,7 +928,7 @@ Otherwise: runs interactive ement-connect, then opens rooms after sync."
|
||||
;; Saved session exists — restore without credentials, open rooms after sync
|
||||
((file-readable-p (expand-file-name ement-sessions-file))
|
||||
(add-hook 'ement-after-initial-sync-hook #'my/ement-open-after-sync)
|
||||
(ement-connect :user-id "@martin:sukany.cz"))
|
||||
(my/ement-maybe-restore))
|
||||
;; No saved session — interactive connect, open rooms after sync
|
||||
(t
|
||||
(add-hook 'ement-after-initial-sync-hook #'my/ement-open-after-sync)
|
||||
|
||||
Reference in New Issue
Block a user