don't think this made it onto www-talk yet.....

Marc Andreessen (
Tue, 30 Mar 93 02:28:16 -0600

Newsgroups: cs.system.announce,alt.hypertext,gnu.emacs.sources
From: (William M. Perry)
Subject: Announcing A World Wide Web Browser For Emacs
Organization: Computer Science Student, Indiana University
Date: Tue, 30 Mar 1993 03:34:25 GMT

This is to announce a World Wide Web browser for emacs (.004beta) that I've
written over the last week. It's not extremely pretty code, but it works
(95% or so).

Right now the only links this doesn't support are news links (which
shouldn't be all that hard to work in, just haven't had the time just yet).
Telnet, Gopher, Ftp, HTTP, and local file access are all supported. If you
are using Lucid Emacs or Epoch, the headers, titles, and nodes are
highlighted/in a different font, and menus are used.

Main Points:
1. Supports relative file access (ie: links to foo.html instead of
2. Gopher support via the gopher.el package written by Scott Snyder
3. Telnet support via the transparent.el package written by Brian Tompsett
4. Remote file access via ange-ftp.el, written by Andy Norman
5. Http and local file support by me
6. Support for all HTML formatting commands (that I could find anyway)
7. Automatic uncompression of files (gunzip or uncompress based on the
file extension)
8. If in X, automatic recognition of sound/postscript/dvi/gif/jpg/etc
files, and piping to external commands (user-specifiable)
9. Understands XMosaic hotlist files (and can modify them)
10. Searching (server-based, but prompts for keywords, etc)
11. Previewing of html buffers (w3-preview-this-buffer). Mainly used by me
to write urls to try and break the parser, but also good for checking
normal html docs while writing.

I've only found a few html documents that could break this (and even then
not _completely_), so I figured I would release it and see if anyone out
there would like to use it/become a beta-tester. If you decide to grab
this, please send me a mail message, so I can know if anyone out there is
actually using this stuff I write. :)

The file(s) can be ftp'd from in /pub/elisp/w3/*
The tar file contains ange-ftp, gopher, transparent, and w3. If you've
already got these installed on your system, just grab the w3.el file that
is also in that directory.

The default home page for the viewer is a documentation tree I am putting
together here on our http server.

The tar file includes a makefile. You can use this to automatically update
your .emacs (make emacs), as well as byte-compile the files (make all).

!!!!!!!!!!!!!!!!!!!!!!!!!! There is one major problem. !!!!!!!!!!!!!!!!!!!!!!!!
If you don't have emacs linked with the hostname resolultion library
(-lresolve), this won't work right now. I've tried to work around this by
having a function called w3-open-stream. If you have hostname resolution
linked in, no problem. Just alias w3-open-stream to be
open-network-stream. Works fine. Problem comes when I want to define
w3-open-stream to be (start-process ... "/usr/ucb/telnet " host port etc).
Doesn't work at all. The string never gets sent to the subprocess, and the
connection is eventually timed out. Weird part is that if I use edebug to
step through the function, it works perfectly - sends the string to the
subprocess, and the file is retrieved. Same thing happens if I type the
commands in lisp-interaction-mode. But calling it from within a function
causes it to choke.

Any help on that problem would be greatly appreciated, since a lot of
people don't link with -lresolve, and don't have sysadmins as nice as mine
that will redo it on a whim. :)


Any help/feedback would be appreciated. Especially http addresses of files
that cause this to choke.

The source code by itself is also available via http (of course):

-Bill Perry
-- William M. Perry ( --
These views/programs have nothing to do with Indiana University, University
Computing Services, the CIA, the NSA, the KGB, NASA, or the ASPCA. IU pays
me for programming in inferior programming languages like C++, not elisp!!!