--- browse-url.el 2007-10-19 18:28:43.000000000 -0400 +++ browse-url.original.el 2007-10-19 18:19:04.000000000 -0400 @@ -46,7 +46,10 @@ ;; browse-url-cci XMosaic 2.5 ;; browse-url-w3 w3 0 ;; browse-url-w3-gnudoit w3 remotely +;; browse-url-iximosaic IXI Mosaic ? ;; browse-url-lynx-* Lynx 0 +;; browse-url-grail Grail 0.3b1 +;; browse-url-mmm MMM ? ;; browse-url-generic arbitrary ;; browse-url-default-windows-browser MS-Windows browser ;; browse-url-default-macosx-browser Mac OS X browser @@ -77,6 +80,14 @@ ;; Emacs process is available from ;; . +;; Grail is the freely available WWW browser implemented in Python, a +;; cool object-oriented freely available interpreted language. Grail +;; 0.3b1 was the first version to have remote control as distributed. +;; For more information on Grail see +;; and for more information on +;; Python see . Grail support in +;; browse-url.el written by Barry Warsaw . + ;; Lynx is now distributed by the FSF. See also ;; . @@ -207,11 +218,11 @@ ;; Variables (eval-when-compile (require 'cl) - (require 'thingatpt) + (require 'thingatpt) (require 'term) - (require 'dired) + (require 'dired) (require 'executable) - (require 'w3-auto nil t)) + (require 'w3-auto nil t)) (defgroup browse-url nil "Use a web browser to look at a URL." @@ -246,10 +257,13 @@ (function-item :tag "Netscape" :value browse-url-netscape) (function-item :tag "Mosaic" :value browse-url-mosaic) (function-item :tag "Mosaic using CCI" :value browse-url-cci) + (function-item :tag "IXI Mosaic" :value browse-url-iximosaic) (function-item :tag "Lynx in an xterm window" :value browse-url-lynx-xterm) (function-item :tag "Lynx in an Emacs window" :value browse-url-lynx-emacs) + (function-item :tag "Grail" :value browse-url-grail) + (function-item :tag "MMM" :value browse-url-mmm) (function-item :tag "KDE" :value browse-url-kde) (function-item :tag "Elinks" :value browse-url-elinks) (function-item :tag "Specified by `Browse Url Generic Program'" @@ -866,8 +880,8 @@ used instead of `browse-url-new-window-flag'. The order attempted is gnome-moz-remote, Mozilla, Firefox, -Galeon, Konqueror, Netscape, Mosaic, Lynx in an -xterm, and then W3." +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) @@ -877,7 +891,9 @@ ((executable-find browse-url-kde-program) 'browse-url-kde) ((executable-find browse-url-netscape-program) 'browse-url-netscape) ((executable-find browse-url-mosaic-program) 'browse-url-mosaic) + ((executable-find "tellw3b") 'browse-url-iximosaic) ((executable-find browse-url-xterm-program) 'browse-url-lynx-xterm) + ((executable-find "mmm") 'browse-url-mmm) ((locate-library "w3") 'browse-url-w3) (t (lambda (&ignore args) (error "No usable browser found")))) @@ -1241,6 +1257,28 @@ (append browse-url-mosaic-arguments (list url))) (message "Starting %s...done" browse-url-mosaic-program)))) +;; --- Grail --- + +(defvar browse-url-grail + (concat (or (getenv "GRAILDIR") "~/.grail") "/user/rcgrail.py") + "Location of Grail remote control client script `rcgrail.py'. +Typically found in $GRAILDIR/rcgrail.py, or ~/.grail/user/rcgrail.py.") + +;;;###autoload +(defun browse-url-grail (url &optional new-window) + "Ask the Grail WWW browser to load URL. +Default to the URL around or before point. Runs the program in the +variable `browse-url-grail'." + (interactive (browse-url-interactive-arg "Grail URL: ")) + (message "Sending URL to Grail...") + (with-current-buffer (get-buffer-create " *Shell Command Output*") + (erase-buffer) + ;; don't worry about this failing. + (if (browse-url-maybe-new-window new-window) + (call-process browse-url-grail nil 0 nil "-b" url) + (call-process browse-url-grail nil 0 nil url)) + (message "Sending URL to Grail... done"))) + ;; --- Mosaic using CCI --- ;;;###autoload @@ -1272,6 +1310,17 @@ (process-send-string "browse-url" "disconnect\r\n") (delete-process "browse-url")) +;; --- IXI Mosaic --- + +;;;###autoload +(defun browse-url-iximosaic (url &optional new-window) + ;; new-window ignored + "Ask the IXIMosaic WWW browser to load URL. +Default to the URL around or before point." + (interactive (browse-url-interactive-arg "IXI Mosaic URL: ")) + (start-process "tellw3b" nil "tellw3b" + "-service WWW_BROWSER ixi_showurl " url)) + ;; --- W3 --- ;;;###autoload @@ -1335,6 +1384,7 @@ used instead of `browse-url-new-window-flag'." (interactive (browse-url-interactive-arg "Lynx URL: ")) (let* ((system-uses-terminfo t) ; Lynx uses terminfo + ;; (term-term-name "vt100") ; ?? (buf (get-buffer "*lynx*")) (proc (and buf (get-buffer-process buf))) (n browse-url-lynx-input-attempts)) @@ -1383,6 +1433,24 @@ url "\r"))))) +;; --- MMM --- + +;;;###autoload +(defun browse-url-mmm (url &optional new-window) + "Ask the MMM WWW browser to load URL. +Default to the URL around or before point." + (interactive (browse-url-interactive-arg "MMM URL: ")) + (message "Sending URL to MMM...") + (with-current-buffer (get-buffer-create " *Shell Command Output*") + (erase-buffer) + ;; mmm_remote just SEGVs if the file isn't there... + (if (or (file-exists-p (expand-file-name "~/.mmm_remote")) + ;; location in v 0.4: + (file-exists-p (expand-file-name "~/.mmm/remote"))) + (call-process "mmm_remote" nil 0 nil url) + (call-process "mmm" nil 0 nil "-external" url)) + (message "Sending URL to MMM... done"))) + ;; --- mailto --- (autoload 'rfc2368-parse-mailto-url "rfc2368") @@ -1451,7 +1519,7 @@ (defun browse-url-elinks-new-window (url) "Ask the Elinks WWW browser to load URL in a new window." - (let ((process-environment (browse-url-process-environment))) + (let ((process-environment (browse-url-process-environment))) (apply #'start-process (append (list (concat "elinks:" url) nil)