You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Describe the bug
When using desktop.el to persist emacs state between sessions, the org-roam-ui-mode causes the loading of the persistent state fail. Each saved buffer has org-roam-ui-mode listed in its minor modes, causing the desktop.el to try to load org-roam-ui-mode for each of them. But all the calls to org-roam-ui-mode (except perhaps for the first one) result in error - "Cannot bind server socket: Address already in use".
To Reproduce
have multiple buffers opened
use org-roam-ui-mode
quit emacs (saves the current session with desktop.el)
start emacs (tries to load the previous session with desktop.el, but fails, because of repeated attempts to start org-roam-ui-mode server)
Additional context
Don't known if this is important, but I am using (setq desktop-restore-eager 10), making desktop.el restore 10 buffers immediately and restore the rest of them lazily.
Expected behavior
org-roam-ui-mode should fail gratiously (without elisp error, just with a message), when the server socket is already in use. Or maybe even better, it should detect that the socket is actually used by org-roam-ui-mode itself.
** Simple patch for my purposes **
I patched the org-roam-ui-mode to ignore errors. Proper solution would probably still need to let the user know about the issue.
(define-minor-mode
org-roam-ui-mode
"Enable org-roam-ui.
This serves the web-build and API over HTTP."
:lighter " org-roam-ui"
:global t
:group 'org-roam-ui
:init-value nil
(cond
(org-roam-ui-mode
;;; check if the default keywords actually exist on `orb-preformat-keywords'
;;; else add them
(ignore-errors
(setq-local httpd-port org-roam-ui-port)
(setq httpd-root org-roam-ui-app-build-dir)
(httpd-start)
(setq org-roam-ui-ws-server
(websocket-server
35903
:host 'local
:on-open #'org-roam-ui--ws-on-open
:on-message #'org-roam-ui--ws-on-message
:on-close #'org-roam-ui--ws-on-close))
(when org-roam-ui-open-on-start (org-roam-ui-open))))
(t
(progn
(websocket-server-close org-roam-ui-ws-server)
(httpd-stop)
(remove-hook 'after-save-hook #'org-roam-ui--on-save)
(org-roam-ui-follow-mode -1)))))
The text was updated successfully, but these errors were encountered:
I don't think that is relevant to this issue. Even if I would set some different port, I believe that the issue is still the same - org-roam-ui tries to bind to that port multiple times, failing after the first try.
I'm having this issue but also org-roam-ui is not following me despite follow mode being enabled. I disabled desktop saving and having the same issue, both the socket issue and the no-follow issue.
malloc47
added a commit
to malloc47/config
that referenced
this issue
Feb 21, 2023
Describe the bug
When using desktop.el to persist emacs state between sessions, the org-roam-ui-mode causes the loading of the persistent state fail. Each saved buffer has org-roam-ui-mode listed in its minor modes, causing the desktop.el to try to load org-roam-ui-mode for each of them. But all the calls to org-roam-ui-mode (except perhaps for the first one) result in error - "Cannot bind server socket: Address already in use".
To Reproduce
Additional context
Don't known if this is important, but I am using
(setq desktop-restore-eager 10)
, making desktop.el restore 10 buffers immediately and restore the rest of them lazily.Expected behavior
org-roam-ui-mode should fail gratiously (without elisp error, just with a message), when the server socket is already in use. Or maybe even better, it should detect that the socket is actually used by org-roam-ui-mode itself.
** Simple patch for my purposes **
I patched the org-roam-ui-mode to ignore errors. Proper solution would probably still need to let the user know about the issue.
The text was updated successfully, but these errors were encountered: