(defmacro browse-url-maybe-new-tab (arg)
`(if (interactive-p)
,arg
browse-url-new-tab-flag))
(defun browse-url-phoenix (url &optional new-window new-tab)
"Ask the Phoenix WWW browser to load URL.
Default to the URL around or before point. The strings in variable
`browse-url-phoenix-arguments' are also passed to Phoenix.
When called interactively, if variable `browse-url-new-window-flag' is
non-nil, load the document in a new Phoenix window, 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'."
(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 "phoenix " url) nil
browse-url-phoenix-program
(append
browse-url-phoenix-arguments
(if (eq window-system 'w32)
(list url)
(append
(if new-window '("-noraise"))
(list "-remote"
(concat "openURL(" url
(if (browse-url-maybe-new-window
new-window)
",new-window")
(if (browse-url-maybe-new-tab
new-tab)
",new-tab")
")"))))))))
(set-process-sentinel process
`(lambda (process change)
(browse-url-phoenix-sentinel process ,url)))))
(defun browse-url-phoenix-sentinel (process url)
"Handle a change to the process communicating with Phoenix."
(or (eq (process-exit-status process) 0)
(let* ((process-environment (browse-url-process-environment)))
;; Phoenix not running - start it
(message "Starting Phoenix...")
(apply 'start-process (concat "phoenix" url) nil
browse-url-phoenix-program
(append browse-url-phoenix-startup-arguments (list url))))))
(defun browse-url-phoenix-send (command)
"Send a remote control command to Phoenix."
(let* ((process-environment (browse-url-process-environment)))
(apply 'start-process "phoenix" nil
browse-url-phoenix-program
(append browse-url-phoenix-arguments
(list "-remote" command)))))
(defun browse-url-phoenix-open-new-window ()
"Ask Phoenix to reload its current document.
How depends on `browse-url-phoenix-version'."
(interactive)
(browse-url-phoenix-send "xfeDoCommand(openBrowser)"))
(load "wy-browse-url") (setq browse-url-browser-function 'browse-url-phoenix) (setq browse-url-phoenix-program "phoenix") (setq browse-url-phoenix-arguments nil) (setq browse-url-phoenix-startup-arguments browse-url-phoenix-arguments) (setq browse-url-new-window-flag nil) (setq browse-url-new-tab-flag t)
其中有几个可以自己设定的参数,比如: