;; that variable is `browse-url-default-browser' by default, so
;; that's the function that gets advised. If the value is an alist,
;; however, we don't know what to do. Better not interfere?
- (when (fboundp browse-url-browser-function)
+ (when (and (symbolp browse-url-browser-function)
+ (fboundp browse-url-browser-function))
(advice-add browse-url-browser-function :before-while
(lambda (url &rest _args)
"Handle gemini, gopher, and finger schemes using Elpher."
(unless (string-empty-p trimmed-host-or-url)
(let ((page (elpher-page-from-url trimmed-host-or-url
(elpher-get-default-url-scheme))))
- (switch-to-buffer elpher-buffer-name)
+ (unless (get-buffer-window elpher-buffer-name t)
+ (switch-to-buffer elpher-buffer-name))
(elpher-with-clean-buffer
(elpher-visit-page page))
nil)))) ; non-nil value is displayed by eshell