(not (eq (null browse-url-new-window-p)
(null current-prefix-arg)))))
+;; interactive-p needs to be called at a function's top-level, hence
+;; the macro.
+(defmacro browse-url-maybe-new-window (arg)
+ `(if (interactive-p)
+ ,arg
+ browse-url-new-window-p))
+
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Browse current buffer
Prompts for a URL, defaulting to the URL at or before point. Variable
`browse-url-browser-function' says which browser to use."
(interactive (browse-url-interactive-arg "URL: "))
+ (unless (interactive-p)
+ (setq args (list browse-url-new-window-p)))
(if (functionp browse-url-browser-function)
(apply browse-url-browser-function url args)
;; The `function' can be an alist; look down it for first match
url))))
;;;###autoload
-(defun browse-url-at-point ()
+(defun browse-url-at-point (&optional arg)
"Ask a WWW browser to load the URL at or before point.
Doesn't let you edit the URL like `browse-url'. Variable
`browse-url-browser-function' says which browser to use."
- (interactive)
- (browse-url (browse-url-url-at-point)))
+ (interactive "P")
+ (browse-url (browse-url-url-at-point)
+ (if arg
+ (not browse-url-new-window-p)
+ browse-url-new-window-p)))
(defun browse-url-event-buffer (event)
(window-buffer (posn-window (event-start event))))
(if new-window '("-noraise"))
(list "-remote"
(concat "openURL(" url
- (if new-window ",new-window")
+ (if (browse-url-maybe-new-window
+ new-window)
+ ",new-window")
")"))))))))
(set-process-sentinel process
(list 'lambda '(process change)
(save-excursion
(find-file (format "/tmp/Mosaic.%d" pid))
(erase-buffer)
- (insert (if new-window
+ (insert (if (browse-url-maybe-new-window new-window)
"newwin\n"
"goto\n")
url "\n")
;; Todo: start browser if fails
(process-send-string "browse-url"
(concat "get url (" url ") output "
- (if new-window
+ (if (browse-url-maybe-new-window new-window)
"new"
"current")
"\r\n"))
used instead of `browse-url-new-window-p'."
(interactive (browse-url-interactive-arg "W3 URL: "))
(require 'w3) ; w3-fetch-other-window not autoloaded
- (if new-window
+ (if (browse-url-maybe-new-window new-window)
(w3-fetch-other-window url)
(w3-fetch url)))
(interactive (browse-url-interactive-arg "W3 URL: "))
(apply 'start-process (concat "gnudoit:" url) nil
browse-url-gnudoit-program
- (append browse-url-gnudoit-args (list (concat "(w3-fetch \"" url "\")") "(raise-frame)"))))
+ (append browse-url-gnudoit-args
+ (list (concat "(w3-fetch \"" url "\")")
+ "(raise-frame)"))))
;; --- Lynx in an xterm ---
with possible additional arguments `browse-url-xterm-args'."
(interactive (browse-url-interactive-arg "Lynx URL: "))
(apply #'start-process `(,(concat "lynx" url) nil ,browse-url-xterm-program
- ,@browse-url-xterm-args "-e" "lynx" ,url)))
+ ,@browse-url-xterm-args "-e" "lynx"
+ ,url)))
;; --- Lynx in an Emacs "term" window ---
(buf (get-buffer "*lynx*"))
(proc (and buf (get-buffer-process buf)))
(n browse-url-lynx-input-attempts))
- (if (and new-buffer buf)
+ (if (and (browse-url-maybe-new-window new-buffer) buf)
;; Rename away the OLD buffer. This isn't very polite, but
;; term insists on working in a buffer named *lynx* and would
;; choke on *lynx*<1>
(progn (set-buffer buf)
(rename-uniquely)))
- (if (or new-buffer
+ (if (or (browse-url-maybe-new-window new-buffer)
(not buf)
(not proc)
(not (memq (process-status proc) '(run stop))))
(progn
(setq buf
(apply #'make-term
- `("lynx" "lynx" nil ,@browse-url-lynx-emacs-args ,url)))
+ `("lynx" "lynx" nil ,@browse-url-lynx-emacs-args
+ ,url)))
(switch-to-buffer buf)
(term-char-mode)
(set-process-sentinel
(let ((to (if (string-match "^mailto:" url)
(substring url 7)
url)))
- (if new-window
+ (if (browse-url-maybe-new-window new-window)
(compose-mail-other-window to nil nil nil
(list 'insert-buffer (current-buffer)))
(compose-mail to nil nil nil nil