--- browse-url.el 2007-10-19 18:22:41.000000000 -0400
+++ browse-url.original.el 2007-10-19 18:19:04.000000000 -0400
@@ -48,6 +48,8 @@
;; 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
@@ -78,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
;; .
@@ -208,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."
@@ -252,6 +262,8 @@
: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'"
@@ -869,7 +881,7 @@
The order attempted is gnome-moz-remote, Mozilla, Firefox,
Galeon, Konqueror, Netscape, Mosaic, IXI Mosaic, Lynx in an
-xterm, and then W3."
+xterm, MMM, and then W3."
(apply
(cond
((executable-find browse-url-gnome-moz-program) 'browse-url-gnome-moz)
@@ -881,6 +893,7 @@
((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"))))
@@ -1244,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
@@ -1349,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))
@@ -1397,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")
@@ -1465,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)