X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/75c8741afba2321add3ad52c5143b4fdb1d63e18..1adfb5ee55d16cd3d9d78998ae7bbb8e5708d9c5:/lisp/net/browse-url.el diff --git a/lisp/net/browse-url.el b/lisp/net/browse-url.el index c4ed2332ab..c0b359176e 100644 --- a/lisp/net/browse-url.el +++ b/lisp/net/browse-url.el @@ -1,6 +1,6 @@ ;;; browse-url.el --- pass a URL to a WWW browser -;; Copyright (C) 1995-2015 Free Software Foundation, Inc. +;; Copyright (C) 1995-2016 Free Software Foundation, Inc. ;; Author: Denis Howe ;; Maintainer: emacs-devel@gnu.org @@ -36,6 +36,7 @@ ;; Function Browser Earliest version ;; browse-url-mozilla Mozilla Don't know ;; browse-url-firefox Firefox Don't know (tried with 1.0.1) +;; browse-url-chrome Chrome 47.0.2526.111 ;; browse-url-chromium Chromium 3.0 ;; browse-url-epiphany Epiphany Don't know ;; browse-url-conkeror Conkeror Don't know @@ -147,6 +148,7 @@ regexp should probably be \".\" to specify a default browser." (function-item :tag "eww" :value eww-browse-url) (function-item :tag "Mozilla" :value browse-url-mozilla) (function-item :tag "Firefox" :value browse-url-firefox) + (function-item :tag "Google Chrome" :value browse-url-chrome) (function-item :tag "Chromium" :value browse-url-chromium) (function-item :tag "Epiphany" :value browse-url-epiphany) (function-item :tag "Conkeror" :value browse-url-conkeror) @@ -236,21 +238,21 @@ Defaults to the value of `browse-url-mozilla-arguments' at the time :group 'browse-url) (defcustom browse-url-firefox-program - (let ((candidates '("firefox" "iceweasel" "icecat"))) + (let ((candidates '("icecat" "iceweasel" "firefox"))) (while (and candidates (not (executable-find (car candidates)))) (setq candidates (cdr candidates))) (or (car candidates) "firefox")) - "The name by which to invoke Firefox." + "The name by which to invoke Firefox or a variant of it." :type 'string :group 'browse-url) (defcustom browse-url-firefox-arguments nil - "A list of strings to pass to Firefox as arguments." + "A list of strings to pass to Firefox (or variant) as arguments." :type '(repeat (string :tag "Argument")) :group 'browse-url) (defcustom browse-url-firefox-startup-arguments browse-url-firefox-arguments - "A list of strings to pass to Firefox when it starts up. + "A list of strings to pass to Firefox (or variant) when it starts up. Defaults to the value of `browse-url-firefox-arguments' at the time `browse-url' is loaded." :type '(repeat (string :tag "Argument")) @@ -259,6 +261,22 @@ Defaults to the value of `browse-url-firefox-arguments' at the time (make-obsolete-variable 'browse-url-firefox-startup-arguments "it no longer has any effect." "24.5") +(defcustom browse-url-chrome-program + (let ((candidates '("google-chrome-stable" "google-chrome"))) + (while (and candidates (not (executable-find (car candidates)))) + (setq candidates (cdr candidates))) + (or (car candidates) "chromium")) + "The name by which to invoke the Chrome browser." + :type 'string + :version "25.1" + :group 'browse-url) + +(defcustom browse-url-chrome-arguments nil + "A list of strings to pass to Google Chrome as arguments." + :type '(repeat (string :tag "Argument")) + :version "25.1" + :group 'browse-url) + (defcustom browse-url-chromium-program (let ((candidates '("chromium" "chromium-browser"))) (while (and candidates (not (executable-find (car candidates)))) @@ -349,6 +367,7 @@ functionality is not available there." "Whether to open up new windows in a buffer or a new window. If non-nil, then open the URL in a new buffer rather than a new window if `browse-url-conkeror' is asked to open it in a new window." + :version "25.1" :type 'boolean :group 'browse-url) @@ -415,15 +434,16 @@ commands reverses the effect of this variable." (defcustom browse-url-conkeror-arguments nil "A list of strings to pass to Conkeror as arguments." + :version "25.1" :type '(repeat (string :tag "Argument")) :group 'browse-url) (defcustom browse-url-filename-alist - `(("^/\\(ftp@\\|anonymous@\\)?\\([^:]+\\):/*" . "ftp://\\2/") + `(("^/\\(ftp@\\|anonymous@\\)?\\([^:/]+\\):/*" . "ftp://\\2/") ;; The above loses the username to avoid the browser prompting for ;; it in anonymous cases. If it's not anonymous the next regexp ;; applies. - ("^/\\([^:@]+@\\)?\\([^:]+\\):/*" . "ftp://\\1\\2/") + ("^/\\([^:@/]+@\\)?\\([^:/]+\\):/*" . "ftp://\\1\\2/") ,@(if (memq system-type '(windows-nt ms-dos)) '(("^\\([a-zA-Z]:\\)[\\/]" . "file:///\\1/") ("^[\\/][\\/]+" . "file://"))) @@ -439,15 +459,15 @@ For example, adding to the default a specific translation of an ange-ftp address to an HTTP URL: (setq browse-url-filename-alist - '((\"/webmaster@webserver:/home/www/html/\" . + \\='((\"/webmaster@webserver:/home/www/html/\" . \"http://www.acme.co.uk/\") - (\"^/\\(ftp@\\|anonymous@\\)?\\([^:]+\\):/*\" . \"ftp://\\2/\") - (\"^/\\([^:@]+@\\)?\\([^:]+\\):/*\" . \"ftp://\\1\\2/\") + (\"^/\\(ftp@\\|anonymous@\\)?\\([^:/]+\\):/*\" . \"ftp://\\2/\") + (\"^/\\([^:@/]+@\\)?\\([^:/]+\\):/*\" . \"ftp://\\1\\2/\") (\"^/+\" . \"file:/\")))" :type '(repeat (cons :format "%v" (regexp :tag "Regexp") (string :tag "Replacement"))) - :version "23.1" + :version "25.1" :group 'browse-url) (defcustom browse-url-save-file nil @@ -761,10 +781,18 @@ narrowed." ;;;###autoload (defun browse-url (url &rest args) "Ask a WWW browser to load URL. -Prompt for a URL, defaulting to the URL at or before point. Variable -`browse-url-browser-function' says which browser to use. -If the URL is a mailto: URL, consult `browse-url-mailto-function' -first, if that exists." +Prompt for a URL, defaulting to the URL at or before point. +Invokes a suitable browser function which does the actual job. +The variable `browse-url-browser-function' says which browser function to +use. If the URL is a mailto: URL, consult `browse-url-mailto-function' +first, if that exists. + +The additional ARGS are passed to the browser function. See the doc +strings of the actual functions, starting with `browse-url-browser-function', +for information about the significance of ARGS (most of the functions +ignore it). +If ARGS are omitted, the default is to pass `browse-url-new-window-flag' +as ARGS." (interactive (browse-url-interactive-arg "URL: ")) (unless (called-interactively-p 'interactive) (setq args (or args (list browse-url-new-window-flag)))) @@ -800,7 +828,9 @@ first, if that exists." ;;;###autoload (defun browse-url-at-point (&optional arg) "Ask a WWW browser to load the URL at or before point. -Variable `browse-url-browser-function' says which browser to use." +Variable `browse-url-browser-function' says which browser to use. +Optional prefix argument ARG non-nil inverts the value of the option +`browse-url-new-window-flag'." (interactive "P") (let ((url (browse-url-url-at-point))) (if url @@ -831,6 +861,8 @@ says which browser to use." (declare-function w32-shell-execute "w32fns.c") ;; Defined in C. (defun browse-url-default-windows-browser (url &optional _new-window) + "Invoke the MS-Windows system's default Web browser. +The optional NEW-WINDOW argument is not used." (interactive (browse-url-interactive-arg "URL: ")) (cond ((eq system-type 'ms-dos) (if dos-windows-version @@ -841,6 +873,8 @@ says which browser to use." (t (w32-shell-execute "open" url)))) (defun browse-url-default-macosx-browser (url &optional _new-window) + "Invoke the MacOS X system's default Web browser. +The optional NEW-WINDOW argument is not used" (interactive (browse-url-interactive-arg "URL: ")) (start-process (concat "open " url) nil "open" url)) @@ -875,8 +909,8 @@ non-nil, load the document in a new window, if possible, otherwise use a random existing one. A non-nil interactive prefix argument reverses the effect of `browse-url-new-window-flag'. -When called non-interactively, optional second argument NEW-WINDOW is -used instead of `browse-url-new-window-flag'." +When called non-interactively, optional second argument ARGS is used +instead of `browse-url-new-window-flag'." (apply (cond ((memq system-type '(windows-nt ms-dos cygwin)) @@ -893,6 +927,7 @@ used instead of `browse-url-new-window-flag'." ;;; ((executable-find browse-url-netscape-program) 'browse-url-netscape) ;;; ((executable-find browse-url-mosaic-program) 'browse-url-mosaic) ((executable-find browse-url-conkeror-program) 'browse-url-conkeror) + ((executable-find browse-url-chrome-program) 'browse-url-chrome) ((executable-find browse-url-xterm-program) 'browse-url-text-xterm) ((locate-library "w3") 'browse-url-w3) (t @@ -1098,7 +1133,8 @@ instead of `browse-url-new-window-flag'." "Ask the Chromium WWW browser to load URL. Default to the URL around or before point. The strings in variable `browse-url-chromium-arguments' are also passed to -Chromium." +Chromium. +The optional argument NEW-WINDOW is not used." (interactive (browse-url-interactive-arg "URL: ")) (setq url (browse-url-encode-url url)) (let* ((process-environment (browse-url-process-environment))) @@ -1109,6 +1145,22 @@ Chromium." browse-url-chromium-arguments (list url))))) +(defun browse-url-chrome (url &optional _new-window) + "Ask the Google Chrome WWW browser to load URL. +Default to the URL around or before point. The strings in +variable `browse-url-chrome-arguments' are also passed to +Google Chrome. +The optional argument NEW-WINDOW is not used." + (interactive (browse-url-interactive-arg "URL: ")) + (setq url (browse-url-encode-url url)) + (let* ((process-environment (browse-url-process-environment))) + (apply 'start-process + (concat "google-chrome " url) nil + browse-url-chrome-program + (append + browse-url-chrome-arguments + (list url))))) + ;;;###autoload (defun browse-url-galeon (url &optional new-window) "Ask the Galeon WWW browser to load URL. @@ -1407,7 +1459,8 @@ The `browse-url-gnudoit-program' program is used with options given by URL defaults to the URL around or before point. This runs the text browser specified by `browse-url-text-browser'. in an Xterm window using the Xterm program named by `browse-url-xterm-program' -with possible additional arguments `browse-url-xterm-args'." +with possible additional arguments `browse-url-xterm-args'. +The optional argument NEW-WINDOW is not used." (interactive (browse-url-interactive-arg "Text browser URL: ")) (apply #'start-process `(,(concat browse-url-text-browser url) nil ,browse-url-xterm-program @@ -1555,7 +1608,8 @@ don't offer a form of remote control." ;;;###autoload (defun browse-url-kde (url &optional _new-window) "Ask the KDE WWW browser to load URL. -Default to the URL around or before point." +Default to the URL around or before point. +The optional argument NEW-WINDOW is not used." (interactive (browse-url-interactive-arg "KDE URL: ")) (message "Sending URL to KDE...") (apply #'start-process (concat "KDE " url) nil browse-url-kde-program