emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] Changes to emacs/lisp/net/browse-url.el


From: Eli Zaretskii
Subject: [Emacs-diffs] Changes to emacs/lisp/net/browse-url.el
Date: Sat, 18 Jun 2005 06:35:19 -0400

Index: emacs/lisp/net/browse-url.el
diff -c emacs/lisp/net/browse-url.el:1.45 emacs/lisp/net/browse-url.el:1.46
*** emacs/lisp/net/browse-url.el:1.45   Fri Jun 10 14:13:42 2005
--- emacs/lisp/net/browse-url.el        Sat Jun 18 10:35:18 2005
***************
*** 38,43 ****
--- 38,44 ----
  
  ;; 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-galeon                  Galeon      Don't know
  ;; browse-url-epiphany                Epiphany    Don't know
  ;; browse-url-netscape                Netscape    1.1b1
***************
*** 248,253 ****
--- 249,255 ----
          (function-item :tag "W3 in another Emacs via `gnudoit'"
                         :value  browse-url-w3-gnudoit)
          (function-item :tag "Mozilla" :value  browse-url-mozilla)
+         (function-item :tag "Firefox" :value browse-url-firefox)
          (function-item :tag "Galeon" :value  browse-url-galeon)
          (function-item :tag "Epiphany" :value  browse-url-epiphany)
          (function-item :tag "Netscape" :value  browse-url-netscape)
***************
*** 323,328 ****
--- 325,349 ----
    :type '(repeat (string :tag "Argument"))
    :group 'browse-url)
  
+ ;;;###autoload
+ (defcustom browse-url-firefox-program "firefox"
+   "*The name by which to invoke Firefox."
+   :type 'string
+   :group 'browse-url)
+ 
+ (defcustom browse-url-firefox-arguments nil
+   "*A list of strings to pass to Firefox 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.
+ Defaults to the value of `browse-url-firefox-arguments' at the time
+ `browse-url' is loaded."
+   :type '(repeat (string :tag "Argument"))
+   :group 'browse-url)
+ 
+ ;;;###autoload
  (defcustom browse-url-galeon-program "galeon"
    "*The name by which to invoke Galeon."
    :type 'string
***************
*** 373,378 ****
--- 394,409 ----
    :type 'boolean
    :group 'browse-url)
  
+ (defcustom browse-url-firefox-new-window-is-tab nil
+   "*Whether to open up new windows in a tab or a new window.
+ If non-nil, then open the URL in a new tab rather than a new window if
+ `browse-url-firefox' is asked to open it in a new window.
+ 
+ This option is currently ignored on MS-Windows, since the necessary
+ functionality is not available there."
+   :type 'boolean
+   :group 'browse-url)
+ 
  (defcustom browse-url-galeon-new-window-is-tab nil
    "*Whether to open up new windows in a tab or a new window.
  If non-nil, then open the URL in a new tab rather than a new window if
***************
*** 815,827 ****
  When called non-interactively, optional second argument NEW-WINDOW is
  used instead of `browse-url-new-window-flag'.
  
! The order attempted is gnome-moz-remote, Mozilla, Galeon,
! Konqueror, Netscape, Mosaic, IXI Mosaic, Lynx in an xterm, MMM,
! and then W3."
    (apply
      (cond
       ((executable-find browse-url-gnome-moz-program) 'browse-url-gnome-moz)
       ((executable-find browse-url-mozilla-program) 'browse-url-mozilla)
       ((executable-find browse-url-galeon-program) 'browse-url-galeon)
       ((executable-find browse-url-kde-program) 'browse-url-kde)
       ((executable-find browse-url-netscape-program) 'browse-url-netscape)
--- 846,859 ----
  When called non-interactively, optional second argument NEW-WINDOW is
  used instead of `browse-url-new-window-flag'.
  
! The order attempted is gnome-moz-remote, Mozilla, Firefox,
! Galeon, Konqueror, Netscape, Mosaic, IXI Mosaic, Lynx in an
! xterm, MMM, and then W3."
    (apply
      (cond
       ((executable-find browse-url-gnome-moz-program) 'browse-url-gnome-moz)
       ((executable-find browse-url-mozilla-program) 'browse-url-mozilla)
+      ((executable-find browse-url-firefox-program) 'browse-url-firefox)
       ((executable-find browse-url-galeon-program) 'browse-url-galeon)
       ((executable-find browse-url-kde-program) 'browse-url-kde)
       ((executable-find browse-url-netscape-program) 'browse-url-netscape)
***************
*** 960,965 ****
--- 992,1062 ----
               (append browse-url-mozilla-startup-arguments (list url))))))
  
  ;;;###autoload
+ (defun browse-url-firefox (url &optional new-window)
+   "Ask the Firefox WWW browser to load URL.
+ Default to the URL around or before point.  The strings in
+ variable `browse-url-firefox-arguments' are also passed to
+ Firefox.
+ 
+ When called interactively, if variable
+ `browse-url-new-window-flag' is non-nil, load the document in a
+ new Firefox window, otherwise use a random existing one.  A
+ non-nil interactive prefix argument reverses the effect of
+ `browse-url-new-window-flag'.
+ 
+ If `browse-url-firefox-new-window-is-tab' is non-nil, then
+ whenever a document would otherwise be loaded in a new window, it
+ is loaded in a new tab in an existing window instead.
+ 
+ When called non-interactively, optional second argument
+ NEW-WINDOW is used instead of `browse-url-new-window-flag'.
+ 
+ On MS-Windows systems the optional `new-window' parameter is
+ ignored.  Firefox for Windows does not support the \"-remote\"
+ command line parameter.  Therefore, the
+ `browse-url-new-window-flag' and `browse-url-firefox-new-window-is-tab'
+ are ignored as well.  Firefox on Windows will always open the requested
+ URL in a new window."
+   (interactive (browse-url-interactive-arg "URL: "))
+   ;; URL encode any `confusing' characters in the URL.  This needs to
+   ;; include at least commas; presumably also close parens.
+   (while (string-match "[,)]" url)
+     (setq url (replace-match
+              (format "%%%x" (string-to-char (match-string 0 url))) t t url)))
+   (let* ((process-environment (browse-url-process-environment))
+        (process
+         (apply 'start-process
+                (concat "firefox " url) nil
+                browse-url-firefox-program
+                (append
+                 browse-url-firefox-arguments
+                 (if (or (featurep 'dos-w32)
+                         (string-match "win32" system-configuration))
+                     (list url)
+                   (list "-remote"
+                         (concat "openURL("
+                                 url
+                                 (if (browse-url-maybe-new-window
+                                      new-window)
+                                     (if browse-url-firefox-new-window-is-tab
+                                         ",new-tab"
+                                       ",new-window"))
+                                 ")")))))))
+     (set-process-sentinel process
+                         `(lambda (process change)
+                            (browse-url-firefox-sentinel process ,url)))))
+ 
+ (defun browse-url-firefox-sentinel (process url)
+   "Handle a change to the process communicating with Firefox."
+   (or (eq (process-exit-status process) 0)
+       (let* ((process-environment (browse-url-process-environment)))
+       ;; Firefox is not running - start it
+       (message "Starting Firefox...")
+       (apply 'start-process (concat "firefox " url) nil
+              browse-url-firefox-program
+              (append browse-url-firefox-startup-arguments (list url))))))
+ 
+ ;;;###autoload
  (defun browse-url-galeon (url &optional new-window)
    "Ask the Galeon WWW browser to load URL.
  Default to the URL around or before point.  The strings in variable




reply via email to

[Prev in Thread] Current Thread [Next in Thread]