Prevent buffer switching when *elpher* already visible.
[elpher.git] / elpher.el
index 3d8e77f..f2397e9 100644 (file)
--- a/elpher.el
+++ b/elpher.el
@@ -2103,7 +2103,8 @@ supports the old protocol elpher, where the link is self-contained."
   ;; 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."
@@ -2160,7 +2161,8 @@ When run interactively HOST-OR-URL is read from the minibuffer."
     (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