This is Info file ../info/w3.info, produced by Makeinfo-1.63 from the
input file w3.texi.

   This file documents the Emacs-W3 World Wide Web browser.

   Copyright (C) 1993, 1994, 1995 William M. Perry Copyright (C) 1996
Free Software Foundation

   Permission is granted to make and distribute verbatim copies of this
manual provided the copyright notice and this permission notice are
preserved on all copies.


File: w3.info,  Node: Top,  Next: Introduction,  Up: (DIR)

   This manual documents the Emacs-W3 World Wide Web browser, a Lisp
program which runs as a subsystem under Emacs.  The manual is divided
into the following chapters.

* Menu:

* Introduction::                Overview of Emacs-W3.
* Starting Up::                 What happens when you start Emacs-W3
* Basic Usage::                 Basic movement and usage of Emacs-W3.
* Compatibility::               Explanation of compatibility with
                                other web browsers.
* Controlling Formatting::	How to control HTML formatting
* MIME Support::                Support for MIME
* Security::                    Various forms of security
* Non-Unix Operating Systems::	Special considerations necessary to get
                                up and running correctly under non-unix
                                OS's.
* Advanced Features::           Some of the more arcane features.
* More Help::                   How to get more help--mailing lists,
                                newsgroups, etc.
* Future Directions::           Plans for future revisions

Appendices:
* Reporting Bugs::              How to report a bug in Emacs-W3
* Installing SSL::              Turning on SSL support
* Using PGP/PEM::               Turning on PGP/PEM encryption support
* Mailcap Files::               An explanation of Mailcap files

Indices:
* General Index::               General Index
* Key Index::                   Menus of command keys and their references


File: w3.info,  Node: Introduction,  Next: Starting Up,  Prev: Top,  Up: Top

Introduction
************

   Emacs-W3 is an Emacs subsystem that allows the user to browse the
wonderful World Wide Web (WWW).

   The World Wide Web was begun at the CERN physics institute in
Switzerland in 1991.  The project was initiated by Tim Berners-Lee
(timbl@w3.org) for distributing data between different research groups
effectively.

   The Web has since grown into the most advanced information system
currently on the internet.  It is now a global hypertext system with
servers and "browsers" (programs written to interpret the hypertext
language and display it correctly, and allow the user to follow links)
exist for all major platforms (VMS, Windows, DOS, Unix, VM, NeXTstep,
Amiga, and Macintosh).

   The basic concepts used in the Web are hypertext and hypermedia.
Hypertext is the same as regular text, with one exception--it can
contain links (cross-references) to other textual documents.  Hypermedia
is slightly different--it can contain links to other forms of media
(movies, sounds, interactive programs, etc.).

   WWW also allows searches of indices that are located anywhere on the
network; in this respect, it mirrors certain capabilities found in both
WAIS and Gopher.

                            ---------------

                           CLIENT SIDE VIEW

                            ---------------

   The WWW consists of documents and links.  Indexes are special
documents which, rather than being read, may be searched.  The result
of such a search is another virtual document containing links to the
documents found.  A simple protocol, Hypertext Transfer Protocol or
HTTP, is used to allow a browser program to request a keyword search by
a remote information server.

   The web contains documents in many formats.  Those documents which
are hypertext, (real or virtual) contain links to other documents, or
places within documents.  All documents, whether real, virtual or
indexes, look similar to the reader and are contained within the same
addressing scheme.

                       ------------------------

                       INFORMATION PROVIDER VIEW

                       ------------------------

   WWW browsers can access many existing data systems via existing
protocols (FTP, NNTP) or via HTTP and a gateway.  In this way, the
critical mass of data is quickly exceeded, and the increasing use of the
system by readers and information suppliers encourage each other.

   Providing information is as simple as running a WWW server and
pointing it at an existing directory structure.  The server
automatically generates a hypertext view of the files to guide the user
around.

   To personalize it, a few SGML hypertext files can be written to give
an even more friendly view.  Also, any file available by anonymous FTP,
or any internet newsgroup can be immediately linked into the web.  The
small start-up effort is designed to allow open contributions.  At the
other end of the scale, large information providers may provide an HTTP
server with full text or keyword indexing.  This may allow access to a
large existing database without changing the way that database is
managed.  Such gateways have already been made into Oracle(tm), WAIS,
and Digital's VMS/Help systems, to name but a few.

   The WWW model gets over the frustrating incompatibilities of data
format between suppliers and reader by allowing negotiation of format
between a smart browser and a smart server.  This provides a basis for
extension into multimedia, and allow those who share application
standards to make full use of them across the web.

   Here is some more specific information about what Emacs-W3 does and
does not understand:

* Menu:

* Markup Languages Supported::	The different markup languages that
				Emacs-W3 understands natively.
* Supported Protocols::		The different network protocols that
				Emacs-W3 speaks to.


File: w3.info,  Node: Markup Languages Supported,  Next: Supported Protocols,  Prev: Introduction,  Up: Introduction

Supported Markup Languages
**************************

   Several different markup languages, and various extensions to those
languages, are supported by Emacs-W3.

                               ---------

                               HTML 2.0

                               ---------

   The Hypertext Markup Language, or HTML, is composed of a set of
elements that define a document and guide its display.  An HTML element
may include a name, some attributes and some text or hypertext, and
appears in an HTML document as <tag_name>text</tag_name>, <tag_name
attribute_name=argument>text</tag_name>, or just <tag_name>.

   For example: `<title>My Useful Document</title>', and `<pre
width=60> A lot of text here.  </pre>'.

   An HTML document is composed of a single element: <html>...</html>,
that is, in turn, composed of head and body elements: <head>...</head>,
and <body>...</body>.  To allow older HTML documents to remain readable,
<html>, <head>, and <body> are actually optional within HTML documents.

   All the tags and attributes of HTML are fully supported in Emacs-W3.

   The full HTML 2.0 specification is available at any RFC archive(1).
It is RFC 1866.

                               ---------

                               HTML 3.0

                               ---------

   The HTML 3.2 language is an extension of HTML, with a large degree of
backward compatibility with HTML 2.0.  This basically documents current
practice as of January, 1996.

                               ---------

                             Netscape-HTML

                               ---------

   I hate to say it, but I broke down and actually included some of the
Netscape extensions into Emacs-W3.  The thing I hate to say even more,
is that most of the uglier things in Netscape-HTML are now in the HTML
3.2 specification.  All hail the W3Cs lack of backbone.

<center>...</center>
     This ugly, ill-thought-out alternative to the HTML 3.0 align
     attribute on headers and paragraphs was included for
     compatibility, and as an example of how not to do things.

<isindex>
     The isindex tag can now take a prompt attribute, to get rid of the
     default 'This is a searchable index' label.

                               ---------

                             SGML Features

                               ---------

   :: WORK :: Document marked sections, SGML features

                               ---------

                                Extras

                               ---------

   There are several different markup elements that are not officially
part of HTML or HTML 3.0 that Emacs-W3 supports.  These are either
items that were dropped from HTML 3.0 after I had implemented them, or
experimental parts of HTML that should not be counted as "official" or
long lived.
   * More <HR> improvements.  Text can be added into a horizontal rule
     by using the LABEL and TEXTALIGN attributes.

          <hr label="testing" textalign="right">
          yields
          ----------------------------------------------------------testing-
          
          <hr label="testing" textalign="center">
          yields
          -----------------------------testing------------------------------
          
          <hr label="testing" textalign="left">
          yields
          -Testing----------------------------------------------------------

   * FLAME support.  For truly interesting dynamic documents.  This is
     replaced with a random quote from Mr. Angry (see `M-x flame' for a
     sample).

   * The top ten tags that did not make it into netscape.  These tags
     were posted to the newsgroup comp.infosystems.www.misc by Laura
     Lemay (lemay@netcom.com).  Much thanks to her for the humor.
    <wired>...</wired>
          Renders the enclosed text in a suitably ugly font/color
          combination.  If no default has been set up by the user, this
          is the default font, with red text on a yellow background.

    <roach>...</roach>
          When selected, the enclosed text runs and hides under the
          nearest window.  OR, giggles a lot and demands nachos,
          depending on the definition of "roach." (the formal
          definition, of course, to be determined by the Official
          Honorary Internet Standards Committee For Moving Really
          Slowly.)

    <pinhead>
          Inserts "zippyisms" into the enclosed text.  Perfect for
          those professional documents.  This is sure to be a favorite
          of mine!

    <secret>...</secret>
          Must use secret spy decoder glasses (available direct from
          Netscape for a reasonable fee) in order to read the enclosed
          text.  Can also be read by holding the computer in front of a
          full moon during the autumn solstice.

          In Emacs-W3, this displays the text using rot13 encoding.

    <hype>
          Causes Marc Andreesen to magically appear and grant an
          interview (wanted or not).  Please use this tag sparingly.

    <peek>....</peek>
    <poke>...</poke>
          Need more control over screen layout in HTML?  Well, here ya
          go.

          Actually, <peek> could almost be considered useful.  The
          VARIABLE attribute can be used to insert the value of an
          emacs variable into the current document.  Things like
          'Welcome to my page, <peek variable=user-mail-address>' can
          be useful in freaking people out.

    <yogsothoth>
          Summons the elder gods to suck away your immortal soul.  Or
          Bill Gates, if the elder gods are busy.  Unpredictable (but
          amusing) results occur when the <YOGSOTHOTH> and <HYPE> tags
          are used in close proximity.

    <blink>...</blink>
          Causes the enclosed text to .... ooops that one made it in.

   ---------- Footnotes ----------

   (1)  ftp://ds.internic.net/


File: w3.info,  Node: Supported Protocols,  Prev: Markup Languages Supported,  Up: Introduction

Supported Protocols
*******************

   Emacs-W3 supports the following protocols
Usenet News
     Can either display an entire newsgroup or specific articles by
     Message-ID: header.  This supports a unix-style .newsrc file, so
     the user does not see articles they have read using another
     newsreader, but due to how news URLs work, the .newsrc file cannot
     be updated reliably.

     To be more in line with the other URL schemes, the hostname and
     port of an NNTP server can be specified.  URLs of the form
     news://hostname:port/messageID work, but will not work in most
     other browsers.

HTTP
     Supports the HTTP/0.9, HTTP/1.0, and HTTP/1.1 protocols.  Fully
     MIME-compliant with regards to HTTP/1.0.

Gopher
     Support for all gopher types, including CSO queries.

Gopher+
     Support for Gopher+ retrievals. Support for converting ASK blocks
     into HTML 3.0 FORMS and submitting them back to the server.

FTP
     FTP is handled by either ange-ftp or efs.

Local files
     Local files are handled, and MIME content-types are derived from
     the file extensions.

Telnet
     Telnet is handled by running the Emacs Lisp function `telnet', or
     spawning an xterm running telnet.

TN3270
     TN3270 is handled by running a tn3270 program in an Emacs buffer,
     or spawning an xterm running tn3270.

Mailto
     Causes a mail message to be started to a specific address.

mailserver
     A more powerful version of mailto, which allows the author to
     specify the subject and body text of the mail message.  This type
     of link is never fully executed without user confirmation, because
     it is possible to insert insulting or threatening (and possibly
     illegal) data into the message.  The mail message is displayed,
     and the user must type 'yes' to send it.

X-exec
     A URL can cause a local executable to be run, and its output
     interpreted as if it had come from an HTTP server.  This is very
     useful, but is still an experimental protocol, hence the X- prefix.

SSL
     SSL requires a set of patches to the Emacs C code and SSLRef 2.0,
     or an external program to run in a subprocess (similar to the
     `tcp.el' package that comes with GNUS.  *Note Installing SSL::

Secure HTTP
     Work is in progress to add support for the Secure HTTP
     specification from Enterprise Information Technologies.  The
     specification for SHTTP can be found on EIT's web server at
     http://www.commerce.net/information/standards/drafts/shttp.txt.


File: w3.info,  Node: Starting Up,  Next: Basic Setup,  Prev: Introduction,  Up: Top

Starting Up
***********

   This section of the manual deals with getting, compiling, and
configuring Emacs-W3.

* Menu:

* Basic Setup::                 Basic setup that everyone needs to do
* Firewalls::                   How to set Emacs-W3 up to use a particular
                                firewall setup.
* Proxy Gateways::              Using a proxy server


File: w3.info,  Node: Basic Setup,  Next: Firewalls,  Prev: Starting Up,  Up: Starting Up

Basic Setup
===========

   There are a few variables that almost all people need to change.

`w3-default-homepage'
     The url to open at startup.  This defaults to the environment
     variable WWW_HOME if it is not set it in the users `.emacs' file.
     If WWW_HOME is undefined, then it defaults to the hypertext
     documentation for Emacs-W3.

`w3-delay-image-loads'
     Controls the loading of inlined images.  If non-`nil', images are
     not loaded.  If the correct image converters are not installed or
     the network connection is very slow, it is best to set this to `t'.
     Defaults to `nil'.

`url-global-history-file'
     The global history file used by both Mosaic/X and Emacs-W3.  This
     file contains a list of all the URLs that have been visited.  This
     file is parsed at startup and used to provide URL completion.
     Emacs-W3 can read and write Mosaic/X or Netscape 1.x style history
     files, or use its own internal format (faster).  The file type is
     determined automatically, or prompted for if the file does not
     exist.

`w3-hotlist-file'
     Hotlist filename.  This should be the name of a file that is
     stored in NCSA's Mosaic/X or Netscape's format.  It is used to
     keep a listing of commonly accessed URLs.

`w3-personal-annotation-directory'
     The directory where Emacs-W3 looks for personal annotations.  This
     is a directory that should hold the personal annotations stored in
     a Mosaic/X-compatible format.

`url-pgp/pem-entity'
     The name by which the user is known to PGP and/or PEM entities.
     If this is not set when Emacs-W3 is loaded, it defaults to
     `user-mail-address' if it is set, otherwise
     `(user-real-login-name)'@`(system-name)'.

`url-personal-mail-address'
     User's full email address.  This is what is sent to HTTP/1.0
     servers as the FROM header.  If this is not set when Emacs-W3 is
     loaded, then it defaults to the value of `url-pgp/pem-entity'.

`w3-right-border'
     Amount of space to leave on right margin of WWW buffers.  This
     amount is subtracted from the width of the window for each new WWW
     buffer and used as the new `fill-column'.

`w3-track-mouse'
     Controls whether to track the mouse and message the url under the
     mouse.  If this is non-`nil', then a description of the hypertext
     area under the mouse is shown in the minibuffer.  This shows what
     type of link (inlined image, form entry area, delayed image,
     delayed MPEG, or hypertext reference) is under the cursor, and the
     destination.

`w3-echo-link'
     Controls how a URL is shown when a link is reached with f, b, or
     the mouse moves over it.  Possible values are:
    url
          Displays the URL (ie: `http://www.cs.indiana.edu/').

    text
          Displays the text of the link (ie: `A link to Indiana
          University').

    nil
          Show nothing.

`w3-use-forms-index'
     Non-`nil' means translate <ISINDEX> tags into a hypertext form.  A
     single text entry box is shown where the ISINDEX tag appears.

`url-use-hypertext-gopher'
     Controls how gopher documents are retrieved.  If non-`nil', the
     gopher pages are converted into HTML and parsed just like any other
     page.  If `nil', the requests are passed off to the `gopher.el'
     package by Scott Snyder.  Using the `gopher.el' package loses the
     gopher+ support, and inlined searching.

`url-xterm-command'
     Command used to start a windowed shell, similar to an xterm.  This
     string is passed through `format', and should expect four strings:
     the title of the window, the program name to execute, and the
     server and port number.  The default is for xterm, which is very
     UNIX and XWindows-centric.


File: w3.info,  Node: Firewalls,  Next: Proxy Gateways,  Prev: Basic Setup,  Up: Starting Up

Firewalls
=========

   There are several different reasons why the gateway support might be
required.
  1. Stuck behind a firewall.  This is usually the case at large
     corporations with paranoid system-administrators.

  2. Using TERM (1) for slip-like access to the internet.

     NOTE: XEmacs and Emacs 19.22 or later have patches to enable
     native TERM networking.  To enable it, #define TERM in the
     appropriate s/*.h file for the operating system, then change the
     SYSTEM_LIBS define to include the `termnet' library that comes
     with the latest versions of TERM.

  3. Emacs cannot resolve hostnames.  This happens quite often on Sun
     workstations and some ULTRIX machines.  Some C libraries do not
     include the hostname resolver routines in their static libraries.
     If Emacs was linked statically, this means it won't be able to get
     to any machines off the local network.  This is characterized by
     being able to reach someplace with a raw ip number, but not its
     hostname (http://129.79.254.191/ works, but
     http://www.cs.indiana.edu/ doesn't).

     If for some reason it is not feasible to recompile Emacs with the
     `-lresolv' library or dynamic linking, it is just like being behind
     a firewall.  Another alternative is to set the variable
     `url-broken-resolution' - this will use the support in ange-ftp or
     EFS to use `nslookup' in a subprocess to do all hostname resolving.
     See the variables `efs-nslookup-program',
     `efs-nslookup-on-connect', and `efs-nslookup-threshold' if are
     using EFS, or `ange-ftp-nslookup-program' if using Ange-FTP.


   Emacs-W3 has support for using the gateway mechanism for certain
domains, and directly connecting to others.  To use this, change the
value of `url-gateway-local-host-regexp'.  This should be a regular
expression (2) that matches local hosts that do not require the use of
a gateway.  If `nil', then all connections are made through the gateway.

   Emacs-W3 supports several methods of getting around gateways.  The
variable `url-gateway-method' controls which of these methods is used.
This variable can have several values (use these as symbol names, not
strings):
"program"
     Run a program in a subprocess to connect to remote hosts (examples
     are itelnet(3), an expect(4) script, etc.).

"host"
     Log into another local computer that has access to the internet,
     and run a telnet-like program from there.

"tcp"
     Masanobu UMEDA (umerin@mse.kyutech.ac.jp) has written a very nice
     replacement for the standard networking in Emacs.  This does
     basically the same thing that a method of `program' does, but is
     slightly more transparent to the user.

"native"
     This means that Emacs-W3 should use the builtin networking code of
     Emacs.  This should be used only if there is no firewall, or the
     Emacs source has already been hacked to get around the firewall.
Two of these need a bit more explanation than that: When running a
program in a subprocess to emulate a network connection, a few extra
variables need to be set.  The variable `url-gateway-telnet-program'
should point to an executable that accepts a hostname and port # as its
arguments, and passes standard input to the remote host.  This can be
either the full path to the executable or just the basename.  The
variable `url-gateway-telnet-ready-regexp' controls how long Emacs-W3
should wait after spawning the subprocess to start sending to its
standard input.  This gets around a bug where telnet would miss the
beginning of requests becausse it did not buffer its input before
opening a connection.  This should be a regular expression to watch for
that signifies the end of the setup of `url-gateway-telnet-program'.
The default should work fine for telnet.

   When using the `host'-based gatway method, things get a bit more
complicated.  This is basically my attempt to do some of the basic stuff
of expect within elisp.  First off, set the variable `url-gateway-host'
to be the name of the gateway machine.

   The variable `url-gateway-connect-program' controls how the host is
reached.  The easiest way is to have a program that does not require a
username and password to login.  The most common of these is the "rsh"
command.

   If rsh is not available, then things get very ugly.  First, set the
variable `url-gateway-program-interactive' to non-`nil'.  Then set the
variables `url-gateway-host-username' and `url-gateway-host-password'
to be the username and password necessary to log into the gateway
machine.  The regular expressions in the variables
`url-gateway-handholding-login-regexp' and
`url-gateway-handholding-password-regexp' should match the login and
password prompts on the gateway system respectively.  For example:

     (setq url-gateway-connect-program "telnet"
           url-gateway-host-program "telnet"
           url-gateway-program-interactive t
           url-gateway-host-username "wmperry"
           url-gateway-host-password "yeahrightkeepdreaming"
           url-gateway-host "moose.cs.indiana.edu"
           url-gateway-host-program-ready-regexp "Escape character is .*"
           url-gateway-handholding-login-regexp "ogin:"
           url-gateway-handholding-password-regexp "ord:")

   This should take care of logging in to the remote system.  The
variable `url-gateway-host-prompt-pattern' should contain a regular
expression that matches the shell prompt on the remote machine.  This
should appear no where in the login banner/setup, or things could get
very confused.

   The variable `url-gateway-host-program-ready-regexp' should contain
a regular expression that matches the end of the setup of
`url-gateway-host-program' when it tries to make a connection to an
off-firewall machine.  (Basically the same as
`url-gateway-telnet-ready-regexp'.

   Emacs-W3 should now be able to get outside the local network.  If
none of this makes sense, its probably my fault.  Please check with the
network administrators to see if they have a program that does most of
this already, since somebody somewhere at the company has probably been
through something similar to this before, and would be much more
helpful/knowledgeable about the local setup than I would be.  But feel
free to mail me as a last resort.

   ---------- Footnotes ----------

   (1)  TERM is a user-level protocol for emulating IP over a serial
line.  More information is available at
ftp://sunsite.unc.edu/pub/Linux/apps/comm/term

   (2)  Please see the full Emacs distribution for a description of
regular expressions

   (3)  Itelnet is a standard name for a telnet executable that is
capable of escaping the firewall.  Check with system administrators to
see if anything similar is available

   (4)  Expect is a scripting language that allows control of
interactive programs (like telnet) very easily.  It is available from
gatekeeper.dec.com:/pub/GNU/expect-3.24.0.tar.gz


File: w3.info,  Node: Proxy Gateways,  Next: Basic Usage,  Prev: Firewalls,  Up: Starting Up

Proxy Gateways
==============

   In late January 1993, Kevin Altis and Lou Montulli proposed and
implemented a new proxy service.  This service requires the use of
environment variables to specify a gateway server/port # to send
protocol requests to.  Each protocol (HTTP, WAIS, gopher, FTP, etc.)
can have a different gateway server.  The environment variables are
PROTOCOL_proxy, where PROTOCOL is one of the supported network
protocols (gopher, file, HTTP, FTP, etc.)

   For companies with internal intranets, it will usually be helpful to
define a list of hosts that should be contacted directly, not sent
through the proxy.  The NO_PROXY environment variable controls what
hosts are able to be contacted directly.  This should be a comma
separated list of hostnames, domain names, or a mixture of both.
Asterisks can be used as a wildcard.  For example:

     NO_PROXY=*.aventail.com,home.com,*.seanet.com

   tells Emacs-W3 to contact all machines in the aventail.com and
seanet.com domains directly, as well as the machine named home.com.

   For those adventurous souls who enjoy writing regular expressions,
all the proxy settings can be manipulated from Emacs-Lisp.  The variable
`url-proxy-services' controls this.  This is an assoc list, keyed on
the protocol type (http, gopher, etc) in all lowercase.  The `cdr' of
each entry should be the fully-specified URL of the proxy server to
contact, or, in the case of the special "no_proxy" entry, a regular
expression that matches any hostnames that should be contacted directly.

     (setq url-proxy-services '(("http"     . "http://proxy.aventail.com/")
                                ("no_proxy" . "^.*\\(aventail\\|seanet\\)\.com")))


File: w3.info,  Node: Basic Usage,  Prev: Proxy Gateways,  Up: Top

Basic Usage
***********

   Emacs-W3 is similar to the Info package all Emacs users hold near
and dear to their hearts (*Note Info: (info)Top, for a description of
Info).  Basically, `space' and `backspace' control scrolling, and
`return' or `mouse2' follows a hypertext link.  The `f' and `b' keys
maneuver around the various links on the page.

   NOTE: To enter data into a form entry area, select it using `return'
or the middle mouse button, just like a hypertext link.

   On non-graphic terminals (VT100, DOS, etc.), hypertext links are
surrounded by '[[' and ']]' by default.  On a graphics terminal, the
links are in bold print.  *Note Controlling Formatting:: for information
on how to change this, or for help on getting the highlighting to work
on graphics terminals.

   There are approximately 50 keys bound to special Emacs-W3 functions.
The basic rule of thumb regarding keybindings in Emacs-W3 is that a
lowercase key takes an action on the current document, and an uppercase
key takes an action on the document pointed to by the hypertext link
under the cursor.

   There are several areas that the keybindings fall into: movement,
information, action, and miscellaneous.

* Menu:

* Movement::		Moving around in a Emacs-W3 buffer
* Information::		Getting information about the Emacs-W3 document being
			viewed, and/or links within that document.
* Action::		Taking actions in a Emacs-W3 buffer (following links,
			printing, etc.)
* Miscellaneous::	Miscellaneous keybindings


File: w3.info,  Node: Movement,  Next: Information,  Prev: Basic Usage,  Up: Basic Usage

Movement
========

   :: WORK :: Document the 'h' and 'a' keymaps
`SPC'
     Scroll downward in the buffer.  With prefix arg, scroll down that
     many screenfuls.

`DEL'
     Scroll upward in the buffer.  With prefix arg, scroll up that many
     screenfuls.

`<'
     Goes to the start of document

`>'
     Goes to the end of document

`Shift-TAB, b'
     Attempts to move backward one link area in the current document.
     Signals an error if no previous links are found.

`hl'
     Displays a complete listing of the items in the hotlist.

`hu'
     Go to a link in the hotlist.

`m'
     Choose a link from the current buffer and follow it.  A
     completing-read is done on all the links, so `space' and `TAB' can
     be used for completion.

`TAB, f, n'
     Attempts to move forward one link area in the current document.
     Signals an error if no more links are found.


File: w3.info,  Node: Information,  Next: Action,  Prev: Movement,  Up: Basic Usage

Information
===========

   These functions relate information about one or more links on the
current document.
`v'
     This shows the URL of the current document in the minibuffer.

`V'
     This shows the URL of the hypertext link under point in the
     minibuffer.  If there is not a hypertext link under point, then it
     shows the type of form entry area under point.  If there is no
     form entry area under point, then it shows the inlined image's URL
     that is under point, if any.

`i'
     Shows miscellaneous information about the currently displayed
     document.  This includes the URL, the last modified date, MIME
     headers, the HTTP response code, and any relationships to other
     documents.  Any security information is also displayed.

`I'
     Shows information about the URL at point.

`s'
     This shows the HTML source of the current document in a separate
     buffer.  The buffer's name is based on the document's URL.

`S'
     Shows the HTML source of the hypertext link under point in a
     separate buffer.  The buffer's name is based on the document's URL.

`k'
     This stores the current document's URL in the kill ring, and also
     in the current window-system's clipboard, if possible.

`K'
     Stores the URL of the document under point in the kill ring, and
     also in the current window-system's clipboard, if possible.


File: w3.info,  Node: Action,  Next: Miscellaneous,  Prev: Information,  Up: Basic Usage

Action
======

   First, here are the keys and functions that bring up a new hypertext
page, usually creating a new buffer.
`return'
     Pressing return when over a hyperlink attempts to follow the link
     under the cursor.  With a prefix argument (`C-u'), this forces the
     file to be saved to disk instead of being passed off to other
     viewers or being parsed as HTML.

     Pressing return when over a form input field will prompt in the
     minibuffer for the data to insert into the input field.  Type
     checking is done, and the data is only entered into the form when
     data of the correct type is entered (ie: cannot enter 44 for
     'date' field, etc).

`Middle Mouse Button'
     Attempt to follow a hypertext link under the mouse cursor.
     Clicking on a form input field will prompt in the minibuffer for
     the data to insert into the input field.  Type checking is done,
     and the data is only entered into the form when data of the
     correct type is entered (ie: cannot enter 44 for 'date' field,
     etc).

`Control Middle Mouse Button, Meta return'
     Tries to retrieve the inlined image that is under point.  It
     ignores any form entry areas or hyperlinks, and blindly follows
     any inlined image.  Useful for seeing images that are meant to be
     used as hyperlinks when not on a terminal capable of displaying
     graphics.

`p'
     Prints out the current buffer in a variety of formats, including
     PostScript, HTML source, or formatted text.

`P'
     Prints out the URL under point in a variety of formats, including
     PostScript, HTML source, or formatted text.

`m'
     Selects a destination from a list of all the hyperlinks in the
     current buffer.  Use `space' and `tab' to complete on the links.

`r, g'
     Reloads the current document.  The position within the buffer
     remains the same (unless the document has changed since it was
     last retrieved, in which case it should be relatively close).
     This causes an unconditional reload from the remote server - the
     locally cached copy is not consulted.

`C-o'
     Prompts for a URL in the minibuffer, and attempts to fetch it.  If
     there are any errors, or Emacs-W3 cannot understand the type of
     link requested, the errors are displayed in a hypertext buffer.

`o'
     Opens a local file, interactively.  This prompts for a local file
     name to open.  The file must exist, and may be a directory.  If
     the requested file is a directory and `url-use-hypertext-dired' is
     `nil', then a dired-mode buffer is displayed.  If non`nil', then
     Emacs-W3 automatically generates a hypertext listing of the
     directory.  The hypertext mode is the default, so that all the
     keys and functions remain the same.

`M-s'
     Perform a search, if this is a searchable index.  Searching
     requires a server - Emacs-W3 can not do local file searching, as
     there are too many possible types of searches people could want to
     do.  Generally, the only URL types that allow searching are HTTP,
     gopher, and X-EXEC.

`Hv'
     If `url-keep-history' is non-`nil', then Emacs-W3 keeps track of
     all the URLs visited in an Emacs session.  This function takes all
     the links that are in that internal list, and formats them as
     hypertext links in a list.

   And here are the commands to move around between Emacs-W3 buffers:

`l'
     Goes to the last WWW buffer seen.

`q'
     Quits WWW mode.  This kills the current buffer and goes to the most
     recently visited buffer.

`u'
     This is similar to w3-quit, but the buffer is not killed, it is
     moved to the bottom of the buffer list (so it is the least likely
     to show up as the default with switch-to-buffer).  This is
     different from `w3-goto-last-buffer' in that it does not return to
     the last WWW page visited - it is the same as using
     `switch-to-buffer' - the buffer left in the window is fairly
     random.

`HB, B'
     Takes one step back along the path in the current history.  Has no
     effect if at the beginning of the session history.

`HF, F'
     Takes one step forward along the path in the current history.  Has
     no effect if at the end of the session history.


File: w3.info,  Node: Miscellaneous,  Prev: Action,  Up: Basic Usage

Miscellaneous
=============

`M-m'
     Mails the current document to someone.  Choose from several
     different formats to mail: formatted text, HTML source,
     PostScript, or LaTeX source.  When the HTML source is mailed, then
     an appropriate <base> tag is inserted at the beginning of the
     document so that relative links may be followed correctly by
     whoever receives the mail.

`M-M'
     Mails the document pointed to by the hypertext link under point to
     someone.  Choose from several different formats to mail: formatted
     text, HTML source, PostScript, or LaTeX source.  When the HTML
     source is mailed, then an appropriate <base> tag is inserted at
     the beginning of the document so that relative links may be
     followed correctly by whoever receives the mail.

`p'
     Prints the current document.  Choose from several different
     formats to print: formatted text, HTML source, PostScript (with
     ps-print), or by using LaTeX and dvips).

     When the formatted text is printed, the normal `lpr-buffer'
     function is called, and the variables `lpr-command' and
     `lpr-switches' control how the document is printed.

     When the HTML source is printed, then an appropriate <base> tag is
     inserted at the beginning of the document.  When postscript is
     printed, then the HTML source of the document is converted into
     LaTeX source.  If the variable `w3-use-html2latex' is non-`nil',
     then the program specified by `w3-html2latex-prog' is run in a
     subprocess with the arguments in `w3-html2latex-args'.  The
     `w3-html2latex-prog' must accept HTML source on its standard input
     and send the LaTeX output to standard output.  If
     `w3-use-html2latex' is `nil', then an Emacs Lisp function uses
     regular expressions to replace the HTML code with LaTeX markup.
     The variable `w3-latex-docstyle' controls how the document is laid
     out in this case, and postscript figures are printed as well.

`P'
     Prints the document pointed to by the hypertext link under point.
     Please see the previous item for more information.

`M-x w3-insert-formatted-url'
     Insert a fully formatted HTML link into another buffer.  This gets
     the name and URL of either the current buffer, or, with a prefix
     arg, of the link under point, and construct the appropriate
     <a...>...</a> markup and insert it into the desired buffer.

`M-tab'
     Inserts the URL of the current document into another buffer.
     Buffer is prompted for in the minibuffer.  With prefix arg, uses
     the URL of the link under point.

`U'
     Selects one of the <LINK> tags from this document and fetch it.
     Links are attributes of a specific document, and can tell such
     things as who made the document, where a table of contents is
     located, etc.

     Link tags specify relationships between documents in two ways.
     Normal (forward) relationships (where the link has a REL="xxx"
     attribute), and reverse relationships (where the link has a
     REV="xxx" attribute).  This first asks what type of link to follow
     (Normal or Reverse), then does a `completing-read' on only the
     links that have that type of relationship.


File: w3.info,  Node: Compatibility,  Up: Top

Compatibility with other Browsers
*********************************

   Due to the popularity of several other browsers, Emacs-W3 offers an
easy transition to its much better way of life.  This ranges from being
able to share the same preferences files and disk cache to actually
emulating the keybindings used in other browsers.

* Menu:

* Emulation::			Emacs-W3 can emulate the keybindings and
				other behaviours of other browsers.
* Hotlist Handling::            A hotlist is an easy way to keep track of
				interesting Web pages without having to
				remember the exact path to get there.
* Session History::             Keeping a history of documents visited
				in one Emacs sessions allows the use of
				'forward' and 'back' buttons easily.
* Global History::		Keeping a history of all the places ever
				visited on the web.
* Annotations::                 Annotations allow comments on other
				people's Web documents without needing
				to change the document.


File: w3.info,  Node: Emulation,  Next: Hotlist Handling,  Prev: Compatibility,  Up: Compatibility

Emulation
=========

   :: WORK :: Document lynx emulation :: WORK :: Document netscape
emulation


File: w3.info,  Node: Hotlist Handling,  Next: Session History,  Prev: Emulation,  Up: Compatibility

Hotlist Handling
================

   :: WORK :: Document that it supports different types of hotlist
formats :: WORK :: Make sure everything hotlist related can be accessed
via 'h' In order to avoid having to traverse many documents to get to
the same document over and over, Emacs-W3 supports a "hotlist" like
Mosaic.  This is a file that contains URLs and aliases.  Hotlists allow
quick access to any document in the Web, providing it has been visited
and added to the hotlist.  The variable `w3-hotlist-file' determines
where this information is saved.  The structure of the file is
compatible with Mosaic's hotlist file, so this defaults to
`~/.mosaic-hotlist-default'.

   Hotlist commands are:
`a'
     Adds the current document to the hotlist, with the buffer name as
     its identifier.  Modifies the file specified by `w3-hotlist-file'.
     If this is given a PREFIX-ARGUMENT (via `C-u'), the title is
     prompted for instead of automatically defaulting to the document
     title.

`hR'
     This rereads the default hostlist file specified by
     `w3-hotlist-file'.

`d'
     Prompts for the alias of the entry to kill.  Pressing the spacebar
     or tab will list out partial completions.  The internal
     representation of the hotlist and the file specified by
     `w3-hotlist-file' are updated.

`hr'
     Some hotlist item names can be very unwieldy (`Mosaic for X level
     2 fill out form support'), or uninformative (`Index of /').
     Prompts for the item to rename in the minibuffer--use the spacebar
     or tab key for completion.  After having chosen an item to rename,
     prompts for a new title until a unique title is entered.  Modifies
     the file specified by `w3-hotlist-file'.

`hu'
     Prompts for the alias to jump to.  Pressing the spacebar or tab
     key shows partial completions.

`hv'
     Converts the hotlist into HTML and displays it.

`ha'
     Shows the hotlist entries matching a regular expression.

`hA'
     Appends another hotlist file to the one currently in memory.


File: w3.info,  Node: Session History,  Next: Global History,  Prev: Hotlist Handling,  Up: Compatibility

History
=======

   Almost all web browsers keep track of the URLs followed from a page,
so that it can provide forward and back buttons to keep a path of URLs
that can be traversed easily.  If the variable `url-keep-history' is
`t', then Emacs-W3 keeps a list of all the URLs visited in a session.
To view a listing of the history for this session of Emacs-W3, use `M-x
w3-show-history' from any buffer, and Emacs-W3 generates an HTML
document showing every URL visited since Emacs started (or cleared the
history list), and then format it.  Any of the links can be chosen and
followed to the original document.  To clear the history list, choose
'Clear History' from the 'Options' menu.

   Another twist on the history list mechanism is the fact that all
Emacs-W3 buffers remember what URL, buffer, and buffer position of the
last document, and also keeps track of the next location jumped to from
that buffer.  This means that the user can go forwards and backwards
very easily along the path taken to reach a particular document.  To go
forward, use the function `w3-forward-in-history', to go backward, use
the function `w3-backward-in-history'.


File: w3.info,  Node: Global History,  Next: Annotations,  Prev: Session History,  Up: Compatibility

Global History
==============

   :: WORK :: Document that the global history can have diff. formats
Most web browsers also support the idea of a "history" of URLs the user
has visited, and it displays them in a different style than normal URLs.

   If the variable `url-keep-history' is `t', then Emacs-W3 keeps a
list of all the URLs visited in a session.  The file is automatically
written to disk when exiting emacs.  The list is added to those already
in the file specified by `url-global-history-file', which defaults to
`~/.mosaic-global-history'.

   If any URL in the list is found in the file, it is not saved, but new
ones are added at the end of the file.

   The function that saves the global history list is smart enough to
notice what style of history list is being used (Netscape, Emacs-W3, or
XMosaic), and writes out the new additions appropriately.

   One of the nice things about keeping a global history files is that
Emacs-W3 can use it as a completion table.  When doing `M-x w3-fetch',
pressing the `tab' or `space' key will show all completions for a
partial URL.  This is very useful, especially for very long URLs that
are not in a hotlist, or for seeing all the pages from a particular web
site before choosing which to retrieve.


File: w3.info,  Node: Annotations,  Next: Group Annotations,  Prev: Global History,  Up: Compatibility

Annotations
===========

   Mosaic can annotate documents.  Annotations are comments about the
current document, and these annotations appear as a link to the comments
at the end of the document.  The original file is not changed.

* Menu:

* Group Annotations::             Annotations accessible by everyone
* Personal Annotations::          Private annotations only accessible
				  to the user who created them


File: w3.info,  Node: Group Annotations,  Next: Personal Annotations,  Prev: Annotations,  Up: Annotations

Group Annotations
-----------------

   NOTE: The group annotation experiment has been terminated.  It will
be replaced with support on the server side for adding <LINK> tags to
documents.


File: w3.info,  Node: Personal Annotations,  Prev: Group Annotations,  Up: Annotations

Personal Annotations
--------------------

   Emacs-W3 looks in the directory specified by
`w3-personal-annotation-directory' (defaults to
`~/.mosaic-personal-annotations').  Any personal annotations for a
document are automatically appended when it is retrieved.

   :: WORK :: Document the new 'a' prefix keymap :: WORK :: Tell where
the annotations are stored

   To add a new personal annotation, type `M-x
w3-add-personal-annotation'.  This creates a new buffer, in the mode
specified by `w3-annotation-mode'.  This defaults to `html-mode'.  If
this variable is `nil', or it points to an undefined function, then
`default-major-mode' is consulted.

   A minor mode redefines `C-c C-c' to complete the annotation and
store it on the local disk.

   To delete a personal annotation, it must be the current page.  Once
reading the annotation, `M-x w3-delete-personal-annotation' will remove
it.  This deletes the file containing the annotation, and any
references to it in the annotation log file.

   Editing personal annotations is not yet supported.


File: w3.info,  Node: Controlling Formatting,  Next: General Formatting,  Prev: Top,  Up: Top

Controlling Formatting
**********************

   How Emacs-W3 formats a document is very customizable.  How a
document is displayed depends on whether the user is on a terminal
capable of graphics and a few variables.

   The following sections describe in more detail how to change the
formatting of a document.

* Menu:

* General Formatting::                 Changing general things about a
                                       document.
* Character based terminals::          Changing how a document is
                                       displayed on a non-graphics
                                       terminal (vt100, etc.) or if
                                       `w3-delimit-emphasis' is `t'.
* Graphics workstations::              Changing how a document is
                                       displayed on a graphics terminal
                                       (Xwindows, Windows, NeXTstep,
                                       OS/2, etc.)
* Inlined images::                     How to specify how Emacs-W3
                                       handles inlined images/mpegs.

