]> git.eshelyaron.com Git - emacs.git/commitdiff
Allow browsing an URL explicitly with an internal or external browser.
authorTassilo Horn <tsdh@gnu.org>
Thu, 7 May 2020 17:38:57 +0000 (19:38 +0200)
committerTassilo Horn <tsdh@gnu.org>
Thu, 7 May 2020 17:44:10 +0000 (19:44 +0200)
* lisp/net/browse-url.el (browse-url-with-browser-kind): New command.

lisp/net/browse-url.el

index 6dc9f8961a858bd7a477976db89a7f98547acdd8..d7b8521563ad38e32ed53bbd146e391d160b05e6 100644 (file)
@@ -928,6 +928,34 @@ Optional prefix argument ARG non-nil inverts the value of the option
                          browse-url-new-window-flag))
       (error "No URL found"))))
 
+;;;###autoload
+(defun browse-url-with-browser-kind (kind url &optional arg)
+  "Browse URL with a browser of the given browser KIND.
+KIND is either `internal' or `external'.
+
+When called interactively, the default browser kind is the
+opposite of the browser kind of `browse-url-browser-function'."
+  (interactive
+   (let* ((url-arg (browse-url-interactive-arg "URL: "))
+          ;; Default to the inverse kind of the default browser.
+          (default (if (eq (browse-url--browser-kind
+                            browse-url-browser-function (car url-arg))
+                           'internal)
+                       'external
+                     'internal))
+          (k (completing-read
+              (format "Browser kind (default %s): " default)
+              '(internal external)
+              nil t nil nil
+              default)))
+     (cons k url-arg)))
+  (let ((function (browse-url-select-handler url kind)))
+    (unless function
+      (setq function (if (eq kind 'external)
+                         #'browse-url-default-browser
+                       #'eww)))
+    (funcall function url arg)))
+
 ;;;###autoload
 (defun browse-url-at-mouse (event)
   "Ask a WWW browser to load a URL clicked with the mouse.