emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[ELPA-diffs] ELPA branch, externals/w3, created. efd1e1253639f07dd04ef8b


From: Stefan Monnier
Subject: [ELPA-diffs] ELPA branch, externals/w3, created. efd1e1253639f07dd04ef8b84c14afc74c419cb5
Date: Sat, 24 Aug 2013 18:19:46 +0000

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "ELPA".

The branch, externals/w3 has been created
        at  efd1e1253639f07dd04ef8b84c14afc74c419cb5 (commit)

- Log -----------------------------------------------------------------
commit efd1e1253639f07dd04ef8b84c14afc74c419cb5
Author: Stefan Monnier <address@hidden>
Date:   Sat Aug 24 14:18:29 2013 -0400

    Massage for ELPA; try to fix compiler warnings.

diff --git a/.gitignore b/.gitignore
index 0941190..159fb02 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,9 +1,4 @@
-Makefile
-w3-cfg.el
-w3-auto.el
-custom-load.el
-auto-autoloads.el
+*-autoloads.el
+*-pkg.el
+*~
 *.elc
-config.log
-config.cache
-config.status
diff --git a/ChangeLog.1 b/ChangeLog.1
index 331ad92..85e6747 100644
--- a/ChangeLog.1
+++ b/ChangeLog.1
@@ -2627,7 +2627,7 @@ Thu Mar 20 23:44:50 1997  Greg Stark  <address@hidden>
   (w3-horizontal-rule-char): New inline function 
   (w3-setup-terminal-chars): Set up all of these and make using graphic
   characters work on XEmacs using text properties (and optionally use text
-  properties on FSF Emacs too). 
+  properties on Emacs too). 
   (w3-table-hack-borders): Remove, obsoleted by w3-setup-terminal-chars
   (w3-table-unhack-borders): don't have to fiddle with
   w3-horizontal-rule-char any more.
diff --git a/ChangeLog.2 b/ChangeLog.2
index 7565780..45a6e54 100644
--- a/ChangeLog.2
+++ b/ChangeLog.2
@@ -459,14 +459,14 @@ the first one it finds.
 
 Wed May  1 21:36:37 1996  William Perry  <address@hidden>
 
-* w3-e19.el: fixed mouse waggling under fsf
+* w3-e19.el: fixed mouse waggling under Emacs
 
 * w3-vars.el: Added default for w3-source-file-hook ... automatically goes into
 html-mode (should probably do font-lock as well to get netscap'y look)
 
 * w3-draw.el: Fixed <body> tags yet again... god am I stupid
 
-* w3-e19.el: Fixed mouse movement under FSF
+* w3-e19.el: Fixed mouse movement under Emacs
 
 
 * w3.el: auto-autoload w3-do-setup
@@ -519,7 +519,7 @@ Sat Apr 27 04:31:57 1996  William Perry  <address@hidden>
 * w3-auto.el: autoload widget-forward/backward
 
 * widget-edit.el: Fix for file widget
-use 'keymap property when in xemacs, 'local-map when in fsf
+use 'keymap property when in xemacs, 'local-map when in Emacs
 
 * w3-menu.el:
 Don't put the toggle toolbar menu item up in Emacs or a XEmacs with no
@@ -781,7 +781,7 @@ Wed Mar  6 01:52:32 1996  William Perry  <address@hidden>
 
 
 * w3-imap.el:
-Fixed problem with button2 usage in w3-imap.el when compiling with FSFMacs
+Fixed problem with button2 usage in w3-imap.el when compiling with Emacs
 
 Fri Feb 23 01:58:21 1996  William Perry  <address@hidden>
 
@@ -827,7 +827,7 @@ Sat Feb 17 23:50:00 1996  William Perry  <address@hidden>
 
 
 * w3-menu.el:
-Now explicitly require easymenu for FSF19 - some older versions don't
+Now explicitly require easymenu for Emacs-19 - some older versions don't
 autoload it.  *sigh*
 
 Fri Feb 16 21:39:19 1996  William Perry  <address@hidden>
@@ -2257,7 +2257,7 @@ Thu Jun 15 23:42:26 1995  William Perry  <address@hidden>
 * w3-xemac.el: Don't call device-type with an argument.
 
 * w3-beta.el, w3-draw.el:
-Fixed a few problems with compatibility with FSF19 in X mode
+Fixed a few problems with compatibility with Emacs-19 in X mode
 
 
 * dist.Makefile: Added urlauth to makefile
@@ -2360,7 +2360,7 @@ Deal gracefully with markers passed into w3-add-zone (for 
WinEmacs)
 
 
 * w3-draw.el:
-Fixed stupid FSF 19 lossage where x-color-defined-p signals an error
+Fixed stupid Emacs 19 lossage where x-color-defined-p signals an error
 in a tty instead of failing gracefully.  Robustness?  Whassat?
 
 
@@ -2983,7 +2983,7 @@ Thu Apr 13 21:12:33 1995  William Perry  <address@hidden>
 
 * w3-style.el: w3-blend-colors now works in XEmacs 19.12
 
-* w3-style.el: Added function w3-blend-colors (FSF Emacs-19 specific)
+* w3-style.el: Added function w3-blend-colors (Emacs-19 specific)
 
 * w3-parse.el:
 Make sure to clear the minibuffer when done parsing - otherwise it
@@ -3341,7 +3341,7 @@ Tue Mar 14 16:04:04 1995  William Perry  <address@hidden>
 Mon Mar 13 05:51:41 1995  William Perry  <address@hidden>
 
 * w3-beta.el, w3-draw.el, w3-e19.el, w3-mac.el, w3-next.el, w3-old.el, 
w3-vars.el, w3-xemac.el:
-Lots and lots of doc fixes to meet FSF/GNU guidelines.
+Lots and lots of doc fixes to meet GNU guidelines.
 
 * w3-parse.el, w3.el, w3-e19.el, w3-draw.el: Few doc string fixes
 
@@ -3667,9 +3667,9 @@ Sun Jan 29 22:15:48 1995  William Perry  <address@hidden>
 Added new variable w3-right-justify-address to control whether
 text within an <address> tag is right justified.  Defaults to t.
 
-* w3-vars.el: Few new variables for fsf19
+* w3-vars.el: Few new variables for Emacs-19
 
-* w3.el: Removed special cases for fsf19 to use the old lmenu package.
+* w3.el: Removed special cases for Emacs-19 to use the old lmenu package.
 
 * w3-e19.el: No longer needs the lmenu package.
 
@@ -4467,7 +4467,7 @@ url-file-attributes, even if we had the image loaded. 
(with
 url-be-anal-about-file-attributes == t, it would do a HEAD, which was
 stupid)
 
-* w3.el: Fixed forms doubling problem in FSF emacs 19 when doing a reset.
+* w3.el: Fixed forms doubling problem in Emacs 19 when doing a reset.
 
 * w3-vars.el, w3.el:
 New variable w3-track-last-buffer.  If non-nil, M-x w3 will take you
@@ -5033,7 +5033,7 @@ completion-ignore-case to t
 
 Thu Jun  9 12:51:03 1994  William Perry  <address@hidden>
 
-* w3-e19.el: Activated the Help menu in FSF v19 again.
+* w3-e19.el: Activated the Help menu in Emacs v19 again.
 
 Wed Jun  8 01:20:36 1994  William Perry  <address@hidden>
 
@@ -5666,7 +5666,7 @@ Sun Apr 10 21:51:40 1994  William Perry  <address@hidden>
 * w3.el: No longer send the SUBMIT button when submitting forms
 
 * w3.el: New code to parse the Mosaic documents.menu file to add user-specified
-menus in lucid/FSF19
+menus in lucid/Emacs19
 
 
 Sat Apr  9 20:49:30 1994  William Perry  <address@hidden>
@@ -7044,7 +7044,7 @@ Fri Nov 26 03:52:19 1993  William M. Perry  
(address@hidden)
   wasn't one by default.
 * w3-emacs19.el: Added a few patches from Jin S Choi (address@hidden).
   Mostly fixed the hotlist menu updating code, as well as a few cosmetic
-  changes to the FSF19 menus.
+  changes to the Emacs-19 menus.
 * w3-epoch.el: Added a few patches from Henry Rowley <address@hidden> to
   fix a few functions that assumed epoch was compiled with
   add-graphic-zone.
@@ -7605,7 +7605,7 @@ Wed Sep  8 11:58:21 1993  William M. Perry  
(address@hidden)
   Will toy with it later.
 
 Tue Sep  7 07:13:36 1993  William M. Perry  (address@hidden)
-* w3-forms.el: added a (delete-overlay zone) if running FSF19 so that not
+* w3-forms.el: added a (delete-overlay zone) if running Emacs-19 so that not
   all edits are sent when you submit a form.
 * w3-forms.el: now, if a checkbox's VALUE/DEFAULT field is empty, it is
   sent as name=PRIMED, ala xmosaic.
diff --git a/ChangeLog.3 b/ChangeLog.3
deleted file mode 100644
index 7565780..0000000
--- a/ChangeLog.3
+++ /dev/null
@@ -1,8487 +0,0 @@
-Thu Jun  6 15:03:15 1996  William Perry  <address@hidden>
-
-
-* w3-auto.el: Added autoload for w3-show-dvi
-
-* w3-latex.el: w3-parse-tree-to-latex now takes optional URL argument.
-<pre> and <xmp> text now work correctly.
-Added a known-bugs section.
-Added a variable for whether to print hyperlinks as footnotes or not.
-
-
-* w3-annotat.el, w3-e19.el, w3-forms.el, w3-hot.el, w3-prefs.el, w3-xemac.el, 
w3.el:
-Replaced w3-insert w/insert - no longer needed
-
-* w3-latex.el: Added footnotes for hypertext links
-
-Wed Jun  5 20:18:36 1996  William Perry  <address@hidden>
-
-* w3-latex.el:
-Changed some things to be more like w3-draw in how it gets formatting
-informatino for each chunk
-
-* w3.el:
-Merged in new latex printing code from Stephen Peters <address@hidden>
-
-* w3-print.el: Stephen Peters <address@hidden>
-
-* w3-auto.el:
-Merged in new latex printing code from Stephen Peters <address@hidden>
-
-* w3-latex.el: Initial revision
-
-* w3-parse.el: patch from jbw for eveil <! comment syntax
-
-Mon Jun  3 20:43:37 1996  William Perry  <address@hidden>
-
-* w3-parse.el, w3-vars.el:
-added flag for whether to honor netscape style <! > comments.
-
-
-* w3-parse.el, w3-vars.el: Added alt text capabilities to w3-graphic-entities
-
-* w3-menu.el: Toggling menubar from Emacs->W3 works again
-
-* w3.el: w3-map-links works again, so does w3-complete-link
-
-* w3-e19.el, w3-xemac.el: removed old def. of w3-map-links
-
-* w3-draw.el: fixed url expansion
-
-* w3-forms.el:
-More fixes for netscape compatibility with single-text entry form
-submissions
-
-* w3-speak.el:
-Added a few patches from Raman (folding-mode stuff) and definition of
-advice for w3-scroll-up
-
-* w3-prefs.el:
-Got rid of some compiler warnings about free variables, and removed
-some bogus variables that I can get elsewhere now
-(w3-preferences-numglyphs)
-
-* w3-prefs.el: Added hooks for setting up the prefs buffer, and ok/cancel/reset
-hooks.  Fixed saving of proxy information
-
-* descrip.mms: Updated VMS MMS file
-
-* dist.Makefile: Added w3-prefs to the distribution
-
-Sun Jun  2 20:09:22 1996  William Perry  <address@hidden>
-
-* w3-draw.el: a few more emacspeak extensions
-
-
-* w3-e19.el: Fixed compile-time errors re: w3-form-element-* functions
-
-* w3-draw.el: fixed bug in w3-valid-voice-p
-
-
-* w3-speak.el: fixed some compiler warnings
-
-
-* dist.Makefile: Added w3-speak.el to the distribution
-
-* w3-speak.el:
-Move some functionality of the w3-fetch defadvice into a w3-mode-hook
-that is automatically added by w3-speak-use-voice-locking
-
-* w3-speak.el: Wow, I think it will work
-
-* w3-draw.el: reimplemented w3-echo-link
-
-* w3.el: fixed problem of not resetting the user's value of url-be-asynchronous
-in the new version of w3-download-url
-
-* w3.el: Made w3-download-url asynchronous by default, and make sure it asks
-for the filename before it starts the download.
-
-Sat Jun  1 20:04:22 1996  William Perry  <address@hidden>
-
-* w3.el: Fixed w3-download-url
-
-* w3-parse.el: Fixed graphic entities to use normal entity expansion instead of
-'STARTTAG - see commentary in the code for why exactly.
-
-* w3.el: Fixed w3-mail-document-author to do the right thing for 'made' links
-again.  Now searches for mail(to|server) links first.  If none found,
-takes the first 'made' link and fetches that.  If one found, fetch it.
-If more than one mail(to|server) link is found, present the user with
-a list and let them choose.
-
-* w3-speak.el: Initial revision
-
-Fri May 31 21:34:19 1996  William Perry  <address@hidden>
-
-* w3-draw.el, w3-style.el: Basic support for emacspeak out of the box
-
-* w3.el: Fixed typo in w3-popup-info
-
-* w3-parse.el: Fixed bug in graphic entity creation
-
-* w3.el: Added new function w3-describe-entities that lists all the entities
-currently defined.
-
-* w3-parse.el: Added in new definitions for graphic entities - they live again!
-
-* w3-vars.el: Added in new definitions for graphic entities
-
-
-Thu May 30 17:32:36 1996  William Perry  <address@hidden>
-
-
-* w3-prefs.el:
-Changed to only using one buffer instead of two stacked buffers - was
-too big a pain in the ass to navigate w/o the mouse.
-
-* w3-forms.el: fixed form submission changes
-
-* w3-draw.el:
-Supports target'ed windows to some extent (external, _blank, _top)
-
-* w3.el: delete-other-windows in w3-fetch-other-frame
-
-* w3-draw.el:
-the hyperlnk widgets now keep _all_ attributes that are specified on a
-link in them as widget properties.  This will eventually allow us to
-do targetted windows, etc.
-
-
-* w3-prefs.el: protect against errors in widget-forward
-
-* w3-prefs.el:
-Ok, cancel, and save buttons work.  Proxy configuration screen is
-complete.  Old window configuration restored when exiting.  Now
-selects the prefs window after choosing something from the toolbar
-
-* w3-sysdp.el: Added symbol-value-in-buffer
-
-
-* w3-draw.el, w3-forms.el: Single-entry form auto-submission now works again
-
-* w3-sysdp.el: Added insert-file-contents-literally function
-
-Wed May 29 21:52:40 1996  William Perry  <address@hidden>
-
-* w3-prefs.el: proxy panel sort of works
-
-* w3-print.el: Few patches to the latex printing by Stephen Peters
-<address@hidden>
-
-* w3-mouse.el: w3-follow-inlined-image works again
-
-* w3-draw.el:
-Fixed problem with paragraph filling screwups after <xmp></xmp> sections
-
-* w3-vars.el:
-new keybinding for return so that return doesn't self-insert when not
-on a hyperlink
-
-
-* font.el: don't error out on bad rgb color values
-
-* font.el: Don't error out if you cannot find the rgb.txt file
-
-* w3-parse.el:
-Supports stupid address@hidden netscape-style <! > `comments'.  What complete
-and utter horseshit.
-
-* w3-draw.el: fixed read-only errors once and for all. :)
-
-* w3-e19.el: removed old bogus definition of w3-follow-inlined-image-mouse
-
-
-* w3-prefs.el: progress
-
-* w3.el: Now correctly looks for 'stylesheet' in w3-configuration-directory.
-Avoid infinite recursion if url-be-asynch == t when
-w3-find-default-stylesheets is called
-
-* w3.el: fix for http 0.9 servers and asynchronous transfers
-
-* w3-widget.el:
-Actually added w3-image-widget-callback so 'href images work right
-
-Tue May 28 22:35:46 1996  William Perry  <address@hidden>
-
-* w3-prefs.el: Initial revision
-
-
-* w3-menu.el: Put the correct Emacs/XEmacs in the menubar toggle
-
-* w3-draw.el:
-fixed problems with badly specifid colors in netscape-crap <body> attributes
-
-* w3-forms.el: <input type=image> works minimally
-
-* w3-forms.el:
-Fixed a problem with option lists in forms.  The forms validator is cool
-
-* w3.el: previewing buffers now works much _MUCH_ better
-
-* w3.el: Added stub for w3-find-file, a more intuitive name for w3-open-local
-
-* w3-draw.el: Link-echoing now works
-
-* widget.el, widget-edit.el:
-Changed widget-forward to honor a new :help-echo property
-
-
-* widget-edit.el:
-Fix for widget-forward when widgets are _RIGHT_ on top of each other
-
-* w3.el: Fixed stupid problem on my part
-
-* w3-draw.el:
-Fix problem with <pre> segments from Mac-based web servers (^M only, no ^J)
-
-* w3.el: Don't do set-auto-mode under mule, as it wigs out with null filenames
-
-* w3.el: Fixes for www: hrefs
-
-* w3.el: Fix for file information & last-modified
-
-Mon May 27 23:08:26 1996  William Perry  <address@hidden>
-
-* w3-draw.el: problem in 19.30
-
-* w3-forms.el:
-Fixed problem with 'submit' button on forms _always_ being sent to the
-server - overanxious with making sure everything had a 'name' field at
-widget creation time.  Gack.
-
-* w3-xemac.el:
-Beginnings of a mode-motion-handler to do spiffy handling of client
-side imagemaps, etc.
-
-
-Sun May 26 01:17:31 1996  William Perry  <address@hidden>
-
-* images.el: removed duplicate converter
-
-Fri May 24 18:19:16 1996  William Perry  <address@hidden>
-
-* w3-draw.el: file: urls for images work now
-
-* w3.el: Fixed missing paren in configuration-file warning code
-
-* w3.el: New version of w3-version from "Robert J. Chassell"
-<address@hidden> that will let you do C-u M-x w3-version to insert
-the version information into the buffer at point.
-
-* w3.el, w3-hot.el, w3-forms.el, w3-emulate.el, w3-annotat.el:
-No longer use mm-insert-file-contents lossage
-
-* images.el: Added p[np]m<->ps converters
-
-
-* w3-widget.el: No more newlines after images w/alt text & no hyperlink
-
-* w3.el: Moved where w3-default-configuration gets loaded so that you can set
-some variables in it and have them honored by the rest of w3-do-setup
-
-Thu May 23 16:08:23 1996  William Perry  <address@hidden>
-
-
-* w3-draw.el:
-Now only grabs images with the same URL/SRC once per page, instead of
-starting up multiple transfers for the same one.  Yeah.
-
-* w3-menu.el: context-sensitive menus now work again on images
-
-* w3-sysdp.el: synching up with XEmacs 19.14's version
-
-* w3-sysdp.el: Added lots more device functions
-
-Wed May 22 17:08:21 1996  William Perry  <address@hidden>
-
-
-* w3-widget.el: Now checks for invalid glyphs before removing the textual
-representation from the buffer.
-
-* w3.el: Removed w3-beta from the distribution - functionality moved elsewhere
-
-* w3-widget.el:
-Better handling of images that are hyperlinks that have no 'alt' text.
-
-* w3-draw.el:
-Some stuff from the old w3-beta, image fixes, initial color of html page 
should be better.
-
-
-* dist.Makefile:
-Removed w3-beta from the distribution - functionality moved elsewhere
-
-* w3-emulate.el: Moved w3-read-netscape-config into w3-emulate
-
-* w3-widget.el: Few screwups w/markers fixed
-
-Tue May 21 05:31:56 1996  William Perry  <address@hidden>
-
-* w3-draw.el, w3-forms.el, w3.el: Some XEmacs 20.0 MULE changes
-
-* w3-xem20.el: Initial revision
-
-
-Mon May 20 16:17:37 1996  William Perry  <address@hidden>
-
-* w3-draw.el: Asynch image loading works!
-
-* w3-widget.el: Put a help-echo property on the image extent when necessary
-
-* w3-imap.el: Removed lots of stuff into the new image widget
-
-* w3-widget.el:
-Make sure you always use a marker for the 'where' of an image widget
-
-* w3.el: w3-my-safe-copy-face is now a little more paranoid so that it will not
-bomb on TTYs
-
-Sat May 18 22:44:53 1996  William Perry  <address@hidden>
-
-* widget-edit.el: some text property munging for XEmacs
-
-* w3-widget.el: Yet more bug fixes for ye olde image widget
-
-* w3-widget.el:
-reorded some checks in the image widget callback so that client side
-imagemaps got done correctly.
-
-* w3-draw.el:
-Fixed bug in the use of the new image widget when it was _not_ used
-like <a href=foo>test<img src=blah>test</a>
-
-* w3-forms.el: Support <input type=button> ala netscape
-
-* w3-forms.el: Give default labels to submit and reset buttons
-
-
-Fri May 17 19:52:49 1996  William Perry  <address@hidden>
-
-* w3-draw.el: Now uses the new image widget
-
-* w3-widget.el: Various fixes
-
-* dist.Makefile: Added w3-widget to the distribution
-
-* w3-forms.el:
-Fixed radio button formatting problems (similar to choice options)
-
-* w3-menu.el:
-Don't put the hide location and hide statusbar menu entries in under
-Emacs 19 just yet.
-
-* w3-imap.el: Few fixes for Emacs 19 in tty mode
-
-* w3-forms.el:
-Option lists now no longer insert a newline unconditionally.  Ack.
-
-* w3-draw.el: inhibit-read-only for some Emacs 19 lossage
-
-Thu May 16 16:15:01 1996  William Perry  <address@hidden>
-
-* w3-menu.el: Better fix for XEmacs w/no menus
-
-* w3-mouse.el:
-Do not use button keysyms if no X support is compiled in (button1, etc)
-
-* w3-xemac.el:
-Don't make toolbar buttons if not (featurep 'toolbar).  Don't add our
-help stuff to the help menu unless (featurep 'menubar)
-
-* w3-menu.el:
-Don't install menus under XEmacs unless (featurep 'menubar), otherwise it will 
bomb on a TTY-only XEmacs.
-
-Tue May 14 16:32:16 1996  William Perry  <address@hidden>
-
-* w3-widget.el: Initial revision
-
-* font.el: Strikethru stuff works again.
-
-* default.css: added some netscapisms in the default stylesheets
-
-* w3-style.el: Added a require 'cl for 'case' handling
-
-* w3-parse.el: Added 'strike' tag to %font in the DTD ala HTML 3.2
-
-Mon May 13 20:56:52 1996  William Perry  <address@hidden>
-
-* dist.Makefile: Removed w3.ad from the distribution, as it is no longer used.
-
-Fri May 10 16:28:13 1996  William Perry  <address@hidden>
-
-
-* w3-imap.el: Now displays client-side imagemaps pretty sweetly under Emacs 19
-(drop-down list of destinations)... Whoo hoo!
-
-
-* default.css: few changes to default stylesheet - nothing major
-
-
-* w3-draw.el: fixed problem in w3-decode-area-coords
-
-Thu May  9 13:46:42 1996  William Perry  <address@hidden>
-
-
-Wed May  8 17:52:10 1996  William Perry  <address@hidden>
-
-* w3.el: Avoid creating bad html in w3-document-information
-
-
-Tue May  7 16:06:20 1996  William Perry  <address@hidden>
-
-
-* w3-vars.el: New keybinding C-A-t for listing open network transfers
-
-
-* w3-draw.el, w3-forms.el, w3-parse.el: Support <keygen> tags in the parser
-
-Mon May  6 18:03:06 1996  William Perry  <address@hidden>
-
-* images.el: fixed image converter for tiff->pnm and pnm->tiff.  Also added
-converter for JBIG (?!) image type
-
-* w3-forms.el:
-Fall back to using old-style looking stuff for text entry areas - some
-HTML was truly confusing where the widget ended and began.  Gack.
-
-Thu May  2 16:24:12 1996  William Perry  <address@hidden>
-
-
-* dist.Makefile: now installs default.css
-
-* w3-imap.el:
-image order fixed on pages with consecutive images with no text in between.
-
-* w3.el: Now looks in the data-directory and data-directory/w3/ subdir for
-stylesheet files.  Now looks for several stylesheet files, not just
-the first one it finds.
-
-Wed May  1 21:36:37 1996  William Perry  <address@hidden>
-
-* w3-e19.el: fixed mouse waggling under fsf
-
-* w3-vars.el: Added default for w3-source-file-hook ... automatically goes into
-html-mode (should probably do font-lock as well to get netscap'y look)
-
-* w3-draw.el: Fixed <body> tags yet again... god am I stupid
-
-* w3-e19.el: Fixed mouse movement under FSF
-
-
-* w3.el: auto-autoload w3-do-setup
-
-* w3-vars.el: changed w3-documentation-root
-
-* w3-menu.el, w3-xemac.el, w3-toolbar.el, w3-mouse.el:
-
-* w3-menu.el:
-Now use w3-default-configuration-file for saving options from the menubar
-
-* w3-auto.el: removed a few autoloads due to the forms revamping
-
-* docomp.el: few more stub variables
-
-* w3-vars.el: More forms fixes
-
-* w3.el: Some jka-compr fixes
-
-* w3-style.el: removed annoying 'applying style hints' messages
-
-* w3-draw.el: Fixed the handling of default attributes on <body> tag for text
-coloring, etc.  Wasn't using the new syntax the stylesheet parser was
-expecting.
-
-* w3-hot.el, w3-menu.el: In XEmacs, changed the hotlist menu constructor to use
-w3-html-bookmarks instead of adding a separate menu item for it.
-Consitent with how it has to be done under Emacs19
-
-
-Tue Apr 30 20:45:20 1996  William Perry  <address@hidden>
-
-* w3-mouse.el: In netscape emulation mode, emulate the mouse bindings as well.
-
-* font.el:
-Now takes care of setting a display-table on the face for smallcaps and bigcaps
-
-* w3-forms.el: more fixes
-
-* w3-sysdp.el: Added definition of alist-to-plist
-
-* w3-draw.el: fixed some <select> issues
-
-* w3-forms.el: New round of cleanup of the forms code continues
-
-Sat Apr 27 04:31:57 1996  William Perry  <address@hidden>
-
-* widget-edit.el: fixed typo in the 'sexp' widget
-
-* w3-auto.el: autoload widget-forward/backward
-
-* widget-edit.el: Fix for file widget
-use 'keymap property when in xemacs, 'local-map when in fsf
-
-* w3-menu.el:
-Don't put the toggle toolbar menu item up in Emacs or a XEmacs with no
-toolbar support
-
-* w3-draw.el: More efficient handling of end of hyperlink
-
-* w3-beta.el: w3 buffers are no longer read only
-
-* w3-forms.el, w3.el, w3-mouse.el:
-Make middle-mouse-button run w3-widget-button-click, that will not
-call widget-button-click if there is no widget under the event - this
-avoids being able to paste into the buffer, etc.  Gack!
-
-
-* w3-vars.el:
-no longer show the read-only/modified status in the modeline for w3 buffers
-
-* w3-vars.el: Yet more key shuffling for the widget stuff
-
-Fri Apr 26 23:09:10 1996  William Perry  <address@hidden>
-
-* widget-edit.el, widget.el: Initial revision
-
-* w3-forms.el:
-Only set the face of a form element if one has been explicitly defined
-
-* w3-imap.el:
-Removing alt text from the buffer when loading images works again... yahhh
-
-* w3.el, w3-forms.el, w3-auto.el, w3-e19.el, w3-menu.el:
-Fixed the 'links' menu for both XEmacs and Emacs
-
-* w3-keyword.el:
-elc files should now be portable between XEmacs and Emacs again... as
-long as you don't use the byte-compile-dynamic stuff.
-
-* w3-draw.el:
-Fixed problem of w3-handle-hyperlink-end being a little too aggressive
-about putting the highlight and link properties on empty <a> tags.
-
-Thu Apr 25 19:08:45 1996  William Perry  <address@hidden>
-
-
-* w3-xemac.el, w3-vars.el, w3-style.el, w3-menu.el, w3-imap.el, w3-forms.el, 
w3-e19.el, w3-draw.el, w3.el:
-Lots and lots of changes...
-- config files are now all in ~/.w3/, ala netscape
-- everything is now done via the excellent 'widget' package and text
-  properties... most of the code in w3-e19 and w3-xemac is now gone
-- 90% of the forms code is gone, subsumed by widget
-- some stylesheet changes for the latest CSS level 1 draft
-- general cleanup of lots of other code
-- many changes all over the place to deal with the new widget package
-  and text-property representation
-
-* w3-auto.el: more autoloads
-
-
-* w3-hot.el: New way of extracting the default title of a link under point
-
-* w3-beta.el: No longer call w3-mule-attribute-zones
-
-
-* w3-emulate.el: No more special casing of keysyms based on emacs version...
-
-* w3-toolbar.el: Changed the default toolbar type to 'both
-
-
-* dist.Makefile: added w3-mouse.el to the distribution
-
-* w3-mouse.el: Initial revision
-
-* w3-menu.el:
-Moved new, unified version of context sensitive menu code into w3-menu
-
-
-* w3-mule.el: Removed lots of old crap
-
-
-* w3-keyword.el: Initial revision
-
-* font.el:
-Now tags colors that are actually vectors as [rgb #r #g #b] instead of
-just [#r #g #b]
-
-Mon Apr 22 16:48:31 1996  William Perry  <address@hidden>
-
-* docomp.el: Added bogus def of has-modeline-p to shut up emacs-19
-
-* w3-auto.el: renamed w3-annotate.el to w3-annotat.el
-
-
-Fri Apr 19 20:40:46 1996  William Perry  <address@hidden>
-
-* w3-auto.el: Added autoloads for widget package
-
-Thu Apr 18 12:57:47 1996  William Perry  <address@hidden>
-
-
-Wed Apr 17 13:35:41 1996  William Perry  <address@hidden>
-
-* w3-e19.el:
-Don't send the truncated URL that is used for displaying menus to the
-actual function.  D'oh!
-
-Tue Apr 16 17:37:59 1996  William Perry  <address@hidden>
-
-* w3-merge.el: Initial revision
-
-Mon Apr 15 21:24:04 1996  William Perry  <address@hidden>
-
-
-* w3-draw.el: Use temporary faces in XEmacs, so people don't puke when they do
-edit-faces and see all the crappy face names.
-
-Sat Apr 13 01:07:49 1996  William Perry  <address@hidden>
-
-* w3.el: New function w3-popup-image-info that displays info about an image ala
-netscape 2.x
-
-* w3-menu.el:
-slight re-ordering of the options menu.  Can now turn off the modeline
-and minibuffer
-
-* w3-e19.el, w3-xemac.el:
-When the menubar is turned off, add a turn menubar back on option to
-all context sensitive menus
-
-* w3-vars.el: Shortened the context-sensitive menu over hyperlinks
-
-Fri Apr 12 03:51:20 1996  William Perry  <address@hidden>
-
-
-Thu Apr 11 17:43:48 1996  William Perry  <address@hidden>
-
-* w3-draw.el: Now handles set-cookie commands from <meta> tags
-
-Wed Apr 10 14:30:19 1996  William Perry  <address@hidden>
-
-
-* w3-vars.el, w3-draw.el, w3.el:
-Set the variable list-buffers-directory appropriately to show the URL
-for all the various W3 buffers via list-buffers.
-
-Tue Apr  9 20:52:52 1996  William Perry  <address@hidden>
-
-* w3-e19.el:
-url-truncate-url-for-viewing can now take an optional width parameter.
-If an unknown URL type is found, put quotes around it in the error
-message so that its easier to know what exactly wasn't recognized.
-
-
-* w3-parse.el: Various patches from jbw.
-1. Parser-side fix for <XMP> duplication.
-2. Percentages would get way out of wack on large files
-
-Mon Apr  8 22:40:47 1996  William Perry  <address@hidden>
-
-* w3-draw.el: fixed problem in w3-decode-area-coords that would mess up on some
-client side imagemaps (namely www.excite.com)
-
-Wed Apr  3 15:45:43 1996  William Perry  <address@hidden>
-
-* images.el: more tcsh crap... please make it stop.
-
-* w3.el: Added new w3-fetch-other-window command
-
-Tue Apr  2 17:16:23 1996  William Perry  <address@hidden>
-
-* w3-sysdp.el: Some extent functions for emacs19
-
-* w3-imap.el: Client-side image mapping polygons work now.
-
-* images.el: Hopefully final fix for csh/tcsh
-
-Mon Apr  1 18:58:49 1996  William Perry  <address@hidden>
-
-
-* images.el: fixes for csh/tcsh shells, yet _AGAIN_!
-
-
-* w3-menu.el: Can now toggle the menubars from the options menu
-
-Thu Mar 28 20:04:03 1996  William Perry  <address@hidden>
-
-
-* docomp.el: fix for emacs 19.28 griping because of those address@hidden@ 
defsubsts.
-If you ar eusing 19.28, please please upgrade.
-
-* w3-menu.el: New 'style' menu item to control the IE 3.0 compatiblitiy parsing
-
-
-* w3-style.el:
-now :normal: or :default: in a stylesheet end a device-specific section
-
-* w3-style.el:
-CSS now handles C++ style // comments like the unreleased IE 3.0 with
-stylesheets.  Oh, the joy of compatibility!
-
-Wed Mar 27 19:44:12 1996  William Perry  <address@hidden>
-
-* images.el:
-Possible fix for image loading problems seen when people have csh or
-tcsh as their default shell.  Good lord, are these people insane?  See
-http://www.cs.ruu.nl/wais/html/na-faq/unix-faq-shell-csh-whynot.html
-for details.
-
-* w3-forms.el:
-fixed problem with some forms that don't deal well with following the
address@hidden@ing spec for application/x-www-form-urlencoded.  Now does not
-escape the _ character. address@hidden@address@hidden@#%!~@ - wow, its lucky we
-passed the CDA or someone might have gotten offended here.
-
-* w3-draw.el:
-now handles xmp slightly differently - waiting for patches from jbw
-for the parser end of the fix.
-
-* w3-style.el:
-You can now have emacsen specific sections of a CSS stylesheet by
-using the device-specific stuff.  Use :emacs: or :xemacs: as the
-device type and away you go.
-
-Tue Mar 26 21:14:19 1996  William Perry  <address@hidden>
-
-
-* w3-e19.el: Fixed the 'submit form to nil' bug in mouse movement
-
-
-* w3.el, w3-hot.el: HTML bookmark parsing now actually works.
-
-Mon Mar 25 14:53:56 1996  William Perry  <address@hidden>
-
-* w3-sysdp.el, w3-about.el:
-Changed some pointers to ben wing and pearl software.
-
-Wed Mar 20 15:50:50 1996  William Perry  <address@hidden>
-
-
-* w3.el:
-Prefix arg to w3-quit now kills all w3 buffers, not just the current one.
-
-* w3-draw.el: fixed a problem with ^M in <XMP> and <PRE> sections
-
-* w3-imap.el: protect against passing invalid data to make-glyph
-
-Sun Mar 17 23:20:14 1996  William Perry  <address@hidden>
-
-
-Tue Mar 12 18:23:12 1996  William Perry  <address@hidden>
-
-* w3-draw.el: Stubs for math mode
-
-Sat Mar  9 17:47:21 1996  William Perry  <address@hidden>
-
-* w3-toolbar.el:
-Should now work correctly with no toolbar support compiled into XEmacs.
-
-Wed Mar  6 01:52:32 1996  William Perry  <address@hidden>
-
-
-* w3-imap.el:
-Fixed problem with button2 usage in w3-imap.el when compiling with FSFMacs
-
-Fri Feb 23 01:58:21 1996  William Perry  <address@hidden>
-
-
-Wed Feb 21 17:06:00 1996  William Perry  <address@hidden>
-
-* w3-draw.el:
-Now outputs a warning when it runs into a table, just so people know
-its not my fault if it looks like crap. :)
-
-* w3.el: Now uses the real add-minor-mode
-
-* w3-sysdp.el: Added stub for add-minor-mode
-
-* w3.el: Now set buffer-file-truename and buffer-file-name to nil when sourcing
-a document.
-
-* w3-draw.el, w3-sysdp.el:
-Few fixes for #%!@ damn emacsen that don't sanely deal with make-face et. al
-on a TTY interface.
-
-
-Tue Feb 20 14:12:27 1996  William Perry  <address@hidden>
-
-
-Mon Feb 19 15:13:55 1996  William Perry  <address@hidden>
-
-* w3-e19.el:
-Changed binding of mouse-2 to 'ignore instead of 'undefined - more polite.
-
-Sun Feb 18 19:11:45 1996  William Perry  <address@hidden>
-
-* RelNotes2.3: Initial revision
-
-Sat Feb 17 23:50:00 1996  William Perry  <address@hidden>
-
-* w3.el: fixed loading of default stylesheet stuff.  gack.
-
-* w3-auto.el: fixed autoloading of css parser
-
-
-* w3.txi: manual formatting changes - wheee.
-
-
-* w3-menu.el:
-Now explicitly require easymenu for FSF19 - some older versions don't
-autoload it.  *sigh*
-
-Fri Feb 16 21:39:19 1996  William Perry  <address@hidden>
-
-
-Thu Feb 15 22:56:04 1996  William Perry  <address@hidden>
-
-* w3.el: w3-fetch now defaults to http://www. if you are not in a w3 buffer
-
-* w3-menu.el: Added menu item for incremental display
-
-Mon Feb  5 17:01:39 1996  William Perry  <address@hidden>
-
-* w3-draw.el:
-Fixed bug in the <font> handling if all you are doing is setting a color
-
-Tue Jan 30 15:16:43 1996  William Perry  <address@hidden>
-
-* w3.txi: Added section on emulation.  Updated copyright info and dates.
-
-Sun Jan 28 06:17:55 1996  William Perry  <address@hidden>
-
-* w3-menu.el: Fleshed out the doc string of w3-use-menus some more.
-
-Sat Jan 27 18:59:57 1996  William Perry  <address@hidden>
-
-* w3-style.el: Made more of the functions names be saner... don't pollute the
-namespace for when we support more stylesheet notations.  Need to
-extrapolate it some more and have a registry of acceptable notations.
-
-Fri Jan 26 18:40:42 1996  William Perry  <address@hidden>
-
-* w3-xemac.el: No longer adds WWW options submenu to the main options menu
-
-
-* w3.el, w3-xemac.el:
-Lots of changes for new client-side imagemap support and cleanup of old code.
-
-
-* w3-menu.el: New `style' menu
-
-* w3-imap.el:
-Lots of changes for new client-side imagemap support and cleanup of old code.
-
-* w3-emulate.el:
-Added keybindings for left & right arrow keys under netscape emulation.
-
-* w3-draw.el:
-Lots of changes for new client-side imagemap support and cleanup of old code.
-Removed inlined mpeg code, waiting for XEmacs 19.15 to support it again.
-
-* descrip.mms: Updated the VMS makefile for the new files
-
-* dist.Makefile: Added w3-menu.el to the distribution
-
-Thu Jan 25 17:51:39 1996  William Perry  <address@hidden>
-
-* w3-xemac.el:
-Moved over to new, more robust menu specifications - mainly stolen from VM.
-
-* w3.el, w3-vars.el, w3-emulate.el:
-Moved w3-search-* functions out of w3-emulate.el into w3.el where they belong.
-Moved some variables out as well.
-
-* w3-e19.el: Removed w3-emacs19-hack-faces-p support.
-Moved over to new, more robust menu specifications - mainly stolen from VM.
-
-* w3-menu.el:
-Menus now appear to work under both emacs19 and XEmacs.  Fixed problem
-where 'Search Again' was always available, even if no search had been
-done yet.
-
-
-* w3-menu.el: Initial revision
-
-Tue Jan 23 18:05:08 1996  William Perry  <address@hidden>
-
-* font.el: Fixed problem with latest XEmacs 19.14 beta
-
-
-* w3-emulate.el:
-lynx/netscape emulation now uses new w3-search-forward function
-
-* w3-toolbar.el: Toolbar now uses new w3-search-forward function
-
-* w3-imap.el: Work around small bug in the 19.14 beta byte compiler
-
-* w3.el: Don't choke and die if you can't find ange-ftp
-
-Mon Jan 22 16:15:42 1996  William Perry  <address@hidden>
-
-* dist.Makefile: Added w3-emulate.el to distribution
-
-* w3.el, w3-vars.el: Moved the emulation stuff into a separate file
-
-* w3-emulate.el: Initial revision
-
-Sun Jan 21 19:16:33 1996  William Perry  <address@hidden>
-
-
-* dist.Makefile: Added w3-imap.el to the distribution
-
-Sun Jan 14 01:00:30 1996  William Perry  <address@hidden>
-
-* w3.txi: updated w3.org mailing list addresses
-
-* w3.txi: Added section on reporting bugs... needs finishing
-
-Sat Jan 13 08:30:06 1996  William Perry  <address@hidden>
-
-
-Fri Jan 12 19:42:17 1996  William Perry  <address@hidden>
-
-* w3-parse.el: Added parsing stuff for client-side imagemaps
-
-* w3-draw.el, w3-vars.el, w3-imap.el:
-Client-side imagemaps parse correctly now, and the data is stored.
-
-* w3-e19.el:
-Make the options button look a little more like a button under emacs 19
-
-* w3.txi: Combined some of the indices to make it easier to find stuff.
-
-* w3-imap.el: Fixed macros x-coord and y-coord
-
-* w3-imap.el:
-Added definitions for point-in-rectangle|circle functions, and stub
-for point-in-polygon function
-
-* w3-imap.el: Initial revision
-
-Wed Jan 10 13:32:30 1996  William Perry  <address@hidden>
-
-* w3.el: Renamed w3-store-in-x-clipboard to w3-store-in-clipboard
-
-* w3-xemac.el: New version of w3-store-in-clipboard
-
-* w3-e19.el: Renamed w3-store-in-x-clipboard to w3-store-in-clipboard
-
-* w3-e19.el: w3-store-in-x-clipboard now uses x-select-text instead of
-x-set-selection, which is more correct as a good X citizen I guess.
-
-Sun Jan  7 17:03:38 1996  William Perry  <address@hidden>
-
-* w3.el: only check current-prefix-arg if interactive-p.  Otherwise we hose up
-things in ffap.el and probably lots of other things nobody has found
-yet.
-
-Wed Jan  3 19:47:47 1996  William Perry  <address@hidden>
-
-* w3-vars.el, w3.el:
-New netscape emulation minor mode that sets up a lot of keybindings.
-
-* font.el: Made set-face-background|foreground|font interactive again.
-
-* docomp.el: Now adds urldir to the load path
-
-* dist.Makefile: Now copies the THIS-IS-VERSION-* files when installing
-
-* docomp.el:
-Now adds URLDIR to load-path instead of unconditionally using ../url
-
-* dist.Makefile:
-Now puts URLDIR in the environment of the compiling emacsen so that
-docomp.el can get at it.
-
-Tue Jan  2 17:52:14 1996  William Perry  <address@hidden>
-
-* w3.el: Renamed a few things from style-sheet to stylesheet, to be consistent
-
-
-Wed Dec 20 18:21:29 1995  William Perry  <address@hidden>
-
-* w3-hot.el: Removed compile-time warnings
-
-* dist.Makefile: removed w3-srch.el from distribution
-
-* w3-hot.el:
-Basic handling of html hotlists... converts into XEmacs-style menu currently
-
-* w3-beta.el: Added definition of w3-normalize-spaces
-
-* font.el: Definition of define-new-mask macro should now work on older emacs
-19.2x that don't understand native backquoting.
-
-* w3-parse.el:
-No longer throw up a warning for <hr> in <pre> - it really is legal HTML 2.0
-
-* w3-xemac.el: Now stores the parse _tree_ in w3-current-parse.
-Modified the view-parse-tree menu item to show this (not just 
w3-last-parse-tree
-
-* w3-parse.el:
-Made w3-display-parse-tree able to take a parse tree as an argument
-
-* w3-beta.el:
-Make w3-refresh-buffer signal an error for now - not yet reimplemented.
-
-
-* w3-vars.el: Added entities
-     (sim         . 126)
-    (le          . "<=")
-    (agr         . "alpha")
-    (rdquo       . "''")
-    (ldquo       . "``")
-
-
-* w3-parse.el: Now allows <hr> inside of <pre>
-
-Tue Dec 19 22:21:15 1995  William Perry  <address@hidden>
-
-* w3-draw.el: Fixed textarea default input handling
-
-* w3-vars.el, w3-parse.el: Added variable w3-maximum-line-length
-
-Mon Dec 18 22:30:38 1995  William Perry  <address@hidden>
-
-* w3.el: Offer to save to disk if an external viewer fails
-
-* w3.el: If w3-fetch is given a prefix arg, dump to disk.
-
-* w3.el:
-Now defaults to using ~/.netscape/preferences instead of ~/.MCOM-preferences
-
-Sun Dec 17 21:26:41 1995  William Perry  <address@hidden>
-
-
-* w3-draw.el, w3-vars.el, w3.txi:
-Changed w3-link-delimiter-info to w3-link-info-display-function
-
-Sat Dec 16 17:23:39 1995  William Perry  <address@hidden>
-
-* font.el: fixed typo in tty-font-create-plist
-
-* font.el: Fixed stupid mistake in font-tty-find-closest-color
-
-Thu Dec 14 22:34:32 1995  William Perry  <address@hidden>
-
-* font.el: Now uses linethru if on XEmacs
-
-* default.css: Moved to new CSS comment syntax
-Added new stuff for TTYs
-
-
-Wed Dec 13 15:49:44 1995  William Perry  <address@hidden>
-
-* w3-xemac.el: Removed a bunch of old code for XEmacs <= 19.13
-
-* w3-xemac.el: Now registers all netpbm utilities by default
-
-* font.el: Added a few new bitmasks (overline linethrough)
-
-* w3-style.el:
-Now handles the new CSS style syntax - will they every address@hidden decide
-on one and stick with it?!!?!?
-
-
-Tue Dec 12 22:53:43 1995  William Perry  <address@hidden>
-
-* w3.el: fixed problem in w3-insert-entities-in-string under XEmacs
-
-
-* w3-forms.el: Few form fixes
-
-* w3-vars.el: Modified the default stylesheet
-
-
-* font.el: Bold now works on ttys
-
-* w3-sysdp.el:
-Added stubs for make-face set-face-foreground and set-face-background
-for non-X emacsen
-
-
-Mon Dec 11 22:52:38 1995  William Perry  <address@hidden>
-
-* font.el: Some emacs19 patches
-
-* font.el: Changed all the style stuff to use bitmasks for speed.
-More TTY changes
-If no size specified for font, defaults to size of default font for device.
-If no family specified  for font, defaults to family of default font for 
device.
-
-* w3-style.el: All stylesheet stuff now uses the new font package
-
-Sun Dec 10 17:55:13 1995  William Perry  <address@hidden>
-
-* font.el: Some of the font stuff now works on TTYs (bold/dim/etc)
-
-* w3-sysdp.el: Added stubs for face-property and set-face-property
-
-* w3-parse.el: Added wired
-
-Sat Dec  9 23:36:21 1995  William Perry  <address@hidden>
-
-* font.el:
-Added definition of x-font-regexp for emacs19 that has everything font.el
-needs in it.
-
-Fri Dec  8 18:05:48 1995  William Perry  <address@hidden>
-
-
-* w3-draw.el:
-Better handling of links - now keeps _all_ links with the same rel or rev
-
-* w3.el: New presentation of document information
-
-
-* w3-xemac.el, images.el: Can now compile under Emacs19
-
-Wed Dec  6 14:37:12 1995  William Perry  <address@hidden>
-
-* w3-vars.el, w3.el: Now comes with a global fallback stylesheet
-
-
-* w3-style.el: No longer make '/' a 'string' type in the syntax-table - it was
-screwing up non-quoted URLs big time.
-
-* font.el: If running under emacs19, always condition-case where we do a
-set-face-font, since it handles different fonts badly right now.
-
-Tue Dec  5 22:29:28 1995  William Perry  <address@hidden>
-
-* w3-vars.el:
-New image/hyperlink/default context-sensitive menus.  Can now have a
-'%s' in the w3-graphlink and w3-hyperlink-menu entries that will be
-replaced by the URL under point
-
-* w3-xemac.el: Now merges context-sensitive menus when appropriate
-
-* w3-vars.el: Added image mapping for image/png to 'png
-
-* images.el: Modified the pnm and ppm to gif converters to actually work now.
-
-* images.el: Added converters for PNG
-
-Mon Dec  4 19:22:26 1995  William Perry  <address@hidden>
-
-
-* w3-xemac.el: XBM images now work again - gross
-
-
-* w3-parse.el:
-defvar of w3-sgml-md-syntax-table no longer uses an eval-when-compile
-form, since this makes MULE and XEmacs 20.0 croak, and makes the .elc
-files non-portable, now that Emacs 19.30 uses a separate data type for
-them.
-
-* default.css: More fun stylesheet things
-
-* w3.el: When dumping to disk, only send "*/*" in the acceptheader
-
-* w3-vars.el: Now uses the new 'images' package for image conversion.
-
-* w3-xemac.el: Now uses the new 'images' package for image conversion.
-Removed some stuff for old lemacsen
-
-
-* images.el: Wow, it works
-
-* new.el: Now handles pre-formatted sections correctly
-
-* font.el: Default to 12pt font
-
-
-Sat Dec  2 16:55:58 1995  William Perry  <address@hidden>
-
-* w3-draw.el: Applied some patches from joe wells.
-
-* w3-parse.el: Applied some patches from joe wells.
-1. Added error transitions to infer <TBODY>, <TR>, and <TD> when seeing
-   bad stuff inside a TABLE.  A lot of people write shit like this:
-   <TABLE> Text to be centered in a pretty frame in Netscape </TABLE>
-2. Took out a particular error transition for P start tags in the state
-   transition table that was leading to horrible handling of some bad
-   HTML I was seeing.  I had thought this transition would improve
-   handling of bad HTML, but I hadn't seen this particular kind of bad
-   HTML.
-3. Fixed a use of w3-invalid-sgml-chars (that didn't work at all) and
-   fixed its documentation string.
-
-Fri Dec  1 16:25:58 1995  William Perry  <address@hidden>
-
-* images.el: Initial revision
-
-Thu Nov 30 14:33:14 1995  William Perry  <address@hidden>
-
-
-Wed Nov 29 15:06:58 1995  William Perry  <address@hidden>
-
-* w3-sysdp.el: Define x-font-regexp-foundry-and-family for Emacs 19
-
-* dist.Makefile:
-No longer compile w3-sysdp.el - was causing problems in emacs 19.29/19.30
-
-* w3-auto.el: Added autoload for w3-form-format-unknown
-
-Tue Nov 28 16:33:12 1995  William Perry  <address@hidden>
-
-* w3-toolbar.el: Finally fixed nil specifier problem in w3-toggle-toolbar
-
-
-* font.el: Added a new generic font family 'elfin'.  New keyword :oblique.  New
-function font-create-object that converts a window-system-dependent
-font specification into our internal representation
-
-* new.el: Shit, it works!
-
-* w3-style.el: Now intern's the 'break' items, for faster comparison later.
-
-Mon Nov 27 22:21:04 1995  William Perry  <address@hidden>
-
-
-Sun Nov 26 01:31:44 1995  William Perry  <address@hidden>
-
-
-Sat Nov 25 04:47:31 1995  William Perry  <address@hidden>
-
-* new.el: Initial revision
-
-Fri Nov 24 22:53:55 1995  William Perry  <address@hidden>
-
-* w3.txi: Lots of changes and restructuring
-
-* w3.txi:
-Documented the recent keymap changes for history/annotation/hotlist actions
-
-* w3-vars.el: Moved history commands onto their own keymap
-
-* w3-vars.el:
-Moved all hotlist and annotation functions into their own keymap 'h'
-and 'a' respectively.  Comments on the new keybindings are welcome.
-
-* w3-style.el:
-font-size-index now scales by 1.44 instead of 1.2, as CSSv5 recommends
-
-Thu Nov 23 22:33:22 1995  William Perry  <address@hidden>
-
-
-* default.css: Few piddly changes
-
-* w3.txi: Lots of documentation changes.  Thanks to jon konrath
-
-* w3-style.el: Fixed typo in w3-style-font-size-for-index
-
-* w3-draw.el: Can now handle <font color=xxx>
-
-* w3-style.el: The output device specific stuff works now
-
-* w3-draw.el:
-Fixed conversion of netscape <body> attributes into a CSS stylesheet
-
-Wed Nov 22 16:49:32 1995  William Perry  <address@hidden>
-
-* w3-style.el: Now correctly parses the ":foo:" stuff in CSS to handle multiple
-media. Doesn't actually do anything with it yet, but at least it
-doesn't make the thing choke and die any more.
-
-Tue Nov 21 16:33:37 1995  William Perry  <address@hidden>
-
-* default.css: Various tweaks and changes to the default stylesheet
-
-* w3-style.el: Removed old cssv3 stuff - is now completely cssv5
-Added correct handling of comments
-
-* w3-draw.el: Setting default background works again
-
-* w3-xemac.el:
-Added a debugging menu for right now to show the last parse tree and the
-current stylesheet.
-
-* font.el: Few changes to not always default to 'medium' font weight, for those
-fonts that don't have one.
-
-Mon Nov 20 14:14:06 1995  William Perry  <address@hidden>
-
-* w3-about.el: Converted about:style to CSSv5
-
-* w3.txi: Started revamping some sections
-
-Sun Nov 19 22:13:17 1995  William Perry  <address@hidden>
-
-
-* w3-e19.el: Fixed w3-overlays-at
-
-
-* w3-beta.el, w3-draw.el, w3-e19.el, w3-forms.el:
-Everything and its grandmother now uses a default stylesheet - no more
-Xresources!
-
-* w3-mule.el: Fixed a few MULE bugs
-
-* w3-style.el:
-w3-generate-stylesheet-faces does not actually create any of the faces
-now - delays that until they are actually needed/used in
-w3-face-for-element
-
-* w3-vars.el:
-Everything and its grandmother now uses a default stylesheet - no more
-Xresources!
-
-* w3.el: Everything and its grandmother now uses a default stylesheet - no more
-Xresources!
-Much faster version of w3-insert-entities-in-string.
-Now binds require-final-newline to nil when saving a binary file.
-Fixed a few MULE bugs with coding systems and www: URLs
-Fixed reading of initial stylesheet.
-
-* w3-xemac.el:
-Everything and its grandmother now uses a default stylesheet - no more
-Xresources!
-
-* w3-auto.el: Now autoloads w3-generate-stylesheet-faces
-
-* docomp.el: Moved some variable stubs around
-
-* w3-parse.el: Several patches from jbw to the new parser
-
-Sat Nov 18 02:54:18 1995  William Perry  <address@hidden>
-
-
-* w3-vars.el: Fixed typo in one of the new defvars
-
-* w3-vars.el: Changed the format of w3-list-chars-assoc and w3-style-tags-assoc
-
-* w3-draw.el: Removed conversion of old style entity stuff
-
-* w3-vars.el: Moved w3-html-entities variable
-
-* w3.el: Now correctly generates stylesheet faces for the user stylesheet.
-w3-insert-entities-in-string should now be more efficient.
-
-* w3-parse.el: Moved w3-html-entities variable
-
-Fri Nov 17 18:42:54 1995  William Perry  <address@hidden>
-
-* w3-auto.el: Added autoload for w3-parse-arena-stylesheet
-
-* w3.el: Fixed hashtable stuff under XEmacs - the key of a hashtable must be
-able to compare with 'eq', not 'equal', so had to change it to use
-symbols instead of the url string.
-
-* w3-beta.el:
-No longer bind pop-up-windows to nil through all of w3-prepare-buffer
-
-* dist.Makefile:
-Now requires that the URL package be installed before continuing
-
-* w3-parse.el: Added the 'label' tag.
-
-* w3-draw.el: Fixed dumb mistake in the handling of
-w3-visited-node-style/w3-node-style for links under a window system.
-
-* w3-forms.el: Removed old bogus code
-
-
-* w3-parse.el: Fixed bug in the new entity expansion
-
-* w3-style.el:
-Fixed a problem with the font-weight keyword in style specs.  Now
-stores the font specification in the stylesheet as well
-
-* w3.el: No longer unconditionally load w3-sysdp.el
-
-* w3-draw.el: Fixed some spacing problems
-
-* w3-parse.el: Various patches from jbw
-
-Thu Nov 16 18:52:56 1995  William Perry  <address@hidden>
-
-* w3-parse.el: Added in the emacs-w3 easter eggs to the DTD
-
-* w3-parse.el: Allow '_' in attribute names
-
-Wed Nov 15 23:10:23 1995  William Perry  <address@hidden>
-
-* w3-draw.el:
-Fixed list items with new implied paragraph breaks immediately after
-
-* w3-draw.el: Fixed the yogsothoth handling
-
-* w3-xemac.el: Fixed image loading problem
-
-* w3-parse.el:
-Fixed w3-sgml-name-to-string to be a macro instead of a true function.
-Since it was wrapped within an eval-when-compile, all calls to it
-later on would be fucked due to an undefined function
-
-* w3-draw.el: Removed some dead code
-
-* font.el:
-Can now correctly combine any number of fonts with font-combine-fonts
-
-* w3-draw.el:
-Fixed problem with not swallowing newlines when necessary due to new parser
-
-
-* w3-forms.el: Moved lots of stuff out into new auxiliary files
-
-* w3-auto.el: Initial revision
-
-* w3.el: Moved lots of stuff out into new auxiliary files
-
-* w3-annotat.el: Initial revision
-
-* w3-hot.el: Removed the old, unused air mosaic hotlist parser
-
-
-* w3-parse.el, w3-draw.el:
-Make a display-table for use globally for things in the windows character set
-
-* w3-parse.el: The whole new parser from joe wells.  M-x amen
-
-* w3-draw.el: Few changes for the new parser
-
-Mon Nov 13 15:56:58 1995  William Perry  <address@hidden>
-
-* w3-draw.el: Fixed the <font size=+x> handling
-
-* w3-draw.el:
-Implemented messaging the 'title' of a link instead of just the naked URL
-Now honors the nasty netscapism 'seqnum' attribute on <li> tags
-
-* w3-vars.el, w3-xemac.el, w3-e19.el:
-Implemented messaging the 'title' of a link instead of just the naked URL
-
-* w3-toolbar.el: Activated the w3-toolbar-stop-icon stuff
-
-Fri Nov 10 17:30:43 1995  William Perry  <address@hidden>
-
-* w3.el:
-Fixed problem with application/x-www-form-urlencoding of names of form fields
-
-Thu Nov  9 20:56:02 1995  William Perry  <address@hidden>
-
-* w3-draw.el: Few fixes for ordered lists in alpha and roman style
-
-* w3.el: Catch malformed www: URLs
-
-Fri Nov  3 21:34:35 1995  William Perry  <address@hidden>
-
-
-* w3-style.el, w3-draw.el:
-Can now specify alignment and textalignment in stylesheets for <hr>
-
-Thu Nov  2 22:25:50 1995  William Perry  <address@hidden>
-
-* w3-style.el:
-Fixed problem in stylesheet parser calling (char-after) at point-max
-
-
-* w3-hot.el: Now requires w3-vars, so that w3-setup-done is bound.
-
-Wed Nov  1 15:39:06 1995  William Perry  <address@hidden>
-
-* w3.el: More work on allowing the user to do a completing-read on the
-annotations of a buffer to delete one.  Fixed a few potential screwups
-in the annotations code with regard to improperly entity-ized strings.
-no longer refetches a text/plain document from the server when you do
-a document-source on it.
-
-* w3-hot.el:
-Don't leave backup copies of w3-hotlist-file or url-global-history-file
-
-Tue Oct 31 06:20:43 1995  William Perry  <address@hidden>
-
-* w3-draw.el:
-Fixed stupid problem introduced when changing w3-set-fill-prefix-length to 
defsubst instead of defmacro
-
-* w3-draw.el, w3-e19.el, w3-vars.el, w3-xemac.el, w3.el:
-Now handles empty containers with name/id attributes
-
-* w3-beta.el: Different formatting for annotations
-
-* w3.el: Base of allowing the user to choose what annotation to delete when
-w3-delete-personal-annotation is called from a non-PAN
-
-* w3-parse.el, w3-beta.el, w3-vars.el, w3-draw.el: Few performance tweaks
-
-
-Sun Oct 29 02:14:10 1995  William Perry  <address@hidden>
-
-* w3-hot.el, w3.el:
-Removed old HTML <div1> so that the new display engine doesn't gripe
-
-* w3-vars.el, w3.el: Made w3-source-document honor w3-reuse-buffers.  Also made
-w3-reuse-buffers default to `reuse'
-
-* w3-draw.el: Fixed the form handling for isindex fields.
-
-* w3-draw.el: Include a working version of center-line for emacs 19.29
-
-* dist.Makefile: Now uses an implicit target.
-
-Sat Oct 28 04:16:16 1995  William Perry  <address@hidden>
-
-* w3-draw.el: Fixed stupid typos
-
-* w3-e19.el, w3-xemac.el:
-Now signals an error in w3-find-specific-link if the #link could not
-be found
-
-* w3.el: w3-show-history-list now works again
-
-
-* w3-draw.el: Fixed the <option value=xxx> handling
-
-* w3-draw.el: Make headers nuke <p> alignments on the stack
-
-
-* w3-parse.el: No longer swallows all the trailing '>' after a tag.  So
-<h1>>>>>></h1> will show up correctly.  Hmmmm... is this right?
-Comments anyone?
-
-* w3-draw.el:
-first paragraph breaks within a list item are now filled correctly
-
-
-Fri Oct 27 13:41:16 1995  William Perry  <address@hidden>
-
-
-* w3-style.el:
-Now correctly keeps track of the tags that something applies-to -
-correct handling of context and new level 2 attribute references
-instead of the old naive way.
-
-* w3-style.el: Now implements @import for stylesheets ala CSS v4
-
-Thu Oct 26 15:11:29 1995  William Perry  <address@hidden>
-
-* font.el: Fixed problem in Emacs 19.29 with the font-set-face-font stuff -
-copy-face sends us in the internal vector instead of the face symbol.
-Bleah!
-
-Wed Oct 25 22:35:42 1995  William Perry  <address@hidden>
-
-* w3.el: Fixed following a link to a fragment "#foo" does not add that URL to
-url-global-history-completion-list (and thus it will not be shown as a
-link that has been followed) if the base URL is already in a buffer.
-
-* default.css: Updated to new (unreleased) CSS v5 specification
-
-* font.el: Removed some old function definitions that are no longer used.
-
-* w3-draw.el:
-Will now create the face storage variables if make-face is not bound.
-Was causing some of the stuff later on in the display engine to crap
-out and die.
-
-Tue Oct 24 16:42:24 1995  William Perry  <address@hidden>
-
-* w3-draw.el, w3-style.el: More CSS hacks
-
-* w3-style.el: Some CSS v5 stuff
-
-* font.el: Added definition of font-warn
-
-* w3-style.el: No longer get everything set to a nil/nil/nil/nil font
-
-Mon Oct 23 23:49:51 1995  William Perry  <address@hidden>
-
-* w3-draw.el:
-Now honors the special `link' and `visited' classes for anchor tags
-
-
-* w3-style.el: Now honors old back.color syntax
-
-* w3.el: Now honors the $html-source CSS special
-
-Thu Oct 19 21:12:50 1995  William Perry  <address@hidden>
-
-
-Wed Oct 18 22:20:59 1995  William Perry  <address@hidden>
-
-* w3-draw.el: few formatting tweaks.
-
-* w3-style.el: Few various tweaks for font-style
-
-
-Tue Oct 17 21:47:49 1995  William Perry  <address@hidden>
-
-* w3-xemac.el, w3-e19.el: Fixed form entries
-
-
-Mon Oct 16 20:35:42 1995  William Perry  <address@hidden>
-
-
-* w3.el: Fixed applicatin/x-www-form-urlencoded crap
-
-* font.el:
-Don't die if the set-face-xxxx functions are undefined when font.el[c]
-is loaded
-
-Sun Oct 15 23:33:49 1995  William Perry  <address@hidden>
-
-* w3-draw.el: Fixed handling of add.before and add-after
-
-* w3-style.el: Don't bomb out on ttys
-
-* w3-parse.el: Patch from jbw to handle more bad HTML
-
-* w3-parse.el:
-Correct handling of things like &quot; in an attribute/value pair
-
-
-* w3-beta.el: Better handling of personal annotations
-
-* w3-draw.el:
-Fixed fig and ol handling to be consistent with the new symbol-based
-argument lists
-
-* w3-parse.el:
-Moved default parameters for ol into w3-draw where they belong, courtesy of jbw
-
-* w3.el: Patches for personal annotations by jbw
-
-
-* w3.el: fixed some fuckups in the history list
-
-
-* w3.el: Check return value of url-get-url-at-point in w3-follow-url-at-point
-before passing to w3-fetch.
-
-* w3-vars.el: Fixed documentation for w3-header-chars-assoc
-
-Thu Oct 12 13:59:58 1995  William Perry  <address@hidden>
-
-* w3-e19.el: Implemented w3-active-link-color for emacs 19
-
-Tue Oct 10 16:17:52 1995  William Perry  <address@hidden>
-
-* w3-style.el: Some more CSS v4 stuff
-
-* w3-draw.el, w3-xemac.el, w3-vars.el: Now has w3-active-node-style
-
-
-Mon Oct  9 02:59:55 1995  William Perry  <address@hidden>
-
-* w3-about.el: Updated the about stylesheet to the new v4 syntax
-
-* default.css: Updated the default stylesheet to the new v4 syntax
-
-Sun Oct  8 23:48:10 1995  William Perry  <address@hidden>
-
-* w3-style.el:
-Now keeps track of address@hidden' directives - still need to actually do
-something sensible with them though.
-
-* w3-style.el:
-Now understands CSS v4 syntax.  Can handle either v3 or v4, based upon
-some state in the parser.
-
-
-Mon Oct  2 18:07:36 1995  William Perry  <address@hidden>
-
-* w3-vars.el: Removed some epoch stuff
-
-
-* w3-draw.el, w3-about.el, w3-vars.el, w3.el: Removed some epoch stuff
-
-
-Sun Oct  1 17:34:43 1995  William Perry  <address@hidden>
-
-
-Thu Sep 28 13:25:59 1995  William Perry  <address@hidden>
-
-* w3-e19.el:
-Disabled w3-shuffle-history-menu for now, since it cannot copy with
-url-history-list being a hashtable.
-
-* w3-xemac.el: The url-history-list is now really a hashtable
-
-* w3-beta.el, w3.el:
-Fixed a few problems in the hotlist and history handling where it was
-not escaping URLs correctly of < > &, etc.
-
-
-Wed Sep 27 21:44:58 1995  William Perry  <address@hidden>
-
-* font.el: Don't make the rgb.txt buffer visible to the user.
-
-
-Tue Sep 26 14:59:14 1995  William Perry  <address@hidden>
-
-* RelNotes: Initial revision
-
-Mon Sep 25 21:59:10 1995  William Perry  <address@hidden>
-
-
-* w3-xemac.el: No longer tries to auto-detect giftopnm or giftoppm
-
-
-* w3-style.el: Only create font objects when necessary
-
-* w3-style.el, w3-draw.el: New stylesheet mechanism
-
-
-* font.el: Added lots of color stuff
-
-Sun Sep 24 17:13:14 1995  William Perry  <address@hidden>
-
-* w3-sysdp.el: Added def of find-face
-
-* font.el: Various tweaks
-
-Sat Sep 23 04:04:14 1995  William Perry  <address@hidden>
-
-* w3-draw.el, w3-xemac.el, descrip.mms, dist.Makefile:
-
-* w3-toolbar.el: Moved all the toolbar specific stuff out into its own file
-
-
-* w3-toolbar.el: Initial revision
-
-Fri Sep 22 15:08:48 1995  William Perry  <address@hidden>
-
-
-Thu Sep 21 17:21:24 1995  William Perry  <address@hidden>
-
-
-Wed Sep 20 14:07:46 1995  William Perry  <address@hidden>
-
-
-* w3-hash.el: Initial revision
-
-Tue Sep 19 13:48:09 1995  William Perry  <address@hidden>
-
-* w3.el: Fixed fill out forms
-
-Mon Sep 18 18:13:14 1995  William Perry  <address@hidden>
-
-
-* w3.el: A few fixes for w3-url-completion-function to make sure
-url-global-history-hash-table is really a hashtable
-
-
-Sun Sep 17 18:04:25 1995  William Perry  <address@hidden>
-
-
-* w3-parse.el: fixed typo
-
-* w3-parse.el: Avoid lots of string-creation in w3-parse-args
-
-* w3.el: Use all-completions directly in emacs-19 in w3-url-completion-function
-for raw speed.
-
-* w3-draw.el: Fixed some _STUPID_ problems
-
-
-* w3-sysdp.el:
-make-hashtable now finds the next highest prime for the initial size.
-
-* w3-draw.el:
-Everything from w3-parse-args is now a symbol, so that the faster assq
-can be used when retrieving.  It is possible something was missed -
-keep an eye out for things getting fucked.
-
-
-* w3-vars.el, w3-draw.el:
-Now caches whether a URL has been visited or not between calls to
-w3-handle-hype and w3-handle-hyperlink-end, for speed
-
-* w3.el: Changes to w3-url-completion-function to handle the new internal
-representation of the global history.  Performance might suffer here
-(in XEmacs), but the majority of people don't ever notice the url
-completion anyway. :)
-
-* w3-sysdp.el: Added def of clrhash
-
-
-* w3-sysdp.el: Added hashtable functions
-
-Sat Sep 16 01:37:54 1995  William Perry  <address@hidden>
-
-* w3.el: Some MULE stuff
-
-* w3-beta.el: Fixed bug in finding #xxx links
-
-* w3-draw.el:
-Catch error in centering a horizontal rule due to brokenness in emacs 19.29
-
-
-* w3-vars.el, w3-parse.el, w3-draw.el:
-Lots of performance tweaks from address@hidden (Joe Wells)
-
-Mon Sep 11 14:32:40 1995  William Perry  <address@hidden>
-
-
-Sun Sep 10 23:26:47 1995  William Perry  <address@hidden>
-
-* w3-sysdp.el: Added defvar for x-library-search-path
-
-Sat Sep  9 03:17:37 1995  William Perry  <address@hidden>
-
-* w3-xemac.el: Added options menu item for honroing stylesheets
-
-
-Wed Sep  6 15:12:24 1995  William Perry  <address@hidden>
-
-
-Tue Sep  5 17:41:31 1995  William Perry  <address@hidden>
-
-* w3-draw.el: Fixed stupid problem with new def of w3-warn
-
-Mon Sep  4 18:10:03 1995  William Perry  <address@hidden>
-
-
-* w3-vars.el: Added SGI rgb inlined image converter
-
-* w3-parse.el:
-Fixed problem where something like <a href=^M "foo" would use the ^M
-as the href value.  Bleah!
-
-
-* w3-beta.el: Integrated new version of w3-prepare-buffer from Shuji NARAZAKI
-<address@hidden> that gets rid of the horrid
-'asynchronous retrieval finishes when in minibuffer' lossage.  Yeah!
-
-* w3.el: Redirects should now no longer screw up the history list.
-
-
-Sun Sep  3 21:53:09 1995  William Perry  <address@hidden>
-
-* w3.el: Only do the absolute minimum setup necessary in
-w3-read-url-with-default - this yields faster response time upon first
-starting up via w3-fetch.  Uses custom completion routine to only do
-the url setup routines when the user requests completion on a URL.
-
-* w3-sysdp.el: fixed typo in device-mm-width
-
-Fri Sep  1 02:47:29 1995  William Perry  <address@hidden>
-
-* w3.el: Treat bogus METHODs on forms like GET, but still put up a warning
-buffer
-
-
-Thu Aug 31 23:59:33 1995  William Perry  <address@hidden>
-
-
-* default.css: Initial revision
-
-
-* w3-draw.el: Put in special test for CR or LF in name of a input field so that
-spaces would not be inserted and screw up cgi scripts that aren't
-expecting it.
-
-* w3-xemac.el: Fixed various toolbar problems
-
-Wed Aug 30 20:36:17 1995  William Perry  <address@hidden>
-
-* w3.el: Incorrectly 'typed' input types now default to `text'
-
-
-* w3.el: Applied patch from address@hidden (Joe Wells) for the extremely
-annoying ` Wrong type argument: overlayp, (w3form (("enctype"
-. "application/x- ...' stuff.
-
-Mon Aug 28 21:15:50 1995  William Perry  <address@hidden>
-
-
-* xbm-button.el: Initial revision
-
-
-* w3-xemac.el: Now uses xbm-button-create when necessary
-
-* w3-xemac.el: Fixed save options bug
-
-
-* w3-draw.el: Fixed bug where 'plain' lists would not be indented at all.
-
-
-* font.el: Initial revision
-
-Sun Aug 27 01:10:25 1995  William Perry  <address@hidden>
-
-
-Sat Aug 26 06:21:20 1995  William Perry  <address@hidden>
-
-* w3-sysdp.el: Added split-string
-
-Fri Aug 25 18:56:55 1995  William Perry  <address@hidden>
-
-* w3-sysdp.el: Added definition of try-font-name
-
-
-* w3-style.el, w3-xemac.el, w3-vars.el, w3-e19.el, w3-draw.el:
-Can now specify the default face in style sheets
-
-
-Thu Aug 24 19:08:16 1995  William Perry  <address@hidden>
-
-* w3-draw.el:
-Changed w3-munge-color-XXX to strip spaces out of color names passed
-in.
-
-* w3-style.el: Some fixes for the arena 0.97 type style sheets
-
-Mon Aug 21 21:12:22 1995  William Perry  <address@hidden>
-
-
-* w3-style.el: Style sheet stuff now more up-to-snuff with CSS v3.  Also now
-normalizes all colors to their RGB tuples, so that faces can be shared
-between stylesheets that refer to them by different names (#FFF ->
-black -> #FFFFFF -> etc)
-
-
-Sun Aug 20 23:34:37 1995  William Perry  <address@hidden>
-
-* w3-draw.el: Fixed typo
-
-
-* w3-util.el: Added doc strings for the w3-hyperlink-element-xxxx functions
-
-* w3-util.el: Added a provide statement
-
-* w3-util.el: Initial revision
-
-* w3.el: New version of w3|url-warn
-
-* w3-draw.el, w3-e19.el, w3-epoch.el, w3-parse.el, w3-style.el, w3-xemac.el, 
w3.el:
-Use new warnings facility.  Reimplemented most of w3-debug-html
-
-* w3.el, w3-draw.el: Now stores the ID attribute of input elements
-
-
-* w3-parse.el: Nuke entities inside of a <textarea>
-
-* w3-parse.el, w3-draw.el:
-Don't parse any markup that occurs inside of a <TEXTAREA>
-
-* w3-vars.el:
-Removed textarea and textargs from w3-state-vector and 
w3-state-locator-variable
-
-* w3-draw.el: Fixed O-T-M-P error
-
-* w3-draw.el: Background bitmaps working again
-
-* w3-about.el: fixed typo
-
-
-Sat Aug 19 23:39:01 1995  William Perry  <address@hidden>
-
-* w3.el: Made the netpbm stuff come after the loading of the emacs-specific
-file, and now checks to see if w3-insert-graphic is bound before doing
-any of its checking, so that Emacs 19 etc users won't get the warning.
-Also now checks for either pbmtoxbm or ppmtoxbm, since NETPBM doesn't
-have ppmtoxpm
-
-* docomp.el: Added stub for emx-binary-mode
-
-Fri Aug 18 15:28:14 1995  William Perry  <address@hidden>
-
-* w3-xemac.el: Hack to let old xpm icons work for now
-
-Thu Aug 17 23:46:58 1995  William Perry  <address@hidden>
-
-* w3-vars.el, w3-draw.el: Basic support for raman's <label> stuff for forms
-
-* w3.el: Fixed typo in w3-batch-fetch
-
-Mon Aug 14 15:00:37 1995  William Perry  <address@hidden>
-
-* w3.el, w3-xemac.el, w3-draw.el: Can now specify width and height on mpegs
-
-* w3-xemac.el: Use new version of xpm-button.el
-
-* xpm-button.el: New version from kyle
-
-* w3.el: Fixed typo in warning about netpbm utilities
-
-Sun Aug 13 17:50:20 1995  William Perry  <address@hidden>
-
-* xpm-button.el: Made it so it doesn't bomb out on a tty
-
-* dist.Makefile: added xpm-button to the distribution
-
-* xpm-button.el: Initial revision
-
-* w3-style.el: fixed a few typos
-
-
-* w3-xemac.el:
-Now uses the xpm-button program to make textual toolbar icons when necessary
-
-Sat Aug 12 02:33:49 1995  William Perry  <address@hidden>
-
-* w3-about.el: Added about:license and about:warranty URL nodes
-
-* w3-draw.el: Catch errors when making w3-graphic-face
-
-* w3.el: Changed the behaviour of url-keep-history - the history list is only
-saved to disk if this is eq to `t'.  Setting it to anything else
-(usually a number) will keep the list in memory so that
-w3-show-history-list can still work.
-
-* w3.el: Don't add the initial page to the history list, so hitting 'B' in the
-first W3 buffer won't take you out of any w3-mode buffers.
-
-* w3-beta.el, w3-hot.el, w3-style.el, w3.el:
-Always set coding-system to *noconv* in MULE when inserting file contents
-
-Fri Aug 11 13:43:14 1995  William Perry  <address@hidden>
-
-* w3-beta.el, w3-draw.el:
-Moved w3-show-invisible-href into w3-draw to avoid invalid macro stuff
-
-* w3-parse.el, w3-draw.el: Don't swallow spaces after <XMP>
-
-
-* w3-xemac.el:
-New function w3-start-image-cache-timer that will time out all images
-after 5 minutes and cause a garbage-collect so that the pixmaps get
-returned to the windowing system.  This function will get smarter
-soon.
-
-* w3-xemac.el:
-New variable w3-toolbar-type to control waht the toolbar looks like.
-Can be 'pictures' 'text' or 'both' for icons only, text only, or
-captioned icons repsectively.
-
-Thu Aug 10 23:15:44 1995  William Perry  <address@hidden>
-
-* w3.el: Put up a big ugly warning if cannot find any of the netpbm utilities
-at startup
-
-
-* w3-draw.el:
-The size of a <SELECT> area is now defined by the maximum of all the
-lengths of the displayed strings or the SIZE attribute.
-
-* w3-draw.el: No longer picks up the last item of a <SELECT> form area when no
-<OPTION DEFAULT> is present
-
-* w3-xemac.el: Asynch during images should be correctly turned off now
-
-Sun Aug  6 15:58:35 1995  William Perry  <address@hidden>
-
-
-Sat Aug  5 06:11:02 1995  William Perry  <address@hidden>
-
-* w3.el, w3-vars.el: New binding of space to w3-scroll-up
-
-
-* w3.el, w3-draw.el, w3-beta.el, w3-vars.el: More stuff from the MULE folks
-
-
-* w3-xemac.el: Added separators between toolbar buttons
-
-Sat Jul 29 19:13:33 1995  William Perry  <address@hidden>
-
-
-Sat Jul 22 02:51:16 1995  William Perry  <address@hidden>
-
-* w3-e19.el:
-Don't choke if w3-mode-go-menu is not a keymap in w3-create-hotlist-menu
-
-Fri Jul 21 13:44:30 1995  William Perry  <address@hidden>
-
-* w3-parse.el:
-Added let bninding around the call to sera-to-fidel-marker to bind
-sera-being-called-by-w3 so that all is well with the world when using
-it with mule 2.2.3 for ethiopic text
-
-Thu Jul 20 04:06:34 1995  William Perry  <address@hidden>
-
-* w3.el: Fixed doc string for w3-open-local - also added autoloads for the
-w3-maybe-follow-* functions
-
-Tue Jul 18 13:24:39 1995  William Perry  <address@hidden>
-
-* w3-beta.el, w3-hot.el:
-Moved all the hotlist stuff out into w3-hot.el, in preparation for writing
-more robust hotlist handling (HTML files, etc, as hotlists).
-
-Mon Jul 17 14:05:31 1995  William Perry  <address@hidden>
-
-* w3-draw.el: <HR> handling now inserts fill-prefix/etc if in lists.
-
-Wed Jul 12 12:42:03 1995  William Perry  <address@hidden>
-
-* w3-xemac.el:
-Patch from chuck to use XBM version of toolbar icons if XPM support
-not available.
-
-Tue Jul 11 00:01:49 1995  William Perry  <address@hidden>
-
-
-Mon Jul  3 15:28:33 1995  William Perry  <address@hidden>
-
-* w3-draw.el:
-Fixed problem with multiple <textarea> tags would 'merge' the default
-contents.  Blah.
-
-
-* w3-draw.el:
-Fixed a slight formatting problem for <select multiple> lists when
-within a centered area - looked like crap.
-
-* w3-draw.el: Don't load background images if w3-delay-image-loads=nil
-
-Sun Jul  2 03:35:07 1995  William Perry  <address@hidden>
-
-* dist.Makefile: Added new target for w3-hot.elc
-
-* w3.el: Extracted hotlist functions into w3-hot.el
-
-* w3-hot.el: Initial revision
-
-* w3-vars.el, w3.el: Changed *-hooks to be *-hook'
-
-Sat Jul  1 17:14:23 1995  William Perry  <address@hidden>
-
-* w3-mule.el: Fixed problem in w3-convert-code-for-mule
-
-Thu Jun 29 16:27:33 1995  William Perry  <address@hidden>
-
-* dist.Makefile: Few more tweaks to the makefile
-
-* dist.Makefile: Now tries to create INFODIR if it doesn't exist
-
-* w3-e19.el, w3-mule.el, w3-vars.el, w3.el:
-Various patches from  Katsumi Yamaoka <address@hidden> Katsumi Yamaoka 
<address@hidden> for MULE stuff
-]
-
-* w3.el: Fixed a hidden forms problem.
-
-Tue Jun 27 04:17:59 1995  William Perry  <address@hidden>
-
-
-Mon Jun 26 02:29:33 1995  William Perry  <address@hidden>
-
-* w3-wemac.el, w3-xemac.el, w3-e19.el: Fixed problem pointing to w3_toc.html
-
-Sun Jun 25 22:28:28 1995  William Perry  <address@hidden>
-
-* w3-e19.el: Fixed problem in 19.29 where there were two help menus.
-
-
-* w3-sysdp.el: Some more device-* functions
-
-* w3-sysdp.el: More NS problems resolved
-
-* w3-xemac.el: Removed autoload for Info-goto-node
-
-* w3-sysdp.el: Fixed problem in w3-device-class on NeXTstep
-
-* w3-draw.el: Fixed problem in w3-get-resource on NeXTstep
-
-* w3-beta.el, w3-draw.el, w3-epoch.el, w3-mule.el, w3-srch.el, w3-style.el, 
w3-sysdp.el, w3-xemac.el, w3.el:
-Continue movement to using w3-sysdp.el defined functions instead of
-url-* funcs
-
-* dist.Makefile: Removed extraneous w3-sysdp.el from SOURCES macro
-
-Wed Jun 21 20:04:44 1995  William Perry  <address@hidden>
-
-* w3-xemac.el: Few changes for 19.12
-
-* w3-draw.el: New version of w3-pause for XEmacs
-
-* w3-draw.el: Fixed blinking
-
-Tue Jun 20 14:10:49 1995  William Perry  <address@hidden>
-
-* w3-parse.el: <listing> now works.
-
-* w3-draw.el: Fixed <secret> handlig ng when not in XEmacs 19.12
-
-Mon Jun 19 15:12:18 1995  William Perry  <address@hidden>
-
-
-* w3-sysdp.el: Fixed problem in device-class with arg not being optional
-
-Sun Jun 18 21:41:36 1995  William Perry  <address@hidden>
-
-* w3-sysdp.el:
-Fixed bug in emacs-19 version of device-class on non-color displays
-
-* w3-sysdp.el: Rewrote device-class
-Added device-pixel-width and device-pixel-height
-
-* w3-xemac.el: New function w3-ensure-toolbar-visible
-
-
-* w3-draw.el: Moved valid-color-name-p definition over into w3-sysdp.el
-
-Sat Jun 17 17:50:44 1995  William Perry  <address@hidden>
-
-* docomp.el: More toolbar stuff
-
-* docomp.el: Removed lots of stuff that isn't necessary now that we are using
-w3-sysdp.el all over the place
-
-* w3-sysdp.el: Few more bugfixes
-
-
-* w3-sysdp.el: Fixes for nextstep
-
-* w3-sysdp.el:
-Fixed definition of device-class so that it won't choke and die under
-NeXTstep.
-
-* w3-draw.el:
-If w3-delimit-links is non-nil, put delimiters around submit/reset
-form areas.
-
-* w3-xemac.el, w3-e19.el:
-New options in menu to control honoring of refresh headers and color requests
-
-Fri Jun 16 21:52:39 1995  William Perry  <address@hidden>
-
-* w3-draw.el: Now honors multiple <title></title> crap like netscape.
-
-* w3.el: Fixed handling of refresh header if url-honor-refresh-requests == 'ask
-
-* w3.el: Ask the user before submitting a bug.
-
-* w3-sysdp.el: Removed scrollbar functions.
-
-Thu Jun 15 23:42:26 1995  William Perry  <address@hidden>
-
-* dist.Makefile: Always use @echo so it doesn't show up twice.
-
-
-* w3-xemac.el: More <link>-controlled toolbar stuff
-
-
-* w3-xemac.el: Don't call device-type with an argument.
-
-* w3-beta.el, w3-draw.el:
-Fixed a few problems with compatibility with FSF19 in X mode
-
-
-* dist.Makefile: Added urlauth to makefile
-
-* w3-epoch.el: Fixed problem in w3-map-links
-
-
-Wed Jun 14 23:38:46 1995  William Perry  <address@hidden>
-
-
-* w3.el: Removed a few things that are now in w3-sysdp.el
-
-* w3-sysdp.el:
-Changed sysdep-defalias to make sure that 'def' is fboundp if its a
-symbol, so that bogus defs of make-frame, etc, are not created in
-emacs18
-
-* w3.el: Few things to get a nice clean compile using w3-sysdp
-
-* w3-xemac.el:
-Removed loading of w3-sysdp, since it is loaded for everything now.
-
-* w3-sysdp.el: More functions added
-
-* w3-print.el, w3-epoch.el, w3-emacs.el, w3-e19.el, w3-draw.el:
-Few things to get a nice clean compile using w3-sysdp
-
-* docomp.el: Now loads w3-sysdp during compilation
-
-* w3-xemac.el: Stubs for <LINK> specific toolbar stuff.
-
-* w3-parse.el: Rewrote w3-can-safely-ignore as a macro
-
-Tue Jun 13 15:38:32 1995  William Perry  <address@hidden>
-
-
-* w3-xemac.el:
-Moved some stuff over into w3-sysdp.el for a truly clean compile.
-Fixed the new 'privacy' menu item
-
-* w3.el: Added back in text/plain encoder for forms
-
-* w3-xemac.el:
-make sure that when we add our options/help menus to the menubar, we
-do it to the global menubar, not just the current one, which could be
-anything, but usually GNUS or VM if not the default.
-
-* w3-xemac.el: Fixed w3-x-poup-menu bug.
-
-* w3-xemac.el:
-Fixed problem skip was having at http://www.calendars.com/concerts/
-
-Mon Jun 12 20:32:04 1995  William Perry  <address@hidden>
-
-* w3-wemac.el: Added back in crufty old menu definitions for use in WinEmacs
-
-* w3-xemac.el: New 'save options' item
-
-
-* descrip.mms, dist.Makefile, w3.el:
-Added back in the requiring of w3-wemac - just too much different
-stuff between it and even 19.10.
-
-* w3-xemac.el:
-Check for what type of menu we are displaying in w3-sensitize menu, or
-some weird stuff could happen (like adding 'go' and 'view' menus to
-the 'Emacs' type menubar.
-
-* w3-xemac.el: Reordered some functions to avoid warnings in byte compiler
-
-* w3-xemac.el:
-Added a button ala VM to swap between the global menubar and the W3 one.
-
-* w3.txi: Added stub for VMS section of documentation
-
-* w3.el: Various patches from Richard Levitte <address@hidden>.
-(w3-do-setup): expand VMS Mosaic files correctly.
-
-* docomp.el: Various patches from Richard Levitte <address@hidden>.
-start with inserting the current directory into load-path.
-(hack-dot-emacs): remove the two first items from
-command-line-args-left.  Otherwise, Emacs tries to work on them when
-hack-dot-emacs is done.
-
-* descrip.mms:
-Added the VMS build file from Richard Levitte <address@hidden>
-
-* descrip.mms: Initial revision
-
-Sun Jun 11 22:50:50 1995  William Perry  <address@hidden>
-
-
-* w3.txi:
-Added in section on disk caching, filled out the Digest authentication
-mechanism and SSL sections as well.  Only things left to do are the
-sections on non-unix platforms.
-
-* w3-xemac.el:
-Deal gracefully with markers passed into w3-add-zone (for WinEmacs)
-
-
-* w3-draw.el:
-Fixed stupid FSF 19 lossage where x-color-defined-p signals an error
-in a tty instead of failing gracefully.  Robustness?  Whassat?
-
-
-* w3-draw.el:
-Fixed problem in w3-handle-paragraph where re-search-forward could signal an 
error because 'NOERROR' was not t.
-
-* w3.el: Fixed w3-find-this-file
-
-Sat Jun 10 23:19:30 1995  William Perry  <address@hidden>
-
-* w3.el: Fixed stupid screwup
-
-* w3.el: Run the value of a submit button through url-hexify-string
-
-* w3-vars.el, w3-draw.el:
-Renamed w3-user-colors-take-preference -> w3-user-colors-take-precedence
-
-* w3-draw.el, w3.el: IMAGE inputs in forms now work (sortof)
-
-Fri Jun  9 15:01:05 1995  William Perry  <address@hidden>
-
-* w3-draw.el: Fixed problem with unterminated <a> refs.
-
-Thu Jun  8 14:44:35 1995  William Perry  <address@hidden>
-
-
-* w3-draw.el: Fixed plaintext handling.
-
-Mon Jun  5 15:12:17 1995  William Perry  <address@hidden>
-
-* w3-e19.el: Added color printing toggle to emacs19 menus
-
-* w3-xemac.el: Added color printing toggle to xemacs menus
-
-* w3.el: After reading a form entry area, make sure we mark the buffer as not
-modified.
-
-
-* w3-draw.el:
-fixed w3-handle-paragraph to handle weird circumstances where it could
-try to make-string with a negative first arg.
-
-* w3.el: Patches from address@hidden for his local file handling
-stuff
-
-Sun Jun  4 20:58:40 1995  William Perry  <address@hidden>
-
-
-Sat Jun  3 17:07:32 1995  William Perry  <address@hidden>
-
-* dist.Makefile:
-Patch from Skip Montanaro <address@hidden> to make sure we delete
-old copies of the .el and info files, since they are read only by
-default, and this would cause the installation to fail.
-
-* w3-xemac.el:
-Make sure we don't try to set the X selection from a tty only xemacs -
-it signals a wrong-device-type error.
-
-
-Fri Jun  2 13:58:01 1995  William Perry  <address@hidden>
-
-* w3-beta.el:
-Removed dependence on url-grok-url from the netscape cache importing
-
-Tue May 30 16:29:16 1995  William Perry  <address@hidden>
-
-* w3-draw.el:
-Now recognizes <link rel="style"> as well as <link rel="stylesheet">
-
-* w3.el: Fixed bug in w3-hotlist-delete that would choke and die on items named
-'hotlist' - fixed the regular expression it was working with.
-
-
-* w3.el: Few fixes
-
-
-* w3-draw.el: Nuke all faces when leaving a <pre> segment
-
-
-Mon May 29 18:24:04 1995  William Perry  <address@hidden>
-
-
-* w3-style.el, w3-print.el, w3-parse.el, w3-e19.el, w3-beta.el, w3-about.el, 
w3.el, w3-draw.el:
-Removed lots of function documentation and left it as comments.  These
-functions are not meant to be seen by everyone, and this saves space
-in the .elc files.
-
-* w3.el: Made w3-save-binary-file default to a sane filename
-
-
-* w3-10646.el:
-Removed bogus copyright, added back in the real one from Erik Naggum.
-gotta hate cut & paste
-
-* w3-xemac.el:
-Make sure the links menu is broken up when using the filter method in 19.12
-
-
-* w3.el, w3-xemac.el, w3-epoch.el, w3-draw.el:
-Now deals with the removal of url-parse-relative-link
-
-Sun May 28 22:28:55 1995  William Perry  <address@hidden>
-
-
-* w3.el, w3-about.el: Use the new url-register-protocol interface
-
-* w3-vars.el: Fixed w3-modeline-format to look nicer
-
-
-Sat May 27 22:00:15 1995  William Perry  <address@hidden>
-
-* dist.Makefile: Removed w3-wemac from the distribution and makefile rules
-
-* w3.el: No longer require w3-wemac if running under windows - the standard
-w3-xemac package should handle it now.
-
-* w3-vars.el, w3.el:
-New variable w3-modeline-format that controls the modeline look when
-in w3-mode buffers.
-
-* w3-vars.el: Removed crufty old menu definitions
-
-* w3-draw.el:
-The new color-frobbing stuff works in older versions of lemacs/xemacs
-
-* w3-xemac.el: First pass at a merger of w3-wemac.el and w3-xemac.el
-
-
-* w3-xemac.el:
-Add the options and help menus to the main menubar in all versions of
-xemacs
-
-Fri May 26 23:42:29 1995  William Perry  <address@hidden>
-
-* w3-xemac.el: More patches from chuck for the next great xemacs beta
-
-* w3-style.el, w3-draw.el:
-Avoid calling of set-face-xxx functions directly, use 'apply' to avoid
-Emacs-19 lossage of defsubsts that makes .elc files non-portable to
-XEmacs.
-
-* w3-draw.el: Honor the <base> tag stuff when doing forms.
-
-* w3-vars.el: Few fixes for the latest beta of XEmacs 19.12
-
-Thu May 25 19:44:48 1995  William Perry  <address@hidden>
-
-* w3-draw.el:
-The body color handling stuff now deals gracefully with bad colors
-
-* w3.el: Few fixes for VRML
-
-* w3-style.el: Can now compile under Emacs 18 again.
-
-Wed May 24 13:47:17 1995  William Perry  <address@hidden>
-
-* w3-e19.el: Rearranged some of the menus to be like the XEmacs counterparts
-
-Tue May 23 14:30:05 1995  William Perry  <address@hidden>
-
-* w3-xemac.el: More renamings for XEmacs 19.12
-
-Mon May 22 12:20:36 1995  William Perry  <address@hidden>
-
-* w3-xemac.el, w3-e19.el:
-Renamed url-automatic-cacheing -> url-automatic-caching
-
-* w3-xemac.el: Removed call to bogus exit-emacs func.
-
-Wed May 17 16:20:46 1995  William Perry  <address@hidden>
-
-* w3-xemac.el: Support the newer way of doing toolbars in XEmacs 19.12
-
-* w3-xemac.el: Patch from chuck for latest XEmacs 19.12 toolbar stuff
-
-
-Tue May 16 20:18:40 1995  William Perry  <address@hidden>
-
-* w3.el: VRML stuff
-
-
-Mon May 15 03:38:36 1995  William Perry  <address@hidden>
-
-* w3.el: If no last-modified, don't try to refetch the head info if not in file
-or ftp mode.
-
-
-* w3-style.el:
-New w3-spatial-to-canonical function that can convert something like
-1in or 12pt to a pixel-based representation.
-
-* w3-xemac.el: Changed menus when under Lemacs 19.10 look just like 19.12
-
-Sun May 14 17:37:35 1995  William Perry  <address@hidden>
-
-* w3-draw.el:
-Fixed problem with <p align="xxx"> .... <p> not properly terminating
-the alignment
-
-
-* w3-about.el: hehe
-
-* w3.el: Better cleanup of the temp directory.
-
-
-Sat May 13 21:03:14 1995  William Perry  <address@hidden>
-
-
-* w3-draw.el: Finished up cookie interface
-
-* w3-draw.el:
-Stub for interface to the cookie() function of emacs from within an HTML
-document.
-
-* w3-about.el: New stylesheet for about: pages
-
-* w3.el: Make w3-reload-document not recenter the window
-
-* w3-draw.el: Fixed isindex handling for prompt=xxx and action=xxx
-
-* w3-draw.el:
-Make sure the emphasis on quotes (<q></q>) includes _both_ quote chars.
-
-* w3-e19.el:
-Don't blindly set the mouse-face on anything with 'w3 in the property
-list.  would cause things like <a name=xxx> to highlight.
-
-
-* w3-xemac.el: XEmacs 19.12 tweaks
-
-* w3-about.el:
-New authors page that doesn't crap out in XEmacs 19.11 / Lemacs 19.10
-
-* w3-xemac.el: Few more tweaks to the menus
-
-* docomp.el: More garbage for a clean compile
-
-* w3-xemac.el, w3-draw.el, w3.el: Few fixes for the latest beta of XEmacs 19.12
-
-Thu May 11 16:32:17 1995  William Perry  <address@hidden>
-
-
-* w3-xemac.el: Added buffers menu to w3 menu
-
-Wed May 10 22:19:25 1995  William Perry  <address@hidden>
-
-* w3-xemac.el:
-Don't set up the toolbar if w3-toolbar-orientation is not 'top 'left
-'right or 'bottom.  Don't set the menubar for the w3 buffer if there
-is no default one.  Copy the options menu into the main options menu
-if in XEmacs 19.12
-
-* w3-xemac.el: Fixed images in 19.12
-
-* w3.txi: Lots of changes
-
-* w3.el: Added some stuff from the texinfo docs
-
-Tue May  9 16:43:46 1995  William Perry  <address@hidden>
-
-
-Mon May  8 21:45:28 1995  William Perry  <address@hidden>
-
-* w3-emacs.el:
-Fix from Michael Welsh Duggan <address@hidden> for w3-back-link
-in emacs 18
-
-* dist.Makefile: Added ssl.el file
-
-* w3-draw.el:
-Fixed problem with <br> in indented areas inserting the indentation twice
-
-* docomp.el: Turn off new emacs19 dynamic loading gunk
-
-Sun May  7 23:33:18 1995  William Perry  <address@hidden>
-
-
-* w3-style.el: Few fixed for XEmacs 19.12
-
-* w3-style.el: More style hackings
-
-* w3-parse.el:
-Gracefully handles stuff like '< ' in a document - this should be
-shown.  Screw document authors that do stuff like '< a' - its wrong.
-
-* w3.el: Make w3-mark-link-as-followed be a no-op if w3-emacs19-hack-faces-p is
-non-nil, otherwise weird things happen with too many spaces inserted
-in the buffer, and there was really no difference between the two
-renderings in that nasty mode anyway.
-
-* w3-xemac.el: Fixed typo in spiffy new menus for xemacs 19.12
-
-* w3.el: Let w3-notify-when-ready deal gracefully with a null argument
-
-* w3-draw.el: Make </pre> without matching <pre> act like <p>
-
-* w3-draw.el: Added the <flame> tag
-
-* RelNotes2.2: Initial revision
-
-* w3-draw.el: Only set w3-last-tag if non-text
-
-* w3-draw.el: Reverted to old <dt> handling - looks better.
-
-* w3-about.el: Removed a few dependencies on the old 'b64-xxxx' functions
-
-* w3-style.el:
-New stylesheet parser - can handle the new grammar agreed upon by
-H&kon and I.
-
-* dist.Makefile: Added new base64 package
-
-Sat May  6 21:46:21 1995  William Perry  <address@hidden>
-
-
-* w3-xemac.el: Now puts help-echo property on images that are links
-
-* w3.el: Now includes a mime-version header for mailed documents
-
-
-* w3-emacs.el: New version of w3-forward-link and w3-back-link that skip over
-'w3-graphic zones.
-
-* w3-draw.el: <tab id=xxx> and <tab to=xxx> work now
-
-* w3.el: Fixed problem with command-line-args-left being unbound when not in
-startup phase
-
-
-* w3-draw.el: New way to handle secrets fixed in old versions of emacs.
-Default background pixmap to nil
-
-* w3-about.el: New text for easter egg tag #1
-
-* w3-xemac.el: Image-type selector menu is back.
-
-
-* w3-xemac.el:
-Changed mouse activation for image links to button2 to be consistent
-
-* w3.txi: Few spelling changes
-
-Fri May  5 23:05:39 1995  William Perry  <address@hidden>
-
-* w3.el: Can now do:
-emacs -f w3-fetch [url]
-
-* w3.el: Can now have 'PUT' as the method for a form.
-
-* w3-xemac.el: Return the bitmap
-
-* w3-draw.el: Now handles the 'background' bitmap tag of netscape
-
-* w3-vars.el, w3-draw.el: Few changes to make the 'secret' tag work better.
-
-
-* w3-xemac.el: Reordering of defvars to make sure we can get a clean compile
-
-* w3-xemac.el: Use glyph-width if its available.
-
-
-* w3-draw.el: Netscape body tags would choke emacs18
-
-* w3.el: Do w3-setup in w3-batch-fetch
-
-
-* w3.el:
-w3-save-as can now take an optional argument to tell it what to save as
-
-Thu May  4 23:58:53 1995  William Perry  <address@hidden>
-
-* w3-xemac.el: Cool new menus for XEmacs
-
-* w3-draw.el: Fixed bug in handling of multiple <dt> elements before a <dd>
-
-Mon May  1 20:10:36 1995  William Perry  <address@hidden>
-
-* w3-e19.el, w3-vars.el: Use the new about: pages
-
-* w3-draw.el: Fixed <link rel="stylesheet" href="xxxx"> handling
-
-* w3-style.el: fixed style handling from a URL/href
-
-Sun Apr 30 20:57:17 1995  William Perry  <address@hidden>
-
-
-* w3-xemac.el: New glyph interface for XEmacs 19.12
-
-* w3-about.el: More about: docs.
-
-* w3-epoch.el, w3-draw.el: More fixes for epoch
-
-* w3.el: Fixed links of just images in XEmacs
-
-Sat Apr 29 22:25:33 1995  William Perry  <address@hidden>
-
-* docomp.el, w3-epoch.el, w3-draw.el: More epoch fixes
-
-* w3-draw.el: The netscape background/foreground body colors work in epoch now.
-
-* w3-epoch.el: All the face stuff now works in epoch again.
-
-* w3-parse.el: Use w3-10646 if available
-
-
-* w3-10646.el: New keywords
-
-* w3-10646.el: Initial revision
-
-Fri Apr 28 22:52:46 1995  William Perry  <address@hidden>
-
-* w3-draw.el: Implemented teh 'add.before' and 'add.after' stylesheet mechanism
-
-* w3.el: Fixed case where return would pop up an x-menu in emacs19
-
-* w3-style.el: Fixed problem with leading whitespace
-
-* w3.el: Added about URL handling
-
-* w3-draw.el: Fix to jnetscape body tags
-
-* w3-about.el: Initial revision
-
-
-Thu Apr 27 01:40:39 1995  William Perry  <address@hidden>
-
-* w3-draw.el: Few updates for XEmacs 19.12
-
-Wed Apr 26 17:59:03 1995  William Perry  <address@hidden>
-
-
-Tue Apr 25 22:15:55 1995  William Perry  <address@hidden>
-
-* w3.el: w3-in-assoc now silently skips nonstrings in the car
-
-* w3-draw.el: Can now use regexps in stylesheets (h[1-6], etc)
-
-* w3-style.el: Added DSSSL-lite parser
-
-
-* w3-draw.el: Now handle <link rel=stylesheet href=xxxx>
-
-* w3-style.el: Modify the accept headers when retrieving a URL for a stylesheet
-
-Mon Apr 24 07:52:37 1995  William Perry  <address@hidden>
-
-* w3-print.el: Wrap w3-convert-html-to-latex in case-fold-search == t
-
-* w3-vars.el: Added w3-node-style and w3-visited-node-style to the persistent
-variables list - this is necessary for letting
-w3-mark-link-as-followed to work with the netscape body tags.
-
-* w3-vars.el: Make w3-node-style and w3-visited-node-style buffer-local, or the
-netscape tags on <body> screw up subsequent documents!
-
-* w3-parse.el: Removed a condition-case in w3-nuke-entities-in-region
-
-* w3-xemac.el: Few more toolbar fixes.
-Fixed autoload for Info-goto-node
-
-Sun Apr 23 22:01:08 1995  William Perry  <address@hidden>
-
-* w3.el: Fixed w3-backward-in-history
-
-* w3-style.el:
-New function w3-create-x-font to create a font based on the family,
-style, and size.
-
-* w3-xemac.el:
-New variable w3-toolbar-orientation to control what side of the frame
-the toolbar appears on.
-
-* w3-draw.el: New way of getting info from stylesheets to synch up with the new
-stuff from H&kon.
-
-* w3-xemac.el: Added button for hotlists in the toolbar
-
-* w3-xemac.el: Various and sundry toolbar stuff.
-
-* dist.Makefile: Now makes the install directory if it doesn't exist.
-
-* w3-draw.el: <blink> now works on tty's in XEmacs.
-Scaling of fonts in a tty-only XEmacs works also.
-
-Sat Apr 22 13:42:25 1995  William Perry  <address@hidden>
-
-* w3-print.el, w3.el, w3.txi: Changed references to info.cern.ch to w3.org
-
-
-Fri Apr 21 19:34:47 1995  William Perry  <address@hidden>
-
-* w3.el: Removed a few old variables
-
-* w3-draw.el:
-Don't set attributes on default face if they are nil - bad things man.
-
-* w3-epoch.el, w3-e19.el, w3-wemac.el: Removed a few old variables
-
-* w3-xemac.el:
-Finally fixed problem in lemacs/xemacs form entry where every once in
-a while it would choke with a 'wrong-type-argument stringp (wierd
-list)' error.
-
-* w3-draw.el: Fixed problem with the <body> attributes when in Emacs 19
-
-* w3-vars.el, w3-draw.el:
-New variable w3-user-colors-take-preference to control whether the
-netscape tags on <body> are honored or not.
-
-* w3-xemac.el: Provide a definition of add-submenu for older XEmacsen
-
-* w3.el, w3-vars.el: Removed a few old variables
-
-* w3-draw.el: Now honor the netscape attributes on <body>
-
-* w3-vars.el: Added keybinding for w3-mail-document-author
-
-* w3-beta.el: Reimplemented the w3-show-headers stuff.
-
-Thu Apr 20 20:23:06 1995  William Perry  <address@hidden>
-
-* w3.el: w3-document-information now looks much prettier
-
-* w3.el: Fixed w3-mail-to-author and Renamed it to w3-mail-document-author to
-avoid confusion about what 'author' we are mailing to - the documents,
-or Emacs-w3's
-
-
-* w3.el: Revamped the forward and backward history handling
-
-* w3-draw.el: Got <p nowrap> working
-
-Wed Apr 19 17:01:58 1995  William Perry  <address@hidden>
-
-
-* clean-cache: Initial revision
-
-* w3.el: Revamped how <link> is handled.  Added printing of <link> data in
-w3-document-information
-
-* w3-draw.el:
-Revamped how <link> is handled.  Fixed a bug in meta handling - was
-not downcasing the http-equiv, so it could not always find an old
-value in url-current-mime-headers to replace.
-
-* w3-vars.el: changed w3-list-chars-assoc to use symbols instead of strings
-
-* w3.txi: Documented change in w3-list-chars-assoc
-
-* w3-draw.el: Converting w3-list-chars-assoc won't die if you do it twice
-
-* w3-sysdp.el: Updated to latest version from XEmacs
-
-* w3-sysdp.el: Removed keywords
-
-Sun Apr 16 22:41:11 1995  William Perry  <address@hidden>
-
-* w3-draw.el: Fixed problem in w3-handle-emphasis-end
-
-* w3-draw.el: Added code to fixup spaces are . and !
-
-* w3-beta.el: Now parses out the link commands in the mime headers
-
-* w3.el: Issue an error if they chose a link type (rel or rev) that the
-document did not contain when in w3-use-links
-
-* w3-style.el:
-Make the buffer not modified before killing it when parsing a style sheet
-
-* w3.el: Fixed parsing of default stylesheet
-
-* w3.el: Fix for form field reversals in submissions
-
-Sat Apr 15 23:33:36 1995  William Perry  <address@hidden>
-
-* w3-beta.el: Can now import netscape bookmark files
-
-* w3-draw.el:
-Now handles <q></q> differently - inserts "" around the material, and
-you can specify the start and end quotes in stylesheets with:
-q: startquote=``
-q: endquote=''
-
-* w3-draw.el:
-Was not expanding relative URLs before checking whether they had been
-visited with w3-delimit-links non-nil.  This would lead to weird
-looking links like [[something}} - not very pretty.
-
-* w3-vars.el, w3.el: Now reads in a default stylesheet for the user if
-w3-default-stylesheet is non-nil.  This can be a URL.
-
-
-* w3.el: Made w3-pass-to-viewer be more like man when in asynchronous mode.
-
-* w3-vars.el: New variable w3-notify
-
-* w3-parse.el:
-Fixed problem in pre/xmp handling where it would choke if there were
-extra endtags and swallow-newlines went negative.
-
-Fri Apr 14 23:52:51 1995  William Perry  <address@hidden>
-
-* w3.el, w3-xemac.el, w3-wemac.el, w3-vars.el, w3-style.el, w3-srch.el, 
w3-print.el, w3-parse.el, w3-next.el, w3-mule.el, w3-mac.el, w3-epoch.el, 
w3-emacs.el, w3-e19.el, w3-draw.el, w3-beta.el:
-Changed keywords
-
-* w3-vars.el: removed old variable w3-global-history-completion-list
-
-
-* w3-draw.el: No inherent maxlength on <textarea> fields
-
-* w3.el: Added alias for w3-popup-info
-
-* w3.el: Always goto (point-min) in w3-document-information and w3-popup-info
-
-* w3-vars.el: Added keybindings for w3-document-information and w3-popup-info
-
-Thu Apr 13 21:12:33 1995  William Perry  <address@hidden>
-
-
-* w3-style.el: w3-blend-colors now works in XEmacs 19.12
-
-* w3-style.el: Added function w3-blend-colors (FSF Emacs-19 specific)
-
-* w3-parse.el:
-Make sure to clear the minibuffer when done parsing - otherwise it
-could leave a 'Parsed x of y (zz%)' message, which can make people
-think it is hung.
-
-* w3-draw.el, w3.el: Fixed <link> handling
-
-Wed Apr 12 03:24:02 1995  William Perry  <address@hidden>
-
-* w3-draw.el:
-Fixed a few problems with stylesheets losing the alignment info from
-headers too soon.
-
-* w3-draw.el:
-<p></p>, <div></div>, and <note></note> can all specify the face to
-use for an element via the 'class' attribute.
-
-* w3-draw.el: Fixed a bug in using the 'class' attribute to add faces to text.
-Would forget what tag would end the current face, so faces went on
-forever.  Ugh!
-
-* w3-draw.el: The 'class' attribute can now be used to add faces to text.
-
-* w3-style.el: Changed how style sheet faces are regenerated.  Now stores the
-face-name as an item in w3-current-stylehseet (assoc "face" ...) to
-get it.
-
-Tue Apr 11 23:11:58 1995  William Perry  <address@hidden>
-
-* w3-sysdp.el: Added some more stuff from chuck
-
-* w3-draw.el: Fixed popping the alignment from an address tag if
-w3-right-justify-address is non-nil
-
-* w3-draw.el: Redid w3-get-default-style-info macro
-
-
-Mon Apr 10 22:46:14 1995  William Perry  <address@hidden>
-
-
-* w3-draw.el: Added thge marca sound for <hype> tag.
-
-* w3-draw.el: Now honors the 'class' attribute on any style-sheetable tag
-
-* w3-style.el:
-Few tweaks to how the style sheet is stored, to make using the 'class'
-attribute on tags quicker (stores an intern'd symbol and a string in
-the list)
-
-* w3.el: Fixed problem where inlined images on the local disk could get trashed
-because buffer-file-name was not nil in the buffer.
-
-
-* w3-draw.el: Fixed <font size=-x> handling
-
-* w3-parse.el: Call sera-to-fidel-marker if in mule.
-
-Sun Apr  9 18:37:24 1995  William Perry  <address@hidden>
-
-* w3-draw.el: Fixed <div> </div> handling
-
-* w3-draw.el:
-Use copy-tree on w3-use-stylesheet so we don't side-effect the original list
-
-
-* w3-xemac.el: Added in the code to create the toolbar.
-
-* w3-beta.el: Fixed the importing of netscape cache files
-
-
-* w3-draw.el:
-Changed w3-push-alignment to be a little smarter - if align is null,
-don't bother pushing it on the stack.
-
-* w3-parse.el:
-Fixed a spacing problem that would show up when doing progressive
-rendering but not a w3-refresh-buffer.  Ugh.
-
-
-Sat Apr  8 23:34:06 1995  William Perry  <address@hidden>
-
-* w3.el: Made w3-generate-error check the contents of the ' *url-error*' buffer
-and use it as part of the error message.
-
-* w3-draw.el:
-Got rid of bad use of concat in w3-handle-font, and better handling of
-the font scaling.
-
-Fri Apr  7 22:59:07 1995  William Perry  <address@hidden>
-
-
-* w3-e19.el: Remove the files menu in emacs 19.29
-
-* w3.el: Fixed problem in mule with w3-save-binary-file
-
-* dist.Makefile: Added -no-site-file to BATCHFLAGS
-
-* dist.Makefile: More renaming for DOS lossage
-
-Wed Apr  5 19:59:33 1995  William Perry  <address@hidden>
-
-* w3.el: Fixed w3-fetch for working in buffers with no default url... d'ohhh
-
-
-* w3-draw.el:
-Fixed screwup in w3-handle-p that would push an alignment onto the
-stack twice for headers
-
-* w3.el: w3-fetch now has a 'silent' default - it doesn't insert the default as
-the default option - it checks if the user presses return, and uses
-the default if they did.
-
-* w3-draw.el: Now uses a stack of alignments, and honors the <div></div> tag.
-
-Tue Apr  4 17:29:32 1995  William Perry  <address@hidden>
-
-* dist.Makefile: Makefile now works in Windows and NT
-
-* w3.el: Removed anonymous lambda from w3-hotlist-apropos
-
-* w3.txi: Fixed typo in texinfo node
-
-Mon Apr  3 23:03:19 1995  William Perry  <address@hidden>
-
-
-* hype.au: Initial revision
-
-Sun Apr  2 20:17:02 1995  William Perry  <address@hidden>
-
-* w3-draw.el: Fixed <meta> handling
-
-* w3.el: Fixed w3-popup-info
-
-
-* w3.txi: Basic documentation of the style sheet mechanism
-
-* w3-draw.el:
-Fixed the align=indent problem where first line of the indented region
-was not indented.
-
-* dist.Makefile: Renamed w3.texinfo to w3.txi, for 8.3 losingness
-
-
-* w3.txi: Removed all the 'WORK' areas except for the non-unix systems nodes.
-Put out a call for assistance to w3-beta and gnu-emacs-help for these
-areas.
-
-Tue Mar 28 23:36:30 1995  William Perry  <address@hidden>
-
-* w3.el: Fixed a few more concat'ing integer problems
-
-* w3-draw.el: Can now specify OL styles in stylesheets.
-
-
-* w3.el:
-Added w3-hotlist-apropos function from address@hidden (Michelangelo Grigni)
-
-* w3-xemac.el, w3-e19.el: Fixed concat'ing of ints
-
-Mon Mar 27 22:05:19 1995  William Perry  <address@hidden>
-
-* w3.el: Now requires w3-print
-
-* w3-draw.el: Only mangle headers if w3-delimit-emphasis is non-nil
-
-
-Sun Mar 26 19:50:16 1995  William Perry  <address@hidden>
-
-
-* dist.Makefile: Removed w3-main from the distribution - renamed to w3
-
-* w3.el: Moved w3-upcase-region into w3-draw.
-Now requires w3-style and all the new dipslay engine chunks.
-
-* w3-draw.el:
-Now initializes the current stylesheet to the user stylesheet before
-any drawing starts.
-
-* w3-vars.el:
-Made w3-header-chars-assoc work with the new display engine (mostly),
-and added a few more things to the state variables.
-
-* w3-style.el:
-Can now do font scaling in style sheets.  smarter about font.type.
-Only thing left is font.family
-
-
-* docomp.el: More var decls.
-
-* w3-wemac.el: Fixed w3-mouse-handler for windows
-
-* w3-draw.el:
-Make all face storage variables buffer-local for style-sheet stuff.
-
-* w3-style.el: Now handles fonts/colors in style sheets - whooo hooo!
-
-Sat Mar 25 23:38:49 1995  William Perry  <address@hidden>
-
-* w3-vars.el: Renamed w3-state-garbage-variable
-
-* w3-draw.el:
-Now uses style sheets to find alignment and width for the various tags
-before falling back on its defaults.
-
-
-* w3-parse.el:
-Fix for stupid people who don't use &amp; instead of & in the middle
-of a doc.
-
-
-* w3-xemac.el: Added w3-center-spaces and w3-right-spaces for
-centering/right-justifying pixmaps
-
-* w3-xemac.el, w3-sysdp.el:
-A few new functions for the latest and greatest beta
-
-* w3-vars.el: Changed a few of the menu names
-
-* w3-style.el: Now actually parses and stores the style sheet information
-
-* w3-draw.el: Handle case where tag is a list
-
-Fri Mar 24 14:36:09 1995  William Perry  <address@hidden>
-
-* w3-xemac.el: Now uses device-type for XEmacs 19.12
-
-Wed Mar 22 21:14:30 1995  William Perry  <address@hidden>
-
-* w3-draw.el: Fixed a few spacing problems
-
-* w3-e19.el:
-Fixed w3-forward-link for links that were right up on top of each other.
-
-* w3-parse.el:
-Fixed screwup with unterminated quoted chars in attribute/value pairs
-
-
-* dist.Makefile: Removed w3-old
-
-* w3-draw.el: Fixed stupid typo when checking for faces.  d'ohhhh!
-
-Mon Mar 20 23:23:34 1995  William Perry  <address@hidden>
-
-* w3-xemac.el: Fixed problem with w3-extend-zone and detached extents
-
-* w3-draw.el: <option selected> now works again
-
-
-* w3-xemac.el:
-Set the help-echo property when showing form elements if possible.
-
-* w3-vars.el, w3-beta.el, w3-draw.el:
-Redid how state is kept - now uses a vector, which should be faster,
-and is able to be buffer-local.
-
-* w3-parse.el:
-w3-nuke-entities-in-region should no longer choke in odd circumstances
-with just '&' in a document.
-
-* dist.Makefile: Removed w3-forms - it has been assimilated
-
-* dist.Makefile: Added a few new dependencies
-
-
-* w3-draw.el: Added message when scaling fonts, just to keep the user informed
-
-* w3-wemac.el, w3-xemac.el, w3-e19.el:
-When moving the mouse over a submit button in a form, shows where the
-form will be submitted.
-
-* w3-draw.el: Fixed emacs-18 lossage in skip-chars-backward
-
-* w3-draw.el: Another fix to make sure <li><p> construct doesn't look like crap
-
-* w3-draw.el:
-Split the handling of the refresh header out into its own function so
-that it can be used from the drawing/parsing code for META commands
-
-Sun Mar 19 02:12:24 1995  William Perry  <address@hidden>
-
-* w3-parse.el: Fixed problem with window focus.
-
-* w3.el: Few fixes for passing to viewers
-
-* w3-parse.el: Set fill-column in w3-preparse-document
-
-Sat Mar 18 23:47:37 1995  William Perry  <address@hidden>
-
-* w3-parse.el: If parsing, do incremental display as well
-
-* w3-draw.el: Removed ugly hacks from w3-pause for emacs19 - just too ugly.
-
-
-* dist.Makefile, docomp.el:
-Take LISPDIR on the command line for hack-emacs-file
-
-* dist.Makefile: Removed EMACSTEMPLATE
-
-* dist.Makefile, docomp.el: hack-dot-emacs now takes a command line argument
-
-* w3-draw.el: links in tty mode won't show [[/{{
-
-* w3-vars.el: All graphical entities now have textual alternativs
-
-* w3-draw.el: Added graphic entities back in.
-
-* w3-draw.el: Able to embed a few more types
-
-* w3-parse.el, w3-draw.el: Added the base functionality for the embed tag
-
-Fri Mar 17 15:44:16 1995  William Perry  <address@hidden>
-
-* dist.Makefile: Removed some old targets, added new ones for new files
-
-* w3-style.el: Initial revision
-
-
-* w3-parse.el: Special handling for the <style> argument.
-
-* w3-vars.el, w3-draw.el: Moved variables into w3-vars.el
-
-* w3-parse.el, w3-draw.el: Basis for the <style></style> notation done
-
-Thu Mar 16 19:44:12 1995  William Perry  <address@hidden>
-
-* w3-draw.el:
-Fixed scaling of fonts, now handles cryptopt blocks for secure-http
-
-
-* w3-draw.el:
-Now no whitespace between link delimiters and the actual text of the link
-
-
-* dist.Makefile: Added md5 target
-
-* w3-parse.el, w3-draw.el, w3-beta.el:
-Now draws each signel item as it is parsed..
-
-Wed Mar 15 23:27:55 1995  William Perry  <address@hidden>
-
-
-* w3.el: Fixed a problem in w3-pass-to-viewer
-
-* w3-draw.el:
-Fixed problem with headers being hosed because of new way to do faces.
-
-* w3-draw.el, w3-xemac.el: Imagemaps work now
-
-Tue Mar 14 16:04:04 1995  William Perry  <address@hidden>
-
-
-* w3-draw.el: A few general performance increases
-
-Mon Mar 13 05:51:41 1995  William Perry  <address@hidden>
-
-* w3-beta.el, w3-draw.el, w3-e19.el, w3-mac.el, w3-next.el, w3-old.el, 
w3-vars.el, w3-xemac.el:
-Lots and lots of doc fixes to meet FSF/GNU guidelines.
-
-* w3-parse.el, w3.el, w3-e19.el, w3-draw.el: Few doc string fixes
-
-
-* w3-vars.el, w3.el:
-Now guess the value of w3-color-use-reducing based on values of
-x-display-visual-class and x-display-planes.
-
-* w3-draw.el:
-Fixed problem with indenting being lost in a list item after a sublist
-terminates.
-
-* w3-draw.el: Redid some of the font stuff.
-
-Sun Mar 12 17:31:59 1995  William Perry  <address@hidden>
-
-
-* w3-draw.el: Some basic table-drawing support put in.
-
-* w3-tables.el: Initial revision
-
-* w3.txi: Use active voice in keybinding descriptions.
-
-Sat Mar 11 22:20:21 1995  William Perry  <address@hidden>
-
-* w3-draw.el: More state kept - ugh.
-
-* w3-forms.el:
-Removed dependence on STREAM being defined - will make going totally asynch 
much easier
-
-* w3-vars.el, w3-parse.el, w3.el, w3-emacs.el: Removed 'backslashitis'
-
-* w3-e19.el: Removed a few unused variables
-
-* w3-draw.el: Optimized face stuff.
-
-* w3-beta.el: Removed 'backslashitis'
-
-* w3-vars.el, w3-e19.el: Change to the popup menu
-
-* w3-draw.el: Few fixes for blinking and wired text
-
-Fri Mar 10 23:18:30 1995  William Perry  <address@hidden>
-
-* w3-draw.el, w3-xemac.el: Fixed images as linkx
-
-
-* w3-draw.el: Fixed <br> in <dl> after a <dt> being indented too far
-
-* w3-draw.el: Fixed <br> in <ol> not being indented enough
-
-* w3-old.el: Now provides itself
-
-* w3-draw.el: New variable to turn off incremental display.
-
-* w3-draw.el: Does not display <certs> elements now.
-
-Thu Mar  9 20:35:12 1995  William Perry  <address@hidden>
-
-* w3-xemac.el, w3-epoch.el, w3-e19.el:
-Don't make so many faces if using the new display engine - we don't
-need any of the w3-xxxx-style ones.
-
-* w3-beta.el:
-Nuke w3-delayed-images and w3-delayed-movies in w3-refresh-buffer, or
-multiple images would get loaded!
-
-* w3-draw.el: Avoid calling w3-pause as often - speeds up redisplay a lot.
-
-* dist.Makefile:
-No longer byte-compile w3-sysdp - was causing too many problems.
-
-* w3-beta.el:
-No longer (goto-char (point-min)) in w3-show-buffer so that movement
-done while drawing is still honored.
-
-* w3-draw.el: Added a save-excursion around the last handle-paragraph so that
-movement done while drawing is still honored.
-
-* w3-xemac.el:
-Use copy-tree when available for menu copying - much more reliable
-
-* w3-mac.el: Added a provide for w3-mac
-
-* w3-xemac.el: Fixed problem with extents becoming detached in 19.12
-
-* w3-forms.el: Few forms fixes.
-
-* w3-beta.el: Added w3-install-latest from address@hidden
-
-* w3-beta.el: Fixed MCOM->netscape stuff.
-
-* w3-forms.el: Fixed misplaced parentheses
-
-Mon Mar  6 23:29:59 1995  William Perry  <address@hidden>
-
-
-Sat Mar  4 15:33:08 1995  William Perry  <address@hidden>
-
-* w3-draw.el:
-Now handles images like in the old display engine if not in XEmacs/Lucid
-
-* w3-e19.el: Only create air hotlist menu if w3-air-hotlists is non-nil
-
-Fri Mar  3 16:01:38 1995  William Perry  <address@hidden>
-
-
-Thu Mar  2 15:50:57 1995  William Perry  <address@hidden>
-
-* w3.el: Run w3-add-hotlist-menu first time a hotlist is loaded in.
-
-* w3-e19.el: Let w3-add-hotlist-menu run even if not in w3-mode
-
-Wed Mar  1 16:22:46 1995  William Perry  <address@hidden>
-
-* w3-sysdp.el: Removed function call causing problems
-
-* w3-xemac.el: Don't load pictures if current frame is on a tty
-
-* w3-draw.el: Added back in a call to mule-attribute-zones
-
-* w3-parse.el:
-Don't nuke the windows chars for quote and trademark when in MULE
-
-Sun Feb 26 19:17:38 1995  William Perry  <address@hidden>
-
-* w3-draw.el: Removed message about 'unknown tag <%s> skipped' - was causing
-confusion for some people.
-
-
-* W3.ad: Initial revision
-
-Sat Feb 25 23:53:08 1995  William Perry  <address@hidden>
-
-* w3-draw.el: Fixed incremental display in emacs 18.xx
-
-* w3-draw.el: Fixed paragraph spacing problem.
-
-* dist.Makefile: Made beta display engine the default.
-
-* w3.el: Removed LCD archive entry, moved into w3.el
-
-* w3-wemac.el: Various fixes for new display engine into WinEmacs
-
-* w3-vars.el: Don't die if cannot load 'annotations'
-
-* w3-sysdp.el:
-Removed anonymous lambda without 'function' wrapper for WinEmacs and
-early versoins of lucid emacs.
-
-* w3-srch.el: Provide w3-srch
-
-* w3.el: Changed _W3 on dos machines to W3.INI
-New function w3-force-reload-document to reload even if in standalone mode
-Added a default for w3-complete-link
-Provide w3-main
-
-* w3-draw.el:
-Defvard w3-last-fill-pos and w3-last-tag to better facilitate drawing
-in 2 buffers at once.
-Fixes for messed up percentages in WinEmacs/XEmacs < 19.12
-Fixed <br> and <p> in blockquotes and align=indent
-
-Mon Feb 20 04:54:30 1995  William Perry  <address@hidden>
-
-* w3.el, w3-vars.el: Removed w3-color-planes and w3-color-display variables.
-
-* w3-vars.el, w3.el: New variables w3-netscape-configuration-file and
-w3-use-netscape-configuration-file, for whether to parse and honor the
-options in a Netscape/X style configuration file.
-
-Sun Feb 19 22:27:00 1995  William Perry  <address@hidden>
-
-* w3-xemac.el: Don't change menubar if current-menubar is nil.
-
-* w3.el: Now shows whether you are using the beta version in the bug reports
-
-
-* w3-draw.el, w3-parse.el, w3-print.el, w3.el:
-Removed references to w3-working-buffer
-
-Sat Feb 18 19:51:53 1995  William Perry  <address@hidden>
-
-* docomp.el: Reworked the autoloads/defvars
-
-* dist.Makefile: Removed w3-lemac.el
-
-* w3.el, w3-draw.el, w3-vars.el:
-Removed variable w3-running-lemacs, since w3 now uses sysdep.el for
-[XL]emacs, so there is no distinction between lemacs and xemacs
-
-* w3-e19.el: Fixed problem with unquoted lambda in w3-e19-options-menu
-
-* w3-xemac.el:
-This version should theoretically work with lemacs and xemacs both
-
-* w3-draw.el: Fixed incremental display in xemacs.
-
-* w3-sysdp.el: Initial revision
-
-Thu Feb 16 15:58:44 1995  William Perry  <address@hidden>
-
-* w3.el: Changed messaging of viewer - would barf on undefined escape sequences
-in crufty mailcap-related stuff.
-
-Sun Feb 12 23:09:40 1995  William Perry  <address@hidden>
-
-* w3-draw.el: Better event handling while drawing HTML
-
-* w3-beta.el: Fixed personal annotations.
-
-* w3-draw.el: Removed proclaim-inline calls.
-
-
-* w3.txi: Added docs for new 'label' and 'textalign' attributes of <hr>
-
-* w3-e19.el:
-Fixed problem in emacs 19 with mouse-selecting a link would sometimes
-say there was not a link, but selecting it with 'return' would work.
-Now both work.
-
-* w3-parse.el: fixed problems with entity-resolution in attribute values.
-
-* w3-draw.el:
-More spacing stuff, added 'label' and 'textalign' attributes to <hr>
-
-* w3-forms.el: Remove spaces at beginning of options.
-
-Sat Feb 11 22:10:46 1995  William Perry  <address@hidden>
-
-* w3-draw.el:
-Removed dependence on 'stream' from title handling.  This will make it
-easier to do totally streamed drawing, RSN.
-
-* w3-draw.el: Fixed more spacing problems.
-
-* w3-parse.el, w3-draw.el:
-Fixed various spacing bugs - seem to be all gone now!!!!
-
-* w3-vars.el: New function to read a netscape-style configuration file.
-
-* w3-parse.el: w3-nuke-entities-in-region can now accept null args.
-
-
-* w3-beta.el: New function to read a netscape-style configuration file.
-
-Fri Feb 10 06:19:26 1995  William Perry  <address@hidden>
-
-
-Tue Feb  7 15:51:23 1995  William Perry  <address@hidden>
-
-* w3-e19.el:
-Removed the file-name-handler-alist, to put it in url.el where it belongs.
-
-* w3.el:
-Finding the source of a url that is already in a buffer should work now.
-
-* w3-draw.el, w3-beta.el:
-Now will always get a 'completed' message when drawing/imaging.
-
-Mon Feb  6 02:13:31 1995  William Perry  <address@hidden>
-
-* w3-draw.el: Fix for emacs 18
-
-* w3-forms.el, w3-parse.el:
-Optimized the calling of w3-nuke-entities-in-region.  Parsing _much_
-faster, drawing only slightly slower, so its a win.
-
-* w3-draw.el: Semi-incremental display now works in all emacsen, and recognizes
-scroll-up and C-c to interrupt.
-
-* w3-draw.el: Fixed plaintext handling.
-
-Sun Feb  5 23:41:28 1995  William Perry  <address@hidden>
-
-
-* w3-e19.el, w3-vars.el: Fixed view menu.
-
-* w3-vars.el, w3.el:
-Let w3-color-filter be a string, for people brave enough to want to
-set it themselves.
-
-* w3-epoch.el: Now works with new display engine.
-
-* w3-draw.el: Few problems for epoch fixed, <br> in <dl> looks right now.
-
-* w3-draw.el: Reimplemented w3-link-delimiter-info
-
-* w3-draw.el: Re-implemented the 'linkname value of w3-delimit-emphasis
-
-
-* dist.Makefile:
-Removed hack to change w3.texinfo on the fly when creating info file.
-
-Sat Feb  4 18:11:14 1995  William Perry  <address@hidden>
-
-* w3.el: Removed setting of default-directory because it causes call-process to
-die a hideous death and not let you do anything like M-| lpr in the
-source buffers.
-
-
-* w3.el: Replaced w3-confirmation-func with url-confirmation-func
-
-Fri Feb  3 13:42:35 1995  William Perry  <address@hidden>
-
-* w3-draw.el:
-fixed insertion of w3-link-end-delimiter - was always inserting the
-'not visited' part.c
-
-Tue Jan 31 20:45:19 1995  William Perry  <address@hidden>
-
-* w3-e19.el: Right-mouse-menu now works
-
-Mon Jan 30 04:52:26 1995  William Perry  <address@hidden>
-
-* w3.txi: Added non-unix OS sections.  Need to flesh them out more.
-
-Sun Jan 29 22:15:48 1995  William Perry  <address@hidden>
-
-* w3-vars.el: Added w3-style-tags-assoc
-
-* w3-draw.el, w3-vars.el:
-Added new variable w3-right-justify-address to control whether
-text within an <address> tag is right justified.  Defaults to t.
-
-* w3-vars.el: Few new variables for fsf19
-
-* w3.el: Removed special cases for fsf19 to use the old lmenu package.
-
-* w3-e19.el: No longer needs the lmenu package.
-
-* w3-draw.el: Fixed typo
-
-* w3-epoch.el: Made all arguments to w3-make-face optional.
-
-* w3-draw.el: Few more fixes for epoch.  No longer have to remove \n\n, so
-incremental display looks better.  w3-delimit-emphasis now works in
-the new display engine.
-
-
-* w3.txi: Lots of cleanup work, addition of netscape extensions, new HTML 3.0
-stuff, variable name changes, xresource changes, all for the new
-display engine.
-
-Sat Jan 28 23:07:36 1995  William Perry  <address@hidden>
-
-* w3.el: Deal with url-get-url-at-point possibly returning nil.
-
-* w3-epoch.el: Got rid of error in new display engine.
-
-* w3-draw.el: w3-draw.el will now compile with emacs 18 again - the incremental
-display was messing it up.
-
-* w3-beta.el, w3-draw.el, w3-e19.el, w3-emacs.el, w3-epoch.el, w3-forms.el, 
w3-lemac.el, w3-mac.el, w3-mule.el, w3-next.el, w3-old.el, w3-parse.el, 
w3-print.el, w3-srch.el, w3-vars.el, w3-wemac.el, w3-xemac.el, w3.el:
-Added headers for finder package
-
-* w3-draw.el: Make sure w3-link-end-delimiter is never on a line by itself
-
-Thu Jan 26 04:56:42 1995  William Perry  <address@hidden>
-
-* w3-vars.el:
-moved w3-mule-retrieval-coding-system to url-mule-retrieval-coding-system
-
-Wed Jan 25 15:38:50 1995  William Perry  <address@hidden>
-
-* w3-beta.el:
-Added definition for (abs x) if none exists (for emacs 18, epoch, compat.)
-
-Mon Jan 23 03:32:40 1995  William Perry  <address@hidden>
-
-* w3.txi: Removed w3-bad-server-alist
-
-Sun Jan 22 21:53:19 1995  William Perry  <address@hidden>
-
-
-* w3-draw.el: Fixed space problems, hopefully for good.
-
-* w3-e19.el: New options item for relying solely on the cache
-
-Sat Jan 21 20:27:22 1995  William Perry  <address@hidden>
-
-* w3.el: Fixed problem where default-directory would sometimes be set to nil -
-bad things man!
-
-* w3-beta.el: replaced all occurances of htmlplus with html
-
-* w3-draw.el:
-Fixed problem with plaintext and embed.  <lit> now acts like <pre>,
-but with no mono-spaced font.  Fixed problem with null titles (empty
-string invalid for buffer name error).  <blink> works on xemacs 19.12
-in tty mode.  Small problem with <pre> segments with whitespace at
-beginning fixed.  A few small hacks to handle some pythia markup.
-
-* w3-e19.el:
-Protect against copying menu-bar-help-menu if in tty mode.  Also no
-longer disable the edit menu when in w3-mode.
-
-* w3-parse.el:
-Fixed problem with plaintext and embed.  <lit> now acts like <pre>,
-but with no mono-spaced font.
-
-* w3.el: replaced all occurances of htmlplus with html
-
-Wed Jan 18 02:31:59 1995  William Perry  <address@hidden>
-
-* w3-parse.el:
-fixed bug in w3-nuke-entities-in-region if nonterminated entity was
-last thing in a buffer (ie: &lt[EOB]);
-
-* w3.el: Remove duplicate links from links-alist when doing a completing-read
-on the links.
-
-Tue Jan 17 13:18:13 1995  William Perry  <address@hidden>
-
-* dist.Makefile: Make install should now copy w3.elc to the dest. directory
-
-Mon Jan 16 03:52:57 1995  William Perry  <address@hidden>
-
-* w3-draw.el: Better handling of faces.
-
-* w3.el: Implemented <input type=file>
-
-Sat Jan 14 22:40:58 1995  William Perry  <address@hidden>
-
-* w3-parse.el: More spacing taken care of
-
-* w3-draw.el: Few fixes to <pre></pre> presentation
-
-Thu Jan 12 15:39:37 1995  William Perry  <address@hidden>
-
-* w3-draw.el: Fixed formatting problem with <dd>
-
-Mon Jan  9 23:20:05 1995  William Perry  <address@hidden>
-
-* w3-print.el: Few fixes for ps-print 1.6 and 1.10
-
-* w3-parse.el: Recognizes the <embed> tag and treats it like XMP for parsing.
-
-
-Sun Jan  8 19:07:28 1995  William Perry  <address@hidden>
-
-* w3-draw.el, w3-emacs.el, w3-parse.el:
-Various changes to make the new display engine work under emacs 18.xx
-
-* docomp.el: more defvars for cleaner compile
-
-* w3-draw.el: Fixed more of the spacing problems
-
-* w3-e19.el:
-Fixed some of the spacing problems when using w3-emacs19-hack-faces-p
-
-* w3.el: Added w3-follow-url-at-point-other-frame
-
-Sat Jan  7 20:29:06 1995  William Perry  <address@hidden>
-
-* w3-parse.el:
-Fix for odd problem where an entity at the very end of a line (or
-flush against the next tag) would get left out of the parse structure.
-Ugh!
-
-* w3.el: Added new variable url-inhibit-uncompression for use when dumping to
-disk - very wasteful to uncompress it, store it in a buffer, then
-recompress when it got written out to disk.  Also changed the file:
-and ftp: handling to use copy-file when w3-dump-to-disk is bound and
-non-nil, so we can hopefully get asynchronous dumping-to-disk done.
-
-* w3-draw.el: More fixes for funky spacing
-
-* w3-old.el, w3-parse.el:
-Remove \r's in <pre> and <xmp> segments, for ugly DOSisms.
-
-Fri Jan  6 18:31:07 1995  William Perry  <address@hidden>
-
-* w3-draw.el, w3-parse.el:
-Can now change the index of an ordered list item (<li value=xxx>0
-
-* w3-print.el:
-w3-print-with-ps-print now works with ps-print 1.6, and uses the headers, etc.
-
-* w3-draw.el, w3-e19.el: Fixed links menu in v19
-Few drawing fixes
-
-Thu Jan  5 20:50:06 1995  William Perry  <address@hidden>
-
-* w3-draw.el: Now does 'lazy' creation of faces... this reduces the memory
-requirements when in X, since a lot of the faces will probably never
-be used.
-
-* w3-parse.el: Fixed weird spacing problem after <font> tags finally.
-
-* w3.el: Make sure that facep is defined in all versions of emacs
-
-* w3-vars.el:
-Changed the mail and print menus to be pull-right for xemacs/lemacs
-
-* w3-e19.el:
-Fixed the links menu to gracefully do nothing if there are no links on
-the page (was giving an 'Empty menu' error)
-
-Mon Jan  2 21:51:34 1995  William Perry  <address@hidden>
-
-* w3-e19.el: changed default of the mouse-face for links
-
-* w3.el: Removed extraneous newline from mail headers
-
-
-* w3-e19.el, w3.el:
-w3-mail-current-document can now take an optional 'format' parameter
-so that the mail menus can be pull-right.  Spiffy, eh?  Also now
-sticks in content-type and content-transfer-encoding headers.
-
-* w3-print.el:
-w3-print-this-url can now take an optional 'format' parameter so that
-the print menus can be pull-right.  Spiffy, eh?
-
-* w3-draw.el: Quicker way of right-justifying something.
-
-* w3.el, w3-beta.el, w3-print.el:
-Moved all the printing code into w3-print.el, and added the postscript
-option.  Changed the makefile to concatenate all the appropriate files
-for the beta or old version, sort of like VM.
-
-
-* w3-draw.el:
-Added <menu> and <dir> tags back in, as well as a few hacks to make
-Jamie Z.'s page look prettier. :)
-
-* w3-beta.el: Fixed importing of netscape cache
-
-* w3-beta.el: Added w3-import-netscape-cache, to convert a netscape-style cache
-directory to the emacs-w3 style.
-
-Sun Jan  1 09:59:25 1995  William Perry  <address@hidden>
-
-* w3-vars.el: Made w3-e19-links-menu buffer-local
-
-* w3-e19.el: Reinstituted the 'Links' submenu.
-
-
-Sat Dec 31 07:13:21 1994  William Perry  <address@hidden>
-
-* w3-parse.el: Various cleanups
-
-* w3.el: w3-mail-to-author now checks for the 'Reply-To' header of an HTTP/1.0
-response before checking the 'link' tags.
-
-Fri Dec 30 17:04:45 1994  William Perry  <address@hidden>
-
-* w3-old.el: Removed use of w3-last to avoid having to use cl.
-
-* w3.el: Added checks to see if url-view-url returned nil instead of file:nil
-Removed definition of w3-last
-
-* w3-draw.el: Fixed <secret> tag.
-
-Thu Dec 29 16:03:40 1994  William Perry  <address@hidden>
-
-* w3-parse.el:
-Added more stuff to get rid of windows-specific character references.
-
-* w3.el, w3-old.el: Moved defadvice stuff to w3-old
-
-* w3-e19.el:
-Totally reworked the menus as emacs19 keymaps.  This speeds them up.
-Also added routines to add AIR Mosaic hotlists to the menus
-automatically.  Works well.  First time through causes a bit of a
-slowdown for lots of hotlists, but this is emacs' problem since it
-needs to scan all the keymaps to create the menu.
-
-* w3-draw.el:
-New variable w3-indent-level to control how many spaces to indent list
-items, blockquotes, etc.  This is necessary so that the user doesn't
-have to change tab-width or tab-stop-list to change this formatting
-(so <pre> segments that use tabs will still be formatted correctly).
-
-Also made </pre> close out all character-level formatting attributes
-ala Arena.
-
-<pre> will also cause a paragraph break - chunks of text before a
-<pre> segment weren't getting filled correctly.
-
-Made <dt> tags cause a paragraph break.  Formatting now looks better,
-and beginning of <dl> list is separated better from the rest of the
-document.
-
-Fixed problem with w3-list-chars-assoc causing an error with the new
-display engine.
-
-Fixed problem where &gt; followed immediately by another tag wasn't
-showing up in the new display.
-
-* w3-beta.el: Added parser for AIR Mosaic style hotlists.
-
-Tue Dec 27 21:24:37 1994  William Perry  <address@hidden>
-
-
-* w3-beta.el, w3-e19.el:
-Added a dropdown history list that shows the last 5 homepages visited
-under the 'Go' menu
-
-* w3.el: Changed the viewer handling so that temp files have a correct filename
-extension (for broken things like Frame that won't read in a file
-without the 'correct' file extension).
-
-Mon Dec 26 18:18:43 1994  William Perry  <address@hidden>
-
-
-* w3-beta.el:
-(New display engine) Fixed bug in the new personal annotations code
-that ws not closing the list.
-
-* w3-forms.el:
-(New display engine) Fixed bug in <select> handling where it would
-never find the correct name.  Also put back in support for <select
-multiple>.
-
-
-* w3-vars.el: Added in all the rest of the entities
-
-* w3-vars.el:
-Fixed problem where reloading of a page would set the 'Referer' field
-of an HTTP/1.0 request to the url of the page being loaded.
-
-
-* w3.el: Changed gopher searches and ask block submissions to use the enctyp
-attribute like other types of searching.  More extensible/easier to
-maintain.
-
-* w3-draw.el, w3-beta.el:
-Personal annotations now work in the new display engine.  Visible
-headers will work soon also.
-
-* w3-beta.el, w3-draw.el, w3-e19.el, w3-emacs.el, w3-epoch.el, w3-forms.el, 
w3-lemac.el, w3-mac.el, w3-mule.el, w3-next.el, w3-old.el, w3-parse.el, 
w3-srch.el, w3-vars.el, w3-wemac.el, w3-xemac.el, w3.el:
-Updated copyright notices for 1995
-
-Sun Dec 25 22:30:16 1994  William Perry  <address@hidden>
-
-* dist.Makefile:
-Renamed w3.el to w3-main.el and create w3.elc from w3-main.elc and
-either w3-beta.elc or w3-old.elc
-
-
-* w3-e19.el, w3-lemac.el, w3-wemac.el, w3-xemac.el, w3.el: More menu changes
-
-* w3-print.el: Initial revision
-
-* w3-beta.el: Changed w3-face-type to return 'both if a face is bold and italic
-
-
-* w3-beta.el: Initial revision
-
-* w3-parse.el, w3-forms.el, w3-draw.el:
-Added provide statements for easier loading
-
-* w3.el: Moved loads of old code into w3-old.el
-
-* dist.Makefile: Added new targets beta and old.
-
-* w3-old.el: Initial revision
-
-* w3-draw.el: Made new display engine honor the w3-list-chars-assoc header.
-
-* w3-vars.el: Moved some old vars out to w3-old.el
-
-Sat Dec 24 20:41:46 1994  William Perry  <address@hidden>
-
-* w3-e19.el: Fixed w3-mouse-handler to work with the new display engine.
-
-Fri Dec 23 22:40:38 1994  William Perry  <address@hidden>
-
-* w3-forms.el, w3.el: Added in handler for <input type=range size="min,max">
-
-
-* w3-draw.el: Added function comments.
-
-* w3-draw.el:
-Rearranged the file a lot, and added support for the named BASE tags
-from HTML 3.0 - pretty cool stuff. :)
-
-Thu Dec 22 23:53:59 1994  William Perry  <address@hidden>
-
-
-* w3-draw.el: Various fixes to the parser to deal with bad html.  Automatically
-include the alt tag for an image if it is a link target, regardless of
-the setting of w3-auto-image-alt.
-
-* w3-parse.el: Various fixes to the parser to deal with bad html
-
-Mon Dec 19 00:30:38 1994  William Perry  <address@hidden>
-
-
-* w3-e19.el: Added 'xterms' as a terminal type.
-
-* w3.el: Changed w3-submit-bug to only send truly useful info.
-
-Sun Dec 18 23:42:30 1994  William Perry  <address@hidden>
-
-* docomp.el: Stifle more warnings in new xemacs
-
-* w3-vars.el, w3.el, w3-draw.el:
-Changed the behavior of w3-auto-image-alt so that it could be a string
-for 'format'.
-
-* docomp.el: Stifle more warnings
-
-* w3-parse.el, w3-draw.el:
-Changed w3-handle-unknown-tag to check if 'w3-handle-<tag>' is
-defined, and if so, to record that function as the handle for that
-tag.  This will cut down on maintenance of the top block of code that
-just does a lot of (put 'w3-formatters 'xxxx 'w3-handle-xxxx).  XMP
-sections will now also work correctly.
-
-* w3-parse.el:
-Now deals with comments properly, and can handle the old (broken)
-comments of Mosaic/X
-
-Fri Dec 16 19:23:35 1994  William Perry  <address@hidden>
-
-* w3-e19.el: More fixes to w3-forward-link
-
-* w3-draw.el: Fixed a few things with faces
-
-Thu Dec 15 23:08:54 1994  William Perry  <address@hidden>
-
-* w3-e19.el: Fixed w3-forward-link to work better with the new display engine.
-
-Wed Dec 14 17:55:30 1994  William Perry  <address@hidden>
-
-* w3.el: Fixed a few problems with forms and the new display engine.
-
-* w3-xemac.el: Name changes (screen->frame)
-
-Tue Dec 13 17:56:45 1994  William Perry  <address@hidden>
-
-* w3-draw.el: Added a few optimizations for the <blink> tag.
-
-* w3-draw.el: Added in creation of 'underline' face if it is not defined.
-
-* w3-forms.el, w3.el:
-Changed the maxlength to being unlimited if unspecified, to conform to
-the new HTML 2.0 spec.
-
-* w3.el: Fixed bug in w3-document-informatino where it was relying on
-url-current-mime-headers when it wasn't guaranteed to be the same.
-
-Mon Dec 12 23:22:21 1994  William Perry  <address@hidden>
-
-* w3-vars.el, w3.el: Added function w3-document-information
-
-* w3-vars.el, w3-wemac.el, w3-xemac.el, w3-e19.el, w3-lemac.el:
-Added new 'view' menu.
-
-* w3.txi: Removed hook for gnus-article-prepare-hook - was corrupting uuencoded
-articles.
-
-
-* w3-xemac.el, w3-lemac.el:
-Fixed problem with image menus if graphic was a link
-
-* w3-epoch.el, w3-lemac.el, w3-xemac.el:
-More stuff to deal with changed names, and crypt++/jka-compr
-
-* w3.el: Fixed big problem in reset buttons on forms.
-
-* w3.el: Now supports the 'action', 'src', and 'prompt' attributes on the
-isindex element.  (new display engine only)
-
-* w3-draw.el: Now supports the 'action', 'src', and 'prompt' attributes on the
-isindex element.
-
-* w3-vars.el: Changed lots of the version variables so that they don't rely on
-having the RCS headers in them.
-
-* w3.el: Changed w3-mode so that if it is called interactively it will act like
-w3-preview-this-buffer.
-
-* w3.el: Changed w3-source-document so that it can reuse source buffers if the
-users wants to.
-
-Sun Dec 11 08:41:52 1994  William Perry  <address@hidden>
-
-
-* w3-draw.el:
-Added in code to scale fonts for <h[1-6]> so they are bigger, etc, if in 
XEmacs/Lemacs
-
-* w3.el: Few changes for asynch mode.
-
-
-Sat Dec 10 01:07:05 1994  William Perry  <address@hidden>
-
-* w3-xemac.el:
-Added some stuff to optimize the echoing of the URL in the minibuffer
-(not so many calls to mode-motion-hook, all done in the mouse-handler
-by using the 'help-echo property).  Is smart enough to notice if
-'help-echo is not defined and still use the old way if necessary.
-Also changed the image code so that it sets the 'detachable property
-so that images won't get nuked if the text they are attached to is
-deleted.
-
-Fri Dec  9 22:34:04 1994  William Perry  <address@hidden>
-
-* w3-draw.el: Few tweaks
-
-* w3-forms.el:
-Fixed problem with other markup (especially other form info) within a <select>.
-
-* w3-parse.el: Added status messages to parsing.
-
-* docomp.el: More vars to get rid of warnings.
-
-Thu Dec  8 21:16:09 1994  William Perry  <address@hidden>
-
-* w3-draw.el: Added in lots of the 'top ten' html tags. :)
-
-* w3-draw.el: Added <blink> stuff, and rewrote the init-state function.
-
-* w3-vars.el: Added w3-do-blinking to control whether <blink> </blink> works
-
-* w3-draw.el: Handle pinhead
-
-Wed Dec  7 15:47:47 1994  William Perry  <address@hidden>
-
-* w3.el: Fixes to wais stuff
-
-* w3-draw.el: Added indenting for blockquote tags.
-
-* w3-epoch.el, w3-wemac.el, w3-lemac.el, w3-xemac.el, w3-emacs.el, w3-e19.el:
-Let w3-back-link and w3-forward-link accept negative arguments and
-call each other if they get one.
-
-Tue Dec  6 22:16:34 1994  William Perry  <address@hidden>
-
-* w3.el: Fixed typo in docs.
-
-* w3.el:
-Fixed w3-source-document so it will issue an error if done in a non-w3 buffer.
-
-* w3-vars.el: Fixed typo in docs.
-
-* w3.el: Patch from Michael Erns (address@hidden) to make
-w3-complete-link act like w3-follow-link when no menu item is
-specified.  That makes it act more like Info mode, and so is more
-intuitive to users used to it.
-
-* w3.el: Now set default-directory when sourcing a document
-
-* w3-forms.el: Added error checking to the <textarea> handling to deal with
-non-terminated textareas.
-
-* w3-forms.el:
-Added error checking to all the forms code to make sure you are within
-a <form> before doing anything.
-
-* w3-draw.el: Added support for the 'fig tag.
-
-* w3-draw.el: Changed how the <title> tag is handled.
-
-
-* w3-draw.el: Added SPRY align tag.
-
-* w3-forms.el: Trimmed lots of crap that is duplicated from w3.el
-
-* w3-draw.el:
-<pre> and <xmp> segments within a list item will now be indented correctly.
-
-* w3-draw.el: Fixed list filling after headers and br's
-
-* w3-draw.el: Few changes to the <hr> handling
-
-* w3.el, w3-draw.el:
-New variable w3-auto-image-alt that controls whether emacs-w3 will
-automatically generate the 'alt' text on an image where it was not
-specified.
-
-
-Mon Dec  5 23:54:51 1994  William Perry  <address@hidden>
-
-
-* w3-draw.el, w3-e19.el, w3-parse.el:
-Misc Changes to get around idiotic font tag
-
-
-* w3-draw.el: Center tag will now override header/paragraph stuff.
-
-* w3-draw.el: More image work.
-
-* w3-parse.el: Fixed problem if a tag was flush against a newline.
-
-* w3-vars.el: Added jpegs as a default inlined image type.
-
-* w3-xemac.el, w3-lemac.el: fixed problem with new parser and xemacs/lemacs
-
-* w3-parse.el: Fixed problem with entities.
-
-* w3-e19.el, w3-srch.el: more name changes
-
-* w3.el: Fixed problem if w3-default-homepage was nil.
-
-* w3-draw.el: <link> tags now work correctly.
-
-Sat Dec  3 23:05:24 1994  William Perry  <address@hidden>
-
-* w3-parse.el: Problem with entities lt and gt fixed a little.
-
-* w3.el: More naming changes.
-
-* w3-draw.el: <select> and <option> tags now work correctly.
-
-* w3-emacs.el: Added a few checks in for the amiga 18.5x emacs.
-
-* w3-forms.el: <select> and <option> tags now work correctly.
-
-* w3-draw.el: Added support for the 'note' tag.
-
-Fri Dec  2 18:05:31 1994  William Perry  <address@hidden>
-
-* w3.el:
-Fixed bug in w3-view-this-url that would message 'nil' in the minibuffer.
-
-* w3-draw.el: Now remembers "id" and "name" attributes on any tag.
-
-* w3-draw.el: Various fixes to painting.
-
-* w3-draw.el, w3-epoch.el, w3-forms.el, w3-parse.el, w3-srch.el:
-More name changes, handling or PRE/XMP
-
-* w3.el: Fixed problem in w3-fetch if url-request-method was nil.
-
-* w3-draw.el: Now correctly handles pre,/pre,xmp,and /xmp
-
-Thu Dec  1 17:21:34 1994  William Perry  <address@hidden>
-
-* w3-draw.el: Added new tags
-
-Wed Nov 30 18:48:41 1994  William Perry  <address@hidden>
-
-* w3-e19.el: Added vt300 to the hack-faces stuff.
-
-Mon Nov 28 17:11:38 1994  William Perry  <address@hidden>
-
-* w3-epoch.el, w3-lemac.el: More misc. name changes
-
-Wed Nov 23 21:12:59 1994  William Perry  <address@hidden>
-
-* w3.el: Fixed problem when posting to a form, w3-reuse-buffers would reuse the
-'source' of the form.  Ugh.
-
-Tue Nov 22 15:37:02 1994  William Perry  <address@hidden>
-
-* w3.el: Fixed problem in 'isindex' forms processing.
-
-Sun Nov 20 04:44:42 1994  William Perry  <address@hidden>
-
-* w3-draw.el, w3-forms.el, w3-mule.el, w3-vars.el, w3-xemac.el, w3.el:
-Lots of name changes from w3-* to use the native url-* functions
-
-Fri Nov 18 22:46:59 1994  William Perry  <address@hidden>
-
-* w3-vars.el: Added binding of Shift-tab for w3-back-link
-
-Thu Nov 17 20:52:03 1994  William Perry  <address@hidden>
-
-* w3-mule.el: Fixes for mule 2.1 from Shin-ya Sato <address@hidden>
-
-Mon Nov 14 17:02:29 1994  William Perry  <address@hidden>
-
-* w3-new.el: Initial revision
-
-Tue Nov  8 17:57:57 1994  William Perry  <address@hidden>
-
-
-* w3.el: Fixed handling of base tag
-
-Mon Nov  7 22:09:35 1994  William Perry  <address@hidden>
-
-* w3-draw.el: Correctly reset the state when going into w3-draw-html
-
-* w3-parse.el: Misc. fixes
-
-Sun Nov  6 07:19:52 1994  William Perry  <address@hidden>
-
-* w3-draw.el: Relative links work correctly now
-
-* w3-draw.el, w3-forms.el, w3-parse.el: Initial revision
-
-Fri Nov  4 22:43:44 1994  William Perry  <address@hidden>
-
-* w3.el: Support for STYLE attribute on ordered lists.  Supports i, I, a, A.
-Also still supports the HTML+ 'ROMAN' attribute.  Supports the VALUE
-attribute on the LI tag to change the value of a list item and all
-following items.
-
-* w3.el: Changed the advice for w3-*-link to use deactivate-mark if it is
-bound.  This gets rid of the problem of w3-*-link highlighting the
-region if in emacs-19 and in transient-mark-mode.
-
-Thu Nov  3 23:50:47 1994  William Perry  <address@hidden>
-
-* w3-epoch.el, w3-lemac.el, w3-xemac.el:
-Only send Accept: lines for the inlined images we accept when
-transferring an image
-
-Wed Nov  2 00:47:38 1994  William Perry  <address@hidden>
-
-* w3.el: Let the variable shell-file-name take precedence over environment
-variables and guessing
-
-* w3-e19.el, w3-vars.el:
-Added w3-echo-link to control what is displayed in the minibuffer in
-emacs-19.  'url, 'text, or nil.
-
-* w3.el: Added encoding type of application/ramp to forms
-
-Tue Nov  1 18:36:08 1994  William Perry  <address@hidden>
-
-
-* w3-vars.el: Removed definition of w3-using-proxy
-
-* w3.el:
-Fixed w3-find-this-file to work correctly for users other than anonymous
-
-* w3.el: Fixed problem where sentences ending with ! or ? had the ! or ? eaten.
-
-* w3.el: Added check for checkboxes/radio boxes that are turned off.
-
-Mon Oct 31 23:16:04 1994  William Perry  <address@hidden>
-
-* w3.el: Fixed a stupid bug in the ....-other-frame
-
-* w3-e19.el: Changed binding from [shift mouse-2] to [S-mouse-2] -ugh
-
-* w3.el: Added functions w3-follow-link-other-frame and w3-fetch-other-frame
-
-* w3-lemac.el, w3-xemac.el, w3-e19.el:
-Added shift-middle-button default binding to be follow-link in other frame.
-
-Fri Oct 28 22:42:10 1994  William Perry  <address@hidden>
-
-* w3-vars.el: Can now pass parameters to url-current-callback-func
-
-Thu Oct 27 19:14:08 1994  William Perry  <address@hidden>
-
-* w3.el: Strip spaces off of the title after truncating it to 50 characters.
-
-Wed Oct 26 15:41:14 1994  William Perry  <address@hidden>
-
-* w3-vars.el: A few changes to how the entities are interpreted
-
-* w3.el: Now correctly strips off spaces from the front of a URL
-when in w3-fetch
-
-Tue Oct 25 17:28:43 1994  William Perry  <address@hidden>
-
-* w3.el: Fixed <option value=xxx> handling for multiple selection lists.
-
-* w3.el: Fixed handling of the SIZE attribute of a SELECT tag.  Select MULTIPLE
-will now also allow different OPTION tags to have the SELECTED
-attribute.  Changed w3-insert-entities-in-string to use
-w3-html-entities, so it gets all the entities, not just the 6 or 7
-that were hardcoded in.
-
-Wed Oct 12 16:22:05 1994  William Perry  <address@hidden>
-
-
-Tue Oct 11 23:11:34 1994  William Perry  <address@hidden>
-
-* w3.el: More spacing at end of sentences hacks for ? and !
-
-* w3-vars.el: No longer rebind C-k - bad thing.
-
-* w3.el: Don't double-space after Prof.
-
-Tue Oct  4 01:17:33 1994  William Perry  <address@hidden>
-
-
-* w3.el, w3-vars.el:
-Changed w3-reuse-buffers to accept 'yes/no 'reuse/reload and 'always/never
-
-Mon Oct  3 14:04:15 1994  William Perry  <address@hidden>
-
-* w3-vars.el, w3.el:
-Patch for the inlined image processing for the buggy current release
-of ppmdither and viewing black and white gifs.  Also added comments to all
-the html entities in w3-html-entities.
-
-Fri Sep 30 21:28:54 1994  William Perry  <address@hidden>
-
-* w3.el:
-Fixed problem with paragraph just after an <hr> not being filled correctly.
-
-* w3-vars.el: Added more HTML entities
-
-Thu Sep 29 20:13:53 1994  William Perry  <address@hidden>
-
-* w3.el: Removed problem with first header having a blank line in it.
-
-* w3-e19.el, w3-emacs.el, w3-mule.el, w3-vars.el, w3.el:
-Lots of patches from Shin-ya Sato <address@hidden> to make
-w3 work with mule 2.0
-
-Tue Sep 27 23:58:36 1994  William Perry  <address@hidden>
-
-* w3.el: Now sends the NAME and VALUE of submit buttons if the submit button
-has a NAME.
-
-
-Mon Sep 26 18:51:52 1994  William Perry  <address@hidden>
-
-* w3.el: Change to w3-form-encode-multipart/x-www-form-data to include the
-content-length of each item
-
-Fri Sep 23 16:14:50 1994  William Perry  <address@hidden>
-
-* w3.el: Fixed problem in w3-backward-in-history       when no back link was 
found.
-
-* w3-vars.el:
-Fixed setting of w3-running-FSF19 to take into account XEmacs 19.12
-
-Thu Sep 22 23:24:48 1994  William Perry  <address@hidden>
-
-* w3-lemac.el: Fixed problem in w3-insert-graphic where it would always do a
-url-file-attributes, even if we had the image loaded. (with
-url-be-anal-about-file-attributes == t, it would do a HEAD, which was
-stupid)
-
-* w3.el: Fixed forms doubling problem in FSF emacs 19 when doing a reset.
-
-* w3-vars.el, w3.el:
-New variable w3-track-last-buffer.  If non-nil, M-x w3 will take you
-to the last w3 buffer you fetched, instead of loading your home page.
-If the last buffer has been killed, then it acts normally and loads
-the home page.
-
-* w3.el: Changed w3-submit-bug
-
-
-* w3.el: patch from address@hidden to fix reporter problems in
-emacs 19.xx
-
-Wed Sep 21 17:25:16 1994  William Perry  <address@hidden>
-
-* w3.el: Fixed small bug in DL handling when no <dt> items present
-
-
-* w3.el: Fixed problem in w3-pass-to-viewer if "/" is the filename, would get
-"" as the buffer-name, which would choke.
-
-* w3.el:
-Fixed bug in w3-delimit-emphasis w/headers that had spaces/newlines in them
-
-Tue Sep 20 18:04:03 1994  William Perry  <address@hidden>
-
-
-* w3.el:
-Fixed handling of blockquote's so they have a <p> at the beginning and end.
-
-
-Sun Sep 18 20:15:42 1994  William Perry  <address@hidden>
-
-* w3.txi: Few minor changes
-
-* w3.el: Changed w3-upcase-region so that it will take care of entities in the
-region.  ie: &auml; -> &Auml;, etc.
-
-* w3-e19.el:
-Fixed problem where the URL was not shown in the minibuffer if you hit
-'f' from a point in the document that was not a link.
-
-Fri Sep 16 17:18:03 1994  William Perry  <address@hidden>
-
-* w3-mac.el, w3.el: Lots of little fixes
-
-* w3-vars.el: Removed the old, redundant w3-gateway-x variables
-
-* w3-hypb.el: Removed all the code, since Hyperbole 3.12 handles it for you.
-
-Thu Sep  8 15:54:36 1994  William Perry  <address@hidden>
-
-* w3.el: Fixed problem where the o/*/etc at the front of <dt> items would be
-upper-cased sometimes
-
-* w3.el: Started using reporter.el instead of rolling my own error logging
-routines.
-
-* w3-e19.el: w3-emacs19-unhack-faces now turns w3-delimit-emphasis and
-w3-delimit-links on.
-
-* w3-e19.el:
-w3-forward-link and w3-backward-link now ignore links without href's
-
-* w3.el: w3-complete-link now ignores links without href's
-
-* w3-vars.el, w3.el:
-Added new variable w3-source-file-hooks that is run after sourcing a document.
-
-* w3.el: Fixed problem with not quoting an align attribute when filling in
-defaults in w3-fix-paragraphs-in-region
-
-* w3.el: Fixed formatting problem with <dl>s finally
-
-Wed Sep  7 23:22:21 1994  William Perry  <address@hidden>
-
-
-* w3.el: Patch for not putting 2 spaces after Mr/Ms/Mrs.
-
-* w3-e19.el, w3.el:
-Lots of fixes brought about by Axel Boldt <address@hidden>
-
-
-* w3.el: Fixed problem in w3-finish-text-entry when deleting the sole window
-
-* w3-e19.el, w3-lemac.el, w3-wemac.el, w3-xemac.el, w3.el:
-Fix from address@hidden for converting newlines in
-menu entries/completions on links to spaces.
-
-
-* w3.el: Fixed dl attribute munging in w3-fixup-bad-html
-
-* w3-e19.el, w3-mule.el, w3.el: Misc. changes for Mule 2.0
-
-Tue Sep  6 21:07:16 1994  William Perry  <address@hidden>
-
-* w3-e19.el, w3-emacs.el, w3-epoch.el, w3-lemac.el, w3-xemac.el:
-Got rid of code to not interfere with hyperboles mouse-bindings, since
-it has changed to only use shift-clicks
-
-Sat Sep  3 21:50:09 1994  William Perry  <address@hidden>
-
-* w3.el: Fixed problem where if url-be-asynchronous was non-nil,
-w3-show-history and w3-show-hotlist would fail.
-
-Fri Sep  2 18:42:25 1994  William Perry  <address@hidden>
-
-* w3.el: url-buffer-visiting now strips off the #xxx links.
-If reusing a buffer, the #xxx works will now work also.
-
-* w3-vars.el: Used real symbol for (TM) (&trade;)
-
-Sun Aug 28 22:41:15 1994  William Perry  <address@hidden>
-
-* w3.el: Fixed problem with <dl> lists when there were no <dt> items.
-
-* w3.el: Fixed bug where hotlist urls were getting hexified too often
-
-
-Thu Aug 25 17:15:52 1994  William Perry  <address@hidden>
-
-* w3.txi: Few fixes to @cindex areas
-
-Tue Aug 23 12:30:18 1994  William Perry  <address@hidden>
-
-* w3.el: Added code to automatically call w3-update-hotlist-menu after all
-hotlist modification functions
-
-Mon Aug 22 02:30:51 1994  William Perry  <address@hidden>
-
-* w3.el: Fixed problem with the new w3-fix-unknown-tags
-
-Sun Aug 21 23:34:49 1994  William Perry  <address@hidden>
-
-* w3.el: The isindex tag can now have an action=xxx specifier.  Works the same
-as link rel=index
-
-* w3.el: Don't include the [[ and ]] in w3-complete-link
-
-
-* w3-vars.el, w3.el:
-Added a 'debug' mode.  If w3-debug-html is non-nil, then display
-all semi-buggy html with error messages in a separate buffer
-that is displayed at the end of the parse.
-
-* w3-lemac.el, w3-vars.el, w3-wemac.el, w3.el:
-Added w3-xemac.el for the upcoming XEmacs 19.12 release
-
-* w3-xemac.el: Initial revision
-
-* dist.Makefile: Added w3-xemac.el
-
-
-* w3-vars.el: Changed how w3-version-number is created.
-
-* w3.txi: Added section on inlined images/mpegs
-
-* w3.el: w3-goto-last-buffer now works if w3-be-asynchronous == t
-
-* w3.el, w3-e19.el:
-Fixed emacs-19 forms problem - overlays would run together and mess up
-form entry.  Also fixed problem in the highlighting of links.
-
-Sat Aug 20 22:21:06 1994  William Perry  <address@hidden>
-
-
-* w3.txi, w3.el: Lots of changes suggested by Axel Boldt.
-
-* w3-e19.el: w3-forward-link and w3-back-link will show the link under point
-
-Thu Aug 18 12:56:43 1994  William Perry  <address@hidden>
-
-
-* w3-e19.el, w3-mac.el, w3.el: removed need for w3-quotify-percent hack
-
-Mon Aug 15 03:57:29 1994  William Perry  <address@hidden>
-
-* w3.el: Fixed multipart viewer
-
-Sun Aug 14 22:50:31 1994  William Perry  <address@hidden>
-
-* w3.el: Made w3-popup-info interactive
-
-* w3-hypb.el: More error checking in hwww:start.
-
-* w3-vars.el: Added view source to the hyperlink-menu
-
-* w3-wemac.el, w3.el: More fixes to work under DOS/Windows
-
-
-* w3.el: Fixed x-www-form-urlencoded encoding.  Was stripping off the first
-character sometimes when it shouldn't have been.
-
-* w3-vars.el: Removed  bogus definition of w3-directory-format
-
-* w3-lemac.el, w3-e19.el:
-Fixed w3-mouse-handler so it doesn't need to muck with the % signs anymore.
-
-* w3-lemac.el, w3-e19.el: New links menu constructor
-
-* w3.el: Default URL for w3-fetch is now smarter.
-
-* w3.el: Fixed w3-complete-link so that it will not show extraneous markup in
-the completing-read
-
-* w3-srch.el, w3-lemac.el, w3-wemac.el, w3-epoch.el, w3-emacs.el, w3-e19.el:
-New w3-map-links - now passes the start and end positions to the
-appropriate function
-
-
-* w3.el: Forms fix for MAXSIZE, message when storing into the kill ring so the
-user has some sort of feedback, <P ID=xxx> works now.
-
-* w3-vars.el: New hotlist key bindings.
-
-Fri Aug 12 13:26:02 1994  William Perry  <address@hidden>
-
-* w3-lemac.el: Removed the * .5 so w3-lemac.el can compile under emacs 18
-
-* w3.el: Few fixes for using under windows.
-
-* w3.el: Fixed problem with directory-files with no <title> causing
-rename-buffer to fail.
-
-Thu Aug 11 13:56:35 1994  William Perry  <address@hidden>
-
-* w3.txi: Changes to the VM/Rmail nodes.
-
-* w3.el: Fixed dumbass problem in both types of forms submission that would
-always submit every checkbox and every radio button, regardless of its
-checked state.
-
-Wed Aug 10 13:51:18 1994  William Perry  <address@hidden>
-
-
-Tue Aug  9 03:39:45 1994  William Perry  <address@hidden>
-
-* w3.el: Fixed problem with cleaning up of w3-temporary-directory and
-url-temporary-directory
-
-* w3-e19.el: Fixed a few problems with the loading of lmenu.
-
-Mon Aug  8 12:59:14 1994  William Perry  <address@hidden>
-
-* w3-e19.el: Made binding of track-mouse buffer-local
-
-Sat Aug  6 16:32:18 1994  William Perry  <address@hidden>
-
-
-* dist.Makefile:
-Removed viewers.el from the dist, since it has been moved into mm.el
-
-* w3-wemac.el, w3-lemac.el:
-New url-flush-cache function to remove all entries from the cache.
-Menu item in lemacs/wemacs for it.
-
-* w3.el: Fixed problem if </title> is malformed/nonexistent.
-
-* w3.el: Fixed problem with some </pre> markup sometimes leaving a trailing >
-in the parsed code.
-
-* w3.el: Fixed problem with mac web pages that use ^M instead of ^J as the
-newline char.
-
-Wed Aug  3 04:15:06 1994  William Perry  <address@hidden>
-
-
-* w3-vars.el, w3.el: Moved setting of w3-documents-menu-file,
-w3-personal-annotation-directory, and w3-hotlist-file into
-w3-do-setup, since they used expand-file-name and ~/, it would mess up
-if you dumped w3 with emacs.
-
-* w3-wemac.el:
-Do correct setting of the address@hidden up .mosaic-xxx-xxx filenames when in 
windows.
-
-* w3-wemac.el:
-Fix the setting of the mailcap/mime-types file list so that it won't
-choke on invalid filenames in windows.  Also do smart-checking of the
-TEMP environment variable if w3-temporary-directory or
-url-temporary-directory doesn't exist.
-
-* w3-lemac.el, w3.el:
-Fixed a problem in w3-kill-emacs-func when w3-temporary-directory
-didn't exist.  Also moved some stuff from w3-do-setup to
-w3-setup-version-specifics (mostly lemacs image stuff, etc)
-
-* w3.el: Load w3-wemac if running WinEmacs
-
-* w3.el: Highlighting of links is back...
-
-* w3-wemac.el: Initial revision
-
-Mon Aug  1 13:32:35 1994  William Perry  <address@hidden>
-
-* dist.Makefile:
-Removed sample-mailcap from distribution - everything is defaulted in
-lisp now.
-
-
-Sun Jul 31 23:53:36 1994  William Perry  <address@hidden>
-
-* w3.el: Accept --!> as the ending of an SGML comment.  UGH!
-
-
-* w3.el: Now sends off the value parameter of an <option> tag in a form.
-
-
-* w3.el: Use error in w3-save-url if there is no URL.  Moved loading of ~/.w3
-higher in w3-do-setup.
-
-* w3.txi: Fixed lots of grammatical mistakes, all stuff now uses the present
-tense instead of "will", and no more first-person crap.  Email
-addresses are handled in a standard way.
-
-* w3.el: Added support for the multipart/x-www-form-data enctype.  Also
-revamped forms support to be easily expandable for the enctype
-attribute.  Just need to have a function named
-w3-form-encode-<content-type> defined.  If this returns a cons pair,
-then the car is used as the "separator=xxx" chunk in the content-type,
-and the cdr is the body of the request.  If it returns a string, it
-just sends that as the body of the message.
-
-
-* w3.el, w3-vars.el: Rewrote the popup-info functions
-
-
-Sat Jul 30 22:55:31 1994  William Perry  <address@hidden>
-
-* w3-e19.el:
-Will no highlight the region that matches the ID of a #XXX search in a document
-
-
-Fri Jul 29 04:33:03 1994  William Perry  <address@hidden>
-
-* w3.txi: Few typos
-
-* w3.el, w3.txi:
-Misc. patches from address@hidden - doc/info fixes
-
-Thu Jul 28 13:52:49 1994  William Perry  <address@hidden>
-
-* w3.el: Rewrote DL handling
-
-Tue Jul 26 13:39:24 1994  William Perry  <address@hidden>
-
-
-* w3.el: Fixed dumb mistake in w3-personal-annotation-finish where I didn't
-insert the actual text of the annotation before finishing up.
-
-Mon Jul 25 14:04:09 1994  William Perry  <address@hidden>
-
-* add-to-dot-emacs: Added a few new autoloads
-
-
-* w3.txi: Fixed a few typos.
-
-* w3.el: Fixed problem with the rel=useindex support.
-
-* w3.el: Fixed small formatting problem with w3-delimit-links = 'linkname
-
-Sun Jul 24 20:19:18 1994  William Perry  <address@hidden>
-
-
-* w3-lemac.el:
-Several ugly hacks to get the image menus to work for images that
-downloaded successfully.
-
-* w3-lemac.el: New link and graphic specific menus enabled.
-
-* w3-vars.el: The popup menu has been trimmed down.
-
-
-* w3.el: A few changes for the new hyperlink-specific menus
-
-* w3-e19.el: Rewrote w3-forward-link - should not get stuck on links anymore
-
-* w3-e19.el: Implemented popup-menus on a linktype basis.  Can change the popup
-menu that shows up when you right-click on a hyperlink or an image.
-Default menus include viewing headers, dumping to disk, mailing,
-printing, and copying the url.
-
-* w3-vars.el, w3.el:
-New personal annotation entry code.  Uses a minor mode, and you can
-specify what major mode is used.  Set the variable w3-annotation-mode
-to the name of the major mode.  If set to nil, it will use
-default-major-mode.
-
-* w3-e19.el, w3-emacs.el, w3-epoch.el, w3-hypb.el, w3-lemac.el, w3-mac.el, 
w3-mule.el, w3-next.el, w3-vars.el, w3.el:
-Changed all references to address@hidden to use w3-bug-address
-instead.  Changed all copyright notices to use my new email address
-also.
-
-
-* w3.txi:
-Lots of changes to variable names, some new sections.  Should be about
-90% up-to-date now.
-
-
-* w3-vars.el: Removed definition of w3-passwd-entry-func - obsolete.
-
-
-* w3.el: Moved running of w3-mode-hooks to be after the resetting of
-w3-persistent-variables.
-
-
-* w3.el: Added in support for using <link rel=useindex href=xxx> for searching
-instead of the <ISINDEX> tag.  <ISINDEX> is still supported.
-
-Sat Jul 23 21:26:57 1994  William Perry  <address@hidden>
-
-* w3-e19.el: Rewrote the options menu
-
-* w3-e19.el: Removed image options from emacs 19 menubar
-
-
-* w3.el: Fixed problem with nested style tags.
-
-* w3-lemac.el: Fixed problem with images not appearing
-
-* w3.el: Fixed problem with first lines not being wrapped if no
-header/paragraph tags before them in the document.  Also added support
-for broken base tags - seems like some people are using <base=url>
-instead of <base href=url>
-
-
-* w3.el: PRE segments now get correctly put in the w3-tt-style face.
-
-Fri Jul 22 03:59:40 1994  William Perry  <address@hidden>
-
-
-Thu Jul 21 04:46:03 1994  William Perry  <address@hidden>
-
-* w3.el: Changed behavior of w3-show-headers.  If 't', then show all headers.
-Fixed bug in w3-in-assoc if there was a blank entry in the alist.
-
-* w3.el: Patch from address@hidden for not putting nil in the
-kill ring with w3-save-url.
-
-Sun Jul 17 17:17:19 1994  William Perry  <address@hidden>
-
-
-* w3-vars.el: New variable w3-dump-to-disk that will automatically download
-retrieved files to disk.
-
-* w3-lemac.el: Added 'dump to disk' item in options->www menu
-
-* w3-lemac.el: Added option for color filtering to the options->www menu
-
-* w3-lemac.el: Only read in the url-file-attributes of an image if
-w3-image-size-restriction is non-nil and a number.
-
-Sat Jul 16 18:55:24 1994  William Perry  <address@hidden>
-
-
-* w3.el: With prefix-arg, w3-fetch will default to the URL of link under point
-if any, otherwise default to current documents url if in w3-mode,
-otherwise default to url-get-url-at-point
-
-* w3.el: With prefix-arg, w3-follow-link will dump the file straight to disk
-
-Fri Jul 15 14:42:39 1994  William Perry  <address@hidden>
-
-* w3.el: Automatically switch to using giftoppm if giftopnm is not found on the
-system.
-
-
-Tue Jul 12 04:38:47 1994  William Perry  <address@hidden>
-
-
-Mon Jul 11 05:28:40 1994  William Perry  <address@hidden>
-
-* w3.el: w3-version now returns all the version #s of URL, WWW, and MM
-
-
-Sun Jul 10 19:14:06 1994  William Perry  <address@hidden>
-
-* w3.el: Only use w3-default-style in epoch
-
-
-* w3.el, w3-vars.el: w3-show-headers now takes regexps instead of exact matches
-
-Fri Jul  8 01:49:25 1994  William Perry  <address@hidden>
-
-
-Wed Jul  6 13:56:47 1994  William Perry  <address@hidden>
-
-* w3.el: Patches to make the history work again, as well as keep w3
-from trying to re-select deleted buffers
-
-Tue Jul  5 07:38:00 1994  William Perry  <address@hidden>
-
-* w3.el: No longer delete the zone when making an ALT tag hot, since there
-could have been other text in the link
-
-* w3.el:
-If an IMG is within a <A> tag, then the alt tag will be a hyperlink also.
-
-* w3.el: Fixed finding of url#xxx links from w3-fetch
-
-Mon Jul  4 23:48:07 1994  William Perry  <address@hidden>
-
-* w3.el: Forms submissions can now have ? embedded in them, for recursive
-creation of subsequent forms.
-
-
-* w3.el: Fixed formatting problems with nested lists, etc.
-
-* w3-vars.el: Removed C-q binding
-
-* w3-e19.el: Automatically turn on track-mouse if w3-track-mouse is non-nil.
-
-* w3.el: Various patches from Alastair Burt
-
-* w3-lemac.el: Create w3-superscript-style correctly
-
-Sun Jul  3 05:05:43 1994  William Perry  <address@hidden>
-
-
-* w3.el: Fixed a problem with fetching of #xxx links.
-
-* w3.el: Applied patch from Darrell Kindred <address@hidden> that
-fixed quite a few problems in the news handling.  Should be
-a lot faster now.
-
-* w3.txi: Fixed a few problems in the VM, RMAIL, and GNUS sections
-
-Sat Jul  2 18:31:50 1994  William Perry  <address@hidden>
-
-* w3-vars.el: Removed bogus entry in w3-persistent-variables
-
-* w3.el: Fixed storing of w3-current-last-buffer and w3-goto-last-buffer
-
-Thu Jun 30 23:39:02 1994  William Perry  <address@hidden>
-
-* w3-vars.el:
-Changed definition of w3-running-lemacs to take WinEmacs into account.
-
-* w3-lemac.el:
-Changed references to string-to-number to string-to-int for older
-lemacs versions
-
-Wed Jun 29 05:24:53 1994  William Perry  <address@hidden>
-
-* w3-lemac.el, w3-e19.el:
-Added an option for local cacheing of files to the Options menu
-
-Mon Jun 27 15:03:12 1994  William Perry  <address@hidden>
-
-* w3-e19.el:
-Added check for whether menu-bar-help-menu was bound before defining
-keys in it
-
-Tue Jun 14 12:25:09 1994  William Perry  <address@hidden>
-
-* w3-e19.el: Fixed problem with the menu
-
-Mon Jun 13 14:13:56 1994  William Perry  <address@hidden>
-
-* w3.el: Made sure everywhere w3 does a completing-read binds
-completion-ignore-case to t
-
-* w3.el: Few fixes from using url-maybe-relative
-
-Thu Jun  9 12:51:03 1994  William Perry  <address@hidden>
-
-* w3-e19.el: Activated the Help menu in FSF v19 again.
-
-Wed Jun  8 01:20:36 1994  William Perry  <address@hidden>
-
-
-Tue Jun  7 20:08:20 1994  William Perry  <address@hidden>
-
-* w3.el: Fixed problem with empty titles.
-
-* w3-lemac.el:
-Fixed references to w3-use-hypertext-gopher and w3-directory-format variables
-
-* w3.el: Hacked up w3-submit-bug to be able to use mh-smail
-
-
-* w3.el: Changed the color-reducing process to be optional
-
-Mon Jun  6 19:56:46 1994  William Perry  <address@hidden>
-
-* w3-vars.el: More HTML+ latin1 entities
-
-Sun May 29 02:26:30 1994  William Perry  <address@hidden>
-
-* w3-vars.el: More HTML+ entities
-
-Sat May 28 14:14:19 1994  William Perry  <address@hidden>
-
-* w3-e19.el:
-Fixed problem with w3-back-link.  Could not go back to the only link
-in a buffer if you were past its endpoint
-
-* w3.el: w3-preview-buffer should work again, along with
-w3-show-hotlist/history-list, etc.
-
-* w3-vars.el: Yet more HTML+ entities.  Only 22 left to figure out.
-
-* w3-vars.el: Added more of the HTML+ entities
-
-Fri May 27 19:54:49 1994  William Perry  <address@hidden>
-
-* w3.el: Fixed a problem with PRE fixing
-
-Sat May 21 10:23:16 1994  William Perry  <address@hidden>
-
-
-* w3.el: Fixed the URL completion
-
-* w3.el: Fixed a problem with the <embed> tag and the url package
-
-
-* w3-e19.el, w3-emacs.el, w3-epoch.el, w3-lemac.el, w3-mac.el, w3-mule.el, 
w3-srch.el, w3-vars.el, w3.el:
-Lots and lots of changes to use the new url.el package
-
-Fri May 20 16:20:59 1994  William Perry  <address@hidden>
-
-* w3-lemac.el: Fixed problem where graphic entities were disappearing
-
-Thu May 19 12:18:41 1994  William Perry  <address@hidden>
-
-* w3.txi: Fixed a few bad pointers
-
-* add-to-dot-emacs: Initial revision
-
-
-* w3-lemac.el:
-Moved back in the old code for w3-insert, w3-fix-extent-endpoints to
-get around bug in lucid emacs 19.10 with 'start-open and 'end-open
-extent properties.
-
-Wed May 18 20:30:24 1994  William Perry  <address@hidden>
-
-
-* w3.el: Now can have a max # of password entry attempts before bombing out and
-displaying the error message from the server.  w3-max-password-attempts
-
-
-* w3.el: Fixed problem in w3-mail-document-under-point
-
-
-* dist.Makefile: The great name change to 8.3 compatible
-
-
-* w3.el: Fixed problem in file/ftp handling if there was no file in the url
-(ftp://host.domain), etc.
-
-* w3-e19.el: Provide w3-e19
-
-* w3.txi: Added chapter/example for interfacing with RMAIL
-
-* w3-lemac.el:
-Added definition of emacs-major-version and emacs-minor-version if
-they aren't already defined.  Use this to merge w3-lemacs.el and
-w3-old-lemacs.el
-
-* w3-vars.el: Removed references to w3-running-old-lemacs
-
-
-Tue May 17 23:30:23 1994  William Perry  <address@hidden>
-
-
-* w3.el: Honor the new nametemplate mailcap clause
-
-* w3-e19.el, w3-lemac.el, w3-vars.el, w3.el:
-Removed the annotations menu.  moved to one entry in the main WWW menu
-Cleaned up some of the annotation code.
-
-* w3-e19.el:
-Only allow use of overlays in emacs19, due to some bugfixes in 19.23
-
-* w3-lemac.el: Disabled graphics in lemacs 19.9, since I switched to using
-annotations, and they don't exist in 19.9
-
-Mon May 16 20:49:09 1994  William Perry  <address@hidden>
-
-* w3.el: Fixed problem with an old mm-mime-viewer call that didn't get fixed,
-and a work around for the autoloading of ange-ftp in emacs19
-
-* w3.el: Change to w3-grok-file-href to check for whether a file exists, even
-if a // is in the string (for something like file://usr/local/ blah
-blah blah.  Thanks to David Hughes for the patch.
-
-* w3.el: Removed group annotation code.
-Sped up the removal of whitespace by using subst-char-in-region
-instead of replace-regexp .
-
-* w3-lemac.el:
-Changed the options menu -> delay by image type to be actual toggle items.
-
-
-* w3.el: Removed klunky caching strategy.
-w3-current-mime-viewer now holds the complete information returned by
-mm-mime-info.
-The viewer code now only shows the output of commands if it gets any.
-No more prompting or setting of w3-always-show-output is necessary.
-
-* w3-vars.el: Removed obsolete w3-always-show-output
-
-Sun May 15 19:23:57 1994  William Perry  <address@hidden>
-
-* dist.Makefile: Now distribute mm.el
-
-
-* w3-lemac.el:
-Now add options menu before the Save Options menu in lemacs 19.10
-
-
-* w3.el: Switched to using my new mm.el package for mime stuff.
-
-* w3-vars.el: Removed old w3-xxx vars related to mailcap and mimetype parsing.
-
-* w3-mac.el: The Macintosh menus now work.
-
-Fri May 13 20:45:39 1994  William Perry  <address@hidden>
-
-* w3-vars.el: Added ` to the syntax table as a quote operator
-
-* w3-vars.el: Switched from giftoppm to giftopnm
-
-* w3.el: Changed the x-exec handling so that it can't mess up the
-process-environment by accident (thanks to Jamie Zawinski) for the
-info.  Also changed it so that the environment is only messed with if
-the executable is actually found somewhere in w3-local-exec-path.
-Save a few conses and string creations.
-
-Thu May 12 18:11:51 1994  William Perry  <address@hidden>
-
-* w3.el: Fixed a few problems in the cleanup of unrecognized tags, as well as
-header handling.
-
-* w3-lemac.el: Fixed a few image-related quirks.
-
-
-* w3-lemac.el: Removed cursor changing code.
-
-
-* w3.el: Forgot to (widen) after the new MIME parasing code.
-
-
-* w3.el: Rewrote w3-parse-mime-headers to extract its information from the
-buffer instead of doing lots of work on strings/etc.  Also rewrote
-part of the guessing of mime-types when no content-type explicitly
-given.
-
-* w3.el: The no_proxy environment variable can now hold a unix-shell-type
-comma-separated list of wildcards, and it will be transformed into a
-real regular expression.
-
-* w3.el: Will now send Pragma: no-cache when doing a reload. . .
-Also now supports the no_proxy environment variable.
-
-* w3.el:
-Fixed a few places where w3-insert-graphic was still called the old way.
-Also fixed problem where local images weren't being converted correctly.
-
-* w3-lemac.el, w3.el: Fixed various compilation errors
-
-* w3-lemac.el:
-Basis for ismap image clicking enabled.  Sends off quite the wrong
-area (x,y relative to emacs frame, not the image).  Should be trivial
-to fix with a few additions to the C code.
-
-
-* w3.el:
-Seem to have fixed the problem of inlined images not being used as links.
-
-
-* w3-lemac.el:
-w3-find-specific-link will now highlight the correct extent until
-input is available.
-
-* w3.el: Finally really fixed the bug in the infinite recursion when building
-lists.  Problem was with unterminated lists.
-
-* w3.el: Following a named link (#XXX) will now push the mark so you can get
-back to it with C-u C-space
-
-Wed May 11 22:35:33 1994  William Perry  <address@hidden>
-
-
-* w3.el: Fixed problem of remote files being formatted incorrectly.
-w3-buffer-is-hypertext was not always returning the correct value.
-
-
-* w3.el: Links within headers should look better now.
-
-* w3-e19.el: New versions of the overlay-specific functions, plus changed the
-default under emacs19 to be using overlays.
-
-* w3-e19.el: Few patches for highlighting headers.
-
-* w3.el: No longer assume temporary files go in /tmp... now uses
-w3-temporary-directory and expand-file-name for all temporary file
-creations
-
-
-* w3.el: Patches from Bob Weiner to get asynchronous retrieval through a 'host
-gateway working.
-
-* w3.el:
-Hopefully fixed the not-guessing-if-a-buffer-is-html bug for remote file access
-
-* w3.el: Fixed problem in w3-follow-link with NAMEd links with no href.
-
-* w3.el: Fixed problem with infinite recursion during list building.
-
-* w3-vars.el:
-w3-mime-viewers has been trimmed down a lot, will depend on the users
-mailcap much more.
-
-* dist.Makefile: Can now 'make mailcap'
-
-* w3.el: w3-parse-mailcap can now take a URL.
-
-* w3.el: Killing of HTML comments will now make sure there is whitespace where
-the comment used to be. ie: (some text<!-- ack -->more text ==> some
-text more text)
-
-* w3.el: Fixed problem where text immediately after a </pre> tag but before a
-<p> tag weren't filled correctly.
-
-* w3.el: Changed w3-mailcap-entry-passes-test to check for the common "test -n
-$DISPLAY" cases and handle them automatically in elisp instead of
-shelling out to check the return status.
-
-* w3.el: Changed all after-hook-function references to be after-hook-functions,
-and use add-hook instead of explicit setq's
-
-* w3.el: The mailcap parsing routine now honors the 'test' clause
-
-* w3.el: fixed problem in w3-parse-args
-
-Tue May 10 23:56:29 1994  William Perry  <address@hidden>
-
-* w3-lemac.el: Few changes to the extent handling code.  No more hacks for
-w3-fix-extent-endpoints or w3-insert
-
-* w3.txi: Few bug fixes to the docs.
-
-Mon May  9 20:41:03 1994  William Perry  <address@hidden>
-
-* w3-lemac.el:
-If an image is more than 1/2 the size of the current screen, it will
-be moved down onto a line by itself.
-
-* w3.el: Fixed bug in title handling if there was an end tag like <title >
-
-* w3-lemac.el:
-Workaround for bug in lucid emacs where deleting text in map-extents
-would do _very_ bad things.  Loading inlined images/mpegs would
-sometimes cause it to crash.
-
-* w3-lemac.el: More changes to the image handling
-
-Sun May  8 17:46:14 1994  William Perry  <address@hidden>
-
-* w3-lemac.el: Changed to using annotations for inlined images
-
-Sat May  7 16:22:58 1994  William Perry  <address@hidden>
-
-
-* w3.el: Changed w3-file-attributes to not use HTTP/1.0 to HEAD a file unless
-w3-be-anal-about-file-attributes is non-nil
-
-* w3-lemac.el:
-Can now filter inlined image loads based on MIME type and/or file size.
-
-Thu May  5 16:26:19 1994  William Perry  <address@hidden>
-
-* w3-lemac.el: New submenu for lemacs - restrict image loads by type.
-
-* w3.el: Fixed problem in the after-change-function yet again.
-
-
-* w3.el: Few changes to the after-change-function handling, as well as changes
-to the mpeg loading code
-
-* w3-lemac.el:
-New menu items for showing inlined mpegs or not, as well as functions
-to load single and multiple delayed mpegs.
-
-* w3-vars.el: New variable w3-delay-mpeg-loads
-
-* w3-e19.el:
-Builtin support for mouse-movement keys, if 19.23 ever works with them...
-
-Tue May  3 20:25:40 1994  William Perry  <address@hidden>
-
-* w3-lemac.el, w3-vars.el, w3.el:
-Lucid emacs 19.10 or higher can now display inlined mpegs by default.
-Use <embed src="url of mpeg to play" type="video/mpeg"> to try it out.
-
-Mon May  2 22:02:21 1994  William Perry  <address@hidden>
-
-* w3.txi:
-Added in documentation of the emacs19 faces hacking for dumb terminals
-
-* w3-lemac.el: Applied patch by Alastair Burt to fix dumb typo on my part.
-
-* w3.el: Few changes to the 'host gateway code
-
-* w3-e19.el: Fixed problem in w3-find-specific-link in emacs19
-
-* w3.el: Changed w3-parse-args to extract the information out f the original
-buffer instead of wasting 2 or 3 string/buffer creations
-
-* w3-vars.el: Changes to the w3-parse-args-syntax-table
-
-Sun May  1 22:58:34 1994  William Perry  <address@hidden>
-
-* w3.el:
-Fixed problem in w3-after-change-function and escaping % from w3-lazy-message
-
-Fri Apr 29 21:48:26 1994  William Perry  <address@hidden>
-
-* w3-vars.el: New variables for keeping track of status messages better
-
-* w3.el: New way of doing the HTTP transfer status messages.  Now uses the
-after-change-function if available.  This way even asynchronous
-transfers get the good XXX of YYY (ZZ%) transfer messages.  Also now
-support the Status: header, which will be shown instead of the normal
-XXX bytes message.
-
-* w3-vars.el: More HTML+ entities
-
-Thu Apr 28 14:51:32 1994  William Perry  <address@hidden>
-
-* w3.el: Fixed a few problems with the x-exec stuff.
-
-* w3-emacs.el: Fixed problem in v18 mouse support
-
-Wed Apr 27 16:14:01 1994  William Perry  <address@hidden>
-
-* w3-vars.el:
-New variables w3-mime-editors, w3-mime-bitmaps, w3-mime-composers, and
-w3-mime-printers that are initialized from the entries in the mailcap
-file
-
-* w3.el: Rewrote w3-parse-mailcap so that it keeps a _LOT_ more information
-from the mailcap file, including composers, editors, labels, and
-bitmaps.
-
-* w3-e19.el: Few changes to the options and popup menus
-
-* w3-lemac.el: New options menu for new lemacs
-
-* w3-vars.el: Revamped the main menu and popup menus to be shorter
-
-* w3-lemac.el:
-Changed w3-zone-at and w3-zone-data to use new 'w3delayed for delayed images.
-
-* w3.el: Reworked who delayed image processing works.  You can now click on a
-delayed image and it will load just that image.  Similar to how the
-Mosaic clients work.  Also, the ALT tag is inserted if available.  It
-is deleted from the buffer when the image is loaded.
-
-Tue Apr 26 21:33:26 1994  William Perry  <address@hidden>
-
-
-Mon Apr 25 21:16:33 1994  William Perry  <address@hidden>
-
-* w3-lemac.el:
-Should have fixed the ugly interaction between emacs-vers.el and lemacs 19.9
-
-* w3.el: Fixed problem in w3-fix-unknown-tags
-
-Sun Apr 24 19:30:51 1994  William Perry  <address@hidden>
-
-* w3.el:
-A few fixes to the native wais handling - still a little broken though.
-
-* w3-vars.el:
-Changed the help on xxxx menu item to fetch the .html files instead of
-the ones with no extensions - our server sends text/plain with no
-extension - ugh
-
-
-Sat Apr 23 18:57:30 1994  William Perry  <address@hidden>
-
-
-* w3.el: Fixed a problem in w3-parse-relative-link that would cause #X links to
-be doubled to #X#X
-
-* w3-e19.el:
-Can now choose whether you want to use overlays or text properties for
-keeping track of the internal w3 information.  Try
-(put 'w3-emacs19 'use-overlays t) in your .emacs to try it out.
-
-Fri Apr 22 14:53:15 1994  William Perry  <address@hidden>
-
-* w3-e19.el: Removed ugly emacs 19.23 hack that could mess up buffers
-
-* w3.el: Added a function to generate a FORM for posting/mailing a reply to a
-newsgroup.
-
-* w3-lemac.el: Added w3-view-ppm to view p[bp]m files in an xwindow glyph
-
-Thu Apr 21 20:37:24 1994  William Perry  <address@hidden>
-
-* w3-vars.el: Redid the help menu
-
-* w3-lemac.el:
-Changed button binding and menu stuff to conform to new lucid emacs style
-
-* w3.el: Changed w3-prepare-buffer to return the title of the document
-
-Tue Apr 19 23:17:48 1994  William Perry  <address@hidden>
-
-* w3.el: Fixed up w3-parse-args so that it can deal with no trailing " or ' on
-an attribute that started with one.
-
-* w3-lemac.el: Fixed a few of the w3-toggle-xxxx
-
-* w3.el: Made epoch use the old V18-style kill-emacs-hook
-
-* w3.el: Fixed problem with headers having the last char moved down onto a new
-line when using w3-emacs19-hack-faces-p
-
-
-* w3.el: Try using .newsrc-SERVERNAME before just plain old .newsrc.
-
-* docomp.el: More defvar's
-
-* w3.el:
-Backed out one optimization of w3-parse-args that caused emacs19 to barf.
-
-* w3.el: w3-news-server now consults gnus-default-nntp-server,
-gnus-nntp-server, and nntp-server-name if they're bound and non-nil
-and != "".
-
-* w3-e19.el:
-Use glyphs in the display table so that emacs doesn't get as confused
-about the cursor position when using w3-emacs19-hack-faces-p
-
-
-* w3.el: Moved the finding of #xxx links after the loading of images, just in
-case point gets confused.  If no #xxx link, make sure to go to
-(point-min)
-
-Mon Apr 18 23:40:19 1994  William Perry  <address@hidden>
-
-* w3.el:
-Optimized w3-parse-args some more.  Thanks to address@hidden for the input
-
-* w3.el: Fixed problems with ../ as the first part of a relative url
-
-* w3-lemac.el:
-Wrapped the new definition of the options menu in a check for the
-latest version of lemacs
-
-* w3-lemac.el:
-Changed the menus to use the new 19.10 method of menus so that it uses
-Toggle buttons, etc.
-
-* w3.el: Finished implementing the SRC attribute for SUBMIT buttons
-
-* w3-e19.el: Added a hack-vt102 function
-
-* w3.el: New w3-parse-args
-
-
-* w3.el: Added support for a SRC attribute to the submit button
-
-Sun Apr 17 22:28:08 1994  William Perry  <address@hidden>
-
-* w3.el: Fixed error message in w3-hotlist-add-entry, and added function
-w3-hotlist-refresh.
-
-* w3.txi: New hotlist func
-
-Fri Apr 15 21:25:21 1994  William Perry  <address@hidden>
-
-
-* w3-vars.el: Removed some obsolete variables
-
-* w3.el: Fixed the history mechanisms
-
-
-* w3-vars.el: Moved defvar of w3-emacs19-hack-faces-p into main variables file.
-Also moved the default setting of w3-delimit-emphasis and
-w3-delimit-links into w3-do-setup so they will be set correctly if
-dumped with emacs.
-
-
-* w3-e19.el: Can now hack faces for xterm and linux console
-
-* w3.el: Added in support for user:address@hidden ftp URLs
-
-
-* w3-e19.el: Fixed problems in w3-mouse-handler
-
-* w3-e19.el: If you are using VT100's and emacs 19.22, you CAN GET BOLD AND
-UNDERLINED text now.  Please try setting the variable
-w3-emacs19-hack-faces-p to non-nil.  To get rid of it, use M-x
-w3-emacs19-unhack-vt100
-
-
-* w3.el:
-Fixed bug in w3-parse-relative-link that could cause major problems with
-~ and w3-current-file = nil.
-
-Thu Apr 14 22:28:06 1994  William Perry  <address@hidden>
-
-* w3-lemac.el:
-Removed colorize-pixmap call since lemacs takes care of that now.
-
-* w3.el: Fixed problem in w3-search where it did not nuke the last search term
-from the url before appending the latest search string.
-
-* w3.el: the x-exec URL handler will now make sure that all returned messages
-are HTTP/1.0 messages, using the return value of call-process-region
-to get the HTTP/1.0 return status code if one is not explicitly given
-by the script.
-
-* w3.el: Include definition of emacs19-ism 'setenv' for old versions of emacs.
-This function is required to use the x-exec URL.
-
-* w3.el: Fixed some odd formatting of <hr>
-
-
-* w3.el: Added support for the x-exec url
-
-Wed Apr 13 21:58:09 1994  William Perry  <address@hidden>
-
-
-* w3.el: Fixed problem in w3-fix-proxy
-
-* w3-e19.el:
-Fixed a problem with emacs 19.23 and the previous-single-property-change
-
-* w3-lemac.el: Fixed w3-insert to deal with extent-start > extent-end
-
-* w3.el: Fixed the proxy support so that w3-view-url will show the url of the
-proxy'd document, not the entiry 'proxyservice''realurl' garbage
-
-* w3.el: Fixed w3-parse-args yet again...
-
-* w3.el: Few fixes to the newsrc parsing (unbound variables from cut&paste)
-
-* w3.el: Lots more news work.  Now supports parsing the newsrc and only showing
-unread articles in newsgroups, as well as displaying a list of all the
-newsgroups (distinguishes subscribed and unsubscribed groups).
-
-* w3.el: Added links to post to the newsgroup and reply to the author in news
-handling
-
-* w3-vars.el: Added newspost to the list of allowable link types
-
-* w3.el: w3-view-url now works with news: urls
-w3-parse-relative-link now works with news: urls
-w3-format-whole-newsgroup now spits out valid HTML+, and better looking too
-w3-format-news now spits out valid HTML+, looks like GNUS under lucid
-
-Tue Apr 12 08:01:20 1994  William Perry  <address@hidden>
-
-* w3.el: Fixed problem where using a gateway could screw up the recognition of
-an http/1.0 response
-
-* w3-e19.el, w3-emacs.el, w3-epoch.el, w3-lemac.el:
-Changed w3-forward-link and w3-back-link to take a prefix-arg for
-how many links to go forward.
-
-* w3.el:
-Fixed a bug in w3-parse-relative-link that would expand ~/ when it shouldn't
-
-Mon Apr 11 23:27:43 1994  William Perry  <address@hidden>
-
-* w3.el: Revamped w3-create-multipart-request to only use valid separator chars
-
-
-* w3.el: Fixed problem in w3-parse-docs-menu.  Added code to create a MIME
-multi-part request.
-
-* w3.el: Fixed problem in w3-form-encode for name=isindex when it wasn't the
-only entry area in the form (a submit button, etc)
-
-* w3.el: fixed problem in list-expansion
-
-* w3.el: Fixed problem in w3-parse-args if something was (read) as a number
-instead of a string.
-
-* w3.el: Fixed a problem in w3-parse-args with emacs19
-
-Sun Apr 10 21:51:40 1994  William Perry  <address@hidden>
-
-* w3-e19.el: w3-add-zone now uses the mouse-face property in emacs 19.23
-
-* w3-e19.el: Fixed various problems related to lmenu in emacs 19.23
-
-* w3.el: Fix to the mosaic docs-menu parsing
-
-* w3.el: No longer send the SUBMIT button when submitting forms
-
-* w3.el: New code to parse the Mosaic documents.menu file to add user-specified
-menus in lucid/FSF19
-
-
-Sat Apr  9 20:49:30 1994  William Perry  <address@hidden>
-
-* w3.el: Rewrote the SGML-comment killing code... should work better now.  Not
-sure if it is still compatible with the Mosaic way of killing
-comments, but Mosaic is broken in that regard, so I don't really
-care. :)
-
-* w3.el: w3-show-hotlist will show the hotlist entries in the same order that
-they were stored, instead of the old reverse-order behavior.  Also
-changed some of the automatically generated HTML to be strictly
-correct HTML+.
-
-* w3-vars.el:
-Also removed www.cis.ohio-state.edu from the bad-server-list... is now
-an HTTP/1.0 server
-
-* w3-vars.el:
-Removed cs.indiana.edu from the w3-bad-server-list, as we have finally
-upgraded to plexus.
-
-* w3.el: w3-submit-bug now sends me the URL of the current buffer (if any)
-
-* w3.el: Fixed a problem with file:./foo being interpreted wrong.
-
-* w3.el: Rewrote w3-basepath and w3-parse-relative-link to use
-expand-file-name, file-name-nondirectory, and file-name-directory.
-More reliable than the old regular expressions
-
-
-* w3.txi: Fixed more texinfo bugs.
-
-* w3-srch.el: Few tweaks in searching.
-
-* w3.el: Another bugfix to w3-parse-args
-
-* w3.el: Generate errors for non-existent local files now
-
-Fri Apr  8 23:10:20 1994  William Perry  <address@hidden>
-
-* w3-vars.el: Fixed all the missing HTML entities, and fixed several others.
-
-* w3.el: Fixed problem in w3-insert-entities-in-string using &nsp; instead of
-&ensp;
-
-* w3.el: Added a 'binary' option to w3-save-as
-
-* w3.el: New w3-parse-args
-
-
-* w3.txi: Wrote the PGP/PEM doc. (well, borrowed them from address@hidden).
-
-* w3.txi: Wrote the using with vm and using with gnus nodes.
-
-* w3.el: Added an autoload for w3-follow-link
-
-* w3.txi: Fixed a few reference problems.
-
-* w3.txi: Lots of variable definitions added.
-
-Thu Apr  7 22:32:06 1994  William Perry  <address@hidden>
-
-* w3.txi: Actually wrote the gateway/firewall documentation.
-
-* w3-e19.el: Fix-extent-endpoints will now work better.
-
-* w3.el: Fixed a problem with w3-create-mime-request and interaction with the
-CMU-BEAK server
-
-* w3.el: Fixed w3-parse-args for good I hope... now infers missing "s
-
-* w3.txi: Fixed some validation errors
-
-* w3.el: Ignore case in completing-read in w3-use-links
-
-<hr> parsing should now be more robust.  Paragraph filling after the
-<hr> will no longer be hosed.
-
-* w3.el: More work on w3-parse-args - think I got it right this time.
-
-* w3.txi: Fixed problem with setting the info filename
-
-* w3.txi: Fixed a few heirarchy bugs
-
-* w3.el: Rewrote w3-insert-entities-in-string to use mapconcat - quicker/more
-efficient than lots of string-matches and substrings, especially for
-small strings.
-
-Fixed problem in w3-parse-args that would swallow multiple spaces,
-even from quoted attributes (ALT=" " => ALT=" ")
-
-* w3-vars.el: Added &lt back into the w3-html-entities list.
-
-* w3.el: Fixed bug in the single-form-entry-in-a-form submission.  Was only
-sending the form value, not the name/value pair.
-
-Reworded the 'fixing bad html' messages to be 'checking for bad html'
-so that it wouldn't confuse people and make them log a bug.
-
-* w3.el: New way to retrieve wais doc-ids... doesn't work all the time
-  though - why not?
-* w3.el: Removed the call to dps-display-color-cells, as it causes a
-  coredump in all the versions I have ever tried on the NeXT.
-* w3-lemacs.el: Fixed problem with quoting percents in w3-track-mouse.
-
-Thu Mar  3 18:57:03 1994  William M. Perry  (address@hidden)
-* w3.el: Fixed problem in new header handling.
-* w3.el: w3-file-attributes will no longer choke if given a null argument.
-* w3-search.el: Remove all '#XXXX' references from URLs, so it is easier
-  to tell if we have visited them before
-* w3-vars.el: Changed w3-header-chars-assoc to use characters instead of
-  strings, and use make-string to make the header delimiters the same size
-  as the header.  This can still mess up on headers with inlined images,
-  but all in all it looks much better.  Thanks to Jared Rhine for the
-  suggestion.
-* w3.el: Changed lots of functions to use mapcar instead of while loops -
-  sould be slightly faster.
-* w3.el: Added hook to kill-emacs-hook to write out the global history if
-  necessary.  Also rewrote part of w3-write-global-history 
-
-Wed Mar  2 21:57:44 1994  William M. Perry  (address@hidden)
-* w3.el: Fixed problem with w3-file-attributes and non-existend
-  local/remote files.
-* dist.Makefile: Added mac and searching files to the distribution.
-* w3.el: w3-retrieve now updates w3-global-history-completion-list
-* w3.el: w3-fetch now does a completing read so that you can have
-  completion based on your .mosaic-global-history file.
-* w3-search.el: w3-do-search can now take an optional BASE argument, that
-  is the url to start searching from.  The search function also now checks
-  to see if there is a buffer visiting a url in the queue before
-  retrieving it.
-* w3.el: w3-save-as now uses w3-current-source if possible.  Saves time on
-  retrieval.
-* w3-vars.el: Fixed menu entry for 'View Source' that was still calling
-  old function names.
-* w3-lemacs.el: If w3-track-mouse is non-nil, and w3-link-cursor is
-  defined, change the mouse cursor to w3-link-cursor when over a link.
-  w3-link-cursor defaults to "hand2".  w3-link-cursor is set up in
-  w3-do-setup only if w3-link-cursor is a string, so the user can set it
-  to a pixmap in their .emacs file if they wish.
-* w3.el: <BR>s in lists now handled better.
-* w3.el: The new graphic entity support now honors the
-  w3-delay-image-loads variable
-
-Tue Mar  1 23:55:50 1994  William M. Perry  (address@hidden)
-* w3-lemacs.el, w3-epoch.el: Added binding of w3-source to 't' so that
-  w3-retrieve will always grab a buffer for retrieving inlined images
-* w3-search.el: Miscellaneous fixes...
-* w3.el: More changes to w3-file-attributes to compensate for HTTP/1.0
-  servers that don't implement HEAD
-* w3.el: Fixed error in determining if a URL exists or not in
-  w3-file-attributes
-* w3.el: w3-file-attributes won't send a HEAD request to a known
-  non-http/1.0 server
-* w3-search.el: Can now specify the search term as a function, and it will
-  be funcall'd with the URL as an argument.  RESTRICTION can be either a
-  regular expression or a function name - if string-match or funcall
-  against the URL fails, don't insert it into the queue.  Also now smarter
-  about not visiting the same URL multiple times.
-* w3.el: Fixed a dumb mistake in w3-file-attributes
-* w3-search.el: The searching functions work now.  Takes a regular
-  expression and a max-hops argument.  Returns a list of URLs that the
-  regular expression was found in.
-* w3-emacs19.el: Fixed problem with radio buttons/checkboxes at the end of
-  lines in emacs19
-* w3.el: Don't send the referer: field if using as a home-page or manually
-  requested URL
-
-Mon Feb 28 22:12:18 1994  William M. Perry  (address@hidden)
-* w3-emacs19.el, w3-lemacs.el, w3-old-lemacs.el, w3-vars.el: Removed
-  redundant definitions of w3-XXXX-menu.  w3-options-menu is still in each
-  file, since new lucid emacs has some extra features I can use in it.
-* w3.el: Will no longer copy local files into a buffer, then into /tmp
-  when passing to an external viewer - creates a symbolic link instead.
-
-Mon Feb 28 03:24:33 1994  William M. Perry  (address@hidden)
-* Release of v2.0.22
-* w3.texinfo: Description of new proxy services.
-* w3.el: Fixed problem in w3-fix-ampersands
-
-Sun Feb 27 23:37:53 1994  William M. Perry  (address@hidden)
-* w3-vars.el: Fixed un-escaped "s in defvar for w3-proxy-services
-* w3.el: Changed gopher/ftp/file directory handling to use the new
-  graphical entities instead of IMG
-* w3-vars.el: New variable w3-graphics-entities-alist holds an assoc list
-  of entities and the names of bitmaps to replace them with.
-  w3-icon-directory is appended to the front of each filename
-  automatically.
-  New variable w3-gopher-icons which holds the new graphic entity
-  references to describe each type of object.
-* w3.el: Tweaks to wais code... seems to be working now.
-* w3.el: Fixed stupid problem in the basic authorization code where I
-  wasn't setting the variable in a while loop to (cdr var)
-* w3.el: Added in proxy gateway support as put forth by Lou Montulli and
-  others.  Uses the new ACCESS_proxy environment variables.
-* w3.el: Multiline text entry boxes now reset correctly when
-  w3-revert-form is called
-* w3.el: Single input-area forms now submit themselves after you enter the
-  data.  No need for a submit button.
-* w3.el: Fixed error in w3-http, where it was sending the output of
-  w3-view-this-url instead of w3-view-url to w3-create-mime-request.
-  Referer: fields will work better now.
-  Basic authorization will now work with inheritance from protected
-  directories. (/foo/bar/baz.html is protected, then so is
-  /foo/bar/quuux.html, as is /foo/bar/baz/temp.html, etc)
-* w3.el: Wais support seems to be working...
-* w3.el: More fixes to the wais searching functions.
-
-Sat Feb 26 20:44:39 1994  William M. Perry  (address@hidden)
-* w3.el: Changed w3-prepare-buffer to take an optional argument,
-  no-display, which if t will keep it from renaming the buffer and
-  displaying it.
-* w3-vars.el: Added &lt and &gt to the list of entities, even though they
-  are wrong, since so many people seem to be using them.
-* w3.el: Strip out port numbers in ftp requests.
-* w3-lemacs.el: Spaces are now inserted after a graphic in lucid, and the
-  graphic extent is only on that one space.
-* w3-emacs19.el, w3-lemacs.el, w3-old-lemacs.el: Changed w3-zone-at to
-  return the extent, not the data.
-* w3.el: Better cleaning of telnet buffers before parsing.
-* w3.el: Fully implemented the Referer: field.  Also, w3-mime-response-p
-  should be a little more robust.  Should also kill an http request when
-  using the gateway support.
-* w3-vars.el: New variable w3-telnet-header-regexp that takes the place of
-  w3-telnet-header-length.  Addition of dvi, tex, and texinfo files to the
-  w3-mime-extensions list.
-* w3.el: Few changes to w3-format-directory in case file-attributes
-  returns nil
-* w3-emacs.el: w3-map-links will actually work in emacs 18 now.
-
-Fri Feb 25 23:17:51 1994  William M. Perry  (address@hidden)
-* w3-lemacs.el: Another dumb mistake in w3-zone-at
-* w3-emacs.el, w3-emacs19.el, w3-lemacs.el, w3-old-lemacs.el, w3.el: Fixed
-  dumb mistakes in w3-zone-at and the newly rewritten commands
-* w3.el: Fixed a few typos in w3-source-document
-* w3-emacs.el, w3-emacs19.el, w3-epoch.el, w3-lemacs.el, w3-old-lemacs.el,
-  w3.el: Rewrote w3-load-delayed-images, w3-view-this-url, and
-  w3-follow-link to use the generic w3-zone-at/w3-zone-data functions, so
-  they won't have to be in the emacs-specific files anymore.  Much easier
-  to maintain them this way.
-* w3-emacs.el, w3-emacs19.el, w3-epoch.el, w3-lemacs.el, w3-old-lemacs.el,
-  w3.el: Removed all emacs-specific versions of w3-complete-link, and put
-  w3-complete-link into w3.el and have it use the new w3-map-links.
-  Easier to maintain.
-* w3-emacs.el, w3-emacs19.el, w3-lemacs.el, w3-old-lemacs.el: New function
-  w3-map-links that calls a specified function on all the links in a
-  certain buffer.
-* w3-mac.el: Basic support for Macintosh menus... wrote a function to use
-  the lucid style menu descriptions.
-* w3-lemacs.el: Fixed problem with bad add-menu structure when the Options
-  menu already exists.
-
-Thu Feb 24 22:37:32 1994  William M. Perry  (address@hidden)
-* w3.texinfo: New chapter on future directions
-* w3-epoch.el: Fixed epoch graphics handling so it won't get a buffer
-  read-only-error, and also won't always look in w3-working-buffer, in
-  case the buffer has been renamed by the time it gets called.
-* w3.el: Renamed several functions so that it will be easier for new users
-  to do command completion (all hotlist stuff is w3-hotlist-XXX, etc).
-  Also several new functions to operate on the url the cursor is on
-  (w3-mail-document-under-point, w3-source-document-at-point, others).
-* w3-vars.el: Changed lots of keybindings.  General rule is now that
-  lowercase keys act on the current URL, and uppercase works on the url
-  under point. Major changes:
-  s -> document source, NOT SEARCH
-  M-s -> search document
-  p -> print document, NOT back link
-  Q -> w3-leave-buffer
-* w3.el: Rewrote w3-store-in-cache so that it stores info on disk instead
-  of in memory - can have a larger cache this way and not use up all your
-  memory.
-* w3-lemacs.el: New function w3-write-zones that creates lisp expressions
-  that restores extents when it is eval'd.
-
-Wed Feb 23 03:50:06 1994  William M. Perry  (address@hidden)
-* w3.el: A few more changes to the wais code
-* w3.el: More refinements to the WAIS code... now outputs URLs that are
-  like lynx/Mosaic, and also compatible with the WAIS gateway that NCSA
-  provides.
-
-Tue Feb 22 23:39:43 1994  William M. Perry  (address@hidden)
-* w3-old-lemacs.el: Fixed a few nesting errors in w3-view-this-url
-* w3-emacs19.el: Few fixes to file-name-handler stuff
-* w3.el: WAIS handling can now output an html document of a search.
-  Outputs the score and the file name.  Also function to retrieve a
-  document given its doc-id.
-* w3-emacs19.el: Patch for setting up the file-name-handler-alist from
-  address@hidden
-* w3.el: New function to parse out the .mosaic-global-history file and
-  store it in an assoc list for use in completion.
-* w3-mac.el: Initial revision
-* w3.el: More changes to the wais handling code.
-* w3-vars.el: New variable w3-waisq-prog that controls where the waisq
-  executable is looked for.
-* w3.el: Small change to w3-convert-html-to-latex to have slightly better
-  stripping of unknown tags.
-  Skeleton of wais support - requires waisq from Thinking Machines Corp's
-  wais8-5b1.
-
-Mon Feb 21 17:36:25 1994  William M. Perry  (address@hidden)
-* w3.el: New function w3-quotify-attributes to try and fix bad html docs.
-* w3.el: Added a few changes to convert-html-to-latex to honor
-  w3-latex-docstyle, and also allows inlining of postscript images.
-  Thanks to address@hidden (Benno Blumenthal) for the
-  batches.
-
-* w3-vars.el: New variable w3-latex-docstyle that controls what
-  documentstyle a latex document has.  Useful for going into two-column
-  mode or doublesided, etc.
-* w3-lemacs.el: Changed w3-back-link to go to 1+ the extent start position
-  to get around (extent-at) bug
-* w3-vars.el: Added www to the nonrelative link regular expression so that
-  links of that type will be parsed correctly.  New variable
-  w3-current-source holds the HTML source of a document.
-* w3.el: Most of the automatically generated html can now be referenced
-  with URLs like WWW://type/data.  Errors are generated this way, and you
-  can get the source for things like hotlists, history lists, help items,
-  etc.
-  Now stores the complete source of a document in a buffer-local variable,
-  so printing/mailing HTML and/or LaTeX is _MUCH_ faster, as is getting
-  the documents source - never any need to refetch it.  w3-reload-document
-  still does a fresh fetch though.
-* w3-emacs.el: w3-next-zone and w3-previous-zone now skip 'w3graphic zones
-* w3.el: Fixed small bug in re-insertion of SELECT menu items.  Stuck too
-  many spaces at the end of it.
-* w3-emacs.el: Make sure that x-popup-menu is bound before fset'ing
-  w3-x-popup-menu to it when in emacs 18
-
-Fri Feb 18 02:50:42 1994  William M. Perry  (address@hidden)
-* w3.el: Fixed problem in the textarea handling... misplaced a )...
-
-Thu Feb 17 19:38:50 1994  William M. Perry  (address@hidden)
-* w3.el: Fixed problem with w3-quotify-percents and null arguments...
-* w3-emacs.el, w3-emacs19.el, w3-lemacs.el, w3-old-lemacs.el, w3.el: Use
-  w3-quotify-percents in the (format ...) command in w3-view-this-url and
-  w3-view-url so that form queries don't mess up the format command` and
-  make it think it needs more arguments.
-* w3-emacs.el: Use insert-before markes in emacs 18
-* w3.el: Append fill-prefix to the paragraph parsing code.
-
-Wed Feb 16 21:47:33 1994  William M. Perry  (address@hidden)
-* w3-emacs19.el: Fixed dumb mistake in the setting up of
-  file-name-handler-alist... losing because of a misplaced ')'.  Gotta
-  love lisp :)
-* w3.el: Lots more file-ish type functions that will work with URLs.
-  w3-directory-p, real file-attributes, and stubs for more.
-* w3-emacs19.el: Redid the file-name-handler functions.  Stole
-  layout/ideas from the ange-ftp stuff from v19.
-* w3.el: Will check if running on a mono display and do dithering if it
-  is. Fixed problem with <LINK> parsing where it would delete too many
-  chars. Fixed problem with queries in w3-form-encode... too many &'s
-  Few more NeXTstep changes.
-* w3-lemacs.el: Lemacs menu's should no longer nuke people's Options menu
-  if it already exists.  Will add a submenu called 'WWW' to the
-  already-existing menu.
-* w3-emacs19.el: Added file-name-handler-alist support for emacs 19.
-  Works for find-file-other-window, find-file-other-screen, file-exists-p,
-  file-readable-p, file-executable-p, file-attributes, and
-  file-directory-p.
-* w3.el: Added new functions w3-file-size and w3-file-exists.
-* w3-emacs19.el: A few changes for NeXTstep emacs 19.  Menus now work,
-  storing URLS into the kill ring/NeXT clipboard, and loading of lmenu if
-  in dps. Still no [x|dps]-popup-menu though.
-
-Tue Feb 15 03:42:45 1994  William M. Perry  (address@hidden)
-* w3.el: Fixed w3-form-encode so that it actually returns the correct
-  query string if in a gopher or isindex form area...
-
-Mon Feb 14 19:12:31 1994  William M. Perry  (address@hidden)
-* w3.el: Multiline text area entry should now work in emacs 18 (put the
-  w3-do-text-entry outside of the save-excursion)
-* w3.el: Make w3-prepare-buffer mark the buffer as not modified.
-* w3-lemacs.el: Change w3-insert to insert-before-markers so that inlined
-  images will show up in the right place more often.
-
-Sat Feb 12 03:15:46 1994  William M. Perry  (address@hidden)
-* w3.el: Fixed a read-only buffer problem when fetching images...
-* w3-lemacs.el: New version of w3-track-mouse that doesn't need to move
-  (point) in the buffer... should be faster.
-
-Thu Feb 10 21:47:56 1994  William M. Perry  (address@hidden)
-* w3.el: Moved the image parsing until after everything else has been
-  parsed... this should fix everyones problems with inlined images
-  disappearing sometimes - they were attached to parts of the buffer that
-  was removed by other parsing routines.
-* dist.Makefile: The making of w3.info now changes the setfilename
-  directive in w3.texinfo to point to INFODIR.
-* w3-lemacs.el: Set end-open and start-open extent properties if setting
-  up a form.
-* w3.el: Fixed a type in one of the mule/forms patches.
-* w3-mule.el, w3-vars.el, w3.el: Miscellaneous fixes from Shin-ya Sato
-  <address@hidden> that make forms work much better in Mule.
-
-Wed Feb  9 23:37:11 1994  William M. Perry  (address@hidden)
-* w3-lemacs.el: Don't mess with graphic extents in w3-fix-extent-endpoints
-* w3-epoch.el, w3-lemacs.el, w3-vars.el, w3.el: More error checking in the
-  image code
-* w3.el: Fixed typo in w3-fetch-with-pgp...
-* w3.el: Slightly more intelligent way of doing w3-form-encode.
-
-Mon Feb  7 03:31:17 1994  William M. Perry  (address@hidden)
-* w3.texinfo: miscellaneous fixes/grammatical fixups
-* w3-epoch.el, w3-lemacs.el: Removed stupid message about possibly failing
-  to load an image because of the color map.
-
-Sun Feb  6 19:24:27 1994  William M. Perry  (address@hidden)
-* w3-vars.el: Changed w3-default-homepage to be defvar'd to nil, so that
-  w3-do-setup will grab the WWW_HOME variable if it can.
-* w3.texinfo: Fixed a few stupid bugs in @node structures that occurred
-  because I removed a node.
-* w3.el: Fix entity references in <TITLE> of documents.
-
-Sat Feb  5 02:55:05 1994  William M. Perry  (address@hidden)
-* Version 2.0 released.
-* w3.el: w3-public-key-exists will actually work now.
-* w3.el: Moved the w3-handle-graphics call within the let binding of
-  w3-handle-base, so that inlined images will work with <BASE> tags.  This
-  also fixes the problem of not being able to select the link an image is
-  covering with an ALT tag.
-* w3.el: Renamed w3-lemacs-19.8 to w3-old-lemacs because of problems with
-  v18 byte compiler.
-
-Fri Feb  4 17:11:03 1994  William M. Perry  (address@hidden)
-* w3-vars.el: Change w3-running-lemacs and w3-running-new-lucid to be
-  w3-running-old-lemacs and w3-running-lemacs, respectively.
-* w3-epoch.el, w3-lemacs.el, w3-vars.el, w3.el: Revamped some of the
-  w3-insert-graphic code so the conversion functions can be shared between
-  epoch & lucid.  Also added in code so that people with only XBM support
-  can use the inlined image code.
-* w3.el: Added functions to grab the servers public key from finger
-  information if possible when using PGP and PEM encryption
-* w3-html+.el: Much better table parsing routines - still not finished yet.
-
-Thu Feb  3 22:17:19 1994  William M. Perry  (address@hidden)
-* w3.el: Allow ~s in urls in w3-get-url-at-point
-* w3.el: Moved just the variable definitions to an outside file to ease
-  byte-compiling.  No longer loads whole w3.el just to get variable
-  definitions
-* w3.el: Moved w3-load-flavors into w3-do-setup
-
-Wed Feb  2 22:41:48 1994  William M. Perry  (address@hidden)
-* w3.el: w3-make-sequence now returns the sequence in ascending order.
-* w3.el: Changed the nntp/flee handling in w3-nntp-stat-newsgroup so that
-  it won't hang indefinitely.
-* w3.el: Made a few changes to the require functions so that mailcrypt and
-  nntp are not required until absolutely necessary.
-* w3-hyperbole.el: New version from address@hidden
-* w3-mule.el: Changed w3-grok-gopher-url to w3-grok-gopher-href
-* w3-docomp.el, w3-new-lucid.el: More compiler warnings fixed
-
-Tue Feb  1 21:47:04 1994  William M. Perry  (address@hidden)
-* w3.el: Fixed a few problems in w3-grok-http-href
-* w3.el: Support for the <BASE> tag.  New w3-grok-*-href functions that
-  can be used anywhere and return lists of server/port/file/etc.
-
-Mon Jan 31 22:32:52 1994  William M. Perry  (address@hidden)
-* w3-new-lucid.el: Fixed a free variable reference in w3-insert-graphics
-* w3-emacs.el, w3-emacs19.el, w3-epoch.el, w3-lucid.el, w3-new-lucid.el,
-  w3-next.el, w3.el: Moved some version-specific stuff out of the
-  definition of w3-mode and into the function w3-mode-version-specifics in
-  the w3-*.el files.
-* w3.el: Set w3-delimit-emphasis and w3-delimit-links to nil when doing
-  batch fetches.
-* w3.el: Mailing and batch-fetching now insert a <BASE> tag if
-  sending/saving the raw HTML.
-* w3.el: Fixed a few typos in w3-tn3270
-* w3-emacs19.el: Fixed a misplaced ( so that w3-follow-inlined-image works
-  in emacs19
-* w3.el: Added more descriptive function documentation to the autoloaded
-  functions.
-* w3.el: New variable w3-use-transparent.  If t, then it will use
-  transparent.el to do telnet/tn3270 links.  This is automatically set to
-  nil if you are in lucid emacs, epoch, or in a windowing system.
-* w3-mule.el: Added function w3-m2psbuffer that will print a buffer as
-  postscript in mule.
-* Renamed w3.texi to w3.texinfo
-* w3.el: Replaced <= with equal in case file size is nil...
-
-Sun Jan 30 18:40:16 1994  William M. Perry  (address@hidden)
-* w3.el: Added support for PGP and PEM encryption of requests.  Requires
-  the excellent mailcrypt.el by Jin S Choi (address@hidden)
-* w3.el: Added autoloads for 'gopher-dispatch-object and 'html-mode if
-  they didn't already exist.  Also added a patch from Jamie Zawinski that
-  fixes the ###autoload statements used by autoload.el
-* w3.texi: Now creates .info files just fine from makeinfo.
-
-Sat Jan 29 23:35:59 1994  William M. Perry  (address@hidden)
-* w3-emacs19.el, w3-epoch.el, w3-lucid.el, w3-new-lucid.el, w3.el: Added
-  an (fset 'w3-insert 'insert) to all but the epoch file, and used the
-  w3-insert written by Henry A. Rowley that will keep the zones intact.
-  Replaced all occurences of (insert) with (w3-insert)
-* w3-epoch.el: Getting the resource for underlining should work now.
-* w3.el: w3-add-document-to-hotlist now checks to see if the current
-  document is already in the hotlist.  If it is, it signals an error.
-* w3-new-lucid.el: Fixed problem in converting xbitmaps - left out a ' in
-  the sed command
-* w3-epoch.el, w3-new-lucid.el, w3.el: Changed how the
-  w3-graphic-converter-alist is specified.  Must now leave off the
-  ppmtoxpm command, and leave a stray '| ' at the en end of the
-  conversion.  The contents of the variable w3-ppmtoxpm-command are
-  appended to this string.
-* w3.el: Added a w3-convert-code-for-mule call in w3-sentinel if
-  w3-be-asynchronous is t.
-* w3-new-lucid.el: Several changes suggested by Jamie Zawinski
-  (address@hidden) More errror checking for the image loading, and display
-  a buffer describing each error in a buffer after parsing the buffer.
-  Also, if the image load fails, put a 'w3graphic zone over the [alt] tag.
-* w3.el: Several changes suggested by Jamie Zawinski (address@hidden) The
-  small extent made for graphics has the 'w3graphic property, so using
-  w3-follow-inlined-image on it will retrieve the full picture (for things
-  like lucid where it gets clipped to the line height).  No longer shows
-  'read 1 byte' messages - will only show a message when it has acually
-  received some info.
-* w3.el: Removed assumption that /usr/lib/X11/rgb.txt exists when using
-  ppmtoxpm
-
-Fri Jan 28 13:39:11 1994  William M. Perry  (address@hidden)
-* w3.el: Applied patch from address@hidden (Dong Liu) that fixed
-  a stupid problem with the w3-use-starting-points function.
-
-Wed Jan 26 23:36:02 1994  William M. Perry  (address@hidden)
-* w3-new-lucid.el: Changed w3-add-zone to always set end-open and
-  start-open - need more data for bug fixes.
-* w3-new-lucid.el: Added patch from Alastair Burt <address@hidden> to
-  fix not being able to get past graphic extents in 19.9
-* w3.el: The w3-nonrelative-link regexp now includes wais link types.
-* w3-emacs.el: Added a patch from address@hidden that fixed yet another dumb
-  mistake on my part in the emacs 18 w3-follow-link function.
-* w3.el: Basics of w3-pem-auth for the new httpd pgp/pem security
-* w3.texi: Documentation mime-types parsing, and viewer specifications.
-* w3.el: Viewers can now be lists, in which case it will be passed thru
-  'eval'.
-
-Tue Jan 25 20:33:15 1994  William M. Perry  (address@hidden)
-* w3-emacs.el: Fix from address@hidden for a problem in w3-follow-link for
-  emacs 18
-* w3-new-lucid.el: The problem with coredumps with lots of empty links in
-  lemacs 19.9 should (hopefully) be fixed.
-* w3.el: Added wais gateway support - not sure if it  works, but I get the
-  same results as I do with Mosaic, so good enough.
-* w3.el: Asynchronous retrieval over http works again.
-* w3-new-lucid.el, w3-epoch.el: Made sure w3-insert-graphic retrieved
-  graphics synchronously.
-
-Mon Jan 24 23:30:40 1994  William M. Perry  (address@hidden)
-* w3.el: Added w3-use-starting-documents and w3-show-starting-documents
-  that display the contents of the hotlist-type w3-starting-documents
-  variable.
-* w3.el: Added function w3-insert-formatted-url... inserts a formatted <A
-  HREF...></A> construct in a buffer.  Url is the url of the current
-  buffer (or link under point with prefix arg), text of the link defaults
-  to the title of the buffer or the text of the link under cursor.  Buffer
-  to insert into is prompted for.
-* w3-emacs19.el, w3-epoch.el, w3-lucid.el, w3-new-lucid.el: Added function
-  w3-zone-at that returns the zone at the position passed to the function
-  (can be point or marker).
-* w3.el: Changed the inlined images to have the highlight attribute if
-  possible.
-* w3-emacs.el, w3-emacs19.el, w3-new-lucid.el, w3.el: Rewrote lots of
-  functions so that inlined images are stored in their own zone, and
-  control-middle-mouse-button or M-x w3-follow-inlined-image will fetch
-  the inlined image and send it to an external viewer. w3-follow-link will
-  also get an inlined image if it cannot find a hyperlink or a form entry
-  area under cursor.
-* w3-emacs.el: Added w3-zone-eq for emacs 18 so that radio buttons will
-  work.
-* w3.el: Changed w3-handle-graphics so that if w3-delay-image-loads is t,
-  use a marker instead of an absolute (point) reference.
-* w3-new-lucid.el: Fixed a problem in the delayed image loading - would
-  always try to find w3-working-buffer, which would (should) not exist
-  when doing a delayed load.
-* w3-new-lucid.el: Added missing interactive spec to
-  w3-load-delayed-images
-* w3-new-lucid.el: Added function w3-load-delayed-images, and activated
-  the delay image load menu choice, added load delayed images menu choice.
-* w3.el: A few changes to the gopher support - should recognize gopher
-  directories more reliably.
-* dist.Makefile: Fixed distribution makefile to use the new system of 1
-  large file.
-* w3.el: Fixed problem with radio buttons - if more than one was set due
-  to bad use of the CHECKED argument, then it would not let you turn one
-  of them off.
-
-Sat Jan 22 12:36:28 1994  William M. Perry  (address@hidden)
-* w3.el: Fixed problem where unknown tags in a <PRE> or <XMP> segment were
-  getting nuked - bad when trying to show source code with < and > in them
-  - large chunks would disappear.  Thanks to Magnus Y Alvestad
-  <address@hidden> for noticing the problem.
-
-Fri Jan 21 20:52:24 1994  William M. Perry  (address@hidden)
-* w3.el: Merged most of the files into one large one.
-* w3.el: Parse out mime-types file if it exists at startup.
-* w3-epoch.el: Changed epoch to use the class name Emacs instead of emacs.
-* w3.texi: Fixed dumb mistake in documentation about w3-mode-hooks and
-  list indentation
-* w3.el: Keep/restore tab-stop-list when going into w3-mode
-* w3-new-lucid.el, w3-lucid.el, w3-emacs19.el: Renamed a few menu items,
-  and activated 'forward' and 'back' buttons.
-
-Thu Jan 20 23:27:31 1994  William M. Perry  (address@hidden)
-* w3-epoch.el: No longer remove numbers and periods from zones in
-  w3-fix-extent-endpoints
-* dist.Makefile: Fixed the 'make install' target.
-
-Thu Jan 20 15:55:04 1994  William M. Perry  (address@hidden)
-* w3-parse.el: Did a bit of cleaning up in the parsing code -
-  obsolete/short functions removed or merged.
-
-Wed Jan 19 20:15:14 1994  William M. Perry  (address@hidden)
-* w3.el: Added version # of efs/ange-ftp to the bug report template.
-* w3-new-lucid.el: Took out deletion of region when conversion of pixmaps
-  failed . . . don't need it in lucid
-* w3-new-lucid.el: Put in quick hack to go to 1+ extent-start-position to
-  get around bug in lemacs 19.9
-* w3-new-lucid.el, w3-epoch.el: Changes to the graphics code to work with
-  the new w3-request-* variables
-* w3-forms.el, w3-mime.el, w3-misc.el, w3-url.el, w3-vars.el: Using new
-  variables to control extra headers in MIME requests, as well as
-  specifying methods/data.
-
-Tue Jan 18 15:13:33 1994  William M. Perry  (address@hidden)
-* w3-mime.el: Changed mailcap parsing to strip out leading/trailing spaces
-* w3-forms.el: Changed w3-form-encode to check if the query is empty
-  before doing a substring.  Thanks to Michael Jankowski for noticing the
-  problem
-* w3-forms.el: Applied patch from Michael Jankowski to fix a problem in
-  w3-finish-text-entry in emacs 19 - tried to change text properties in a
-  read-only buffer
-* w3-misc.el, w3-mule.el, w3-url.el, w3-viewers.el: Miscellaneous patches
-  by Shin-ya Sato <address@hidden> for MULE support
-* w3-lucid.el, w3-new-lucid.el: Removed reference to 'value' from
-  w3-x-popup-menu - might not always be bound.
-* w3-url.el: Changed newsgroup handling yet again - can now work with
-  either Flee's nntp or the original nntp.el by Umeda.  No longer
-  require's gnus.
-* w3-new-lucid.el: Wrapped the make-pixmap call in a condition-case for
-  safety.
-* w3-epoch.el: Changed w3-insert-graphic to insert a '^' to attach the
-  graphic to.
-* w3-new-lucid.el: Changed w3-insert-graphic to create a larger extent
-  instead of using '^' - looks much better now.
-* w3-parse.el: Changed w3-handle-graphics to not insert a '^' for each
-  graphic - leave that up to w3-insert-graphic if it needs it.
-
-Mon Jan 17 22:32:40 1994  William M. Perry  (address@hidden)
-* w3-vars.el: Added image/x-xbitmap to the list of graphics converters.
-* w3-lists.el, w3-parse.el: Changed handling of <LI SRC> to only check if
-  w3-insert-graphic is defined, not hardcoded just for epoch.
-* w3-url.el: Directory listings in local file and ftp access now have
-  icons.
-* w3-epoch.el: Cacheing of images will now only store the image once, not
-  once for every time it is used.
-* w3-new-lucid.el: Graphics work now - image/xbm's are translated into the
-  foreground and background color of the 'default face.
-* w3-gopher.el: Gopher handling now spits out icons with appropriate ALT
-  refs.
-* w3-epoch.el: w3-insert-graphic is now only defined if epoch was compiled
-  with graphic zone support.
-
-Sat Jan 15 20:20:59 1994  William M. Perry  (address@hidden)
-* w3-gopher.el: Added patch to w3-grok-gopher-link from Alastair Burt.
-  Also added support for gopher urls with searches embedded in them
-  (Mosaic-style searches with '?' instead of tab.
-* w3.el: Added printing of whether you are in Mule, and the window system
-  andd window system version in w3-submit-bug.
-
-Fri Jan 14 22:37:42 1994  William M. Perry  (address@hidden)
-* w3-mime.el: Fixed authentication - was looking for the wrong header.
-  Also added support for using the URI: field instead of the Location:
-  field to get in sync with the latest HTTP/1.0 specification.
-* w3-lists.el: Few more message->w3-lazy-message conversion
-
-Thu Jan 13 23:15:36 1994  William M. Perry  (address@hidden)
-* w3-gopher.el: Added patches to w3-gopher.el from Alastair Burt
-  <address@hidden> that fixed a few problems.
-* w3-mule.el, w3-url.el: Miscellaneous mule enhancements
-
-Wed Jan 12 19:41:05 1994  William M. Perry  (address@hidden)
-* w3-new-lucid.el: Fixed problem with my misunderstanding of the 'end-open
-  and 'start-open extent properties.
-* w3-lucid.el, w3-new-lucid.el: Added patch by Alastair Burt
-  <address@hidden> that changes w3-x-popup-menu to do a
-  completing-read if the last event was not a button/menu event.
-* w3-viewers.el: Fixed w3-save-binary-file
-* w3-mime.el: Changed w3-parse-mailcap to use new variable
-  w3-mime-mailcap-overrides.  If t, then entries in the users mailcap file
-  will replace the defaults in w3-mime-viewers.
-* w3-misc.el: Changed w3-upcase-region so that it will not touch entity
-  declarations either.
-
-Mon Jan 10 22:43:51 1994  William M. Perry  (address@hidden)
-* w3-parse.el: REL and REV attributes of links can now be comma-separated
-  lists.
-* w3-parse.el: Fixed broken regular expression in <LINK> parsing
-* w3-lists.el: Fixed problem of paragraphs within lists having the
-  highlighting stripped from the first character.
-* w3-parse.el, w3-url.el: Changed most of the unimportant 'message's to
-  use w3-lazy-message instead.
-* w3-url.el: Added variable w3-show-status.  If nil, no messages will be
-  shown in the modeline showing where the current retrieval/parse is at.
-* w3-parse.el: Added patch by Rainer Pruy
-  <address@hidden> that shows the SRC attribute of
-  IMG tags if no ALT tag is given.
-* w3-emacs.el: Added mouse support for emacs 18
-
-Sat Jan  8 20:32:46 1994  William M. Perry  (address@hidden)
-* w3-url.el: more support for bad HTTP: links
-* w3-misc.el, w3-mule.el, w3-viewers.el: Applied a patch from Shin-ya Sato
-  <address@hidden> that keeps MULE from encoding binary data it
-  receives from subprocesses, etc.
-* w3.el: Added tab-width to the list of variables saved in w3-mode.
-* w3-gopher.el: CSO searching now works.
-* w3-vars.el: Changed default value of w3-delimit-emphasis to take MULE
-  into account.
-* w3-url.el: Added function w3-build-url that will build a URL in stages.
-  Not used anywhere yet.  Thanks to T.V. Raman for suggesting it.
-* w3-gopher.el: Fixed gopher support for using gateways.  Won't give
-  errors at top and bottom of buffer.
-* w3-misc.el: Changed w3-hexify-string so that it won't hex slashes in the
-  string.
-* w3.el: Another check for efs-auto added
-
-Fri Jan  7 23:53:19 1994  William M. Perry  (address@hidden)
-* w3.el: Changed checking of efs/ange-ftp to also check for efs-auto
-  before loading ange-ftp.
-* w3-emacs19.el, w3-lucid.el, w3-new-lucid.el: Changed menu handling to
-  ignore links with nil HREFs when making the 'links...' menu.
-* w3-gopher.el: Changed w3-convert-ask-to-form for better handling of
-  SELECT boxes that have no choices.
-* w3.el: Added w3-leave-buffer.  Does a bury-buffer on the current buffer
-  instead of killing it.
-* w3-mime.el: Fixed problem where using telnet in a subprocess would chop
-  off lots of front of incoming data.  Bad kill-line in
-  w3-is-mime-response.
-* w3-misc.el, w3-url.el, w3-viewers.el: Changed all yes-or-no-p/y-or-n-p
-  functions to use the function specified by w3-confirmation-func
-
-Thu Jan  6 23:58:37 1994  William M. Perry  (address@hidden)
-* w3-gopher.el: Changed gopher parsing routines to print the type of the
-  link in the listing.  The text describing the link is configurable by
-  the variable w3-gopher-labels.
-* w3-gopher.el: More tweaks for more mosaic-like behavior
-* w3-parse.el: Searchable gopher objects no longer become inlined forms -
-  selecting them creates the form, as in Mosaic.
-* w3-gopher.el, w3-url.el: Switched gopher handling to use Mosaic's type
-  of double-typing.  This makes it much easier to get searching done right
-  (whether it needs a 7/ or not, etc).
-
-Wed Jan  5 14:15:02 1994  William M. Perry  (address@hidden)
-* w3-typecheck.el: Use new variable w3-passwd-entry-func instead of
-  hard-coding ange-ftp-read-passwd.
-* w3.el: Reworked some of w3-do-setup, and added comments
-* w3.el: Changed to only require 'ange-ftp if not using efs.
-* w3-lists.el: Did some work on the DL handling
-* w3-url.el: Directory formatting routine will now include last file
-  modification date and size if possible.  If not date data is returned by
-  file-attributes, or current-time-string does not take a parameter, then
-  no date is shown.  Size is usually shown (almost always if you use EFS
-  instead of ange-ftp)
-* w3.texi: Round and round he texinfo's, where he stops, noone knows.
-
-Tue Jan  4 23:00:35 1994  William M. Perry  (address@hidden)
-* w3-gopher.el: Fixed problem in handling of gopher text files . . . were
-  always being parsed as HTML.
-* w3-forms.el: Fixed dumb problem in encoding a gopher+ ASK form.
-* w3.texi: Initial revision
-
-Mon Jan  3 19:06:17 1994  William M. Perry  (address@hidden)
-* All files: Updated copyright notices
-* w3-lists.el: UL and OL lists can now have <LI ALT="some text" SRC="some
-  image">
-* w3-misc.el: Renamed w3-rassq-with-equal to w3-rassoc
-* w3-emacs.el, w3-emacs19.el: Fixed stupid problem where I was trying to
-  call the x-store-cut-buffer function even if not in X
-
-Sun Jan  2 22:47:02 1994  William M. Perry  (address@hidden)
-* w3-misc.el: Added a function to break up a menu description into smaller
-  chunks and submenus.
-* w3-gopher.el: Now smarter about when to parse out a gopher object as a
-  directory listing
-* w3-emacs19.el, w3-lucid.el, w3-new-lucid.el, w3-emacs.el, w3-epoch.el:
-  Added function w3-store-in-x-clipboard
-* w3.el: w3-save-url will now copy the url into the X clipboard
-* w3.el: Added autoloads that autoload.el can understand.
-* w3-forms.el: Forms links will now highlight when the mouse moves over
-  them in lucid emacs (and any other flavor that eventually supports them
-  in its version of w3-add-zone)
-* w3-gopher.el: Fixed dumb problem where parts of the gopher+ selector
-  string were being left in w3-current-file, so things like w3-view-url,
-  etc were getting the wrong information.
-* w3-gopher.el: Fixed stupid problem where I didn't convert the gopher
-  selector strings into url encoding before creating the <A> tags in
-  w3-format-gopher-link.  This caused gopher links with spaces/tabs/etc to
-  not be parsed correctly.  Thanks to John Ladwig <address@hidden>
-  for noticing the problem.
-
-Sat Jan  1 20:08:19 1994  William M. Perry  (address@hidden)
-* w3-parse.el: Added support for showing some of the HTTP/1.0 headers in a
-  buffer. Controlled by the new variable w3-show-headers.  Should be a
-  list of HTTP/1.0 headers (all lowercase) to include at the end of the
-  buffer. If nil, nothing will be shown.  Thanks to Jared Rhine for
-  suggesting it.
-* w3-gopher.el: Removed multiple definitions of w3-parse-gopher, and
-  revamped the handling of gopher titles. 
-* w3-misc.el: Changed w3-batch-fetch to be more robust - is now able to
-  retrieve any type of information, and the user can specify whether they
-  want formatted text, raw HTML, or transfer in binary mode.
-* w3-parse.el: Changed the fill-column and <HR> calculation routines to
-  honor the new variable w3-strict-width.
-* w3-misc.el: Removed some useless variables from w3-get-url-at-point in
-  the eternal quest for less compilation warnings.
-* w3-misc.el: Fixed problem in w3-strip-leading-spaces and
-  w3-eat-trailing-space
-* w3-parse.el: The link building code will now remove all entity
-  references in the link text before storing it in the zone - this means
-  that the menu building code and w3-complete-link will no longer have
-  unresolved entities in them looking nasty.
-* w3-misc.el: Added function w3-fix-entities-in-string.  Takes any string
-  and removes all entity references within it, and replaces it with normal
-  text (uses the w3-html-entities assoc list).
-* w3-new-lucid.el, w3-lucid.el: Added function w3-x-popup-dialog
-
-Fri Dec 31 21:45:04 1993  William M. Perry  (address@hidden)
-* w3-new-lucid.el, w3-lucid.el: Fixed problem in w3-fix-extent-endpoints
-* w3-misc.el: Fixed problem in w3-eat-trailing-space that would always
-  remove one too many spaces.
-* w3-mosaic.el: Added function w3-rename-hotlist-entry to give a new title
-  to an item in your hotlist.  Will not let you use a title that is
-  already a member of the hotlist.
-* w3-emacs19.el, w3-lucid.el, w3-new-lucid.el: Added a few options to the
-  navigation menu
-* w3-url.el: Added a patch from Fran Litterio <address@hidden> that
-  adds variable w3-reuse-buffers.  Also changed the buffer reusing code
-  will skip over w3-working-buffer in its search for a matching url.
-* w3-url.el: Fixed problem in passing things off to gopher-mode with blank
-  selector strings - was not defining a good type (type was set to 0
-  instead of ?1).
-* w3-url.el: Fixed typo in gopher handling
-* w3-gopher.el: Added % retrieved messages when retrieving a gopher+
-  object, fixed problem in gopher parsing for emacs 19.
-
-Thu Dec 30 23:58:19 1993  William M. Perry  (address@hidden)
-* w3-gopher.el: Fixed dumb problem in gopher formatting - didn't check if
-  the selector string was longer than 1 character before trying to extract
-  the first char.
-* w3-misc.el: Fixed major problems with w3-strip-leading-spaces and
-  w3-eat-trailing-space again.
-* w3-forms.el: Added support for submitting gopher+ ASK blocks
-* w3-url.el: Changed gopher support/url parsing routines to handle gopher+
-  and gopher ASK blocks without warping the URLs too much.
-* w3-gopher.el: Added in gopher+ support
-* w3.el: Fixed viewing of gopher links for new storage format.
-* w3-gopher.el, w3-url.el: Revamping gopher
-* w3-vars.el: Added variable w3-gopher-to-mime
-* w3-vars.el: Added variable w3-gopher-types
-
-Thu Dec 30 13:57:53 1993  William M. Perry  (address@hidden)
-* Added support for Mule (Multi-Lingual Emacs), mainly highlighting of
-  links.  Thanks to address@hidden for the patches.
-* w3-next.el: Added provide 'w3-next
-* w3-parse.el: Might have fixed the over-run into other words/spaces
-  in link highlighting.
-
-Wed Dec 29 23:33:07 1993  William M. Perry  (address@hidden)
-* w3-misc.el: Added function w3-fetch-url-at-point... thanks to Torre
-  J. Wenaus <address@hidden> for the code.
-* w3-parse.el: Back to using window-width as starting point for
-  w3-right-border.
-* w3-vars.el: Removed variable w3-hypertext-extns
-* w3-mosaic.el:  Removed support for adding old gopher-mode pages to
-  the hotlist.  Trying to get people to use hypertext-gopher-mode.
-* w3-next.el: Initial revision
-* w3-gopher+.el: Added new function w3-convert-ask-to-form that
-  converts a Gopher+ ASK block into an HTML form.
-* w3-forms.el: Value and default value are now reset for each SELECT
-  area in forms.
-* w3-vars.el: Changed default gopher handling to be in hypertext.
-
-Tue Dec 28 17:41:51 1993  William M. Perry  (address@hidden)
-* w3-url.el: Can now handle http:/somefile - it will substitute the
-  server and port of the current document to make a complete url.
-* w3-forms.el: Names in INPUT tags can be empty
-* w3-auth.el, w3-emacs.el, w3-emacs19.el, w3-epoch.el, w3-forms.el,
-  w3-lists.el, w3-mime.el, w3-misc.el, w3-parse.el, w3-typecheck.el,
-  w3-url.el, w3-vars.el, w3.el: Removed lots of references to bound
-  but unreferenced variables.
-* w3-misc.el, w3-url.el, w3-vars.el, w3.el: Added new variables
-  w3-mail-command and w3-mail-other-window-command. These variables
-  will control what functions are called when w3 needs to send mail.
-  W3 tries w3-mail-other-window-command only if w3-mutable-windows is
-  t, then w3-mail-command if this function is not bound.  Then goes to
-  mail-other-window, then just to mail.
-
-Fri Dec 24 03:21:58 1993  William M. Perry  (address@hidden)
-* w3-url.el: Formatting directories now gives a progress indicator in
-  % of files converted to hypertext listing.
-* w3-url.el: Added code to check for whether a file is a symbolic
-  link.  If it is, then put in an arrow and the name of the link (like
-  ls -l).
-
-Thu Dec 23 18:53:54 1993  William M. Perry  (address@hidden)
-* w3-epoch.el, w3-misc.el, w3-parse.el, w3-typecheck.el, w3-vars.el:
-  Replaced long regular expressions for checking whether a URL is
-  relative  or not with a variable w3-nonrelative-link to save
-  space/typing, and it will be easier to change in the future.
-* w3-misc.el: Added function w3-batch-fetch to retrieve all the urls
-  passed to it on the command line and save them as text files.
-  Thanks to Jared Rhine for suggesting it.
-* w3-parse.el: Removed use of screen-width/window-width when computing
-  fill column.  Uses old value of fill-column.
-* w3-mosaic.el: Fixed problem in new personal annotation parsing code
-  that would barf if you didn't have any personal annotations.
-
-Thu Dec 23 16:28:22 1993  William M. Perry  (address@hidden)
-* w3-mosaic.el: Made lots of changes to the personal annotation
-  handling.  Deletion will work properly now (won't mess up the
-  internal representation of the annotations), support for the real
-  Mosaic annotation format (more than one annotation on a url yields
-  only one line in the annotation LOG file), figures out the highest
-  annotation number instead of using the last line in the file +1.
-* w3-emacs.el: Added definition of w3-create-faces.
-* w3-gopher+.el: Initial revision
-* w3-gopher.el: Fixed quite a few problems with gopher support.
-
-Tue Dec 21 06:47:50 1993  William M. Perry  (address@hidden)
-* w3-parse.el: Fixed idiotic problem where no PRE segments were being
-  rendered.  *sigh*
-
-Sat Dec 18 15:03:59 1993  William M. Perry  (address@hidden)
-* w3-url.el, w3-gopher.el, w3-forms.el: Added support for searching in
-  gopher.  Transforms into a special type of form, like <ISINDEX>
-  tags.  Only works if retrieved from a gopher listing right now.
-* w3-vars.el: Changed default viewer for text/plain to be w3-mode
-* w3-parse.el: Fixed problem with recursive filling of paragraphs - if
-  there were too many <PRE> segments, then it would die from recursing
-  too much. Thanks to Tom Tromey <address@hidden> for pointing
-  out the problem.
-
-Fri Dec 17 23:01:57 1993  William M. Perry  (address@hidden)
-* w3-url.el: Changed the display of XX of YY bytes transferred in
-  HTTP/1.0 responses to be optional.  Would mess some people up that
-  are behind gateways using telnet, etc.  Variable is
-  w3-show-http2-transfer.
-* w3-lists.el: Added support for <LI SRC="blahblahblah"> for list
-  items with icons, etc.
-* w3-epoch.el:  Rewrote the resource fetching routines to me
-  consistent with emacs 19 and lucid emacs.
-* w3-lucid.el, w3-emacs19.el, w3-epoch.el, w3-new-lucid.el: Moved all
-  face creation stuff into w3-create-faces.
-* w3-vars.el: Fixed typo in w3-graphic-converter-alist
-* w3-vars.el: Added keybindings > & < to go to end/beginning of
-  document.  Added functions w3-end-of-document and
-  w3-start-of-document to go the end and beginning of a document
-  respectively.
-* w3-forms.el: Fixed a problem in the new text area support.
-* w3-forms.el, w3-typecheck.el: Reworked quite a bit of stuff to get
-  forms submissions working correctly. You no longer have to keep
-  buffers around until you submit the form, and the default text (or
-  the current value of the button) is inserted each time you edit the
-  form area.
-* w3-mime.el:  Changed w3-parse-mime-viewers to split the Accept:
-  string onto one or more lines as appropriate, as the NCSA server
-  doesn't seem to like the long Accept: line when POSTing a form.
-* w3.el: Merged in support for NeXT emacs from Laurent Dami
-  <address@hidden> (emacs 18.58 on NeXTstep)
-* w3-emacs.el, w3-emacs19.el, w3-epoch.el, w3-lucid.el,
-  w3-new-lucid.el: Added function w3-setup-version-specifics that will
-  do any required fiddling for each version of emacs.
-
-Thu Dec 16 23:22:08 1993  William M. Perry  (address@hidden)
-* w3-new-lucid.el: Fixed problem with w3-fix-extent-endpoints failing
-  when an extent was completey spaces/newlines
-* w3-forms.el: Changed regular expressions to allow one or more =
-  signs in name/value tags.
-* w3-forms.el: Made input tags with NAME of isindex do an automatic
-  submission, ala Mosaic, and address@hidden's suggestion on
-  www-talk that browsers should standardize on this hack.
-* w3-parse.el: Changed form-based searching to use an input tag of
-  NAME isindex like Mosaic.
-* w3-parse.el: Fixed error in new header routines. Would bomb if a
-  header was not terminated correctly.
-* w3-parse.el: No longer remove tabs at the beginning of the buffer -
-  was messing up lists.  Still removes spaces/newlines
-* w3-forms.el, w3-parse.el: Added real support for TEXTAREA tags, and
-  wrap TEXTAREA input tags in PRE segments.
-* w3-forms.el: Fixed bad regular expression in forms mode that would
-  cause tags with VALUE="" to be drawn wrong.
-* w3-newparse.el, w3-url.el: Use new function w3-lazy-message instead
-  of message.  Will not update the modeline if called more than once a
-  second.  Thanks to Jamie Zawinski <address@hidden> for the patches.
-* w3-viewers.el: Starting viewers no longer starts an interactive
-  shell & exec.  Thanks to Jamie Zawinski for showing me that it was a
-  dumb thing to do :)
-* w3-new-lucid.el: Initial revision
-* w3-vars.el, w3.el, w3-lists.el: Changed occurences of w3-running-era
-  to w3-running-new-lucid
-* w3.el: Moved creation of w3-mime-accept-string into w3-do-setup
-* w3-epoch.el: Fixed problem in epoch form entry.
-* w3-forms.el: Changed assignment to free variable method in w3-handle-forms.
-* w3-forms.el: Fixed the revert button bugs in emacs 19.
-* w3-emacs19.el: changed w3-delete-zone to use remove-text-properties
-  instead of putting nil text properties.
-* w3-emacs19.el: Changed w3-delete-zone to remove the face and
-  mouse-face properties. 
-
-Wed Dec 15 22:56:43 1993  William M. Perry  (address@hidden)
-* w3-lists.el: Added a 't' to calls to replace-match so that the case
-  is preserved.
-* w3-vars.el: Added variable w3-list-chars-assoc for specifying what
-  characters to insert at the front of lists.
-* w3-lists.el: Can now control what characters are inserted at the
-  front of a list. See w3-list-chars-assoc for details.
-
-Wed Dec 15 20:41:02 1993  William M. Perry  (address@hidden)
-* Version 1.7.14
-* w3-forms.el: Fixed problem with resetting popdown menus to the
-  defaults.
-* w3-epoch.el: Rewrote w3-fix-extent-endpoints to remove
-  newlines/whitespace from front of zones also, as well as numbers &
-  periods.  This will fix lists, but might mess up real links once in a
-  while.  Oh well, epoch won't be around much longer anyway.
-* w3-mosaic.el: Fixed bug in w3-write-global-history where 'nil' in
-  the history would cause it to choke.  Thanks to address@hidden
-  for noticing the problem.
-* w3-emacs.el: Changed the w3-fix-extent-endpoints to remove
-  newlines/whitespace from the front of zones also.
-* w3-lists.el: Changed the list handling code to use
-  insert-before-markers if using emacs 18.  This keeps the
-  indentation/numbering to not become part of the zones.
-* w3-emacs19.el: Fixed a few errors with the new forms/link movement
-  code
-* w3-emacs19.el: Changed w3-follow-link to not die on links with no
-  data.
-* w3-emacs19.el: Changed w3-forward-link and w3-back-link to honor
-  forms entry areas.
-* w3-vars.el: Changed definition of w3-header-char-assoc to use BR correctly
-* w3-parse.el: <BR> tags are rendered a little better now - no extra
-  spaces from the fill-region will make them look odd.
-  
-Tue Dec 14 21:41:29 1993  William M. Perry  (address@hidden)
-* w3-url.el: Added checking to w3-fetch to see if a buffer visiting a
-  URL already exists before fetching it.  Offers to reuse the old one if
-  found.
-* w3.el: Changed w3-save-url to be more consistent with the other
-  commands that muck with URLs.  C-k grabs the current URL into the kill
-  ring, and C-k with a prefix arg grabs the URL under pt into the kill
-  ring.  Thanks to Jared Rhine for pointing out the inconsistency.
-* w3-mosaic.el: Added function w3-append-hotlist.  This will append a
-  hotlist to the one currently in memory.
-* w3-parse.el: Fixed problem where <P> breaks after a header item were
-  not being erased.
-* w3-misc.el: Added function w3-upcase-region that will convert a
-  region of text to uppercase, but ignore any text in it that is between
-  < and >.  This will stop it from changing the links references within
-  <A> tags.
-* w3-vars.el: Changed the header assoc list to use w3-upcase-region
-  instead of upcase region.  Was causing links in headers to point to
-  the wrong files.
-* w3-era.el, w3-lucid.el: Added patch from Alastair Burt that fixes a
-  few problems in the lucid menu handling code (malformed, plus trims
-  the menu items to w3-lucid-max-item-size so that they don't shoot off
-  the sides of your screen.
-* w3-url.el: Added a space at the end of the prompt in w3-open-local
-* w3.el: Changed w3-reload-document so that it remembers where you
-  were in the buffer and repositions you there.
-* w3-mime.el: Changed the format of w3-mime-accept-string so that it
-  can be used in other places.
-* w3-misc.el: Added functions w3-forward-in-history and
-  w3-backward-in-history.  This will first try to find the actual buffer
-  recorded in the history list, then any buffer with the same URL, then
-  goes to point in those buffers.
-* w3-vars.el: Added new variable w3-current-next-link and
-  w3-current-last-link that are buffer-local.  These store the history
-  information for this buffer.
-* w3.el: Changed a few functions to use the new history mechanism
-* w3-url.el: Modified w3-fetch to store history items in the new
-  variables
-  
-Mon Dec 13 23:39:20 1993  William M. Perry  (address@hidden)
-* w3-emacs.el: Finished function w3-fix-extent-endpoints, but need to
-  do something about the markers moving in front of list items.
-  w3-fix-extent-startpoints or something similar.
-* w3-lucid.el: Added missing function 'w3-delete-zone Fixed menu
-  generation error
-* w3-misc.el: Changed w3-maybe-relative and a few other functions to
-  take an optional 'DATA' parameter for using the POST command,etc.
-* w3-forms.el: Fixed a few problems with non-POSTing forms submissions
-* w3-parse.el: Removed code to eat newlines/whitespace at the
-  beginning/end of links.  Was causing errors if links were within PRE
-  segmens (actually, only if a link was the last thing in a PRE segment,
-  and it had whitespace after it, and before the </PRE>
-* w3-forms.el: Fixed problem with forms <SELECTION MULTIPLE> support.
-  Wasn't giving the fake checkboxes any 'value's, so it was reported as
-  'ON' to the server, not the name of what was selected.  Also fixed a
-  problem where the option variable in SELECTION handling wasn't being
-  set to nil each time, so each successive SELECTION tag would get more
-  and more choices.
-* w3-parse.el: Added call to function w3-fix-extent-endpoints.  Should
-  fix the problem with forms eating newlines/spaces at the end of form
-  entry areas when new data is entere.
-* w3-forms.el: Fixed problem in forms submission.  Would die if the
-  first item in a form was a SELECTION - it was not storing the
-  method/actionurl if it was.
-
-Sun Dec 12 20:54:44 1993  William M. Perry  (address@hidden)
-* w3-epoch.el: Added function w3-fix-extent-endpoints
-* w3-emacs.el, w3-emacs19.el, w3-era.el, w3-lucid.el: Added new
-  function w3-fix-extent-endpoints.  Makes extents smaller if they have
-  newlines/whitespace at the end.  This will keep the forms support from
-  killing newlines whenever you do a form entry.
-* w3-cache.el: Added code to store stuff in cache as compressed
-  (gzipped) data.
-* w3-url.el: HTTP links like http://cs.indiana.edu are now recognized
-  (no longer needs the trailing '/'
-* w3-lists.el: Fixed problem where alternating <P> tags would
-  disappear within lists.  Over-aggressive regular expression.
-* w3-url.el: Changed the handling of content-length - using
-  w3-parse-mime-headers was causing an infinite loop in redirection.
-* w3-mime.el: Fixed a few problems in the redirection handling because
-  of switching to lower-case headers in w3-current-mime-headers.
-* w3-url.el: Added support for using the content-length header in
-  HTTP/1.0 responses to show how big the file is in the minibuffer.
-* w3-mime.el: Changed the MIME parsing routines to save the header
-  fields in lowercase.
-* w3-emacs.el: Fixed dumb problem in w3-complete-link for emacs 18.
-  Left out a call to w3-zone-data.
-* w3-url.el, w3-forms.el: Replaced use of member with w3-member.
-* w3-forms.el: Fixed error in regular expression where buttons with
-  spaces in their VALUE fields would not be rendered.
-* w3-viewers.el: New way to specify whether to view process output or
-  not.  w3-working-buffer is always destroyed if a viewer is invoked.
-* w3-vars.el: Added variable w3-always-show-output.
-* w3-vars.el: Changed def. of &yuml; to be ?\377 instead of the actual
-  character 377.  Was causing problems with CVS.
-* w3-parse.el: Whitespace at the beginning of buffers will now be
-  erased.  Headers will now be a little more intelligent about how they
-  do line/paragraph breaks.  Headers can now be shown on text terminals
-  by the variable w3-header-chars-assoc.  Thanks to Jared Rhine for the
-  suggestion.
-* w3-parse.el: Added support for user-customizable text before and
-  after headers
-* w3-misc.el: Changed w3-eat-trailing-spaces and
-  w3-strip-leading-spaces to get ride of newlines too.
-* w3-vars.el: Added the variable w3-header-chars-assoc to have
-  formatting of headers on dumb terminals.
-
-Fri Dec 10 21:14:07 1993  William M. Perry  (address@hidden)
-* w3-lists.el: Fixed bug where lowercase list tags (ol instead of OL)
-  would cause an infinite loop if there were within another list.  Left
-  out an (upcase (..))
-  
-Thu Dec  9 23:24:10 1993  William M. Perry  (address@hidden)
-* w3-forms.el: Changed the handling of MULITPLE selections in option
-  lists to be a <UL> of the options, all checkboxes with the same name.
-
-Wed Dec  8 22:46:07 1993  William M. Perry  (address@hidden)
-* w3-lists.el: Fixed a bug where PRE segments within lists would be
-  ignored and filled.
-* w3-forms.el: Added support for the SEVERAL/MULTIPLE attribute on the
-  SELECT input tag.  Rendered as a preformatted list of checkboxes.
-* w3-misc.el: Added function w3-eat-trailing-space
-* w3-mime.el: Fixed a dumb problem where I forgot a "%s" in a format
-  string and so wasn't sending any data during a POST forms submission
-* w3-forms.el: Added support for POST submission of forms
-* w3-mime.el: Added a 'data' field to the w3-create-mime-request
-  function.  This will make it easy to implement post in a more
-  generalized way later.
-* w3-url.el: Added ability to send arbitrary data down through
-  w3-fetch, w3-retrieve, and w3-http.  Useful for POST method.
-* w3-emacs19.el: Removed patch for double-skipping of links in early
-  versions of emacs.  People using < 19.21 should upgrade.
-* w3-lists.el: Nested lists should now be a little quicker.  Also
-  fixed the problem where paragraphs within lists would have an extra
-  space at the beginning of the first line.
-* w3-forms.el: Changed w3-do-form-entry to do w3-delete-zone before
-  deleting the text contained by the zone.  Previous behavior would make
-  emacs19 bomb with an error.
-* w3-typecheck.el: Changed the option reading so that it checks
-  whether w3-x-popup-menu returns a cons pair or a plain string and acts
-  accordingly.
-* w3-docomp.el: Added lots of autoloads to get rid of compilation errors
-* w3-mime.el: Changed the header parsing to get _ALL_ the headers and
-  store them in an assoc list instead of just getting the 3 or 4 I need
-  now.  Will make it easier to expand on later when the HTTP/1.0 spec
-  grows.
-* w3-vars.el: New variable w3-current-mime-headers, which is an assoc
-  list of MIME headers for each document.
-* w3-url.el: Changed w3-retrieve so that if a response it not an
-  HTTP/1.0 response, add its name to w3-bad-server-list if it is not
-  already a 'member'.
-* w3-mime.el: Added support for the new '204 NoResponse' HTTP/1.0
-  response.  No new document is displayed.
-
-Tue Dec  7 21:09:21 1993  William M. Perry  (address@hidden)
-* w3-forms.el: Some revisions to try and make the radio button
-  toggling faster.  Will now only change the radio button(s) that are
-  set to be off, and the one that is supposed to be on, on.
-* w3-lucid.el, w3-epoch.el, w3-era.el, w3-emacs19.el: Added function
-  w3-zone-eq
-* w3-era.el: Fixed typo in w3-zone-data that was causing forms to
-  screw up.
-* w3-forms.el, w3-newparse.el: Use 'intern' instead of read
-* w3-emacs19.el: Removed the local-map from the text properties.  Put
-  it in the distribution by mistake.
-* w3-emacs19.el: applied patch from <address@hidden> to fix
-  skipping 2 links when going backwards.
-* w3-html+.el: Fixed a missing ) or two
-* w3-cache.el: Initial revision
-* w3-vars.el: Added variables for document caching.
-* w3-html+.el: Trying to get tables working better
-
-Mon Dec  6 23:04:01 1993  William M. Perry  (address@hidden)
-* w3-era.el: Fixed dumb error where w3-follow-link would try to fetch
-  the text of the link, not the url of the link.
-* w3-emacs19.el: Fixed a few things with the new text properties
-  support.
-* w3-forms.el: Removed reference to free variable prompt in
-  w3-do-form-entry.  Cut & pasted a few too many lines.
-* w3-forms.el: Changed all the form handling routines that reformatted
-  the buffer to use w3-form-format-<input-tag-type> instead of reusing
-  the code.  Was causing some inconsistent redraws.  Thanks to Arup
-  Mukherjee <address@hidden> for noticing the problem.
-* w3-parse.el: Styles will now work again in epoch.  Needed to
-  re-apply a patch that got lost in a hard drive crash.  Thanks to Henry
-  A. Rowley <address@hidden> for the patch.
-* w3-emacs19.el: Fixed problem in the making of menus.  Had a (list
-  ...) that included the 'displayable' option in the menu vectors.
-  Thanks to Jorge Sousa Pinto <address@hidden> for noticing the
-  problem.
-* w3-emacs19.el: Fixed a cut&paste error - multiply defined functions
-  and a lot of typos in w3-complete-link
-* w3-misc.el: Added function w3-strip-leading-spaces
-* w3-era.el: Changed the w3-complete-link routine to strip spaces from
-  the front of links so that all of them will be visible.
-* w3-lucid.el, w3-epoch.el, w3-emacs19.el, w3-emacs.el: Changed the
-  w3-complete-link routine to strip spaces from the front of links so
-  that all of them will be visible.
-* w3-vars.el: A few revisions to the default settings of
-  w3-style-chars-assoc
-* w3-vars.el: Added the variables w3-style-chars-assoc and
-  w3-delimit-emphasis for doing text-based markup.
-* w3-parse.el: Added the ability to have characters that define the
-  start and end of a region of formatting (ie: * surrounds bold text, _
-  surrounds underlined text, etc).  Controlled by w3-style-chars-assoc
-  and w3-delimit-emphasis variables.  Thanks to Jared Rhine for
-  suggesting it.
-
-Sun Dec  5 21:38:23 1993  William M. Perry  (address@hidden)
-* w3-url.el: fixed typo in w3-open-local-internal.
-* w3-url.el: Disabled use of w3-be-asynchronous for now
-* w3-era.el: Enabling/disabling of Era menus now cleaner than in lucid
-* w3.el: Menus will now be created when running in Era
-* w3-vars.el: Added face-specific stuff for Era, and modified the
-  default value of w3-delimit-links to take the w3-running-era variable
-  into account.
-* w3-vars.el: Better checking of the various w3-running-* variables.
-  I long for the day when they will all merge. :)
-* w3-era.el: Added support for 'viewing' a form entry area with
-  w3-view-this-url Will message the name and type of the form entry
-  area, but returns nil if called with no-show 't'.
-* w3-era.el: More changes to be era-specific
-* w3-era.el: Basic switch to era-specific functions from the lucid
-  cust. file
-* w3-epoch.el: Added alias w3-delete-zone (to epoch::delete-zone)
-* w3-emacs19.el: Added function w3-delete-zone
-* w3-forms.el: Use function w3-delete-zone instead of a large (cond
-  (...)) for using delete-zone, etc.  Easier to add support for new
-  flavors of emacs.
-* w3-vars.el: Added the variable w3-running-era
-* w3.el: Added loading of specific routines for 'era' - the
-  epoch/lucid merge
-* w3-era.el: Initial revision
-* w3-emacs19.el: Fixed a problem in w3-only-links that would return
-  the wrong position if the link was only one character long.
-* w3-misc.el: Added the function w3-reload-all-files.  This will
-  remove all the 'features' 'provided by w3, and then do a (require 'w3)
-  so that the files will all be reloaded.
-* w3-mime.el: Changed the w3-is-mime-response function so that it will
-  remove the HTTP/1.0 request if it has been echoed to the screen,
-  either by telnet or by the tcp.el emulation package.  Thanks to
-  everyone who reported the bug.
-* w3-parse.el: Moved handling of telnet header lines into
-  w3-is-mime-response
-* w3-emacs19.el: Believe I have fixed the w3-complete-links to work
-  with the new use of text properties instead of overlays.  This should
-  fix the problem of the links menu not showing up in X also.  Thanks to
-  T V Raman <address@hidden> for noticing it was broken.
-* w3-mime.el: Framework for '204 No Response' put in
-* w3-auth.el: Removed function w3-encode-password, and put the code
-  into the actual w3-basic-auth, since future versions will probably use
-  different encodings for the username/password pair.
-
-Sat Dec  4 12:54:43 1993  William M. Perry  (address@hidden)
-* w3-forms.el (w3-handle-selections): Added <OPTION SELECTED> support.
-  Thanks to Darrell Kindred for telling me to do it.
-* w3-mime.el (w3-parse-mime-headers): Fixed a problem where redirection of
-  URLS would lose the content-type and other headers of the URL it was
-  redirected to.  Thanks to Jared Rhine for noticing the problem.
-* w3-forms.el (w3-do-form-entry): Fixed a problem where form submission
-  buffers would not stay on top of the buffer stack.  Moved the submit
-  code outside the save-excursion.  Thanks to Darrell Kindred for the
-  suggestion on how to fix it.
-* w3-lists.el (w3-fill-paragraphs-in-list): Dumb problem with too many
-  newlines in paragraphs within lists.  Thanks to Jared Rhine for noticing
-  the problem.
-* w3-parse.el (w3-fix-paragraphs): Fixed a problem where paragraphs before
-  the last <HR> in a buffer were not filled.  Thanks to Jared Rhine and
-  Darrell Kindred for fixes.
-* w3-typecheck.el (w3-read-correct-format): Added a default type checker
-  for unknown tag types.
-* w3-emacs19.el (w3-follow-link): This no longer signals an error if there
-  is no link under point.
-* w3-mime.el (w3-parse-mime-headers): Changed the regexp to extract the
-  Location header from an HTTP/1.0 response so that newlines are stripped
-  from it correctly.  Thanks to Darrell Kindred for sending me the patch.
-* w3-misc.el (w3-open-stream): Added a pause in when connections failed.
-  Thanks to Jost Krieger <address@hidden> for
-  suggesting it.
-* w3-emacs.el (w3-add-zone): Fixed a problem in normal emacs where
-  highlighted text <CODE>TEXT</CODE> would be interpreted as a link.
-  Thanks to T V Raman <address@hidden> for noticing the problem.
-* w3-vars.el (w3-mime-extensions): Changed the default MIME content type
-  to be text/html so that pages like http://cs.indiana.edu/ will be
-  formatted when they don't have a file extension.
-* w3-forms.el: Applied a path from Darrell Kindred that fixed some very
-  odd radio button behavior.
-* w3-forms.el: Believe I have fixed the problem in lucid emacs where
-  choosing a form entry box would eat the character immediately after the
-  input tag.
-* w3-forms.el: Fixed a regexp that would gobble newlines/paragraph breaks
-  after an input tag.  Thanks to Skip Montanaro
-  <address@hidden> for noticing the problem.
-* w3-lists.el: Dumb error in a regexp that would make all <DL> lists
-  disappear was fixed.
-* w3-lists.el: Added roman numeral handing to ordered lists.  Thanks to
-  Tom Loos (address@hidden) for explaining the algorithm and writing
-  some C code I could translate into lisp.
-
-Fri Dec  3 12:04:18 1993  William M. Perry  (address@hidden)
-* w3-lucid.el: Fixed stupid problem where going backwards by 1 link always
-  took you to the first link of a buffer.   Mispaced ) in
-  w3-previous-extent. 
-* w3-emacs19.el: Changed everything to use text-properties instead of
-  overlays.
-* w3-emacs19.el (w3-add-zone): Added preliminary support for just typing
-  into the emacs19 forms.  Will talk to jwz about adding this
-  functionality to lucid emacs.
-
-Wed Dec  1 08:05:02 1993  William M. Perry  (address@hidden)
-* w3-newparse.el: Created this file - has new parsing routines.  Very
-  experimental.  Don't use unless you want it to choke, and then figure
-  out why it choked. :)
-
-Fri Nov 26 03:52:19 1993  William M. Perry  (address@hidden)
-* w3-forms.el: Changed the forms handling routines so that it handles
-  METHOD, ACTION, and ENCTYPE attributes of the <FORM> tag.  METHOD and
-  ENCTYPE aren't used yet.  Thanks to Darrell Kindred for noticing the
-  problem.
-* w3-parse.el: Fixed a formatting problem with the ISINDEX forms
-  replacements.  Was doing a fixed-case replace.  Thanks to Jared Rhine
-  <address@hidden> for noticing the problem.
-* w3-parse.el: Fixed a formatting error with <BR> tags - sometimes spaces
-  were left at the beginning of the continued line.  Thanks to Erich
-  Schneider  <address@hidden> for noticing the problem.
-* w3-misc.el (w3-lookup-style): Fixed dumb bug where I was not
-  de-referencing the variables to the actual #<style> value in epoch.
-  Thanks to Paul Furnanz <address@hidden> for the initial fix.
-  I generalized it a little.
-* w3-parse.el: Added a check to make sure that long URLs don't show up as
-  extremely long buffer names.  Thanks to Heiko Muenkel
-  <address@hidden> for noticing the problem.
-* w3-lucid.el: Added a patch from Sjoerd Mullender
-  <address@hidden> to add a menu bar to lucid emacs if there
-  wasn't one by default.
-* w3-emacs19.el: Added a few patches from Jin S Choi (address@hidden).
-  Mostly fixed the hotlist menu updating code, as well as a few cosmetic
-  changes to the FSF19 menus.
-* w3-epoch.el: Added a few patches from Henry Rowley <address@hidden> to
-  fix a few functions that assumed epoch was compiled with
-  add-graphic-zone.
-* w3-lists.el (w3-fill-paragraphs-in-list): Fixed a stupid bug where the
-  first letter of every paragraph would be removed when filling.  Thanks
-  to Arup Mukherjee <address@hidden> for noticing the problem, and Darrell
-  Kindred for the fix.
-
-Tue Nov 16 10:55:56 1993  William M. Perry  (address@hidden)
-* Makefile (install): Fixed problem where I was only copying W3FILES to
-  the install directory, and should have used W3FILES and W3BINS.
-* w3-forms.el: Stupid problem where I was always trying to call
-  w3-form-format-unknown.  Simple 'not' around a statement to fix.
-* w3-forms.el: Yet another stupid typo - w3-format-unkown instead of
-  w3-format-unknown.  Thanks to Dan Sullivan
-  <address@hidden> for the fix.
-
-Mon Nov 15 21:02:50 1993  William M. Perry  (address@hidden)
-* Various small changes (wrote over the new ChangeLog when doing a restore
-  of some files).
-* w3-vars.el: Changed the order of w3-html-entities so that &amp; is at
-  the end.  This was causing the entities later in the list to be messed
-  up if they occurred in the same document.
-* w3-lucid.el: Changed the w3-extent-at, w3-find-specific-link, and
-  w3-next-extent to not use a free variable.  Thanks to Jamie Zawinksi
-  <address@hidden> for the patch.  Dumb oversite on my part.
-* w3-forms.el: Made the forms formatting very extensible.  The formatting
-  function is determined by reading in lisp expression from a formatted
-  string.  w3-form-format-<type> will now be called and expected to return
-  a string to use as the prompt.
-* w3-emacs19.el: Fixed dumb problem where emacs19 on a tty would not be
-  able to find a list of links in the current document for
-  w3-complete-link.
-* w3-lists.el: Fixed the filling of paragraphs within lists.  No longer
-  inserts too many newlines.
-* Fixed a few problems where w3-do-setup was not being called correctly at
-  startup.  This would result in an error about w3-style-regexp being nil.
-* w3-mosaic.el: Fixed a problem with the hotlist handling code.  Mistake
-  in a regular expression.  Thanks to Jin S Choi (address@hidden) for
-  reporting the problem and sending a fix.
-
-Fri Nov 12 07:31:36 1993  William M. Perry  (address@hidden)
-* w3.el: The mailcap entries are now parsed at startup.
-* Made changes to several files so that the new NeXTstep port of emacs 19
-  will use faces, and not think its on a dumb terminal.  Mostly involved
-  changing a bunch of (eq window-system 'x) to an or (eq window-system
-  'dps).  While I was at it I also changed the statements so that the
-  Presentation Manager port of emacs 19 under OS/2 will use faces, etc.
-
-Thu Nov 11 07:20:13 1993  William M. Perry  (address@hidden)
-* Realized I should get sick more often - I seem to get more done. :)
-* w3-vars.el: Added the ABSTRACT, QUOTE, and BYLINE tags to the list of
-  emphasis tags.
-* w3-parse.el (w3-handle-notes): Added support for the HTML+ NOTE tags.
-  Handles any role, and also honors the SRC= for the warning image.
-* w3-parse.el (w3-handle-footnotes): Added support for the HTML+ footnote
-  and margin-note tags.  Handles as links to footnotes at the end of the
-  document. 
-* w3-parse.el (w3-fix-render-hints): Added support for the HTML+ RENDER
-  tag to extend the set of logical emphasis roles on a per-document basis.
-* w3-parse.el: Changed the emphasis handling to be more extensible.  New
-  variables w3-style-assoc and w3-style-regexp.  w3-style-assoc maps tags
-  onto style names.
-* w3-parse.el: Added ability to have IDS within headers.   This is in
-  conformance with the HTML+ specification.
-* w3-lists.el: Added ability to have IDs within <P> tags.  This is in
-  conformance with the HTML+ specification.
-* w3-lists.el: Added function w3-fill-paragraphs-in-list.  This will fill
-  all paragraphs within any type of list.  This allows for <P> elements
-  within lists without odd looking results.
-* w3-forms.el (w3-split): Changed this so that it no longer puts strings
-  with only spaces and tabs in the assoc list that is returned.  This
-  error caused every popup FORM item to have a blank line at the end.
-* Added new variable w3-default-action.  This specifies the lisp function
-  to run instead of w3-prepare-buffer when W3 can't figure out the MIME
-  type by looking at the file extension.  (Things like .README or .patch
-  would be parsed as HTML - not good).  Thanks to Alastair Burt
-  <address@hidden> for noticing the problem.
-
-Wed Nov 10 08:02:31 1993  William M. Perry  (address@hidden)
-* General cleanup, better documentation in all files.  Trying to merge
-  files so that there are fewer dependencies between files.  Thank
-  goodness for the optimizing byte compiler and call-trees. :)
-* w3-parse.el: Removed the handling of <EM> tags.  No longer part of the
-  HTML+ specification.
-* w3-vars.el: Excercise in anal-retentiveness. :)  Organized and
-  alphabetized all the variables and added to quite a few documentation
-  strings.  Yeah yeah yeah, but it needed it! :)
-* w3-vars.el: Added a few more new keybindings from Tom Tromey
-  <address@hidden>.
-* w3-misc.el (w3-maybe-eval): Added new MIME type application/emacs-lisp
-  along with a viewer that asks whether to evaluate it after viewing it.
-* w3-url.el (w3-open-local): Made this a stub to call w3-fetch with file:
-  prepended to the filename you type in.  w3-open-local-internal now does
-  all the work.  Thanks to Bill Benedetto <address@hidden> for
-  noticing it was bombing out when called non-interactively.
-* w3-url.el (w3-news): Added the ability to specify a news server in the
-  news url in the proposed news://server:port/article|newsgroup method.
-* w3-typecheck.el (w3-optionp): Changed this to correctly handle when you
-  don't select anything from the menu.  Would mess up the page and remove
-  the link before dying on an error.  Thanks to Jin S. Choi <address@hidden>
-  for noticing the problem.
-
-Tue Nov  9 14:59:59 1993  William M. Perry  (address@hidden)
-* w3-url.el (w3-file): Added proper handling of ftp://address@hidden commands.
-* w3-forms.el (w3-revert-form): Fixed this function so it will work if
-  there are pull-down lists in the form.  Also changed the forms parsing
-  code to use the first item in a list as the default.
-* w3-forms.el (w3-submit-form): TEXTAREA's will now be submitted
-  correctly.  The buffer containing the information you typed in must not
-  be killed though.  I need to find a better way to store it.  Maybe a new
-  major mode?  But then how to relay the info back to the w3-typecheck
-  function as the value?
-
-Mon Nov  8 13:05:29 1993  William M. Perry  (address@hidden)
-* Added function w3-complete-link to do a completing-read on all the links
-  in a buffer.  Should work in all emacsen.
-* Changed printing, saving, and mailing of documents so that you can
-  print/mail/save LaTeX, formatted text, or HTML source.
-* w3-url.el, w3-gopher.el: Changed the reading.... messages to display the
-  actual number of bytes retrieved.
-
-Sun Nov  7 11:37:53 1993  William M. Perry  (address@hidden)
-* w3-url.el (w3-http): Fixed a problem where fetching something that had a
-  viewer associated with it when the connection was down or the file was
-  not found would still drop you into the viewer... often with odd
-  results.
-* w3-lucid.el: Fixed a few bugs in the new lucid menus - was adding a nil
-  menu item (buffers with no links, no hotlist in memory, etc).  Caused
-  system crashes on linux, headaches on other operating systems.  Thanks
-  to Alastair Burt <address@hidden> and Arup Mukherjee
-  <address@hidden> for noticing the problem and for the initial
-  patches.
-* w3-mosaic.el: Think I fixed a problem with the hotlist parsing code.
-  Thanks to Jin S. Choi <address@hidden> for noticing the problem.
-
-Wed Nov  3 21:35:44 1993  William M. Perry  (address@hidden)
-* w3-lucid.el: Completely reworked the menu setup.  Several different
-  menus, mirroring the setup of Xmosaic.
-* w3-vars.el: Assigned a few new keybindings to make w3 a little closer to
-  info mode.  Also redefined the M-C-v and M-b keys to use the C-c prefix
-  as they should.
-
-Mon Nov  1 09:42:18 1993  William M. Perry  (address@hidden)
-* w3-parse.el (w3-build-links-list): Changed this so that it no longer
-  puts the delimiters around links with no HREFs. Thanks to Ivan Herman
-  <address@hidden> for noticing that it was still broken.
-* w3-epoch.el (w3-insert-graphic): Changed this function to redirect
-  the output into the file instead of outputting it to STDOUT and then
-  saving it in a buffer and then writing the buffer.  Faster,
-  especially for large files, and don't have to worry about how many
-  lines to delete at the top of the buffer.
-
-Sun Oct 31 10:31:04 1993  William M. Perry  (address@hidden)
-* w3-parse.el (w3-build-links-list): Think I've fixed the problem of
-  links in headers being formatted with newlines.
-* w3.el (w3-parse-relative-link): Fixed a problem where links of the
-  type "#something" would retrieve the current directory.  Stupid
-  mistake.  Thanks to address@hidden for noticing it.
-* w3-forms.el: Fixed quite a few problems with the Emacs 18 support.
-  Problem was with using markers as start and end positions to
-  creating new zones - they got set to nil when the whole region was
-  deleted, so subsequent delete-regions failed.  This also caused a
-  problem when trying to use the submit or reset buttons.
-* w3-typecheck.el (w3-read-correct-format): Fixed a problem with the
-  pulldown menu support in emacs 18.  The last-input-event variable
-  doesn't exist, so wrapped its use in an if boundp ..., etc.
-* w3-gopher.el (w3-do-gopher): Fixed problem where links like
-  gopher://somesite/11/etc/etc/ would not get parsed - was seeing 11
-  and thinking it wasn't a directory.
-* w3-url.el (w3-gopher): Fixed a problem where a match-beginning got
-  lost because of a misplaced w3-unhex-string.  Thanks to   Arup
-  Mukherjee <address@hidden> for noticing the problem.
-* w3-emacs.el: Changed the forward and backward link handling code so
-  that it will skip white space at the beginning of a link.  Thanks to
-  Arup Mukherjee <address@hidden> for noticing the problem.
-* w3-parse.el (w3-handle-comments): Fixed this function to handle either
-  comments written according to the HTML spec (with a trailing -->) or the
-  Xmosaic-handled way (with no --).  Thanks to Darrell Kindred
-  <address@hidden> for noticing the problem.
-* w3-mosaic.el (w3-parse-hotlist): Applied a patch by Arup Mukherjee
-  <address@hidden> and Darrell Kindred <address@hidden> to fix
-  an annoying problem where the first page you retrieved in a w3 session
-  would not be shown, and the buffer you started out in would be put into
-  w3-mode.
-
-Sat Oct 30 13:38:43 1993  William M. Perry  (address@hidden)
-* w3-misc.el (w3-preview-this-buffer): Fixed this so that it does a
-  buffer-file-name instead of just buffer-name so that it will be able
-  to reload documents correctly.
-* w3-epoch.el: Fixed stupid problem in w3-follow-link where it called
-  w3-do-form-entry with the arguments in the wrong order.
-* w3-emacs19.el: Removed requirement of cl.  Took up lots of space - was
-  old anyway.  'last' is no longer needed.
-* Applied patches to Makefile from Jamie Zawinskie <address@hidden> so it
-  will compile in a better way.
-* Added full GNU copyleft notice to all the source files so that it can be
-  distributed with Lucid Emacs.  Also changed lots of functions to make the
-  files compile with fewer warnings about unbound variables.
-
-Wed Oct 27 07:10:56 1993  William M. Perry  (address@hidden)
-* w3-forms.el (w3-handle-selections): Added this function to handle the
-  new <SELECT> tag in HTML+.  Supercedes the TYPE="OPTION" tag.  This also
-  handles the scrolling list boxes and multiple pick lists.  Multiple pick
-  lists don't work correctly yet though.
-* w3-mime.el (w3-parse-mailcap): New function to parse the .mailcap file
-  used by Mosaic/metamail/etc.  Appends it to the w3-mime-viewers assoct
-  list - format is preserved correctly.  If the MIME type is already in
-  the assoc list, then it is skipped.
-
-Tue Oct 26 08:39:23 1993  William M. Perry  (address@hidden)
-* w3-epoch.el (w3-follow-link): Fixed a problem where w3-follow-link
-  would not work correctly - needed to wrap the 't' start of an if
-  statement with a progn.
-* w3-epoch.el (w3-create-hrule): Created this function to generate a
-  pixmap the size of the current window width to use for horizontal
-  rules.  Also changed the parser to use add-graphic-zone if it is in
-  epoch and it finds an <HR>, otherwise it will use the dashes.
-
-Mon Oct 25 17:15:05 1993  William M. Perry  (address@hidden)
-* w3-vars.el (w3-mime-extensions): Added _LOTS_ more MIME types +
-  descriptions of _ALL_ of them.
-* w3-lucid.el (w3-mouse-handler): Changed this to use the new function
-  w3-link-info.  Is a little easier to use.
-* w3-misc.el (w3-link-info): New function to give an intelligent guess of
-  what the link is pointing to.  ie: 'A hypertext file on the local file
-  system' or 'A newsgroup (comp.infosystems.www) from NNTP server
-  usenet.ucs.indiana.edu'
-* w3-url.el (w3-open-local): Fixed a problem where opening a local file as
-  ~/..../fname.html would cause an error if you had a relative reference
-  past the ~/ point.  Thanks to Benjamin Pierce <address@hidden> for
-  noticing the problem.
-* w3.el (w3-search): Changed this function to make sure that only 1 '?' is
-  appeneded to the url when searching.  Thanks to Arup Mukherjee
-  <address@hidden> for noticing the problem.
-
-Sat Oct 23 10:25:32 1993  William M. Perry  (address@hidden)
-* w3-epoch.el: Fixed w3-follow-link so it will work again - was
-  messing up once in a while because of the new code to let images be
-  used as links.
-* w3-epoch.el: Using images as links should work now.  Need to have it
-  check for failure of reading the XPM and use the ALT attribute if it
-  does.
-* w3-url.el (w3-format-news): Fixed this function so that it will no
-  longer call w3-sentinel on its own.  Also changed it so that the <TITLE>
-  is set to the subject, not the newsgroup name.
-* w3-epoch.el: redid the image code to limit the images to 40 colors.
-  This allows more images to be read in before the conversions start
-  failing.  Can change this arbitrary limit by changing the argument
-  to ppmquant in w3-graphic-converter-alist.
-* w3-misc.el (w3-hexify-string): Fixed this function - it would mess
-  up when sending hex codes < F.  (ie: %F instead of %0F).
-
-Fri Oct 22 12:37:26 1993  William M. Perry  (address@hidden)
-* w3-url.el: Removed all the references to &optional source in all the
-  different retrieval areas (w3-http, w3-file, w3-gopher, etc).  This will
-  all be handled in w3-build-continuation from now on.  Also changed it so
-  that printing/sourcing a document doesn't explicitly set the w3-source
-  variable or w3-print-next, it just wraps the calls to w3-sentinel in a
-  let statement.
-* w3-url.el (w3-http): Changed w3-http to insert an error message into
-  w3-working-buffer if it couldn't connect to the server.  Thanks to 
-  Bengt Andersson <address@hidden> for noticing the problem.
-
-Thu Oct 21 06:31:09 1993  William M. Perry  (address@hidden)
-* w3-mime.el (w3-parse-mime-headers): Changed the detection of circular
-  redirection to insert a warning at the end of whatever it did retrieve
-  instead of signalling an error.  This way people will know who to
-  contact for the problem.
-* w3-epoch.el (w3-insert-graphic): Added support for ALIGN attribute
-  of the IMG tag.
-* w3-parse.el (w3-fix-paragraphs-in-region): Fixed stupid problem where
-  ordered lists would not be filled correctly if unordered lists were
-  positioned before them in the buffer.  Thanks to Bengt Andersson
-  <address@hidden> for noticing the problem.
-
-Wed Oct 20 11:35:40 1993  William M. Perry  (address@hidden)
-* w3-auth.el (w3-basic-auth): Fixed a stupid problem in a regular
-  expression that caused it to only do access-authorization lookups on the
-  first part of the path.  Now passes all cern tests successfully.  On to
-  pubkey!
-* w3-mime.el (w3-create-mime-request): Took out all the \r's.  Was
-  screwing up Cern's experimental authorization server.
-* w3-forms.el: Fixed problem in the handling of TEXT input tags when the
-  initial value was longer than the visible size. Also fixed problem where
-  typing in a password longer than the visible size caused an error.
-* w3-url.el (w3-open-local): Changed this function to call w3-sentinel
-  if it was called interactively.  This way 'o' in a w3 buffer still
-  works.
-* w3-epoch.el (w3-insert-graphic): Completely rewrote this function.
-  It should be able to get graphics over any type of protocol (it
-  goes thru w3-retrieve).  w3-graphic-converter-alist also now goes by
-  MIME types.
-
-Tue Oct 19 10:12:49 1993  William M. Perry  (address@hidden)
-* w3-misc.el (w3-use-links): New function to do a completing read on the
-  <LINK> tags in the current document.  No keybinding yet.
-* w3-misc.el (w3-mail-to-author): New function to send mail to the author
-  of a document.  Uses the <LINK> tag with REV=made if any is found.
-* w3-parse.el: Added storage of the <LINK> attributes.  w3-mail-to-author
-  will send mail to the author if the 'made' LINK is found.
-* w3-url.el (w3-fetch): Added in check to see if w3-working-buffer exists
-  before calling w3-sentinel.  Would give error "No such buffer  *W3*" if
-  you followed a telnet/tn3270/rlogin link.
-* w3-gopher.el: Changed the hypertext gopher support to just return raw
-  HTML like all the other functions now.
-* w3.el (w3-parse-relative-link): Changed w3-relative-link to just call
-  w3-fetch on the results of this function so I could use it in
-  w3-parse-mime-headers for redirection.
-* w3-url.el (w3-retrieve): Moved everything from w3-fetch into this
-  function.  It just returns the name of the buffer the raw HTML is put
-  into - no processing is done.  w3-fetch is now just a call to this
-  function and then w3-sentinel.  HTTP/1.0 redirection and authorization
-  are handled before exiting.
-* w3-auth.el: Added an optional argument to the w3-XXX-auth functions.  If
-  third argument OVERWRITE is non-nil, and a password is found, it is
-  ignored and a new user/pass combination are prompted for.
-
-Mon Oct 18 08:38:00 1993  William M. Perry  (address@hidden)
-* w3-parse.el (w3-prepare-buffer): Moved the call to w3-handle-forms to be
-  after w3-restore-pre so that forms inside <PRE> segments would turn out
-  right.  Not part of the spec, but useful.  Thanks to Rob Tillotson
-  <address@hidden> for noticing the problem and suggesting the
-  fix.
-* w3-auth.el (w3-b64-encoding): Actually wrote the base 64 encoding
-  function in lisp.  Much faster than using the subprocess.
-* w3-lucid.el (x-popup-menu): Added this function to do a blocking popup
-  menu.  Thanks to Jamie Zawinski (address@hidden) for telling me where to
-  look - its a hacked up version of yes-or-no-p-dialog-box from
-  prim/menubar.el.
-* w3-mime.el (w3-create-mime-request): Added in checking for authorization
-  into the MIME request.  If a match is found using w3-basic-auth, then a
-  new line is added with the encoded password.
-* w3-auth.el (w3-basic-auth): This now takes an optional parameter PROMPT,
-  that if non-nil and a server and/or directory is not found in the list,
-  then the user is prompted for a username/password.  If nil, it just
-  returns nil if not user/pass found.
-* w3-auth.el (w3-encode-password): Due to some problems with numbers
-  getting too large when doing base64 encoding, have reworked this
-  function to call a program in a subprocess.  Program is specified by the
-  variable w3-b64-encoder, and defaults to b64encode, from
-  ftp://cs.utk.edu/pub/MIME/b64encode.c.
-
-Sun Oct 17 10:21:06 1993  William M. Perry  (address@hidden)
-* w3-auth.el (w3-encode-password): I think this does base64 encoding
-  correctly now.  Have to test it more though.
-* w3-auth.el: Started work on 'Basic' authentication.  Not working yet,
-  but storage of servers/usernames/passwords/paths works.  Subdirectories
-  of 'protected' directories will find the username/password for the
-  parent directory, as per the specification (/foo/bar/baz.html will
-  locate the password entered before for /foo/test.html or / if any were
-  entered).
-* w3-mime.el (w3-parse-mime-headers): Added error checking into the server
-  redirection to see if something points to itself.
-* w3-typecheck.el (w3-floatp): Fixed regular expression problem where
-  floating point numbers would not be parsed correctly.
-* w3-typecheck.el (w3-urlp): Wrote this function to do basic typechecking
-  of URLS that are input into a <FORM>.
-* w3-mime.el (w3-parse-mime-headers): Added support for server-side
-  redirection (301, 302) and the Method: header also (303).
-* w3-forms.el (w3-set-radio-button): First pass at doing Radio buttons the
-  correct way.  Works (to a point) - it doesn't delete one of the zones
-  after changing their values though.  Not sure why.
-
-Sat Oct 16 14:55:39 1993  William M. Perry  (address@hidden)
-* w3-forms.el: Added support for PASSWORD input tag.  Will use
-  ange-ftp-read-passwd and display '*****' as the value.
-* w3-forms.el: Added support for OPTIONS INPUT tag.  If in Xwindows and
-  able to use x-popup-menu it will pop up a menu.  If not in Xwindows,
-  will use a completing read of the possible options.
-
-Fri Oct 15 16:15:59 1993  William M. Perry  (address@hidden)
-* w3-parse.el (w3-nuke-unsupported): Changed this so that it will support
-  the ALT tag in IMG statements.
-* w3-gopher.el: Changed the gopher handling so that it will pass
-  everything but directories off to the main viewer-handling procedures.
-
-Thu Oct 14 18:26:55 1993  William M. Perry  (address@hidden)
-* w3.el (w3-save-url): Fixed problem in w3-save-url where the text was
-  saved in the kill-ring, but the kill-ring-yank-pointer was not updated.
-  Thanks to Bengt Andersson <address@hidden> for noticing
-  it.
-* w3.el (w3-quit): Fixed a problem where quitting from links would take
-  you back one level of buffers too far.  Thanks to Bill Benedetto
-  <address@hidden> for noticing it.
-
-Wed Oct 13 07:10:04 1993  William M. Perry  (address@hidden)
-* w3.el (w3-quit): Added the variable w3-keep-old-buffers.  If t, old w3
-  buffers are kept.  If nil, w3 buffers are deleted after you follow a
-  link from them.  Need to work on getting the parent of a w3 buffer now
-  though.
-* w3-lucid.el (w3-extent-at): Fixed problem where Lucid would not realize
-  that you were on a link if it was at the first character.
-* w3-url.el (w3-build-continuation): Fixed problem where a file with no
-  MIME viewer would die - just a misplaced set of parentheses.
-* w3-parse.el (w3-check-index): Changed this function so it only inserts
-  the <FORM> tags if protocol is HTTP.
-
-Mon Oct 11 07:19:59 1993  William M. Perry  (address@hidden)
-* w3-parse.el (w3-prepare-buffer): Ordered lists will now have their
-  numbers aligned correctly.
-* w3-misc.el (w3-fix-fake-urls): This function will turn 'fake' urls like
-  ftp://somesite/some/file/ into real links like <A
-  HREF="ftp://somesite/some/file/";> - the text of the link is the text it
-  replaces.  Will be useful for mail/news reading hooks.
-
-Sat Oct  9 08:14:45 1993  William M. Perry  (address@hidden)
-* w3.el (w3-quit): fixed a problem where quitting from a 'previewed'
-  buffer would signal an error.
-* w3-parse.el (w3-prepare-buffer): Fixed this so that <PLAINTEXT> can
-  appear anywhere in a buffer, and will be treated appropriately.  Thanks
-  to Darrell Kindred (address@hidden) for noticing the problem.
-
-Fri Oct  8 08:51:37 1993  William M. Perry  (address@hidden)
-* Changed all the (set buffer " *W3*") to now use the variable
-  w3-work-buffer instead - this will allow me to have multiple receives
-  going at the same time.  Also allow me to parse out different buffers
-  for urls and not have to copy back and forth to " *W3*". Not fully
-  implemented yet.
-
-Tue Oct  5 11:56:30 1993  William M. Perry  (address@hidden)
-* w3-misc.el (w3-in-assoc): Changed this funcion so that it returns the
-  first match.  Was messing up on some of the wildcards in the default
-  MIME viewers.
-* w3-viewers.el: Several bugfixese/enhancements to the MIME viewer
-  handling.  Everything (including printing, sourcing, and presentation of
-  hypertext) is now handled by the MIME viewers.
-* w3.el: Will now load the file "~/.w3" if it exists.  Will let you store
-  all your w3 variables in the same place.  Only loaded after all the
-  different modules.
-* w3-viewers.el, w3-url.el: Changed the viewer handling to be by MIME
-  content-types all the time.  A new variable, w3-mime-extensions,
-  controls how file extensions are mapped onto MIME content-types.
-  Inspired by the way MacMosaic handles its viewers.  Should be easier to
-  maintain just one viewer list.
-
-Mon Oct  4 06:19:10 1993  William M. Perry  (address@hidden)
-* w3-viewers.el: Changed the viewing to ask if you wish to view the output
-  of the process.  Generates unique buffer names, etc.  Thanks to T.V.
-  Raman <address@hidden> for suggesting it.
-* w3-viewers.el: Moved all the external/internal viewer handling into this
-  file.
-* w3.el (w3-quit): Fixed problem where w3 would signal an error when you
-  quit and the buffer that preceded it has been killed.  Just goes to the
-  next buffer now.  Thanks to Bengt Andersson
-  <address@hidden> for noticing it.
-* w3-lucid.el: Applied patch from Darrell Kindred
-  <address@hidden> which fixed a problem with finding tags of
-  hyperlinks when it had other attributes (<ADDRESS>,<B>, etc) as well.
-
-Fri Oct  1 06:29:37 1993  William M. Perry  (address@hidden)
-* w3-parse.el (w3-fix-paragraphs-in-region):  Added support for the <HR>
-  tag (horizontal rule).
-* w3-mime.el (w3-mime-viewer): Fixed a problem where this returned a cons
-  where it should have returned a string.  Thanks to Bengt Andersson
-  <address@hidden> for noticing it (yet again).
-
-* w3-gopher.el: Fixed a few problems with searching
-* w3-url.el: removed newlines from regexps - were messing up <PRE>
-  segments.
-* w3-url.el: changed mailto to include the url that it was sent from.
-
-Mon Sep 27 13:57:34 1993  William M. Perry  (address@hidden)
-* w3-typecheck.el (w3-intp): Changed the function to check whether an
-  integer was valid.  Would mess up in emacs19, where 12.5 is a good
-  parameter to string-to-int.
-
-Sat Sep 25 06:48:55 1993  William M. Perry  (address@hidden)
-* w3-typecheck.el: Added this file to control typechecking of forms entry
-  fields.  Checks dates, ints, floats, urls, and text.
-* w3-forms.el (w3-do-form-entry): changed so that it will use the new
-  typechecking functions.
-
-Fri Sep 24 14:01:54 1993  William M. Perry  (address@hidden)
-* w3-lucid.el: completely rewrote the forward and backward link movement.
-  Works a lot better now.
-
-Thu Sep 23 11:36:35 1993  William M. Perry  (address@hidden)
-* w3-parse.el (w3-prepare-buffer): fixed <TITLE> handling so it takes out
-  leading and trailing spaces/tabs.  Could make it difficult to find a
-  buffer when the name began with a space.
-* w3-parse.el (w3-build-links-list): Fixed problem where link names would
-  be too long (would include part of the HREF) when the HREF was not
-  quoted.  Thanks to Dong-Ping Deng (address@hidden) for noticing
-  it.
-
-Wed Sep 22 10:49:37 1993  William M. Perry  (address@hidden)
-* w3-misc.el (w3-maybe-relative): Fixed stupid bug where I didn't add the
-  new tn3270 link type to a few regular expressions.
-
-Tue Sep 21 10:51:09 1993  William M. Perry  (address@hidden)
-* w3-url.el: Added support for tn3270://... links.  Thanks to T V Raman
-  <address@hidden> for noticing its lack.
-* w3-parse.el (w3-check-index): Added variable w3-use-forms-index.  If
-  non-nil, will replace <ISINDEX> tags with a very short <FORM> for
-  searching.  Default is t, like Xmosaic.
-* w3-vars.el: Added more styles for the <EM> tag.
-
-Mon Sep 20 07:02:28 1993  William M. Perry  (address@hidden)
-* w3-emacs19.el (w3-find-specific-link): Emacs19 can now find #identifier
-  marks in documents.
-* w3-gopher.el (w3-gopher-retrieve): Fixed a problem with gopher sending
-  more than one character 'description' to the server.  Would result in
-  'Can't open 1/whatever' in some cases.
-* w3-misc.el (w3-show-hotlist): Added this function to show the hotlist in
-  a hypertext form.  Thanks to Stephen Simpson (address@hidden) for
-  suggesting it.
-* w3-forms.el: Added in support for emacs 18
-* w3-emacs.el: Added in support for deleting an arbitrary zone.  This
-  was needed to make forms support work correctly.
-* w3-vars.el (w3-be-asynchronous): added this variable to control whether
-  documents would be retrieved in a non-blocking way over HTTP.
-
-Sun Sep 19 14:15:39 1993  William M. Perry  (address@hidden)
-* w3-parse.el (w3-handle-em-tags): Fixed problem where emacs18 would
-  die on handling any <EM> tag.  Thanks to address@hidden
-  (Michael Richardson) for pointing it out.
-* w3-mime.el (w3-mime-viewer): Fixed problem with the viewer finder - was
-  trying to do a car of a string Keith Waclena
-  <address@hidden> for sending me the fix.
-
-Fri Sep 17 09:23:08 1993  William M. Perry  (address@hidden)
-* w3-mosaic.el: fixed problem where deleting or adding hotlist entries
-  would not update the menubar.  Thanks to address@hidden for noticing the
-  problem.
-
-Mon Sep 13 06:40:35 1993  William M. Perry  (address@hidden)
-* Added the <REMOVED> and <ADDED> tags (both as containers and roles of
-  the <EM> tag.
-* w3-parse.el: took out the conversion of IMG tags to hyperlinks - was
-  messing up when links were nested - need to work on it.
-* w3-lists.el (w3-build-table): tables should now handle <DD> with no
-  matching <DT> a little better.  Don't know why people bother writing
-  HTML this bad, but oh well.
-* w3-mime.el (w3-parse-mime-headers): Had a problem parsing out the mime
-  headers if there wasn't a crlf at each endline, which broke parsing
-  NCSA's new 1.0 server.  Fixed now.
-
-Fri Sep 10 05:52:06 1993  William M. Perry  (address@hidden)
-* w3-emacs19.el: took out blank definition of w3-submit-form that
-  would screw up submitting forms.  (Emacs19.el got loaded after
-  w3-forms.el so would have a blank definition)
-
-Thu Sep  9 07:57:58 1993  William M. Perry  (address@hidden)
-* w3-parse.el: Added support for <SP> (nonbreaking spaces), and <BR>
-  (force line breaks), and <EM> tags - the EM tags don't allow multiple
-  tags right now (ala <EM B I> </EM>, but nesting of <EM> tags works.)
-
-Wed Sep  8 11:58:21 1993  William M. Perry  (address@hidden)
-* w3-url.el (w3-build-continuation): the fetching of grouop annotations
-  has been removed, as the experiment at NCSA has ended.
-* w3-forms.el (w3-revert-form): finished this function - now works
-  correctly. 
-* Added code to all emacs-specific files to call w3-do-form-entry if
-  w3-follow-link is called on a zone that is tagged with 'w3form.
-* I have serious doubts whether the form support will work in emacs18 - I
-  need to write a delete-zone function for it, but that might be a bear.
-  Will toy with it later.
-
-Tue Sep  7 07:13:36 1993  William M. Perry  (address@hidden)
-* w3-forms.el: added a (delete-overlay zone) if running FSF19 so that not
-  all edits are sent when you submit a form.
-* w3-forms.el: now, if a checkbox's VALUE/DEFAULT field is empty, it is
-  sent as name=PRIMED, ala xmosaic.
-* w3-forms.el: fixed bug where the maxlength would be set to 20 instead of
-  unlimited if it was not specified.  (Actually, its set to 10,000 but I
-  think that should be enough for a while. :)
-
-Mon Sep  6 08:59:43 1993  William M. Perry  (address@hidden)
-* w3-forms.el: Eureka!  They actually work now.  Successfully submits to
-  the NCSA server/demo pages.  Still a little kludgey, but cleaning it up
-  should be too difficult.
-* w3-forms.el: forms now keyed by number so it will be easier to submit
-  them back to the server.  Also changed the submit and reset buttons to
-  take their button labels from the VALUE tag as xmosaic does.
-
-Sun Sep  5 09:17:42 1993  William M. Perry  (address@hidden)
-* w3-forms.el: more work on forms support - can now click on check boxes
-  and enter text in the entry areas.
-* w3-forms.el: added support for the parsing of forms
-
-Sat Sep  4 11:06:12 1993  William M. Perry  (address@hidden)
-* w3-mime.el: Fixed a problem where mime viewers would not work correctly
-  - tried to do a car() on a string.
-* w3-mosaic.el (w3-add-document-to-hotlist): fixed a bug in the creation
-  of gopher hotlist entries.  Thanks to Erik Ostrom
-  (address@hidden) for noticing and patching it.
-* w3-gopher.el: more work on trying to get searching to work - almost
-  there. 
-
-Wed Sep  1 09:17:00 1993  William M. Perry  (address@hidden)
-* w3-gopher.el: Did quite a bit of work on the gopher support.  Lots of
-  ideas, some code from the original gopher.el, but this keeps it in
-  hypertext - can print, get the document source, add to hotlist, etc.
-  Searching still does not work.
-
-Tue Aug 31 10:03:04 1993  William M. Perry  (address@hidden)
-* w3-misc.el: Changed the viewer handling so that it creates unique
-  filenames - if you viewed several things at once, it would write over
-  the old file, and kill the old viewers.  Also fixed problem where it
-  wouldn't delete the w3-tmp file when it was done viewing.
-
-Mon Aug 30 10:19:07 1993  William M. Perry  (address@hidden)
-* w3-url.el (w3-gopher): added variable w3-use-hypertext-gopher.  If 't'
-  use the gopher interface I just wrote, or use Scott Snyder's gopher
-  mode.  (The gopher mode is a slightly more complete, but mine preserves
-  the hypertext feel)
-* w3-gopher.el: added this file - rolled my own gopher interface this
-  afternoon.  Needs more work, but seems functional.
-* w3-misc.el: changed the viewer handling so that it handles the viewers
-  asynchronously again.
-
-Fri Aug 27 07:06:39 1993  William M. Perry  (address@hidden)
-* w3-parse.el (w3-handle-address): address handling handles newlines
-  before and after ADDRESS tags better - so multiple ADDRESS tags
-  following each other don't have more than one newline, etc.
-
-Thu Aug 26 14:49:28 1993  William M. Perry  (address@hidden)
-* w3-parse.el (w3-fix-paragraphs-in-region): fixed problem where the
-  fleading spaces/tabs of a line in a PRE or XMP segment would get
-  nuked.  Thanks to Bob Olson (address@hidden) for noticing it.
-
-Tue Aug 24 22:49:38 1993  William M. Perry  (address@hidden)
-* w3-epoch.el: fixed a typo - left out a " in a defvar which caused the
-  compiles to fail.  Thanks to Andrew Violette (address@hidden) for
-  noticing it. 
-
-Mon Aug 23 07:12:05 1993  William M. Perry  (address@hidden)
-* w3-misc.el (w3-lookup-style): Fixed stupid mistake where emacs19
-  wouldn't return any styles from this function
-* w3-parse.el: Fixed a problem where it would not fill paragraphs
-  correctly after the last PRE segment of the text.
-* w3-parse.el: Made the parser a lot less destructive (not as many
-  delete-regions) - this should make it handle overlapping formatting
-  better in most cases.  And maybe a little faster, since it doesn't have
-  to create as many strings and do as many re-insertions.
-
-Sun Aug 22 09:25:14 1993  William M. Perry  (address@hidden)
-* w3-emacs19.el: rewrote w3-view-this-url and w3-follow-link so that they
-  won't sometimes choke on links at the end of bold/italic/whatever zones.
-* w3-url.el (w3-http): now prints outi ts reading status (Reading.....)
-* w3-lucid.el: Took out the copying of a non-existent 'underline face. 
-
-Wed Aug 18 06:27:12 1993  William M. Perry  (address@hidden)
-* w3-mosaic.el (w3-write-global-history): fixed this so it actually works
-  again - forgot to change it when I changed the format of w3-history-list
-  to be an assoc list.
-
-Tue Aug 17 18:01:00 1993  William M. Perry  (address@hidden)
-* w3-mosaic.el (w3-fetch-annotations): Fixe problem where the annotation
-  fetch would die if the server couldn't be contacted.
-
-Mon Aug 16 17:04:23 1993  William M. Perry  (address@hidden)
-* w3-emacs19.el: took out the xresource reading - will depend on
-  emacs*w3-XXX-style.AttributeFont like the lucid emacs stuff.
-* w3-lucid.el, w3-emacs19.el: changed these so that if the newly created
-  faces aren't set up in the xdefaults, it will copy the appropriate face
-  (header-style copies 'bold-italic, etc).  Thanks Michael J. Lamoureux
-  (address@hidden)
-
-Sun Aug 15 09:22:52 1993  William M. Perry  (address@hidden)
-* w3-url.el: Added #linkname finding for local files and ftp html files.
-* w3.latex: added a section on going through firewalls/telnet, and using
-  the new tcp.c and tcp.el package.
-* w3.el: Changed the w3-help function to make sure a function is defined
-  before checking for documentation strings, etc.  Also changed it so that
-  it puts it in a hypertext buffer.  This opens up the idea of putting
-  links in the documentation strings. :)
-* Made tcp.c and tcp.el part of the 'extras' distribution.
-* w3-mosaic.el: Fixed problem where it would try to send the annotation
-  request to a string if w3-open-stream failed.
-* w3-misc.el: changed the telnet handling so that it will return 'nil' if
-  telnet could not connect to the remote host.
-* w3-vars.el (w3-color-display): this will now be set correctly in emacs19
-  - had spelled a function name wrong.
-* w3-url.el: Change w3-open-local and w3-file to respect new variable
-  w3-directory-format, which tells it whether to have a hypertext
-  directory listing, or just pass off to dired.
-
-Fri Aug 13 07:50:50 1993  William M. Perry  (address@hidden)
-* w3-mosaic.el: Fixed problem with not killing the "Process *anno*
-  finished" in http bufffers.
-* w3-lists.el: Fixed bug where w3-sublists-exist would bomb in epoch.
-  Epoch's re-search-forward returns t or nil, not the point of the
-  match like lucid/emac18/emacs19.  Several people pointed it out.
-
-Thu Aug 12 17:51:09 1993  William M. Perry  (address@hidden)
-* w3-misc.el (w3-pass-to-viewer): Fixed problem where this would not
-  display a picture if you were in Xwindows - flaw in a logical statement.
-  Thanks to Phil Kime (address@hidden) for noticing it.
-* w3-parse.el (w3-build-links-list): Added a few patches from Erik Ostrom
-  (fiicmds04.tu-graz.ac.at) - fixes bug with only recognizing NAMEd hrefs
-  when the NAMEs are quoted, and botching of relative #links.
-* w3-url.el: changed w3-http and w3-gopher to check the port # - if it is
-  in w3-bad-port-list, ask for confirmation before opening the connection.
-
-Tue Aug 10 13:07:04 1993  William M. Perry  (address@hidden)
-* New variable w3-bad-server-list, that is a list of HTTP/0.9 servers that
-  can barf on HTTP/1.0 requests.  Generally just servers that have a
-  decent amount of lag from your site (or that completely barf on
-  HTTP/1.0, like the TeXinfo gateway at ohio-state).
-* w3-mime.el: changed w3-create-mime-request to check w3-bad-server-list
-  for the current server and the value of w3-use-http2.  If both are
-  false, then generate an HTTP/1.0 request, otherwise HTTP/0.9
-* w3-url.el: changed w3-http to always use w3-create-mime-request.
-
-Mon Aug  9 08:52:10 1993  William M. Perry  (address@hidden)
-* w3.el: Added w3-documents-menu, an assoc list of titls and urls to turn
-  into a menu if you are in lemacs or emacs19.  Add support for running it
-  on dumb terminals via completing-read later.
-* w3.el: Ripped out all the variable definitions into w3-vars.el
-* w3-mime.el: fixed quite a few problems with w3-create-mime-request
-* w3-misc.el: think I finally got the truncated pages problem fixed.
-  (yeah, right :)
-* w3.el: Added code from Erik Ostrom (address@hidden) to
-  patch gopher-mode to throw you back into w3 when encountering a WWW link
-  in gopher.  Hopefully these will make it back into the main gopher.el.
-* w3-emacs19.el (w3-back-link): Added fix from Erik Ostrom
-  (address@hidden) so it won't give you an error in files
-  with only 1 link when you try to move backward.
-* w3-epoch.el: fixed a typo where you wouldn't be able to retrieve
-  images over http.
-
-Sun Aug  8 13:56:11 1993  William M. Perry  (address@hidden)
-* w3-url.el: added support for file://localhost urls.  Thanks to
-  address@hidden for pointing out that they didn't work
-* w3-emacs.el: took out the searching forward for '[' in the
-  goto-start-of-zone routine.  Would fail if w3-delimit-links was nil.
-  Thanks to address@hidden for pointing it out.
-* Revamped w3-url.el, w3-mosaic.el, and w3-misc.el to get the telnet
-  support working better.  No more mucking around with filters, etc.
-* w3-parse.el (w3-build-links-list): Changed the link routine so that it
-  will default to putting the end of a link at the end of the current line
-  if none is found normally.
-* w3-url.el: Local directories are now put into a hypertext buffer, and
-  parsed by w3.  Not sure if I should leave it this way or not.
-
-Sat Aug  7 03:28:58 1993  William M. Perry  (address@hidden)
-* w3-lists.el (w3-build-table): Changed it so you don't need to have a
-  DT in a DL list.
-* w3-mime.el (w3-mime-viewer): fixed this function to actually work! :)
-  (Was returning a list of the viewer, had to add a (car).)
-* Applied several patches from Jin S Choi (address@hidden), fixing
-  several stupid mistakes I had made. :)  Including, too many ')' in
-  emacs19, bad font setting in emacs19, noticed truncated pages via http2,
-  underlining of headings is off by default now.
-* w3-url.el: no longer print out "Reading..." when receiving documents -
-  would sometimes scramble the document.
-* w3-misc.el: w3-open-stream no longer errors when it can't connect to a
-  server - this would cause w3 to bomb if the annotation server were down.
-  Thanks to Jin S Choi (address@hidden) for noticing it.
-* w3-misc.el: w3-send-string should be a little better about not sending
-  mulitple lines to the server now, especially in emacs19 & epoch(?) where
-  accept-process-output accepts a timeout.
-
-Fri Aug  6 14:45:20 1993  William M. Perry  (address@hidden)
-* w3-url.el: changed the gopher handling to pass off everything to gopher
-  mode, so it can now handle gifs, images, etc.
-* w3-lists.el: Made DL be compact by default until I get the code to
-  change it based on DL COMPACT working right.
-* w3.el: removed the w3-useful-documents function - not really worth
-  having.
-* w3-lists.el: Totally rewrote the main loop so its not recursive, and
-  doesn't use save-restriction.  Much faster now.  Also truly fixed
-  problem with not nesting correctly.
-* w3-html+.el: a few tweaks, not ready for prime time yet though. 
-
-Thu Aug  5 08:22:16 1993  William M. Perry  (address@hidden)
-* w3-parse.el: Fixed bug in w3-fix-paragraphs that would cause it to loop
-  indefinitely if there were more than 2 PRE sections in a document.
-* w3-misc.el: Will now print out "Reading....." when receiving input.
-* w3-misc.el: w3-open-stream will now try to open the stream
-  w3-connection-retries times until it receives a valid connection.
-
-Wed Aug  4 08:49:44 1993  William M. Perry  (address@hidden)
-* w3-html+.el: can now include links as data table elements.  Don't wrap
-  stuff onto next lines yet though.
-
-Tue Aug  3 00:39:50 1993  William M. Perry  (address@hidden)
-* w3-lists.el: nested lists don't indent too far now.  Normal lists are
-  only indented 1 tab.
-* w3-html+.el: started work on this file to contain experimental HTML+
-  parsing routines.  Will probably eventually rewrite most of the parser.
-  Mostly support for tables in right now.  Will release soon.
-
-Mon Aug  2 09:21:23 1993  William M. Perry  (address@hidden)
-* w3-parse.el: Added support for arbitrary tags (!ENTITY ...), and
-  support for endash and emdash entities.
-* w3-parse.el: Fixed problem where links with no HREF field would bomb out
-  the parser (trying to string-match on nil).
-
-Thu Jul 29 10:35:06 1993  William M. Perry  (address@hidden)
-* w3-lists.el: found major bug with nesting multiple ULs inside of an
-  OL  Seems to be fixed now though.
-
-Wed Jul 28 08:29:31 1993  William M. Perry  (address@hidden)
-* w3.latex: revamped this so I can now use the latex2html perl script by N
-  F Drakos (address@hidden).  This will (almost) guarantee that the
-  online documentation is as up-to-date as the latex files.
-* w3-parse.el: Will now be able to find titles that don't have TITLE and
-  /TITLE on the same line.
-* w3-parse.el: Now stores the full url in each link's data zone - this
-  will allow print-url-under-point to work, and will make it easier to
-  write something that prints out a string of html documents.
-* w3-lists.el: Added this file.  Contains new functions to do better
-  nesting of lists.  Shouldn't hang emacs, but if it does, let me know
-  right away and I'll try to fix it.  Works great on the NCSA demo
-  document - and it has DLs inside ULs inside DLs inside ULs, so I figured
-  it was a good torture test for it. :)
-* w3-mosaic.el: changed the hotlist parsing code to remove empty lines so
-  you won't get a document type of ^Jhttp: if there are spurious blank
-  lines in the hotlist file.
-
-Mon Jul 26 09:45:34 1993  William M. Perry  (address@hidden)
-* w3-emacs19.el: Fixed forward and backward link movement.
-* w3-parse.el: Now transforms IMG ... tags into HREFs.
-
-Sun Jul 25 15:00:43 1993  William M. Perry  (address@hidden)
-* w3-misc.el: added function w3-find-this-file, which will do a find file
-  on the current w3 documents source (if in FTP or local file mode).  Will
-  be able to do it over HTTP when HTTP/1.0 becomes supported.  Thanks to
-  Heiko Muenkel (address@hidden) for suggesting it.
-* w3-misc.el (w3-send-string): Added a sit-for statement so it will wait
-  for process output - if the process is closed, then don't send any more
-  lines of the request.  This seems to have stopped the truncation of
-  pages.
-
-Fri Jul 23 07:23:05 1993  William M. Perry  (address@hidden)
-* w3.el: Added patches by address@hidden  Fixed a problem with a
-  non-existent gopher directory in w3-interesting-docs, and a typo.
-* w3-url.el (w3-unhex): Added patches by address@hidden  This
-  should give the correct values now.  Was off by 6.
-
-Thu Jul 22 12:05:17 1993  William M. Perry  (address@hidden) 
-* w3.el: Added new variable w3-use-http2.  If 't', w3 will use the
-  HTTP/1.0 support that for some reason truncates pages.  Default is t
-* Makefile: fixed stupid mistake where I left out a ${LISPDIR} so it
-  always tried to install in the root directory (/)
-
-Tue Jul 20 11:52:33 1993  William M. Perry  (address@hidden)
-* w3-parse.el (w3-fix-paragraphs): This function now respects PRE and XMP
-  segments and won't fill paragraphs in them.
-
-Mon Jul 19 09:22:17 1993  William M. Perry  (address@hidden)
-* w3-parse.el (w3-build-links-list): Fixed a problem where the text from
-  the last link would be used if there was a newline before the closing
-  /A in a link.  Also fixed several places where a link listing would
-  inherit items from the last link if they weren't defined (METHOD, URN,
-  etc)
-
-Sat Jul 17 11:36:31 1993  William M. Perry  (address@hidden)
-* Started work on adding NeXT mouse support in w3-emacs.el
-* Disabled the HTTP/1.0 support - was truncating pages for some reason.
-* w3-mosaic.el (w3-grok-annotation-format): Won't bomb if one of the
-  PAN-###.html files doesn't exist.
-
-Fri Jul 16 07:32:54 1993  William M. Perry  (address@hidden)
-* w3-mosaic.el (w3-do-personal-annotation): this will now correctly create
-  the LOG file in the personal annotation directory if it doesn't exist.
-* w3-parse.el (w3-prepare-buffer): Wrapped all the parsing stuff in a 
-  (let ((case-fold-search t)) ,,,) so that lowercase tags will be
-  recognized correctly.  Thanks to address@hidden for noticing it
-  still messed up on lowercase tags.
-
-Thu Jul 15 11:11:34 1993  William M. Perry  (address@hidden)
-* w3-docomp.el (compile-w3): Added w3-mime.el to the list of files to
-  compile. 
-* w3.el: Added lines to make w3-current-mime-* buffer local 
-* w3-parse.el (w3-prepare-buffer): Added variable w3-right-border to
-  control indentation on the right hand side of the buffer.  (Thanks to
-  Nathan Torkington (address@hidden) for suggesting it.
-* w3-misc.el (w3-basepath): This will no longer bomb if you are in a
-  scratch buffer (Thanks to Nathan Torkington
-  (address@hidden) for reporting it.
-* Release Version .9b
-* w3.el (w3-viewer-alist): The command to execute should now include a
-  '%s' wherever you want a filename to appear.  
-* Should now send all the right headers to a server, and act correctly.
-  (Won't bomb if server doesn't send make a MIME-ified document)
-* w3-mime.el: Can now create a valid HTRQ, parse a document's response
-  headers, and figure out if a document is a MIME-ified response.
-* w3-mime.el: First crack at making w3 mime compliant.
-
-Wed Jul 14 03:42:08 1993  William M. Perry  (address@hidden)
-* w3.el (w3-useful-documents): Added an 'interesting-docs' assoc list.
-  Similar to Xmosaics 'Documents' menu - just interesting interfaces that
-  are in the web.
-* w3-parse.el (w3-prepare-buffer): Took the file viewing code out of this
-  function - should never be evaluated.
-* w3.el (w3-viewer-assoc-list): No longer automatically append
-  auto-mode-alist to this - will mess up finding of hypertext files if you
-  have html-mode in your list.
-* w3-url.el: several changes to this file to actually make the external
-  viewers actually work again.
-
-Tue Jul 13 12:36:34 1993  William M. Perry  (address@hidden)
-* w3-url.el (w3-telnet): Changed this to use terminal-emulator instead of
-  transparent-window, since it won't work in emacs19 or lucid.
-* w3-url.el (w3-file): Will now correctly remember the name of the last
-  buffer when retrieving files via ftp.  Thanks to Dong-Ping Deng
-  (address@hidden) for noticing it didn't.
-* w3-mosaic.el (w3-parse-personal-annotations): no longer bombs if the
-  annotation directory doesn't exist.  Thanks to Heiko Muenkel
-  (address@hidden) for noticing.
-* w3-parse.el (w3-build-table): Building of definitions list is forgiving
-  if there is no DD.
-
-Mon Jul 12 07:08:38 1993  William M. Perry  (address@hidden)
-* w3.el: changed add-hook to use w3-member.  Thanks to Larry Masinter
-  (address@hidden) for suggesting it.
-* w3-parse.el & w3.el: fixed the run-hooks calls so they will actually
-  work.  Thanks to Larry Masinter (address@hidden) for pointing
-  out my mistake.
-* Makefile: fixed a few problems - thanks to address@hidden
-  for pointing them out. (Things like not compiling hyperbole, can now
-  configure what file to update the autloads and stuff in.)
-* w3-parse.el (w3-balance-XXX): fixed stupid mistake where I didn't remove
-  calls to string-to-int after redefining another function.
-* w3-misc.el (w3-count-occurences): added this function so "XX matches"
-  does not flash in the minibuffer when balancing PRE and XMP segments.
-  Directly from the emacs19 how-many function, but with no message at the
-  end.
-* w3-url.el (w3-mailto): changed syntax of mailto support to be
-  mailto:any-address-compliant-with-rfc822.  It just pops up a mail buffer
-  and sticks the rest of the url after mailto: in the To: line.  mailto
-  also now honors the variable w3-mutable-windows.
-* w3-parse.el (w3-balance-xmp): added this function to balance XMP
-  segments just like PRE segments.
-
-Sun Jul 11 08:08:44 1993  William M. Perry  (address@hidden)
-* w3-print.el (w3-convert-latex-to-html): added this function to convert
-  LaTeX documents to HTML.  Not sure why - was just bored. :)
-* w3-url.el (w3-mailto): added this function to support a new link type.
-  mailto://host/user will create a mail buffer and mail to address@hidden  The
-  syntax for this may change since it is not standard.
-* w3-parse.el (w3-build-table): fixed problem for when there was no
-  corresponding DD for a DT in a definition list.  A few documents at
-  CERN are like this.
-
-Sat Jul 10 08:55:35 1993  William M. Perry  (address@hidden)
-* w3.latex: did lots of work updating the documentation.
-* w3-emacs19.el (w3-emacs19-setup-faces): made function w3-try-make-XXX so
-  that w3 will still load and run, even if you use a font like '6x13' that
-  it can't make bold or italic.
-* w3-parse.el: PRE and ADDRESS tags now look a little better.
-* w3-mosaic.el: changed the annotation functions to set the
-  w3-current-annotation _AFTER_ calling html-mode, which will nuke all
-  buffer-local variables.
-* w3-mosaic.el (w3-add-personal-annotation): Now supports adding personal
-  annotations.
-* w3-mosaic.el (w3-add-group-annotation): now inserts /PRE as the first
-  line so that you can use all the formatting characteristics of HTML.
-  
-Fri Jul  9 07:31:20 1993  William M. Perry  (address@hidden)
-* w3-mosaic.el (w3-delete-personal-annotation): delete the current
-  annotation from your personal directory.
-* w3-mosaic.el (w3-fetch-personal-annotations): fixed dumb mistake in
-  formatting the url of each annotation.
-* w3-parse.el (w3-prepare-buffer): Will now check for any personal
-  annotations and put them at the end of the buffer (after group
-  annotations, if any).
-* w3-mosaic.el: added functions for reading the personal annotations from
-  w3-personal-annotation-directory.  No support for addition or deletion
-  of personal annotations yet.
-* w3.el (w3-mode.el): Delete group annotation option is only available in
-  lucid when user is in an annotation.
-* w3-[lucid|emacs19].el: changed menus to include deleting and adding
-  group|personal annotations
-* w3-mosaic.el: started working on adding personal annotation support.
-
-Thu Jul  8 15:32:45 1993  William M. Perry  (address@hidden)
-* w3-mosaic.el (w3-add-group-annotation): changed this so that it will
-  load up html-mode and have C-c C-c send the annotation.
-* w3-mosaic.el: Annotations are now fetched if w3-group-annotation-server
-  is defined.
-* w3-mosaic.el: Annotations can now be deleted - no key binding yet.
-* w3-mosaic.el: Annotations can now be added.  No key binding yet
-  
-Wed Jul  7 13:16:21 1993  William M. Perry  (address@hidden)
-* w3-emacs19.el (w3-back-link): Fixed w3-back-link so that the cursor will
-  be at the beginning of the link.
-* w3-emacs19.el: changed all the functions to use native emacs19 overlay
-  functions, instead of hacked up lucid-like syntax.  (Menus are still
-  done in lucid-style though)
-
-Tue Jul  6 12:41:03 1993  William M. Perry  (address@hidden)
-* w3-mosaic.el: Started work on w3-add-annotation and w3-fetch-annotations
-  to implement the NCSA group annotation facilities.  Don't work right now
-  - not sure why.  Need good docs (which don't exist) for the server. :)
-* w3.el (w3-view-url): Fixed problem where this function would put too
-  many '/' in the url.
-* w3-emacs19.el: Made a few changes to forward and backward movement among
-  links.  Still a few bugs, but can now find links in headers.
-
-Mon Jun 28 12:46:09 1993  William M. Perry  (address@hidden)
-* Added the variables w3-link-start-delimiter and
-  w3-link-end-delimiter so you don't have to edit the code to surround
-  links with something other than '[[' and ']]'.  Thanks to Andrew
-  Violett (address@hidden) for suggesting this.
-
-Sun Jun 27 14:54:50 1993  William M. Perry  (address@hidden)
-* w3-parse.el (w3-balance-pre): added this function to insert missing
-  /PRE tags.  Several documents on info.cern.ch leave these out and
-  cause the browser to crash (args out of range -5,1 or some such).
-* w3.el (w3-quit): Fixed bug if running in emacs19 without X, would cause
-  terminal to lock up indefinitely.
-* w3.el: w3-view-url now takes optional argument no-show.  If you pass it
-  an argument from a lisp function, it will return the current url without
-  message'ing it in the minibuffer.
-* w3-(lucid|emacs|emacs19|epoch).el: w3-view-this-url now acts the same as
-  w3-view url (doesn't flash the url in the minibuffer).
-* w3-(lucid|emacs19).el: Added some items to the menu, and a separator
-  between the links lists and the normal commands.
-
-Sat Jun 26 11:47:52 1993  William M. Perry  (address@hidden)
-* w3-emacs19.el: slight modifications.  Nothing really noticeable.
-* w3-print.el (w3-print-this-url): fixed this so ftp files will print
-  correctly.  Also had to change w3-file.
-
-Thu Jun 24 09:02:23 1993  William M. Perry  (address@hidden)
-* w3-url.el (w3-parse-buffer): Check to see if a url is already in the
-  history list before storing.  (Also check for bogus ones like
-  file:historylist.
-* w3-misc.el (w3-show-history-list): Added this function to show the
-  history list to the user in hypertext form.  I just use w3-history list
-  and make a hypertext buffer of it on the fly.  Thanks to Matthew Newhook
-  (address@hidden) for suggesting it.
-* w3-url.el: no longer store the URL in the history list here.  Do it in
-  w3-parse-buffer so I can store the TITLE of the document also.
-
-Tue Jun 22 10:18:54 1993  William M. Perry  (address@hidden)
-* w3.el (w3-document-source): Fixed stupid problem where I put http in
-  twice when building url of current document.  Thanks to Denys Duchier
-  (address@hidden) for noticing/fixing it.
-
-Mon Jun 21 12:38:23 1993  William M. Perry  (address@hidden)
-* w3-url.el (w3-telnet): Will actually work now.  Was bombing when the url
-  was not of the form address@hidden:port.  Would try to extract the
-  username, even though it wouldn't exist.  Thanks to Phil Molloy
-  (address@hidden) for noticing it.
-* w3-parse.el (w3-build-links-list): Fixed a problem where a newline right
-  after after the > in a url would cause the text of the link not to show
-  up.  Thanks to Dirk Husemann (address@hidden)
-  for the code to fix it (slightly modified).
-* w3.el (w3-doc-variables): Moved a paren in w3-doc-variables so that
-  w3-xterm will be documented.  Thanks to Denys Duchier
-  (address@hidden) for noticing.
-* w3-misc.el (w3-uncompress): Changed this so it actually works.  Was
-  passing a list instead of the cdr to the shell-command.  Thanks to
-  Phil Molloy (address@hidden) for noticing.
-
-Sun Jun 20 08:14:28 1993  William M. Perry  (address@hidden)
-* w3.el: Added function to store the current URL in the kill ring.  Thanks
-  to Mark Eichin (address@hidden) for the idea/code.
-* w3.el: Changed w3-help so that it will work under emacs 19.
-* w3-emacs19.el: only require lmenu & lucid when in X, otherwise emacs
-  compiled without X will die.  Thanks to Erik Ostrom
-  (address@hidden) for noticing it.
-* w3.el: only call w3-build-menu if in emacs19 & in x . . .
-* w3.el: Changed searching code so that it replaces all spaces with '+'.
-  Was causing some servers to time out if it didn't.  Thanks to Jin S Choi
-  (address@hidden) for pointing this out.
-* w3-parse.el: added a check in w3-fix-paragraphs and
-  w3-build-ordered-lists to see if emacs19 is running.  If so, add an
-  extra newline, since v19 seems to fill paragraphs differently than the
-  other flavors.
-* w3-emacs.el: added (defvar w3-default-style nil), so the code that hides
-  HREF's with no links won't barf.
-* w3-emacs19.el: changed 1 line defuns to defsubst, since function calls
-  are expensive.
-* w3-emacs19.el: Finding of #linknum should work now . . . no map-extents
-  in the lucid emulation package - will probably write one later.
-* w3-emacs19.el: Wrapped all the font stuff in an (if (eq window-system 'x)
-  so it wouldn't barf if emacs19 was loaded while emacs was on a dumb
-  terminal.
-* w3.el: added variable w3-running-FSF19, and have it load w3-emacs19.el
-  if set to t.  (Determined by emacs-version > 19, and not running lucid)
-
-Sat Jun 19 16:09:28 1993  William M. Perry  (address@hidden)
-* w3-emacs19.el: Changed bindings on the mouse buttons to react to a
-  mouse-up event instead of the mouse-down event, because it would try to
-  paste into the buffer on the mouse-up.  Bleah. :)
-* w3-url.el: Modified the ftp: support so that it will parse out html
-  files, and will also be able to follow relative links within ftp'd html
-  docs.
-
-Sat Jun 19 10:01:45 1993  William M. Perry  (address@hidden)
-* Fix stupid bugs in Makefile from where I delete some things when
-  it was on my linux box
-* Support for some ISO chars by Ulrich Pfeifer 
-  (address@hidden).
-
-Fri Jun 18 13:03:12 1993  William M. Perry  (address@hidden)
-* Release v.5b
-
-Thu Jun 17 14:58:32 1993  William M. Perry  (address@hidden)
-* Better emacs 19 support from address@hidden
-* URLS that are just for reference (no HREF, but has a title) are no longer
-  highlighted, so people won't be tempted to click on them.  Thanks to
-  Erik Ostrom (address@hidden) for pointing this out.
-
-Fri Jun 11 12:14:47 1993  William M. Perry  (address@hidden)
-* Fixed problem with PRE handling - would fill paragraphs and replace
-  spaces.  Stupid misplacement of a 't'.
-* Added .gz extension for gzip to w3-uncompressor-alist
-* Trial run of emacs 19 support for fonts, etc from Jin S Choi
-  (address@hidden).  Not sure everything works yet.
-
-Mon Jun  7 12:42:48 1993  William M. Perry  (address@hidden)
-* Fixed printing from local files.
-* Added variables w3-telnet-prog and w3-telnet-header-length, for using
-  things like telnet+term from linux.
-
-Thu Jun  3 13:34:48 1993  William M. Perry  (address@hidden)
-* Fixed problems with gopher, and unhexing of escaped characters.  Thanks
-  to Larry Masinter (address@hidden) for the patches.
-* Beginning of emacs-19 support - not functional yet though.  Feel free to
-  fix it. :)
-* More stuff with w3-continuation, etc, etc.
-* Added (require 'nntp)
-
-Fri May 28 14:06:27 1993  William M. Perry  (address@hidden)
-* Fixed w3-print.
-
-Mon May 17 12:55:45 1993  William M. Perry  (address@hidden)
-* Can now specify uncompressors in an assoc list
-* Added better handling of stringing things along (ie: uncompress,
-  convert, then print, etc etc)
-
-Fri May  7 08:52:30 1993  William M. Perry  (address@hidden)
-* Release .31b
-* Fixed major problem with w3-fetch.  Would bomb with stringp = nil if
-  done interactively.
-
-Mon May  3 08:16:35 1993  William M. Perry  (address@hidden)
-* Can now print the url under point - no key binding yet.
-* Added the ability to store a gopher link into the hotlist - thanks
-  to scott snyder (address@hidden) for patching gopher-mode to
-  support this.  No key binding yet.
-* Added the 'links' menu back into lucid emacs.
-
-Fri Apr 30 11:56:57 1993  William M. Perry  (address@hidden)
-* Fixed a problem with viewing local files with w3-viewer-alist
-
-Thu Apr 29 11:43:13 1993  William M. Perry  (address@hidden)
-* w3-fetch now defaults to the url of the current document if the
-  document you invoke it from is in w3-mode.
-* Added ability to find links of just #link - doesn't need to reload
-  the whole document.
-* Applied several patches fro Alastair Burt (address@hidden)
-  * Better updating of menu bar in Lucid
-  * Updates the interal w3-hotlist when you delete a hotlist entry
-  * Problem with the w3-viewer-alist - it tried to play
-    Something.Thesaurus
-* Fixed problems with w3-graphics-converter-alist, and lots of
-  problems with the w3-hypertext-extns.
-* Fixed problem with finding files for dired-mode - would still try to
-  do the viewing, etc.
-
-Wed Apr 28 07:23:56 1993  William M. Perry  (address@hidden)
-* Fixed problem with dired-ing remote ftp files.  Removed lots of
-  useless if file-directory-p [...], and just did a find-file - let
-  ange-ftp and dired take care of it - they know how better.
-* Fixed problem where w3-epoch-frob-resources would not set the
-  defaults if no Xresources were specified - thanks to Luis Miguel
-  Silveira (address@hidden) for noticing it.
-* Changed the w3-delimit-links variable so that you can specify
-  'linkname as its value, and have the old style "Link text
-  here[link#here]" style of showing links.  Nil shows nothing,
-  non-nil, non-linkname shows [[ & ]] around link text.
-
-Tue Apr 27 15:37:18 1993  William M. Perry  (address@hidden)
-* Fixed problem in gopher handling - if no port was specified, it
-  would get completely confused.
-
-Mon Apr 26 17:06:33 1993  William M. Perry  (address@hidden)
-* v.2b
-* Fixed problem with putting remote dirs into dired-mode with a bad
-  default-filename.  Thanks to Larry Masinter
-  (address@hidden) for noticing, and for the fix.
-* Added newest nntp.el to the extras tar file
-* Fixed problem where w3-current-last-buffer was not set correctly
-  when reading news.
-* Added support for news: links - single articles as well as whole
-  groups are supported.
-
-Sun Apr 25 15:36:55 1993  William M. Perry  (address@hidden)
-* Fixed recursive make install bug - thanks to Larry Masinter
-  (address@hidden) for noticing it.
-* Fixed problem with no default gopher object type.  Thanks to Larry
-  Masinter (address@hidden) for noticing it.
-* Fixed problem with no default gopher port.
-* Fixed the auto-documenter so that it would insert "M-x funcname"
-  if no bindings were found in the keymap. Thanks to Larry Masinter
-  (address@hidden) for noticing it.
-* Fixed problem with w3-file not passing to a viewer correctly.
-
-Thu Apr 22 13:22:53 1993  William M. Perry  (address@hidden)
-* Fixed the handling of URL#link finding . . . depends on which
-  emacs you are using, due to the weirdness of zones, etc, in each.
-* Split the files up again.  Figure with >2000 lines, it should be
-  done. :)
-* No longer need w3-links-list - store all relevant information in the
-  data segment of a zone.  Changed every function to use this new
-  structure.
-
-Wed Apr 21 08:24:35 1993  William M. Perry  (address@hidden)
-* Added variables w3-use-html2latex, w3-html2latex-prog, and
-  w3-html2latex-args.  If w3-use-html2latex is non-nil, then
-  w3-html2latex-prog is called in a subprocess with the flags defined
-  by w3-html2latex-args, with the html source as standard input.
-  Default is to do my (bad) regular expression matching to convert.
-
-Tue Apr 20 08:51:19 1993  William M. Perry  (address@hidden)
-* Can now specify regular expressions as the car of
-  w3-viewer-assoc-list 
-* fixed problem where epoch would not defvar the styles - just moved
-  them out of w3-epoch-frob-resources, and it works.  Weird.
-* Fixed several bugs in the w3-convert-html-to-latex function - now
-  handles addresses and &amp; correctly.
-* Fixed yet another dumb bug in the insertion of PLAINTEXT in
-  non-hypertext documents.
-* Added w3-member, instead of builtin (or predefined) member, since
-  some definitions don't use equal for comparison like they are
-  supposed to.
-
-Mon Apr 19 07:48:56 1993  William M. Perry  (address@hidden)
-* v.1b
-* Added LaTeXing of w3 documents, and automatic printing.  Just an
-  edit of the sed script to be a lot of replace-regexps, then a shell
-  command to latex a temp file and print it out.
-* Added w3-goto-last-buffer, which will take you to the last buffer
-  you visited before (kind of like gopher-mode).  Changed w3-quit to
-  use this also.
-* Fixed a bug in w3-reload-document that would make it bomb on local
-  file reloads.
-* Better nesting of lists.
-
-Sun Apr 18 13:50:38 1993  William M. Perry  (address@hidden)
-* Added variable w3-mutable-windows - if t, w3 pops up buffers in
-  another window.
-* Added a default-style for w3 buffers
-
-Wed Apr 14 10:18:01 1993  William M. Perry  (address@hidden)
-* Fixed several problems with the epcoh Xresources reading code
-* Added global history, for compatability with xmosaic
-* Added deletion of hotlist entries
-* Changed w3-viewer-alist to automatically include the auto-mode-alist
-* Viewers can now include lisp calls (ie: ("txt" . view-mode)) to put
-  in files.
-* file:// links will now put directories in dired-mode.  Thanks to
-  address@hidden for the fixes.
-* Finally fixed relative-links - .. & . are removed correctly
-* Fixed relative links for graphics also.
-
-Tue Apr 13 08:30:58 1993  William M. Perry  (address@hidden)
-* Added support for reading Xdefaults within Epoch.
-* v.04b
-* Fixed graphic support to work over http links (Epoch Only)
-* Fixed graphic support so it will figure out if the conversion failed
-  or not - warning message if it did.
-  
-Mon Apr 12 07:35:40 1993  William M. Perry  (address@hidden)
-* v.03b
-* Fixed lemacs support so it doesn't nuke your xdefaults.  Also fixed
-  the passing of face-objects, since they are screen-specific, and
-  therefore a Bad Thing.  Thanks to Jamie Zawinski (address@hidden)
-* Changed menu code so that it put the link # in there also.  Helpful
-  for when the links are unnamed, or named 'here' or 'this'.  Thanks
-  to Jamie Zawinski (address@hidden) for saying the menus were hosed.
-
-Sun Apr 11 16:30:44 1993  William M. Perry  (address@hidden)
-* Fixed graphics support for epoch - would only do 1 image per page.
-* Fixed a few typos - thanks to address@hidden
-
-Fri Apr  9 00:18:47 1993  William M. Perry  (address@hidden)
-* Added graphics support for epoch (doesn't work over http, pretty
-  much hardwired for me right now - commented out in the release)
-* v.02b
-* Several bug fixes (link finding, name fixing, others) - thanks to
-  address@hidden for the fixes.
-* Added address@hidden's zone-imitation functions for normal emacs.
-  Also wrote corresponding forward&back link code.  I wrote the forward&
-  back code for epoch&lemacs.
-
-Thu Apr  8 13:23:27 1993  William M. Perry  (address@hidden)
-* Fixed being able to jump forward over non-links in []s. Thanks to
-  address@hidden
-* Fixed telnet handling - thanks to address@hidden for noticing
-  it and for a preliminary fix.  Refined his fix.  Problem was that
-  telnet wasn't getting enough time to start before I sent it a
-  command.
-* Fixed a few regular expressions - thanks to address@hidden
-* Fixed bug in w3-add-document-hotlist which caused an error if the
-  hotlist file didn't already exist.  Thanks to address@hidden
-  for noticing it.
-
-Wed Apr  7 00:08:53 1993  William M. Perry  (address@hidden)
-* Split the files into 4 different files for easier editing.
-* Modified Makefile to work with the new file structure.
-* Fixed a problem with the links code that cropped up with blank HREFS
-* HREFs of the form .....#link will now go to 'link' within the target
-  document.
-* v.01beta - fourth release
-* Can now type #### RETURN to go the the ###th link in the current buffer.
-* Fixed a bug in XMP handling
-* Fixed bugs in the logical/physical styles in definition lists
-* Improved indentation of all lists
-* Wrapped (require 'ange-ftp) in a (not noninteractive) so it wouldn't
-  screw up the compiles.
-* Fixed a few problems in the Makefile
-* Revamped the way it looks for links in dumb emacs mode.  (Actually,
-  all I did was add a .* to the beginning and a parenthesized part of
-  the regexp - real rough. :)
-* Added support for physical and logical styles.  Looks great in lucid,
-  not so hot in epoch (had to use colors, not actual styles).  Suggestions
-  welcome.
-
-Tue Apr  6 21:14:14 1993  William M. Perry  (address@hidden)
-* Supports nested definition lists (only 1 deep, and only in ordered lists)
-* Now supports nested lists (only 1 deep, and only inside ordered lists)
-
-Mon Apr  5 13:34:00 1993  William M. Perry  (address@hidden)
-* v.008beta - third release
-* Fixed ADDRESS support
-* Added auto-documentation features.
-* Added ordered list support - does not support nested lists at all yet.
-* Added automatic bug submission
-* Added popup-menu for lucid emacs
-* Added support for links nested in headers.
-* v.007beta - second release
-* Revamped local files - now use file:/ instead of nonstandard local:/
-* Added better handling of definition lists.  (No support for Compact
-  ones now though)
-
-Fri Apr  2 10:28:08 1993  William M. Perry  (address@hidden)
-* Definition lists now keep their zones/extents so they are highlighted
-  correctly. 
-* Fixed bug in PRE handling - left out a (goto-char (point-min))
-
-Wed Mar 31 08:51:04 1993  William M. Perry  (address@hidden)
-* Did work on resolving ./ & ../ links (only works for one level right
-  now.  Will work on getting it recursive later.
-* Changed data field in extents/zones to be (w3 . type) so I
-  wouldn't grab a wrong item.
-* Fixed a bug in title handling.  Left something out of an if
-  statement and it would try to delete a region that (probably) didn't
-  exist.
-* Fixed bug in w3-follow-link (added a ':' to end of regexp).  Would
-  cause it to screw up on a url like http.html.  Thanks to Erik Ostrom
-  (address@hidden)
-* Changed requires to autoloads where possible
-* Wrapped require of transparent.el so it won't get loaded if in X
-* Fixed bug in lemacs mouse links.
-* Applied numerous patches from address@hidden & address@hidden to fix
-  compilation problems with lemacs & epoch.
-
-Tue Mar 30 15:05:01 1993  William M. Perry  (address@hidden)
-* Added mouse support for following links in epoch & lucid emacs
-  Store the link # in the data segment of the zone.  If mouse is
-  clicked in a zone, extract the data, assoc it with w3-links-list and
-  call w3-follow-link with it.  Hacky but works. :)
-* Added (provide 'w3) for easier loading, etc.
-* Fixed problems with epoch highlihting
-* Fixed makefile problem (some files left out)
-
-Sun Mar 28 13:04:12 1993  William M. Perry  (address@hidden)
-* Added auto-viewing of ps/gif/jpg/etc files
-* Added uncompression and gunzipping auto-recognition
-
-Sat Mar 27 12:32:54 1993  William M. Perry  (address@hidden)
-* v.004beta - first release
-* Few changes to the parser
-* Fixed PRE Handling so it parses out urls inside.
-* Added handling of &#XXX to insert ascii value of XXX.
-
-Fri Mar 26 11:27:52 1993  William M. Perry  (address@hidden)
-* Completed document source command.
-* Changed it so it won't barf if you try to fetch the same document twice.
-* Added w3-reload-document to reload the current file.
-
-Wed Mar 24 16:37:22 1993  William M. Perry  (address@hidden)
-* v.003beta - put on ftp archive
-* Added support for the xmosaic style of hotlist.  Goto and add are
-  supported.
-* Changed searching a little
-* Fixed bug in XMP/PRE handling that reinserted everything in all caps.
-  Was very annoying.
-* Added lemacs menu of hotlist items.
-
-Tue Mar 23 08:46:12 1993  William M. Perry  (address@hidden)
-* v.002beta - put on ftp archive
-* Added menus to the lucid emacs code.  Looks a little weird when
-  links are named 'here', but not bad.
-* Added to the searching code
-* Fixed bug in renumbering system (forgot to increment bogus-num)
-* Completely rewrote the parser (yet again).  Finally got the HTML
-  specs, so it now handles every item possible (hopefully).
-* Added support for small things like DL COMPACT, PLAINTEXT, PRE.
-* Added code to delete outdated information (HEADER, BODY, etc)
-* Added w3-preview-this-buffer, which feeds the current buffer into
-  the w3-preprocessor and spits out a formatted buffer.  I use this
-  mainly to see if I can break anything, but might be useful when
-  writing real html documents.
-* Added code to delete useless (to us) HTML headers (NEXTID, etc)
-* Added support for index searching.  Mode line is changed to reflect
-  this.  Need to use something more noticeable though.
-  
-Mon Mar 22 07:43:10 1993  William M. Perry  (address@hidden)
-* Broke highlighting in definition lists.  Not sure how to get around
-  this and still have the DLs formatted correctly.
-* Little tweaks
-* Cleaned up ^Ms that appeared sometimes
-* Added a default port for http links (http://moose/info instead of
-  http://moose:80/info)
-
-Sun Mar 21 13:44:02 1993  William M. Perry  (address@hidden)
-* Forgot to include Menu and DL lists, added them.
-* Added support for embedded plain text (XMP directive)
-* Added 'cacheing' of old info - just made variables buffer-local, and
-  save them before kill-all-local-variables, then restore.  Need to figure
-  out some way to kill old buffers (only keep last 5, etc)  
-* Fine tuned local file support
-* Added ftp support - just a link to ange-ftp
-* Fixed unNAMEd links yet again - should work better
-* Added support for lucid emacs & epoch (highlight links, headers,etc)
-  Borrowed code from html-mode.el by address@hidden
-* "Fixed" unNAME'd links.  Big Kludge. Needs work.
-
-Sat Mar 20 14:10:12 1993  William M. Perry  (address@hidden)
-* v.001beta
-* Complete rewrite of the parsing code.  Still not pretty, but much
-  faster, better paragraph filling.
-* Defined w3-mode
-* Forward and backward searching for links - still needs lots of work
-
-Fri Mar 19 08:00:03 1993  William M. Perry  (address@hidden)
-* v.000alpha
-* Support for gopher, telnet, http, and local file access
-* First attempt
diff --git a/HOWTO b/HOWTO
deleted file mode 100644
index 1de9f1e..0000000
--- a/HOWTO
+++ /dev/null
@@ -1,153 +0,0 @@
-How to build GNU Emacs W3 mode
-------------------------------
-
-    Robert J. Chassell, address@hidden
-    12 Aug 1997
-
-This is brief description of how to build a beta test version of GNU
-Emacs W3 mode.  Eventually, this note will be replaced by proper
-documentation in the W3 Info file.
-
-Here is one way to build version 3.0.99; you can adapt this to however
-you want to build W3:
-
-Untar the beta test file, in a directory above the one in which you want to
-place the sources:
-
-   $ cd /usr/local/src
-   $ tar xvzf w3-3.0.99.tar.gz
-
-Then cd into the w3-3.0.99 directory.
-
-In that directory, at your prompt, type this:
-
-   $ ./configure --help
-
-This documents how `configure' works; `configure' creates Makefiles
-for you.
-
-Then type a command such as this:
-
-   $ ./configure --with-emacs --prefix=/usr/local/src/w3-3.0.99  
--exec-prefix=/usr/local/src/w3-3.0.99
-
-In this example, the byte compiled files will go into the same directories
-as their sources.  You can put them elsewhere, but this is a simple
-clean way to create a test version.
-
-There was a bug in the Makefiles for 3.0.99 (this is what beta test
-software is to find): the name for the Emacs executable was set to `t'
-rather than to `emacs'; I changed that by hand.
-
-Then build the byte compiled files:
-
-   $ make w3
-
-(Well, I do this in Emacs with the `M-x compile' command, and I invoke:
-    date; make w3; date
-with `date' commands sandwiching the meat.  This way I can see how
-long the compile takes.  Now up to 16 minutes.)
-
-You will note I did give the `make all' command.  That not only
-bytecompiles W3 mode, but creates the Info and DVI files; however,
-Wm. Perry thoughtfully includes the Info in the ...texi/ directory
-anyhow, so you don't need to create them again; and I don't bother to
-recreate DVI files to print out except occasionally.  If you do want
-all your documentation, type `make all' instead of `make w3'.
-
-Link the location of your .elc files to /usr/local/src/w3/ so you
-don't have to change old habits:
-
-  $ cd /usr/local/src
-  $ ln -s /usr/local/src/w3-3.0.99/lisp w3
-
-I am basing this suggestion on the presumption that sometime in your
-past, you set the load-path in your .emacs file to a w3 directory,
-using an expression like this:
-
-    ;; set load-path
-    (setq load-path (cons "/usr/local/src/w3" load-path))
-
-By linking the directory with the byte-compiled files to this
-directory, you can always start W3 mode by typing `M-x w3'.
-
-Also, since the `configure' commands I suggested leave the existing
-(or place any new) Info files in the `/usr/local/src/w3-3.0.99/texi/'
-directory, you should also link the texi/ directory appropriately:
-
-  $ cd /usr/local/src
-  $ ln -s /usr/local/src/w3-3.0.99/texi w3-info
-
-Also, be sure to set the name of the menu appropriately in your
-/usr/info/dir file, like this:
-
-    * W3: (/usr/local/src/w3-info/w3.info).  Emacs W3 mode, a Web browser
-
-Now, type `M-x w3' inside of Emacs and W3 mode should start.
-
-                         -------------
-
-There is a bug in W3 version 3.0.99, in that it does not respond to
-the `w3-default-stylesheet' variable which the documentation says you
-can set in your .emacs file, with a command such as:
-
-;; Specify my own stylesheet
-(setq w3-default-stylesheet "~bob/.w3.sty")
-
-So, instead, put your own stylesheet where W3 can find it, such as in:
-
-    /usr/lib/emacs/w3/stylesheet
-
-Otherwise, you will see a warning like this:
-
-    (style/warning) No stylesheets found!  Check configuration! DANGER DANGER!
-    Emacs-W3 checked for its stylesheet in the following places
-    and did not find one.  ...
-
-You can create your won stylesheet by basing it on `default.css' which
-comes with the distribution.
-
-                         -------------
-
-Once you have started W3 mode, you can submit bugs by typing `w'
-(w3-submit-bug) in a W3 mode buffer.
-
-That is how I sent this file to William Perry .... I saw a lack in the
-documentation (I am continuously forgetting how to build a new version
-of W3 so I figured I ought to do something about it.)
-
-                         -------------
-
-Incidentally, rather than download a complete tar.gz file, you can of
-download diff files, patch a previous distribution, and byte-recompile
-the directory.  This is usually quicker than downloading the whole
-half-magabyte tar.gz file and byte compiling it.  
-
-Using ange-ftp, the diffs are in:
-
-    /address@hidden:/pub/elisp/w3/.betas/diffs
-
-Or you can do as I described here.
-
--------------------
-The widgets are a set of files to which your `--with-emacs' option to
-`./configure' should point.  They are in the emacs-20/lisp/ directory,
-called `widget.el' and the like.  Also, `custom.el' is there.
-
-If you think that you are configuring correctly, but W3 still does not
-build, check to ensure you are removing your old `config.*' files
-before running your `./config' command.
-
-The files to be removed are:
-
-    config.cache
-    config.log
-    config.status
-
-Use `make distclean' to remove them.  (Incidentally, the `clean-cache'
-script is for cleaning your cache of old URLs, not for configuration.)
-
-The build sequence is:
-
-    make distclean
-    ./configure --with-emacs=/usr/local/src/emacs-20.2/src/emacs-20.2.1 
--prefix=/usr/local/src/w3-3.0.107 
-    make w3
diff --git a/INSTALL b/INSTALL
deleted file mode 100644
index 2179376..0000000
--- a/INSTALL
+++ /dev/null
@@ -1,99 +0,0 @@
-Emacs/W3 Installation Guide
-Copyright (c) 1997 Free Software Foundation, Inc.
-
-   Permission is granted to anyone to make or distribute verbatim copies
-   of this document as received, in any medium, provided that the
-   copyright notice and permission notice are preserved,
-   and that the distributor grants the recipient permission
-   for further redistribution as permitted by this notice.
-
-   Permission is granted to distribute modified versions
-   of this document, or of portions of it,
-   under the above conditions, provided also that they
-   carry prominent notices stating who last changed them,
-   and that any new or changed statements about the activities
-   of the Free Software Foundation are approved by the Foundation.
-
-
-BUILDING AND INSTALLATION
-
-(This is for a Unix or Unix-like system.  For Windows NT or Windows
-95, see the file README.NT.)
-
-This version requires either Emacs 20.3 or later (but 20.3 is known to
-be quite buggy) or XEmacs 20.4 or later.  If you're using a version
-without Gnus 5.8 or later, get a more recent distribution from
-gnus.org.
-
-1) Make sure your system has enough memory to run Emacs, plus about 1
-megabyte to spare.
-
-Building Emacs/W3 requires about 2.8 Mb of disk space (including the
-sources).  Once installed, Emacs/W3 occupies about 2 Mb in the file
-system where it is installed.
-
-2) To build Emacs/W3, you must configure a few simple items.  Emacs/W3 
-uses the GNU 'autoconf' program for meta-configuration.  You should be 
-able to run the program `configure' as follows:
-
-   ./configure [--OPTION[=VALUE]] ...
-
-If you wish to build with a specific version of Emacs, specify
-`--with-emacs=VARIANT'.  If you wish to build with a specific version
-of XEmacs, specify `--with-xemacs=VARIANT'.  If you omit these
-options, `configure' will try to figure out what flavor of Emacs to
-use.  It will honor the `EMACS' environment variable if it is set,
-otherwise it will check for `xemacs' and `emacs' in your path.
-
-If you had to install Gnus in a non-standard place, specify
-`--with-gnus=DIR'.  If you omit this option, `configure' will try to
-figure out where an acceptable version of Gnus is installed.
-
-If you prefer not to use the GNU `makeinfo' program if it is
-available, specify `--with-makeinfo=no'.  This will cause the info
-files to be built using Emacs.
-
-The `--prefix=PREFIXDIR' option specifies where the installation process
-should put Emacs/W3 and its data files.  This defaults to `/usr/local'.
-- Lisp files go in PREFIXDIR/share/emacs/site-lisp
-  (unless the `--with-lispdir' option says otherwise).
-- The architecture-independent files go in PREFIXDIR/share/emacs/w3
-  (unless the `--datadir' option says otherwise).
-
-`configure' doesn't do any compilation or installation itself.  It
-just creates the files that influence those things:
-`./Makefile', `texi/Makefile', and `lisp/Makefile'.
-
-When it is done, `configure' prints a description of what it did and
-creates a shell script `config.status' which, when run, recreates the
-same configuration.  If `configure' exits with an error after
-disturbing the status quo, it removes `config.status'.  `configure'
-also creates a file `config.cache' that saves the results of its tests
-to make reconfiguring faster, and a file `config.log' containing
-compiler output (useful mainly for debugging `configure').  You can
-give `configure' the option `--cache-file=FILE' to use the results of
-the tests in FILE instead of `config.cache'.  Set FILE to `/dev/null'
-to disable caching, for debugging `configure'.
-
-3) Run `make' in the top directory of the Emacs/W3 distribution to
-finish building Emacs/W3 in the standard way.  You can "install" the
-package with `make install'.  By default, Emacs/W3's files are
-installed in the following directories:
-
-`/usr/local/share/emacs/site-lisp' holds the Emacs/W3 lisp code.
-
-`/usr/local/share/emacs/w3' holds any data files for Emacs/W3,
-               including `stylesheet' which controls all default
-               formatting settings.
-
-`/usr/local/info' holds the on-line documentation for Emacs/W3, known
-               as "info files."
-
-4) Check the file `dir' in your site's info directory (usually
-/usr/local/info) to make sure that it has a menu entry for the
-Emacs/W3 info files.
-
-5) You are done!  You can remove object files from the build directory 
-by typing `make clean'.  To also remove the files that `configure'
-created (so you can compile Emacs/W3 for a different configuration),
-type `make distclean'.
diff --git a/README.NT b/README.NT
deleted file mode 100644
index d24ff82..0000000
--- a/README.NT
+++ /dev/null
@@ -1,60 +0,0 @@
-Emacs/W3 Installation Guide (Windows 95/NT Version)
-Copyright (c) 1998 Free Software Foundation, Inc.
-
-   Permission is granted to anyone to make or distribute verbatim copies
-   of this document as received, in any medium, provided that the
-   copyright notice and permission notice are preserved,
-   and that the distributor grants the recipient permission
-   for further redistribution as permitted by this notice.
-
-   Permission is granted to distribute modified versions
-   of this document, or of portions of it,
-   under the above conditions, provided also that they
-   carry prominent notices stating who last changed them,
-   and that any new or changed statements about the activities
-   of the Free Software Foundation are approved by the Foundation.
-
-
-ADDITIONAL DISTRIBUTION FILES
-
-* custom.tar.gz
-
-For older versions of Emacs (pre-20.x), you will need the latest and
-greatest versions of the custom and widget libraries.  This is
-distributed in a separate tar file to save users time in downloading,
-and to ease maintenance of the libraries.
-
-
-BUILDING AND INSTALLATION
-
-(This is for a Windows 95 or NT system.  For Unix or Unix-like
-systems, see the file INSTALL.  For VMS systems, see the file
-README.VMS)
-
-1) Make sure your system has enough memory to run Emacs, plus about 1
-megabyte to spare.
-
-Building Emacs/W3 requires about 2.8 Mb of disk space (including the
-sources).  Once installed, Emacs/W3 occupies about 2 Mb in the file
-system where it is installed.
-
-2) You must tell Emacs/W3 where to find the custom/widget packages
-that you have installed if you are running Emacs 19.
-
-This is done with the WIDGETDIR environment variable.  Set this to the
-directory where the lisp files are, ie:
-
-set WIDGETDIR=c:\users\blort\lisp\custom
-
-3) Run `build.bat' in the top directory of the Emacs/W3 distribution
-to finish building Emacs/W3 in the standard way.
-
-4) Add the Emacs/W3 lisp directory to your load-path.  Add the
-following line to your .emacs file.
-
-(setq load-path (cons "c:/path/to/w3-x.y.z/lisp" load-path))
-(require 'w3-auto)
-
-4) Check the file `dir' in your site's info directory (usually
-/usr/local/info) to make sure that it has a menu entry for the
-Emacs/W3 info files.
diff --git a/README.VMS b/README.VMS
deleted file mode 100644
index 0fd0c0c..0000000
--- a/README.VMS
+++ /dev/null
@@ -1 +0,0 @@
-Put VMS installation notes in here.
diff --git a/build-dist b/build-dist
deleted file mode 100755
index e700407..0000000
--- a/build-dist
+++ /dev/null
@@ -1,45 +0,0 @@
-#!/bin/sh
-
-while [ $# != 0 ]; do
-  switch="$1"
-  shift
-  case "$switch" in
-    --*=*)
-      opt=`echo '' ${switch} | sed -e 's:^ ::' -e 's:^-*\([^=]*\)=.*$:\1:'`
-      val=`echo '' ${switch} | sed -e 's:^ ::' -e 's:^-*[^=]*=\(.*\)$:\1:'`
-      ;;
-    --*)
-      opt=`echo '' ${switch} | sed -e 's:^ ::' -e 's:^-*\(.*\)$:\1:'`
-      val='yes'
-      ;;
-  esac
-  ARGS="${ARGS} --${opt}='${val}'"
-  case "${opt}" in
-    *) eval "${opt}='${val}'";;
-  esac
-done
-
-if [ -z "${version}" ]; then
-   exit
-fi
-
-CVSROOT=:pserver:address@hidden:/gd/gnu/cvsroot
-export CVSROOT
-
-( cd .    ; cvs admin -s"p${version}" README )
-( cd lisp ; cvs admin -s"p${version}" w3-vars.el )
-( cd texi ; cvs admin -s"v${version}" w3.txi )
-( cd texi ; cvs admin -s"v${version}" w3-faq.txi )
-
-cd /usr/tmp/
-rm -fr w3
-cvs export -f -D now -kv w3
-cd w3
-autoconf
-rm -f lisp/auto-autoloads.el lisp/custom-load.el
-./configure --with-xemacs --with-custom=`pwd`/lisp
-make realversion
-cd
-rm -fr /usr/tmp/w3
-TAG=v`echo ${version} | tr . -`
-cvs rtag ${TAG} w3
diff --git a/build.bat b/build.bat
deleted file mode 100644
index bdad66d..0000000
--- a/build.bat
+++ /dev/null
@@ -1,30 +0,0 @@
address@hidden off
-
-set FALLBACKEMACSDIR=c:\emacs
-
-REM This allows the user to specify the emacs root on the command
-REM line.
-set COMMANDLINEGIVEN=yes
-if "%1" == "" set COMMANDLINEGIVEN=no
-if "%COMMANDLINEGIVEN%" == "yes" set EMACSDIR=%1
-
-REM If no emacs directory is set in the default environment, use our
-REM fallback.
-if "%EMACSDIR%" == "" echo EMACSDIR not set!  Using %FALLBACKEMACSDIR% as a 
default...
-if "%EMACSDIR%" == "" set EMACSDIR=%FALLBACKEMACSDIR%
-
-set EMACS=%EMACSDIR%\bin\emacs.exe
-set WIDGETDIR=%EMACSDIR%\lisp
-set GNUSDIR=%EMACSDIR%\lisp
-
-cd lisp
-copy w3-cfg.nt w3-cfg.el
-%EMACS% -batch -q -l ./docomp.el -f emacs-batch-build-autoloads . 
auto-autoloads.el
-%EMACS% -batch -q -l ./docomp.el -f emacs-batch-build-custom-load .
-%EMACS% -batch -q -l ./docomp.el -f compile-it
-cd ..
-
-cd texi
-%EMACS% -batch -q -no-site-file w3-faq.txi -l texinfmt -f 
texinfo-format-buffer -f save-buffer
-%EMACS% -batch -q -no-site-file w3.txi -l texinfmt -f texinfo-format-buffer -f 
save-buffer
-cd ..
diff --git a/configure b/configure
deleted file mode 100755
index 70414ec..0000000
--- a/configure
+++ /dev/null
@@ -1,1418 +0,0 @@
-#! /bin/sh
-
-# Guess values for system-dependent variables and create Makefiles.
-# Generated automatically using autoconf version 2.13 
-# Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc.
-#
-# This configure script is free software; the Free Software Foundation
-# gives unlimited permission to copy, distribute and modify it.
-
-# Defaults:
-ac_help=
-ac_default_prefix=/usr/local
-# Any additions from configure.in:
-ac_help="$ac_help
---with-xemacs             Use XEmacs to build"
-ac_help="$ac_help
---with-emacs              Use Emacs to build"
-ac_help="$ac_help
---with-makeinfo           Specify how to build info files"
-ac_help="$ac_help
---enable-site-install     Perform a sitewide installation"
-ac_help="$ac_help
---with-package-dir        Configure as a XEmacs package in directory"
-ac_help="$ac_help
---with-lispdir            Where to install lisp files"
-ac_help="$ac_help
---with-gnus               Specify where to find the gnus package"
-ac_help="$ac_help
---with-url                Specify where to find the URL package"
-
-# Initialize some variables set by options.
-# The variables have the same names as the options, with
-# dashes changed to underlines.
-build=NONE
-cache_file=./config.cache
-exec_prefix=NONE
-host=NONE
-no_create=
-nonopt=NONE
-no_recursion=
-prefix=NONE
-program_prefix=NONE
-program_suffix=NONE
-program_transform_name=s,x,x,
-silent=
-site=
-srcdir=
-target=NONE
-verbose=
-x_includes=NONE
-x_libraries=NONE
-bindir='${exec_prefix}/bin'
-sbindir='${exec_prefix}/sbin'
-libexecdir='${exec_prefix}/libexec'
-datadir='${prefix}/share'
-sysconfdir='${prefix}/etc'
-sharedstatedir='${prefix}/com'
-localstatedir='${prefix}/var'
-libdir='${exec_prefix}/lib'
-includedir='${prefix}/include'
-oldincludedir='/usr/include'
-infodir='${prefix}/info'
-mandir='${prefix}/man'
-
-# Initialize some other variables.
-subdirs=
-MFLAGS= MAKEFLAGS=
-SHELL=${CONFIG_SHELL-/bin/sh}
-# Maximum number of lines to put in a shell here document.
-ac_max_here_lines=12
-
-ac_prev=
-for ac_option
-do
-
-  # If the previous option needs an argument, assign it.
-  if test -n "$ac_prev"; then
-    eval "$ac_prev=\$ac_option"
-    ac_prev=
-    continue
-  fi
-
-  case "$ac_option" in
-  -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
-  *) ac_optarg= ;;
-  esac
-
-  # Accept the important Cygnus configure options, so we can diagnose typos.
-
-  case "$ac_option" in
-
-  -bindir | --bindir | --bindi | --bind | --bin | --bi)
-    ac_prev=bindir ;;
-  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
-    bindir="$ac_optarg" ;;
-
-  -build | --build | --buil | --bui | --bu)
-    ac_prev=build ;;
-  -build=* | --build=* | --buil=* | --bui=* | --bu=*)
-    build="$ac_optarg" ;;
-
-  -cache-file | --cache-file | --cache-fil | --cache-fi \
-  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
-    ac_prev=cache_file ;;
-  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
-  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
-    cache_file="$ac_optarg" ;;
-
-  -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
-    ac_prev=datadir ;;
-  -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
-  | --da=*)
-    datadir="$ac_optarg" ;;
-
-  -disable-* | --disable-*)
-    ac_feature=`echo $ac_option|sed -e 's/-*disable-//'`
-    # Reject names that are not valid shell variable names.
-    if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then
-      { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 
1; }
-    fi
-    ac_feature=`echo $ac_feature| sed 's/-/_/g'`
-    eval "enable_${ac_feature}=no" ;;
-
-  -enable-* | --enable-*)
-    ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'`
-    # Reject names that are not valid shell variable names.
-    if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then
-      { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 
1; }
-    fi
-    ac_feature=`echo $ac_feature| sed 's/-/_/g'`
-    case "$ac_option" in
-      *=*) ;;
-      *) ac_optarg=yes ;;
-    esac
-    eval "enable_${ac_feature}='$ac_optarg'" ;;
-
-  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
-  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
-  | --exec | --exe | --ex)
-    ac_prev=exec_prefix ;;
-  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
-  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
-  | --exec=* | --exe=* | --ex=*)
-    exec_prefix="$ac_optarg" ;;
-
-  -gas | --gas | --ga | --g)
-    # Obsolete; use --with-gas.
-    with_gas=yes ;;
-
-  -help | --help | --hel | --he)
-    # Omit some internal or obsolete options to make the list less imposing.
-    # This message is too long to be a string in the A/UX 3.1 sh.
-    cat << EOF
-Usage: configure [options] [host]
-Options: [defaults in brackets after descriptions]
-Configuration:
-  --cache-file=FILE       cache test results in FILE
-  --help                  print this message
-  --no-create             do not create output files
-  --quiet, --silent       do not print \`checking...' messages
-  --version               print the version of autoconf that created configure
-Directory and file names:
-  --prefix=PREFIX         install architecture-independent files in PREFIX
-                          [$ac_default_prefix]
-  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
-                          [same as prefix]
-  --bindir=DIR            user executables in DIR [EPREFIX/bin]
-  --sbindir=DIR           system admin executables in DIR [EPREFIX/sbin]
-  --libexecdir=DIR        program executables in DIR [EPREFIX/libexec]
-  --datadir=DIR           read-only architecture-independent data in DIR
-                          [PREFIX/share]
-  --sysconfdir=DIR        read-only single-machine data in DIR [PREFIX/etc]
-  --sharedstatedir=DIR    modifiable architecture-independent data in DIR
-                          [PREFIX/com]
-  --localstatedir=DIR     modifiable single-machine data in DIR [PREFIX/var]
-  --libdir=DIR            object code libraries in DIR [EPREFIX/lib]
-  --includedir=DIR        C header files in DIR [PREFIX/include]
-  --oldincludedir=DIR     C header files for non-gcc in DIR [/usr/include]
-  --infodir=DIR           info documentation in DIR [PREFIX/info]
-  --mandir=DIR            man documentation in DIR [PREFIX/man]
-  --srcdir=DIR            find the sources in DIR [configure dir or ..]
-  --program-prefix=PREFIX prepend PREFIX to installed program names
-  --program-suffix=SUFFIX append SUFFIX to installed program names
-  --program-transform-name=PROGRAM
-                          run sed PROGRAM on installed program names
-EOF
-    cat << EOF
-Host type:
-  --build=BUILD           configure for building on BUILD [BUILD=HOST]
-  --host=HOST             configure for HOST [guessed]
-  --target=TARGET         configure for TARGET [TARGET=HOST]
-Features and packages:
-  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
-  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
-  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
-  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
-  --x-includes=DIR        X include files are in DIR
-  --x-libraries=DIR       X library files are in DIR
-EOF
-    if test -n "$ac_help"; then
-      echo "--enable and --with options recognized:$ac_help"
-    fi
-    exit 0 ;;
-
-  -host | --host | --hos | --ho)
-    ac_prev=host ;;
-  -host=* | --host=* | --hos=* | --ho=*)
-    host="$ac_optarg" ;;
-
-  -includedir | --includedir | --includedi | --included | --include \
-  | --includ | --inclu | --incl | --inc)
-    ac_prev=includedir ;;
-  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
-  | --includ=* | --inclu=* | --incl=* | --inc=*)
-    includedir="$ac_optarg" ;;
-
-  -infodir | --infodir | --infodi | --infod | --info | --inf)
-    ac_prev=infodir ;;
-  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
-    infodir="$ac_optarg" ;;
-
-  -libdir | --libdir | --libdi | --libd)
-    ac_prev=libdir ;;
-  -libdir=* | --libdir=* | --libdi=* | --libd=*)
-    libdir="$ac_optarg" ;;
-
-  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
-  | --libexe | --libex | --libe)
-    ac_prev=libexecdir ;;
-  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
-  | --libexe=* | --libex=* | --libe=*)
-    libexecdir="$ac_optarg" ;;
-
-  -localstatedir | --localstatedir | --localstatedi | --localstated \
-  | --localstate | --localstat | --localsta | --localst \
-  | --locals | --local | --loca | --loc | --lo)
-    ac_prev=localstatedir ;;
-  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
-  | --localstate=* | --localstat=* | --localsta=* | --localst=* \
-  | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
-    localstatedir="$ac_optarg" ;;
-
-  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
-    ac_prev=mandir ;;
-  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
-    mandir="$ac_optarg" ;;
-
-  -nfp | --nfp | --nf)
-    # Obsolete; use --without-fp.
-    with_fp=no ;;
-
-  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
-  | --no-cr | --no-c)
-    no_create=yes ;;
-
-  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
-  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
-    no_recursion=yes ;;
-
-  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
-  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
-  | --oldin | --oldi | --old | --ol | --o)
-    ac_prev=oldincludedir ;;
-  -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
-  | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
-  | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
-    oldincludedir="$ac_optarg" ;;
-
-  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
-    ac_prev=prefix ;;
-  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
-    prefix="$ac_optarg" ;;
-
-  -program-prefix | --program-prefix | --program-prefi | --program-pref \
-  | --program-pre | --program-pr | --program-p)
-    ac_prev=program_prefix ;;
-  -program-prefix=* | --program-prefix=* | --program-prefi=* \
-  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
-    program_prefix="$ac_optarg" ;;
-
-  -program-suffix | --program-suffix | --program-suffi | --program-suff \
-  | --program-suf | --program-su | --program-s)
-    ac_prev=program_suffix ;;
-  -program-suffix=* | --program-suffix=* | --program-suffi=* \
-  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
-    program_suffix="$ac_optarg" ;;
-
-  -program-transform-name | --program-transform-name \
-  | --program-transform-nam | --program-transform-na \
-  | --program-transform-n | --program-transform- \
-  | --program-transform | --program-transfor \
-  | --program-transfo | --program-transf \
-  | --program-trans | --program-tran \
-  | --progr-tra | --program-tr | --program-t)
-    ac_prev=program_transform_name ;;
-  -program-transform-name=* | --program-transform-name=* \
-  | --program-transform-nam=* | --program-transform-na=* \
-  | --program-transform-n=* | --program-transform-=* \
-  | --program-transform=* | --program-transfor=* \
-  | --program-transfo=* | --program-transf=* \
-  | --program-trans=* | --program-tran=* \
-  | --progr-tra=* | --program-tr=* | --program-t=*)
-    program_transform_name="$ac_optarg" ;;
-
-  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
-  | -silent | --silent | --silen | --sile | --sil)
-    silent=yes ;;
-
-  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
-    ac_prev=sbindir ;;
-  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
-  | --sbi=* | --sb=*)
-    sbindir="$ac_optarg" ;;
-
-  -sharedstatedir | --sharedstatedir | --sharedstatedi \
-  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
-  | --sharedst | --shareds | --shared | --share | --shar \
-  | --sha | --sh)
-    ac_prev=sharedstatedir ;;
-  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
-  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
-  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
-  | --sha=* | --sh=*)
-    sharedstatedir="$ac_optarg" ;;
-
-  -site | --site | --sit)
-    ac_prev=site ;;
-  -site=* | --site=* | --sit=*)
-    site="$ac_optarg" ;;
-
-  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
-    ac_prev=srcdir ;;
-  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
-    srcdir="$ac_optarg" ;;
-
-  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
-  | --syscon | --sysco | --sysc | --sys | --sy)
-    ac_prev=sysconfdir ;;
-  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
-  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
-    sysconfdir="$ac_optarg" ;;
-
-  -target | --target | --targe | --targ | --tar | --ta | --t)
-    ac_prev=target ;;
-  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
-    target="$ac_optarg" ;;
-
-  -v | -verbose | --verbose | --verbos | --verbo | --verb)
-    verbose=yes ;;
-
-  -version | --version | --versio | --versi | --vers)
-    echo "configure generated by autoconf version 2.13"
-    exit 0 ;;
-
-  -with-* | --with-*)
-    ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'`
-    # Reject names that are not valid shell variable names.
-    if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then
-      { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 
1; }
-    fi
-    ac_package=`echo $ac_package| sed 's/-/_/g'`
-    case "$ac_option" in
-      *=*) ;;
-      *) ac_optarg=yes ;;
-    esac
-    eval "with_${ac_package}='$ac_optarg'" ;;
-
-  -without-* | --without-*)
-    ac_package=`echo $ac_option|sed -e 's/-*without-//'`
-    # Reject names that are not valid shell variable names.
-    if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then
-      { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 
1; }
-    fi
-    ac_package=`echo $ac_package| sed 's/-/_/g'`
-    eval "with_${ac_package}=no" ;;
-
-  --x)
-    # Obsolete; use --with-x.
-    with_x=yes ;;
-
-  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
-  | --x-incl | --x-inc | --x-in | --x-i)
-    ac_prev=x_includes ;;
-  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
-  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
-    x_includes="$ac_optarg" ;;
-
-  -x-libraries | --x-libraries | --x-librarie | --x-librari \
-  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
-    ac_prev=x_libraries ;;
-  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
-  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
-    x_libraries="$ac_optarg" ;;
-
-  -*) { echo "configure: error: $ac_option: invalid option; use --help to show 
usage" 1>&2; exit 1; }
-    ;;
-
-  *)
-    if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then
-      echo "configure: warning: $ac_option: invalid host type" 1>&2
-    fi
-    if test "x$nonopt" != xNONE; then
-      { echo "configure: error: can only configure for one host and one target 
at a time" 1>&2; exit 1; }
-    fi
-    nonopt="$ac_option"
-    ;;
-
-  esac
-done
-
-if test -n "$ac_prev"; then
-  { echo "configure: error: missing argument to --`echo $ac_prev | sed 
's/_/-/g'`" 1>&2; exit 1; }
-fi
-
-trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 
2 15
-
-# File descriptor usage:
-# 0 standard input
-# 1 file creation
-# 2 errors and warnings
-# 3 some systems may open it to /dev/tty
-# 4 used on the Kubota Titan
-# 6 checking for... messages and results
-# 5 compiler messages saved in config.log
-if test "$silent" = yes; then
-  exec 6>/dev/null
-else
-  exec 6>&1
-fi
-exec 5>./config.log
-
-echo "\
-This file contains any messages produced by compilers while
-running configure, to aid debugging if configure makes a mistake.
-" 1>&5
-
-# Strip out --no-create and --no-recursion so they do not pile up.
-# Also quote any args containing shell metacharacters.
-ac_configure_args=
-for ac_arg
-do
-  case "$ac_arg" in
-  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
-  | --no-cr | --no-c) ;;
-  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
-  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;;
-  *" "*|*"     "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*)
-  ac_configure_args="$ac_configure_args '$ac_arg'" ;;
-  *) ac_configure_args="$ac_configure_args $ac_arg" ;;
-  esac
-done
-
-# NLS nuisances.
-# Only set these to C if already set.  These must not be set unconditionally
-# because not all systems understand e.g. LANG=C (notably SCO).
-# Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'!
-# Non-C LC_CTYPE values break the ctype check.
-if test "${LANG+set}"   = set; then LANG=C;   export LANG;   fi
-if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi
-if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi
-if test "${LC_CTYPE+set}"    = set; then LC_CTYPE=C;    export LC_CTYPE;    fi
-
-# confdefs.h avoids OS command line length limits that DEFS can exceed.
-rm -rf conftest* confdefs.h
-# AIX cpp loses on an empty file, so make sure it contains at least a newline.
-echo > confdefs.h
-
-# A filename unique to this package, relative to the directory that
-# configure is in, which we can look for to find out if srcdir is correct.
-ac_unique_file=configure.in
-
-# Find the source files, if location was not specified.
-if test -z "$srcdir"; then
-  ac_srcdir_defaulted=yes
-  # Try the directory containing this script, then its parent.
-  ac_prog=$0
-  ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'`
-  test "x$ac_confdir" = "x$ac_prog" && ac_confdir=.
-  srcdir=$ac_confdir
-  if test ! -r $srcdir/$ac_unique_file; then
-    srcdir=..
-  fi
-else
-  ac_srcdir_defaulted=no
-fi
-if test ! -r $srcdir/$ac_unique_file; then
-  if test "$ac_srcdir_defaulted" = yes; then
-    { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; 
exit 1; }
-  else
-    { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; }
-  fi
-fi
-srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'`
-
-# Prefer explicitly selected file to automatically selected ones.
-if test -z "$CONFIG_SITE"; then
-  if test "x$prefix" != xNONE; then
-    CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
-  else
-    CONFIG_SITE="$ac_default_prefix/share/config.site 
$ac_default_prefix/etc/config.site"
-  fi
-fi
-for ac_site_file in $CONFIG_SITE; do
-  if test -r "$ac_site_file"; then
-    echo "loading site script $ac_site_file"
-    . "$ac_site_file"
-  fi
-done
-
-if test -r "$cache_file"; then
-  echo "loading cache $cache_file"
-  . $cache_file
-else
-  echo "creating cache $cache_file"
-  > $cache_file
-fi
-
-ac_ext=c
-# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS 
conftest.$ac_ext $LIBS 1>&5'
-cross_compiling=$ac_cv_prog_cc_cross
-
-ac_exeext=
-ac_objext=o
-if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then
-  # Stardent Vistra SVR4 grep lacks -e, says address@hidden
-  if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then
-    ac_n= ac_c='
-' ac_t='       '
-  else
-    ac_n=-n ac_c= ac_t=
-  fi
-else
-  ac_n= ac_c='\c' ac_t=
-fi
-
-
-
-
-
-ac_aux_dir=
-for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
-  if test -f $ac_dir/install-sh; then
-    ac_aux_dir=$ac_dir
-    ac_install_sh="$ac_aux_dir/install-sh -c"
-    break
-  elif test -f $ac_dir/install.sh; then
-    ac_aux_dir=$ac_dir
-    ac_install_sh="$ac_aux_dir/install.sh -c"
-    break
-  fi
-done
-if test -z "$ac_aux_dir"; then
-  { echo "configure: error: can not find install-sh or install.sh in $srcdir 
$srcdir/.. $srcdir/../.." 1>&2; exit 1; }
-fi
-ac_config_guess=$ac_aux_dir/config.guess
-ac_config_sub=$ac_aux_dir/config.sub
-ac_configure=$ac_aux_dir/configure # This should be Cygnus configure.
-
-# Find a good install program.  We prefer a C program (faster),
-# so one script is as good as another.  But avoid the broken or
-# incompatible versions:
-# SysV /etc/install, /usr/sbin/install
-# SunOS /usr/etc/install
-# IRIX /sbin/install
-# AIX /bin/install
-# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
-# AFS /usr/afsws/bin/install, which mishandles nonexistent args
-# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
-# ./install, which can be erroneously created by make from ./install.sh.
-echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
-echo "configure:575: checking for a BSD compatible install" >&5
-if test -z "$INSTALL"; then
-
-  IFS="${IFS=  }"; ac_save_IFS="$IFS"; IFS=":"
-  for ac_dir in $PATH; do
-    # Account for people who put trailing slashes in PATH elements.
-    case "$ac_dir/" in
-    
/|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;;
-    *)
-      # OSF1 and SCO ODT 3.0 have their own names for install.
-      # Don't use installbsd from OSF since it installs stuff as root
-      # by default.
-      for ac_prog in ginstall scoinst install; do
-        if test -f $ac_dir/$ac_prog; then
-         if test $ac_prog = install &&
-            grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then
-           # AIX install.  It has an incompatible calling convention.
-           :
-         else
-           ac_cv_path_install="$ac_dir/$ac_prog -c"
-           break 2
-         fi
-       fi
-      done
-      ;;
-    esac
-  done
-  IFS="$ac_save_IFS"
-
-  if test "${ac_cv_path_install+set}" = set; then
-    INSTALL="$ac_cv_path_install"
-  else
-    # As a last resort, use the slow shell script.  We don't cache a
-    # path for INSTALL within a source directory, because that will
-    # break other packages using the cache if that directory is
-    # removed, or if the path is relative.
-    INSTALL="$ac_install_sh"
-  fi
-fi
-echo "$ac_t""$INSTALL" 1>&6
-
-# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
-# It thinks the first close brace ends the variable substitution.
-test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
-
-test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}'
-
-test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
-
-
-if test "${EMACS}" = "t"; then
-   EMACS=""
-fi
-
-# Check whether --with-xemacs or --without-xemacs was given.
-if test "${with_xemacs+set}" = set; then
-  withval="$with_xemacs"
-   if test "${withval}" = "yes"; then EMACS=xemacs; else EMACS=${withval}; fi 
-fi
-
-# Check whether --with-emacs or --without-emacs was given.
-if test "${with_emacs+set}" = set; then
-  withval="$with_emacs"
-   if test "${withval}" = "yes"; then EMACS=emacs; else EMACS=${withval}; fi 
-fi
-
-# Check whether --with-makeinfo or --without-makeinfo was given.
-if test "${with_makeinfo+set}" = set; then
-  withval="$with_makeinfo"
-   MAKEINFO="$withval" 
-fi
-
-# Check whether --enable-site-install or --disable-site-install was given.
-if test "${enable_site_install+set}" = set; then
-  enableval="$enable_site_install"
-   DOTEMACS='$(prefix)/share/emacs/site-lisp/default.el' 
-else
-   DOTEMACS=`( cd ; pwd)`/.emacs 
-fi
-
-
-# Extract the first word of "texi2html", so it can be a program name with args.
-set dummy texi2html; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:659: checking for $ac_word" >&5
-
-if test -n "$TEXI2HTML"; then
-  ac_cv_prog_TEXI2HTML="$TEXI2HTML" # Let the user override the test.
-else
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
-  ac_dummy="$PATH"
-  for ac_dir in $ac_dummy; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      ac_cv_prog_TEXI2HTML="texi2html"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-  test -z "$ac_cv_prog_TEXI2HTML" && ac_cv_prog_TEXI2HTML="echo Cannot create 
html version of"
-fi
-TEXI2HTML="$ac_cv_prog_TEXI2HTML"
-if test -n "$TEXI2HTML"; then
-  echo "$ac_t""$TEXI2HTML" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-# Extract the first word of "xemacs", so it can be a program name with args.
-set dummy xemacs; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:686: checking for $ac_word" >&5
-
-if test -n "$EMACS"; then
-  ac_cv_prog_EMACS="$EMACS" # Let the user override the test.
-else
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
-  ac_dummy="$PATH"
-  for ac_dir in $ac_dummy; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      ac_cv_prog_EMACS="xemacs"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-  test -z "$ac_cv_prog_EMACS" && ac_cv_prog_EMACS="emacs"
-fi
-EMACS="$ac_cv_prog_EMACS"
-if test -n "$EMACS"; then
-  echo "$ac_t""$EMACS" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-# Extract the first word of "makeinfo", so it can be a program name with args.
-set dummy makeinfo; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:713: checking for $ac_word" >&5
-
-if test -n "$MAKEINFO"; then
-  ac_cv_prog_MAKEINFO="$MAKEINFO" # Let the user override the test.
-else
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
-  ac_dummy="$PATH"
-  for ac_dir in $ac_dummy; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      ac_cv_prog_MAKEINFO="makeinfo"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-  test -z "$ac_cv_prog_MAKEINFO" && ac_cv_prog_MAKEINFO="\$(EMACS) -batch -q 
-l texinfmt -f batch-texinfo-format"
-fi
-MAKEINFO="$ac_cv_prog_MAKEINFO"
-if test -n "$MAKEINFO"; then
-  echo "$ac_t""$MAKEINFO" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-# Extract the first word of "install-info", so it can be a program name with 
args.
-set dummy install-info; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:740: checking for $ac_word" >&5
-
-if test -n "$INSTALLINFO"; then
-  ac_cv_prog_INSTALLINFO="$INSTALLINFO" # Let the user override the test.
-else
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
-  ac_dummy="$PATH"
-  for ac_dir in $ac_dummy; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      ac_cv_prog_INSTALLINFO="install-info"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-  test -z "$ac_cv_prog_INSTALLINFO" && ac_cv_prog_INSTALLINFO="true"
-fi
-INSTALLINFO="$ac_cv_prog_INSTALLINFO"
-if test -n "$INSTALLINFO"; then
-  echo "$ac_t""$INSTALLINFO" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-
-
-# Check whether --with-package-dir or --without-package-dir was given.
-if test "${with_package_dir+set}" = set; then
-  withval="$with_package_dir"
-   EMACS_PACKAGE_DIR="${withval}"
-fi
-
-if test -n "$EMACS_PACKAGE_DIR"; then
-  if test "$prefix" != "NONE"; then
-       { echo "configure: error: --with-package-dir and --prefix are mutually 
exclusive" 1>&2; exit 1; }
-  fi
-    prefix=$EMACS_PACKAGE_DIR
-  datadir='$(prefix)/etc/w3'
-  infodir='$(prefix)/info'
-  lispdir='$(prefix)/lisp/w3'
-fi
-
-
-
-  
-  echo $ac_n "checking if $EMACS is really XEmacs""... $ac_c" 1>&6
-echo "configure:786: checking if $EMACS is really XEmacs" >&5
-  
-elisp="(if (string-match \"XEmacs\" emacs-version) \"yes\" \"no\") "
-if test -z ""noecho""; then
-       echo $ac_n "checking for xemacsp""... $ac_c" 1>&6
-echo "configure:791: checking for xemacsp" >&5
-fi
-
-
-       OUTPUT=./conftest-$$
-       echo ${EMACS} -batch -eval "(let ((x ${elisp})) (write-region (if 
(stringp x) (princ x) (prin1-to-string x)) nil \"${OUTPUT}\"))" >& 5 2>&1  
-       ${EMACS} -batch -eval "(let ((x ${elisp})) (write-region (if (stringp 
x) (princ x 'ignore) (prin1-to-string x)) nil \"${OUTPUT}\"nil 5))" >& 5 2>&1
-       retval=`cat ${OUTPUT}`
-       echo "=> ${retval}" >& 5 2>&1
-       rm -f ${OUTPUT}
-       EMACS_cv_SYS_xemacsp=$retval
-
-
-xemacsp=${EMACS_cv_SYS_xemacsp}
-if test -z ""noecho""; then
-       echo "$ac_t""$xemacsp" 1>&6
-fi
-
-  XEMACS=${EMACS_cv_SYS_xemacsp}
-  EMACS_FLAVOR=emacs
-  if test "$XEMACS" = "yes"; then
-     EMACS_FLAVOR=xemacs
-  fi
-  echo "$ac_t""$XEMACS" 1>&6
-  
-  
-
-  if test "$prefix" = "NONE"; then
-       echo $ac_n "checking prefix for your Emacs""... $ac_c" 1>&6
-echo "configure:820: checking prefix for your Emacs" >&5
-       
-elisp="(expand-file-name \"..\" invocation-directory)"
-if test -z ""noecho""; then
-       echo $ac_n "checking for prefix""... $ac_c" 1>&6
-echo "configure:825: checking for prefix" >&5
-fi
-
-
-       OUTPUT=./conftest-$$
-       echo ${EMACS} -batch -eval "(let ((x ${elisp})) (write-region (if 
(stringp x) (princ x) (prin1-to-string x)) nil \"${OUTPUT}\"))" >& 5 2>&1  
-       ${EMACS} -batch -eval "(let ((x ${elisp})) (write-region (if (stringp 
x) (princ x 'ignore) (prin1-to-string x)) nil \"${OUTPUT}\"nil 5))" >& 5 2>&1
-       retval=`cat ${OUTPUT}`
-       echo "=> ${retval}" >& 5 2>&1
-       rm -f ${OUTPUT}
-       EMACS_cv_SYS_prefix=$retval
-
-
-prefix=${EMACS_cv_SYS_prefix}
-if test -z ""noecho""; then
-       echo "$ac_t""$prefix" 1>&6
-fi
-
-       prefix=${EMACS_cv_SYS_prefix}
-       echo "$ac_t""$prefix" 1>&6
-  fi
-  # Check whether --with-lispdir or --without-lispdir was given.
-if test "${with_lispdir+set}" = set; then
-  withval="$with_lispdir"
-  lispdir=${withval}
-fi
-
-  echo $ac_n "checking where .elc files should go""... $ac_c" 1>&6
-echo "configure:853: checking where .elc files should go" >&5
-  if test -z "$lispdir"; then
-        theprefix=$prefix
-    if test "x$theprefix" = "xNONE"; then
-       theprefix=$ac_default_prefix
-    fi
-    lispdir="\$(datadir)/${EMACS_FLAVOR}/site-lisp"
-    for thedir in share lib; do
-       potential=
-       if test -d ${theprefix}/${thedir}/${EMACS_FLAVOR}/site-lisp; then
-          lispdir="\$(prefix)/${thedir}/${EMACS_FLAVOR}/site-lisp"
-          break
-       fi
-    done
-  fi
-  echo "$ac_t""$lispdir" 1>&6
-  
-
-
-
-echo $ac_n "checking for emacs version""... $ac_c" 1>&6
-echo "configure:874: checking for emacs version" >&5
-
-elisp="(and (boundp 'emacs-major-version) (format \"%d.%d\" 
emacs-major-version emacs-minor-version))"
-if test -z ""noecho""; then
-       echo $ac_n "checking for version""... $ac_c" 1>&6
-echo "configure:879: checking for version" >&5
-fi
-
-
-       OUTPUT=./conftest-$$
-       echo ${EMACS} -batch -eval "(let ((x ${elisp})) (write-region (if 
(stringp x) (princ x) (prin1-to-string x)) nil \"${OUTPUT}\"))" >& 5 2>&1  
-       ${EMACS} -batch -eval "(let ((x ${elisp})) (write-region (if (stringp 
x) (princ x 'ignore) (prin1-to-string x)) nil \"${OUTPUT}\"nil 5))" >& 5 2>&1
-       retval=`cat ${OUTPUT}`
-       echo "=> ${retval}" >& 5 2>&1
-       rm -f ${OUTPUT}
-       EMACS_cv_SYS_version=$retval
-
-
-version=${EMACS_cv_SYS_version}
-if test -z ""noecho""; then
-       echo "$ac_t""$version" 1>&6
-fi
-
-
-EMACS_VERSION=${EMACS_cv_SYS_version}
-
-echo "$ac_t""${EMACS_VERSION}" 1>&6
-
-
-echo $ac_n "checking for recent gnus version""... $ac_c" 1>&6
-echo "configure:904: checking for recent gnus version" >&5
-
-
-
-if test -z ""noecho""; then
-       echo $ac_n "checking for mm-get-content-id in mm_decode""... $ac_c" 1>&6
-echo "configure:910: checking for mm-get-content-id in mm_decode" >&5
-fi
-library=`echo mm_decode | tr _ -`
-
-elisp="(progn (fmakunbound 'mm-get-content-id) (condition-case nil (progn 
(require '$library) (fboundp 'mm-get-content-id)) (error (prog1 nil (message 
\"$library not found\")))))"
-if test -z ""noecho""; then
-       echo $ac_n "checking for mm_decode""... $ac_c" 1>&6
-echo "configure:917: checking for mm_decode" >&5
-fi
-
-
-       OUTPUT=./conftest-$$
-       echo ${EMACS} -batch -eval "(let ((x ${elisp})) (write-region (if 
(stringp x) (princ x) (prin1-to-string x)) nil \"${OUTPUT}\"))" >& 5 2>&1  
-       ${EMACS} -batch -eval "(let ((x ${elisp})) (write-region (if (stringp 
x) (princ x 'ignore) (prin1-to-string x)) nil \"${OUTPUT}\"nil 5))" >& 5 2>&1
-       retval=`cat ${OUTPUT}`
-       echo "=> ${retval}" >& 5 2>&1
-       rm -f ${OUTPUT}
-       EMACS_cv_SYS_mm_decode=$retval
-
-
-mm_decode=${EMACS_cv_SYS_mm_decode}
-if test -z ""noecho""; then
-       echo "$ac_t""$mm_decode" 1>&6
-fi
-
-if test "${EMACS_cv_SYS_mm_decode}" = "nil"; then
-       EMACS_cv_SYS_mm_decode=no
-fi
-if test "${EMACS_cv_SYS_mm_decode}" = "t"; then
-       EMACS_cv_SYS_mm_decode=yes
-fi
-HAVE_mm_decode=${EMACS_cv_SYS_mm_decode}
-
-if test -z ""noecho""; then
-       echo "$ac_t""$HAVE_mm_decode" 1>&6
-fi
-
-if test "${HAVE_mm_decode}" = "yes"; then
-       EMACS_cv_ACCEPTABLE_GNUS=yes
-else
-       EMACS_cv_ACCEPTABLE_GNUS=no
-fi
-
-if test "${EMACS_cv_ACCEPTABLE_GNUS}" = "yes"; then
-       
-elisp="(file-name-directory (locate-library \"mm-decode\"))"
-if test -z ""noecho""; then
-       echo $ac_n "checking for gnus_dir""... $ac_c" 1>&6
-echo "configure:958: checking for gnus_dir" >&5
-fi
-
-
-       OUTPUT=./conftest-$$
-       echo ${EMACS} -batch -eval "(let ((x ${elisp})) (write-region (if 
(stringp x) (princ x) (prin1-to-string x)) nil \"${OUTPUT}\"))" >& 5 2>&1  
-       ${EMACS} -batch -eval "(let ((x ${elisp})) (write-region (if (stringp 
x) (princ x 'ignore) (prin1-to-string x)) nil \"${OUTPUT}\"nil 5))" >& 5 2>&1
-       retval=`cat ${OUTPUT}`
-       echo "=> ${retval}" >& 5 2>&1
-       rm -f ${OUTPUT}
-       EMACS_cv_SYS_gnus_dir=$retval
-
-
-gnus_dir=${EMACS_cv_SYS_gnus_dir}
-if test -z ""noecho""; then
-       echo "$ac_t""$gnus_dir" 1>&6
-fi
-
-       EMACS_cv_ACCEPTABLE_GNUS=$EMACS_cv_SYS_gnus_dir
-fi
-
-
-   # Check whether --with-gnus or --without-gnus was given.
-if test "${with_gnus+set}" = set; then
-  withval="$with_gnus"
-   EMACS_cv_ACCEPTABLE_GNUS=`( cd $withval && pwd || echo "$withval" ) 2> 
/dev/null` 
-fi
-
-   GNUS=${EMACS_cv_ACCEPTABLE_GNUS}
-   
-   echo "$ac_t"""${GNUS}"" 1>&6
-
-
-echo $ac_n "checking for recent URL version""... $ac_c" 1>&6
-echo "configure:992: checking for recent URL version" >&5
-
-
-
-if test -z ""noecho""; then
-       echo $ac_n "checking for url-scheme-get-property in url_methods""... 
$ac_c" 1>&6
-echo "configure:998: checking for url-scheme-get-property in url_methods" >&5
-fi
-library=`echo url_methods | tr _ -`
-
-elisp="(progn (fmakunbound 'url-scheme-get-property) (condition-case nil 
(progn (require '$library) (fboundp 'url-scheme-get-property)) (error (prog1 
nil (message \"$library not found\")))))"
-if test -z ""noecho""; then
-       echo $ac_n "checking for url_methods""... $ac_c" 1>&6
-echo "configure:1005: checking for url_methods" >&5
-fi
-
-
-       OUTPUT=./conftest-$$
-       echo ${EMACS} -batch -eval "(let ((x ${elisp})) (write-region (if 
(stringp x) (princ x) (prin1-to-string x)) nil \"${OUTPUT}\"))" >& 5 2>&1  
-       ${EMACS} -batch -eval "(let ((x ${elisp})) (write-region (if (stringp 
x) (princ x 'ignore) (prin1-to-string x)) nil \"${OUTPUT}\"nil 5))" >& 5 2>&1
-       retval=`cat ${OUTPUT}`
-       echo "=> ${retval}" >& 5 2>&1
-       rm -f ${OUTPUT}
-       EMACS_cv_SYS_url_methods=$retval
-
-
-url_methods=${EMACS_cv_SYS_url_methods}
-if test -z ""noecho""; then
-       echo "$ac_t""$url_methods" 1>&6
-fi
-
-if test "${EMACS_cv_SYS_url_methods}" = "nil"; then
-       EMACS_cv_SYS_url_methods=no
-fi
-if test "${EMACS_cv_SYS_url_methods}" = "t"; then
-       EMACS_cv_SYS_url_methods=yes
-fi
-HAVE_url_methods=${EMACS_cv_SYS_url_methods}
-
-if test -z ""noecho""; then
-       echo "$ac_t""$HAVE_url_methods" 1>&6
-fi
-
-if test "${HAVE_url_methods}" = "yes"; then
-       EMACS_cv_ACCEPTABLE_URL=yes
-else
-       EMACS_cv_ACCEPTABLE_URL=no
-fi
-
-if test "${EMACS_cv_ACCEPTABLE_URL}" = "yes"; then
-       
-elisp="(file-name-directory (locate-library \"url-methods\"))"
-if test -z ""noecho""; then
-       echo $ac_n "checking for url_dir""... $ac_c" 1>&6
-echo "configure:1046: checking for url_dir" >&5
-fi
-
-
-       OUTPUT=./conftest-$$
-       echo ${EMACS} -batch -eval "(let ((x ${elisp})) (write-region (if 
(stringp x) (princ x) (prin1-to-string x)) nil \"${OUTPUT}\"))" >& 5 2>&1  
-       ${EMACS} -batch -eval "(let ((x ${elisp})) (write-region (if (stringp 
x) (princ x 'ignore) (prin1-to-string x)) nil \"${OUTPUT}\"nil 5))" >& 5 2>&1
-       retval=`cat ${OUTPUT}`
-       echo "=> ${retval}" >& 5 2>&1
-       rm -f ${OUTPUT}
-       EMACS_cv_SYS_url_dir=$retval
-
-
-url_dir=${EMACS_cv_SYS_url_dir}
-if test -z ""noecho""; then
-       echo "$ac_t""$url_dir" 1>&6
-fi
-
-       EMACS_cv_ACCEPTABLE_URL=$EMACS_cv_SYS_url_dir
-fi
-
-
-   # Check whether --with-url or --without-url was given.
-if test "${with_url+set}" = set; then
-  withval="$with_url"
-   EMACS_cv_ACCEPTABLE_URL=`( cd $withval && pwd || echo "$withval" ) 2> 
/dev/null` 
-fi
-
-   URL=${EMACS_cv_ACCEPTABLE_URL}
-   
-   echo "$ac_t"""${URL}"" 1>&6
-
-
-echo $ac_n "checking how to rebuild custom autoloads""... $ac_c" 1>&6
-echo "configure:1080: checking how to rebuild custom autoloads" >&5
-
-
-
-if test -z ""noecho""; then
-       echo $ac_n "checking for Custom-make-dependencies in cus_dep""... 
$ac_c" 1>&6
-echo "configure:1086: checking for Custom-make-dependencies in cus_dep" >&5
-fi
-library=`echo cus_dep | tr _ -`
-
-elisp="(progn (fmakunbound 'Custom-make-dependencies) (condition-case nil 
(progn (require '$library) (fboundp 'Custom-make-dependencies)) (error (prog1 
nil (message \"$library not found\")))))"
-if test -z ""noecho""; then
-       echo $ac_n "checking for cus_dep""... $ac_c" 1>&6
-echo "configure:1093: checking for cus_dep" >&5
-fi
-
-
-       OUTPUT=./conftest-$$
-       echo ${EMACS} -batch -eval "(let ((x ${elisp})) (write-region (if 
(stringp x) (princ x) (prin1-to-string x)) nil \"${OUTPUT}\"))" >& 5 2>&1  
-       ${EMACS} -batch -eval "(let ((x ${elisp})) (write-region (if (stringp 
x) (princ x 'ignore) (prin1-to-string x)) nil \"${OUTPUT}\"nil 5))" >& 5 2>&1
-       retval=`cat ${OUTPUT}`
-       echo "=> ${retval}" >& 5 2>&1
-       rm -f ${OUTPUT}
-       EMACS_cv_SYS_cus_dep=$retval
-
-
-cus_dep=${EMACS_cv_SYS_cus_dep}
-if test -z ""noecho""; then
-       echo "$ac_t""$cus_dep" 1>&6
-fi
-
-if test "${EMACS_cv_SYS_cus_dep}" = "nil"; then
-       EMACS_cv_SYS_cus_dep=no
-fi
-if test "${EMACS_cv_SYS_cus_dep}" = "t"; then
-       EMACS_cv_SYS_cus_dep=yes
-fi
-HAVE_cus_dep=${EMACS_cv_SYS_cus_dep}
-
-if test -z ""noecho""; then
-       echo "$ac_t""$HAVE_cus_dep" 1>&6
-fi
-
-EMACS_cv_REBUILD_CUSTOMLOADS=${HAVE_cus_dep}
-
-
-if test "${EMACS_cv_REBUILD_CUSTOMLOADS}" != "no"; then
-   REBUILD_CUSTOMLOADS='$(EMACS) $(BATCHFLAGS) -l cus-dep -f 
Custom-make-dependencies $(srcdir)'
-else
-   REBUILD_CUSTOMLOADS='$(EMACS) $(BATCHFLAGS) $(DEPS) -f 
emacs-batch-build-custom-load $(srcdir)'
-fi
-echo "$ac_t"""${REBUILD_CUSTOMLOADS}"" 1>&6
-
-
-
-if test "${URL}" = "no"; then
-   { echo "configure: error: "Could not find URL package.  Please use the 
--with-url=DIRECTORY flag."" 1>&2; exit 1; }
-fi
-
-if test "${GNUS}" = "no"; then
-   { echo "configure: error: "Could not find Gnus package.  Please use the 
--with-gnus=DIRECTORY flag."" 1>&2; exit 1; }
-fi
-
-if test "${MAKEINFO}" = "no"; then
-   MAKEINFO='$(EMACS) -batch -q -l texinfmt -f batch-texinfo-format'
-fi
-
-if test "${TEXI2HTML}" = "texi2html"; then
-   TEXI2HTML_FLAGS="-menu -glossary -number -split_node"
-fi
-
-
-
-
-
-
-
-
-
-
-if test "${GNUS}" != "no"; then
-CIDFILE=url-cid.el
-
-fi
-
-trap '' 1 2 15
-
-trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 
2 15
-
-test "x$prefix" = xNONE && prefix=$ac_default_prefix
-# Let make expand exec_prefix.
-test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
-
-# Any assignment to VPATH causes Sun make to only execute
-# the first set of double-colon rules, so remove it if not needed.
-# If there is a colon in the path, we need to keep it.
-if test "x$srcdir" = x.; then
-  ac_vpsub='/^[        ]*VPATH[        ]*=[^:]*$/d'
-fi
-
-trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15
-
-# Transform confdefs.h into DEFS.
-# Protect against shell expansion while executing Makefile rules.
-# Protect against Makefile macro expansion.
-cat > conftest.defs <<\EOF
-s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%-D\1=\2%g
-s%[    `~#$^&*(){}\\|;'"<>?]%\\&%g
-s%\[%\\&%g
-s%\]%\\&%g
-s%\$%$$%g
-EOF
-DEFS=`sed -f conftest.defs confdefs.h | tr '\012' ' '`
-rm -f conftest.defs
-
-
-# Without the "./", some shells look in PATH for config.status.
-: ${CONFIG_STATUS=./config.status}
-
-echo creating $CONFIG_STATUS
-rm -f $CONFIG_STATUS
-cat > $CONFIG_STATUS <<EOF
-#! /bin/sh
-# Generated automatically by configure.
-# Run this file to recreate the current configuration.
-# This directory was configured as follows,
-# on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
-#
-# $0 $ac_configure_args
-#
-# Compiler output produced by configure, useful for debugging
-# configure, is in ./config.log if it exists.
-
-ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]"
-for ac_option
-do
-  case "\$ac_option" in
-  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
-    echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create 
--no-recursion"
-    exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create 
--no-recursion ;;
-  -version | --version | --versio | --versi | --vers | --ver | --ve | --v)
-    echo "$CONFIG_STATUS generated by autoconf version 2.13"
-    exit 0 ;;
-  -help | --help | --hel | --he | --h)
-    echo "\$ac_cs_usage"; exit 0 ;;
-  *) echo "\$ac_cs_usage"; exit 1 ;;
-  esac
-done
-
-ac_given_srcdir=$srcdir
-ac_given_INSTALL="$INSTALL"
-
-trap 'rm -fr `echo "Makefile
-         etc/Makefile
-         texi/Makefile
-         lisp/Makefile
-         lisp/w3-cfg.el
-         " | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
-EOF
-cat >> $CONFIG_STATUS <<EOF
-
-# Protect against being on the right side of a sed subst in config.status.
-sed 's/%@/@@/; s/@%/@@/; s/%g\$/@g/; /@g\$/s/[\\\\&%]/\\\\&/g;
- s/@@/%@/; s/@@/@%/; s/@g\$/%g/' > conftest.subs <<\\CEOF
-$ac_vpsub
-$extrasub
address@hidden@%$SHELL%g
address@hidden@%$CFLAGS%g
address@hidden@%$CPPFLAGS%g
address@hidden@%$CXXFLAGS%g
address@hidden@%$FFLAGS%g
address@hidden@%$DEFS%g
address@hidden@%$LDFLAGS%g
address@hidden@%$LIBS%g
address@hidden@%$exec_prefix%g
address@hidden@%$prefix%g
address@hidden@%$program_transform_name%g
address@hidden@%$bindir%g
address@hidden@%$sbindir%g
address@hidden@%$libexecdir%g
address@hidden@%$datadir%g
address@hidden@%$sysconfdir%g
address@hidden@%$sharedstatedir%g
address@hidden@%$localstatedir%g
address@hidden@%$libdir%g
address@hidden@%$includedir%g
address@hidden@%$oldincludedir%g
address@hidden@%$infodir%g
address@hidden@%$mandir%g
address@hidden@%$INSTALL_PROGRAM%g
address@hidden@%$INSTALL_SCRIPT%g
address@hidden@%$INSTALL_DATA%g
address@hidden@%$TEXI2HTML%g
address@hidden@%$EMACS%g
address@hidden@%$MAKEINFO%g
address@hidden@%$INSTALLINFO%g
address@hidden@%$EMACS_PACKAGE_DIR%g
address@hidden@%$XEMACS%g
address@hidden@%$EMACS_FLAVOR%g
address@hidden@%$lispdir%g
address@hidden@%$EMACS_VERSION%g
address@hidden@%$HAVE_mm_decode%g
address@hidden@%$GNUS%g
address@hidden@%$HAVE_url_methods%g
address@hidden@%$URL%g
address@hidden@%$HAVE_cus_dep%g
address@hidden@%$REBUILD_CUSTOMLOADS%g
address@hidden@%$INSTALL%g
address@hidden@%$DOTEMACS%g
address@hidden@%$TEXI2HTML_FLAGS%g
address@hidden@%$CIDFILE%g
-
-CEOF
-EOF
-
-cat >> $CONFIG_STATUS <<\EOF
-
-# Split the substitutions into bite-sized pieces for seds with
-# small command number limits, like on Digital OSF/1 and HP-UX.
-ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script.
-ac_file=1 # Number of current file.
-ac_beg=1 # First line for current file.
-ac_end=$ac_max_sed_cmds # Line after last line for current file.
-ac_more_lines=:
-ac_sed_cmds=""
-while $ac_more_lines; do
-  if test $ac_beg -gt 1; then
-    sed "1,${ac_beg}d; ${ac_end}q" conftest.subs > conftest.s$ac_file
-  else
-    sed "${ac_end}q" conftest.subs > conftest.s$ac_file
-  fi
-  if test ! -s conftest.s$ac_file; then
-    ac_more_lines=false
-    rm -f conftest.s$ac_file
-  else
-    if test -z "$ac_sed_cmds"; then
-      ac_sed_cmds="sed -f conftest.s$ac_file"
-    else
-      ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file"
-    fi
-    ac_file=`expr $ac_file + 1`
-    ac_beg=$ac_end
-    ac_end=`expr $ac_end + $ac_max_sed_cmds`
-  fi
-done
-if test -z "$ac_sed_cmds"; then
-  ac_sed_cmds=cat
-fi
-EOF
-
-cat >> $CONFIG_STATUS <<EOF
-
-CONFIG_FILES=\${CONFIG_FILES-"Makefile
-         etc/Makefile
-         texi/Makefile
-         lisp/Makefile
-         lisp/w3-cfg.el
-         "}
-EOF
-cat >> $CONFIG_STATUS <<\EOF
-for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then
-  # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
-  case "$ac_file" in
-  *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'`
-       ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
-  *) ac_file_in="${ac_file}.in" ;;
-  esac
-
-  # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories.
-
-  # Remove last slash and all that follows it.  Not all systems have dirname.
-  ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'`
-  if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
-    # The file is in a subdirectory.
-    test ! -d "$ac_dir" && mkdir "$ac_dir"
-    ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`"
-    # A "../" for each directory in $ac_dir_suffix.
-    ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'`
-  else
-    ac_dir_suffix= ac_dots=
-  fi
-
-  case "$ac_given_srcdir" in
-  .)  srcdir=.
-      if test -z "$ac_dots"; then top_srcdir=.
-      else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;;
-  /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;;
-  *) # Relative path.
-    srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix"
-    top_srcdir="$ac_dots$ac_given_srcdir" ;;
-  esac
-
-  case "$ac_given_INSTALL" in
-  [/$]*) INSTALL="$ac_given_INSTALL" ;;
-  *) INSTALL="$ac_dots$ac_given_INSTALL" ;;
-  esac
-
-  echo creating "$ac_file"
-  rm -f "$ac_file"
-  configure_input="Generated automatically from `echo $ac_file_in|sed 
's%.*/%%'` by configure."
-  case "$ac_file" in
-  *Makefile*) ac_comsub="1i\\
-# $configure_input" ;;
-  *) ac_comsub= ;;
-  esac
-
-  ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% 
$ac_given_srcdir/%g"`
-  sed -e "$ac_comsub
address@hidden@%$configure_input%g
address@hidden@%$srcdir%g
address@hidden@%$top_srcdir%g
address@hidden@%$INSTALL%g
-" $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file
-fi; done
-rm -f conftest.s*
-
-EOF
-cat >> $CONFIG_STATUS <<EOF
-
-EOF
-cat >> $CONFIG_STATUS <<\EOF
-
-exit 0
-EOF
-chmod +x $CONFIG_STATUS
-rm -fr confdefs* $ac_clean_files
-test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1
-
-
-echo "$ac_t""" "" 1>&6
-echo "$ac_t"""Sucessfully configured Emacs/W3"" 1>&6
-if test -n "$EMACS_PACKAGE_DIR"; then
-   echo "$ac_t"""Using package root:                ${EMACS_PACKAGE_DIR}"" 1>&6
-fi
-echo "$ac_t"""Using custom package installed in: ${CUSTOM}"" 1>&6
-echo "$ac_t"""Emacs/W3 will be compiled with:    ${EMACS}"" 1>&6
-echo "$ac_t""" "" 1>&6
-echo "$ac_t"""To finish building Emacs/W3 type \'make\' now."" 1>&6
-echo "$ac_t"""To install Emacs/W3 type \'make install\'."" 1>&6
-echo "$ac_t"""To create autoloads in \'${DOTEMACS}\' type \'make dotemacs\'"" 
1>&6
diff --git a/configure.in b/configure.in
deleted file mode 100644
index d632b94..0000000
--- a/configure.in
+++ /dev/null
@@ -1,88 +0,0 @@
-AC_INIT(configure.in)
-AC_PREREQ(2.4)
-
-dnl Disable cache files:
-dnl This is controversial, but I am convinced this is the right way to go,
-dnl at least by default.  Otherwise there are too many surprises.
-define([AC_CACHE_LOAD], )dnl
-define([AC_CACHE_SAVE], )dnl
-define([AC_CACHE_VAL], [
-$2
-])dnl
-
-AC_PROG_INSTALL
-
-dnl
-dnl Apparently, if you run a shell window in Emacs, it sets the EMACS
-dnl environment variable to 't'.  Lets undo the damage.
-dnl
-if test "${EMACS}" = "t"; then
-   EMACS=""
-fi
-
-AC_ARG_WITH(xemacs,           --with-xemacs             Use XEmacs to build, [ 
if test "${withval}" = "yes"; then EMACS=xemacs; else EMACS=${withval}; fi ])
-AC_ARG_WITH(emacs,            --with-emacs              Use Emacs to build, [ 
if test "${withval}" = "yes"; then EMACS=emacs; else EMACS=${withval}; fi ])
-AC_ARG_WITH(makeinfo,         --with-makeinfo           Specify how to build 
info files, [ MAKEINFO="$withval" ])
-AC_ARG_ENABLE(site-install,   --enable-site-install     Perform a sitewide 
installation, [ DOTEMACS='$(prefix)/share/emacs/site-lisp/default.el' ], [ 
DOTEMACS=`( cd ; pwd)`/.emacs ])
-
-AC_CHECK_PROG(TEXI2HTML, texi2html, texi2html, echo Cannot create html version 
of)
-AC_CHECK_PROG(EMACS, xemacs, xemacs, emacs)
-AC_CHECK_PROG(MAKEINFO, makeinfo, makeinfo, \$(EMACS) -batch -q -l texinfmt -f 
batch-texinfo-format)
-AC_CHECK_PROG(INSTALLINFO, install-info, install-info, true)
-
-AC_EMACS_PACKAGES
-AC_PATH_LISPDIR
-
-AC_EMACS_VERSION
-AC_CHECK_GNUS
-AC_CHECK_URL
-AC_CHECK_CUSTOMLOADS
-
-if test "${URL}" = "no"; then
-   AC_MSG_ERROR("Could not find URL package.  Please use the 
--with-url=DIRECTORY flag.")
-fi
-
-if test "${GNUS}" = "no"; then
-   AC_MSG_ERROR("Could not find Gnus package.  Please use the 
--with-gnus=DIRECTORY flag.")
-fi
-
-if test "${MAKEINFO}" = "no"; then
-   MAKEINFO='$(EMACS) -batch -q -l texinfmt -f batch-texinfo-format'
-fi
-
-if test "${TEXI2HTML}" = "texi2html"; then
-   TEXI2HTML_FLAGS="-menu -glossary -number -split_node"
-fi
-
-AC_SUBST(EMACS_PACKAGE_DIR)
-AC_SUBST(MAKEINFO)
-AC_SUBST(EMACS)
-AC_SUBST(INSTALL)
-AC_SUBST(INSTALLINFO)
-AC_SUBST(DOTEMACS)
-AC_SUBST(TEXI2HTML)
-AC_SUBST(TEXI2HTML_FLAGS)
-
-if test "${GNUS}" != "no"; then
-CIDFILE=url-cid.el
-AC_SUBST(CIDFILE)
-fi
-
-AC_OUTPUT(Makefile
-         etc/Makefile
-         texi/Makefile
-         lisp/Makefile
-         lisp/w3-cfg.el
-         )
-
-AC_MSG_RESULT(" ")
-AC_MSG_RESULT("Sucessfully configured Emacs/W3")
-if test -n "$EMACS_PACKAGE_DIR"; then
-   AC_MSG_RESULT("Using package root:                ${EMACS_PACKAGE_DIR}")
-fi
-AC_MSG_RESULT("Using custom package installed in: ${CUSTOM}")
-AC_MSG_RESULT("Emacs/W3 will be compiled with:    ${EMACS}")
-AC_MSG_RESULT(" ")
-AC_MSG_RESULT("To finish building Emacs/W3 type \'make\' now.")
-AC_MSG_RESULT("To install Emacs/W3 type \'make install\'.")
-AC_MSG_RESULT("To create autoloads in \'${DOTEMACS}\' type \'make dotemacs\'")
diff --git a/css.el b/css.el
index 5e87560..f848c82 100644
--- a/css.el
+++ b/css.el
@@ -1,31 +1,29 @@
-;;; css.el -- Cascading Style Sheet parser
+;;; css.el --- Cascading Style Sheet parser
+
+;; Copyright (c) 1996-2001, 2007, 2013 Free Software Foundation, Inc.
+
 ;; Author: $Author: legoscia $
 ;; Created: $Date: 2007/11/15 12:28:29 $
-;; Version: $Revision: 1.12 $
 ;; Keywords: 
 
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; Copyright (c) 1996, 97, 98, 1999, 2000, 2001, 2007 Free Software 
Foundation, Inc.
-;;; Copyright (c) 1996 by William M. Perry <address@hidden>
-;;;
-;;; This file is part of GNU Emacs.
-;;;
-;;; GNU Emacs is free software; you can redistribute it and/or modify
-;;; it under the terms of the GNU General Public License as published by
-;;; the Free Software Foundation; either version 2, or (at your option)
-;;; any later version.
-;;;
-;;; GNU Emacs is distributed in the hope that it will be useful,
-;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;;; GNU General Public License for more details.
-;;;
-;;; You should have received a copy of the GNU General Public License
-;;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;;; Boston, MA 02111-1307, USA.
-;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; This file is part of GNU Emacs.
+;;
+;; GNU Emacs is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 3, or (at your option)
+;; any later version.
+;;
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
+
+;;; Code:
 
 (eval-and-compile
   (require 'cl)
@@ -34,14 +32,14 @@
 (autoload 'url-insert-file-contents "url-handlers")
 (autoload 'url-view-url "url-util")
 
-(if (not (fboundp 'frame-char-height))
+(if (eval-when-compile (not (fboundp 'frame-char-height)))
     (defun frame-char-height (&optional frame)
       "Height in pixels of a line in the font in frame FRAME.
 If FRAME is omitted, the selected frame is used.
 For a terminal frame, the value is always 1."
       (font-height (face-font 'default frame))))
 
-(if (not (fboundp 'frame-char-width))
+(if (eval-when-compile (not (fboundp 'frame-char-width)))
     (defun frame-char-width (&optional frame)
       "Width in pixels of characters in the font in frame FRAME.
 If FRAME is omitted, the selected frame is used.
@@ -176,11 +174,9 @@ For a terminal screen, the value is always 1."
 (put 'border 'css-shorthand t)
 (put 'list-style 'css-shorthand t)
 
-(mapcar
- (lambda (entry)
-   (put (aref entry 0) 'css-inherit (aref entry 1))
-   (put (aref entry 0) 'css-type    (aref entry 2)))
- css-properties)
+(dolist (entry css-properties)
+  (put (aref entry 0) 'css-inherit (aref entry 1))
+  (put (aref entry 0) 'css-type    (aref entry 2)))
 
 (defconst css-weights
   '(nil                                        ;never used
@@ -196,25 +192,23 @@ For a terminal screen, the value is always 1."
   "List of CSS font weights.")
 
 (defvar css-syntax-table
-  (copy-syntax-table emacs-lisp-mode-syntax-table)
+  (let ((st (copy-syntax-table emacs-lisp-mode-syntax-table)))
+    (modify-syntax-entry ?' "\"" st)
+    (modify-syntax-entry ?` "\"" st)
+    (modify-syntax-entry ?{ "(" st)
+    (modify-syntax-entry ?} ")" st)
+    st)
   "The syntax table for parsing stylesheets")
 
-(modify-syntax-entry ?' "\"" css-syntax-table)
-(modify-syntax-entry ?` "\"" css-syntax-table)
-(modify-syntax-entry ?{ "(" css-syntax-table)
-(modify-syntax-entry ?} ")" css-syntax-table)
-
-(eval-when-compile
-  (defvar css-scratch-val nil)
-  (defvar css-scratch-id nil)
-  (defvar css-scratch-class nil)
-  (defvar css-scratch-possibles nil)
-  (defvar css-scratch-current nil)
-  (defvar css-scratch-classes nil)
-  (defvar css-scratch-class-match nil)
-  (defvar css-scratch-current-rule nil)
-  (defvar css-scratch-current-value nil)
-  )
+(defvar css-scratch-val)
+(defvar css-scratch-id)
+(defvar css-scratch-class)
+(defvar css-scratch-possibles)
+(defvar css-scratch-current)
+(defvar css-scratch-classes)
+(defvar css-scratch-class-match)
+(defvar css-scratch-current-rule)
+(defvar css-scratch-current-value)
 
 (defsubst css-replace-regexp (regexp to-string)
   (goto-char (point-min))
@@ -253,11 +247,10 @@ For a terminal screen, the value is always 1."
       (setq rule (cdr rule)))
     matched))
 
-(defsubst css-get-internal (tag args)
-  (declare (special tag sheet element-stack default))
+(defsubst css-get-internal (tag args sheet element-stack)
   (setq css-scratch-id (or (cdr-safe (assq 'id args))
                           (cdr-safe (assq 'name args)))
-       css-scratch-class (or (cdr-safe (assq 'class args)) t)  
+       css-scratch-class (or (cdr-safe (assq 'class args)) t)
        css-scratch-possibles (gethash tag sheet))
   (while css-scratch-possibles
     (setq css-scratch-current (car css-scratch-possibles)
@@ -298,14 +291,14 @@ For a terminal screen, the value is always 1."
 
   ;; check for things without the class
   (if (listp css-scratch-class)
-      (css-get-internal tag nil))
+      (css-get-internal tag nil sheet element-stack))
 
   ;; check for global class values
-  (css-get-internal '*document args)
+  (css-get-internal '*document args sheet element-stack)
 
   ;; Now check for things with the class - they will be stuck on the front
   ;; of the list, which will mean we do the right thing
-  (css-get-internal tag args)
+  (css-get-internal tag args sheet element-stack)
 
   ;; Defaults are up to the calling application to provide
   css-scratch-val)
@@ -394,13 +387,6 @@ For a terminal screen, the value is always 1."
          (push (cons 'font-family (css-expand-value 'string-list family)) 
retval))
       retval)))
 
-(if (not (fboundp 'frame-char-height))
-    (defun frame-char-height (&optional frame)
-      "Height in pixels of a line in the font in frame FRAME.
-If FRAME is omitted, the selected frame is used.
-For a terminal frame, the value is always 1."
-      (font-height (face-font 'default frame))))
-
 (defun css-expand-length (spec &optional height)
   (cond
    ((not (stringp spec)) spec)
@@ -409,13 +395,13 @@ For a terminal frame, the value is always 1."
         (fboundp 'frame-char-height))
     ;; A percentage
     ;; XXX: should be relative to encosing element
-    (setq spec (/ (string-to-int (match-string 1 spec)) 100.0))
+    (setq spec (/ (string-to-number (match-string 1 spec)) 100.0))
     (if height
        (round (* (frame-char-height) spec))
       (max 0 (round (* (frame-char-width) spec)))))
    ((string-match "\\([+-]?\\([0-9]+\\|[0-9]*\\.[0-9]+\\)\\)%" spec)
     ;; No frame-char-width/height
-    (setq spec (/ (string-to-int (match-string 1 spec)) 100.0))
+    (setq spec (/ (string-to-number (match-string 1 spec)) 100.0))
     (if height
        (max 0 (round (* (/ (frame-pixel-height) (frame-height)) spec)))
       (max 0 (round (* (/ (frame-pixel-width) (frame-width)) spec)))))
@@ -460,7 +446,7 @@ For a terminal frame, the value is always 1."
                        "\\|") "\\)$")))
 
 (defun css-expand-color (color)
-  (condition-case e
+  (condition-case _
       (cond
        ((string-match "^\\(transparent\\|none\\)$" color)
        (setq color nil))
@@ -492,9 +478,9 @@ For a terminal frame, the value is always 1."
        ;; rgb(r,g,b) 0 - 255, cutting off at 255
        (setq color (vector
                     'rgb
-                    (min (string-to-int (match-string 1 color)) 255)
-                    (min (string-to-int (match-string 2 color)) 255)
-                    (min (string-to-int (match-string 3 color)) 255))))
+                    (min (string-to-number (match-string 1 color)) 255)
+                    (min (string-to-number (match-string 2 color)) 255)
+                    (min (string-to-number (match-string 3 color)) 255))))
        ((string-match "^rgb *( *\\([0-9]+\\) *%[, ]+\\([0-9]+\\) *%[, 
]+\\([0-9]+\\) *% *) *$" color)
        ;; rgb(r%,g%,b%) 0 - 100%, cutting off at 100%
        (let ((r (min (string-to-number (match-string 1 color)) 100.0))
@@ -510,11 +496,14 @@ For a terminal frame, the value is always 1."
        )
        )
     (error
-     (w3-warn 'css (format "Couldn't interpret color value %s" color))
+     (display-warning 'css (format "Couldn't interpret color value %s" color))
      (setq color nil)))
   color
   )
 
+(defvar css--url)
+(defvar css--purl)
+
 (defun css-expand-value (type value)
   (if value
       (case type
@@ -528,7 +517,6 @@ For a terminal frame, the value is always 1."
        (color                          ; CSS, Section 6.3
         (setq value (css-expand-color value)))
        (url                            ; CSS, Section 6.4
-        (declare (special url purl))
         ;; Potentially remove url(...) from around the URL
         (if (string-match "url *(\\([^ )]+\\) *)" value)
             (setq value (match-string 1 value)))
@@ -538,7 +526,7 @@ For a terminal frame, the value is always 1."
         ;; Nuke whitespace
         (if (string-match " *\\([^ ]+\\) *" value)
             (setq value (match-string 1 value)))
-        (setq value (url-expand-file-name value (or url purl))))
+        (setq value (url-expand-file-name value (or css--url css--purl))))
        (angle                          ; ACSS, Section 2.2.1
         )
        (time                           ; ACSS, Section 2.2.2
@@ -731,23 +719,23 @@ For a terminal frame, the value is always 1."
        (save-excursion
          (insert data)))))
 
+(defvar url-mime-accept-string)
+(defvar url-current-object)
+
 (defun css-handle-import (data)
-  (declare (special url-current-object))
-  (let (url purl)
-    (setq purl url-current-object)
-    (setq url (css-expand-value 'url data))
+  (let ((purl url-current-object)       ;FIXME: Should this be css--purl?
+        (url (css-expand-value 'url data)))
     (and url
-        (let ((url-mime-accept-string "text/css ; level=2")
-              (sheet nil))
-          (save-excursion
-            (set-buffer (generate-new-buffer " *styleimport*"))
-            ;; ftp/file URLs can signal an error.
-            (ignore-errors
-              (url-insert-file-contents url))
-            (css-clean-buffer)
-            (setq sheet (buffer-string))
-            (set-buffer-modified-p nil)
-            (kill-buffer (current-buffer)))
+        (let* ((url-mime-accept-string "text/css ; level=2")
+                (sheet
+                 (with-current-buffer (generate-new-buffer " *styleimport*")
+                   ;; ftp/file URLs can signal an error.
+                   (ignore-errors
+                     (url-insert-file-contents url))
+                   (css-clean-buffer)
+                   (prog1 (buffer-string)
+                     (set-buffer-modified-p nil)
+                     (kill-buffer (current-buffer))))))
           (insert sheet)))))
 
 (defun css-clean-buffer ()
@@ -767,59 +755,47 @@ For a terminal frame, the value is always 1."
   (css-replace-regexp "[ \t\r]+$" "")  ; Nuke whitespace at end of line
   (goto-char (point-min)))
 
-(if (featurep 'xemacs)
-    (defun css-color-light-p (color-or-face)
-      (let (face color)
-       (cond
-        ((or (facep color-or-face)
-             (and (symbolp color-or-face)
-                  (find-face color-or-face)))
-         (setq color (specifier-instance (face-background color-or-face))))
-        ((color-instance-p color-or-face)
-         (setq color color-or-face))
-        ((color-specifier-p color-or-face)
-         (setq color (specifier-instance color-or-face)))
-        ((stringp color-or-face)
-         (setq color (make-color-instance color-or-face)))
-        (t (signal 'wrong-type-argument 'color-or-face-p)))
-       (if color
-           (not (< (apply '+ (color-instance-rgb-components color))
-                   (/ (apply '+ (color-instance-rgb-components
-                                 (make-color-instance "white"))) 3)))
-         t)))
-  (defun css-color-values (color)
-    (cond
-     ((fboundp 'display-color-p)
-      (color-values color))
-     ((eq window-system 'x)
-      (x-color-values color))
-     ((eq window-system 'pm)
-      (pm-color-values color))
-     ((eq window-system 'ns)
-      (ns-color-values color))
-     (t nil)))
-  (defun css-color-light-p (color-or-face)
-    (let (colors)
-      (cond
-       ((null window-system)
-       nil)
-       ((facep color-or-face)
-       (setq color-or-face (face-background color-or-face))
-       (if (null color-or-face)
-           (setq color-or-face (cdr-safe
-                                (assq 'background-color (frame-parameters)))))
-       (setq colors (css-color-values color-or-face)))
-       ((stringp color-or-face)
-       (setq colors (css-color-values color-or-face)))
-       ((font-rgb-color-p color-or-face)
-       (setq colors (list (font-rgb-color-red color-or-face)
-                          (font-rgb-color-green color-or-face)
-                          (font-rgb-color-blue color-or-face))))
-       (t
-       (signal 'wrong-type-argument 'color-or-face-p)))
-      (not (< (apply '+ colors)
-             (/ (apply '+ (css-color-values "white")) 3)))))
-  )
+(defalias 'css-color-light-p
+  (if (featurep 'xemacs)
+      (lambda (color-or-face)
+        (let (color)
+          (cond
+           ((or (facep color-or-face)
+                (and (symbolp color-or-face)
+                     (find-face color-or-face)))
+            (setq color (specifier-instance (face-background color-or-face))))
+           ((color-instance-p color-or-face)
+            (setq color color-or-face))
+           ((color-specifier-p color-or-face)
+            (setq color (specifier-instance color-or-face)))
+           ((stringp color-or-face)
+            (setq color (make-color-instance color-or-face)))
+           (t (signal 'wrong-type-argument 'color-or-face-p)))
+          (if color
+              (not (< (apply '+ (color-instance-rgb-components color))
+                      (/ (apply '+ (color-instance-rgb-components
+                                    (make-color-instance "white"))) 3)))
+            t)))
+
+    (lambda (color-or-face)
+      (let ((colors
+             (cond
+              ((null window-system)
+               nil)
+              ((facep color-or-face)
+               (color-values (or (face-background color-or-face)
+                                 (frame-parameter nil 'background-color))))
+              ((stringp color-or-face)
+               (color-values color-or-face))
+              ((font-rgb-color-p color-or-face)
+               (list (font-rgb-color-red color-or-face)
+                     (font-rgb-color-green color-or-face)
+                     (font-rgb-color-blue color-or-face)))
+              (t
+               (signal 'wrong-type-argument 'color-or-face-p)))))
+        (not (< (apply '+ colors)
+                (/ (apply '+ (color-values "white")) 3)))))
+    ))
 
 (defun css-active-device-types (&optional device)
   (let ((types (list 'all
@@ -879,7 +855,7 @@ For a terminal frame, the value is always 1."
   ;; a = # of ID attributes in the selector
   ;; b = # of class attributes in the selector
   ;; c = # of tag names in the selector
-  (let ((a 0) (b 0) (c 0) cur tmp)
+  (let ((a 0) (b 0) (c 0) tmp)
     (if (not (listp (car rule)))
        (css-rule-specificity-internal rule)
       (setq c (length rule))
@@ -897,8 +873,7 @@ For a terminal frame, the value is always 1."
        (puthash k (copy-tree v) new))) sheet)
     new))
 
-(defsubst css-store-rule (attrs applies-to)
-  (declare (special sheet))
+(defsubst css-store-rule (attrs applies-to sheet)
   (let (rules cur tag node)
     (while applies-to
       (setq cur (pop applies-to)
@@ -924,25 +899,20 @@ For a terminal frame, the value is always 1."
   )
 
 (defun css-parse (url &optional string inherit)
-  (declare (special url-current-object))
-  (let (
+  (let ((css--url url)
        (url-mime-accept-string
         "text/css ; level=2")
        (save-pos nil)
        (applies-to nil)                ; List of tags to apply style to
        (attrs nil)                     ; List of name/value pairs
-       (att nil)
-       (cur nil)
-       (val nil)
        (device-type nil)
-       (purl (url-view-url t))
+       (css--purl (url-view-url t))
        (pobj url-current-object)
        (active-device-types (css-active-device-types (selected-device)))
        (sheet inherit))
     (if (not sheet)
        (setq sheet (make-hash-table :size 13 :test 'eq)))
-    (save-excursion
-      (set-buffer (generate-new-buffer " *style*"))
+    (with-current-buffer (generate-new-buffer " *style*")
       (setq url-current-object pobj)
       (set-syntax-table css-syntax-table)
       (erase-buffer)
@@ -1027,7 +997,7 @@ For a terminal frame, the value is always 1."
              nil
            (setq attrs (css-parse-args (1+ save-pos) (point)))
            (skip-chars-forward "}\r\n")
-           (css-store-rule attrs applies-to))
+           (css-store-rule attrs applies-to sheet))
          )
         )
        (skip-chars-forward " \t\r\n"))
@@ -1062,34 +1032,32 @@ For a terminal frame, the value is always 1."
            "# This is a mixture of the default stylesheet and any\n"
            "# styles specified by the document.  The rules are in no\n"
            "# particular order.\n\n")
-    (let (tmp cur goal-col)
+    (let (tmp cur)
       (maphash
-       (function
-       (lambda (k v)
-         (while v
-           (setq cur (pop v))
-           (insert (css-rule-name (car cur)))
-           (insert " { ")
-           (setq goal-col (point))
-           (insert "\n")
-           ;; Display the rules
-           (setq tmp (cdr cur))
-           (let (prop val)
-             (while tmp
-               (setq prop (caar tmp)
-                     val (cdar tmp)
-                     tmp (cdr tmp))
-               (case (get prop 'css-type)
-                 (symbol-list
-                  (setq val (mapconcat 'symbol-name val ",")))
-                 (weight
-                  (setq val (substring (symbol-name val) 1 nil)))
-                 (otherwise
-                  nil)
-                 )
-               (insert (format "  %s: %s;\n" prop val))))
-           (insert "}\n\n");
-           )))
+       (lambda (_k v)
+         (while v
+           (setq cur (pop v))
+           (insert (css-rule-name (car cur)))
+           (insert " { ")
+           (insert "\n")
+           ;; Display the rules
+           (setq tmp (cdr cur))
+           (let (prop val)
+             (while tmp
+               (setq prop (caar tmp)
+                     val (cdar tmp)
+                     tmp (cdr tmp))
+               (case (get prop 'css-type)
+                 (symbol-list
+                  (setq val (mapconcat 'symbol-name val ",")))
+                 (weight
+                  (setq val (substring (symbol-name val) 1 nil)))
+                 (otherwise
+                  nil)
+                 )
+               (insert (format "  %s: %s;\n" prop val))))
+           (insert "}\n\n")             ;
+           ))
        sheet))))
 
 (provide 'css)
diff --git a/descrip.mms b/descrip.mms
deleted file mode 100644
index 8f5d53b..0000000
--- a/descrip.mms
+++ /dev/null
@@ -1,71 +0,0 @@
-# This file kindly written by Richard Levitte - GNU on VMS hacker
-#                                               <address@hidden>
-#
-# Hacked upon by Bill Perry <address@hidden>, whose VMS experiences
-# are a thing of the past.  Let me know if this works or not.
-
-# where the w3 lisp files should go
-prefix  = gnu_root
-lispdir = $(prefix):[emacs.site-lisp]
-confdir = $(prefix):[emacs.w3]
-
-DOTEMACS= $(prefix):[lib.emacs.site-lisp]default.el
-SUBDIRS =lisp texi etc
-
-RM        = delete
-MKDIR    = create/dir
-ECHO      = write sys$output
-
-.PHONY: $(SUBDIRS) dotemacs
-
-all:   w3 info
-
-w3 fast:
-       set def [.lisp]
-       mms $@
-       set def [-]
-
-html info dvi:
-       set def [.texi]
-       mms $@
-       set def [-]
-
-install: all dotemacs
-        set def [.lisp]
-        mms install
-        set def [-.texi]
-        mms install
-        set def [-.etc]
-        mms install
-        set def [-]
-
-distclean: clean
-        set def [.lisp]
-        mms distclean
-        set def [-.texi]
-        mms distclean
-        set def [-.etc]
-        mms distclean
-        set def [-]
-        $(RM) config.* Makefile
-
-clean:
-        set def [.lisp]
-        mms clean
-        set def [-.texi]
-        mms clean
-        set def [-.etc]
-        mms clean
-        set def [-]
-
-dotemacs:
-       @if (grep ";;; Emacs/W3 Configuration" $(DOTEMACS) 2>&1) >/dev/null; 
then \
-               echo Emacs/W3 setup already exists in $(DOTEMACS);      \
-       else                                                            \
-               test -d `dirname $(DOTEMACS)` || mkdir -p `dirname 
$(DOTEMACS)`; \
-               (echo >> $(DOTEMACS)); \
-               (echo ";;; Emacs/W3 Configuration" >> $(DOTEMACS)); \
-               (echo "(setq load-path (cons \"$(lispdir)\" load-path))" >> 
$(DOTEMACS)); \
-               (echo "(require 'w3-autoloads \"w3/auto-autoloads\")" >> 
$(DOTEMACS)); \
-               echo "Added Emacs/W3 setup to $(DOTEMACS)"; \
-       fi
diff --git a/devices.el b/devices.el
index 72d842d..44da60a 100644
--- a/devices.el
+++ b/devices.el
@@ -1,36 +1,36 @@
-;;; devices.el -- XEmacs device API emulation
+;;; devices.el --- XEmacs device API emulation
+
+;; Copyright (c) 1996-1999, 2013 Free Software Foundation, Inc.
+
 ;; Author: $Author: wmperry $
 ;; Created: $Date: 2002/02/01 17:42:48 $
-;; Version: $Revision: 1.4 $
 ;; Keywords: 
 
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; Copyright (c) 1996 by William M. Perry <address@hidden>
-;;; Copyright (c) 1996 - 1999 Free Software Foundation, Inc.
-;;;
-;;; This file is part of GNU Emacs.
-;;;
-;;; GNU Emacs is free software; you can redistribute it and/or modify
-;;; it under the terms of the GNU General Public License as published by
-;;; the Free Software Foundation; either version 2, or (at your option)
-;;; any later version.
-;;;
-;;; GNU Emacs is distributed in the hope that it will be useful,
-;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;;; GNU General Public License for more details.
-;;;
-;;; You should have received a copy of the GNU General Public License
-;;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;;; Boston, MA 02111-1307, USA.
-;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; This file is part of GNU Emacs.
+;;
+;; GNU Emacs is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 3, or (at your option)
+;; any later version.
+;;
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
+
+;;; Commentary:
 
 ;; This is a complete implementation of all the device-* functions found in
 ;; XEmacs 19.14.  A 'device' for Emacs 19 is just a frame, from which we can
 ;; determine the connection to an X display, etc.
 
+;;; Code:
+
 (eval-when-compile
   (require 'cl)
   (when (featurep 'xemacs)
diff --git a/docomp.el b/docomp.el
deleted file mode 100644
index 1fbab63..0000000
--- a/docomp.el
+++ /dev/null
@@ -1,88 +0,0 @@
-;;; First things first - if they do not have the WIDGETDIR environment
-;;; variable set, choke, scream, and die.
-(require 'cl)
-
-(setq srcdir (or (getenv "W3SRCDIR") "."))
-
-(push srcdir load-path)
-(push (or (getenv "GNUSDIR") (expand-file-name "../../gnus/lisp/" srcdir))
-      load-path)
-(push (or (getenv "URLDIR") (expand-file-name "../../url/lisp/" srcdir))
-      load-path)
-
-(setq max-specpdl-size (* 1000 max-specpdl-size)
-      max-lisp-eval-depth (* 1000 max-lisp-eval-depth))
-
-;; If we are building w3 in a different directory than the source
-;; directory, we must read *.el from source directory and write *.elc
-;; into the building directory.  For that, we define this function
-;; before loading bytecomp.  Bytecomp doesn't overwrite this function.
-(defun byte-compile-dest-file (filename)
-  "Convert an Emacs Lisp source file name to a compiled file name.
- In addition, remove directory name part from FILENAME."
-  (setq filename (byte-compiler-base-file-name filename))
-  (setq filename (file-name-sans-versions filename))
-  (setq filename (file-name-nondirectory filename))
-  (if (memq system-type '(win32 w32 mswindows windows-nt))
-      (setq filename (downcase filename)))
-  (cond ((eq system-type 'vax-vms)
-        (concat (substring filename 0 (string-match ";" filename)) "c"))
-       ((string-match emacs-lisp-file-regexp filename)
-        (concat (substring filename 0 (match-beginning 0)) ".elc"))
-       (t (concat filename ".elc"))))
-
-(require 'bytecomp)
-
-;; Emacs 19 byte compiler complains about too much stuff by default.
-;; Turn off most of the warnings here.
-(setq byte-compile-warnings nil
-      byte-optimize t)
-
-(defun compile-it ()
-  (let ((files (directory-files "." t ".*.[eE][lL]$" nil)))
-    (while files
-      (if (and (not (file-directory-p (car files)))
-              (not (string-match "w3-sysdp.el$" (car files))))
-         (byte-compile-file (car files)))
-      (setq files (cdr files)))))
-
-(defun emacs-build-autoloads (dir autofile)
-  (require 'autoload)
-  (let ((files (directory-files dir t ".*.[eE][lL]$" nil)))
-    (save-excursion
-      (find-file autofile)
-      (erase-buffer)
-      (mapcar 'generate-file-autoloads files)
-      (goto-char (point-max))
-      (insert "\n(provide 'w3-autoloads)\n")
-      (save-buffer)
-      (kill-buffer (current-buffer))))
-
-  ;; Now we need to munge that file to deal with
-  (find-file "w3-auto.el")
-  (erase-buffer)
-  (insert-file-contents autofile)
-  (goto-char (point-min))
-  (while (re-search-forward "w3-autoloads" nil t)
-      (replace-match "w3-auto"))
-  (save-buffer)
-  (kill-buffer (current-buffer))
-  (kill-emacs))
-
-(defun emacs-batch-build-autoloads ()
-  (emacs-build-autoloads (nth 0 command-line-args-left)
-                        (nth 1 command-line-args-left)))
-
-(defun emacs-build-custom-load (dir)
-  (let ((foundit t))
-    (save-excursion
-      (condition-case ()
-         (load-library "cus-dep")
-       (error (setq foundit nil)))
-      (if foundit
-         (let ((command-line-args-left (list dir)))
-           (custom-make-dependencies))
-       (write-region "\n" nil "cus-load.el")))))
-
-(defun emacs-batch-build-custom-load ()
-  (emacs-build-custom-load (car command-line-args-left)))
diff --git a/etc/Makefile.in b/etc/Makefile.in
deleted file mode 100644
index 7e95cf9..0000000
--- a/etc/Makefile.in
+++ /dev/null
@@ -1,42 +0,0 @@
-srcdir  = @srcdir@
-prefix  = @prefix@
-datadir = @datadir@
-top_srcdir = @top_srcdir@
-
-EMACS     = @EMACS@
-INSTALL   = @INSTALL@
-RM        = rm -f
-
-TARGETS = default.css
-
-all:
-
-install:
-       ( if [ ! -d $(datadir) ]; then mkdir -p $(datadir); fi )
-       for x in $(TARGETS); do                                 \
-               if [ -f $$x ]; then                             \
-                       $(INSTALL) $$x $(datadir);              \
-               else                                            \
-                       $(INSTALL) $(srcdir)/$$x $(datadir);    \
-               fi                                              \
-       done
-
-distclean: clean
-       $(RM) Makefile
-
-clean:
-       $(RM) *.orig *.rej *~
-
-version: $(TARGETS) descrip.mms clean 
-       test -d $(DIRNAME)/etc || mkdir -p $(DIRNAME)/etc
-       for x in $(TARGETS) Makefile.in; do $(INSTALL) -m 644 $$x 
$(DIRNAME)/etc; done
-
-# Automatic makefile rebuilding, etc.
-Makefile: $(srcdir)/Makefile.in ../config.status
-       ( cd .. ; CONFIG_FILES=etc/Makefile ./config.status )
-
-$(top_srcdir)/configure: $(top_srcdir)/configure.in $(top_srcdir)/aclocal.m4
-       cd $(top_srcdir) && autoreconf
-
-../config.status: $(top_srcdir)/configure
-       cd .. && ./config.status --recheck
diff --git a/etc/descrip.mms b/etc/descrip.mms
deleted file mode 100644
index 980c39d..0000000
--- a/etc/descrip.mms
+++ /dev/null
@@ -1,25 +0,0 @@
-# where the w3 lisp files should go
-prefix  = gnu_root
-datadir = $(prefix):[lib]
-confdir = $(prefix):[lib.emacs.w3]
-
-ECHO       = write sys$output
-RM         = delete
-MKDIR      = create/dir
-
-############## no user servicable parts beyond this point ###################
-TARGETS = default.css
-
-all: $(TARGETS)
-
-install:
-       if f$parse("$(confir)") .eqs. "" then $(MKDIR) $(confdir)
-       copy/log *.info* $(confdir)
-       - purge/log $(confdir)
-
-distclean: clean
-       $(RM) Makefile
-
-clean:
-       $(RM) *.dvi *.info* *.html
-
diff --git a/font.el b/font.el
index 08df0b1..11e47a4 100644
--- a/font.el
+++ b/font.el
@@ -1,30 +1,29 @@
 ;;; font.el --- New font model
 
+;; Copyright (c) 1996-2001, 2013 Free Software Foundation, Inc.
+
 ;; Author: wmperry
 ;; Maintainer: Bill Perry <address@hidden>
 ;; Created: $Date: 2008/02/04 06:29:13 $
 
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; Copyright (c) 1995, 1996 by William M. Perry <address@hidden>
-;;; Copyright (c) 1996, 97, 98, 99, 2000, 2001 Free Software Foundation, Inc.
-;;;
-;;; This file is part of GNU Emacs.
-;;;
-;;; GNU Emacs is free software; you can redistribute it and/or modify
-;;; it under the terms of the GNU General Public License as published by
-;;; the Free Software Foundation; either version 2, or (at your option)
-;;; any later version.
-;;;
-;;; GNU Emacs is distributed in the hope that it will be useful,
-;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;;; GNU General Public License for more details.
-;;;
-;;; You should have received a copy of the GNU General Public License
-;;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;;; Boston, MA 02111-1307, USA.
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; This file is part of GNU Emacs.
+;;
+;; GNU Emacs is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 3, or (at your option)
+;; any later version.
+;;
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
+
+;;; Code:
 
 (eval-when-compile (require 'cl))
 (require 'devices)
@@ -227,9 +226,11 @@ These are for use in the `weight' field of an X font 
string.")
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;; Utility functions
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defvar font-func)
+
 (defun set-font-style-by-keywords (fontobj styles)
   (make-local-variable 'font-func)
-  (declare (special font-func))
   (if (listp styles)
       (while styles
        (setq font-func (car-safe (cdr-safe (assq (car styles) 
font-style-keywords)))
@@ -542,9 +543,10 @@ These are for use in the `weight' field of an X font 
string.")
          (font-set-font-encoding retval (match-string 2 fontname)))
        retval))))
 
+(defvar device-fonts-cache)
+
 (defun x-font-families-for-device (&optional device no-resetp)
   (ignore-errors (require 'x-font-menu))
-  (declare (special device-fonts-cache))
   (or device (setq device (selected-device)))
   (if (boundp 'device-fonts-cache)
       (let ((menu (or (cdr-safe (assq device device-fonts-cache)))))
@@ -676,14 +678,14 @@ These are for use in the `weight' field of an X font 
string.")
 ;;; The window-system dependent code (mswindows-style)
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
-;;; mswindows fonts look like:
-;;;    fontname[:[weight][ style][:pointsize[:effects]]][:charset]
-;;; A minimal mswindows font spec looks like:
-;;;    Courier New
-;;; A maximal mswindows font spec looks like:
-;;;    Courier New:Bold Italic:10:underline strikeout:western
-;;; Missing parts of the font spec should be filled in with these values:
-;;;    Courier New:Regular:10::western
+;; mswindows fonts look like:
+;;     fontname[:[weight][ style][:pointsize[:effects]]][:charset]
+;; A minimal mswindows font spec looks like:
+;;     Courier New
+;; A maximal mswindows font spec looks like:
+;;     Courier New:Bold Italic:10:underline strikeout:western
+;; Missing parts of the font spec should be filled in with these values:
+;;     Courier New:Regular:10::western
 ;;  "^[a-zA-Z ]+:[a-zA-Z ]*:[0-9]+:[a-zA-Z ]*:[a-zA-Z 0-9]*$"
 (defvar font-mswindows-font-regexp
   (let
@@ -864,45 +866,68 @@ These are for use in the `weight' field of an MS-Windows 
font string.")
 ;;; can deal with either syntax.
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;; ###autoload
-(defun font-set-face-font (&optional face font &rest args)
-  (cond
-   ((and (vectorp font) (= (length font) 12))
-    (let ((font-name (font-create-name font)))
-      (set-face-property face 'font-specification font)
+(defalias 'font-set-face-font
+  (if (featurep 'xemacs)
+      (lambda (&optional face font &rest args)
+        (cond
+         ((and (vectorp font) (= (length font) 12))
+          (let ((font-name (font-create-name font)))
+            (set-face-property face 'font-specification font)
+            (cond
+             ((null font-name)         ; No matching font!
+              nil)
+             ((listp font-name)                ; For TTYs
+              (let (cur)
+                (while font-name
+                  (setq cur (car font-name)
+                        font-name (cdr font-name))
+                  (apply 'set-face-property face (car cur) (cdr cur) args))))
+             ((featurep 'xemacs)
+              (apply 'set-face-font face font-name args)
+              (apply 'set-face-underline-p face (font-underline-p font) args)
+              (if (and (or (font-smallcaps-p font) (font-bigcaps-p font))
+                       (fboundp 'set-face-display-table))
+                  (apply 'set-face-display-table
+                         face font-caps-display-table args))
+              (apply 'set-face-property face 'strikethru (or
+                                                          (font-linethrough-p 
font)
+                                                          (font-strikethru-p 
font))
+                     args))
+             (t
+              (condition-case nil
+                  (apply 'set-face-font face font-name args)
+                (error
+                 (let ((args (car-safe args)))
+                   (and (or (font-bold-p font)
+                            (memq (font-weight font) '(:bold :demi-bold)))
+                        (make-face-bold face args t))
+                   (and (font-italic-p font) (make-face-italic face args t)))))
+              (apply 'set-face-underline-p face (font-underline-p font) 
args)))))
+         (t
+          ;; Let the original set-face-font signal any errors
+          (set-face-property face 'font-specification nil)
+          (apply 'set-face-font face font args))))
+    
+    ;; GNU Emacs.
+    (lambda (&optional face font &rest args)
       (cond
-       ((null font-name)               ; No matching font!
-       nil)
-       ((listp font-name)              ; For TTYs
-       (let (cur)
-         (while font-name
-           (setq cur (car font-name)
-                 font-name (cdr font-name))
-           (apply 'set-face-property face (car cur) (cdr cur) args))))
-       ((featurep 'xemacs)
-       (apply 'set-face-font face font-name args)
-       (apply 'set-face-underline-p face (font-underline-p font) args)
-       (if (and (or (font-smallcaps-p font) (font-bigcaps-p font))
-                (fboundp 'set-face-display-table))
-           (apply 'set-face-display-table
-                  face font-caps-display-table args))
-       (apply 'set-face-property face 'strikethru (or
-                                                   (font-linethrough-p font)
-                                                   (font-strikethru-p font))
-              args))
+       ((and (vectorp font) (= (length font) 12))
+        (set-face-property face 'font-specification font)
+        (set-face-attribute
+         face nil
+         :underline (font-underline-p font)
+         :weight (or (cdr-safe (assoc (font-weight font)
+                                      font-emacs21-weight-mappings))
+                     'normal))
+        (if (font-find-available-family font)
+            (set-face-attribute :family (font-find-available-family font)))
+        (if (and (font-size font)
+                 (/= 0 (font-size font)))
+            (set-face-attribute face nil
+                                :height (* 10 (font-spatial-to-canonical 
(font-size font))))))
        (t
-       (condition-case nil
-           (apply 'set-face-font face font-name args)
-         (error
-          (let ((args (car-safe args)))
-            (and (or (font-bold-p font)
-                     (memq (font-weight font) '(:bold :demi-bold)))
-                 (make-face-bold face args t))
-            (and (font-italic-p font) (make-face-italic face args t)))))
-       (apply 'set-face-underline-p face (font-underline-p font) args)))))
-   (t
-    ;; Let the original set-face-font signal any errors
-    (set-face-property face 'font-specification nil)
-    (apply 'set-face-font face font args))))
+        (set-face-property face 'font-specification nil)
+        (apply 'set-face-font face font args))))))
 
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -939,29 +964,6 @@ These are for use in the `weight' field of an MS-Windows 
font string.")
              done (try-font-name font-name device))))
     (and done cur-family)))
 
-(defun font-set-face-font-emacs21 (&optional face font &rest args)
-  (cond
-   ((and (vectorp font) (= (length font) 12))
-    (set-face-property face 'font-specification font)
-    (set-face-attribute
-     face nil
-     :underline (font-underline-p font)
-     :weight (or (cdr-safe (assoc (font-weight font)
-                                 font-emacs21-weight-mappings))
-                'normal))
-    (if (font-find-available-family font)
-       (set-face-attribute :family (font-find-available-family font)))
-    (if (and (font-size font)
-            (/= 0 (font-size font)))
-       (set-face-attribute face nil
-                           :height (* 10 (font-spatial-to-canonical (font-size 
font))))))
-   (t
-    (set-face-property face 'font-specification nil)
-    (apply 'set-face-font face font args))))
-
-(if (and (not (featurep 'xemacs))
-        (>= emacs-major-version 21))
-    (defalias 'font-set-face-font 'font-set-face-font-emacs21))
 
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
diff --git a/images.el b/images.el
index 83892b7..44df078 100644
--- a/images.el
+++ b/images.el
@@ -1,30 +1,27 @@
 ;;; images.el --- Automatic image converters
+
+;; Copyright (c) 1996-1999, 2007, 2013 Free Software Foundation Inc.
+
 ;; Author: $Author: legoscia $
 ;; Created: $Date: 2007/11/15 12:22:34 $
-;; Version: $Revision: 1.6 $
 ;; Keywords: images
 
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; Copyright (c) 1996 - 1999, 2007 Free Software Foundation Inc.
-;;; Copyright (c) 1995 - 1996 by William M. Perry <address@hidden>
-;;;
-;;; This file is part of GNU Emacs.
-;;;
-;;; GNU Emacs is free software; you can redistribute it and/or modify
-;;; it under the terms of the GNU General Public License as published by
-;;; the Free Software Foundation; either version 2, or (at your option)
-;;; any later version.
-;;;
-;;; GNU Emacs is distributed in the hope that it will be useful,
-;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;;; GNU General Public License for more details.
-;;;
-;;; You should have received a copy of the GNU General Public License
-;;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;;; Boston, MA 02111-1307, USA.
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; This file is part of GNU Emacs.
+;;
+;; GNU Emacs is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 3, or (at your option)
+;; any later version.
+;;
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
 
 (defvar image-temp-stack nil "Do no touch - internal storage.")
 (defvar image-converters nil "Storage for the image converters.")
@@ -138,20 +135,20 @@ to a suitable internal image format will be carried out."
             (chain (cdr-safe winner))
             )
        (if chain
-           (save-excursion
-             (set-buffer (generate-new-buffer " *image-conversion*"))
+           (with-current-buffer (generate-new-buffer " *image-conversion*")
              (erase-buffer)
+              (set-buffer-multibyte nil)
              (insert data)
              (while chain
                (cond
                 ((stringp (car chain))
-                 (let ((file-coding-system 'binary))
-                   (call-process-region
-                    (point-min) (point-max)
-                    shell-file-name t
-                    (list (current-buffer) nil)
-                    shell-command-switch
-                    (car chain))))
+                  (call-process-region
+                   (point-min) (point-max)
+                   shell-file-name t
+                   (list (current-buffer) nil)
+                   ;; FIXME: Shouldn't there be a nil before this arg?
+                   shell-command-switch
+                   (car chain)))
                 ((and (symbolp (car chain)) (fboundp (car chain)))
                  (funcall (car chain) (point-min) (point-max))))
                (setq chain (cdr chain)))
diff --git a/install-sh b/install-sh
deleted file mode 100755
index ab74c88..0000000
--- a/install-sh
+++ /dev/null
@@ -1,238 +0,0 @@
-#!/bin/sh
-#
-# install - install a program, script, or datafile
-# This comes from X11R5.
-#
-# Calling this script install-sh is preferred over install.sh, to prevent
-# `make' implicit rules from creating a file called install from it
-# when there is no Makefile.
-#
-# This script is compatible with the BSD install script, but was written
-# from scratch.
-#
-
-
-# set DOITPROG to echo to test this script
-
-# Don't use :- since 4.3BSD and earlier shells don't like it.
-doit="${DOITPROG-}"
-
-
-# put in absolute paths if you don't have them in your path; or use env. vars.
-
-mvprog="${MVPROG-mv}"
-cpprog="${CPPROG-cp}"
-chmodprog="${CHMODPROG-chmod}"
-chownprog="${CHOWNPROG-chown}"
-chgrpprog="${CHGRPPROG-chgrp}"
-stripprog="${STRIPPROG-strip}"
-rmprog="${RMPROG-rm}"
-mkdirprog="${MKDIRPROG-mkdir}"
-
-tranformbasename=""
-transform_arg=""
-instcmd="$mvprog"
-chmodcmd="$chmodprog 0755"
-chowncmd=""
-chgrpcmd=""
-stripcmd=""
-rmcmd="$rmprog -f"
-mvcmd="$mvprog"
-src=""
-dst=""
-dir_arg=""
-
-while [ x"$1" != x ]; do
-    case $1 in
-       -c) instcmd="$cpprog"
-           shift
-           continue;;
-
-       -d) dir_arg=true
-           shift
-           continue;;
-
-       -m) chmodcmd="$chmodprog $2"
-           shift
-           shift
-           continue;;
-
-       -o) chowncmd="$chownprog $2"
-           shift
-           shift
-           continue;;
-
-       -g) chgrpcmd="$chgrpprog $2"
-           shift
-           shift
-           continue;;
-
-       -s) stripcmd="$stripprog"
-           shift
-           continue;;
-
-       -t=*) transformarg=`echo $1 | sed 's/-t=//'`
-           shift
-           continue;;
-
-       -b=*) transformbasename=`echo $1 | sed 's/-b=//'`
-           shift
-           continue;;
-
-       *)  if [ x"$src" = x ]
-           then
-               src=$1
-           else
-               # this colon is to work around a 386BSD /bin/sh bug
-               :
-               dst=$1
-           fi
-           shift
-           continue;;
-    esac
-done
-
-if [ x"$src" = x ]
-then
-       echo "install:  no input file specified"
-       exit 1
-else
-       true
-fi
-
-if [ x"$dir_arg" != x ]; then
-       dst=$src
-       src=""
-       
-       if [ -d $dst ]; then
-               instcmd=:
-       else
-               instcmd=mkdir
-       fi
-else
-
-# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
-# might cause directories to be created, which would be especially bad 
-# if $src (and thus $dsttmp) contains '*'.
-
-       if [ -f $src -o -d $src ]
-       then
-               true
-       else
-               echo "install:  $src does not exist"
-               exit 1
-       fi
-       
-       if [ x"$dst" = x ]
-       then
-               echo "install:  no destination specified"
-               exit 1
-       else
-               true
-       fi
-
-# If destination is a directory, append the input filename; if your system
-# does not like double slashes in filenames, you may need to add some logic
-
-       if [ -d $dst ]
-       then
-               dst="$dst"/`basename $src`
-       else
-               true
-       fi
-fi
-
-## this sed command emulates the dirname command
-dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
-
-# Make sure that the destination directory exists.
-#  this part is taken from Noah Friedman's mkinstalldirs script
-
-# Skip lots of stat calls in the usual case.
-if [ ! -d "$dstdir" ]; then
-defaultIFS='   
-'
-IFS="${IFS-${defaultIFS}}"
-
-oIFS="${IFS}"
-# Some sh's can't handle IFS=/ for some reason.
-IFS='%'
-set - `echo ${dstdir} | sed -e 's@/@address@hidden' -e 'address@hidden@/@'`
-IFS="${oIFS}"
-
-pathcomp=''
-
-while [ $# -ne 0 ] ; do
-       pathcomp="${pathcomp}${1}"
-       shift
-
-       if [ ! -d "${pathcomp}" ] ;
-        then
-               $mkdirprog "${pathcomp}"
-       else
-               true
-       fi
-
-       pathcomp="${pathcomp}/"
-done
-fi
-
-if [ x"$dir_arg" != x ]
-then
-       $doit $instcmd $dst &&
-
-       if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi &&
-       if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi &&
-       if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi &&
-       if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi
-else
-
-# If we're going to rename the final executable, determine the name now.
-
-       if [ x"$transformarg" = x ] 
-       then
-               dstfile=`basename $dst`
-       else
-               dstfile=`basename $dst $transformbasename | 
-                       sed $transformarg`$transformbasename
-       fi
-
-# don't allow the sed command to completely eliminate the filename
-
-       if [ x"$dstfile" = x ] 
-       then
-               dstfile=`basename $dst`
-       else
-               true
-       fi
-
-# Make a temp file name in the proper directory.
-
-       dsttmp=$dstdir/#inst.$$#
-
-# Move or copy the file name to the temp name
-
-       $doit $instcmd $src $dsttmp &&
-
-       trap "rm -f ${dsttmp}" 0 &&
-
-# and set any options; do chmod last to preserve setuid bits
-
-# If any of these fail, we abort the whole thing.  If we want to
-# ignore errors from any of these, just make sure not to ignore
-# errors from the above "$doit $instcmd $src $dsttmp" command.
-
-       if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi &&
-       if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi &&
-       if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi &&
-       if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi &&
-
-# Now rename the file to the real destination.
-
-       $doit $rmcmd -f $dstdir/$dstfile &&
-       $doit $mvcmd $dsttmp $dstdir/$dstfile 
-
-fi &&
-
-
-exit 0
diff --git a/ssl.el b/ssl.el
index 67e2f75..93c6f16 100644
--- a/ssl.el
+++ b/ssl.el
@@ -1,29 +1,29 @@
-;;; ssl.el,v --- ssl functions for Emacsen without them builtin
+;;; ssl.el,v --- SSL functions for Emacsen without them builtin
+
+;; Copyright (c) 1996-2001, 2008, 2013 Free Software Foundation, Inc.
+
 ;; Author: William M. Perry <address@hidden>
 ;; $Revision: 1.5 $
 ;; Keywords: comm
 
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; Copyright (c) 1996, 97, 98, 99, 2001, 2008 Free Software Foundation, Inc.
-;;; Copyright (c) 1995, 1996 by William M. Perry <address@hidden>
-;;;
-;;; This file is part of GNU Emacs.
-;;;
-;;; GNU Emacs is free software; you can redistribute it and/or modify
-;;; it under the terms of the GNU General Public License as published by
-;;; the Free Software Foundation; either version 2, or (at your option)
-;;; any later version.
-;;;
-;;; GNU Emacs is distributed in the hope that it will be useful,
-;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;;; GNU General Public License for more details.
-;;;
-;;; You should have received a copy of the GNU General Public License
-;;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;;; Boston, MA 02111-1307, USA.
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; This file is part of GNU Emacs.
+;;
+;; GNU Emacs is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 3, or (at your option)
+;; any later version.
+;;
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
+
+;;; Code:
 
 (eval-when-compile (require 'cl))
 (require 'url)                         ; for `url-configuration-directory'
@@ -79,14 +79,14 @@ This means a directory of pem encoded certificates with 
hash symlinks."
   '("s_client"
     "-quiet"
     "-host" host
-    "-port" service
+    "-port" port
     "-verify" (int-to-string ssl-certificate-verification-policy)
     "-CApath" ssl-certificate-directory
     )
   "*Arguments that should be passed to the program `ssl-program-name'.
 This should be used if your SSL program needs command line switches to
 specify any behaviour (certificate file locations, etc).
-The special symbols 'host and 'port may be used in the list of arguments
+The special symbols `host' and `port' may be used in the list of arguments
 and will be replaced with the hostname and service/port that will be connected
 to."
   :group 'ssl
@@ -111,8 +111,7 @@ Maybe a way of passing a file should be implemented."
                             (base64-encode-string der)
                             "\n-----END CERTIFICATE-----\n"))
        (exit-code 0))
-    (save-excursion
-      (set-buffer (get-buffer-create " *openssl*"))
+    (with-current-buffer (get-buffer-create " *openssl*")
       (erase-buffer)
       (insert certificate)
       (setq exit-code
@@ -209,10 +208,13 @@ Third arg is name of the host to connect to, or its IP 
address.
 Fourth arg SERVICE is name of the service desired, or an integer
 specifying a port number to connect to."
   (if (integerp service) (setq service (int-to-string service)))
+  (defvar port) (defvar host) (defvar service)
   (let* ((process-connection-type nil)
+         (host host)
+         (service service)
         (port service)
-        (proc (eval `(start-process name buffer ,@(ssl-get-command)))))
-    (process-kill-without-query proc)
+        (proc (eval `(start-process ',name ',buffer ,@(ssl-get-command)))))
+    (set-process-query-on-exit-flag proc nil)
     proc))
 
 (provide 'ssl)
diff --git a/url-hotlist.el b/url-hotlist.el
index 4a9ab06..936e362 100644
--- a/url-hotlist.el
+++ b/url-hotlist.el
@@ -1,29 +1,29 @@
 ;;; url-hotlist.el --- URL interface to bookmarks
+
+;; Copyright (c) 1999, 2013 Free Software Foundation, Inc.
+
 ;; Author: $Author: wmperry $
 ;; Created: $Date: 1999/12/05 08:35:52 $
-;; Version: $Revision: 1.1 $
 ;; Keywords: faces, help, comm, news, mail, processes, mouse, hypermedia
 
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; Copyright (c) 1999 Free Software Foundation, Inc.
-;;;
-;;; This file is part of GNU Emacs.
-;;;
-;;; GNU Emacs is free software; you can redistribute it and/or modify
-;;; it under the terms of the GNU General Public License as published by
-;;; the Free Software Foundation; either version 2, or (at your option)
-;;; any later version.
-;;;
-;;; GNU Emacs is distributed in the hope that it will be useful,
-;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;;; GNU General Public License for more details.
-;;;
-;;; You should have received a copy of the GNU General Public License
-;;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;;; Boston, MA 02111-1307, USA.
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; This file is part of GNU Emacs.
+;;
+;; GNU Emacs is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 3, or (at your option)
+;; any later version.
+;;
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
+
+;;; Code:
 
 (require 'url-util)
 (require 'url-parse)
@@ -40,7 +40,7 @@
    (t
     ;; A submenu
     (insert " <dl>\n   <dt><b>" (car node) "</b>\n")
-    (mapc 'url-hotlist-html-generator (cdr node))
+    (mapc #'url-hotlist-html-generator (cdr node))
     (insert " </dl>\n"))))
 
 (defun url-hotlist (url)
@@ -52,8 +52,7 @@
        (setq action (substring action 0 (match-beginning 0))
              query-args (url-parse-query-string (substring (url-filename url) 
(match-end 0)) t)))
     (setq func (intern (downcase (format "url-hotlist-%s" action))))
-    (save-excursion
-      (set-buffer (generate-new-buffer " *w3-hotlist-url*"))
+    (with-current-buffer (generate-new-buffer " *w3-hotlist-url*")
       (insert "Content-type: text/html\n\n")
       (if (fboundp func)
          (funcall func query-args)
@@ -69,20 +68,19 @@
                "</html>\n"))
       (current-buffer))))
 
-(defun url-hotlist-view (query-args)
+(defun url-hotlist-view (_query-args)
   (insert "<html>\n"
          " <head>\n"
          "  <title>Hotlist View</title>\n"
          " </head>\n"
          " <body>\n")
-  (mapc 'url-hotlist-html-generator w3-hotlist)
+  (mapc #'url-hotlist-html-generator w3-hotlist)
   (insert " </body>\n"
          "</html>\n"))  
 
 (defun url-hotlist-search (query-args)
   (let ((regexp (cdr-safe (assoc "regexp" query-args)))
-       (hot-alist (w3-hot-convert-to-alist w3-hotlist))
-       (matches nil))
+       (hot-alist (w3-hot-convert-to-alist w3-hotlist)))
     (insert "<html>\n"
            " <head>\n"
            "  <title>Hotlist search results</title>\n"
@@ -90,14 +88,15 @@
            " <body>\n")
     (if (not regexp)
        (insert "  <h3>Malformed search URL</h3>\n")
-      (insert "  <p>Search results for:<br> <tt>" (mapconcat 'identity regexp 
"<br>\n")
+      (insert "  <p>Search results for:<br> <tt>"
+              (mapconcat #'identity regexp "<br>\n")
              "</tt></h3>\n"
              "  <ul>\n")
-      (mapc (lambda (node)
-             (mapc (lambda (r)
-                     (if (string-match r (car node))
-                         (insert (format "   <li> <a href=\"%s\">%s</a>\n" 
(cdr node) (car node))))) regexp))
-           hot-alist)
+      (dolist (node hot-alist)
+        (dolist (r regexp)
+          (if (string-match r (car node))
+              (insert (format "   <li> <a href=\"%s\">%s</a>\n"
+                              (cdr node) (car node))))))
       (insert "  </ul>\n"))
     (insert " </body>\n"
            "</html>\n")))
diff --git a/vmsloadup.el b/vmsloadup.el
deleted file mode 100644
index 6537ea7..0000000
--- a/vmsloadup.el
+++ /dev/null
@@ -1,3 +0,0 @@
-(load "./docomp.el")
-(load "./w3-vars.el")
-(load "./url.el")
diff --git a/w3-cfg.el.in b/w3-cfg.el.in
deleted file mode 100644
index 52c20d4..0000000
--- a/w3-cfg.el.in
+++ /dev/null
@@ -1,57 +0,0 @@
-;;; w3-cfg.el --- Configuration info from Emacs/W3
-;; Author: $Author: wmperry $
-;; Created: $Date: 1998/12/01 22:12:12 $
-;; Version: $Revision: 1.1 $
-;; Keywords: hypermedia
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; Copyright (c) 1998 Free Software Foundation, Inc.
-;;;
-;;; This file is part of GNU Emacs.
-;;;
-;;; GNU Emacs is free software; you can redistribute it and/or modify
-;;; it under the terms of the GNU General Public License as published by
-;;; the Free Software Foundation; either version 2, or (at your option)
-;;; any later version.
-;;;
-;;; GNU Emacs is distributed in the hope that it will be useful,
-;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;;; GNU General Public License for more details.
-;;;
-;;; You should have received a copy of the GNU General Public License
-;;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;;; Boston, MA 02111-1307, USA.
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-(defconst w3-configuration-data
-  '(
-    (srcdir              . "@srcdir@")
-    (datadir             . "@datadir@")
-    (prefix              . "@prefix@")
-    (infodir             . "@infodir@")
-    (lispdir             . "@lispdir@")
-    (EMACS               . "@EMACS@")
-    (CUSTOM              . "@CUSTOM@")
-    (EMACS_FLAVOR        . "@EMACS_FLAVOR@")
-    (EMACS_VERSION       . "@EMACS_VERSION@")
-    (EMACS_PACKAGE_DIR   . "@EMACS_PACKAGE_DIR@")
-    (XEMACS              . "@XEMACS@")
-    )
-  "Emacs/W3 configuration data.
-This data is from the configuration step in building Emacs/W3, and
-the data may not accurately reflect your current environment.")
-
-(defun w3-configuration-data (option &optional default)
-  (let ((info (or (cdr-safe (assq option w3-configuration-data)) default)))
-    (if (not (stringp info))
-       (setq info (eval info)))
-    (while (string-match "\\$[({]\\([^{(]+\\)[})]" info)
-      (setq info (concat (substring info 0 (match-beginning 0))
-                        (w3-configuration-data (intern (match-string 1 info))
-                                               "")
-                        (substring info (match-end 0)))))
-    info))
-    
-(provide 'w3-cfg)
diff --git a/w3-cfg.nt b/w3-cfg.nt
deleted file mode 100644
index 30d1a4c..0000000
--- a/w3-cfg.nt
+++ /dev/null
@@ -1,59 +0,0 @@
-;;; w3-cfg.el --- Configuration info from Emacs/W3
-;; Author: $Author: wmperry $
-;; Created: $Date: 1998/12/01 22:12:12 $
-;; Version: $Revision: 1.1 $
-;; Keywords: hypermedia
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; Copyright (c) 1998 Free Software Foundation, Inc.
-;;;
-;;; This file is part of GNU Emacs.
-;;;
-;;; GNU Emacs is free software; you can redistribute it and/or modify
-;;; it under the terms of the GNU General Public License as published by
-;;; the Free Software Foundation; either version 2, or (at your option)
-;;; any later version.
-;;;
-;;; GNU Emacs is distributed in the hope that it will be useful,
-;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;;; GNU General Public License for more details.
-;;;
-;;; You should have received a copy of the GNU General Public License
-;;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;;; Boston, MA 02111-1307, USA.
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-(defconst w3-configuration-data
-  '(
-    (srcdir              . ".")
-    (datadir             . data-directory)
-    (prefix              . (expand-file-name (if w3-running-xemacs
-                                                "../../../"
-                                              "../../../../") data-directory))
-    (infodir             . "${prefix}info")
-    (lispdir             . "$(prefix)share/emacs/site-lisp")
-    (EMACS               . "emacs")
-    (EMACS_FLAVOR        . "emacs")
-    (CUSTOM              . (file-name-directory (locate-library "widget")))
-    (EMACS_VERSION       . (format "%d.%d" emacs-major-version 
emacs-minor-version))
-    (EMACS_PACKAGE_DIR   . "")
-    (XEMACS              . (if w3-running-xemacs "yes" "no"))
-    )
-  "Emacs/W3 configuration data.
-This data is from the configuration step in building Emacs/W3, and
-the data may not accurately reflect your current environment.")
-
-(defun w3-configuration-data (option &optional default)
-  (let ((info (or (cdr-safe (assq option w3-configuration-data)) default)))
-    (if (not (stringp info))
-       (setq info (eval info)))
-    (while (string-match "\\$[({]\\([^{(]+\\)[})]" info)
-      (setq info (concat (substring info 0 (match-beginning 0))
-                        (w3-configuration-data (intern (match-string 1 info))
-                                               "")
-                        (substring info (match-end 0)))))
-    info))
-    
-(provide 'w3-cfg)
diff --git a/w3-cus.el b/w3-cus.el
index 989d48f..0ec1b10 100644
--- a/w3-cus.el
+++ b/w3-cus.el
@@ -1,30 +1,29 @@
 ;;; w3-cus.el --- Customization support for Emacs-W3
+
+;; Copyright (c) 1996-1999, 2013 Free Software Foundation, Inc.
+
 ;; Author: $Author: fx $
 ;; Created: $Date: 2001/10/11 12:59:46 $
-;; Version: $Revision: 1.9 $
 ;; Keywords: comm, help, hypermedia
 
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; Copyright (c) 1993 - 1996 by William M. Perry <address@hidden>
-;;; Copyright (c) 1996 - 1999 Free Software Foundation, Inc.
-;;;
-;;; This file is part of GNU Emacs.
-;;;
-;;; GNU Emacs is free software; you can redistribute it and/or modify
-;;; it under the terms of the GNU General Public License as published by
-;;; the Free Software Foundation; either version 2, or (at your option)
-;;; any later version.
-;;;
-;;; GNU Emacs is distributed in the hope that it will be useful,
-;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;;; GNU General Public License for more details.
-;;;
-;;; You should have received a copy of the GNU General Public License
-;;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;;; Boston, MA 02111-1307, USA.
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; This file is part of GNU Emacs.
+;;
+;; GNU Emacs is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 3, or (at your option)
+;; any later version.
+;;
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
+
+;;; Code:
 
 (defgroup w3 '((url custom-group))
   "Emacs-W3 - the web browser of choice."
@@ -93,7 +92,7 @@ default to  the hypertext documentation for W3 at Indiana 
University."
                 (file)))
 
 (defcustom w3-hotlist-file nil
-  "*Hotlist filename.
+  "Hotlist filename.
 This should be the name of a file that is stored in either
 NCSA's Mosaic/X or Netscape/X format.  It is used to keep a listing
 of commonly accessed URL's without having to go through 20 levels of
@@ -115,7 +114,7 @@ explicit encodings for URLs."
 
 ;;; Display related variables
 (defcustom w3-display-frames t
-  "*Fetch frames - can be:
+  "Fetch frames - can be:
 nil            no frame display whatsoever
 'as-links      display frame hyperlinks, but do not fetch them
 'ask           display frame hyperlinks and ask whether to fetch them
@@ -140,7 +139,7 @@ This maps to characters to use as the bullet character."
                       (character :tag "Character"))))
 
 (defcustom w3-echo-link '(title url text name)
-  "*Whether to display the URL of a link when tabbing through links.
+  "Whether to display the URL of a link when tabbing through links.
 Value is a list of one or more of the following symbols:
 
   url    == url of the target
@@ -168,7 +167,7 @@ If nil W3 will use a terminal graphic character if 
possible."
                 (character)))
 
 (defcustom w3-force-conversion-alist nil
-  "*An alist of URL host/filename regexps and coding systems to use for them."
+  "An alist of URL host/filename regexps and coding systems to use for them."
   :group 'w3-display
   :type `(repeat (cons (string :tag "Host / filename")
                       ;; Fixme: Emacs 21 has coding-system :type.
@@ -176,19 +175,19 @@ If nil W3 will use a terminal graphic character if 
possible."
 
 ;;; these four variables control how w3-setup-terminal-chars works
 (defcustom w3-use-terminal-characters nil
-  "*Use terminal graphics characters for drawing tables and rules if 
available."
+  "Use terminal graphics characters for drawing tables and rules if available."
   :group 'w3-display
   :type 'boolean)
 
 (defcustom w3-use-terminal-characters-on-tty nil
-  "*Use terminal graphics characters for tables and rules even on a tty.
+  "Use terminal graphics characters for tables and rules even on a tty.
 This triggers display bugs on both Emacs and XEmacs.
 \(Though it's usually tolerable at least in Emacs.)"
   :group 'w3-display
   :type 'boolean)
 
 (defcustom w3-use-terminal-glyphs nil
-  "*Use glyphs if possible rather than properties for terminal graphics 
characters.
+  "Use glyphs if possible rather than properties for terminal graphics 
characters.
 
 Glyphs are probably more efficient but don't work with the most recent versions
 of XEmacs and there are some cute tricks we can play with text-properties that
@@ -201,14 +200,14 @@ work at all if we're using text-properties)."
                 (const :tag "Use Text Properties" :value nil)))
 
 (defcustom w3-use-unicode-table-characters nil
-  "*Non-nil means use Unicode box-drawing characters for tables if avilable.
+  "Non-nil means use Unicode box-drawing characters for tables if avilable.
 This only works for Emacs 21.  You might wat to turn this off if your
 Unicode font isn't available in appropriate sizes."
   :group 'w3-display
   :type 'boolean)
 
 (defcustom w3-do-incremental-display nil
-  "*Non-nil means do incremental display of pages."
+  "Non-nil means do incremental display of pages."
   :group 'w3-display
   :type 'boolean)
 
@@ -230,7 +229,7 @@ or the links menu, for instance."
 
 ;;; Parsing related variables
 (defcustom w3-debug-html nil
-  "*Non-nil means to gripe about bad HTML."
+  "Non-nil means to gripe about bad HTML."
   :group 'w3-parsing
   :type '(choice (const :tag "HTML Errors" :value t)
                 (const :tag "Errors and stylistic issues" :value style)
@@ -243,7 +242,7 @@ or the links menu, for instance."
 
 ;;; Image related variables
 (defcustom w3-auto-image-alt 'w3-default-image-alt-func
-  "*Whether to create an alt attribute for an image that is missing it.
+  "Whether to create an alt attribute for an image that is missing it.
 If nil, Emacs-W3 will not automatically create an ALT attribute.
 
 If a string, it should be a string suitable for running through format,
@@ -264,7 +263,7 @@ argument, the filename of the graphic that is not loaded."
                                         (featurep 'jpeg)
                                         (featurep 'imagick)
                                         (featurep 'png)))
-  "*Non-nil means delay loading images, not automatically retrieve them."
+  "Non-nil means delay loading images, not automatically retrieve them."
   :group 'w3-images
   :type 'boolean)
 
@@ -307,7 +306,7 @@ the first part as a submenu, followed by the rest of the 
menu."
   :type 'integer)
 
 (defcustom w3-max-menu-width 40
-  "*The maximum width of a pulldown menu choice."
+  "The maximum width of a pulldown menu choice."
   :group 'w3-menus
   :type 'integer)
 
@@ -329,12 +328,12 @@ the first part as a submenu, followed by the rest of the 
menu."
   :type 'sexp)
 
 (defcustom w3-netscape-compatible-comments nil
-  "*Whether to honor netscape-style <! > comments."
+  "Whether to honor netscape-style <! > comments."
   :group 'w3-parsing
   :type 'boolean)
 
 (defcustom w3-notify 'semibully
-  "*Selects the behavior when w3 page is ready.
+  "Selects the behavior when w3 page is ready.
 This variable may have one of the following values:
 
 newframe   -- put the w3 page in its own frame
@@ -366,7 +365,7 @@ Any other value of `w3-notify' is equivalent to `meek'."
                        :value meek)))
 
 (defcustom w3-popup-menu-on-mouse-3 t
-  "*Non-nil value means W3 should provide context-sensitive menus on mouse-3.
+  "Non-nil value means W3 should provide context-sensitive menus on mouse-3.
 A nil value means W3 should not change the binding of mouse-3."
   :group 'w3-display
   :type 'boolean)
@@ -389,38 +388,38 @@ This will also accept:
                 (const :tag "Always ask" :value ask)))
 
 (defcustom w3-right-margin 2
-  "*Default right margin for Emacs-W3 buffers.
+  "Default right margin for Emacs-W3 buffers.
 This amount is subtracted from (window-width) for each new WWW buffer
 and used as the new fill column."
   :group 'w3-display
   :type 'integer)
 
 (defcustom w3-maximum-line-length nil
-  "*Maximum length of a line.
+  "Maximum length of a line.
 If nil, then lines can extend all the way to the window margin."
   :group 'w3-display
   :type '(radio (const :tag "Use all available space" :value nil)
                (integer :tag "Limit to")))
 
 (defcustom w3-track-mouse t
-  "*Non-nil means track the mouse and message the url under the mouse."
+  "Non-nil means track the mouse and message the url under the mouse."
   :group 'w3-display
   :type 'boolean)
 
 (defcustom w3-honor-stylesheets nil
-  "*Whether to let a document specify a CSS stylesheet."
+  "Whether to let a document specify a CSS stylesheet."
   :group 'w3-display
   :type 'boolean)
 
 (defcustom w3-user-colors-take-precedence nil
-  "*Non-nil means don't let a document define certain colors itself.
+  "Non-nil means don't let a document define certain colors itself.
 Like foreground and background colors and pixmaps, color of links and
 visited links, etc."
   :group 'w3-display
   :type 'boolean)
 
 (defcustom w3-user-fonts-take-precedence nil
-  "*Non-nil means don't let a document define certain fonts.
+  "Non-nil means don't let a document define certain fonts.
 Certain fonts can cause problems under Emacs."
   :group 'w3-display
   :type 'boolean)
diff --git a/w3-dired.el b/w3-dired.el
index b56b909..1e459e1 100644
--- a/w3-dired.el
+++ b/w3-dired.el
@@ -1,37 +1,37 @@
 ;;; w3-dired.el --- W3 Dired minor mode
+
+;; Copyright (c) 1996-1999, 2007, 2013 Free Software Foundation, Inc.
+
 ;; Author: Bill Perry <address@hidden>
 ;; Created: $Date: 2007/11/15 12:22:34 $
-;; Version: $Revision: 1.5 $
 ;; Keywords: faces, help, comm, news, mail, processes, mouse, hypermedia
 
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; Copyright (c) 1996 - 1999, 2007 Free Software Foundation, Inc.
-;;;
-;;; This file is part of GNU Emacs.
-;;;
-;;; GNU Emacs is free software; you can redistribute it and/or modify
-;;; it under the terms of the GNU General Public License as published by
-;;; the Free Software Foundation; either version 2, or (at your option)
-;;; any later version.
-;;;
-;;; GNU Emacs is distributed in the hope that it will be useful,
-;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;;; GNU General Public License for more details.
-;;;
-;;; You should have received a copy of the GNU General Public License
-;;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;;; Boston, MA 02111-1307, USA.
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; This is a minor mode for invoking Emacs/W3 from a dired buffer
-;;;
-;;; To enable for all dired buffers, put this in your .emacs file:
-;;;
-;;; (add-hook 'dired-mode-hook 'turn-on-w3-dired)
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; This file is part of GNU Emacs.
+;;
+;; GNU Emacs is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 3, or (at your option)
+;; any later version.
+;;
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
+
+;;; Commentary:
+
+;; This is a minor mode for invoking Emacs/W3 from a dired buffer
+;;
+;; To enable for all dired buffers, put this in your .emacs file:
+;;
+;; (add-hook 'dired-mode-hook 'turn-on-w3-dired)
+
+;;; Code:
 
 ;; Fixme: should we have both this and url-dired?
 
diff --git a/w3-display.el b/w3-display.el
index 851908d..03bc0ac 100644
--- a/w3-display.el
+++ b/w3-display.el
@@ -1,34 +1,33 @@
 ;;; w3-display.el --- W3 display engine
+
+;; Copyright (c) 1996, 97, 98, 99, 2000, 2001, 2007, 2008, 2013 Free Software 
Foundation, Inc.
+
 ;; Author: William M. Perry <address@hidden>
-;; Version: $Revision: 1.51 $
 ;; Keywords: faces, help, hypermedia
 
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; Copyright (c) 1996, 97, 98, 99, 2000, 2001, 2007, 2008 Free Software 
Foundation, Inc.
-;;; Copyright (c) 1996 by William M. Perry <address@hidden>
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;
-;;; This file is part of GNU Emacs.
-;;;
-;;; GNU Emacs is free software; you can redistribute it and/or modify
-;;; it under the terms of the GNU General Public License as published by
-;;; the Free Software Foundation; either version 2, or (at your option)
-;;; any later version.
-;;;
-;;; GNU Emacs is distributed in the hope that it will be useful,
-;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;;; GNU General Public License for more details.
-;;;
-;;; You should have received a copy of the GNU General Public License
-;;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;;; Boston, MA 02111-1307, USA.
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; This file is part of GNU Emacs.
+;;
+;; GNU Emacs is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 3, or (at your option)
+;; any later version.
+;;
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
+
+;; Code:
+
 (eval-when-compile
   (require 'cl)
-  (require 'w3-props)
-  (defvar w3-last-parse-tree))
+  (require 'w3-props))
+(defvar w3-last-parse-tree)
 (require 'css)
 (require 'font)
 (require 'url-parse)
@@ -95,60 +94,58 @@
 (w3-d-s-var-def w3-display-css-properties)
 (w3-d-s-var-def w3-display-background-properties)
 
-(eval-when-compile
-  (defmacro w3-get-attribute (attr)
-    `(cdr-safe (assq ,attr args)))
-  
-  (defmacro w3-get-face-info (info &optional other)
-    (let ((var (intern (format "w3-face-%s" info))))
-      `(push (w3-get-style-info (quote ,info) node
-                               (or (and (not w3-user-colors-take-precedence)
-                                        (cdr-safe (assq (quote ,other)
-                                                        (nth 1 node))))
-                                   (car ,var)))
-            ,var)))
-
-  (defmacro w3-pop-face-info (info)
-    (let ((var (intern (format "w3-face-%s" info))))
-      `(pop ,var)))
-
-  (defmacro w3-get-all-face-info ()
-    `(progn
-       (w3-get-face-info font-family)
-       ;; This is to handle the 'face' attribute on arbitrary elements
-       (if (cdr-safe (assq 'face (nth 1 node)))
-          (setf (car w3-face-font-family)
-                (append (car w3-face-font-family)
-                        (split-string (cdr-safe
-                                       (assq 'face (nth 1 node)))
-                                      " *, *"))))
-       (w3-get-face-info font-style)
-       (w3-get-face-info font-weight)
-       (w3-get-face-info font-variant)
-       (w3-get-face-info font-size)
-       (w3-get-face-info text-decoration)
-       (w3-get-face-info background-image)
-       (w3-get-face-info color color)
-       (w3-get-face-info background-color bgcolor)
-       (setq w3-face-font-spec (make-font
-                               :weight (car w3-face-font-weight)
-                               :family  (if (not w3-user-fonts-take-precedence)
-                                            (car w3-face-font-family))
-                               :size (car w3-face-font-size)))))
-
-  (defmacro w3-pop-all-face-info ()
-    `(progn
-       (w3-pop-face-info font-family)
-       (w3-pop-face-info font-weight)
-       (w3-pop-face-info font-variant)
-       (w3-pop-face-info font-size)
-       (w3-pop-face-info font-style)
-       (w3-pop-face-info text-decoration)
-       (w3-pop-face-info background-image)
-       (w3-pop-face-info color)
-       (w3-pop-face-info background-color)))
 
-  )
+(defmacro w3-get-attribute (attr args)
+  `(cdr-safe (assq ,attr ,args)))
+  
+(defmacro w3-get-face-info (info &optional other)
+  (let ((var (intern (format "w3-face-%s" info))))
+    `(push (w3-get-style-info (quote ,info)
+                              (or (and (not w3-user-colors-take-precedence)
+                                       (cdr-safe (assq (quote ,other)
+                                                       (nth 1 node))))
+                                  (car ,var)))
+           ,var)))
+
+(defmacro w3-pop-face-info (info)
+  (let ((var (intern (format "w3-face-%s" info))))
+    `(pop ,var)))
+
+(defmacro w3-get-all-face-info ()
+  `(progn
+     (w3-get-face-info font-family)
+     ;; This is to handle the 'face' attribute on arbitrary elements
+     (if (cdr-safe (assq 'face (nth 1 node)))
+         (setf (car w3-face-font-family)
+               (append (car w3-face-font-family)
+                       (split-string (cdr-safe
+                                      (assq 'face (nth 1 node)))
+                                     " *, *"))))
+     (w3-get-face-info font-style)
+     (w3-get-face-info font-weight)
+     (w3-get-face-info font-variant)
+     (w3-get-face-info font-size)
+     (w3-get-face-info text-decoration)
+     (w3-get-face-info background-image)
+     (w3-get-face-info color color)
+     (w3-get-face-info background-color bgcolor)
+     (setq w3-face-font-spec (make-font
+                              :weight (car w3-face-font-weight)
+                              :family  (if (not w3-user-fonts-take-precedence)
+                                           (car w3-face-font-family))
+                              :size (car w3-face-font-size)))))
+
+(defmacro w3-pop-all-face-info ()
+  `(progn
+     (w3-pop-face-info font-family)
+     (w3-pop-face-info font-weight)
+     (w3-pop-face-info font-variant)
+     (w3-pop-face-info font-size)
+     (w3-pop-face-info font-style)
+     (w3-pop-face-info text-decoration)
+     (w3-pop-face-info background-image)
+     (w3-pop-face-info color)
+     (w3-pop-face-info background-color)))
 
 (defvar w3-display-same-buffer nil)
 (defvar w3-face-cache nil  "Cache for `w3-face-for-element'.")
@@ -179,10 +176,11 @@
 
 (defvar w3-pause-keystroke nil)
 
+(defvar w3--cur-viewing-pos)
+
 (defsubst w3-pause ()
-  (declare (special cur-viewing-pos))
   (save-excursion
-    (goto-char (or cur-viewing-pos (point-min)))
+    (goto-char (or w3--cur-viewing-pos (point-min)))
     (cond
      ((featurep 'xemacs)
       (if (and (not (sit-for 0)) (input-pending-p))
@@ -201,7 +199,7 @@
                  (otherwise
                   (call-interactively w3-pause-keystroke))))
            (error nil)))))
-    (setq cur-viewing-pos (point))))
+    (setq w3--cur-viewing-pos (point))))
 
 (defmacro w3-get-pad-string (len)
   `(cond
@@ -256,18 +254,18 @@
    (t (concat (w3-decimal-to-alpha (/ n 26))
              (w3-decimal-to-alpha (% n 26))))))
 
-(defsubst w3-get-style-info (info node &optional default)
+(defsubst w3-get-style-info (info &optional default)
   (or (cdr-safe (assq info w3-display-css-properties)) default))
 
 (defun w3-decode-area-coords (str)
   (let (retval)
     (while (string-match "\\([ \t0-9]+\\),\\([ \t0-9]+\\)" str)
-      (setq retval (cons (vector (string-to-int (match-string 1 str))
-                                (string-to-int (match-string 2 str))) retval)
+      (setq retval (cons (vector (string-to-number (match-string 1 str))
+                                (string-to-number (match-string 2 str))) 
retval)
            str (substring str (match-end 0) nil)))
     (if (string-match "\\([0-9]+\\)" str)
        (setq retval (cons (vector (+ (aref (car retval) 0)
-                                     (string-to-int (match-string 1 str)))
+                                     (string-to-number (match-string 1 str)))
                                   (aref (car retval) 1)) retval)))
     (nreverse retval)))
 
@@ -287,17 +285,17 @@
     (w3-warn 'html (format "Bad color specification: %s" color))
     nil)))
 
-(defsubst w3-voice-for-element (node)
+(defsubst w3-voice-for-element ()
   (if (featurep 'emacspeak)
       (let (family gain left right pitch pitch-range stress richness voice)
-       (setq family (w3-get-style-info 'voice-family node)
-             gain (w3-get-style-info 'gain node)
-             left (w3-get-style-info 'left-volume node)
-             right (w3-get-style-info 'right-volume node)
-             pitch (w3-get-style-info 'pitch node)
-             pitch-range (w3-get-style-info 'pitch-range node)
-             stress (w3-get-style-info 'stress node)
-             richness (w3-get-style-info 'richness node))
+       (setq family (w3-get-style-info 'voice-family)
+             gain (w3-get-style-info 'gain)
+             left (w3-get-style-info 'left-volume)
+             right (w3-get-style-info 'right-volume)
+             pitch (w3-get-style-info 'pitch)
+             pitch-range (w3-get-style-info 'pitch-range)
+             stress (w3-get-style-info 'stress)
+             richness (w3-get-style-info 'richness))
        (if (or family gain left right pitch pitch-range stress richness)
            (setq voice (dtk-personality-from-speech-style
                         (make-dtk-speech-style :family (or family 'paul)
@@ -372,18 +370,15 @@
        "white"
       "black")))
 
-(defun w3-make-face-emacs19 (name &optional doc-string temporary)
-  "Defines and returns a new FACE described by DOC-STRING.
+(defalias 'w3-make-face
+  (cond
+   ((not (fboundp 'make-face)) #'ignore)
+   ((featurep 'xemacs) #'make-face)
+   (t
+    (lambda (name &optional _doc-string _temporary)
+      "Define and return a new FACE described by DOC-STRING.
 If the face already exists, it is unmodified."
-  (make-face name))
-
-(cond
- ((not (fboundp 'make-face))
-  (defalias 'w3-make-face 'ignore))
- ((featurep 'xemacs)
-  (defalias 'w3-make-face 'make-face))
- (t
-  (defalias 'w3-make-face 'w3-make-face-emacs19)))
+      (make-face name)))))
 
 (defsubst w3-face-for-element (node)
   (w3-get-all-face-info)
@@ -453,8 +448,7 @@ If the face already exists, it is unmodified."
        (> w3-last-fill-pos (point-max)))
       (if (not (eq (char-before (point)) ?\n))
          (setq n (1+ n))) ; at least put one line in
-    (let ((fill-column (max (1+ (length fill-prefix)) fill-column))
-         width)
+    (let ((fill-column (max (1+ (length fill-prefix)) fill-column)))
       (case (car w3-display-alignment-stack)
        (center
         (fill-region-as-paragraph w3-last-fill-pos (point) 'center))
@@ -512,41 +506,40 @@ If the face already exists, it is unmodified."
 (defun w3-display-get-cookie (args)
   (if (not (fboundp 'cookie))
       "Sorry, no cookies today."
-    (let* ((href (or (w3-get-attribute 'href) (w3-get-attribute 'src)))
-          (fname (or (cdr-safe (assoc href w3-cookie-cache))
-                     (url-generate-unique-filename "%s.cki")))
-          (st (or (cdr-safe (assq 'start args)) "Loading cookies..."))
-          (nd (or (cdr-safe (assq 'end args)) "Loading cookies... done.")))
-      (if (not (file-exists-p fname))
-         (save-excursion
-           (set-buffer (generate-new-buffer " *cookie*"))
-           (mm-disable-multibyte)
-           (url-insert-file-contents href)
-           (setq buffer-file-name nil)
-           (set-buffer-modified-p nil)    
-           (let ((coding-system-for-write 'binary))
-             (write-region (point-min) (point-max) fname 5))
-           (setq w3-cookie-cache (cons (cons href fname) w3-cookie-cache))))
-      (cookie fname st nd))))
+    (let* ((href (or (w3-get-attribute 'href args)
+                     (w3-get-attribute 'src args)))
+          (fname (cdr-safe (assoc href w3-cookie-cache))))
+      (unless (and fname (file-exists-p fname))
+        (setq fname (make-temp-file "" nil ".cki"))
+        (with-current-buffer (generate-new-buffer " *cookie*")
+          (mm-disable-multibyte)
+          (url-insert-file-contents href)
+          (setq buffer-file-name nil)
+          (set-buffer-modified-p nil)
+          (let ((coding-system-for-write 'binary))
+            (write-region (point-min) (point-max) fname 5))
+          (push (cons href fname) w3-cookie-cache)))
+      (let ((st (or (cdr-safe (assq 'start args)) "Loading cookies..."))
+            (nd (or (cdr-safe (assq 'end args)) "Loading cookies... done.")))
+        (cookie fname st nd)))))
 
 (defun w3-widget-buffer (widget)
-  (let ((overlay (or (widget-get widget :button-overlay)
-                    (widget-get widget :field-overlay)))
-       (extent (or (widget-get widget :button-extent)
-                   (widget-get widget :field-extent))))
-    (or (and overlay (overlay-buffer overlay))
-       (and extent (extent-buffer extent)))))
-
-(defun w3-widget-echo (widget &rest ignore)
-  (save-excursion
-    (set-buffer (or (w3-widget-buffer widget) (current-buffer)))
+  (if (featurep 'xemacs)
+      (let ((extent (or (widget-get widget :button-extent)
+                        (widget-get widget :field-extent))))
+        (and extent (extent-buffer extent)))
+    (let ((overlay (or (widget-get widget :button-overlay)
+                       (widget-get widget :field-overlay))))
+      (and overlay (overlay-buffer overlay)))))
+
+(defun w3-widget-echo (widget &rest _ignore)
+  (with-current-buffer (or (w3-widget-buffer widget) (current-buffer))
     (let* ((url (widget-get widget :href))
           (name (widget-get widget :name))
           (text (buffer-substring (widget-get widget :from)
                                   (widget-get widget :to)))
           (title (widget-get widget :title))
-          (check w3-echo-link)
-          (msg nil))
+          (check w3-echo-link))
       (if url
          (setq url (url-truncate-url-for-viewing url)))
       (if name
@@ -554,14 +547,17 @@ If the face already exists, it is unmodified."
       (if (not (listp check))
          (setq check (cons check '(title url text name))))
       (catch 'exit
-       (while check
-         (and (boundp (car check))
-              (stringp (symbol-value (car check)))
-              (> (length (symbol-value (car check))) 0)
-              (throw 'exit (symbol-value (car check))))
-         (pop check))))))
-
-(defun w3-follow-hyperlink (widget &rest ignore)
+        (dolist (sym check)
+          (let ((val (ecase sym
+                       (name name)
+                       (url url)
+                       (title title)
+                       (text text))))
+            (and (stringp val)
+                 (> (length val) 0)
+                 (throw 'exit val))))))))
+
+(defun w3-follow-hyperlink (widget &rest _ignore)
   (let* ((target (or (widget-get widget :target) w3-base-target))
         (visited (widget-get widget :visited-face))
         (href (widget-get widget :href)))
@@ -581,7 +577,7 @@ If the face already exists, it is unmodified."
       (otherwise
        (w3-fetch href target)))))
 
-(defun w3-balloon-help-callback (object &optional event)
+(defun w3-balloon-help-callback (object &optional _event)
   (let* ((widget (widget-at (extent-start-position object)))
         (href (widget-get widget :href)))
     (if href
@@ -617,7 +613,7 @@ If the face already exists, it is unmodified."
                               (incf (car w3-display-list-stack))
                             1))
                 (margin (1- (car left-margin-stack)))
-                (indent (w3-get-style-info 'text-indent node 0)))
+                (indent (w3-get-style-info 'text-indent 0)))
             (if (> indent 0)
                 (setq margin (+ margin indent))
               (setq margin (max 0 (- margin indent))))
@@ -651,7 +647,7 @@ If the face already exists, it is unmodified."
           )
          (otherwise
           (insert (w3-get-pad-string (+ (car left-margin-stack)
-                                        (w3-get-style-info 'text-indent node 
0)))))
+                                        (w3-get-style-info 'text-indent 0)))))
          )
        (point))
       (list 'start-open t
@@ -661,11 +657,11 @@ If the face already exists, it is unmodified."
 
   (defmacro w3-display-set-margins ()
     `(progn
-       (push (+ (w3-get-style-info 'margin-left node 0)
+       (push (+ (w3-get-style-info 'margin-left 0)
                (car left-margin-stack)) left-margin-stack)
        (push (-
              (car right-margin-stack)
-             (w3-get-style-info 'margin-right node 0)) right-margin-stack)
+             (w3-get-style-info 'margin-right 0)) right-margin-stack)
        (setq fill-column (car right-margin-stack))
        (w3-set-fill-prefix-length (car left-margin-stack))
        (w3-display-handle-list-type)))
@@ -683,17 +679,17 @@ If the face already exists, it is unmodified."
          (w3-display-line-break 1))
        (w3-display-set-margins)
        (push
-        (w3-get-style-info 'white-space node
+        (w3-get-style-info 'white-space
                            (car w3-display-whitespace-stack))
         w3-display-whitespace-stack)
        (push
-        (or (w3-get-attribute 'foobarblatz)
-            (w3-get-style-info 'list-style-type node
+        (or (w3-get-attribute 'foobarblatz args)
+            (w3-get-style-info 'list-style-type
                                (car w3-display-liststyle-stack)))
         w3-display-liststyle-stack)
        (push
-        (or (w3-get-attribute 'align)
-            (w3-get-style-info 'text-align node
+        (or (w3-get-attribute 'align args)
+            (w3-get-style-info 'text-align
                                (car w3-display-alignment-stack)))
         w3-display-alignment-stack)
        (and w3-do-incremental-display (w3-pause)))
@@ -701,17 +697,17 @@ If the face already exists, it is unmodified."
        (w3-display-line-break 0)
        (w3-display-set-margins)
        (push
-        (or (w3-get-attribute 'foobarblatz)
-            (w3-get-style-info 'list-style-type node
+        (or (w3-get-attribute 'foobarblatz args)
+            (w3-get-style-info 'list-style-type
                                (car w3-display-liststyle-stack)))
         w3-display-liststyle-stack)
        (push
-        (w3-get-style-info 'white-space node
+        (w3-get-style-info 'white-space
                            (car w3-display-whitespace-stack))
         w3-display-whitespace-stack)
        (push
-        (w3-get-style-info 'text-align node
-                           (or (w3-get-attribute 'align)
+        (w3-get-style-info 'text-align
+                           (or (w3-get-attribute 'align args)
                                (car w3-display-alignment-stack)))
         w3-display-alignment-stack))
        (otherwise                      ; Assume 'inline' rendering as default
@@ -745,10 +741,10 @@ If the face already exists, it is unmodified."
 
 ;; <link> handling
 (defun w3-parse-link (args)
-  (let* ((type (if (w3-get-attribute 'rel) 'rel 'rev))
-        (desc (w3-get-attribute type))
+  (let* ((type (if (w3-get-attribute 'rel args) 'rel 'rev))
+        (desc (w3-get-attribute type args))
         (dc-desc (and desc (downcase desc))) ; canonical case
-        (dest (w3-get-attribute 'href))
+        (dest (w3-get-attribute 'href args))
         (plist (w3-alist-to-plist args))
         (node-1 (assq type w3-current-links))
         (node-2 (and node-1 desc (or (assoc desc
@@ -863,7 +859,8 @@ If the face already exists, it is unmodified."
        (url-retrieve src 'w3-finalize-image-download-skip-redirects (list src 
buf 'background face)))))))
 
 (defun w3-finalize-image-download-skip-redirects (&rest args)
-  (let (redirect-url errorp)
+  (let (;; redirect-url
+        errorp)
     ;; Handle both styles of `url-retrieve' callbacks...
     (cond
      ((listp (car args))
@@ -872,14 +869,14 @@ If the face already exists, it is unmodified."
        (when (eq (car status) :error)
          (setq errorp (cadr status))
          (setq status (cddr status)))
-       (when (eq (car status) :redirect)
-         (setq redirect-url (second (car args))))
+       ;; (when (eq (car status) :redirect)
+       ;;   (setq redirect-url (second (car args))))
 
        (setq args (cdr args))))
 
      ((eq (car args) :redirect)
       ;; Pre-22 redirect.
-      (setq redirect-url (cadr args))
+      ;; (setq redirect-url (cadr args))
       (while (eq (car args) :redirect)
        (setq args (cddr args)))))
 
@@ -890,7 +887,7 @@ If the face already exists, it is unmodified."
       ;; Actually, for images we don't want to know the real URL, as the
       ;; original address is used when putting the images in the right
       ;; place.  Thus we ignore redirect-url.
-      (apply 'w3-finalize-image-download args))))
+      (apply #'w3-finalize-image-download args))))
 
 (defun w3-finalize-image-download (url buffer &optional widget face)
   (let ((glyph nil)
@@ -900,19 +897,19 @@ If the face already exists, it is unmodified."
                 (widget-get widget 'align))))
     (url-mark-buffer-as-dead (current-buffer))
     ;;(message "Enhancing image...")
-    (let ((default-enable-multibyte-characters nil))
-      (with-temp-buffer
-       (mm-insert-part handle)
-       (setq glyph 
-             (let ((type (cdr-safe (assoc (car (mm-handle-type handle))
-                                          w3-image-mappings))))
-               (if (fboundp 'image-normalize)
-                   (image-normalize type (buffer-string))
-                 (create-image (buffer-string) type 'data
-                               :ascent (case align
-                                         ((bottom nil) 100)
-                                         (center 'center)
-                                         (top 0))))))))
+    (with-temp-buffer
+      (set-buffer-multibyte nil)
+      (mm-insert-part handle)
+      (setq glyph 
+            (let ((type (cdr-safe (assoc (car (mm-handle-type handle))
+                                         w3-image-mappings))))
+              (if (fboundp 'image-normalize)
+                  (image-normalize type (buffer-string))
+                (create-image (buffer-string) type 'data
+                              :ascent (case align
+                                        ((bottom nil) 100)
+                                        (center 'center)
+                                        (top 0)))))))
     ;;(message "Enhancing image... done")
     (cond
      ((w3-image-invalid-glyph-p glyph)
@@ -921,8 +918,7 @@ If the face already exists, it is unmodified."
      ((and (featurep 'xemacs)
           (eq (aref glyph 0) 'xbm))
       (let ((temp-fname (url-generate-unique-filename "%s.xbm")))
-       (save-excursion
-         (set-buffer (generate-new-buffer " *xbm-garbage*"))
+       (with-current-buffer (generate-new-buffer " *xbm-garbage*")
          (erase-buffer)
          (insert (aref glyph 2))
          (setq glyph temp-fname)
@@ -954,15 +950,14 @@ If the face already exists, it is unmodified."
                                  (glyph-image-instance glyph)
                                  buffer))
      ((not (eq widget 'background))
-      (save-excursion
-       (set-buffer buffer)
+      (with-current-buffer buffer
        (if (eq major-mode 'w3-mode)
            (widget-value-set widget glyph)
          (setq w3-image-widgets-waiting
                (cons widget w3-image-widgets-waiting))))))))
 
 (defcustom w3-min-img-size 15
-  "*Image size under which the alt string is replaced by 
`w3-dummy-img-alt-repl'.
+  "Image size under which the alt string is replaced by 
`w3-dummy-img-alt-repl'.
 15 is a bit aggressive, 5 pixels would be safer"
   :group 'w3-images
   :type 'integer
@@ -975,78 +970,86 @@ If the face already exists, it is unmodified."
   :type 'regexp)
 
 (defcustom w3-dummy-img-alt-repl "*"
-  "*Dummy image alt string replacement."
+  "Dummy image alt string replacement."
   :group 'w3-images
   :type 'string)  
 
+(defvar w3--height)
+(defvar w3--width)
+(defvar w3--args)
+
 (defun w3-default-image-alt-func (fname)
-  ;; Assumes height/width bound by calling function
-  (declare (special height width))
-  (if (or (and (stringp height)
-              (< (string-to-int height) w3-min-img-size))
-         (and (stringp width)
-              (< (string-to-int width) w3-min-img-size))
+  ;; Assumes w3--height/width bound by calling function
+  (if (or (and (stringp w3--height)
+              (< (string-to-number w3--height) w3-min-img-size))
+         (and (stringp w3--width)
+              (< (string-to-number w3--width) w3-min-img-size))
          (string-match w3-dummy-img-re fname))
       w3-dummy-img-alt-repl
     (concat "[" (file-name-sans-extension fname) "]")))
 
-(defmacro w3-image-alt (src)
-  `(let* ((doc-alt (w3-get-attribute 'alt))
-         (alt (or (and (stringp doc-alt) (string-match "[^ \t\n]" doc-alt) 
doc-alt)
-                  (cond
-                   ((null w3-auto-image-alt) "")
-                   ((eq t w3-auto-image-alt)
-                    (concat "[IMAGE(" (w3-url-file-nondirectory src) ")] "))
-                   ((stringp w3-auto-image-alt)
-                    (format w3-auto-image-alt (w3-url-file-nondirectory src)))
-                   ((functionp w3-auto-image-alt)
-                    (funcall w3-auto-image-alt (w3-url-file-nondirectory 
src))))))
-         c)
-     (while (setq c (string-match "[\C-i\C-j\C-l\C-m]" alt))
-       (aset alt c ? ))
-     alt))
-
-(defmacro w3-handle-image ()
-  `(let* ((height (w3-get-attribute 'height))
-         (width (w3-get-attribute 'width))
-         (src (or (w3-get-attribute 'src) "Error Image"))
-         (alt (w3-image-alt src))
-         (ismap (and (assq 'ismap args) 'ismap))
-         (usemap (w3-get-attribute 'usemap))
-         (base (w3-get-attribute 'base))
-         (href (and hyperlink-info
-                    (cadr (widget-plist-member (cadr hyperlink-info) :href))))
-         (target (and hyperlink-info
-                      (cadr (widget-plist-member (cadr hyperlink-info)
-                                                 :target))))
-         (widget nil)
-         (align (or (w3-get-attribute 'align)
-                    (w3-get-style-info 'vertical-align node)))
-         (face w3-active-faces))
-     (if (assq '*table-autolayout w3-display-open-element-stack)
-        (insert alt)
-       (setq hyperimage-info
-            (list (point)
-                  (list 'image
-                        :src src       ; Where to load the image from
-                        'alt alt       ; Textual replacement
-                        'ismap ismap   ; Is it a server-side map?
-                        'usemap usemap ; Is it a client-side map?
-                        :href href     ; Hyperlink destination
-                        :target target ; target frame
-                        :button-face face ; img:link or img:visited entry in 
stylesheet
-                        'row w3-display-current-row
-                        'column w3-display-current-col
-                        'align align
-                        )))
-       (setq widget (apply (function widget-create) (cadr hyperimage-info)))
-       (widget-put widget 'buffer (current-buffer))
-       ;;(w3-maybe-start-image-download widget) ; in w3-resurrect-images
-       (if (widget-get widget :from)
-          (add-text-properties (widget-get widget :from)
-                               (widget-get widget :to)
-                               (list 'html-stack 
w3-display-open-element-stack)))
-       (goto-char (point-max)))))
+(defsubst w3-image-alt (src)
+  (let* ((doc-alt (w3-get-attribute 'alt w3--args))
+         (alt (or (and (stringp doc-alt) (string-match "[^ \t\n]" doc-alt) 
doc-alt)
+                  (cond
+                   ((null w3-auto-image-alt) "")
+                   ((eq t w3-auto-image-alt)
+                    (concat "[IMAGE(" (w3-url-file-nondirectory src) ")] "))
+                   ((stringp w3-auto-image-alt)
+                    (format w3-auto-image-alt (w3-url-file-nondirectory src)))
+                   ((functionp w3-auto-image-alt)
+                    (funcall w3-auto-image-alt (w3-url-file-nondirectory 
src))))))
+         c)
+    (while (setq c (string-match "[\C-i\C-j\C-l\C-m]" alt))
+      (aset alt c ? ))
+    alt))
+
+(defvar w3--hyperimage-info)
+(defvar w3--hyperlink-info)
+
+(defvar w3-display-current-row nil)
+(defvar w3-display-current-col nil)
+
+(defsubst w3-handle-image (args)
+  (let* ((w3--height (w3-get-attribute 'height args))
+         (w3--width (w3-get-attribute 'width args))
+         (src (or (w3-get-attribute 'src args) "Error Image"))
+         (alt (w3-image-alt src))
+         (ismap (and (assq 'ismap args) 'ismap))
+         (usemap (w3-get-attribute 'usemap args))
+         (href (and w3--hyperlink-info
+                    (cadr (widget-plist-member (cadr w3--hyperlink-info) 
:href))))
+         (target (and w3--hyperlink-info
+                      (cadr (widget-plist-member (cadr w3--hyperlink-info)
+                                                 :target))))
+         (widget nil)
+         (align (or (w3-get-attribute 'align args)
+                    (w3-get-style-info 'vertical-align)))
+         (face w3-active-faces))
+    (if (assq '*table-autolayout w3-display-open-element-stack)
+        (insert alt)
+      (setq w3--hyperimage-info
+            (list (point)
+                  (list 'image
+                        :src src       ; Where to load the image from
+                        'alt alt       ; Textual replacement
+                        'ismap ismap   ; Is it a server-side map?
+                        'usemap usemap ; Is it a client-side map?
+                        :href href     ; Hyperlink destination
+                        :target target ; target frame
+                        :button-face face ; img:link or img:visited entry in 
stylesheet
+                        'row w3-display-current-row
+                        'column w3-display-current-col
+                        'align align
+                        )))
+      (setq widget (apply (function widget-create) (cadr w3--hyperimage-info)))
+      (widget-put widget 'buffer (current-buffer))
+      ;;(w3-maybe-start-image-download widget) ; in w3-resurrect-images
+      (if (widget-get widget :from)
+          (add-text-properties (widget-get widget :from)
+                               (widget-get widget :to)
+                               (list 'html-stack 
w3-display-open-element-stack)))
+      (goto-char (point-max)))))
 
 ;; The table handling
 (eval-and-compile
@@ -1218,13 +1221,12 @@ This will only work if we used glyphs rather than text 
properties"
                 (aref w3-table-glyph-border-chars i)
                 (aref w3-table-ascii-border-chars i)))
       (setq i (1+ i)))
-    (mapcar (function (lambda (buf)
-                       (save-excursion
-                         (set-buffer buf)
-                         (if (eq major-mode 'w3-mode)
-                             (translate-region (point-min)
-                                               (point-max)
-                                               tr)))))
+    (mapcar (lambda (buf)
+              (with-current-buffer buf
+                (if (eq major-mode 'w3-mode)
+                    (translate-region (point-min)
+                                      (point-max)
+                                      tr))))
            buffs)))
 
 (defvar w3-display-table-cut-words-p nil
@@ -1234,8 +1236,6 @@ This will only work if we used glyphs rather than text 
properties"
   "*Whether to always draw table borders
 Can sometimes make the structure of a document clearer")
 
-(defvar w3-display-current-row nil)
-(defvar w3-display-current-col nil)
 (defvar w3-display-current-cell-offset 0)
 
 (defun w3-display-table-cut ()
@@ -1259,14 +1259,10 @@ Can sometimes make the structure of a document clearer")
   (save-excursion
     (let ((st (point-min))
          (nd nil)
-         (widget nil) parent
-         (to-marker nil)
-         (from-marker nil))
+         (widget nil) parent)
       (while (setq st (next-single-property-change st 'button))
        (setq nd (or (next-single-property-change st 'button) (point-max))
              widget (widget-at st)
-             to-marker (and widget (widget-get widget :to))
-             from-marker (and widget (widget-get widget :from))
              parent (and widget (widget-get widget :parent))
              )
        (if (not widget)
@@ -1284,7 +1280,6 @@ Can sometimes make the structure of a document clearer")
          (setq st (min (point-max) (1+ nd))))))))
 
 (defun w3-size-of-tree (tree minmax)
-  (declare (special args))
   (save-excursion
     (save-restriction
       (narrow-to-region (point) (point))
@@ -1298,7 +1293,7 @@ Can sometimes make the structure of a document clearer")
                                400))) 
            (fill-prefix "")
            (w3-last-fill-pos (point-min))
-           a retval
+            retval
            (w3-do-incremental-display nil)
            (hr-regexp  (concat "^"
                                (regexp-quote 
@@ -1308,7 +1303,7 @@ Can sometimes make the structure of a document clearer")
        ;;(push 'left  w3-display-alignment-stack)
        (push (if (eq minmax 'max) 'nowrap) w3-display-whitespace-stack)
        (while tree
-         (push (cons '*td args) w3-display-open-element-stack)
+         (push (cons '*td w3--args) w3-display-open-element-stack)
          (w3-display-node (pop tree)))
        (pop w3-display-whitespace-stack)
        (goto-char (point-min))
@@ -1330,7 +1325,6 @@ Can sometimes make the structure of a document clearer")
 
 (defun w3-display-table-dimensions (node)
   ;; fill-column sets maximum width
-  (declare (special args))
   (let (min-vector
        max-vector
        rows cols
@@ -1343,7 +1337,7 @@ Can sometimes make the structure of a document clearer")
              rows       (nth 3 table-info)
              cols       (nth 4 table-info))
 
-      (push (cons '*table-autolayout args) w3-display-open-element-stack)
+      (push (cons '*table-autolayout w3--args) w3-display-open-element-stack)
       (let (content
            cur
            (table-spans (list nil))    ; don't make this '(nil) 
@@ -1366,29 +1360,26 @@ Can sometimes make the structure of a document clearer")
               (setq col 0)
               (setq rows (1+ rows))
               (setq ptr table-spans)
-              (mapcar
-               (function
-                (lambda (td)
-                  (setq colspan (string-to-int (or (let ((attr (cdr-safe (assq 
'colspan (nth 1 td)))))
-                                                     (unless (zerop (length 
attr)) attr)) "1"))
-                        rowspan (string-to-int (or (let ((attr (cdr-safe (assq 
'rowspan (nth 1 td)))))
-                                                     (unless (zerop (length 
attr)) attr))"1"))
-                        min  (w3-size-of-tree  (nth 2 td) 'min)
-                        max  (w3-size-of-tree  (nth 2 td) 'max)
-                        )
-                  (while (eq (car-safe (car-safe (cdr ptr))) col)
-                    (setq col (+ col (cdr (cdr (car (cdr ptr))))))
-                    (if (= 0 (decf (car (cdr (car (cdr ptr))))))
-                        (pop (cdr ptr))
-                      (setq ptr (cdr ptr))))
-                  (push (list col colspan min max)
-                        constraints)
-                  (if (= rowspan 1) nil
-                    (push (cons col (cons (1- rowspan) colspan)) (cdr ptr))
-                    (setq ptr (cdr ptr)))
-                  (setq col (+ col colspan))
-                  ))
-               (nth 2 cur))
+              (dolist (td (nth 2 cur))
+                 (setq colspan (string-to-number (or (let ((attr (cdr-safe 
(assq 'colspan (nth 1 td)))))
+                                                       (unless (zerop (length 
attr)) attr)) "1"))
+                       rowspan (string-to-number (or (let ((attr (cdr-safe 
(assq 'rowspan (nth 1 td)))))
+                                                       (unless (zerop (length 
attr)) attr))"1"))
+                       min  (w3-size-of-tree  (nth 2 td) 'min)
+                       max  (w3-size-of-tree  (nth 2 td) 'max)
+                       )
+                 (while (eq (car-safe (car-safe (cdr ptr))) col)
+                   (setq col (+ col (cdr (cdr (car (cdr ptr))))))
+                   (if (= 0 (decf (car (cdr (car (cdr ptr))))))
+                       (pop (cdr ptr))
+                     (setq ptr (cdr ptr))))
+                 (push (list col colspan min max)
+                       constraints)
+                 (if (= rowspan 1) nil
+                   (push (cons col (cons (1- rowspan) colspan)) (cdr ptr))
+                   (setq ptr (cdr ptr)))
+                 (setq col (+ col colspan))
+                 )
               (while (cdr ptr)
                 (if (= 0 (decf (car (cdr (car (cdr ptr))))))
                     (pop (cdr ptr))
@@ -1403,57 +1394,54 @@ Can sometimes make the structure of a document clearer")
            )
          )
        (setq constraints (sort constraints
-                               (function
-                                (lambda (a b)
-                                  (< (cadr a) (cadr b)))))
+                                (lambda (a b) (< (cadr a) (cadr b))))
              min-vector (make-vector cols 0)
              max-vector (make-vector cols 0))
        (let (start end i mincellwidth maxcellwidth)
-         (mapcar (function (lambda (c)
-                             (cond ((= (cadr c) 1) 
-                                    (aset min-vector (car c) 
-                                          (max (aref min-vector (car c))
-                                               (nth 2 c)))
-                                    (aset max-vector (car c) 
-                                          (max (aref max-vector (car c))
-                                               (nth 3 c))))
-                                   (t 
-                                    (setq start (car c)
-                                          end (+ (car c) (cadr c))
-                                          mincellwidth 0
-                                          maxcellwidth 0
-                                          i start)
-                                    (while (< i end)
-                                      (setq mincellwidth (+ mincellwidth
-                                                            (aref min-vector 
i))
-                                            maxcellwidth (+
-                                                          maxcellwidth
-                                                          (aref max-vector i))
-                                            i (1+ i)))
-                                    (setq i start)
-                                    (if (= mincellwidth 0)
-                                        ;; if existing width is 0 divide evenly
-                                        (while (< i end)
-                                          (aset min-vector i
-                                                (/ (nth 2 c) (cadr c)))
-                                          (aset max-vector i
-                                                (/ (nth 3 c) (cadr c)))
-                                          (setq i (1+ i)))
-                                      ;; otherwise weight it by existing widths
-                                      (while (< i end)
-                                        (aset min-vector i
-                                              (max (aref min-vector i)
-                                                   (/ (* (nth 2 c)
-                                                         (aref min-vector i))
-                                                      mincellwidth)))
-                                        (aset max-vector i
-                                              (max (aref max-vector i)
-                                                   (/ (* (nth 3 c)
-                                                         (aref max-vector i))
-                                                      maxcellwidth)))
-                                        (setq i (1+ i))))
-                                    ))))
-                 constraints)))
+         (dolist (c constraints)
+            (cond ((= (cadr c) 1) 
+                   (aset min-vector (car c) 
+                         (max (aref min-vector (car c))
+                              (nth 2 c)))
+                   (aset max-vector (car c) 
+                         (max (aref max-vector (car c))
+                              (nth 3 c))))
+                  (t 
+                   (setq start (car c)
+                         end (+ (car c) (cadr c))
+                         mincellwidth 0
+                         maxcellwidth 0
+                         i start)
+                   (while (< i end)
+                     (setq mincellwidth (+ mincellwidth
+                                           (aref min-vector i))
+                           maxcellwidth (+
+                                         maxcellwidth
+                                         (aref max-vector i))
+                           i (1+ i)))
+                   (setq i start)
+                   (if (= mincellwidth 0)
+                       ;; if existing width is 0 divide evenly
+                       (while (< i end)
+                         (aset min-vector i
+                               (/ (nth 2 c) (cadr c)))
+                         (aset max-vector i
+                               (/ (nth 3 c) (cadr c)))
+                         (setq i (1+ i)))
+                     ;; otherwise weight it by existing widths
+                     (while (< i end)
+                       (aset min-vector i
+                             (max (aref min-vector i)
+                                  (/ (* (nth 2 c)
+                                        (aref min-vector i))
+                                     mincellwidth)))
+                       (aset max-vector i
+                             (max (aref max-vector i)
+                                  (/ (* (nth 3 c)
+                                        (aref max-vector i))
+                                     maxcellwidth)))
+                       (setq i (1+ i))))
+                   )))))
       (push (cons 'w3-table-info
                  (list min-vector max-vector rows cols))
            (cadr node))
@@ -1542,11 +1530,11 @@ Can sometimes make the structure of a document clearer")
             (border-node (cdr-safe (assq 'border args)))
             (border (or w3-display-table-force-borders
                         (and border-node (or
-                                          (/= 0 (string-to-int border-node))
+                                          (/= 0 (string-to-number border-node))
                                           (string= "border" border-node)))))
             (border-char (unless border ? ))
             (valign nil)
-            (align nil)
+            ;; (align nil)
             (content (nth 2 node))
             (avgwidth (/ (- fill-column num-cols num-cols) num-cols))
             (formatted-cols (make-vector num-cols nil))
@@ -1559,9 +1547,7 @@ Can sometimes make the structure of a document clearer")
             (table-colwidth (make-vector num-cols 0))
             (fill-prefix "")
             (height nil)
-            (cur-height nil)
             (cols nil)
-            (rows nil)
             (row 0)
             (this-rectangle nil)
             (inhibit-read-only t)
@@ -1610,9 +1596,9 @@ Can sometimes make the structure of a document clearer")
                                              w3-display-open-element-stack))
             (setq cols (nth 2 (car content))
                   valign (or (cdr-safe (assq 'valign (nth 1 (car content))))
-                             (w3-get-style-info 'vertical-align node))
-                  align  (or (cdr-safe (assq 'align  (nth 1 (car content))))
-                             (w3-get-style-info 'text-align node))
+                             (w3-get-style-info 'vertical-align))
+                  ;; align  (or (cdr-safe (assq 'align  (nth 1 (car content))))
+                  ;;            (w3-get-style-info 'text-align))
                   content (cdr content)
                   row (1+ row))
             (if (and valign (stringp valign))
@@ -1638,7 +1624,7 @@ Can sometimes make the structure of a document clearer")
                                                    w3-current-stylesheet
                                                    
w3-display-open-element-stack))
                   (push (w3-face-for-element (list tag args nil)) 
w3-active-faces)
-                  (push (w3-voice-for-element (list tag args nil)) 
w3-active-voices)
+                  (push (w3-voice-for-element) w3-active-voices)
                   (push (cons tag args) w3-display-open-element-stack)
                   (while cols
                     ;; And need to push these bogus placeholders on there
@@ -1649,16 +1635,16 @@ Can sometimes make the structure of a document clearer")
                     (let* ((node (car cols))
                            (attributes (nth 1 node))
                            (colspan-attr (cdr-safe (assq 'colspan attributes)))
-                           (colspan (string-to-int
+                           (colspan (string-to-number
                                      (or (unless (zerop (length colspan-attr))
                                            colspan-attr)
                                          "1")))
                            (rowspan-attr (cdr-safe (assq 'rowspan attributes)))
-                           (rowspan (string-to-int
+                           (rowspan (string-to-number
                                      (or (unless (zerop (length rowspan-attr))
                                            rowspan-attr)
                                          "1")))
-                           fill-column column-width
+                           fill-column
                            (fill-prefix "")
                            (w3-do-incremental-display nil)
                            (indent-tabs-mode nil)
@@ -1795,14 +1781,15 @@ Can sometimes make the structure of a document clearer")
                 (cond
                  ((= (aref prev-rowspans i) 0)
                   ;; First row, insert the top horizontal divider
-;;; Everything in this functino commented out with ;;; is done so to
-;;; borderless tables work better.  This was an attempt to not show
-;;; the 'spaces' border around the table, to save screen real estate,
-;;; but it messes up indentation on cell columns.
-;;;               (if border
+                   ;;BL Everything in this function commented out with ;;BL is
+                   ;;BL done so to borderless tables work better.  This was an
+                   ;;BL attempt to not show the 'spaces' border around the
+                   ;;BL table, to save screen real estate, but it messes up
+                   ;;BL indentation on cell columns.
+                   ;;BL(if border
                       (w3-insert-terminal-char
                        (w3-table-lookup-char t nil t nil border-char) 
-                       (aref column-dimensions i));;;)
+                       (aref column-dimensions i));;BL)
                   (setq i (1+ i)))
                  ((car (aref formatted-cols i))
                   ;; Slap in the rows
@@ -1816,11 +1803,11 @@ Can sometimes make the structure of a document clearer")
                   (setq lflag nil)
                   (setq i (+ i (max (aref table-colspans i)
                                     (aref prev-colspans  i) 1))))))
-;;;           (if (not border)
-;;;               nil
+               ;;BL (if (not border)
+               ;;BL     nil
                 (w3-insert-terminal-char
                  (w3-table-lookup-char lflag (/= row 1) nil t border-char))
-                (insert "\n"));;;)
+                (insert "\n"));;BL)
             
             ;; recalculate height (in case we've shortened a rowspanning cell)
             (setq height 0 
@@ -1954,9 +1941,9 @@ Can sometimes make the structure of a document clearer")
         (name (plist-get plist 'name))
         (value (or (plist-get plist 'value) ""))
         (size (if (plist-get plist 'size)
-                  (string-to-int (plist-get plist 'size))))
+                  (string-to-number (plist-get plist 'size))))
         (maxlength (if (plist-get plist 'maxlength)
-                       (string-to-int
+                       (string-to-number
                         (plist-get plist 'maxlength))))
         (default value)
         (checked (assq 'checked args)))
@@ -1986,7 +1973,7 @@ Format: (((image-alt row column) . offset) ...)")
 (defun w3-resurrect-images ()
   (let ((st (point-min))
        (inhibit-read-only t)
-       info nd node face widget)
+       info nd widget)
     (while st
       (if (setq info (get-text-property st 'w3-hyperimage-info))
          (progn
@@ -2042,7 +2029,7 @@ Format: (((image-alt row column) . offset) ...)")
   (let ((st (point-min))
        (nd (point-min))
        (inhibit-read-only t)
-       info node face)
+       info)
     (while st
       (if (setq info (get-text-property st 'w3-hyperlink-info))
          (progn
@@ -2082,6 +2069,10 @@ Format: (((image-alt row column) . offset) ...)")
        (push (cons 'codebase (url-view-url t)) options))
     (w3-java-run-applet options params)))
 
+(defvar filladapt-mode)
+(defvar voice-lock-mode)
+(defvar widget-push-button-gui)
+
 (defun w3-display-node (node &optional nofaces)
   (let (
        (content-stack (list (list node)))
@@ -2095,12 +2086,10 @@ Format: (((image-alt row column) . offset) ...)")
        tag
        args
        content
-       hyperlink-info
-       hyperimage-info
+       w3--hyperlink-info
+       w3--hyperimage-info
        break-style
-       cur
        id
-       class
        last-element
        )
     (while content-stack
@@ -2114,27 +2103,27 @@ Format: (((image-alt row column) . offset) ...)")
        ;; goes here.   Couldn't think of any better way to do this when we
        ;; are iterative.  *sigh*
        (a
-        (if (not hyperlink-info)
+        (if (not w3--hyperlink-info)
             nil
-          (add-text-properties (car hyperlink-info) (point)
+          (add-text-properties (car w3--hyperlink-info) (point)
                                (list
                                 'duplicable t
-                                'balloon-help 'w3-balloon-help-callback
+                                'balloon-help #'w3-balloon-help-callback
                                 'start-open t
                                 'end-open t
                                 'rear-nonsticky t
-                                'w3-hyperlink-info (cadr hyperlink-info))))
-        (setq hyperlink-info nil))
+                                'w3-hyperlink-info (cadr w3--hyperlink-info))))
+        (setq w3--hyperlink-info nil))
        (img
-        (if hyperimage-info
-            (add-text-properties (car hyperimage-info) (point)
+        (if w3--hyperimage-info
+            (add-text-properties (car w3--hyperimage-info) (point)
                                  (list
                                   'duplicable t
                                   'start-open t
                                   'end-open t
                                   'rear-nonsticky t
-                                  'w3-hyperimage-info (cadr hyperimage-info))))
-        (setq hyperimage-info nil))
+                                  'w3-hyperimage-info (cadr 
w3--hyperimage-info))))
+        (setq w3--hyperimage-info nil))
        ((ol ul dl dir menu)
         (pop w3-display-list-stack))
        (label
@@ -2161,18 +2150,18 @@ Format: (((image-alt row column) . offset) ...)")
          (setq node (pop content)
                tag (nth 0 node)
                args (nth 1 node)
-               id (or (w3-get-attribute 'name)
-                      (w3-get-attribute 'id))
+               id (or (w3-get-attribute 'name args)
+                      (w3-get-attribute 'id args))
                )
          ;; This little bit of magic takes care of inline styles.
          ;; Evil Evil Evil, but it appears to work.
-         (if (w3-get-attribute 'style)
-             (let ((unique-id (or (w3-get-attribute 'id)
+         (if (w3-get-attribute 'style args)
+             (let ((unique-id (or (w3-get-attribute 'id args)
                                   (w3-display-create-unique-id)))
                    (sheet "")
                    (class (assq 'class args)))
                (setq sheet (format "%s.%s { %s }\n" tag unique-id
-                                   (w3-get-attribute 'style)))
+                                   (w3-get-attribute 'style args)))
                (if class
                    (setcdr class (cons unique-id (cdr class)))
                  (setf (nth 1 node) (cons (cons 'class (list unique-id))
@@ -2185,9 +2174,9 @@ Format: (((image-alt row column) . offset) ...)")
                                           (nth 1 node)
                                           w3-current-stylesheet
                                           w3-display-open-element-stack))
-         (push (w3-get-style-info 'display node) break-style)
-         (push (w3-get-style-info 'insert-after node) insert-after)
-         (setq insert-before (w3-get-style-info 'insert-before node))
+         (push (w3-get-style-info 'display) break-style)
+         (push (w3-get-style-info 'insert-after) insert-after)
+         (setq insert-before (w3-get-style-info 'insert-before))
          (w3-display-handle-break)
          (if (w3-node-visible-p)
              nil
@@ -2199,7 +2188,7 @@ Format: (((image-alt row column) . offset) ...)")
          (if nofaces
              nil
            (push (w3-face-for-element node) w3-active-faces)
-           (push (w3-voice-for-element node) w3-active-voices))
+           (push (w3-voice-for-element) w3-active-voices))
          (setq insert-before nil)
          (if id
              (setq w3-id-positions (cons
@@ -2210,15 +2199,6 @@ Format: (((image-alt row column) . offset) ...)")
          (case tag
            (a                          ; Hyperlinks
             (let* (
-                   (title (w3-get-attribute 'title))
-                   (name (or (w3-get-attribute 'id)
-                             (w3-get-attribute 'name)))
-                   (btdt nil)
-                   class
-                   (before nil)
-                   (after nil)
-                   (face nil)
-                   (voice nil)
                    (st nil)
                    (old-props w3-display-css-properties)
                    (active-face nil)
@@ -2246,31 +2226,32 @@ Format: (((image-alt row column) . offset) ...)")
               (setq visited-face (w3-face-for-element (list tag munged nil)))
               (w3-pop-all-face-info)
               (setq w3-display-css-properties old-props)
-              (if (w3-get-attribute 'href)
+              (if (w3-get-attribute 'href args)
                   (setq st (point)
-                        hyperlink-info (list
-                                        st
-                                        (append
-                                         (list :args nil
-                                               :value "" :tag ""
-                                               :action 'w3-follow-hyperlink
-                                               :button-face '(nil)
-                                               :active-face active-face
-                                               :visited-face visited-face
-                                               :from (set-marker
-                                                      (make-marker) st)
-                                               :help-echo 'w3-widget-echo
-                                               :emacspeak-help 'w3-widget-echo
-                                               )
-                                         (w3-display-convert-arglist args)))))
+                        w3--hyperlink-info
+                         (list
+                          st
+                          (append
+                           (list :args nil
+                                 :value "" :tag ""
+                                 :action 'w3-follow-hyperlink
+                                 :button-face '(nil)
+                                 :active-face active-face
+                                 :visited-face visited-face
+                                 :from (set-marker
+                                        (make-marker) st)
+                                 :help-echo 'w3-widget-echo
+                                 :emacspeak-help 'w3-widget-echo
+                                 )
+                           (w3-display-convert-arglist args)))))
               (w3-handle-content node)
               )
             )
            ((ol ul dl menu)
-            (push (if (or (w3-get-attribute 'start)
-                          (w3-get-attribute 'seqnum))
-                      (1- (string-to-int (or (w3-get-attribute 'start)
-                                             (w3-get-attribute 'seqnum))))
+            (push (if (or (w3-get-attribute 'start args)
+                          (w3-get-attribute 'seqnum args))
+                      (1- (string-to-number (or (w3-get-attribute 'start args)
+                                             (w3-get-attribute 'seqnum args))))
                     0) w3-display-list-stack)
             (w3-handle-content node))
            (dir
@@ -2288,7 +2269,7 @@ Format: (((image-alt row column) . offset) ...)")
                                     (w3-display-chop-into-table node 2)))))
             (w3-handle-content node))
            (img                        ; inlined image
-            (w3-handle-image)
+             (w3-handle-image args)
             (w3-handle-empty-tag))
            (frameset
             (if w3-display-frames
@@ -2310,11 +2291,11 @@ Format: (((image-alt row column) . offset) ...)")
               (w3-handle-content node)))
            (frame
             (if w3-display-frames
-                (let* ((href (or (w3-get-attribute 'src)
-                                 (w3-get-attribute 'href)))
-                       (name (or (w3-get-attribute 'name)
-                                 (w3-get-attribute 'title)
-                                 (w3-get-attribute 'alt)
+                (let* ((href (or (w3-get-attribute 'src args)
+                                 (w3-get-attribute 'href args)))
+                       (name (or (w3-get-attribute 'name args)
+                                 (w3-get-attribute 'title args)
+                                 (w3-get-attribute 'alt args)
                                  "Unknown frame name")))
                   (push (list 'frame name href) w3-frameset-structure)
                   (w3-handle-content
@@ -2341,19 +2322,19 @@ Format: (((image-alt row column) . offset) ...)")
             (w3-handle-content node)
             )
            (hr                         ; Cause line break & insert rule
-            (let* ((perc (or (w3-get-attribute 'width)
-                             (w3-get-style-info 'width node)
+            (let* ((perc (or (w3-get-attribute 'width args)
+                             (w3-get-style-info 'width)
                              "100%"))
                    (width nil))
               (if (stringp perc)
-                  (setq perc (/ (min (string-to-int perc) 100) 100.0)
+                  (setq perc (/ (min (string-to-number perc) 100) 100.0)
                         width (truncate (* fill-column perc)))
                 (setq width perc))
               (w3-insert-terminal-char (w3-horizontal-rule-char) width)
               (w3-handle-empty-tag)))
            (map                        ; Client side imagemaps
-            (let ((name (or (w3-get-attribute 'name)
-                            (w3-get-attribute 'id)
+            (let ((name (or (w3-get-attribute 'name args)
+                            (w3-get-attribute 'id args)
                             "unnamed"))
                   (areas
                    (mapcar
@@ -2361,16 +2342,16 @@ Format: (((image-alt row column) . offset) ...)")
                      (lambda (node)
                        (let* ((args (nth 1 node))
                               (type (downcase (or
-                                               (w3-get-attribute 'shape)
+                                               (w3-get-attribute 'shape args)
                                                "rect")))
                               (coords (w3-decode-area-coords
                                        (or (cdr-safe
                                             (assq 'coords args)) "")))
-                              (alt (w3-get-attribute 'alt))
+                              (alt (w3-get-attribute 'alt args))
                               (href (if (assq 'nohref args)
                                         t
-                                      (or (w3-get-attribute 'src)
-                                          (w3-get-attribute 'href))))
+                                      (or (w3-get-attribute 'src args)
+                                          (w3-get-attribute 'href args))))
                               )
                          (vector type coords href alt))
                        )
@@ -2393,23 +2374,24 @@ Format: (((image-alt row column) . offset) ...)")
                                        (list 'td (list 'align 'right)
                                              (list
                                               (concat
-                                               (or (w3-get-attribute 'role)
+                                               (or (w3-get-attribute 'role 
args)
                                                    "CAUTION") ":")))
                                        (list 'td nil
                                              (nth 2 node)))))))))
             (w3-handle-content node)
             )
            (table
-            (w3-display-table node)
+             (let ((w3--args args))
+               (w3-display-table node))
             (setq w3-last-fill-pos (point))
             (w3-handle-empty-tag)
             )
            (isindex
-            (let ((prompt (or (w3-get-attribute 'prompt)
+            (let ((prompt (or (w3-get-attribute 'prompt args)
                               "Search on (+ separates keywords): "))
                   action node)
-              (setq action (or (w3-get-attribute 'src)
-                               (w3-get-attribute 'href)
+              (setq action (or (w3-get-attribute 'src args)
+                               (w3-get-attribute 'href args)
                                (url-view-url t)))
               (if (and prompt (string-match "[^: \t-]+$" prompt))
                   (setq prompt (concat prompt ": ")))
@@ -2431,12 +2413,12 @@ Format: (((image-alt row column) . offset) ...)")
               (setq w3-current-isindex (cons action prompt)))
             )
            ((html body)
-            (let ((fore (car (delq nil (copy-list w3-face-color))))
-                  (back (car (delq nil (copy-list w3-face-background-color))))
-                  (pixm (car (delq nil (copy-list w3-face-background-image))))
-                  (alink (w3-get-attribute 'alink))
-                  (vlink (w3-get-attribute 'vlink))
-                  (link  (w3-get-attribute 'link))
+            (let ((fore (car (remq nil w3-face-color)))
+                  (back (car (remq nil w3-face-background-color)))
+                  (pixm (car (remq nil w3-face-background-image)))
+                  (alink (w3-get-attribute 'alink args))
+                  (vlink (w3-get-attribute 'vlink args))
+                  (link  (w3-get-attribute 'link args))
                   (sheet "")
                   )
               (if link
@@ -2453,14 +2435,14 @@ Format: (((image-alt row column) . offset) ...)")
                 (if (/= (length sheet) 0)
                     (w3-handle-style (list 'data sheet
                                            'notation "text/css")))
-                (if (and (w3-get-attribute 'background)
+                (if (and (w3-get-attribute 'background args)
                          (not pixm))
                     (progn
-                      (setq pixm (w3-get-attribute 'background))
+                      (setq pixm (w3-get-attribute 'background args))
                       (setf (car w3-face-background-image) pixm)))
-                (if (and (w3-get-attribute 'text) (not fore))
+                (if (and (w3-get-attribute 'text args) (not fore))
                     (progn
-                      (setq fore (w3-fix-color (w3-get-attribute 'text)))
+                      (setq fore (w3-fix-color (w3-get-attribute 'text args)))
                       (setf (car w3-face-color) fore)))
 
                 ;; Here we do some sanity checking of the colors
@@ -2498,7 +2480,8 @@ Format: (((image-alt row column) . offset) ...)")
                       (font-set-face-background 'default back 
(current-buffer)))))
               (w3-handle-content node)))
            (*document
-            (let ((info (mapcar (lambda (x) (cons x (and (boundp x) 
(symbol-value x))))
+            (let ((info (mapcar (lambda (x)
+                                   (cons x (and (boundp x) (symbol-value x))))
                                 w3-persistent-variables)))
               (if (not w3-display-same-buffer)
                   (set-buffer (generate-new-buffer "Untitled")))
@@ -2515,14 +2498,14 @@ Format: (((image-alt row column) . offset) ...)")
                 (error (message  "W3 buffer %s is being drawn." (buffer-name 
(current-buffer)))))
 
               (buffer-disable-undo (current-buffer))
-              (mapcar (function (lambda (x)
-                                  (if (boundp (car x))
-                                      (set (car x) (cdr x))))) info)
+              (dolist (x info)
+                 (if (boundp (car x))
+                     (set (car x) (cdr x))))
               ;; ACK!  We don't like filladapt mode!
               (set (make-local-variable 'filladapt-mode) nil)
               (set (make-local-variable 'adaptive-fill-mode) nil)
               (set (make-local-variable 'voice-lock-mode) t)
-              (set (make-local-variable 'cur-viewing-pos) (point-min))
+              (set (make-local-variable 'w3--cur-viewing-pos) (point-min))
               (setq w3-current-stylesheet (css-copy-stylesheet
                                            w3-user-stylesheet)
                     w3-last-fill-pos (point)
@@ -2533,8 +2516,8 @@ Format: (((image-alt row column) . offset) ...)")
            (*invisible
             (w3-handle-empty-tag))
            (meta
-            (let ((name (w3-get-attribute 'name))
-                  (value (or (w3-get-attribute 'content) "")))
+            (let ((name (w3-get-attribute 'name args))
+                  (value (or (w3-get-attribute 'content args) "")))
               ;; http-equiv is dealt with by `w3-fetch-callback'.
               (if name
                   (setq w3-current-metainfo (cons
@@ -2562,9 +2545,7 @@ Format: (((image-alt row column) . offset) ...)")
             (w3-handle-content node))
            (form
             (setq w3-current-form-number (1+ w3-current-form-number))
-            (let* (
-                   (action (w3-get-attribute 'action))
-                   (url nil))
+            (let* ((action (w3-get-attribute 'action args)))
               (if (not action)
                   (setq args (cons (cons 'action (url-view-url t)) args)))
               (setq w3-display-form-id (cons
@@ -2764,8 +2745,7 @@ Format: (((image-alt row column) . offset) ...)")
         (w3-display-same-buffer t)
         (parse nil))
     (save-window-excursion
-      (save-excursion
-       (set-buffer (get-buffer-create " *w3-region*"))
+      (with-current-buffer (get-buffer-create " *w3-region*")
        (erase-buffer)
        (insert source)
        (setq parse (w3-parse-buffer (current-buffer))))
@@ -2831,8 +2811,7 @@ Format: (((image-alt row column) . offset) ...)")
   (let ((bufs (buffer-list))
        (found nil))
     (while (and bufs (not found))
-      (save-excursion
-       (set-buffer (car bufs))
+      (with-current-buffer (car bufs)
        (setq found (if (and
                         (not (string-match "^ " (buffer-name (car bufs))))
                         (eq major-mode 'w3-mode)
@@ -2930,13 +2909,11 @@ Format: (((image-alt row column) . offset) ...)")
                            next-frame-window (selected-window)))
                     (t
                      (w3-fetch href)))
-              (let ((buf (current-buffer))
-                    (framebuf (w3-buffer-visiting href)))
+              (let ((framebuf (w3-buffer-visiting href)))
                 (cond (framebuf
-                       (set-buffer framebuf)
-                       (setq w3-frame-name name
-                             w3-target-window-distances nil)
-                       (set-buffer buf)
+                       (with-current-buffer framebuf
+                          (setq w3-frame-name name
+                                w3-target-window-distances nil))
                        (select-window next-frame-window))))))
            ((eq (car (car structure)) 'frameset)
             (cond (inhibit-frame
diff --git a/w3-emacs.el b/w3-emacs.el
index 1491a1d..e9a85ba 100644
--- a/w3-emacs.el
+++ b/w3-emacs.el
@@ -1,13 +1,13 @@
 ;;; w3-emacs.el --- Emacs-specific functions for emacs-w3
 
-;; Copyright (c) 1997, 1998, 2001 Free Software Foundation, Inc.
+;; Copyright (c) 1997, 1998, 2001, 2013 Free Software Foundation, Inc.
 
 ;; Author: Dave Love <address@hidden>
 ;; Keywords: hypermedia
 
 ;; This file is free software; you can redistribute it and/or modify
 ;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation; either version 2, or (at your option)
+;; the Free Software Foundation; either version 3, or (at your option)
 ;; any later version.
 
 ;; This file is distributed in the hope that it will be useful,
@@ -45,17 +45,16 @@
        (cur nil))
     (while (not (eq cur first))
       (setq cur (if cur (next-window cur nil frame) first))
-      (save-excursion
-       (set-buffer (window-buffer cur))
-       (if (and (eq major-mode 'w3-mode)
+      (with-current-buffer (window-buffer cur)
+       (if (and (derived-mode-p 'w3-mode)
                 (not (eq (window-width cur) w3-emacs-window-width)))
            (w3-refresh-buffer))))))
 
+(defvar w3-face-index)
+(defvar w3-display-background-properties)
+
 (defun w3-mode-version-specifics ()
-  (declare (special w3-face-index w3-display-background-properties))
   (setq w3-emacs-window-width (window-width))
-  (if w3-track-mouse
-      (set (make-local-variable 'track-mouse) t))
   (if w3-display-background-properties
       (let ((face (w3-make-face (intern
                                 (format "w3-style-face-%05d" w3-face-index))
@@ -83,15 +82,5 @@
     (if (stringp help)
        (tooltip-show help))))
 
-(defun w3-mouse-handler (e)
-  "Function to message the url under the mouse cursor"
-  (interactive "e")
-  (let* ((pt (posn-point (event-start e)))
-        (good (eq (posn-window (event-start e)) (selected-window)))
-        (mouse-events nil))
-    (if (not (and good pt (number-or-marker-p pt)))
-       nil
-      (widget-echo-help pt))))
-
 (provide 'w3-emacs)
 ;;; w3-emacs.el ends here
diff --git a/w3-emulate.el b/w3-emulate.el
index 05a2787..41dc967 100644
--- a/w3-emulate.el
+++ b/w3-emulate.el
@@ -1,34 +1,34 @@
 ;;; w3-emulate.el --- All variable definitions for emacs-w3
+
+;; Copyright (c) 1996-1999, 2013 Free Software Foundation, Inc.
+
 ;; Author: $Author: fx $
 ;; Created: $Date: 2001/05/29 15:52:51 $
-;; Version: $Revision: 1.3 $
 ;; Keywords: comm, help, hypermedia
 
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; Copyright (c) 1996 by William M. Perry <address@hidden>
-;;; Copyright (c) 1996 - 1999 Free Software Foundation, Inc.
-;;;
-;;; This file is part of GNU Emacs.
-;;;
-;;; GNU Emacs is free software; you can redistribute it and/or modify
-;;; it under the terms of the GNU General Public License as published by
-;;; the Free Software Foundation; either version 2, or (at your option)
-;;; any later version.
-;;;
-;;; GNU Emacs is distributed in the hope that it will be useful,
-;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;;; GNU General Public License for more details.
-;;;
-;;; You should have received a copy of the GNU General Public License
-;;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;;; Boston, MA 02111-1307, USA.
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; This file is part of GNU Emacs.
+;;
+;; GNU Emacs is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 3, or (at your option)
+;; any later version.
+;;
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
+
+;;; Commentary:
+
+;; Provide emulations of various other web browsers
+
+;;; Code:
 
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; Provide emulations of various other web browsers
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 (require 'w3-vars)
 (require 'url-vars)
 
diff --git a/w3-fast-parse.el b/w3-fast-parse.el
index a8034f5..dbb2d81 100644
--- a/w3-fast-parse.el
+++ b/w3-fast-parse.el
@@ -2,11 +2,11 @@
 
 ;; Author: William M. Perry <address@hidden>
 
-;; Copyright © 2001 Free Software Foundation
+;; Copyright © 2001, 2013 Free Software Foundation
 ;; 
 ;; This program is free software; you can redistribute it and/or modify
 ;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation; either version 2 of the License, or
+;; the Free Software Foundation; either version 3 of the License, or
 ;; (at your option) any later version.
 ;; 
 ;; This program is distributed in the hope that it will be useful,
@@ -19,7 +19,12 @@
 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 ;; Boston, MA 02111-1307, USA.
 
+;;; Code:
+
 (require 'xml)
+(require 'w3-vars)
+
+(defvar w3-last-parse-tree)             ;From w3-parse.el.
 
 (defvar w3-fast-parse-tidy-program nil)
 
@@ -35,8 +40,9 @@
 (defun w3-fast-parse-find-tidy-program ()
   (w3-fast-parse-find-program "tidy" 'w3-fast-parse-tidy-program))
 
+(defvar base-object)
+
 (defun w3-fast-parse-cleanup (tree)
-  (declare (special base-object))
   (let* (node tag attrs content btdt)
     (while (setq node (car tree))
       (setq tree (cdr tree))
diff --git a/w3-forms.el b/w3-forms.el
index 12d4053..c263bc5 100644
--- a/w3-forms.el
+++ b/w3-forms.el
@@ -1,34 +1,34 @@
 ;;; w3-forms.el --- Emacs-w3 forms parsing code for new display engine
+
+;; Copyright (c) 1996-1999, 2008, 2013 Free Software Foundation, Inc.
+
 ;; Author: $Author: wmperry $
 ;; Created: $Date: 2002/10/23 03:33:41 $
-;; Version: $Revision: 1.11 $
 ;; Keywords: faces, help, comm, data, languages
 
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; Copyright (c) 1996 - 1999, 2008 Free Software Foundation, Inc.
-;;; Copyright (c) 1996 by William M. Perry <address@hidden>
-;;;
-;;; This file is part of GNU Emacs.
-;;;
-;;; GNU Emacs is free software; you can redistribute it and/or modify
-;;; it under the terms of the GNU General Public License as published by
-;;; the Free Software Foundation; either version 2, or (at your option)
-;;; any later version.
-;;;
-;;; GNU Emacs is distributed in the hope that it will be useful,
-;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;;; GNU General Public License for more details.
-;;;
-;;; You should have received a copy of the GNU General Public License
-;;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;;; Boston, MA 02111-1307, USA.
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; FORMS processing for HTML
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; This file is part of GNU Emacs.
+;;
+;; GNU Emacs is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 3, or (at your option)
+;; any later version.
+;;
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
+
+;;; Commentary:
+
+;; FORMS processing for HTML.
+
+;;; Code:
+
 (eval-when-compile
   (require 'cl))
 
@@ -169,33 +169,31 @@
                                   'end-open t
                                   'rear-nonsticky t)))))
 
+(defvar widget-push-button-gui)
+
 ;;;###autoload
 (defun w3-form-resurrect-widgets ()
   (let ((st (point-min))
        ;; FIXME! For some reason this loses on long lines right now.
        (widget-push-button-gui nil)
-       info nd node action face)
+       info nd action face)
     (while st
-      (if (setq info (get-text-property st 'w3-form-info))
-         (progn
-           (setq nd (or (next-single-property-change st 'w3-form-info)
-                        (point-max))
-                 face (cdr info)
-                 info (car info)
-                 action (w3-form-element-action info)
-                 node (assoc action w3-form-elements))
-           (goto-char st)
-           (delete-region st nd)
-           (if (not (w3-form-element-size info))
-               (w3-form-element-set-size info 20))
-           (w3-form-add-element-internal info face)
-           (setq st (next-single-property-change st 'w3-form-info)))
-       (setq st (next-single-property-change st 'w3-form-info))))))
+      (when (setq info (get-text-property st 'w3-form-info))
+        (setq nd (or (next-single-property-change st 'w3-form-info)
+                     (point-max))
+              face (cdr info)
+              info (car info)
+              action (w3-form-element-action info))
+        (goto-char st)
+        (delete-region st nd)
+        (if (not (w3-form-element-size info))
+            (w3-form-element-set-size info 20))
+        (w3-form-add-element-internal info face))
+      (setq st (next-single-property-change st 'w3-form-info)))))
 
 (defsubst w3-form-mark-widget (widget el)
   (let ((widgets (list widget))
-       (children (widget-get widget :children))
-       (parent (widget-get widget :parent)))
+       (children (widget-get widget :children)))
     (w3-form-element-set-widget el widget)
     ;; Get _all_ the children associated with this widget
     (while children
@@ -258,10 +256,9 @@
 (defvar w3-custom-options nil)
 (make-variable-buffer-local 'w3-custom-options)
 
-(defun w3-form-create-custom (el face)
+(defun w3-form-create-custom (el _face)
   (require 'cus-edit)
-  (let* ((name (w3-form-element-name el))
-        (var-name (w3-form-element-value el))
+  (let* ((var-name (w3-form-element-value el))
         (type (plist-get (w3-form-element-plist el) 'custom-type))
         (widget (widget-create (cond ((string-equal type "variable")
                                       'custom-variable)
@@ -327,7 +324,7 @@
     (if (or (not val) (string= val ""))
        (setq val "Push Me"))
     (widget-create 'push-button
-                  :notify 'ignore
+                  :notify #'ignore
                   :button-face face
                   :value-face face
                   val)))
@@ -336,7 +333,7 @@
   (widget-create 'push-button
                 :button-face face
                 :value-face face
-                :notify 'w3-form-submit/reset-callback
+                :notify #'w3-form-submit/reset-callback
                 :value (or
                         (plist-get (w3-form-element-plist el) 'alt)
                         ;; Can it have a value other than "" anyway?
@@ -356,7 +353,7 @@
                      "Submit"
                    "Reset")))
     (widget-create 'push-button
-                  :notify 'w3-form-submit/reset-callback
+                  :notify #'w3-form-submit/reset-callback
                   :button-face face val)))
 
 (defun w3-form-create-file-browser (el face)
@@ -367,7 +364,7 @@
                 :must-match t
                 :value (w3-form-element-value el)))
 
-(defun w3-form-create-keygen-list (el face)
+(defun w3-form-create-keygen-list (_el face)
   (let* ((size (apply 'max (mapcar (lambda (pair) (length (car pair)))
                                   w3-form-valid-key-sizes)))
         (options (mapcar (lambda (pair)
@@ -420,10 +417,10 @@
 ;(defun w3-form-create-multiline (el face)
 ;  (widget-create 'text :value-face face (w3-form-element-value el)))
 
-(defun w3-form-create-multiline (el face)
+(defun w3-form-create-multiline (_el face)
   (widget-create 'push-button
                 :button-face face
-                :notify 'w3-do-text-entry
+                :notify #'w3-do-text-entry
                 "Multiline text area"))
 
 (defun w3-form-create-integer (el face)
@@ -476,7 +473,7 @@
 
 (defun w3-form-default-widget-creator (el face)
   (widget-create 'link
-                :notify 'w3-form-default-button-callback
+                :notify #'w3-form-default-button-callback
                 :value-to-internal 'w3-form-default-button-update
                 :size (w3-form-element-size el)
                 :value-face face
@@ -495,20 +492,19 @@
                     (w3-form-element-size info) nil ? )))
     v))
 
-(defun w3-form-default-button-callback (widget &rest ignore)
+(defun w3-form-default-button-callback (widget &rest _ignore)
   (let* ((obj (widget-get widget :w3-form-data))
         (typ (w3-form-element-type obj))
         (def (widget-value widget))
-        (val nil)
-        )
-    (case typ
-      (password
-       (setq val (funcall url-passwd-entry-func "Password: " def)))
-      (otherwise
-       (setq val (read-string
-                 (concat (capitalize (symbol-name typ)) ": ") def))))
+        (val 
+          (case typ
+            (password
+             (read-passwd "Password: " def))
+            (otherwise
+             (read-string
+              (concat (capitalize (symbol-name typ)) ": ") def)))))
     (widget-value-set widget val))
-  (apply 'w3-form-possibly-submit widget ignore))
+  (w3-form-possibly-submit widget))
 
 ;; These properties tell the help-echo function how to summarize each
 ;; type of widget.
@@ -525,7 +521,7 @@
 (put 'password  'w3-summarize-function 'w3-form-summarize-password)
 (put 'hidden    'w3-summarize-function 'ignore)
 
-(defun w3-form-summarize-field (widget &rest ignore)
+(defun w3-form-summarize-field (widget &rest _ignore)
   "Sumarize a widget that should be a W3 form entry area.
 This can be used as the :help-echo property of all w3 form entry widgets."
   (let ((info nil)
@@ -540,8 +536,8 @@ This can be used as the :help-echo property of all w3 form 
entry widgets."
       (setq info (widget-get widget :w3-form-data)))
     (if (not info)
        (signal 'wrong-type-argument (list 'w3-form-widget widget)))
-    (setq func (or (get (w3-form-element-type info) 'w3-summarize-function)
-                  'w3-form-summarize-default)
+    (setq func (or (get (w3-form-element-type info) #'w3-summarize-function)
+                  #'w3-form-summarize-default)
          msg (and (fboundp func) (funcall func info widget)))
     ;; FIXME!  This should be removed once emacspeak is updated to
     ;; more closely follow the widget-y way of just returning the string
@@ -551,26 +547,25 @@ This can be used as the :help-echo property of all w3 
form entry widgets."
 
 (defsubst w3-form-field-label (data)
   ;;; FIXXX!!! Need to reimplement using the new forms implementation!
-  (declare (special w3-form-labels))
   (cdr-safe
    (assoc (or (plist-get (w3-form-element-plist data) 'id)
              (plist-get (w3-form-element-plist data) 'label))
          w3-form-labels)))
 
-(defun w3-form-summarize-default (data widget)
+(defun w3-form-summarize-default (data _widget)
   (let ((label (w3-form-field-label data))
        (name  (w3-form-element-name data))
        (value (widget-value (w3-form-element-widget data))))
     (format "Text field %s set to: %s" (or label (concat "called " name))
            value)))
 
-(defun w3-form-summarize-password (data widget)
+(defun w3-form-summarize-password (data _widget)
   (let ((label (w3-form-field-label data))
        (name  (w3-form-element-name data)))
     (format "Password field %s is a secret.  Shhh."
            (or label (concat "called " name)))))
 
-(defun w3-form-summarize-multiline (data widget)
+(defun w3-form-summarize-multiline (data _widget)
   (let ((name (w3-form-element-name data))
         (label (w3-form-field-label data))
         (value (w3-form-element-value data)))
@@ -578,25 +573,24 @@ This can be used as the :help-echo property of all w3 
form entry widgets."
            (or label (concat "called " name))
            value)))
 
-(defun w3-form-summarize-checkbox (data widget)
+(defun w3-form-summarize-checkbox (data _widget)
   (let ((name (w3-form-element-name data))
        (label (w3-form-field-label data))
        (checked (widget-value (w3-form-element-widget data))))
     (format "Checkbox %s is %s" (or label name) (if checked "on" "off"))))
 
-(defun w3-form-summarize-option-list (data widget)
+(defun w3-form-summarize-option-list (data _widget)
   (let ((name (w3-form-element-name data))
-       (label (w3-form-field-label data))
-       (default (w3-form-element-default-value data)))
+       (label (w3-form-field-label data)))
     (format "Option list (%s) set to: %s" (or label name)
            (widget-value (w3-form-element-widget data)))))
 
-(defun w3-form-summarize-image (data widget)
+(defun w3-form-summarize-image (data _widget)
   (let ((name (w3-form-element-name data))
        (label (w3-form-field-label data)))
     (concat "Image entry " (or label (concat "called " name)))))
 
-(defun w3-form-summarize-submit-button (data widget)
+(defun w3-form-summarize-submit-button (data _widget)
   (let*  ((type (w3-form-element-type data))
          (label (w3-form-field-label data))
          (button-text (widget-value (w3-form-element-widget data)))
@@ -617,14 +611,14 @@ This can be used as the :help-echo property of all w3 
form entry widgets."
       (format "Press this  to change radio group %s from %s to %s" (or label 
name) cur-value
              this-value))))
 
-(defun w3-form-summarize-file-browser (data widget)
+(defun w3-form-summarize-file-browser (data _widget)
   (let ((name (w3-form-element-name data))
        (label (w3-form-field-label data))
        (file (widget-value (w3-form-element-widget data))))
     (format "File entry %s pointing to: %s" (or label name) (or file
                                                                "[nothing]"))))
 
-(defun w3-form-summarize-keygen-list (data widget)
+(defun w3-form-summarize-keygen-list (data _widget)
   (format "Submitting this form will generate a %d bit key (not)"
          (widget-value (w3-form-element-widget data))))
 
@@ -638,7 +632,7 @@ This can be used as the :help-echo property of all w3 form 
entry widgets."
   ;; Return a list of data entry widgets in form number ACTN
   (cdr-safe (assoc actn w3-form-elements)))
 
-(defun w3-form-possibly-submit (widget &rest ignore)
+(defun w3-form-possibly-submit (widget &rest _ignore)
   (let* ((formobj (widget-get widget :w3-form-data))
         (ident (w3-form-element-action formobj))
         (widgets (w3-all-widgets ident))
@@ -665,7 +659,7 @@ This can be used as the :help-echo property of all w3 form 
entry widgets."
     (if (and (= text-fields 1) text-p)
        (w3-submit-form ident))))
 
-(defun w3-form-submit/reset-callback (widget &rest ignore)
+(defun w3-form-submit/reset-callback (widget &rest _ignore)
   (let* ((formobj (widget-get widget :w3-form-data))
         (w3-submit-button formobj))
     (case (w3-form-element-type formobj)
@@ -678,7 +672,7 @@ This can be used as the :help-echo property of all w3 form 
entry widgets."
        (w3-form-element-type formobj))))))
 
 ;;;###autoload
-(defun w3-do-text-entry (widget &rest ignore)
+(defun w3-do-text-entry (widget &rest _ignore)
   (let* ((data (list widget (current-buffer)))
         (formobj (widget-get widget :w3-form-data))
         (buff (get-buffer-create (format "Form Entry: %s"
@@ -796,15 +790,12 @@ This can be used as the :help-echo property of all w3 
form entry widgets."
                        (cons (w3-form-element-name formobj)
                              (w3-form-element-value formobj))))
                   (file
-                   (let ((dat nil)
-                         (fname (widget-value widget)))
-                     (save-excursion
-                       (set-buffer (get-buffer-create " *w3-temp*"))
+                   (let ((fname (widget-value widget)))
+                     (with-current-buffer (get-buffer-create " *w3-temp*")
                        (erase-buffer)
-                       (setq dat
-                             (condition-case ()
-                                 (insert-file-contents-literally fname)
-                               (error (concat "Error accessing " fname))))
+                        (condition-case ()
+                            (insert-file-contents-literally fname)
+                          (error (concat "Error accessing " fname)))
                        (cons (w3-form-element-name formobj)
                              (cons (list (cons
                                           "filename"
@@ -819,12 +810,12 @@ This can be used as the :help-echo property of all w3 
form entry widgets."
                    (condition-case ()
                        (require 'ssl)
                      (error (error "Not configured for SSL, please read the 
info pages")))
-                   (if (fboundp 'ssl-req-user-cert) nil
-                     (error "This version of SSL isn't capable of requesting 
certificates"))
-                   (let ((challenge (plist-get (w3-form-element-plist formobj) 
'challenge))
-                         (size (widget-value widget)))
-                     (cons (w3-form-element-name formobj)
-                           (ssl-req-user-cert size challenge))))
+                   (if (not (fboundp 'ssl-req-user-cert))
+                        (error "This version of SSL isn't capable of 
requesting certificates")
+                      (let ((challenge (plist-get (w3-form-element-plist 
formobj) 'challenge))
+                            (size (widget-value widget)))
+                        (cons (w3-form-element-name formobj)
+                              (ssl-req-user-cert size challenge)))))
                   ((multiline hidden)
                    (cons (w3-form-element-name formobj)
                          (w3-form-element-value formobj)))
diff --git a/w3-hot.el b/w3-hot.el
index 85f65e4..60a9491 100644
--- a/w3-hot.el
+++ b/w3-hot.el
@@ -1,40 +1,35 @@
 ;;; w3-hot.el --- Main functions for emacs-w3 on all platforms/versions
-;; Author: $Author: fx $
-;; Created: $Date: 2001/05/14 15:51:54 $
-;; Version: $Revision: 1.4 $
-;; Keywords: faces, help, comm, news, mail, processes, mouse, hypermedia
 
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; Copyright (c) 1993 - 1996 by William M. Perry <address@hidden>
-;;; Copyright (c) 1996 - 1999 Free Software Foundation, Inc.
-;;;
-;;; This file is part of GNU Emacs.
-;;;
-;;; GNU Emacs is free software; you can redistribute it and/or modify
-;;; it under the terms of the GNU General Public License as published by
-;;; the Free Software Foundation; either version 2, or (at your option)
-;;; any later version.
-;;;
-;;; GNU Emacs is distributed in the hope that it will be useful,
-;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;;; GNU General Public License for more details.
-;;;
-;;; You should have received a copy of the GNU General Public License
-;;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;;; Boston, MA 02111-1307, USA.
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Copyright (c) 1996 - 1999, 2013 Free Software Foundation, Inc.
+
+;; This file is part of GNU Emacs.
+;;
+;; GNU Emacs is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 3, or (at your option)
+;; any later version.
+;;
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
+
+;;; Code:
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;; Structure for hotlists
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; (
-;;;  ("name of item1" . "http://foo.bar.com/";)    ;; A single item in hotlist
-;;;  ("name of item2" . (                         ;; A sublist
-;;;                      ("name of item3" . "http://www.ack.com/";)
-;;;                     ))
-;;; )  ; end of hotlist
+;; (
+;;  ("name of item1" . "http://foo.bar.com/";)    ;; A single item in hotlist
+;;  ("name of item2" . (                         ;; A sublist
+;;                      ("name of item3" . "http://www.ack.com/";)
+;;                     ))
+;; )  ; end of hotlist
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 (require 'w3-vars)
 (require 'w3-parse)
@@ -52,8 +47,7 @@
   (interactive "fBookmark file: ")
   (if (not (file-readable-p fname))
       (error "Can not read %s..." fname))
-  (save-excursion
-    (set-buffer (get-buffer-create " *bookmark-work*"))
+  (with-current-buffer (get-buffer-create " *bookmark-work*")
     (erase-buffer)
     (insert-file-contents fname)
     (let* ((w3-debug-html nil)
@@ -63,37 +57,35 @@
            bkmarks (nreverse (w3-grok-html-bookmarks parse))
            w3-hotlist bkmarks))))
 
-(eval-when-compile
-  (defsubst w3-hot-push-new-menu ()
-    (declare (special cur-stack))
-    (setq cur-stack (cons (list "") cur-stack)))
+(defvar w3--cur-stack)
+
+(defsubst w3-hot-push-new-menu ()
+  (setq w3--cur-stack (cons (list "") w3--cur-stack)))
 
-  ;; This stores it in menu format
-  '(defsubst w3-hot-push-new-item (title href)
-    (declare (special cur-stack))
-    (setcar cur-stack (cons (vector title (list 'w3-fetch href) t)
-                           (car cur-stack))))
+;; This stores it in menu format
+'(defsubst w3-hot-push-new-item (title href)
+   (setcar w3--cur-stack (cons (vector title (list 'w3-fetch href) t)
+                           (car w3--cur-stack))))
+
+;; This stores it in alist format
+(defsubst w3-hot-push-new-item (title href)
+  (setcar w3--cur-stack (cons (cons title href) (car w3--cur-stack))))
+
+(defvar w3--cur-title)
+
+(defsubst w3-hot-finish-submenu ()
+  (let ((x (nreverse (car w3--cur-stack)))
+        (y (pop w3--cur-title)))
+    (while (string= y "")
+      (setq y (pop w3--cur-title)))
+    (and x (setcar x y))
+    (setq w3--cur-stack (cdr w3--cur-stack))
+    (if w3--cur-stack
+        (setcar w3--cur-stack (cons x (car w3--cur-stack)))
+      (setq w3--cur-stack (list x)))))
 
-  ;; This stores it in alist format
-  (defsubst w3-hot-push-new-item (title href)
-    (declare (special cur-stack))
-    (setcar cur-stack (cons (cons title href) (car cur-stack))))
-  
-  (defsubst w3-hot-finish-submenu ()
-    (declare (special cur-stack cur-title))
-    (let ((x (nreverse (car cur-stack)))
-         (y (pop cur-title)))
-      (while (string= y "")
-       (setq y (pop cur-title)))
-      (and x (setcar x y))
-      (setq cur-stack (cdr cur-stack))
-      (if cur-stack
-         (setcar cur-stack (cons x (car cur-stack)))
-       (setq cur-stack (list x)))))
-  )
 
 (defun w3-grok-html-bookmarks-internal (tree)
-  (declare (special cur-stack cur-title))
   (let (node tag content args)
     (while tree
       (setq node (car tree)
@@ -103,9 +95,9 @@
            content (and (listp node) (nth 2 node)))
       (cond
        ((eq tag 'hr)
-       (setq cur-title '("------")))
+       (setq w3--cur-title '("------")))
        ((eq tag 'title)
-       (setq cur-title (list (w3-normalize-spaces (car content))))
+       (setq w3--cur-title (list (w3-normalize-spaces (car content))))
        (w3-grok-html-bookmarks-internal content))
        ((memq tag '(dl ol ul))
        (w3-hot-push-new-menu)
@@ -113,8 +105,8 @@
        (w3-hot-finish-submenu))
        ((and (memq tag '(dt li p))
             (stringp (car content)))
-       (setq cur-title (cons (w3-normalize-spaces (car content))
-                             cur-title)))
+       (setq w3--cur-title (cons (w3-normalize-spaces (car content))
+                             w3--cur-title)))
        ((and (eq tag 'a)
             (stringp (car-safe content))
             (cdr-safe (assq 'href args)))
@@ -125,33 +117,34 @@
 
 (defun w3-grok-html-bookmarks (chunk)
   (let (
-       cur-title
-       cur-stack
+       w3--cur-title
+       w3--cur-stack
        )
     (w3-grok-html-bookmarks-internal chunk)
-    (reverse (car cur-stack))))
+    (reverse (car w3--cur-stack))))
 
-(defun w3-hot-convert-to-alist-mapper (node)
-  (declare (special prefix alist))
-  (cond
-   ((stringp node)
-    ;; Top-level node... ignore
-    )
-   ((stringp (cdr node))
-    ;; A real hyperlink, push it onto the alist
-    (push (cons (if prefix (concat prefix " / " (car node)) (car node)) (cdr 
node)) alist))
-   (t
-    ;; A submenu, add to prefix and recurse
-    (w3-hot-convert-to-alist-internal
-     (cdr node) (if prefix (concat prefix " / " (car node)) (car node))))))
+(defvar w3--alist)
 
 (defun w3-hot-convert-to-alist-internal (l &optional prefix)
-  (mapc 'w3-hot-convert-to-alist-mapper l))
+  (dolist (node l)
+    (cond
+     ((stringp node)
+      ;; Top-level node... ignore.
+      )
+     ((stringp (cdr node))
+      ;; A real hyperlink, push it onto the alist.
+      (push (cons (if prefix (concat prefix " / " (car node)) (car node))
+                  (cdr node))
+            w3--alist))
+     (t
+      ;; A submenu, add to prefix and recurse.
+      (w3-hot-convert-to-alist-internal
+       (cdr node) (if prefix (concat prefix " / " (car node)) (car node)))))))
 
 (defun w3-hot-convert-to-alist (l)
-  (let ((alist nil))
+  (let ((w3--alist nil))
     (w3-hot-convert-to-alist-internal l)
-    alist))
+    w3--alist))
        
 (defun w3-delete-from-alist (x alist)
   ;; Remove X from ALIST, return new alist
@@ -161,7 +154,8 @@
 (defun w3-hotlist-parse-old-mosaic-format ()
   (let (cur-link cur-alias)
     (while (re-search-forward "^\n" nil t) (replace-match ""))
-    (goto-line 3)
+    (goto-char (point-min))
+    (forward-line 2)
     (while (not (eobp))
       (re-search-forward "^[^ ]*" nil t)
       (setq cur-link (buffer-substring (match-beginning 0) (match-end 0)))
@@ -182,24 +176,22 @@
   (setq w3-hotlist nil)
   (if (not (file-exists-p fname))
       (message "%s does not exist!" fname)
-    (let* ((old-buffer (current-buffer))
-          (buffer (get-buffer-create " *HOTW3*"))
+    (let* ((buffer (get-buffer-create " *HOTW3*"))
           (case-fold-search t))
-      (set-buffer buffer)
-      (erase-buffer)
-      (insert-file-contents fname)
-      (goto-char (point-min))
-      (cond
-       ((looking-at "ncsa-xmosaic-hotlist-format-1");; Old-style NCSA Mosaic
-       (w3-hotlist-parse-old-mosaic-format))
-       ((or (looking-at "<!DOCTYPE")   ; Some HTML style, including netscape
-           (re-search-forward "<a[ \n]+href" nil t))
-       (w3-read-html-bookmarks fname))
-       (t
-       (message "Cannot determine format of hotlist file: %s" fname)))
-      (set-buffer-modified-p nil)
-      (kill-buffer buffer)
-      (set-buffer old-buffer))))
+      (with-current-buffer buffer
+        (erase-buffer)
+        (insert-file-contents fname)
+        (goto-char (point-min))
+        (cond
+         ((looking-at "ncsa-xmosaic-hotlist-format-1") ;; Old-style NCSA Mosaic
+          (w3-hotlist-parse-old-mosaic-format))
+         ((or (looking-at "<!DOCTYPE") ; Some HTML style, including netscape
+              (re-search-forward "<a[ \n]+href" nil t))
+          (w3-read-html-bookmarks fname))
+         (t
+          (message "Cannot determine format of hotlist file: %s" fname)))
+        (set-buffer-modified-p nil)
+        (kill-buffer buffer)))))
 
 ;;;###autoload
 (defun w3-use-hotlist ()
@@ -233,7 +225,7 @@ visited or interesting items you have found on the World 
Wide Web."
     (w3-hotlist-add-document pref-arg (or title url) url)))
 
 ;;;###autoload
-(defun w3-hotlist-add-document (pref-arg &optional the-title the-url)
+(defun w3-hotlist-add-document (_pref-arg &optional _the-title _the-url)
   "Add this documents url to the hotlist"
   (interactive "P")
   (error "Adding to hotlist not implemented yet."))
diff --git a/w3-hotindex.el b/w3-hotindex.el
index 1cb683f..e75e07d 100644
--- a/w3-hotindex.el
+++ b/w3-hotindex.el
@@ -1,18 +1,40 @@
 ;;; w3-hotindex.el --- Keywords for the hotlist
+
+;; Copyright (C) 2013  Free Software Foundation, Inc.
+
 ;; Author: Laurent Martelli <address@hidden>
 ;; Created: 1997/12/31
-;; Version: 0.1
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
 ;; TODO:
 ;;   patch w3-hot.el so that it removes hotindex entries.
 ;;   update w3-hotindex-key-list when removing entries.
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; Structure for hotindexes
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; (
-;;;  ("name of item1" "key1" "key2")
-;;; )  ; end of hotlist
-;;; Every "name of item" must be in the hotlist
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Structure for hotindexes
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; (
+;;  ("name of item1" "key1" "key2")
+;; )  ; end of hotlist
+;; Every "name of item" must be in the hotlist
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;;; Code:
 
 (require 'w3-vars)
 (require 'w3-hot)
@@ -150,15 +172,17 @@ Case is therefore important."
     (while index
       (if (member-nocase key (cdr (car index)))
          (progn
-           (setq result (cons (assoc-ignore-case (caar index) w3-hotlist) 
result))
+           (push (assoc-string (caar index) w3-hotlist t) result)
            (message "MATCH in %S" (car index))
-           (message "ADDING %S" (assoc-ignore-case (caar index) w3-hotlist)))
+           (message "ADDING %S" (assoc-string (caar index) w3-hotlist t)))
        (message "no match in %S" (car index)))
       (setq index (cdr index)))
     (let ((w3-hotlist result)
          (w3-reuse-buffers 'no))
       (w3-hotlist-view))))
 
+(defvar print-readably)
+
 (defun w3-hotindex-save (filename)
   "*Save the index structure in filename. If filename is nil, 
 save into w3-configuration-directory/hotindex."
@@ -166,8 +190,7 @@ save into w3-configuration-directory/hotindex."
   (let ((output-buffer 
         (find-file-noselect (or filename w3-hotindex-file)))
        output-marker)
-    (save-excursion
-      (set-buffer output-buffer)
+    (with-current-buffer output-buffer
       ;; Delete anything that is in the file
       (delete-region (point-min) (point-max))
       (setq output-marker (point-marker))
@@ -181,8 +204,7 @@ save into w3-configuration-directory/hotindex."
        (princ ")\n;; ==================\n")
        (princ ";; End of W3 HotIndex\n")))
     (set-marker output-marker nil)
-    (save-excursion
-      (set-buffer output-buffer)
+    (with-current-buffer output-buffer
       (save-buffer))
     ))
 
@@ -191,7 +213,7 @@ save into w3-configuration-directory/hotindex."
 Raises an error if some entries are unresolved."
   (let ((index w3-hotindex) unresolved)
     (while index
-      (unless (assoc-ignore-case (caar index) w3-hotlist)
+      (unless (assoc-string (caar index) w3-hotlist t)
        (setq unresolved (cons (caar index) unresolved)))
       (setq index (cdr index)))
     (if unresolved
diff --git a/w3-imap.el b/w3-imap.el
index 99948cf..8f8ae11 100644
--- a/w3-imap.el
+++ b/w3-imap.el
@@ -1,30 +1,29 @@
 ;;; w3-imap.el --- Imagemap functions
+
+;; Copyright (c) 1996-1999, 2013 Free Software Foundation, Inc.
+
 ;; Author: $Author: legoscia $
 ;; Created: $Date: 2006/10/12 21:32:16 $
-;; Version: $Revision: 1.5 $
 ;; Keywords: hypermedia
 
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; Copyright (c) 1996 by William M. Perry <address@hidden>
-;;; Copyright (c) 1996 - 1999 Free Software Foundation, Inc.
-;;;
-;;; This file is part of GNU Emacs.
-;;;
-;;; GNU Emacs is free software; you can redistribute it and/or modify
-;;; it under the terms of the GNU General Public License as published by
-;;; the Free Software Foundation; either version 2, or (at your option)
-;;; any later version.
-;;;
-;;; GNU Emacs is distributed in the hope that it will be useful,
-;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;;; GNU General Public License for more details.
-;;;
-;;; You should have received a copy of the GNU General Public License
-;;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;;; Boston, MA 02111-1307, USA.
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; This file is part of GNU Emacs.
+;;
+;; GNU Emacs is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 3, or (at your option)
+;; any later version.
+;;
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
+
+;;; Code:
 
 (require 'w3-vars)
 (require 'url)
@@ -37,38 +36,38 @@
   (defmacro x-coord (pt) (list 'aref pt 0))
   (defmacro y-coord (pt) (list 'aref pt 1)))
 
-(defun w3-point-in-rect (point coord1 coord2 &rest ignore)
-  "Return t iff POINT is within a rectangle defined by COORD1 and COORD2.
-All arguments are vectors of [X Y] coordinates."
-  ;; D'uhhh, this is hard.
-  (and (>= (x-coord point) (x-coord coord1))
-       (<= (x-coord point) (x-coord coord2))
-       (>= (y-coord point) (y-coord coord1))
-       (<= (y-coord point) (y-coord coord2))))
-
-(defun w3-point-in-circle (point coord1 coord2 &rest ignore)
-  "Return t iff POINT is within a circle defined by COORD1 and COORD2.
-All arguments are vectors of [X Y] coordinates."
-  ;; D'uhhh, this is (barely) slightly harder.
-  (let (radius1 radius2)
-    (setq radius1 (+
-                  (*
-                   (- (y-coord coord1) (y-coord coord2))
-                   (- (y-coord coord1) (y-coord coord2)))
-                  (*
-                   (- (x-coord coord1) (x-coord coord2))
-                   (- (x-coord coord1) (x-coord coord2)))
-                  )
-         radius2 (+
-                  (*
-                   (- (y-coord coord1) (y-coord point))
-                   (- (y-coord coord1) (y-coord point)))
-                  (*
-                   (- (x-coord coord1) (x-coord point))
-                   (- (x-coord coord1) (x-coord point)))
-                  )
-         )
-    (<= radius2 radius1)))
+;; (defun w3-point-in-rect (point coord1 coord2 &rest _ignore)
+;;   "Return t iff POINT is within a rectangle defined by COORD1 and COORD2.
+;; All arguments are vectors of [X Y] coordinates."
+;;   ;; D'uhhh, this is hard.
+;;   (and (>= (x-coord point) (x-coord coord1))
+;;        (<= (x-coord point) (x-coord coord2))
+;;        (>= (y-coord point) (y-coord coord1))
+;;        (<= (y-coord point) (y-coord coord2))))
+
+;; (defun w3-point-in-circle (point coord1 coord2 &rest _ignore)
+;;   "Return t iff POINT is within a circle defined by COORD1 and COORD2.
+;; All arguments are vectors of [X Y] coordinates."
+;;   ;; D'uhhh, this is (barely) slightly harder.
+;;   (let (radius1 radius2)
+;;     (setq radius1 (+
+;;                (*
+;;                 (- (y-coord coord1) (y-coord coord2))
+;;                 (- (y-coord coord1) (y-coord coord2)))
+;;                (*
+;;                 (- (x-coord coord1) (x-coord coord2))
+;;                 (- (x-coord coord1) (x-coord coord2)))
+;;                )
+;;       radius2 (+
+;;                (*
+;;                 (- (y-coord coord1) (y-coord point))
+;;                 (- (y-coord coord1) (y-coord point)))
+;;                (*
+;;                 (- (x-coord coord1) (x-coord point))
+;;                 (- (x-coord coord1) (x-coord point)))
+;;                )
+;;       )
+;;     (<= radius2 radius1)))
 
 ;; A polygon is a vector
 ;; poly[0] = # of sides
@@ -170,8 +169,8 @@ vectors."
        (setq i (1+ i)))
       (= 1 (% hitcount 2)))))
 
-(defun w3-point-in-default (point &rest ignore)
-  t)
+;; (defun w3-point-in-default (_point &rest _ignore)
+;;   t)
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
diff --git a/w3-java.el b/w3-java.el
index 289a978..60cb8d5 100644
--- a/w3-java.el
+++ b/w3-java.el
@@ -1,29 +1,30 @@
 ;;; w3-java.el --- Rudimentary java support
+
+;; Copyright (c) 1999, 2008, 2013 Free Software Foundation, Inc.
+
 ;; Author: $Author: fx $
 ;; Created: $Date: 2002/01/22 18:31:50 $
-;; Version: $Revision: 1.3 $
 ;; Keywords: hypermedia, scripting
 
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; Copyright (c) 1999, 2008 Free Software Foundation, Inc.
-;;;
-;;; This file is part of GNU Emacs.
-;;;
-;;; GNU Emacs is free software; you can redistribute it and/or modify
-;;; it under the terms of the GNU General Public License as published by
-;;; the Free Software Foundation; either version 2, or (at your option)
-;;; any later version.
-;;;
-;;; GNU Emacs is distributed in the hope that it will be useful,
-;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;;; GNU General Public License for more details.
-;;;
-;;; You should have received a copy of the GNU General Public License
-;;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;;; Boston, MA 02111-1307, USA.
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; This file is part of GNU Emacs.
+;;
+;; GNU Emacs is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 3, or (at your option)
+;; any later version.
+;;
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
+
+;;; Code:
+
 (require 'mailcap)
 (require 'url-util)                    ; for `url-generate-unique-filename'
 
@@ -33,23 +34,21 @@
   :group 'w3)
 
 (defcustom w3-java-vm-program "hotjava"
-  "*The program name of the Java virtual machine."
+  "The program name of the Java virtual machine."
   :type '(choice (string :tag "External program")
-                (function :tag "Lisp function"))
-  :group 'w3-java)
+                (function :tag "Lisp function")))
 
 (defcustom w3-java-vm-arguments '(file)
-  "*Arguments that should be passed to the program `w3-java-vm-program'.
+  "Arguments that should be passed to the program `w3-java-vm-program'.
 The special symbol 'file may be used in the list of arguments and will
 be replaced with the name of a file containing the commands to run a
 Java applet."
-  :type 'list
-  :group 'w3-java)
+  :type 'list)
 
 (defun w3-java-run-applet (options params)
-  (let ((file (url-generate-unique-filename "%s-runjava.html")))
-    (save-excursion
-      (set-buffer (get-buffer-create " *java*"))
+  (defvar file)
+  (let ((file (make-temp-file "w3-" nil "-runjava.html")))
+    (with-current-buffer (get-buffer-create " *java*")
       (erase-buffer)
       (insert "<html>\n"
              " <head>\n"
@@ -66,7 +65,10 @@ Java applet."
              "  <applet "
              (mapconcat (lambda (x) (format "%s=\"%s\"" (car x) (cdr x))) 
options " ")
              ">\n"
-             (mapconcat (lambda (x) (format "   <param name=\"%s\" 
value=\"%s\">" (car x) (cdr x))) params "\n")
+             (mapconcat (lambda (x)
+                           (format "   <param name=\"%s\" value=\"%s\">"
+                                   (car x) (cdr x)))
+                         params "\n")
              "  </applet>\n"
              " </body>\n"
              "</html>\n")
@@ -78,9 +80,9 @@ Java applet."
            (setq proc (eval
                        `(start-process name buffer w3-java-vm-program
                                        ,@w3-java-vm-arguments)))
-           (process-kill-without-query proc)
+           (set-process-query-on-exit-flag proc nil)
            proc)
        (eval `(funcall w3-java-vm-program
-                         ,@w3-java-vm-arguments))))))
+                        ,@w3-java-vm-arguments))))))
 
 (provide 'w3-java)
diff --git a/w3-keymap.el b/w3-keymap.el
index 49ac088..9c43f82 100644
--- a/w3-keymap.el
+++ b/w3-keymap.el
@@ -1,119 +1,121 @@
 ;;; w3-keymap.el --- Keybindings for Emacs/W3
+
+;; Copyright (c) 1996 - 1999, 2013 Free Software Foundation, Inc.
+
 ;; Author: $Author: fx $
 ;; Created: $Date: 2001/05/29 15:46:28 $
-;; Version: $Revision: 1.2 $
 ;; Keywords: comm, help, hypermedia
 
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; Copyright (c) 1993 - 1996 by William M. Perry <address@hidden>
-;;; Copyright (c) 1996 - 1999 Free Software Foundation, Inc.
-;;;
-;;; This file is part of GNU Emacs.
-;;;
-;;; GNU Emacs is free software; you can redistribute it and/or modify
-;;; it under the terms of the GNU General Public License as published by
-;;; the Free Software Foundation; either version 2, or (at your option)
-;;; any later version.
-;;;
-;;; GNU Emacs is distributed in the hope that it will be useful,
-;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;;; GNU General Public License for more details.
-;;;
-;;; You should have received a copy of the GNU General Public License
-;;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;;; Boston, MA 02111-1307, USA.
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; This file is part of GNU Emacs.
+;;
+;; GNU Emacs is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 3, or (at your option)
+;; any later version.
+;;
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
+
+;;; Code:
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;;  Keymap definitions
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-(defvar w3-mode-map (make-sparse-keymap) "Keymap to use in w3-mode.")
-(suppress-keymap w3-mode-map)
-(set-keymap-parent w3-mode-map widget-keymap)
+(defvar w3-mode-map
+  (let ((map (make-sparse-keymap)))
+    (suppress-keymap map)
+    (set-keymap-parent map widget-keymap)
 
-(define-key w3-mode-map "h" (make-sparse-keymap))
-(define-key w3-mode-map "H" (make-sparse-keymap))
-(define-key w3-mode-map "a" (make-sparse-keymap))
+    (define-key map "h" (make-sparse-keymap))
+    (define-key map "H" (make-sparse-keymap))
+    (define-key map "a" (make-sparse-keymap))
 
-(define-key w3-mode-map "ha"       'w3-hotlist-apropos)
-(define-key w3-mode-map "hd"       'w3-hotlist-delete)
-(define-key w3-mode-map "hi"       'w3-hotlist-add-document)
-(define-key w3-mode-map "hv"       'w3-hotlist-view)
-(define-key w3-mode-map "hr"       'w3-hotlist-rename-entry)
-(define-key w3-mode-map "hu"       'w3-use-hotlist)
-(define-key w3-mode-map "hA"       'w3-hotlist-append)
-(define-key w3-mode-map "hI"       'w3-hotlist-add-document-at-point)
-(define-key w3-mode-map "hR"       'w3-hotlist-refresh)
+    (define-key map "ha"       'w3-hotlist-apropos)
+    (define-key map "hd"       'w3-hotlist-delete)
+    (define-key map "hi"       'w3-hotlist-add-document)
+    (define-key map "hv"       'w3-hotlist-view)
+    (define-key map "hr"       'w3-hotlist-rename-entry)
+    (define-key map "hu"       'w3-use-hotlist)
+    (define-key map "hA"       'w3-hotlist-append)
+    (define-key map "hI"       'w3-hotlist-add-document-at-point)
+    (define-key map "hR"       'w3-hotlist-refresh)
 
-(define-key w3-mode-map "x" (make-sparse-keymap))
-(define-key w3-mode-map "xa" 'w3-hotindex-add-key)
-(define-key w3-mode-map "xd" 'w3-hotindex-rm-key)
-(define-key w3-mode-map "xq" 'w3-hotindex-query)
+    (define-key map "x" (make-sparse-keymap))
+    (define-key map "xa" 'w3-hotindex-add-key)
+    (define-key map "xd" 'w3-hotindex-rm-key)
+    (define-key map "xq" 'w3-hotindex-query)
 
-(define-key w3-mode-map "HF"       'w3-history-forward)
-(define-key w3-mode-map "HB"       'w3-history-backward)
-(define-key w3-mode-map "Hv"       'w3-show-history-list)
+    (define-key map "HF"       'w3-history-forward)
+    (define-key map "HB"       'w3-history-backward)
+    (define-key map "Hv"       'w3-show-history-list)
 
-(define-key w3-mode-map " "       'w3-scroll-up)
-(define-key w3-mode-map "<"        'beginning-of-buffer)
-(define-key w3-mode-map ">"        'end-of-buffer)
-(define-key w3-mode-map "?"        'w3-help)
-(define-key w3-mode-map "B"        'w3-history-backward)
-(define-key w3-mode-map "D"        'w3-download-url-at-point)
-(define-key w3-mode-map "F"        'w3-history-forward)
-(define-key w3-mode-map "G"        'w3-show-graphics)
-(define-key w3-mode-map "I"        'w3-popup-info)
-(define-key w3-mode-map "K"        'w3-save-this-url)
-;; FIXME!
-;;(define-key w3-mode-map "P"        'w3-print-url-under-point)
-(define-key w3-mode-map "Q"        'w3-leave-buffer)
-(define-key w3-mode-map "R"        'w3-refresh-buffer)
-(define-key w3-mode-map "S"        'w3-source-document-at-point)
-(define-key w3-mode-map "U"        'w3-use-links)
-(define-key w3-mode-map "V"        'w3-view-this-url)
-(define-key w3-mode-map "\C-?"     'scroll-down)
-(define-key w3-mode-map [backspace] 'scroll-down)
-(define-key w3-mode-map "\C-c\C-b" 'w3-show-history-list)
-(define-key w3-mode-map "\C-c\C-v" 'w3-version)
-(define-key w3-mode-map "\C-o"     'w3-fetch)
-(define-key w3-mode-map "\M-M"     'w3-mail-document-under-point)
-(define-key w3-mode-map "\M-m"    'w3-mail-current-document)
-(define-key w3-mode-map "\M-s"    'w3-save-as)
-(define-key w3-mode-map "\M-\r"    'w3-follow-inlined-image)
-(define-key w3-mode-map "b"       'w3-widget-backward)
-(define-key w3-mode-map "c"        'w3-mail-document-author)
-(define-key w3-mode-map "d"        'w3-download-this-url)
-(define-key w3-mode-map "f"       'w3-widget-forward)
-(define-key w3-mode-map "g"        'w3-reload-document)
-(define-key w3-mode-map "i"        'w3-document-information)
-(define-key w3-mode-map "k"        'w3-save-url)
-(define-key w3-mode-map "l"        'w3-goto-last-buffer)
-(define-key w3-mode-map "m"        'w3-complete-link)
-(define-key w3-mode-map "n"        'w3-widget-forward)
-(define-key w3-mode-map "o"       'w3-open-local)
-(define-key w3-mode-map "p"        'w3-print-this-url)
-(define-key w3-mode-map "q"       'w3-quit)
-(define-key w3-mode-map "r"        'w3-reload-document)
-(define-key w3-mode-map "s"        'w3-source-document)
-(define-key w3-mode-map "u"        'w3-leave-buffer)
-(define-key w3-mode-map "v"       'url-view-url)
-(define-key w3-mode-map "w"        'w3-submit-bug)
+    (define-key map " "           'w3-scroll-up)
+    (define-key map "<"        'beginning-of-buffer)
+    (define-key map ">"        'end-of-buffer)
+    (define-key map "?"        'w3-help)
+    (define-key map "B"        'w3-history-backward)
+    (define-key map "D"        'w3-download-url-at-point)
+    (define-key map "F"        'w3-history-forward)
+    (define-key map "G"        'w3-show-graphics)
+    (define-key map "I"        'w3-popup-info)
+    (define-key map "K"        'w3-save-this-url)
+    ;; FIXME!
+    ;;(define-key map "P"        'w3-print-url-under-point)
+    (define-key map "Q"        'w3-leave-buffer)
+    (define-key map "R"        'w3-refresh-buffer)
+    (define-key map "S"        'w3-source-document-at-point)
+    (define-key map "U"        'w3-use-links)
+    (define-key map "V"        'w3-view-this-url)
+    (define-key map "\C-?"     'scroll-down)
+    (define-key map [backspace] 'scroll-down)
+    (define-key map "\C-c\C-b" 'w3-show-history-list)
+    (define-key map "\C-c\C-v" 'w3-version)
+    (define-key map "\C-o"     'w3-fetch)
+    (define-key map "\M-M"     'w3-mail-document-under-point)
+    (define-key map "\M-m"        'w3-mail-current-document)
+    (define-key map "\M-s"        'w3-save-as)
+    (define-key map "\M-\r"    'w3-follow-inlined-image)
+    (define-key map "b"           'w3-widget-backward)
+    (define-key map "c"        'w3-mail-document-author)
+    (define-key map "d"        'w3-download-this-url)
+    (define-key map "f"           'w3-widget-forward)
+    (define-key map "g"        'w3-reload-document)
+    (define-key map "i"        'w3-document-information)
+    (define-key map "k"        'w3-save-url)
+    (define-key map "l"        'w3-goto-last-buffer)
+    (define-key map "m"        'w3-complete-link)
+    (define-key map "n"        'w3-widget-forward)
+    (define-key map "o"           'w3-open-local)
+    (define-key map "p"        'w3-print-this-url)
+    (define-key map "q"           'w3-quit)
+    (define-key map "r"        'w3-reload-document)
+    (define-key map "s"        'w3-source-document)
+    (define-key map "u"        'w3-leave-buffer)
+    (define-key map "v"           'url-view-url)
+    (define-key map "w"        'w3-submit-bug)
 
-;; These are duplicated here instead of just inherited from widget-keymap
-;; due to some issues with Emacspeak.  FIXME.
-(define-key w3-mode-map [tab] 'w3-widget-forward)
-(define-key w3-mode-map [(shift tab)] 'w3-widget-backward)
-(define-key w3-mode-map [(meta tab)] 'w3-widget-backward)
-(define-key w3-mode-map [backtab] 'w3-widget-backward)
+    ;; These are duplicated here instead of just inherited from widget-keymap
+    ;; due to some issues with Emacspeak.  FIXME.
+    (define-key map [tab] 'w3-widget-forward)
+    (define-key map [(shift tab)] 'w3-widget-backward)
+    (define-key map [(meta tab)] 'w3-widget-backward)
+    (define-key map [backtab] 'w3-widget-backward)
 
-;; Emulate some netscape stuff by default
-(define-key w3-mode-map [(control alt t)] 'url-list-processes)
-(define-key w3-mode-map [(control meta t)] 'url-list-processes)
+    ;; Emulate some netscape stuff by default
+    (define-key map [(control alt t)] 'url-list-processes)
+    (define-key map [(control meta t)] 'url-list-processes)
 
-;; Have fun with document ordering
-(define-key w3-mode-map [(meta space)] 'w3-next-document)
-(define-key w3-mode-map [(meta delete)] 'w3-prev-document)
+    ;; Have fun with document ordering
+    (define-key map [(meta space)] 'w3-next-document)
+    (define-key map [(meta delete)] 'w3-prev-document)
+    map)
+  "Keymap to use in w3-mode.")
 
 (provide 'w3-keymap)
diff --git a/w3-latex.el b/w3-latex.el
index b141997..ae12cbb 100644
--- a/w3-latex.el
+++ b/w3-latex.el
@@ -1,45 +1,50 @@
 ;;; w3-latex.el --- Emacs-W3 printing via LaTeX
+
+;; Copyright (c) 1996-1997, 2013  Free Software Foundation, Inc.
+
 ;; Author: wmperry
 ;; Created: 1996/06/30 18:08:34
-;; Version: 1.3
 ;; Keywords: hypermedia, printing, typesetting
 
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; Copyright (c) 1996, 1997 by Stephen Peters <address@hidden>
-;;;
-;;; This file is part of GNU Emacs.
-;;;
-;;; GNU Emacs is free software; you can redistribute it and/or modify
-;;; it under the terms of the GNU General Public License as published by
-;;; the Free Software Foundation; either version 2, or (at your option)
-;;; any later version.
-;;;
-;;; GNU Emacs is distributed in the hope that it will be useful,
-;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;;; GNU General Public License for more details.
-;;;
-;;; You should have received a copy of the GNU General Public License
-;;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;;; Boston, MA 02111-1307, USA.
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; Elisp code to convert a W3 parse tree into a LaTeX buffer.
-;;;
-;;; Heavily hacked upon by William Perry <address@hidden> to add more
-;;; bells and whistles.
-;;;
-;;; KNOWN BUGS:
-;;; 1) This does not use stylesheets to get the formatting information
-;;; 2) This means that the new drawing routines need to be abstracted
-;;;    further so that the same main engine can be used for either
-;;;    text-output (standard stuff in w3-draw), LaTeX output (this file),
-;;;    Postscript (to-be-implemented), etc., etc.
-;;; 3) This still doesn't handle tables.
-;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; This file is part of GNU Emacs.
+;;
+;; GNU Emacs is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 3, or (at your option)
+;; any later version.
+;;
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
+
+;;; Commentary:
+
+;; Elisp code to convert a W3 parse tree into a LaTeX buffer.
+;;
+;; Heavily hacked upon by William Perry <address@hidden> to add more
+;; bells and whistles.
+;;
+;; KNOWN BUGS:
+;; 1) This does not use stylesheets to get the formatting information
+;; 2) This means that the new drawing routines need to be abstracted
+;;    further so that the same main engine can be used for either
+;;    text-output (standard stuff in w3-draw), LaTeX output (this file),
+;;    Postscript (to-be-implemented), etc., etc.
+;; 3) This still doesn't handle tables.
+;;
+
+;;; Code:
+
 (require 'w3-cus)
 (require 'w3-print)
+(require 'w3-vars)
+(require 'url-vars)
 
 ;; Internal variables - do not touch!
 (defvar w3-latex-current-url nil "What URL we are formatting")
@@ -143,7 +148,14 @@
     (yacute . "\\'{y}")
 ;   (thorn . "")
     (yuml . "\\\"{y}"))
-  "Defines mappings between `w3-html-entities' and LaTeX characters.") 
+  "Defines mappings between `w3-html-entities' and LaTeX characters.")
+
+(defvar w3-latex-use-maketitle t)
+(defvar w3-latex-print-links t
+  "Can be nil, t, or `footnote'.")
+(defvar w3-latex-use-latex2e t)
+(defvar w3-latex-docstyle "{article}")
+(defvar w3-latex-packages nil)
 
 (defun w3-latex-replace-entities (str)
   (let ((start 0))
@@ -173,8 +185,7 @@
     (if w3-latex-verbatim
        (setq todo (append todo '(("\n" . "\\\\newline\\\\nullspace\n")
                                  (" " . "\\\\ ")))))
-    (save-excursion
-      (set-buffer (get-buffer-create " *w3-latex-munging*"))
+    (with-current-buffer (get-buffer-create " *w3-latex-munging*")
       (erase-buffer)
       (insert str)
       (while todo
@@ -185,7 +196,7 @@
       (setq str (w3-latex-replace-entities (buffer-string))))
     (insert str)))
 
-(defun w3-latex-ignore (tree)
+(defun w3-latex-ignore (_tree)
   ;;; ignores any contents of this tree.
   nil)
 
@@ -211,9 +222,9 @@
   (insert "\\end{document}\n"))
 
 (defun w3-latex-title (tree)
-  (if w3-latex-use-maketitle
-      (insert "\\title{")
-    (insert "\\section*{\\centering "))
+  (insert (if w3-latex-use-maketitle
+              "\\title{"
+            "\\section*{\\centering "))
   (w3-latex-contents tree)
   (insert "}\n")
   (if w3-latex-use-maketitle
@@ -281,7 +292,7 @@
   (w3-latex-contents tree)
   (insert "\\end{center}"))
 
-(defun w3-latex-rule (tree)
+(defun w3-latex-rule (_tree)
   ; use \par to make paragraph division clear.
   (insert "\n\\par\\noindent\\rule{\\textwidth}{.01in}\n"))
 
@@ -305,7 +316,7 @@
   (w3-latex-contents tree)
   (insert "\\end{quote}\n"))
 
-(defun w3-latex-break (tree)
+(defun w3-latex-break (_tree)
   ;; no content allowed
   (insert "\\newline "))
 
@@ -429,9 +440,10 @@
   (setq w3-latex-current-url url)
   (erase-buffer)
   (goto-char (point-min))
-  (if w3-latex-use-latex2e
-      (insert (concat "\\documentclass" w3-latex-docstyle "\n"))
-    (insert (concat "\\documentstyle" w3-latex-docstyle "\n")))
+  (insert (if w3-latex-use-latex2e
+              "\\documentclass"
+            "\\documentstyle")
+          w3-latex-docstyle "\n")
   (if (and w3-latex-use-latex2e
           w3-latex-packages)
       (insert (apply 'concat
@@ -448,14 +460,23 @@
   (w3-parse-tree-to-latex w3-current-parse)
   (save-window-excursion
     (set-buffer url-working-buffer)
-    (let ((coding-system-for-write 'binary))
+    (let ((coding-system-for-write 'binary)
+          (file (make-temp-file "w3" nil ".tex")))
       (write-region
-       (point-min) (point-max)
-       (expand-file-name "w3-tmp.latex"
-                        w3-temporary-directory) nil 5))
-    (shell-command
-     (format 
-      "(cd %s ; latex w3-tmp.latex ; latex w3-tmp.latex ; xdvi w3-tmp.dvi ; rm 
-f w3-tmp*) &"
-      w3-temporary-directory))))
+       (point-min) (point-max) file nil 5)
+      ;; FIXME: Race-condition.  We should run this in 
temporary-file-directory!
+      ;; (let ((default-directory (file-name-directory file)))
+      ;;   (call-process "latex" nil t nil (file-relative-name file))
+      ;;   (call-process "latex" nil t nil (file-relative-name file))
+      (delete-file file)
+      (error "Not implemented")
+      ;;   (call-process "xdvi" nil nil nil
+      ;;                 (replace-regexp-in-string "\\.tex\\'" ".dvi"
+      ;;                                           (file-relative-name file)))
+      ;;   (shell-command
+      ;;    (format 
+      ;;     "(cd %s ; latex w3-tmp.latex ; latex w3-tmp.latex ; xdvi 
w3-tmp.dvi ; rm -f w3-tmp*) &"
+      ;;     temporary-file-directory)))
+      )))
 
 (provide 'w3-latex)
diff --git a/w3-menu.el b/w3-menu.el
index 98e50b6..a7d55c5 100644
--- a/w3-menu.el
+++ b/w3-menu.el
@@ -1,35 +1,34 @@
 ;;; w3-menu.el --- Menu functions for emacs-w3
+
+;; Copyright (c) 1996-2001, 2007, 2013 Free Software Foundation, Inc.
+
 ;; Author: Bill Perry <address@hidden>
-;; Version: $Revision: 1.15 $
 ;; Keywords: menu, hypermedia
 
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; Copyright (c) 1996, 97, 98, 99, 2000, 2001, 2007 Free Software Foundation, 
Inc.
-;;; Copyright (c) 1996 by William M. Perry <address@hidden>
-;;;
-;;; This file is part of GNU Emacs.
-;;;
-;;; GNU Emacs is free software; you can redistribute it and/or modify
-;;; it under the terms of the GNU General Public License as published by
-;;; the Free Software Foundation; either version 2, or (at your option)
-;;; any later version.
-;;;
-;;; GNU Emacs is distributed in the hope that it will be useful,
-;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;;; GNU General Public License for more details.
-;;;
-;;; You should have received a copy of the GNU General Public License
-;;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;;; Boston, MA 02111-1307, USA.
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; This file is part of GNU Emacs.
+;;
+;; GNU Emacs is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 3, or (at your option)
+;; any later version.
+;;
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
+
+;;; Code:
 
 (require 'w3-vars)
 (require 'w3-mouse)
 (eval-when-compile
-  (require 'cl)
-  (defvar w3-html-bookmarks))
+  (require 'cl))
+(defvar w3-html-bookmarks)
 (autoload 'url-truncate-url-for-viewing "url-util")
 (autoload 'w3-first-n-items "w3")
 (autoload 'w3-only-links "w3")
@@ -44,11 +43,6 @@
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;; Spiffy new menus (for both Emacs and XEmacs)
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-(defvar w3-menu-filters-supported-p
-  (or (featurep 'xemacs)
-      (and (= emacs-major-version 20)
-                             (>= emacs-minor-version 3))
-      (>= emacs-major-version 21)))
 
 (defvar w3-menu-fsfemacs-bookmark-menu nil)
 (defvar w3-menu-fsfemacs-debug-menu nil)
@@ -131,7 +125,7 @@ on that platform."
       (list (vector item nil nil))
     (list "Ignored" (vector item nil nil))))
       
-(defun w3-menu-hotlist-constructor (menu-items)
+(defun w3-menu-hotlist-constructor (_menu-items)
   (require 'w3-hot)
   (easy-menu-define
    w3-menu-hotlist-menu nil "Emacs/W3 Dynamic menu"
@@ -147,7 +141,7 @@ on that platform."
         (or hot-menu (w3-menu-dummy-menu "No Hotlist")))))
   w3-menu-hotlist-menu)
 
-(defun w3-menu-html-links-constructor (menu-items)
+(defun w3-menu-html-links-constructor (_menu-items)
   (let ((links (mapcar 'cdr w3-current-links))
        (menu nil))
     (if links
@@ -184,7 +178,7 @@ on that platform."
                          (w3-menu-dummy-menu "None")))
     w3-menu-html-links-menu))
 
-(defun w3-menu-links-constructor (menu-items)
+(defun w3-menu-links-constructor (_menu-items)
   (let ((widgets (w3-only-links))
        widget href menu)
     (while widgets
@@ -291,7 +285,10 @@ on that platform."
     ["Formatted Text" (w3-mail-current-document nil "Formatted Text") t]
     ["PostScript" (w3-mail-current-document nil "PostScript") t]
     )
-   (if (or (featurep 'xemacs) (>= emacs-major-version 21))
+   (if (featurep 'xemacs)
+       ;; FIXME: These fancier separators were added to Emacs-21, but only
+       ;; supported in the Lucid toolkit, whereas in most other toolkits they
+       ;; are not even recognized as separators :-(
        "--:shadowDoubleEtchedIn"
      "---")
    ["Close" delete-frame (not (eq (next-frame) (selected-frame)))]
@@ -358,12 +355,8 @@ on that platform."
    ["Home" w3 w3-default-homepage]
    ["View History..." w3-show-history-list url-history-track]
    "----"
-   (if w3-menu-filters-supported-p
-       '("Links" :filter w3-menu-links-constructor)
-     ["Links..." w3-menu-e19-show-links-menu t])
-   (if w3-menu-filters-supported-p
-       '("Navigate" :filter w3-menu-html-links-constructor)
-     ["Navigate..." w3-menu-e19-show-navigate-menu t])
+   '("Links" :filter w3-menu-links-constructor)
+   '("Navigate" :filter w3-menu-html-links-constructor)
    )
   "W3 menu go list.")
 
@@ -380,9 +373,7 @@ on that platform."
    ["Remove Keyword" w3-hotindex-rm-key t]
    ["Query Keyword" w3-hotindex-query t]
    "----"
-   (if w3-menu-filters-supported-p
-       '("Bookmarks" :filter w3-menu-hotlist-constructor)
-     ["Bookmarks" w3-menu-e19-show-hotlist-menu t])
+   '("Bookmarks" :filter w3-menu-hotlist-constructor)
    )
   "W3 menu bookmark list.")
 
@@ -569,7 +560,7 @@ on that platform."
                       'go 'view 'edit 'file))))
          (while menu-list
            (if (null (car menu-list))
-               nil;; no flushright support in FSF Emacs
+               nil;; no flushright support in Emacs
              (aset vec 2 (intern (concat "w3-menu-fsfemacs-"
                                          (symbol-name
                                           (car menu-list)) "-menu")))
@@ -638,10 +629,7 @@ on that platform."
       (lookup-key w3-mode-menu-map [rootmenu])))))
 
 (defun w3-menu-install-menus ()
-  (cond ((and (= emacs-major-version 19)
-             (= emacs-minor-version 28)) ; Hey, get with the times people!!
-        nil)
-       ((consp w3-use-menus)
+  (cond ((consp w3-use-menus)
         (w3-menu-install-menubar))
        ((eq w3-use-menus 1)
         (w3-menu-install-menubar-item))
@@ -678,12 +666,13 @@ on that platform."
        (cons "[W3]" 'w3-menu-toggle-menubar)))
     (w3-menu-set-menubar-dirty-flag))))
 
+(defvar print-readably)
+
 (defun w3-menu-save-options ()
   (interactive)
   (let ((output-buffer (find-file-noselect w3-default-configuration-file))
        output-marker)
-    (save-excursion
-      (set-buffer output-buffer)
+    (with-current-buffer output-buffer
       ;;
       ;; Find and delete the previously saved data, and position to write.
       ;;
@@ -704,53 +693,50 @@ on that platform."
            (standard-output output-marker))
        (princ ";; W3 Options Settings\n")
        (princ ";; ===================\n")
-       (mapcar (function
-                (lambda (var)
-                  (princ "  ")
-                  (if (and (symbolp var) (boundp var))
-                      (prin1 (list 'setq-default var
-                                   (let ((val (symbol-value var)))
-                                     (if (or (memq val '(t nil))
-                                             (and (not (symbolp val))
-                                                  (not (listp val))))
-                                         val
-                                       (list 'quote val))))))
-                  (if var (princ "\n"))))
-               '(
-                 ps-print-color-p
-                 url-automatic-caching
-                 url-honor-refresh-requests
-                 url-privacy-level
-                 url-cookie-confirmation
-                 url-proxy-services
-                 url-standalone-mode
-                 url-use-hypertext-gopher
-                 w3-default-homepage
-                 w3-default-stylesheet
-                 w3-delay-image-loads
-                 w3-do-incremental-display
-                 w3-dump-to-disk
-                 w3-honor-stylesheets
-                 w3-image-mappings
-                 w3-load-hook
-                 w3-mode-hook
-                 w3-netscape-compatible-comments
-                 w3-preferences-cancel-hook
-                 w3-preferences-default-hook
-                 w3-preferences-ok-hook
-                 w3-preferences-setup-hook
-                 w3-source-file-hook
-                 w3-toolbar-orientation
-                 w3-toolbar-type
-                 w3-use-menus
-                 w3-user-colors-take-precedence
-                 )
-               )
+       (dolist (var 
+                 '(
+                   ps-print-color-p
+                   url-automatic-caching
+                   url-honor-refresh-requests
+                   url-privacy-level
+                   url-cookie-confirmation
+                   url-proxy-services
+                   url-standalone-mode
+                   url-use-hypertext-gopher
+                   w3-default-homepage
+                   w3-default-stylesheet
+                   w3-delay-image-loads
+                   w3-do-incremental-display
+                   w3-dump-to-disk
+                   w3-honor-stylesheets
+                   w3-image-mappings
+                   w3-load-hook
+                   w3-mode-hook
+                   w3-netscape-compatible-comments
+                   w3-preferences-cancel-hook
+                   w3-preferences-default-hook
+                   w3-preferences-ok-hook
+                   w3-preferences-setup-hook
+                   w3-source-file-hook
+                   w3-toolbar-orientation
+                   w3-toolbar-type
+                   w3-use-menus
+                   w3-user-colors-take-precedence
+                   ))
+          (princ "  ")
+          (if (and (symbolp var) (boundp var))
+              (prin1 (list 'setq-default var
+                           (let ((val (symbol-value var)))
+                             (if (or (memq val '(t nil))
+                                     (and (not (symbolp val))
+                                          (not (listp val))))
+                                 val
+                               (list 'quote val))))))
+          (if var (princ "\n")))
        (princ ";; ==========================\n")
        (princ ";; End of W3 Options Settings\n")))
     (set-marker output-marker nil)
-    (save-excursion
-      (set-buffer output-buffer)
+    (with-current-buffer output-buffer
       (save-buffer))
     ))
 
@@ -758,9 +744,9 @@ on that platform."
 ;;; Functions for emacs variations that do not support the :filter
 ;;; keyword in menu items.  All versions of XEmacs that Emacs/W3 can
 ;;; run on support this, but only really recent (20.3 or later)
-;;; versions of FSF Emacs support this.
+;;; versions of Emacs support this.
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-(defun w3-menu-e19-bogus-filter-constructor (name menu)
+(defun w3-menu-e19-bogus-filter-constructor (_name menu)
   (let ((x nil)
        (y nil))
     (setq x (x-popup-menu t menu)
@@ -768,29 +754,19 @@ on that platform."
     (if (and x y)
        (funcall y))))
   
-(defun w3-menu-e19-show-hotlist-menu ()
-  (interactive)
-  (w3-menu-e19-bogus-filter-constructor "Hotlist"
-                                       (w3-menu-hotlist-constructor nil)))
 
-(defun w3-menu-e19-show-links-menu ()
-  (interactive)
-  (w3-menu-e19-bogus-filter-constructor "Links"
-                                       (w3-menu-links-constructor nil)))
 
-(defun w3-menu-e19-show-navigate-menu ()
-  (interactive)
-  (w3-menu-e19-bogus-filter-constructor "Navigate"
-                                       (w3-menu-html-links-constructor nil)))
+
+
+
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;; Context-sensitive popup menu
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-(if (fboundp 'event-glyph)
-    (defalias 'w3-event-glyph 'event-glyph)
-  (defalias 'w3-event-glyph 'ignore))
+(defalias 'w3-event-glyph
+  (if (fboundp 'event-glyph) #'event-glyph #'ignore))
 
-(defun w3-menu-popup-menu (e menu)
+(defun w3-menu-popup-menu (menu)
   (if (fboundp 'popup-menu)
       (popup-menu menu)
     (let ((bogus-menu nil))
@@ -812,7 +788,7 @@ on that platform."
           (imag (or (and widget (widget-get widget :src))
                     (and parent (widget-get parent :src))))
           (menu (copy-tree w3-popup-menu))
-          url val trunc-url)
+          url trunc-url)
       (if href
          (progn
            (setq url href)
@@ -843,6 +819,6 @@ on that platform."
       (if (not (w3-menubar-active))
          (setcdr menu (append (cdr menu)
                               '("---" ["Show Menubar" w3-toggle-menubar t]))))
-      (w3-menu-popup-menu e menu))))
+      (w3-menu-popup-menu menu))))
 
 (provide 'w3-menu)
diff --git a/w3-mouse.el b/w3-mouse.el
index 1757bab..c48e549 100644
--- a/w3-mouse.el
+++ b/w3-mouse.el
@@ -1,30 +1,30 @@
 ;;; w3-menu.el --- Mouse specific functions for emacs-w3
+
+;; Copyright (c) 1996 - 1999, 2013 Free Software Foundation, Inc.
+
 ;; Author: $Author: wmperry $
 ;; Created: $Date: 2000/11/15 13:58:28 $
-;; Version: $Revision: 1.3 $
 ;; Keywords: mouse, hypermedia
 
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; Copyright (c) 1996 by William M. Perry <address@hidden>
-;;; Copyright (c) 1996 - 1999 Free Software Foundation, Inc.
-;;;
-;;; This file is part of GNU Emacs.
-;;;
-;;; GNU Emacs is free software; you can redistribute it and/or modify
-;;; it under the terms of the GNU General Public License as published by
-;;; the Free Software Foundation; either version 2, or (at your option)
-;;; any later version.
-;;;
-;;; GNU Emacs is distributed in the hope that it will be useful,
-;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;;; GNU General Public License for more details.
-;;;
-;;; You should have received a copy of the GNU General Public License
-;;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;;; Boston, MA 02111-1307, USA.
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; This file is part of GNU Emacs.
+;;
+;; GNU Emacs is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 3, or (at your option)
+;; any later version.
+;;
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
+
+;;; Code:
+
 (require 'w3-vars)
 
 (defun w3-follow-mouse-other-frame (e)
@@ -54,40 +54,23 @@ the mouse click, opening it in another frame."
         (w3-fetch (widget-get widget :src)))))
 
 (defvar w3-mouse-button1 (cond
-                         ((featurep 'infodock) nil)
-                         ((and w3-running-xemacs (featurep 'mouse)) 'button1)
-                         (w3-running-xemacs nil)
+                         ((featurep 'xemacs) 'button1)
                          (t 'down-mouse-1)))
 (defvar w3-mouse-button2 (cond
-                         ((featurep 'infodock) nil)
-                         ((and w3-running-xemacs (featurep 'mouse)) 'button2)
-                         (w3-running-xemacs nil)
+                         ((featurep 'xemacs) 'button2)
                          (t 'down-mouse-2)))
 (defvar w3-mouse-button3 (cond
-                         ((featurep 'infodock) nil)
-                         ((and w3-running-xemacs (featurep 'mouse)) 'button3)
-                         (w3-running-xemacs nil) 
+                         ((featurep 'xemacs) 'button3) 
                          (t 'down-mouse-3)))
 
-(if w3-mouse-button3
-    (define-key w3-mode-map (vector w3-mouse-button3) 'w3-popup-menu))
+(define-key w3-mode-map (vector w3-mouse-button3) 'w3-popup-menu)
 
-(if w3-mouse-button1
-    (define-key w3-netscape-emulation-minor-mode-map
-      (vector w3-mouse-button1) 'w3-widget-button-click))
+(define-key w3-netscape-emulation-minor-mode-map
+  (vector w3-mouse-button1) 'w3-widget-button-click)
       
-(if w3-mouse-button2
-    (progn
-      (define-key w3-mode-map (vector (list 'meta w3-mouse-button2))
-       'w3-follow-mouse-other-frame)
-      (define-key w3-netscape-emulation-minor-mode-map
-       (vector w3-mouse-button2) 'w3-follow-mouse-other-frame)))
+(define-key w3-mode-map (vector (list 'meta w3-mouse-button2))
+  'w3-follow-mouse-other-frame)
+(define-key w3-netscape-emulation-minor-mode-map
+  (vector w3-mouse-button2) 'w3-follow-mouse-other-frame)
 
-(if (not w3-running-xemacs)
-    (progn
-      (if (and w3-track-mouse (not (= 21 emacs-major-version)))
-         (define-key w3-mode-map [mouse-movement] 'w3-mouse-handler))
-      (if w3-popup-menu-on-mouse-3
-         (define-key w3-mode-map [down-mouse-3] 'w3-popup-menu))))
-  
 (provide 'w3-mouse)
diff --git a/w3-parse.el b/w3-parse.el
index 952225a..fd9c56e 100644
--- a/w3-parse.el
+++ b/w3-parse.el
@@ -1,14 +1,13 @@
 ;;; w3-parse.el --- Parse HTML and/or SGML for Emacs W3 browser
 
+;; Copyright © 1993-1997, 2013 Free Software Foundation, Inc.
+
 ;; Author: Joe Wells <address@hidden>
 ;; Created on: Sat Sep 30 17:25:40 1995
 
-;; Copyright © 1995, 1996, 1997  Joseph Brian Wells
-;; Copyright © 1993, 1994, 1995 by William M. Perry <address@hidden>
-;; 
 ;; This program is free software; you can redistribute it and/or modify
 ;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation; either version 2 of the License, or
+;; the Free Software Foundation; either version 3 of the License, or
 ;; (at your option) any later version.
 ;; 
 ;; This program is distributed in the hope that it will be useful,
@@ -21,10 +20,11 @@
 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 ;; Boston, MA 02111-1307, USA.
 
+;;; Code:
 
-;;;
-;;; Trying to make the best of an evil speed hack.
-;;;
+;;
+;; Trying to make the best of an evil speed hack.
+;;
 
 ;; Explanation:
 
@@ -61,7 +61,7 @@
 (eval-when-compile (require 'cl))
 
 (eval-when-compile
-  (defconst w3-p-s-var-list nil
+  (defvar w3-p-s-var-list nil
     "A list of the scratch variables used by functions called by
 w3-parse-buffer which it is w3-parse-buffer's responsibility to
 \"let\"-bind.")
@@ -69,51 +69,49 @@ w3-parse-buffer which it is w3-parse-buffer's 
responsibility to
   (defmacro w3-p-s-var-def (var)
     "Declare VAR as a scratch variable which w3-parse-buffer must
 \"let\"-bind."
-    `(eval-when-compile
-         (defvar ,var)
-         (or (memq ',var w3-p-s-var-list)
-             (setq w3-p-s-var-list (cons ',var w3-p-s-var-list)))))
+    (or (memq var w3-p-s-var-list)
+        (setq w3-p-s-var-list (cons var w3-p-s-var-list)))
+    `(defvar ,var))
 
   (defmacro w3-p-s-let-bindings (&rest body)
     "\"let\"-bind all of the variables in w3-p-s-var-list in BODY."
+    (declare (indent 0) (debug t))
     `(let ,w3-p-s-var-list
-         ,@body))
-  (put 'w3-p-s-let-bindings 'lisp-indent-function 0)
-  (put 'w3-p-s-let-bindings 'edebug-form-spec t)
+         ,@body)))
 
-  (defvar w3-p-d-current-element)
-  (put 'w3-p-d-current-element 'variable-documentation
-       "Information structure for the current open element.")
+(defvar w3-p-d-current-element)
+(put 'w3-p-d-current-element 'variable-documentation
+     "Information structure for the current open element.")
   
-  (defvar w3-p-d-exceptions)
-  (put 'w3-p-d-exceptions 'variable-documentation
-       "Alist specifying elements (dis)allowed because of an (ex|in)clusion
+(defvar w3-p-d-exceptions)
+(put 'w3-p-d-exceptions 'variable-documentation
+     "Alist specifying elements (dis)allowed because of an (ex|in)clusion
 exception of some containing element (not necessarily the immediately
 containing element).  Each item specifies a transition for an element
 which overrides that specified by the current element's content model.
 Each item is of the form (TAG ACTION *same ERRORP).")
   
-  (defvar w3-p-d-in-parsed-marked-section)
-  (put 'w3-p-d-in-parsed-marked-section 'variable-documentation
-       "Are we in a parsed marked section so that we have to scan for 
\"]]>\"?")
+(defvar w3-p-d-in-parsed-marked-section)
+(put 'w3-p-d-in-parsed-marked-section 'variable-documentation
+     "Are we in a parsed marked section so that we have to scan for \"]]>\"?")
 
-  (defvar w3-p-d-non-markup-chars)
-  (put 'w3-p-d-non-markup-chars 'variable-documentation
-       "The characters that do not indicate the start of markup, in the format
+(defvar w3-p-d-non-markup-chars)
+(put 'w3-p-d-non-markup-chars 'variable-documentation
+     "The characters that do not indicate the start of markup, in the format
 for an argument to skip-chars-forward.")
 
-  (defvar w3-p-d-null-end-tag-enabled)
-  (put 'w3-p-d-null-end-tag-enabled 'variable-documentation
-       "Is the null end tag (\"/\") enabled?")
+(defvar w3-p-d-null-end-tag-enabled)
+(put 'w3-p-d-null-end-tag-enabled 'variable-documentation
+     "Is the null end tag (\"/\") enabled?")
 
-  (defvar w3-p-d-open-element-stack)
-  (put 'w3-p-d-open-element-stack 'variable-documentation
-       "A stack of the currently open elements, with the innermost enclosing
+(defvar w3-p-d-open-element-stack)
+(put 'w3-p-d-open-element-stack 'variable-documentation
+     "A stack of the currently open elements, with the innermost enclosing
 element on top and the outermost on bottom.")
 
-  (defvar w3-p-d-shortrefs)
-  (put 'w3-p-d-shortrefs 'variable-documentation
-       "An alist of the magic entity reference strings in the current
+(defvar w3-p-d-shortrefs)
+(put 'w3-p-d-shortrefs 'variable-documentation
+     "An alist of the magic entity reference strings in the current
 between-tags region and their replacements.  Each item is of the format
 \(REGEXP . REPLACEMENT-STRING\).  Although in SGML shortrefs normally name
 entities whose value should be used as the replacement, we have
@@ -122,9 +120,9 @@ strings to be replaced, so they can be used with 
looking-at.  This should
 never be in an element's overrides field unless
 w3-p-d-shortref-chars is also in the field.")
   
-  (defvar w3-p-d-shortref-chars)
-  (put 'w3-p-d-shortref-chars 'variable-documentation
-       "A string of the characters which can start shortrefs in the current
+(defvar w3-p-d-shortref-chars)
+(put 'w3-p-d-shortref-chars 'variable-documentation
+     "A string of the characters which can start shortrefs in the current
 between-tags region.  This must be in a form which can be passed to
 skip-chars-forward and must contain exactly the characters which start the
 entries in w3-p-d-shortrefs.  If this variable is mentioned in the
@@ -133,18 +131,15 @@ variable w3-p-d-non-markup-chars is saved to the 
element's undo-list and
 updated at the same time.  This should never be in an element's overrides
 field unless w3-p-d-shortrefs is also in the field.")
   
-  (defvar w3-p-d-tag-name)
-  (put 'w3-p-d-tag-name 'variable-documentation
-       "Name of tag we are looking at, as an Emacs Lisp symbol.
+(defvar w3-p-d-tag-name)
+(put 'w3-p-d-tag-name 'variable-documentation
+     "Name of tag we are looking at, as an Emacs Lisp symbol.
 Only non-nil when we are looking at a tag.")
 
-  (defvar w3-p-d-end-tag-p)
-  (put 'w3-p-d-end-tag-p 'variable-documentation
-       "Is the tag we are looking at an end tag?
+(defvar w3-p-d-end-tag-p)
+(put 'w3-p-d-end-tag-p 'variable-documentation
+     "Is the tag we are looking at an end tag?
 Only non-nil when we are looking at a tag.")
-  
-  )
-
 
 ;;;
 ;;; HTML syntax error messages.
@@ -233,8 +228,7 @@ which must be a string to use as the error message."
                          (delete-char -7))))))) w3-current-badhtml))
 
 (defun w3-quote-for-string (string)
-  (save-excursion
-    (set-buffer (get-buffer-create " w3-quote-whitespace"))
+  (with-current-buffer (get-buffer-create " w3-quote-whitespace")
     (erase-buffer)
     (insert string)
     (goto-char (point-min))
@@ -295,9 +289,9 @@ come from the cp1252 character set rather than Unicode.)  
This is an
 alist indexed by numeric code.  The cdr of each element is a list of
 an ASCII substitute and the Unicode for the cp1252 character.")
 
-(eval-and-compile
+(defalias 'w3-int-to-char
   (if (fboundp 'int-to-char)            ; XEmacs
-      (defun w3-int-to-char (c)
+      (lambda (c)
         (cond
          ((characterp c)
           c)
@@ -305,7 +299,7 @@ an ASCII substitute and the Unicode for the cp1252 
character.")
           (int-to-char c))
          (t
           ?~)))
-    (defalias 'w3-int-to-char 'identity)))
+    #'identity))
 
 ;; For older Mule-UCS.  This is from Mule-UCS 0.84.
 (if (and (not (fboundp 'decode-char))
@@ -1020,13 +1014,13 @@ skip-chars-forward."
 ;;; A pseudo-DTD for HTML.
 ;;;
 
-(eval-when-compile
-  ;; This works around the following bogus compiler complaint:
-  ;;   While compiling the end of the data in file w3-parse.el:
-  ;;     ** the function w3-expand-parameters is not known to be defined.
-  ;; This is a bogus error.  Anything of this form will trigger this message:
-  ;;   (eval-when-compile (defun xyzzy () (xyzzy)))
-  (defun w3-expand-parameters (pars data) nil))
+;; (eval-when-compile
+;;   ;; This works around the following bogus compiler complaint:
+;;   ;;   While compiling the end of the data in file w3-parse.el:
+;;   ;;     ** the function w3-expand-parameters is not known to be defined.
+;;   ;; This is a bogus error.  Anything of this form will trigger this 
message:
+;;   ;;   (eval-when-compile (defun xyzzy () (xyzzy)))
+;;   (defun w3-expand-parameters (_pars _data) nil))
 
 (eval-when-compile
   (defun w3-expand-parameters (pars data)
@@ -1155,605 +1149,604 @@ skip-chars-forward."
 ;; *** Be sure to incorporate rfc1867 when attribute-checking is added.
 ;; *** Write function to check sanity of the content-model forms.
 ;; *** I18N: Add Q, BDO, SPAN
-(mapcar
- (function
-  (lambda (pair)
-    (put (car pair) 'html-element-info (cdr pair))))
- ;; The purpose of this complexity is to speed up loading by
- ;; pre-evaluating as much as possible at compile time.
- (eval-when-compile
-   (w3-unfold-dtd
-    (w3-expand-parameters
-     '(
-       (%headempty . (link base meta range))
-       (%headmisc . (script))
-       (%head-deprecated . (nextid))
-
-       ;; client-side imagemaps
-       (%imagemaps . (area map))
-       (%input.fields . (input select textarea keygen label))
-       ;; special action is taken for %text inside %body.content in the
-       ;; content model of each element.
-       (%body.content . (%heading %block style hr div address %imagemaps))
-
-       (%heading . (h1 h2 h3 h4 h5 h6))
-
-       ;; Emacs-w3 extensions
-       (%emacsw3-crud  . (pinhead flame cookie yogsothoth hype peek))
-
-       (%block . (p %list dl form %preformatted 
-                    %blockquote isindex fn table fig note
-                    multicol center %block-deprecated %block-obsoleted))
-       (%list . (ul ol))
-       (%preformatted . (pre))
-       (%blockquote . (bq))
-       (%block-deprecated . (dir menu blockquote))
-       (%block-obsoleted . (xmp listing))
+(dolist
+    (pair
+     ;; The purpose of this complexity is to speed up loading by
+     ;; pre-evaluating as much as possible at compile time.
+     (eval-when-compile
+       (w3-unfold-dtd
+        (w3-expand-parameters
+         '(
+           (%headempty . (link base meta range))
+           (%headmisc . (script))
+           (%head-deprecated . (nextid))
+
+           ;; client-side imagemaps
+           (%imagemaps . (area map))
+           (%input.fields . (input select textarea keygen label))
+           ;; special action is taken for %text inside %body.content in the
+           ;; content model of each element.
+           (%body.content . (%heading %block style hr div address %imagemaps))
+
+           (%heading . (h1 h2 h3 h4 h5 h6))
+
+           ;; Emacs-w3 extensions
+           (%emacsw3-crud  . (pinhead flame cookie yogsothoth hype peek))
+
+           (%block . (p %list dl form %preformatted 
+                        %blockquote isindex fn table fig note
+                        multicol center %block-deprecated %block-obsoleted))
+           (%list . (ul ol))
+           (%preformatted . (pre))
+           (%blockquote . (bq))
+           (%block-deprecated . (dir menu blockquote))
+           (%block-obsoleted . (xmp listing))
        
-       ;; Why is IMG in this list?
-       (%pre.exclusion . (*include img *discard tab math big small sub sup))
+           ;; Why is IMG in this list?
+           (%pre.exclusion . (*include img *discard tab math big small sub 
sup))
        
-       (%text . (*data b %notmath sub sup %emacsw3-crud %input.fields))
-       (%notmath . (%special %font %phrase %misc))
-       (%font . (i u s strike tt big small sub sup font
-                   roach secret wired)) ;; B left out for MATH
-       (%phrase . (em strong dfn code samp kbd var cite blink))
-       (%special . (a nobr img applet object font basefont br script style map 
math tab span bdo))
-       (%misc . (q lang au person acronym abbrev ins del))
+           (%text . (*data b %notmath sub sup %emacsw3-crud %input.fields))
+           (%notmath . (%special %font %phrase %misc))
+           (%font . (i u s strike tt big small sub sup font
+                       roach secret wired)) ;; B left out for MATH
+           (%phrase . (em strong dfn code samp kbd var cite blink))
+           (%special . (a nobr img applet object font basefont br script style 
map math tab span bdo))
+           (%misc . (q lang au person acronym abbrev ins del))
        
-       (%formula . (*data %math))
-       (%math . (box above below %mathvec root sqrt array sub sup
-                     %mathface))
-       (%mathvec . (vec bar dot ddot hat tilde))
-       (%mathface . (b t bt))
-
-       (%mathdelims . (over atop choose left right of))
-
-       ;; What the hell?  This takes BODYTEXT?????  No way!
-       (%bq-content-model . [(nil
-                              nil
-                              (((bodytext) *include *next))
-                              (bodytext *next))
-                             (nil
-                              nil
-                              (((credit) *include *next))
-                              nil)
-                             (nil nil nil nil)
-                             ])
-
-       ;; non-default bad HTML handling.
-       (%in-text-ignore . ((p %heading) *discard *same error))
-       )
-     '(
-       ;; A dummy element that will contain *document.
-       ((*holder)
-        (content-model . [(nil nil nil nil)]))
-       ;; The root of the parse tree.  We start with a pseudo-element
-       ;; named *document for convenience.
-       ((*document)
-        (content-model . [(nil nil (((html) *include *next)) (html *next))
-                          (nil
-                           nil
-                           nil
-                           (*include *same "after document end"))])
-        (end-tag-omissible . t))
-       ;; HTML O O (HEAD, BODY)
-       ((html)
-        (content-model . [(nil
-                           nil
-                           (((head) *include *next))
-                           (head *next))
-                          (nil
-                           nil
-                           (((body) *include *next)
-                            ;; Netscape stuff
-                            ((frameset) *include 4)
-                            )
-                           (body *next))
-                          (nil
-                           nil
-                           (((plaintext) *include *next))
-                           (*retry *next))
-                          (nil
-                           nil
-                           nil
-                           (*include *same "after BODY"))
-                          (nil
-                           nil
-                           nil
-                           (*include *same "after FRAMESET"))
-                          ])
-        (end-tag-omissible . t))
-       ((head)
-        (content-model . [((title isindex %headempty %headmisc
-                                  style %head-deprecated)
-                           nil
-                           nil
-                           ;; *** Should only close if tag can
-                           ;; legitimately follow head.  So many can that
-                           ;; I haven't bothered to enumerate them.
-                           (*close))])
-        (end-tag-omissible . t))
-       ;; SCRIPT - - (#PCDATA)
-       ((script)
-        (content-model . XCDATA         ; not official, but allows
+           (%formula . (*data %math))
+           (%math . (box above below %mathvec root sqrt array sub sup
+                         %mathface))
+           (%mathvec . (vec bar dot ddot hat tilde))
+           (%mathface . (b t bt))
+
+           (%mathdelims . (over atop choose left right of))
+
+           ;; What the hell?  This takes BODYTEXT?????  No way!
+           (%bq-content-model . [(nil
+                                  nil
+                                  (((bodytext) *include *next))
+                                  (bodytext *next))
+                                 (nil
+                                  nil
+                                  (((credit) *include *next))
+                                  nil)
+                                 (nil nil nil nil)
+                                 ])
+
+           ;; non-default bad HTML handling.
+           (%in-text-ignore . ((p %heading) *discard *same error))
+           )
+         '(
+           ;; A dummy element that will contain *document.
+           ((*holder)
+            (content-model . [(nil nil nil nil)]))
+           ;; The root of the parse tree.  We start with a pseudo-element
+           ;; named *document for convenience.
+           ((*document)
+            (content-model . [(nil nil (((html) *include *next)) (html *next))
+                              (nil
+                               nil
+                               nil
+                               (*include *same "after document end"))])
+            (end-tag-omissible . t))
+           ;; HTML O O (HEAD, BODY)
+           ((html)
+            (content-model . [(nil
+                               nil
+                               (((head) *include *next))
+                               (head *next))
+                              (nil
+                               nil
+                               (((body) *include *next)
+                                ;; Netscape stuff
+                                ((frameset) *include 4)
+                                )
+                               (body *next))
+                              (nil
+                               nil
+                               (((plaintext) *include *next))
+                               (*retry *next))
+                              (nil
+                               nil
+                               nil
+                               (*include *same "after BODY"))
+                              (nil
+                               nil
+                               nil
+                               (*include *same "after FRAMESET"))
+                              ])
+            (end-tag-omissible . t))
+           ((head)
+            (content-model . [((title isindex %headempty %headmisc
+                                      style %head-deprecated)
+                               nil
+                               nil
+                               ;; *** Should only close if tag can
+                               ;; legitimately follow head.  So many can that
+                               ;; I haven't bothered to enumerate them.
+                               (*close))])
+            (end-tag-omissible . t))
+           ;; SCRIPT - - (#PCDATA)
+           ((script)
+            (content-model . XCDATA     ; not official, but allows
                                         ; comment hiding of script, and also
                                         ; idiots that use '</' in scripts.
-                       ))
-       ;; TITLE - - (#PCDATA)
-       ((title)
-        (content-model . RCDATA         ; not official
-                       ;; [((*data) include-space nil nil)]
-                       ))
-       ;; STYLE - O (#PCDATA)
-       ;; STYLE needs to be #PCDATA to allow omitted end tag.  Bleagh.
-       ((style)
-        (content-model . CDATA)
-        (end-tag-omissible . t))
-       ((body)
-        (content-model . [((banner) nil nil (*retry *next))
-                          ((bodytext) nil nil (bodytext *next))
-                          (nil nil (((plaintext) *close)) nil)])
-        (inclusions . (spot))
-        (end-tag-omissible . t))
-       ;; Do I really want to include BODYTEXT?  It has something to do
-       ;; with mixed content screwing things up, and I don't understand
-       ;; it.  Wait!  It's used by BQ!
-       ((bodytext)
-        (content-model . [((%body.content)
-                           nil
-                           ;; Push <P> before data characters.  Non-SGML.
-                           (((%text) p)
-                            ;; Some stupid sites put meta tags in the
-                            ;; middle of their documents.  Sigh.
-                            ;; Allow it, but bitch and moan.
-                            ((meta) *include *same "not allowed here")
-                            ;; Closing when seeing CREDIT is a stupidity
-                            ;; caused by BQ's sharing of BODYTEXT.  BQ
-                            ;; should have its own BQTEXT.
-                            ((credit plaintext) *close))
-                           nil)
-                          ])
-        (end-tag-omissible . t))
-       ((div banner center multicol)
-        (content-model . [((%body.content)
-                           nil
-                           ;; Push <P> before data characters.  Non-SGML.
-                           (((%text) p))
-                           nil)]))
-       ((address)
-        (content-model . [((p)
-                           nil
-                           ;; Push <P> before data characters.  Non-SGML.
-                           (((%text) p))
-                           nil)]))
-       ((%heading)
-        (content-model . [((%text)
-                           include-space
-                           ((%in-text-ignore))
-                           nil)]))
-       ((span bdo)
-        (content-model . [((%text)
-                           include-space
-                           nil
-                           nil)])
-        )
-       ((p)
-        (content-model . [((%text)
-                           include-space
-                           nil
-                           ;; *** Should only close if tag can
-                           ;; legitimately follow P.  So many can that I
-                           ;; don't bother to enumerate here.
-                           (*close))])
-        (end-tag-omissible . t))
-       ((ul ol)
-        (content-model . [((lh)
-                           nil
-                           (((li) *include *next))
-                           (*retry *next))
-                          ((p)
-                           nil
-                           nil
-                           (*retry *next))
-                          ((li)
-                           nil
-                           ;; Push <LI> before data characters or block
-                           ;; elements.
-                           ;; Non-SGML.
-                           (;; ((p) b *same nil)
-                            ((%text %block) li *same error))
-                           nil)]))
-       ((lh)
-        (content-model . [((%text)
-                           include-space
-                           (((dd dt li) *close)
-                            (%in-text-ignore))
-                           nil)])
-        (end-tag-omissible . t))
-       ((dir menu)
-        (content-model . [((li)
-                           nil
-                           (((%text) li *same error))
-                           nil)])
-        (exclusions . (%block)))
-       ((li)
-        (content-model . [((%block)
-                           nil
-                           (((li) *close)
-                            ;; Push <P> before data characters.  Non-SGML.
-                            ((%text) p))
-                           nil)])
-        (end-tag-omissible . t)
-        ;; Better bad HTML handling.
-        ;; Technically, there are a few valid documents that this will
-        ;; hose, because you can have H1 inside FORM inside LI.  However,
-        ;; I don't think that should be allowed anyway.
-        (exclusions . (*discard "not allowed here" %heading)))
-       ((dl)
-        (content-model . [((lh)
-                           nil
-                           (((dt dd) *include *next))
-                           (*retry *next))
-                          ((dt dd)
-                           nil
-                           ;; Push <DD> before data characters or block
-                           ;; items.
-                           ;; Non-SGML.
-                           (((%text %block) dd *same error))
-                           nil)]))
-       ((dt)
-        (content-model . [((%text)
-                           include-space
-                           (((dd dt) *close)
-                            (%in-text-ignore))
-                           nil)])
-        (end-tag-omissible . t))
-       ;; DD is just like LI, but we treat it separately because it can be
-       ;; followed by a different set of elements.
-       ((dd)
-        (content-model . [((%block)
-                           nil
-                           (((dt dd) *close)
-                            ;; Push <P> before data characters.  Non-SGML.
-                            ((%text) p))
-                           nil)])
-        (end-tag-omissible . t)
-        ;; See comment with LI.
-        (exclusions . (*discard "not allowed here" %heading)))
-       ((pre)
-        (content-model . [((%text hr)
-                           include-space
-                           ((%in-text-ignore))
-                           nil)])
-        (exclusions . (%pre.exclusion)))
-       ;; BLOCKQUOTE deprecated, BQ okay
-       ((bq)
-        (content-model . %bq-content-model))
-       ((blockquote)
-        (content-model . %bq-content-model)
-        ;; BLOCKQUOTE is deprecated in favor of BQ in the HTML 3.0 DTD.
-        ;; However, BQ is not even mentioned in the HTML 2.0 DTD.  So I
-        ;; don't think we can enable this yet:
-        ;;(deprecated . t)
-        )
-       ((fn note)
-        (content-model . [((%body.content)
-                           nil
-                           ;; Push <P> before data characters.  Non-SGML.
-                           (((%text) p))
-                           nil)]))
-       ((fig)
-        (content-model . [((overlay) nil nil (*retry *next))
-                          (nil
-                           nil
-                           (((caption) *include *next))
-                           (*retry *next))
-                          (nil
-                           nil
-                           (((figtext) *include *next)
-                            ((credit) *retry *next))
-                           ;; *** Should only do this for elements that
-                           ;; can be in FIGTEXT.
-                           (figtext *next))
-                          (nil nil (((credit) *include *next)) nil)
-                          (nil nil nil nil)]))
-       ((caption credit)
-        (content-model . [((%text)
-                           nil
-                           ((%in-text-ignore))
-                           nil)]))
-       ((figtext)
-        (content-model . [((%body.content)
-                           nil
-                           ;; Push <P> before data characters.  Very non-SGML.
-                           (((%text) p)
-                            ((credit) *close))
-                           nil)])
-        (end-tag-omissible . t))
-       ((%emacsw3-crud basefont)
-        (content-model . EMPTY))
-       ;; FORM - - %body.content -(FORM) +(INPUT|KEYGEN|SELECT|TEXTAREA)
-       ((form)
-        ;; Same as BODY.  Ugh!
-        (content-model . [((%body.content %text)
-                           nil
-                           ;; Push <P> before data characters.  Non-SGML.
-                           nil
-                           nil)])
-        (exclusions . (form))
-        (inclusions . (input select textarea keygen label)))
-       ;; *** Where is the URL describing this?
-       ((label)
-        (content-model . [((%text)
-                           include-space
-                           nil
-                           nil)])
-        ;; *** These are already included, no need to repeat.
-        ;;(inclusions . (input select textarea))
-        ;; *** Is a LABEL allowed inside a LABEL?  I assume no.
-        (exclusions . (label))
-        ;; The next line just does the default so is unneeded:
-        ;;(end-tag-omissible . nil)
-        )
-       ;; SELECT - - (OPTION+) -(INPUT|KEYGEN|TEXTAREA|SELECT)>
-       ;; *** This should be -(everything).
-       ((select)
-        (content-model . [((option) nil nil nil)])
-        (exclusions . (input label select keygen textarea)))
-       ;; option - O (#PCDATA)
-       ;; needs to be #PCDATA to allow omitted end tag.
-       ((option)
-        ;; I'd like to make this RCDATA to avoid problems with inclusions
-        ;; like SPOT, but that would conflict with the omitted end-tag, I
-        ;; think.
-        (content-model . [((*data)
-                           include-space
-                           (((option) *close))
-                           nil)])
-        (end-tag-omissible . t))
-       ;; TEXTAREA - - (#PCDATA) -(INPUT|TEXTAREA|KEYGEN|SELECT)
-       ((textarea)
-        ;; Same comment as for OPTION about RCDATA.
-        (content-model . XCDATA) ;;;[((*data) include-space nil nil)])
-        (exclusions . (input select label keygen textarea)))
-       ((hr br img isindex input keygen overlay wbr spot tab
-            %headempty %mathdelims)
-        (content-model . EMPTY))
-       ((nextid)
-        (content-model . EMPTY)
-        (deprecated . t))
-       ((a)
-        (content-model . [((%text)
-                           include-space
-                           (((%heading)
-                             *include *same "deprecated inside A")
-                            ;; *** I haven't made up my mind whether this
-                            ;; is a good idea.  It can result in a lot of
-                            ;; bad formatting if the A is *never* closed.
-                            ;;((p) *discard *same error)
-                            )
-                           nil)])
-        (exclusions . (a)))
-       ((b font %font %phrase %misc nobr)
-        (content-model . [((%text)
-                           include-space
-                           ((%in-text-ignore))
-                           nil)]))
-       ((plaintext)
-        (content-model . XXCDATA)
-        (end-tag-omissible . t)
-        (deprecated . obsolete))
-       ((xmp listing)
-        (content-model . XCDATA)
-        (deprecated . obsolete))
-       ;; Latest table spec (as of Nov. 13 1995) is at:
-       ;; 
<URL:ftp://ds.internic.net/internet-drafts/draft-ietf-html-tables-03.txt>
-       ((table)
-        (content-model . [(nil
-                           nil
-                           (((caption) *include *next)
-                            ((%text) tr *same error)
-                            ((col colgroup thead tfoot tbody tr) *retry *next))
-                           (*retry *next)) ;error handling
-                          ((col colgroup)
-                           nil
-                           (((thead tfoot tbody tr) *retry *next))
-                           (*retry *next)) ;error handling
-                          (nil
-                           nil
-                           (((thead) *include *next)
-                            ((tfoot tbody tr) *retry *next))
-                           (*retry *next)) ;error handling
-                          (nil
-                           nil
-                           (((tfoot) *include *next)
-                            ((tbody tr) *retry *next))
-                           (*retry *next)) ;error handling
-                          ((tbody)
-                           nil
-                           (((tr) tbody *same)
-                            ((td th) tr *same)
-                            ;; error handling
-                            ((%body.content) tbody *same error))
-                           nil)]))
-       ((colgroup)
-        (content-model . [((col)
-                           nil
-                           (((colgroup thead tfoot tbody tr) *close))
-                           nil)])
-        (end-tag-omissible . t))
-       ((col)
-        (content-model . EMPTY))
-       ((thead)
-        (content-model . [((tr)
-                           nil
-                           (((tfoot tbody) *close)
-                            ;; error handling
-                            ((%body.content) tr *same error))
-                           nil)])
-        (end-tag-omissible . t))
-       ((tfoot tbody)
-        (content-model . [((tr)
-                           nil
-                           (((tbody) *close)
-                            ;; error handling
-                            ((td th) tr *same error)
-                            ((%body.content) tr *same error))
-                           nil)])
-        (end-tag-omissible . t))
-       ((tr)
-        (content-model . [((td th)
-                           nil
-                           (((tr tfoot tbody) *close)
-                            ;; error handling
-                            ((%body.content %text) td *same error))
-                           nil)])
-        (end-tag-omissible . t))
-       ((td th)
-        ;; Arrgh!  Another %body.content!!!  Stupid!!!
-        (content-model . [((%body.content)
-                           nil
-                           (((td th tr tfoot tbody) *close)
-                            ;; Push <P> before data characters.  Non-SGML.
-                            ((%text) p))
-                           nil)])
-        (end-tag-omissible . t))
-       ((math)
-        (content-model . [((*data) include-space nil nil)])
-        (overrides .
-                   ((w3-p-d-shortref-chars t . "\{_^")
-                    (w3-p-d-shortrefs t . (("\\^" . "<sup>")
-                                           ("_" . "<sub>")
-                                           ("{" . "<box>")))))
-        (inclusions . (%math))
-        (exclusions . (%notmath)))
-       ((sup)
-        (content-model . [((%text)
-                           include-space
-                           ((%in-text-ignore))
-                           nil)])
-        (overrides .
-                   ((w3-p-d-shortref-chars t . "\{_^")
-                    (w3-p-d-shortrefs t . (("\\^" . "</sup>")
-                                           ("_" . "<sub>")
-                                           ("{" . "<box>"))))))
-       ((sub)
-        (content-model . [((%text)
-                           include-space
-                           ((%in-text-ignore))
-                           nil)])
-        (overrides .
-                   ((w3-p-d-shortref-chars t . "\{_^")
-                    (w3-p-d-shortrefs t . (("\\^" . "<sup>")
-                                           ("_" . "</sub>")
-                                           ("{" . "<box>"))))))
-       ((box)
-        (content-model . [((%formula)
-                           include-space
-                           (((left) *include 1)
-                            ((over atop choose) *include 2)
-                            ((right) *include 3))
-                           nil)
-                          ((%formula)
-                           include-space
-                           (((over atop choose) *include 2)
-                            ((right) *include 3))
-                           nil)
-                          ((%formula)
-                           include-space
-                           (((right) *include 3))
-                           nil)
-                          ((%formula) include-space nil nil)])
-        (overrides .
-                   ((w3-p-d-shortref-chars t . "{}_^")
-                    (w3-p-d-shortrefs t . (("\\^" . "<sup>")
-                                           ("_" . "<sub>")
-                                           ("{" . "<box>")
-                                           ("}" . "</box>"))))))
-       ((above below %mathvec t bt sqrt)
-        (content-model . [((%formula) include-space nil nil)]))
-       ;; ROOT has a badly-specified content-model in HTML 3.0.
-       ((root)
-        (content-model . [((%formula)
-                           include-space
-                           (((of) *include *next))
-                           nil)
-                          ((%formula) include-space nil nil)]))
-       ((of)
-        (content-model . [((%formula) include-space nil nil)])
-        ;; There is no valid way to infer a missing end-tag for OF.  This
-        ;; is bizarre.
-        (end-tag-omissible . t))
-       ((array)
-        (content-model . [((row) nil nil nil)]))
-       ((row)
-        (content-model . [((item) nil (((row) *close)) nil)])
-        (end-tag-omissible . t))
-       ((item)
-        (content-model . [((%formula)
-                           include-space
-                           (((row item) *close))
-                           nil)])
-        (end-tag-omissible . t))
-       ;; The old parser would look for the </EMBED> end-tag and include
-       ;; the contents between <EMBED> and </EMBED> as the DATA attribute
-       ;; of the EMBED start-tag.  However, it did not require the
-       ;; </EMBED> end-tag and did nothing if it was missing.  This is
-       ;; completely impossible to specify in SGML.
-       ;;
-       ;; See
-       ;; 
<URL:http://www.eit.com/goodies/lists/www.lists/www-html.1995q3/0603.html>  
-       ;;
-       ;; Questions: Does EMBED require the end-tag?  How does NOEMBED fit
-       ;; into this?  Where can EMBED appear?
-       ;;
-       ;; Nov. 25 1995: a new spec for EMBED (also an I-D):
-       ;; <URL:http://www.cs.princeton.edu/~burchard/www/interactive/>
-       ;;
-       ;; Here is my guess how to code EMBED:
-       ((embed)
-        (content-model . [((noembed) nil nil (*close))]))
-       ((noembed)
-        (content-model . [((%body.content) ; hack hack hack
-                           nil
-                           (((%text) p))
-                           nil)]))
-       ;;
-       ;; FRAMESET is a Netscape thing.
-       ;; 
<URL:http://www.eit.com/goodies/lists/www.lists/www-html.1995q3/0588.html>
-       ((frameset)
-        (content-model . [((noframes frame frameset) nil nil nil)]))
-       ((noframes)
-        (content-model . [((%body.content)
-                           nil
-                           ;; Push <P> before data characters.  Non-SGML.
-                           (((%text) p))
-                           nil)]))
-       ((frame)
-        (content-model . EMPTY))
-       ;;
-       ;; APPLET is a Java thing.
-       ;; OBJECT is a cougar thing
-       ;; <URL:http://java.sun.com/JDK-beta/filesinkit/README>
-       ((applet object)
-        ;; I really don't want to add another ANY content-model.
-        (content-model . XINHERIT)
-        (inclusions . (param)))
-       ((param)
-        (content-model . EMPTY))
-       ;; backward compatibility with old Java.
-       ((app)
-        (content-model . EMPTY))
-       ;; Client-side image maps.
-       ;; 
<URL:ftp://ds.internic.net/internet-drafts/draft-seidman-clientsideimagemap-01.txt>
-       ;; *** The only problem is that I don't know in what elements MAP
-       ;; can appear, so none of this is reachable yet.
-       ((map)
-        (content-model . [((area) nil nil nil)]))
-       ((area)
-        (content-model . EMPTY))
-       )))))
+                           ))
+           ;; TITLE - - (#PCDATA)
+           ((title)
+            (content-model . RCDATA     ; not official
+                           ;; [((*data) include-space nil nil)]
+                           ))
+           ;; STYLE - O (#PCDATA)
+           ;; STYLE needs to be #PCDATA to allow omitted end tag.  Bleagh.
+           ((style)
+            (content-model . CDATA)
+            (end-tag-omissible . t))
+           ((body)
+            (content-model . [((banner) nil nil (*retry *next))
+                              ((bodytext) nil nil (bodytext *next))
+                              (nil nil (((plaintext) *close)) nil)])
+            (inclusions . (spot))
+            (end-tag-omissible . t))
+           ;; Do I really want to include BODYTEXT?  It has something to do
+           ;; with mixed content screwing things up, and I don't understand
+           ;; it.  Wait!  It's used by BQ!
+           ((bodytext)
+            (content-model . [((%body.content)
+                               nil
+                               ;; Push <P> before data characters.  Non-SGML.
+                               (((%text) p)
+                                ;; Some stupid sites put meta tags in the
+                                ;; middle of their documents.  Sigh.
+                                ;; Allow it, but bitch and moan.
+                                ((meta) *include *same "not allowed here")
+                                ;; Closing when seeing CREDIT is a stupidity
+                                ;; caused by BQ's sharing of BODYTEXT.  BQ
+                                ;; should have its own BQTEXT.
+                                ((credit plaintext) *close))
+                               nil)
+                              ])
+            (end-tag-omissible . t))
+           ((div banner center multicol)
+            (content-model . [((%body.content)
+                               nil
+                               ;; Push <P> before data characters.  Non-SGML.
+                               (((%text) p))
+                               nil)]))
+           ((address)
+            (content-model . [((p)
+                               nil
+                               ;; Push <P> before data characters.  Non-SGML.
+                               (((%text) p))
+                               nil)]))
+           ((%heading)
+            (content-model . [((%text)
+                               include-space
+                               ((%in-text-ignore))
+                               nil)]))
+           ((span bdo)
+            (content-model . [((%text)
+                               include-space
+                               nil
+                               nil)])
+            )
+           ((p)
+            (content-model . [((%text)
+                               include-space
+                               nil
+                               ;; *** Should only close if tag can
+                               ;; legitimately follow P.  So many can that I
+                               ;; don't bother to enumerate here.
+                               (*close))])
+            (end-tag-omissible . t))
+           ((ul ol)
+            (content-model . [((lh)
+                               nil
+                               (((li) *include *next))
+                               (*retry *next))
+                              ((p)
+                               nil
+                               nil
+                               (*retry *next))
+                              ((li)
+                               nil
+                               ;; Push <LI> before data characters or block
+                               ;; elements.
+                               ;; Non-SGML.
+                               ( ;; ((p) b *same nil)
+                                ((%text %block) li *same error))
+                               nil)]))
+           ((lh)
+            (content-model . [((%text)
+                               include-space
+                               (((dd dt li) *close)
+                                (%in-text-ignore))
+                               nil)])
+            (end-tag-omissible . t))
+           ((dir menu)
+            (content-model . [((li)
+                               nil
+                               (((%text) li *same error))
+                               nil)])
+            (exclusions . (%block)))
+           ((li)
+            (content-model . [((%block)
+                               nil
+                               (((li) *close)
+                                ;; Push <P> before data characters.  Non-SGML.
+                                ((%text) p))
+                               nil)])
+            (end-tag-omissible . t)
+            ;; Better bad HTML handling.
+            ;; Technically, there are a few valid documents that this will
+            ;; hose, because you can have H1 inside FORM inside LI.  However,
+            ;; I don't think that should be allowed anyway.
+            (exclusions . (*discard "not allowed here" %heading)))
+           ((dl)
+            (content-model . [((lh)
+                               nil
+                               (((dt dd) *include *next))
+                               (*retry *next))
+                              ((dt dd)
+                               nil
+                               ;; Push <DD> before data characters or block
+                               ;; items.
+                               ;; Non-SGML.
+                               (((%text %block) dd *same error))
+                               nil)]))
+           ((dt)
+            (content-model . [((%text)
+                               include-space
+                               (((dd dt) *close)
+                                (%in-text-ignore))
+                               nil)])
+            (end-tag-omissible . t))
+           ;; DD is just like LI, but we treat it separately because it can be
+           ;; followed by a different set of elements.
+           ((dd)
+            (content-model . [((%block)
+                               nil
+                               (((dt dd) *close)
+                                ;; Push <P> before data characters.  Non-SGML.
+                                ((%text) p))
+                               nil)])
+            (end-tag-omissible . t)
+            ;; See comment with LI.
+            (exclusions . (*discard "not allowed here" %heading)))
+           ((pre)
+            (content-model . [((%text hr)
+                               include-space
+                               ((%in-text-ignore))
+                               nil)])
+            (exclusions . (%pre.exclusion)))
+           ;; BLOCKQUOTE deprecated, BQ okay
+           ((bq)
+            (content-model . %bq-content-model))
+           ((blockquote)
+            (content-model . %bq-content-model)
+            ;; BLOCKQUOTE is deprecated in favor of BQ in the HTML 3.0 DTD.
+            ;; However, BQ is not even mentioned in the HTML 2.0 DTD.  So I
+            ;; don't think we can enable this yet:
+            ;;(deprecated . t)
+            )
+           ((fn note)
+            (content-model . [((%body.content)
+                               nil
+                               ;; Push <P> before data characters.  Non-SGML.
+                               (((%text) p))
+                               nil)]))
+           ((fig)
+            (content-model . [((overlay) nil nil (*retry *next))
+                              (nil
+                               nil
+                               (((caption) *include *next))
+                               (*retry *next))
+                              (nil
+                               nil
+                               (((figtext) *include *next)
+                                ((credit) *retry *next))
+                               ;; *** Should only do this for elements that
+                               ;; can be in FIGTEXT.
+                               (figtext *next))
+                              (nil nil (((credit) *include *next)) nil)
+                              (nil nil nil nil)]))
+           ((caption credit)
+            (content-model . [((%text)
+                               nil
+                               ((%in-text-ignore))
+                               nil)]))
+           ((figtext)
+            (content-model . [((%body.content)
+                               nil
+                               ;; Push <P> before data characters.  Very 
non-SGML.
+                               (((%text) p)
+                                ((credit) *close))
+                               nil)])
+            (end-tag-omissible . t))
+           ((%emacsw3-crud basefont)
+            (content-model . EMPTY))
+           ;; FORM - - %body.content -(FORM) +(INPUT|KEYGEN|SELECT|TEXTAREA)
+           ((form)
+            ;; Same as BODY.  Ugh!
+            (content-model . [((%body.content %text)
+                               nil
+                               ;; Push <P> before data characters.  Non-SGML.
+                               nil
+                               nil)])
+            (exclusions . (form))
+            (inclusions . (input select textarea keygen label)))
+           ;; *** Where is the URL describing this?
+           ((label)
+            (content-model . [((%text)
+                               include-space
+                               nil
+                               nil)])
+            ;; *** These are already included, no need to repeat.
+            ;;(inclusions . (input select textarea))
+            ;; *** Is a LABEL allowed inside a LABEL?  I assume no.
+            (exclusions . (label))
+            ;; The next line just does the default so is unneeded:
+            ;;(end-tag-omissible . nil)
+            )
+           ;; SELECT - - (OPTION+) -(INPUT|KEYGEN|TEXTAREA|SELECT)>
+           ;; *** This should be -(everything).
+           ((select)
+            (content-model . [((option) nil nil nil)])
+            (exclusions . (input label select keygen textarea)))
+           ;; option - O (#PCDATA)
+           ;; needs to be #PCDATA to allow omitted end tag.
+           ((option)
+            ;; I'd like to make this RCDATA to avoid problems with inclusions
+            ;; like SPOT, but that would conflict with the omitted end-tag, I
+            ;; think.
+            (content-model . [((*data)
+                               include-space
+                               (((option) *close))
+                               nil)])
+            (end-tag-omissible . t))
+           ;; TEXTAREA - - (#PCDATA) -(INPUT|TEXTAREA|KEYGEN|SELECT)
+           ((textarea)
+            ;; Same comment as for OPTION about RCDATA.
+            (content-model . XCDATA) ;;;[((*data) include-space nil nil)])
+            (exclusions . (input select label keygen textarea)))
+           ((hr br img isindex input keygen overlay wbr spot tab
+                %headempty %mathdelims)
+            (content-model . EMPTY))
+           ((nextid)
+            (content-model . EMPTY)
+            (deprecated . t))
+           ((a)
+            (content-model . [((%text)
+                               include-space
+                               (((%heading)
+                                 *include *same "deprecated inside A")
+                                ;; *** I haven't made up my mind whether this
+                                ;; is a good idea.  It can result in a lot of
+                                ;; bad formatting if the A is *never* closed.
+                                ;;((p) *discard *same error)
+                                )
+                               nil)])
+            (exclusions . (a)))
+           ((b font %font %phrase %misc nobr)
+            (content-model . [((%text)
+                               include-space
+                               ((%in-text-ignore))
+                               nil)]))
+           ((plaintext)
+            (content-model . XXCDATA)
+            (end-tag-omissible . t)
+            (deprecated . obsolete))
+           ((xmp listing)
+            (content-model . XCDATA)
+            (deprecated . obsolete))
+           ;; Latest table spec (as of Nov. 13 1995) is at:
+           ;; 
<URL:ftp://ds.internic.net/internet-drafts/draft-ietf-html-tables-03.txt>
+           ((table)
+            (content-model . [(nil
+                               nil
+                               (((caption) *include *next)
+                                ((%text) tr *same error)
+                                ((col colgroup thead tfoot tbody tr) *retry 
*next))
+                               (*retry *next)) ;error handling
+                              ((col colgroup)
+                               nil
+                               (((thead tfoot tbody tr) *retry *next))
+                               (*retry *next)) ;error handling
+                              (nil
+                               nil
+                               (((thead) *include *next)
+                                ((tfoot tbody tr) *retry *next))
+                               (*retry *next)) ;error handling
+                              (nil
+                               nil
+                               (((tfoot) *include *next)
+                                ((tbody tr) *retry *next))
+                               (*retry *next)) ;error handling
+                              ((tbody)
+                               nil
+                               (((tr) tbody *same)
+                                ((td th) tr *same)
+                                ;; error handling
+                                ((%body.content) tbody *same error))
+                               nil)]))
+           ((colgroup)
+            (content-model . [((col)
+                               nil
+                               (((colgroup thead tfoot tbody tr) *close))
+                               nil)])
+            (end-tag-omissible . t))
+           ((col)
+            (content-model . EMPTY))
+           ((thead)
+            (content-model . [((tr)
+                               nil
+                               (((tfoot tbody) *close)
+                                ;; error handling
+                                ((%body.content) tr *same error))
+                               nil)])
+            (end-tag-omissible . t))
+           ((tfoot tbody)
+            (content-model . [((tr)
+                               nil
+                               (((tbody) *close)
+                                ;; error handling
+                                ((td th) tr *same error)
+                                ((%body.content) tr *same error))
+                               nil)])
+            (end-tag-omissible . t))
+           ((tr)
+            (content-model . [((td th)
+                               nil
+                               (((tr tfoot tbody) *close)
+                                ;; error handling
+                                ((%body.content %text) td *same error))
+                               nil)])
+            (end-tag-omissible . t))
+           ((td th)
+            ;; Arrgh!  Another %body.content!!!  Stupid!!!
+            (content-model . [((%body.content)
+                               nil
+                               (((td th tr tfoot tbody) *close)
+                                ;; Push <P> before data characters.  Non-SGML.
+                                ((%text) p))
+                               nil)])
+            (end-tag-omissible . t))
+           ((math)
+            (content-model . [((*data) include-space nil nil)])
+            (overrides .
+                       ((w3-p-d-shortref-chars t . "\{_^")
+                        (w3-p-d-shortrefs t . (("\\^" . "<sup>")
+                                               ("_" . "<sub>")
+                                               ("{" . "<box>")))))
+            (inclusions . (%math))
+            (exclusions . (%notmath)))
+           ((sup)
+            (content-model . [((%text)
+                               include-space
+                               ((%in-text-ignore))
+                               nil)])
+            (overrides .
+                       ((w3-p-d-shortref-chars t . "\{_^")
+                        (w3-p-d-shortrefs t . (("\\^" . "</sup>")
+                                               ("_" . "<sub>")
+                                               ("{" . "<box>"))))))
+           ((sub)
+            (content-model . [((%text)
+                               include-space
+                               ((%in-text-ignore))
+                               nil)])
+            (overrides .
+                       ((w3-p-d-shortref-chars t . "\{_^")
+                        (w3-p-d-shortrefs t . (("\\^" . "<sup>")
+                                               ("_" . "</sub>")
+                                               ("{" . "<box>"))))))
+           ((box)
+            (content-model . [((%formula)
+                               include-space
+                               (((left) *include 1)
+                                ((over atop choose) *include 2)
+                                ((right) *include 3))
+                               nil)
+                              ((%formula)
+                               include-space
+                               (((over atop choose) *include 2)
+                                ((right) *include 3))
+                               nil)
+                              ((%formula)
+                               include-space
+                               (((right) *include 3))
+                               nil)
+                              ((%formula) include-space nil nil)])
+            (overrides .
+                       ((w3-p-d-shortref-chars t . "{}_^")
+                        (w3-p-d-shortrefs t . (("\\^" . "<sup>")
+                                               ("_" . "<sub>")
+                                               ("{" . "<box>")
+                                               ("}" . "</box>"))))))
+           ((above below %mathvec t bt sqrt)
+            (content-model . [((%formula) include-space nil nil)]))
+           ;; ROOT has a badly-specified content-model in HTML 3.0.
+           ((root)
+            (content-model . [((%formula)
+                               include-space
+                               (((of) *include *next))
+                               nil)
+                              ((%formula) include-space nil nil)]))
+           ((of)
+            (content-model . [((%formula) include-space nil nil)])
+            ;; There is no valid way to infer a missing end-tag for OF.  This
+            ;; is bizarre.
+            (end-tag-omissible . t))
+           ((array)
+            (content-model . [((row) nil nil nil)]))
+           ((row)
+            (content-model . [((item) nil (((row) *close)) nil)])
+            (end-tag-omissible . t))
+           ((item)
+            (content-model . [((%formula)
+                               include-space
+                               (((row item) *close))
+                               nil)])
+            (end-tag-omissible . t))
+           ;; The old parser would look for the </EMBED> end-tag and include
+           ;; the contents between <EMBED> and </EMBED> as the DATA attribute
+           ;; of the EMBED start-tag.  However, it did not require the
+           ;; </EMBED> end-tag and did nothing if it was missing.  This is
+           ;; completely impossible to specify in SGML.
+           ;;
+           ;; See
+           ;; 
<URL:http://www.eit.com/goodies/lists/www.lists/www-html.1995q3/0603.html>  
+           ;;
+           ;; Questions: Does EMBED require the end-tag?  How does NOEMBED fit
+           ;; into this?  Where can EMBED appear?
+           ;;
+           ;; Nov. 25 1995: a new spec for EMBED (also an I-D):
+           ;; <URL:http://www.cs.princeton.edu/~burchard/www/interactive/>
+           ;;
+           ;; Here is my guess how to code EMBED:
+           ((embed)
+            (content-model . [((noembed) nil nil (*close))]))
+           ((noembed)
+            (content-model . [((%body.content) ; hack hack hack
+                               nil
+                               (((%text) p))
+                               nil)]))
+           ;;
+           ;; FRAMESET is a Netscape thing.
+           ;; 
<URL:http://www.eit.com/goodies/lists/www.lists/www-html.1995q3/0588.html>
+           ((frameset)
+            (content-model . [((noframes frame frameset) nil nil nil)]))
+           ((noframes)
+            (content-model . [((%body.content)
+                               nil
+                               ;; Push <P> before data characters.  Non-SGML.
+                               (((%text) p))
+                               nil)]))
+           ((frame)
+            (content-model . EMPTY))
+           ;;
+           ;; APPLET is a Java thing.
+           ;; OBJECT is a cougar thing
+           ;; <URL:http://java.sun.com/JDK-beta/filesinkit/README>
+           ((applet object)
+            ;; I really don't want to add another ANY content-model.
+            (content-model . XINHERIT)
+            (inclusions . (param)))
+           ((param)
+            (content-model . EMPTY))
+           ;; backward compatibility with old Java.
+           ((app)
+            (content-model . EMPTY))
+           ;; Client-side image maps.
+           ;; 
<URL:ftp://ds.internic.net/internet-drafts/draft-seidman-clientsideimagemap-01.txt>
+           ;; *** The only problem is that I don't know in what elements MAP
+           ;; can appear, so none of this is reachable yet.
+           ((map)
+            (content-model . [((area) nil nil nil)]))
+           ((area)
+            (content-model . EMPTY))
+           )))))
+  (put (car pair) 'html-element-info (cdr pair)))
 
 
 ;;;
@@ -2015,9 +2008,8 @@ Do nothing in non-Mule or unibyte session."
              default-enable-multibyte-characters)
     (ethio-sera-to-fidel-marker)))
 
-(if (fboundp 'char-int)
-    (defalias 'w3-char-int 'char-int)
-  (defalias 'w3-char-int 'identity))
+(defalias 'w3-char-int
+  (if (fboundp 'char-int) #'char-int #'identity))
 
 ;; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 ;; %                                                    %
@@ -2031,10 +2023,7 @@ BUFF defaults to the current buffer.
 Destructively alters contents of BUFF.
 Returns a data structure containing the parsed information."
   (if (not w3-setup-done) (w3-do-setup))
-  (save-excursion
-    (if buff
-        (set-buffer buff)
-      (setq buff (current-buffer)))
+  (with-current-buffer (or buff (setq buff (current-buffer)))
     (let ((old-syntax-table (syntax-table)))
       (set-syntax-table w3-sgml-md-syntax-table)
       (buffer-disable-undo (current-buffer))
@@ -2078,7 +2067,7 @@ Returns a data structure containing the parsed 
information."
              ;; The buffer which contains the HTML we are parsing.  This
              ;; variable is used to avoid using the more expensive
              ;; save-excursion.
-             (parse-buffer (current-buffer))
+             ;; (parse-buffer (current-buffer))
          
              ;; Points to start of region of text since the previous tag.
              (between-tags-start (point-min))
@@ -2927,9 +2916,9 @@ Returns a data structure containing the parsed 
information."
 BUFF defaults to the current buffer.
 Destructively alters contents of BUFF.
 Returns a data structure containing the parsed information."
-  (if nil ;; (w3-fast-parse-find-tidy-program)
-      (fset 'w3-parse-buffer 'w3-fast-parse-buffer)
-    (fset 'w3-parse-buffer 'w3-slow-parse-buffer))
+  (fset 'w3-parse-buffer (if nil ;; (w3-fast-parse-find-tidy-program)
+                             #'w3-fast-parse-buffer
+                           #'w3-slow-parse-buffer))
   (w3-parse-buffer buff))
 
 
diff --git a/w3-print.el b/w3-print.el
index eca6016..537abaf 100644
--- a/w3-print.el
+++ b/w3-print.el
@@ -1,30 +1,32 @@
 ;;; w3-print.el --- Printing support for emacs-w3
+
+;; Copyright (c) 1996 - 1999, 2013 Free Software Foundation, Inc.
+
 ;; Author: $Author: fx $
 ;; Created: $Date: 2001/06/07 17:16:57 $
-;; Version: $Revision: 1.3 $
 ;; Keywords: faces, help, printing, hypermedia
 
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; Copyright (c) 1993 - 1996 by William M. Perry <address@hidden>
-;;; Copyright (c) 1996 - 1999 Free Software Foundation, Inc.
-;;;
-;;; This file is part of GNU Emacs.
-;;;
-;;; GNU Emacs is free software; you can redistribute it and/or modify
-;;; it under the terms of the GNU General Public License as published by
-;;; the Free Software Foundation; either version 2, or (at your option)
-;;; any later version.
-;;;
-;;; GNU Emacs is distributed in the hope that it will be useful,
-;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;;; GNU General Public License for more details.
-;;;
-;;; You should have received a copy of the GNU General Public License
-;;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;;; Boston, MA 02111-1307, USA.
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; This file is part of GNU Emacs.
+;;
+;; GNU Emacs is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 3, or (at your option)
+;; any later version.
+;;
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
+
+;;; Code:
+
+(require 'w3-vars)
+
 (defvar w3-postscript-print-function 'ps-print-buffer-with-faces
   "*Name of the function to use to print a buffer as PostScript.
 This should take no arguments, and act on the current buffer.
@@ -48,12 +50,10 @@ ps-spool-buffer-with-faces   - spool for later")
                      nil t))))
     (cond
      ((equal "HTML Source" format)
-      (save-excursion
-       (set-buffer (generate-new-buffer " *w3-print*"))
+      (with-current-buffer (generate-new-buffer " *w3-print*")
        (insert w3-current-source)
        (lpr-buffer)))
-     ((or (equal "Formatted Text" format)
-         (equal "" format))
+     ((member form '("Formatted Text" ""))
       (lpr-buffer))
      ((equal "PostScript" format)
       (funcall w3-postscript-print-function)))))
diff --git a/w3-props.el b/w3-props.el
index ce8a5cc..5ea56e8 100644
--- a/w3-props.el
+++ b/w3-props.el
@@ -1,32 +1,31 @@
 ;;; w3-props.el --- Additional text property stuff
+
+;; Copyright (c) 1996, 1997, 2013 Free Software Foundation, Inc.
+
 ;; Author: $Author: fx $
 ;; Created: $Date: 2001/09/09 15:33:14 $
-;; Version: $Revision: 1.2 $
 ;; Keywords: faces
 
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; Copyright (c) 1995, 1996 by William M. Perry <address@hidden>
-;;; Copyright (c) 1996, 1997 Free Software Foundation, Inc.
-;;;
-;;; This file is part of GNU Emacs.
-;;;
-;;; GNU Emacs is free software; you can redistribute it and/or modify
-;;; it under the terms of the GNU General Public License as published by
-;;; the Free Software Foundation; either version 2, or (at your option)
-;;; any later version.
-;;;
-;;; GNU Emacs is distributed in the hope that it will be useful,
-;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;;; GNU General Public License for more details.
-;;;
-;;; You should have received a copy of the GNU General Public License
-;;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;;; Boston, MA 02111-1307, USA.
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; This file is part of GNU Emacs.
+;;
+;; GNU Emacs is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 3, or (at your option)
+;; any later version.
+;;
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
 
-;;; Additional text property functions.
+;;; Commentary:
+
+;; Additional text property functions.
 
 ;; The following three text property functions are not generally available (and
 ;; it's not certain that they should be) so they are inlined for speed.
@@ -37,6 +36,8 @@
 ;; so, should the first or last duplicate item remain?  Or the one that was
 ;; added?  In our implementation, the first duplicate remains.
 
+;;; Code:
+
 (defsubst w3-fillin-text-property (start end setprop markprop value
                                         &optional object)
   "Fill in one property of the text from START to END.
diff --git a/w3-speak-table.el b/w3-speak-table.el
index 1b71378..98ebbe4 100644
--- a/w3-speak-table.el
+++ b/w3-speak-table.el
@@ -1,6 +1,31 @@
-;;;$Id: w3-speak-table.el,v 1.4 2001/05/25 14:05:05 wmperry Exp $
-;;;Authors: Thierry Emery <address@hidden>, T.V. Raman <address@hidden>
-;;;Description: Speak W3 tables
+;;; w3-speak-table.el --- Speak W3 tables
+
+;; Copyright (c) 2013  Free Software Foundation, Inc.
+
+;; Author: Thierry Emery <address@hidden>
+;;         T.V. Raman <address@hidden>
+
+;; This file is not part of GNU Emacs, but the same permissions apply.
+;;
+;; GNU Emacs is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 3, or (at your option)
+;; any later version.
+;;
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
+
+;;; Code:
+
+(require 'w3-keymap)
+(require 'w3-vars)
 
 (eval-when-compile
   (require 'cl)
@@ -85,20 +110,20 @@ and return it as (horizontal-offset . vertical-offset)"
 (defmacro w3-table-move-within-cell (at-depth cell-info move-function)
   "Move within a cell (in a temporary buffer) and reflect the same movement
 in the containing table in the original buffer"
+  (declare (indent 2) (debug t))
   `(if (null ,cell-info)
-        (error "Not inside a W3 cell")
-       (let (table-movement)
-        (w3-within-cell ,cell-info table-info
-                        (setq table-movement
-                              (w3-table-compute-relative-movement
-                               (funcall ,move-function (1- at-depth)))))
-        (w3-table-redo-relative-movement table-movement))))
-(put 'w3-table-move-within-cell 'lisp-indent-function 2)
-(put 'w3-table-move-within-cell 'edebug-form-spec '(sexp sexp &rest form))
+       (error "Not inside a W3 cell")
+     (let (table-movement)
+       (w3-within-cell ,cell-info table-info
+                       (setq table-movement
+                             (w3-table-compute-relative-movement
+                              (funcall ,move-function (1- ,at-depth)))))
+       (w3-table-redo-relative-movement table-movement))))
 
 (defmacro w3-table-move-within-subtable (at-depth cell-info move-function)
   "Move within a subtable (in a temporary buffer) and reflect the same movement
 in the containing table in the original buffer"
+  (declare (indent 2) (debug t))
   `(if (null ,cell-info)
         (error "Not inside a W3 cell")
        (let ((subtable-info (w3-cell-info-current-subtable ,cell-info))
@@ -108,12 +133,9 @@ in the containing table in the original buffer"
           (w3-within-cell ,cell-info table-info
                           (setq table-movement
                                 (w3-table-compute-relative-movement
-                                 (funcall ,move-function (1- at-depth) 
subtable-info))))
+                                 (funcall ,move-function (1- ,at-depth) 
subtable-info))))
           (w3-table-redo-relative-movement table-movement)))))
 
-(put 'w3-table-move-within-subtable 'lisp-indent-function 2)
-(put 'w3-table-move-within-subtable 'edebug-form-spec '(sexp sexp &rest form))
-
 ;;}}}
 ;;{{{  find a table
 
@@ -219,7 +241,6 @@ If no table is found and NOERROR is nil, an error is 
signaled."
 (defun w3-table-current-column-number (&optional table-info)
   "Return spanless column number"
   (let* ((table-info (or table-info (w3-table-info 0)))
-        (start (w3-table-info-start table-info))
         (char-col (current-column))
         (num-cols (w3-table-info-columns table-info))
         (col-widths (w3-table-info-column-widths table-info))
@@ -308,7 +329,6 @@ NB: row and col start from 1
             (start (w3-table-info-start table-info))
             (table-row-heights (w3-table-info-row-heights table-info))
             (table-col-widths (w3-table-info-column-widths table-info))
-            (table-width (+ (apply '+ (map 'list '1+ table-col-widths)) 2))
             (table-row-index (1- table-row))
             (table-col-index (1- table-col))
             cell-beg
@@ -403,8 +423,7 @@ cell for a newspaper style column"
         (buffer (get-buffer-create
                  (format "Cell-%s" (buffer-name))))
         (inhibit-read-only t))
-    (save-excursion
-      (set-buffer buffer)
+    (with-current-buffer buffer
       (erase-buffer)
       (w3-mode)
       (insert contents)
@@ -595,10 +614,8 @@ Prefix arg can be used to specify the desired table 
nesting."
        (w3-table-move-within-subtable at-depth cell-info
                                       'w3-table-move-to-top-of-table-column)
       (let ((table-start nil)
-           (table-end nil)
            (column (w3-table-current-column-number table-info))
            (motion 0)
-           (top-left nil)
            (widths (w3-table-info-column-widths table-info)))
        (set-mark (point))
        (save-excursion
@@ -631,8 +648,7 @@ Prefix arg can be used to specify the desired table 
nesting."
                (error "Not inside a W3 table")
              (w3-within-cell cell-info table-info
                 'w3-table-speak-current-table-column))))
-      (let ((orig (point))
-           (table-start nil)
+      (let ((table-start nil)
            (table-end nil)
            (column (w3-table-current-column-number table-info))
            (top-left nil)
@@ -661,11 +677,11 @@ Prefix arg can be used to specify the desired table 
nesting."
 ;;}}}
 ;;{{{  bind them to useful keys
 
-;;;###autoload
+(defvar emacspeak-prefix)
 
+;;;###autoload
 (defun w3-table-setup-keys ()
   "Setup emacspeak table browsing keys in w3 mode"
-  (declare (special emacspeak-prefix w3-mode-map))
   (let ((key (make-vector 1 (aref emacspeak-prefix 0))))
     (define-key w3-mode-map ","
       'w3-table-focus-on-this-cell)
diff --git a/w3-speak.el b/w3-speak.el
index cd5f4fa..f68ce8b 100644
--- a/w3-speak.el
+++ b/w3-speak.el
@@ -1,47 +1,47 @@
-;;; w3-speak.el,v --- Emacs-W3 speech interface
+;;; w3-speak.el --- Emacs-W3 speech interface
+
+;; Copyright (c) 1997, 1998, 2013 Free Software Foundation, Inc.
+
 ;; Author: wmperry
 ;; Original author: William Perry --<address@hidden>
 ;; Cloned from emacspeak-w3.el
 ;; Created: 1996/10/16 20:56:40
-;; Version: 1.14
 ;; Keywords: hypermedia, speech
 
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; Copyright (c) 1996 by T.V. Raman (address@hidden)
-;;; Copyright (c) 1996, 1997 by William M. Perry (address@hidden)
-;;; Copyright (c) 1997, 1998 Free Software Foundation, Inc.
-;;;
-;;; This file is not part of GNU Emacs, but the same permissions apply.
-;;;
-;;; GNU Emacs is free software; you can redistribute it and/or modify
-;;; it under the terms of the GNU General Public License as published by
-;;; the Free Software Foundation; either version 2, or (at your option)
-;;; any later version.
-;;;
-;;; GNU Emacs is distributed in the hope that it will be useful,
-;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;;; GNU General Public License for more details.
-;;;
-;;; You should have received a copy of the GNU General Public License
-;;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;;; Boston, MA 02111-1307, USA.
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; A replacement module for emacspeak-w3 that uses all the new functionality
-;;; of Emacs/W3 3.0.
-;;;
-;;; This file would not be possible without the help of
-;;; T.V. Raman (address@hidden) and his continued efforts to make Emacs/W3
-;;; even remotely useful. :)
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-;;; This conforms to http://www4.inria.fr/speech2.html
+;; This file is not part of GNU Emacs, but the same permissions apply.
+;;
+;; GNU Emacs is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 3, or (at your option)
+;; any later version.
+;;
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
+
+;;; Commentary:
+
+;; A replacement module for emacspeak-w3 that uses all the new functionality
+;; of Emacs/W3 3.0.
+;;
+;; This file would not be possible without the help of
+;; T.V. Raman (address@hidden) and his continued efforts to make Emacs/W3
+;; even remotely useful. :)
+
+;; This conforms to http://www4.inria.fr/speech2.html
+
+;;; Code:
 
 (require 'widget)
 (require 'w3-forms)
+(require 'w3-cus)
+(require 'w3-keymap)
 (require 'advice)
 ;; This condition-case needs to be here or it completely chokes
 ;; byte-compilation for people who do not have Emacspeak installed.
@@ -52,8 +52,9 @@
       (require 'dtk-voices)
       (require 'emacspeak-speak)
       (require 'emacspeak-sounds)
-      (eval-when (compile)
-                (require 'emacspeak-fix-interactive)))
+      ;; (eval-when (compile)
+      ;;        (require 'emacspeak-fix-interactive))
+      )
   (error (message "Emacspeak not found - speech will not work.")))
 
 
@@ -124,12 +125,14 @@
     (emacspeak-auditory-icon 'close-object)
     (emacspeak-speak-mode-line)))
 
+(defvar dtk-punctuation-mode)
+(defvar voice-lock-mode)
+
 (defadvice w3-fetch (around  emacspeak  act comp )
   "First produce an auditory icon to indicate retrieval.
 After retrieval, 
-set  voice-lock-mode to t after displaying the buffer,
-and then speak the mode-line. "
-  (declare (special dtk-punctuation-mode))
+set `voice-lock-mode' to t after displaying the buffer,
+and then speak the mode-line."
   (emacspeak-auditory-icon 'select-object)
   ad-do-it)
 
@@ -139,39 +142,36 @@ and then speak the mode-line. "
   (emacspeak-auditory-icon 'open-object)
   (emacspeak-speak-mode-line))
 
-;;; This is really the only function you should need to call unless
-;;; you are adding functionality.
+;; This is really the only function you should need to call unless
+;; you are adding functionality.
 (defun w3-speak-use-voice-locking (&optional arg) 
   "Tells w3 to start using voice locking.
 This is done by setting the w3 variables so that anchors etc are not marked by
-delimiters. We then turn on voice-lock-mode. 
-Interactive prefix arg does the opposite. "
+delimiters.  We then turn on `voice-lock-mode'.
+Interactive prefix arg does the opposite."
   (interactive "P")
-  (declare (special w3-echo-link))
   (setq w3-echo-link 'text)
   (if arg
       (remove-hook 'w3-mode-hook 'w3-speak-mode-hook)
     (add-hook 'w3-mode-hook 'w3-speak-mode-hook)))
 
 (defun w3-speak-browse-page ()
-  "Browse a WWW page"
+  "Browse a WWW page."
   (interactive)
   (emacspeak-audio-annotate-paragraphs)
   (emacspeak-execute-repeatedly 'forward-paragraph))
 
-(declaim (special w3-mode-map))
 (define-key w3-mode-map "." 'w3-speak-browse-page)
 
-(defvar url-speak-last-progress-indication 0
-  "Caches when we last produced a progress auditory icon")
+(defvar w3-speak--last-progress-indication 0
+  "Caches when we last produced a progress auditory icon.")
 
 (defadvice url-lazy-message (around emacspeak pre act)
-  "Provide pleasant auditory feedback about progress"
-  (declare (special url-speak-last-progress-indication ))
+  "Provide pleasant auditory feedback about progress."
   (let ((now (nth 1 (current-time))))
     (when (> now
-            (+ 3 url-speak-last-progress-indication))
-         (setq url-speak-last-progress-indication now)
+            (+ 3 w3-speak--last-progress-indication))
+         (setq w3-speak--last-progress-indication now)
          (apply 'message (ad-get-args 0))
          (emacspeak-auditory-icon 'progress))))
 
diff --git a/w3-style.el b/w3-style.el
index 56b32ef..94f9ab5 100644
--- a/w3-style.el
+++ b/w3-style.el
@@ -1,38 +1,39 @@
 ;;; w3-style.el --- Emacs/W3 binding style sheet mechanism
+
+;; Copyright (c) 1996-1999, 2013 Free Software Foundation, Inc.
+
 ;; Author: $Author: fx $
 ;; Created: $Date: 2001/10/11 13:04:58 $
-;; Version: $Revision: 1.4 $
 ;; Keywords: faces, hypermedia
 
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; Copyright (c) 1993 - 1996 by William M. Perry <address@hidden>
-;;; Copyright (c) 1996 - 1999 Free Software Foundation, Inc.
-;;;
-;;; This file is part of GNU Emacs.
-;;;
-;;; GNU Emacs is free software; you can redistribute it and/or modify
-;;; it under the terms of the GNU General Public License as published by
-;;; the Free Software Foundation; either version 2, or (at your option)
-;;; any later version.
-;;;
-;;; GNU Emacs is distributed in the hope that it will be useful,
-;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;;; GNU General Public License for more details.
-;;;
-;;; You should have received a copy of the GNU General Public License
-;;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;;; Boston, MA 02111-1307, USA.
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; This file is part of GNU Emacs.
+;;
+;; GNU Emacs is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 3, or (at your option)
+;; any later version.
+;;
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
+
+;;; Commentary:
+
+;; A style sheet mechanism for emacs-w3
+;;
+;; This will eventually be able to under DSSSL[-lite] as well as the
+;; experimental W3C mechanism
+
+;;; Code:
 
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; A style sheet mechanism for emacs-w3
-;;;
-;;; This will eventually be able to under DSSSL[-lite] as well as the
-;;; experimental W3C mechanism
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 (require 'font)
+(require 'w3-vars)
 (eval-when-compile (require 'cl))
 (require 'css)
 
@@ -44,8 +45,6 @@
        (media (intern (downcase (or (plist-get plist 'media) "all"))))
        (type (downcase (or (plist-get plist 'notation) "text/css")))
        (stylesheet nil)
-       (defines nil)
-       (buffer nil)
        (cur-sheet w3-current-stylesheet)
        (string (plist-get plist 'data)))
     (if (not (memq media (css-active-device-types)))
diff --git a/w3-toolbar.el b/w3-toolbar.el
index bee5bce..34ccfa7 100644
--- a/w3-toolbar.el
+++ b/w3-toolbar.el
@@ -1,34 +1,36 @@
 ;;; w3-toolbar.el --- Toolbar functions for emacs-w3
+
+;; Copyright (c) 1996-1997, 2013 Free Software Foundation, Inc.
+
 ;; Author: William M. Perry <address@hidden>
 ;; Created: $Date: 2001/07/19 14:15:52 $
-;; Version: $Revision: 1.8 $
 ;; Keywords: mouse, toolbar
 
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; Copyright (c) 1995, 1996 by William M. Perry <address@hidden>
-;;; Copyright (c) 1996, 1997 Free Software Foundation, Inc.
-;;;
-;;; This file is part of GNU Emacs.
-;;;
-;;; GNU Emacs is free software; you can redistribute it and/or modify
-;;; it under the terms of the GNU General Public License as published by
-;;; the Free Software Foundation; either version 2, or (at your option)
-;;; any later version.
-;;;
-;;; GNU Emacs is distributed in the hope that it will be useful,
-;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;;; GNU General Public License for more details.
-;;;
-;;; You should have received a copy of the GNU General Public License
-;;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;;; Boston, MA 02111-1307, USA.
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; Toolbar specific function for XEmacs and Emacs 21
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; This file is part of GNU Emacs.
+;;
+;; GNU Emacs is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 3, or (at your option)
+;; any later version.
+;;
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
+
+;;; Commentary:
+
+;; Toolbar specific function for XEmacs and Emacs 21
+
+;;; Code:
+
+(require 'w3-vars)
+
 (condition-case ()
     (progn
       (require 'xpm-button)
@@ -152,19 +154,16 @@ not `none'.")
       (xbm-button-create text 0))))
 
 (defun w3-toolbar-make-text-buttons ()
-  (let ((bgcol (or (cdr-safe (assq 'background-toolbar-color
-                                  (frame-parameters)))
-                  "#befbbefbbefb")))
-    (setq w3-toolbar-back-icon (w3-make-text-toolbar-button "Back")
-         w3-toolbar-forw-icon (w3-make-text-toolbar-button "Forward")
-         w3-toolbar-home-icon (w3-make-text-toolbar-button "Home")
-         w3-toolbar-reld-icon (w3-make-text-toolbar-button "Reload")
-         w3-toolbar-hotl-icon (w3-make-text-toolbar-button "Hotlist")
-         w3-toolbar-imag-icon (w3-make-text-toolbar-button "Images")
-         w3-toolbar-open-icon (w3-make-text-toolbar-button "Open")
-         w3-toolbar-print-icon (w3-make-text-toolbar-button "Print")
-         w3-toolbar-find-icon (w3-make-text-toolbar-button "Find")
-         w3-toolbar-help-icon (w3-make-text-toolbar-button "Help!"))))
+  (setq w3-toolbar-back-icon (w3-make-text-toolbar-button "Back")
+        w3-toolbar-forw-icon (w3-make-text-toolbar-button "Forward")
+        w3-toolbar-home-icon (w3-make-text-toolbar-button "Home")
+        w3-toolbar-reld-icon (w3-make-text-toolbar-button "Reload")
+        w3-toolbar-hotl-icon (w3-make-text-toolbar-button "Hotlist")
+        w3-toolbar-imag-icon (w3-make-text-toolbar-button "Images")
+        w3-toolbar-open-icon (w3-make-text-toolbar-button "Open")
+        w3-toolbar-print-icon (w3-make-text-toolbar-button "Print")
+        w3-toolbar-find-icon (w3-make-text-toolbar-button "Find")
+        w3-toolbar-help-icon (w3-make-text-toolbar-button "Help!")))
 
 (defun w3-toolbar-make-picture-buttons ()
   (mapcar
@@ -264,91 +263,96 @@ not `none'.")
     ))
 
 (defun w3-toolbar-from-orientation (orientation)
-  (cond
-   ((eq 'default w3-toolbar-orientation) default-toolbar)
-   ((eq 'bottom w3-toolbar-orientation) bottom-toolbar)
-   ((eq 'top w3-toolbar-orientation) top-toolbar)
-   ((eq 'left w3-toolbar-orientation) left-toolbar)
-   ((eq 'right w3-toolbar-orientation) right-toolbar)))
+  (if (featurep 'xemacs)
+      (cond
+       ((eq 'default orientation) default-toolbar)
+       ((eq 'bottom orientation) bottom-toolbar)
+       ((eq 'top orientation) top-toolbar)
+       ((eq 'left orientation) left-toolbar)
+       ((eq 'right orientation) right-toolbar))
+    (error "Unimplemented")))
 
-(defun w3-toolbar-dimension-from-orientation (orientation)
-  (cond
-   ((eq 'default w3-toolbar-orientation) nil)
-   ((eq 'bottom w3-toolbar-orientation) bottom-toolbar-height)
-   ((eq 'top w3-toolbar-orientation) top-toolbar-height)
-   ((eq 'left w3-toolbar-orientation) left-toolbar-width)
-   ((eq 'right w3-toolbar-orientation) right-toolbar-width)))
-
-(defun w3-ensure-toolbar-visible (orientation)
-  ;; Make sure a certain toolbar is visible if necessary
-  ;; This can modify frame parameters, so watch out.
-  (let ((dimension (w3-toolbar-dimension-from-orientation orientation))
-       (toolbar   (w3-toolbar-from-orientation orientation))
-       (dimensions nil)
-       (widths nil)
-       (heights nil)
-       (needs nil)
-       (has nil))
-    (if (and dimension toolbar
-            (setq toolbar (specifier-instance toolbar)))
-       (progn
-         (setq dimensions (mapcar
-                           (function
-                            (lambda (glyph)
-                              (and (glyphp glyph)
-                                   (cons (glyph-width glyph)
-                                         (glyph-height glyph)))))
-                           (mapcar 'car
-                                   (delq nil
-                                         (mapcar
-                                          (function (lambda (x)
-                                                      (and x
-                                                           (symbol-value
-                                                            (aref x 0)))))
-                                          toolbar))))
-               widths (sort (mapcar 'car dimensions) '>=)
-               heights (sort (mapcar 'cdr dimensions) '>=)
-               needs (+ 7 (if (memq orientation '(top bottom))
-                             (car heights)
-                           (car widths)))
-               has (specifier-instance dimension))
-         (if (<= has needs)
-             (set-specifier dimension (cons (selected-frame) needs)))))))
+;; (defun w3-toolbar-dimension-from-orientation (orientation)
+;;   (cond
+;;    ((eq 'default w3-toolbar-orientation) nil)
+;;    ((eq 'bottom w3-toolbar-orientation) bottom-toolbar-height)
+;;    ((eq 'top w3-toolbar-orientation) top-toolbar-height)
+;;    ((eq 'left w3-toolbar-orientation) left-toolbar-width)
+;;    ((eq 'right w3-toolbar-orientation) right-toolbar-width)))
+
+;; (defun w3-ensure-toolbar-visible (orientation)
+;;   ;; Make sure a certain toolbar is visible if necessary
+;;   ;; This can modify frame parameters, so watch out.
+;;   (let ((dimension (w3-toolbar-dimension-from-orientation orientation))
+;;     (toolbar   (w3-toolbar-from-orientation orientation))
+;;     (dimensions nil)
+;;     (widths nil)
+;;     (heights nil)
+;;     (needs nil)
+;;     (has nil))
+;;     (if (and dimension toolbar
+;;          (setq toolbar (specifier-instance toolbar)))
+;;     (progn
+;;       (setq dimensions (mapcar
+;;                         (function
+;;                          (lambda (glyph)
+;;                            (and (glyphp glyph)
+;;                                 (cons (glyph-width glyph)
+;;                                       (glyph-height glyph)))))
+;;                         (mapcar 'car
+;;                                 (delq nil
+;;                                       (mapcar
+;;                                        (function (lambda (x)
+;;                                                    (and x
+;;                                                         (symbol-value
+;;                                                          (aref x 0)))))
+;;                                        toolbar))))
+;;             widths (sort (mapcar 'car dimensions) '>=)
+;;             heights (sort (mapcar 'cdr dimensions) '>=)
+;;             needs (+ 7 (if (memq orientation '(top bottom))
+;;                           (car heights)
+;;                         (car widths)))
+;;             has (specifier-instance dimension))
+;;       (if (<= has needs)
+;;           (set-specifier dimension (cons (selected-frame) needs)))))))
                             
 (defun w3-toolbar-active ()
   (interactive)
-  (let ((toolbar (w3-toolbar-from-orientation w3-toolbar-orientation)))
-    (if (and toolbar (specifier-instance toolbar))
-       t
-      nil)))
+  (if (featurep 'xemacs)
+      (let ((toolbar (w3-toolbar-from-orientation w3-toolbar-orientation)))
+        (and toolbar (specifier-instance toolbar)))
+    (error "Unimplemented")))
 
-(defun w3-toggle-link-toolbar ()
-  (interactive)
-  (require 'info)                      ; For some toolbar buttons
-  (let* ((w3-toolbar-orientation w3-link-toolbar-orientation)
-        (toolbar (w3-toolbar-from-orientation w3-toolbar-orientation)))
-    (if toolbar
-       (if (w3-toolbar-active)
-           (set-specifier toolbar (cons (current-buffer) nil))
-         (set-specifier toolbar w3-link-toolbar (current-buffer))))))
+;; (defun w3-toggle-link-toolbar ()
+;;   (interactive)
+;;   (require 'info)                   ; For some toolbar buttons
+;;   (let* ((w3-toolbar-orientation w3-link-toolbar-orientation)
+;;      (toolbar (w3-toolbar-from-orientation w3-toolbar-orientation)))
+;;     (if toolbar
+;;     (if (w3-toolbar-active)
+;;         (set-specifier toolbar (cons (current-buffer) nil))
+;;       (set-specifier toolbar w3-link-toolbar (current-buffer))))))
 
 (defun w3-toggle-toolbar ()
   (interactive)
-  (if (eq major-mode 'w3-mode)
-      (let ((toolbar (w3-toolbar-from-orientation w3-toolbar-orientation)))
-       (cond
-        ((w3-toolbar-active)
-         (set-specifier toolbar (cons (current-buffer) nil)))
-        (toolbar
-         (set-specifier toolbar (cons (current-buffer) w3-toolbar)))
-        (t
-         (setq w3-toolbar-orientation 'default
-               toolbar (w3-toolbar-from-orientation w3-toolbar-orientation))
-         (and toolbar
-              (set-specifier toolbar (cons (current-buffer) w3-toolbar))))))
-    (if (not (eq w3-toolbar-orientation 'none))
-       (setq w3-toolbar-orientation 'none)
-      (setq w3-toolbar-orientation 'default))))
+  (cond
+   ((featurep 'xemacs)
+    (if (eq major-mode 'w3-mode)
+        (let ((toolbar (w3-toolbar-from-orientation w3-toolbar-orientation)))
+          (cond
+           ((w3-toolbar-active)
+            (set-specifier toolbar (cons (current-buffer) nil)))
+           (toolbar
+            (set-specifier toolbar (cons (current-buffer) w3-toolbar)))
+           (t
+            (setq w3-toolbar-orientation 'default
+                  toolbar (w3-toolbar-from-orientation w3-toolbar-orientation))
+            (and toolbar
+                 (set-specifier toolbar (cons (current-buffer) w3-toolbar))))))
+      (setq w3-toolbar-orientation (if (not (eq w3-toolbar-orientation 'none))
+                                       'none
+                                     'default))))
+   (t (error "Unimplemented"))))
 
 (defun w3-show-info-node ()
   (interactive)
@@ -360,9 +364,11 @@ not `none'.")
                 ["PostScript" (w3-print-this-url nil "PostScript") t]
                 ["Formatted Text" (w3-print-this-url nil "Formatted Text") t]
                 ["HTML Source" (w3-print-this-url nil "HTML Source") t]
-                nil
+                "--"
                 ["Cancel" (beep) t])))
-    (popup-dialog-box descr)))
+    (if (fboundp 'popup-dialog-box)
+        (popup-dialog-box descr)
+      (popup-menu descr e))))
 
 (defvar w3-toolbar-map
   (if (and (featurep 'tool-bar)
@@ -395,16 +401,14 @@ not `none'.")
    ((featurep 'infodock)
     ;; Infodock handles toolbars differently
     nil)
-   ((featurep 'toolbar)
+   ((featurep 'xemacs)
     ;; XEmacs way of doing things
     (let ((toolbar (w3-toolbar-from-orientation w3-toolbar-orientation)))
       (if toolbar
          (set-specifier toolbar (cons (current-buffer) w3-toolbar))))
     (set-specifier toolbar-buttons-captioned-p
                   (cons (current-buffer) (eq w3-toolbar-type 'both))))
-   ((and (featurep 'tool-bar) 
-        (display-graphic-p)
-        (> (frame-parameter nil 'tool-bar-lines) 0))
+   (t
     ;; Emacs 21.x way of doing things
     (set (make-local-variable 'tool-bar-map) w3-toolbar-map))
    (t
diff --git a/w3-vars.el b/w3-vars.el
index 8d8d5c0..d516e27 100644
--- a/w3-vars.el
+++ b/w3-vars.el
@@ -1,34 +1,29 @@
 ;;; w3-vars.el,v --- All variable definitions for emacs-w3
-;; Author: $Author: fx $
-;; Created: $Date: 2001/10/01 11:42:46 $
-;; Version: $Revision: 1.8 $
-;; Keywords: comm, help, hypermedia
 
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; Copyright (c) 1993 - 1996 by William M. Perry <address@hidden>
-;;; Copyright (c) 1996, 97, 98, 99, 2001 Free Software Foundation, Inc.
-;;;
-;;; This file is part of GNU Emacs.
-;;;
-;;; GNU Emacs is free software; you can redistribute it and/or modify
-;;; it under the terms of the GNU General Public License as published by
-;;; the Free Software Foundation; either version 2, or (at your option)
-;;; any later version.
-;;;
-;;; GNU Emacs is distributed in the hope that it will be useful,
-;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;;; GNU General Public License for more details.
-;;;
-;;; You should have received a copy of the GNU General Public License
-;;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;;; Boston, MA 02111-1307, USA.
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Copyright (c) 1996-1999, 2001, 2013 Free Software Foundation, Inc.
 
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; Variable definitions for w3
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; This file is part of GNU Emacs.
+;;
+;; GNU Emacs is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 3, or (at your option)
+;; any later version.
+;;
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
+
+;;; Commentary:
+
+;; Variable definitions for W3.
+
+;;; Code:
 
 (require 'w3-cus)                      ; Grab everything that is customized
 (require 'wid-edit)                    ; For `widget-keymap'
@@ -68,12 +63,6 @@ that it allows Emacs's total memory usage to grow larger, 
which may result
 in later garbage collections taking more time.")
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; Figure out what flavor of emacs we are running
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-(defvar w3-running-xemacs (string-match "XEmacs" emacs-version)
-  "*Got XEmacs?.")
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; Store the database of HTML general entities.
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; Commentary on the basis of the current W3C entity list.  -- fx
@@ -409,10 +398,9 @@ returns.")
 ;;; Startup items
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 (defvar w3-form-labels nil "")
-(mapcar (function
-        (lambda (var)
-          (if (boundp var)
-              (make-variable-buffer-local var)))) w3-persistent-variables)
+(dolist (var w3-persistent-variables)
+  (if (boundp var)
+      (make-variable-buffer-local var)))
 
 (make-variable-buffer-local 'w3-last-fill-pos)
 (make-variable-buffer-local 'w3-frame-name)
diff --git a/w3-widget.el b/w3-widget.el
index 2938f2b..c8444a2 100644
--- a/w3-widget.el
+++ b/w3-widget.el
@@ -1,58 +1,56 @@
 ;;; w3-widget.el --- An image widget
+
+;; Copyright (c) 1996-1997, 2001, 2013 Free Software Foundation, Inc.
+
 ;; Author: Bill Perry <address@hidden>
 ;; Created: $Date: 2002/02/01 17:42:49 $
-;; Version: $Revision: 1.8 $
 ;; Keywords: faces, images
 
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; Copyright (c) 1993 - 1996 by William M. Perry <address@hidden>
-;;; Copyright (c) 1996, 1997, 2001 Free Software Foundation, Inc.
-;;;
-;;; This file is part of GNU Emacs.
-;;;
-;;; GNU Emacs is free software; you can redistribute it and/or modify
-;;; it under the terms of the GNU General Public License as published by
-;;; the Free Software Foundation; either version 2, or (at your option)
-;;; any later version.
-;;;
-;;; GNU Emacs is distributed in the hope that it will be useful,
-;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;;; GNU General Public License for more details.
-;;;
-;;; You should have received a copy of the GNU General Public License
-;;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;;; Boston, MA 02111-1307, USA.
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; This is a widget that will do the best it can with an image.
-;;;
-;;; It can handle all the common occurences of images on the world wide web
-;;; 1. A plain image - displays either a glyph of the image, or the
-;;;    alternative text
-;;; 2. A hyperlinked image - an image that is also a hypertext link to
-;;;    another page.  Displays either a glyph of the image, or the
-;;;    alternative text.  When activated with the mouse or the keyboard,
-;;;    the 'href' property of the widget is retrieved.
-;;; 3. Server side imagemaps - an image that has hotzones that lead to
-;;;    different areas.  Unfortunately, we cannot tell where the links go
-;;;    from the client - all processing is done by the server.  Displays
-;;;    either a glyph of the image, or the alternative text.  When activated
-;;;    with the mouse or the keyboard, the coordinates clicked on are
-;;;    sent to the remote server as HREF?x,y.  If the link is activated
-;;;    by the keyboard, then 0,0 are sent as the coordinates.
-;;; 4. Client side imagemaps - an image that has hotzones that lead to
-;;;    different areas.  All processing is done on the client side, so
-;;;    we can actually show a decent representation on a TTY.  Displays
-;;;    either a glyph of the image, or a drop-down-list of the destinations
-;;;    These are either URLs (http://foo/...) or alternative text.
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-;; I don't think there's currently any way to get the pixel position
-;; of a mouse event on an Emacs 21 image, so image maps aren't going
-;; to work properly.  -- fx
+;; This file is part of GNU Emacs.
+;;
+;; GNU Emacs is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 3, or (at your option)
+;; any later version.
+;;
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
+
+;;; Commentary:
+
+;; This is a widget that will do the best it can with an image.
+;;
+;; It can handle all the common occurences of images on the world wide web
+;; 1. A plain image - displays either a glyph of the image, or the
+;;    alternative text
+;; 2. A hyperlinked image - an image that is also a hypertext link to
+;;    another page.  Displays either a glyph of the image, or the
+;;    alternative text.  When activated with the mouse or the keyboard,
+;;    the 'href' property of the widget is retrieved.
+;; 3. Server side imagemaps - an image that has hotzones that lead to
+;;    different areas.  Unfortunately, we cannot tell where the links go
+;;    from the client - all processing is done by the server.  Displays
+;;    either a glyph of the image, or the alternative text.  When activated
+;;    with the mouse or the keyboard, the coordinates clicked on are
+;;    sent to the remote server as HREF?x,y.  If the link is activated
+;;    by the keyboard, then 0,0 are sent as the coordinates.
+;; 4. Client side imagemaps - an image that has hotzones that lead to
+;;    different areas.  All processing is done on the client side, so
+;;    we can actually show a decent representation on a TTY.  Displays
+;;    either a glyph of the image, or a drop-down-list of the destinations
+;;    These are either URLs (http://foo/...) or alternative text.
+
+;; FIXME: Current Emacs do provide pixel position of a mouse event, so
+;; we should be able to make image-maps work.
+
+;;; Code:
 
 (require 'widget)
 (require 'url-util)
@@ -63,21 +61,9 @@
 (defvar widget-image-keymap (make-sparse-keymap)
   "Keymap used over glyphs in an image widget")
 
-(defconst widget-mouse-button1 nil)
-(defconst widget-mouse-button2 nil)
-(defconst widget-mouse-button3 nil)
-
-(if (featurep 'xemacs)
-    (if (featurep 'mouse)
-       (setq widget-mouse-button1 'button1
-             widget-mouse-button2 'button2
-             widget-mouse-button3 'button3)
-      (setq widget-mouse-button1 'return
-           widget-mouse-button2 'return
-           widget-mouse-button3 'return))
-  (setq widget-mouse-button1 'mouse-1
-       widget-mouse-button2 'mouse-2
-       widget-mouse-button3 'mouse-3))
+(defconst widget-mouse-button1 'mouse1)
+(defconst widget-mouse-button2 'mouse2)
+(defconst widget-mouse-button3 'mouse3)
 
 (defvar widget-image-inaudible-p nil
   "*Whether to make images inaudible or not.")
@@ -90,8 +76,8 @@
 (define-widget 'image 'default
   "A fairly complex image widget."
   :convert-widget 'widget-image-convert
-  :value-to-internal (lambda (widget value) value)
-  :value-to-external (lambda (widget value) value)
+  :value-to-internal (lambda (_widget value) value)
+  :value-to-external (lambda (_widget value) value)
   :value-set 'widget-image-value-set
   :create 'widget-image-create
   :delete 'widget-image-delete
@@ -152,7 +138,7 @@
          (setq usemap (substring usemap 1 nil)))
       (cdr-safe (assoc usemap w3-imagemaps)))))
 
-(defun widget-image-callback (widget widget-ignore &optional event)
+(defun widget-image-callback (widget _widget-ignore &optional _event)
   (if (widget-get widget :href)
       (w3-fetch (widget-get widget :href) (widget-get widget :target))))
 
@@ -176,7 +162,6 @@
        (where (or (widget-get widget 'where) (point)))
        (glyph (widget-get widget 'glyph))
        (alt (widget-get widget 'alt))
-       (align (widget-get widget 'align))
        (real-widget nil)
        (invalid-glyph nil))
     (if target (setq target (intern (downcase target))))
diff --git a/w3-xemac.el b/w3-xemac.el
index f49ac24..37f9ba2 100644
--- a/w3-xemac.el
+++ b/w3-xemac.el
@@ -1,30 +1,29 @@
 ;;; w3-xemac.el --- XEmacs specific functions for emacs-w3
+
+;; Copyright (c) 1996 - 1999, 2013 Free Software Foundation, Inc.
+
 ;; Author: $Author: legoscia $
 ;; Created: $Date: 2006/10/17 20:24:48 $
-;; Version: $Revision: 1.3 $
 ;; Keywords: faces, help, mouse, hypermedia
 
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; Copyright (c) 1993 - 1996 by William M. Perry <address@hidden>
-;;; Copyright (c) 1996 - 1999 Free Software Foundation, Inc.
-;;;
-;;; This file is part of GNU Emacs.
-;;;
-;;; GNU Emacs is free software; you can redistribute it and/or modify
-;;; it under the terms of the GNU General Public License as published by
-;;; the Free Software Foundation; either version 2, or (at your option)
-;;; any later version.
-;;;
-;;; GNU Emacs is distributed in the hope that it will be useful,
-;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;;; GNU General Public License for more details.
-;;;
-;;; You should have received a copy of the GNU General Public License
-;;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;;; Boston, MA 02111-1307, USA.
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; This file is part of GNU Emacs.
+;;
+;; GNU Emacs is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 3, or (at your option)
+;; any later version.
+;;
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
+
+;;; Code:
 
 (require 'w3-imap)
 (require 'images)
diff --git a/w3.el b/w3.el
index b33623d..d521dbb 100644
--- a/w3.el
+++ b/w3.el
@@ -1,47 +1,38 @@
-;;; w3.el --- Main functions for emacs-w3 on all platforms/versions
-;; Author: $Author: legoscia $
-;; Created: $Date: 2007/11/15 12:59:53 $
-;; Version: $Revision: 1.40 $
-;; Keywords: faces, help, comm, news, mail, processes, mouse, hypermedia
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; Copyright (c) 1996, 97, 98, 99, 2001, 2007, 2008 Free Software Foundation, 
Inc.
-;;; Copyright (c) 1993 - 1996 by William M. Perry <address@hidden>
-;;;
-;;; This file is part of GNU Emacs.
-;;;
-;;; GNU Emacs is free software; you can redistribute it and/or modify
-;;; it under the terms of the GNU General Public License as published by
-;;; the Free Software Foundation; either version 2, or (at your option)
-;;; any later version.
-;;;
-;;; GNU Emacs is distributed in the hope that it will be useful,
-;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;;; GNU General Public License for more details.
-;;;
-;;; You should have received a copy of the GNU General Public License
-;;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;;; Boston, MA 02111-1307, USA.
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; w3.el --- Fully customizable, largely undocumented web browser for Emacs
 
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; This is a major mode for browsing documents written in Hypertext Markup ;;;
-;;; Language (HTML).  These documents are typicallly part of the World Wide ;;;
-;;; Web (WWW), a project to create a global information net in hypertext    ;;;
-;;; format.                                                                ;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Copyright (c) 1996-2001, 2007-2008, 2013 Free Software Foundation, Inc.
 
-(require 'w3-compat)
-(require 'w3-cfg)
+;; Author: William Perry and many more
+;; Version: 4.0.48
+;; Keywords: faces, help, comm, news, mail, processes, mouse, hypermedia
 
-(or (featurep 'efs)
-    (featurep 'efs-auto)
-    (condition-case ()
-       (require 'ange-ftp)
-      (error nil)))
+;; This file is part of GNU Emacs.
+;;
+;; GNU Emacs is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 3, or (at your option)
+;; any later version.
+;;
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
+
+;;; Commentary:
+
+;; This is a major mode for browsing documents written in Hypertext Markup
+;; Language (HTML).  These documents are typicallly part of the World Wide
+;; Web (WWW), a project to create a global information net in hypertext
+;; format.
+
+;;; Code:
 
+(require 'w3-compat)
 (eval-when-compile (require 'cl))
 (require 'css)
 (require 'url-vars)
@@ -69,8 +60,7 @@ See the variable `w3-notify' for the different notification 
behaviors."
     ;; we must not leave a different buffer current.
     ;; We can't rely on the editor command loop to reselect
     ;; the selected window's buffer.
-    (save-excursion
-      (set-buffer buff)
+    (with-current-buffer buff
       (make-frame)))
    ((eq w3-notify 'bully)
     (pop-to-buffer buff)
@@ -215,9 +205,8 @@ variable `http-header'."
 (defun w3-nasty-disgusting-http-equiv-handling (buffer url)
   "Propagate information from <meta http-equiv...> elements to MIME headers.
 Operate on BUFFER."
-  (let (content-type end-of-headers extra-headers)
-    (save-excursion
-      (set-buffer buffer)
+  (let (content-type end-of-headers)
+    (with-current-buffer buffer
       (goto-char (point-min))
       (mail-narrow-to-head)
       (setq content-type (mail-fetch-field "content-type"))
@@ -295,17 +284,16 @@ MUST-BE-VIEWING is the current URL when the timer 
expires."
                  (setq uri (match-string 1 uri)))
              (setq uri (url-expand-file-name uri (url-view-url t)))))
        (w3-setup-reload-timer uri (url-view-url t)
-                              (string-to-int (or reload "5"))))))
+                              (string-to-number (or reload "5"))))))
 
 (defun w3-fetch-redirect-callback (&rest args)
-  (let (redirect-url errorp)
+  (let (redirect-url)
     ;; Handle both styles of `url-retrieve' callbacks...
     (cond
      ((listp (car args))
       ;; Emacs 22 style.  First argument is a list.
       (let ((status (car args)))
        (when (eq (car status) :error)
-         (setq errorp t)
          (setq status (cddr args)))
        (when (eq (car status) :redirect)
          (setq redirect-url (second (car args))))
@@ -344,8 +332,7 @@ MUST-BE-VIEWING is the current URL when the timer expires."
     (let ((handle (mm-dissect-buffer t))
          (w3-explicit-coding-system
           (or w3-explicit-coding-system
-              (w3-recall-explicit-coding-system url)))
-         (buff nil))
+              (w3-recall-explicit-coding-system url))))
       (message "Downloading of `%s' complete." url)
       (url-mark-buffer-as-dead (current-buffer))
       (unless headers
@@ -441,9 +428,7 @@ With prefix argument, use the URL of the hyperlink under 
point instead."
    ((and (interactive-p) current-prefix-arg)
     (w3-download-url url))
    (t
-    (let ((x (url-view-url t))
-         (lastbuf (current-buffer))
-         (w3-current-buffer (current-buffer))
+    (let ((w3-current-buffer (current-buffer))
          (buf (w3-buffer-visiting url)))
       (if (or (not buf)
              (cond
@@ -553,10 +538,8 @@ the cdr is the 'next' node."
            (kill-buffer (get-buffer "Document Information")))
        (w3-fetch "about:document"))
     (setq buff (or buff (current-buffer)))
-    (save-excursion
-      (set-buffer buff)
+    (with-current-buffer buff
       (let* ((url (url-view-url t))
-            (cur-links w3-current-links)
             (title (buffer-name))
             (case-fold-search t)
             (attributes (url-file-attributes url))
@@ -568,13 +551,13 @@ the cdr is the 'next' node."
             (info w3-current-metainfo)
             (links w3-current-links))
        (set-buffer (get-buffer-create url-working-buffer))
-       (setq url-current-can-be-cached nil)
+       ;; (setq url-current-can-be-cached nil)
        (erase-buffer)
        (if (consp lastmod)
            (if (equal '(0 . 0) lastmod)
                (setq lastmod nil)
              (setq lastmod (current-time-string lastmod))))
-       (setq url-current-mime-type "text/html")
+       ;; (setq url-current-mime-type "text/html")
        (insert "\
 Content-Type: text/html\n
 <html>
@@ -588,7 +571,7 @@ Content-Type: text/html\n
    <tr><td>Location:</td><td>" url "</td></tr>")
        (if size (insert "\
    <tr><td>Size:</td><td>" (url-pretty-length (if (stringp size)
-                                                 (string-to-int size)
+                                                 (string-to-number size)
                                                size)) "</td></tr>"))
        (insert "\
    <tr><td>Last Modified:</td><td>" (or lastmod "None Given") "</td></tr>\n")
@@ -692,8 +675,7 @@ With prefix arg, insert the url under point."
                        (read-string "Link text: " (buffer-name))))))
     (setq buff (read-buffer "Insert into buffer: " nil t))
     (if buff
-       (save-excursion
-         (set-buffer buff)
+       (with-current-buffer buff
          (insert str))
       (message "Cancelled."))))
 
@@ -882,7 +864,9 @@ If there is no link under point, this will try using
               "Content-type: " content-type))
     (re-search-forward mail-header-separator nil)
     (forward-char 1)
-    (if (and (boundp 'mime/editor-mode-flag) mime/editor-mode-flag)
+    (if (and (boundp 'mime/editor-mode-flag)
+             (boundp 'mime-tag-format)
+             mime/editor-mode-flag)
         (insert (format mime-tag-format content-type) "\n"))
     (save-excursion
       (insert str))
@@ -904,8 +888,7 @@ If there is no link under point, this will try using
       (let ((x (buffer-list))
            (found nil))
        (while (and x (not found))
-         (save-excursion
-           (set-buffer (car x))
+         (with-current-buffer (car x)
            (setq found (string= (url-view-url t) url))
            (if (not found) (setq x (cdr x)))))
        (cond
@@ -970,13 +953,10 @@ Do this if it is a file: or ftp: reference"
 With prefix ARG, insert URL under point"
   (interactive "P")
   (let ((thebuf (get-buffer (read-buffer "Insert into buffer: ")))
-       (oldbuf (current-buffer))
        (url (if pref-arg (w3-view-this-url t) (url-view-url t))))
     (if (and url (not (equal "Not on a link!" url)))
-       (progn
-         (set-buffer thebuf)
-         (insert url)
-         (set-buffer oldbuf))
+       (with-current-buffer thebuf
+         (insert url))
       (message "Not on a link!"))))
 
 (defun w3-in-assoc (elt list)
@@ -1046,24 +1026,25 @@ even though the MIME type is nil or listed in 
`w3-mime-list-for-code-conversion'
   (interactive)
   (w3-fetch "www://auto/history"))
 
+(defvar ps-spool-buffer-name)
+
 (defun w3-save-as (&optional type)
   "Save a document to the local disk."
   (interactive)
-  (save-excursion
-    (let* ((completion-ignore-case t)
-          (format (or type (completing-read
-                            "Format: "
-                            '(("HTML Source")
-                              ("Formatted Text")
-                              ("PostScript")
-                              ("Binary"))
-                            nil t)))
-          (fname (expand-file-name
-                  (read-file-name "File name: " default-directory)))
-          (source w3-current-source)
-          (text (buffer-string))
-          (url (url-view-url t)))
-      (set-buffer (generate-new-buffer " *w3-save-as*"))
+  (let* ((completion-ignore-case t)
+         (format (or type (completing-read
+                           "Format: "
+                           '(("HTML Source")
+                             ("Formatted Text")
+                             ("PostScript")
+                             ("Binary"))
+                           nil t)))
+         (fname (expand-file-name
+                 (read-file-name "File name: " default-directory)))
+         (source w3-current-source)
+         (text (buffer-string))
+         (url (url-view-url t)))
+    (with-current-buffer (generate-new-buffer " *w3-save-as*")
       (cond
        ((equal "Binary" format)
        (insert source))
@@ -1105,8 +1086,7 @@ even though the MIME type is nil or listed in 
`w3-mime-list-for-code-conversion'
 (defun w3-log-bad-html (type desc)
   "Log bad HTML to the buffer specified by w3-debug-buffer."
   (if w3-debug-html
-      (save-excursion
-       (set-buffer (get-buffer-create w3-debug-buffer))
+      (with-current-buffer (get-buffer-create w3-debug-buffer)
        (goto-char (point-max))
        (insert (make-string (1- (window-width)) w3-horizontal-rule-char) "\n")
        (cond
@@ -1174,11 +1154,9 @@ even though the MIME type is nil or listed in 
`w3-mime-list-for-code-conversion'
                     url-version
                     url)))
         (if (and url (string= url "file:nil")) (setq url nil))
-        (mapcar
-         (function
-          (lambda (x)
-            (if (not (and (boundp x) (symbol-value x)))
-                (setq vars (delq x vars))))) vars)
+        (dolist (x vars)
+           (if (not (and (boundp x) (symbol-value x)))
+               (setq vars (delq x vars))))
         (reporter-submit-bug-report w3-bug-address
                                     (concat "WWW v" w3-version-number " of "
                                             w3-version-date)
@@ -1443,8 +1421,7 @@ as high as possible in w3-explicit-conversion-tree"
     (let ((make-backup-files nil)
          (version-control nil)
          (require-final-newline t))
-      (save-excursion
-       (set-buffer (get-buffer-create " *w3-tmp*"))
+      (with-current-buffer (get-buffer-create " *w3-tmp*")
        (erase-buffer)
        (insert "(setq w3-explicit-conversion-tree\n      '"
                (prin1-to-string w3-explicit-conversion-tree)
@@ -1470,8 +1447,7 @@ as high as possible in w3-explicit-conversion-tree"
   (if mega
       (mapcar
        (lambda (x)
-        (save-excursion
-          (set-buffer (get-buffer x))
+        (with-current-buffer (get-buffer x)
           (if (eq major-mode 'w3-mode)
               (w3-quit nil))))
        (buffer-list))
@@ -1640,34 +1616,30 @@ No arg means whole window full.  Arg is number of lines 
to scroll."
       (setq x (cdr x))))
   (message "Cleaning up w3 temporary files... done."))
 
-(eval-and-compile
+(defalias 'w3-warn
   (cond
    ((fboundp 'display-warning)
-    (fset 'w3-warn 'display-warning))
+    #'display-warning)
    ((fboundp 'warn)
-    (defun w3-warn (class message &optional level)
+    (lambda (class message &optional level)
       (if (and (eq class 'html)
               (not w3-debug-html))
          nil
        (warn "(%s/%s) %s" class (or level 'warning) message))))
    (t
-    (defun w3-warn (class message &optional level)
+    (lambda (class message &optional level)
       (if (and (eq class 'html)
               (not w3-debug-html))
          nil
-       (save-excursion
-         (set-buffer (get-buffer-create "*W3-WARNINGS*"))
+       (with-current-buffer (get-buffer-create "*W3-WARNINGS*")
          (goto-char (point-max))
          (save-excursion
            (insert (format "(%s/%s) %s\n" class (or level 'warning) message)))
          (display-buffer (current-buffer))))))))
 
-(defun w3-map-links (function &optional buffer from to maparg)
-  "Map FUNCTION over the hypertext links which overlap region in BUFFER,
-starting at FROM and ending at TO.  FUNCTION is called with the arguments
-WIDGET and MAPARG.
-The arguments FROM, TO, MAPARG, and BUFFER default to the beginning of
-BUFFER, the end of BUFFER, nil, and (current-buffer), respectively."
+(defun w3-map-links (function &optional maparg)
+  "Map FUNCTION over the hypertext links in current buffer,
+FUNCTION is called with the arguments WIDGET and MAPARG."
   (let ((parent)
        (highly-unlikely-name-for-a-variable-holding-a-function function))
     (widget-map-buttons
@@ -1695,6 +1667,8 @@ BUFFER, the end of BUFFER, nil, and (current-buffer), 
respectively."
 (defvar w3-loaded-stylesheets nil
   "A list of all the stylesheets Emacs-W3 loaded at startup.")
 
+(defvar w3--package-directory (file-name-directory load-file-name))
+
 (defun w3-find-default-stylesheets ()
   (setq w3-loaded-stylesheets nil)
   (let* ((lightp (css-color-light-p 'default))
@@ -1707,6 +1681,7 @@ BUFFER, the end of BUFFER, nil, and (current-buffer), 
respectively."
                                         
"/this/is/a/highly/unlikely/directory/name"
                                       w3-configuration-directory))
         (directories (list
+                       (expand-file-name "etc" w3--package-directory)
                       (if (fboundp 'locate-data-directory)
                           (locate-data-directory "w3"))
                       data-directory
@@ -1714,7 +1689,6 @@ BUFFER, the end of BUFFER, nil, and (current-buffer), 
respectively."
                       (expand-file-name "../../w3" data-directory)
                       w3-lisp
                       w3-root
-                      (w3-configuration-data 'datadir)
                       (expand-file-name "w3" w3-root)
                       (expand-file-name "etc" w3-root)
                       (expand-file-name "etc/w3" w3-root)
@@ -1863,9 +1837,8 @@ Emacs."
   (message "Reimplement w3-mark-link-as-followed"))
 
 (defun w3-only-links ()
-  (let* (result temp)
-    (w3-map-links (lambda (x y)
-                   (setq result (cons x result))))
+  (let (result)
+    (w3-map-links (lambda (x _y) (push x result)))
     result))
 
 (defun w3-download-redirect-callback (&rest args)
@@ -2026,7 +1999,7 @@ With optional ARG, move across that many fields."
                          (buffer-substring-no-properties
                           (widget-get link-at-point :from)
                           (widget-get link-at-point :to)))))
-    (w3-map-links (lambda (widget arg)
+    (w3-map-links (lambda (widget _arg)
                    (if (and (widget-get widget :from)
                             (widget-get widget :to))
                        (setq links-alist (cons
@@ -2077,9 +2050,8 @@ With optional ARG, move across that many fields."
        (url (url-view-url t)))
     (if (not todo)
        (error "No HTML errors on this page!  Amazing, isn't it?"))
-    (save-excursion
-      (set-buffer
-       (get-buffer-create (concat "HTML Errors for: " (or url "???"))))
+    (with-current-buffer
+        (get-buffer-create (concat "HTML Errors for: " (or url "???")))
       (setq buffer (current-buffer))
       (erase-buffer)
       (while todo
@@ -2144,7 +2116,7 @@ Current keymap is:
 (require 'url)
 (require 'w3-parse)
 (require 'w3-display)
-(require 'w3-auto)
+;; (require 'w3-auto)
 (require 'w3-emulate)
 (require 'w3-menu)
 (require 'w3-mouse)

commit 11ce5149a82281435b2f4ccd578b82760cbf1fc8
Author: Stefan Monnier <address@hidden>
Date:   Thu Aug 22 21:45:04 2013 -0400

    Move Elisp files out of "lisp" for ELPA format

diff --git a/.cvsignore b/.gitignore
similarity index 100%
rename from .cvsignore
rename to .gitignore
diff --git a/lisp/css.el b/css.el
similarity index 100%
rename from lisp/css.el
rename to css.el
diff --git a/lisp/devices.el b/devices.el
similarity index 100%
rename from lisp/devices.el
rename to devices.el
diff --git a/lisp/docomp.el b/docomp.el
similarity index 100%
rename from lisp/docomp.el
rename to docomp.el
diff --git a/lisp/font.el b/font.el
similarity index 100%
rename from lisp/font.el
rename to font.el
diff --git a/lisp/images.el b/images.el
similarity index 100%
rename from lisp/images.el
rename to images.el
diff --git a/lisp/.cvsignore b/lisp/.cvsignore
deleted file mode 100644
index e72d50b..0000000
--- a/lisp/.cvsignore
+++ /dev/null
@@ -1,5 +0,0 @@
-Makefile
-auto-autoloads.el
-custom-load.el
-w3-auto.el
-w3-cfg.el
diff --git a/lisp/Makefile.in b/lisp/Makefile.in
deleted file mode 100644
index 3cd9862..0000000
--- a/lisp/Makefile.in
+++ /dev/null
@@ -1,141 +0,0 @@
-# where the w3 lisp files should go
-srcdir  = @srcdir@
-prefix  = @prefix@
-datadir = @datadir@
-lispdir = @lispdir@
-top_srcdir = @top_srcdir@
-confdir = $(datadir)/emacs/w3
-
-VPATH=$(srcdir)
-
-############## no user servicable parts beyond this point ###################
-# Have to preload a few things to get a nice clean compile
-
-EMACS     = @EMACS@
-GNUSDIR   = @GNUS@
-URLDIR    = @URL@
-INSTALL   = @INSTALL@
-RM        = rm -f
-
-DEPS = -l $(srcdir)/docomp.el -l $(URLDIR)/url-vars.el -l $(srcdir)/w3-vars.el
-
-# compile with noninteractive and relatively clean environment
-BATCHFLAGS = -batch -q -no-site-file
-
-W3_SOURCES =                                                           \
-       css.el                                                          \
-       url-hotlist.el                                                  \
-       w3-cfg.el                                                       \
-       w3-compat.el                                                    \
-       w3-cus.el                                                       \
-       w3-dired.el                                                     \
-       w3-display.el                                                   \
-       w3-emacs.el                                                     \
-       w3-emulate.el                                                   \
-       w3-forms.el                                                     \
-       w3-fast-parse.el                                                \
-       w3-hot.el                                                       \
-       w3-hotindex.el                                                  \
-       w3-imap.el                                                      \
-       w3-java.el                                                      \
-       w3-keymap.el                                                    \
-       w3-menu.el                                                      \
-       w3-mouse.el                                                     \
-       w3-parse.el                                                     \
-       w3-print.el                                                     \
-       w3-props.el                                                     \
-       w3-speak-table.el                                               \
-       w3-speak.el                                                     \
-       w3-style.el                                                     \
-       w3-toolbar.el                                                   \
-       w3-vars.el                                                      \
-       w3-widget.el                                                    \
-       w3-xemac.el                                                     \
-       w3.el
-
-UTIL_SOURCES =                                                                 
\
-       devices.el font.el images.el ssl.el
-
-AUTO_SOURCES = auto-autoloads.el custom-load.el w3-auto.el w3-cfg.el
-
-W3_OBJECTS = $(W3_SOURCES:.el=.elc)
-UTIL_OBJECTS = $(UTIL_SOURCES:.el=.elc)
-AUTO_OBJECTS = $(AUTO_SOURCES:.el=.elc)
-
-# Some makes appear to choke if I try to do a substitution on a really
-# large macro like SOURCES when it included all of these, so lets combine
-# everything now that it has been appropriately munged in smaller chunks.
-ALLSOURCES = $(W3_SOURCES) $(UTIL_SOURCES) $(AUTO_SOURCES)
-ALLOBJECTS = $(W3_OBJECTS) $(UTIL_OBJECTS) $(AUTO_OBJECTS)
-
-# Warning!  Currently, the following file can _NOT_ be bytecompiled.
-EXTRAS = docomp.el
-
-.SUFFIXES: .elc .el
-
-.el,v.el:
-       co -q $<
-
-.el.elc:
-       GNUSDIR=$(GNUSDIR) URLDIR=$(URLDIR) W3SRCDIR=$(srcdir) $(EMACS) 
$(BATCHFLAGS) $(DEPS) -f batch-byte-compile $<
-
-all:   $(AUTO_SOURCES) w3
-
-w3-auto.el: auto-autoloads.el
-       GNUSDIR=$(GNUSDIR) URLDIR=$(URLDIR) W3SRCDIR=$(srcdir) $(EMACS) 
$(BATCHFLAGS) -l $(srcdir)/docomp.el -f emacs-batch-build-autoloads $(srcdir) 
auto-autoloads.el
-
-auto-autoloads.el: $(SOURCES)
-       GNUSDIR=$(GNUSDIR) URLDIR=$(URLDIR) W3SRCDIR=$(srcdir) $(EMACS) 
$(BATCHFLAGS) -l $(srcdir)/docomp.el -f emacs-batch-build-autoloads $(srcdir) 
auto-autoloads.el
-
-custom-load.el: $(SOURCES)
-       GNUSDIR=$(GNUSDIR) URLDIR=$(URLDIR) W3SRCDIR=$(srcdir) 
@REBUILD_CUSTOMLOADS@
-       if [ -f cus-load.el ]; then mv cus-load.el custom-load.el; fi
-
-w3-cfg.el: $(srcdir)/w3-cfg.el.in ../config.status
-       ( cd ../ ; CONFIG_FILES=lisp/w3-cfg.el CONFIG_HEADERS= ./config.status)
-
-w3:    $(ALLSOURCES) $(ALLOBJECTS)
-       @echo Build of w3 complete...
-
-xemacs-w3: $(ALLSOURCES) $(ALLOBJECTS)
-       @echo Build of w3 complete...
-
-fast:  $(ALLSOURCES) $(EXTRAS)
-       GNUSDIR=$(GNUSDIR) URLDIR=$(URLDIR) W3SRCDIR=$(srcdir) $(EMACS) 
$(BATCHFLAGS) $(DEPS) -f batch-byte-compile $(ALLSOURCES)
-       @echo Build of w3 complete...
-
-autoloads:
-       $(EMACS) $(BATCHFLAGS) -eval '(setq autoload-package-name "w3")' -l 
autoload -f batch-update-directory .
-
-install: all
-       @echo Installing in $(lispdir)
-       ( if [ ! -d $(lispdir) ]; then mkdir -p $(lispdir); fi )
-       for x in $(ALLSOURCES) $(EXTRAS) $(ALLOBJECTS); do              \
-               if [ -f $$x ]; then                                     \
-                       $(INSTALL) -m 644 $$x $(lispdir);               \
-               else                                                    \
-                       $(INSTALL) -m 644 $(srcdir)/$$x $(lispdir);     \
-               fi                                                      \
-       done;
-
-distclean: clean
-       $(RM) config.* Makefile w3-cfg.el w3-auto.el $(AUTO_SOURCES)
-
-clean:
-       $(RM) *.elc *~
-
-# Automatic makefile rebuilding
-Makefile: $(srcdir)/Makefile.in ../config.status
-       ( cd .. ; CONFIG_FILES=lisp/Makefile ./config.status )
-
-$(top_srcdir)/configure: $(top_srcdir)/configure.in $(top_srcdir)/aclocal.m4
-       cd $(top_srcdir) && autoreconf
-
-../config.status: $(top_srcdir)/configure
-       cd .. && ./config.status --recheck
-
-# Distribution building
-version: $(ALLSOURCES) $(EXTRAS) descrip.mms
-       test -d $(DIRNAME)/lisp || mkdir -p $(DIRNAME)/lisp
-       for x in descrip.mms $(ALLSOURCES) $(EXTRAS) w3-cfg.el.in w3-cfg.nt 
Makefile.in; do $(INSTALL) -m 644 $$x $(DIRNAME)/lisp; done
-       cd $(DIRNAME)/lisp && $(RM) $(AUTO_SOURCES)
diff --git a/lisp/descrip.mms b/lisp/descrip.mms
deleted file mode 100644
index f5b8916..0000000
--- a/lisp/descrip.mms
+++ /dev/null
@@ -1,80 +0,0 @@
-# where the w3 lisp files should go
-prefix  = gnu_root
-datadir = $(prefix):[lib]
-lispdir = $(prefix):[lib.emacs.site-lisp]
-confdir = $(prefix):[lib.emacs.w3]
-
-EMACS = emacs
-ECHO  = write sys$output
-MKDIR = create/dir
-
-############## no user servicable parts beyond this point ###################
-# Have to preload a few things to get a nice clean compile
-
-EMACS     = emacs
-WIDGETDIR = 
-
-DEPS = -l sys$disk:[]vmsloadup.el
-
-# compile with noninteractive and relatively clean environment
-BATCHFLAGS = -batch -q -no-site-file
-
-URLSOURCES = \
-       url-nfs.el url-file.el url-cookie.el url-parse.el url-irc.el    \
-       url-gopher.el url-http.el url-mail.el url-misc.el url-news.el   \
-       url-vars.el url-auth.el mm.el md5.el url-gw.el ssl.el base64.el \
-       url.el socks.el url-cache.el url-ns.el
-
-URLOBJECTS    = $(URLSOURCES:.el=.elc)
-
-SOURCES = \
-       mule-sysdp.el w3-widget.el devices.el w3-imap.el                \
-       css.el dsssl.el dsssl-flow.el font.el images.el w3-vars.el      \
-       w3-cus.el w3-style.el w3-forms.el w3-emulate.el \
-       w3-props.el w3-auto.el w3-menu.el w3-mouse.el w3-toolbar.el     \
-       w3-speak.el w3-latex.el w3-parse.el w3-display.el               \
-       w3-print.el w3-about.el w3-hot.el w3-e19.el w3-xemac.el w3.el   \
-       w3-script.el w3-jscript.el w3-elisp.el w3-e20.el                \
-       auto-autoloads.el custom-load.el w3-speak-table.el
-
-OBJECTS = $(SOURCES:.el=.elc)
-
-AUTOSOURCES = auto-autoloads.el custom-load.el w3-auto.el
-AUTOOBJECTS = $(AUTOSOURCES:.el=.elc)
-
-ALLSOURCES = $(SOURCES) $(URLSOURCES) $(AUTOSOURCES)
-ALLOBJECTS = $(OBJECTS) $(URLOBJECTS) $(AUTOOBJECTS)
-
-# Warning!  Currently, the following file can _NOT_ be bytecompiled.
-EXTRAS = w3-sysdp.el docomp.el
-
-.SUFFIXES: .elc .el
-
-.el.elc:
-       $(EMACS) $(BATCHFLAGS) $(DEPS) -f batch-byte-compile $(MMS$SOURCE)
-
-all:   w3
-
-w3:    $(SOURCES) $(EXTRAS) $(OBJECTS)
-       @echo Build of w3 complete...
-
-fast:  $(SOURCES) $(EXTRAS)
-       $(EMACS) $(BATCHFLAGS) $(DEPS) -f batch-byte-compile $(SOURCES)
-
-install: all
-       @$(ECHO) Installing in $(lispdir)
-       if f$parse("$(lispdir)") .eqs. "" then $(MKDIR) $(lispdir)
-       copy/log $(SOURCES),$(OBJECTS),$(EXTRAS) $(lispdir)
-       - purge/log $(lispdir)
-
-distclean: clean
-       $(RM) config.* Makefile
-
-clean:
-       $(RM) $(OBJECTS)
-
-w3-vars.elc: w3-cus.elc w3-vars.el
-w3-display.elc: w3-display.el css.elc font.elc w3-imap.elc
-css.elc: css.el font.elc
-w3.elc: css.elc w3-vars.elc w3.el
-dsssl.elc: dsssl.el dsssl-flow.elc
diff --git a/lisp/ssl.el b/ssl.el
similarity index 100%
rename from lisp/ssl.el
rename to ssl.el
diff --git a/lisp/url-hotlist.el b/url-hotlist.el
similarity index 100%
rename from lisp/url-hotlist.el
rename to url-hotlist.el
diff --git a/lisp/vmsloadup.el b/vmsloadup.el
similarity index 100%
rename from lisp/vmsloadup.el
rename to vmsloadup.el
diff --git a/lisp/w3-cfg.el.in b/w3-cfg.el.in
similarity index 100%
rename from lisp/w3-cfg.el.in
rename to w3-cfg.el.in
diff --git a/lisp/w3-cfg.nt b/w3-cfg.nt
similarity index 100%
rename from lisp/w3-cfg.nt
rename to w3-cfg.nt
diff --git a/lisp/w3-compat.el b/w3-compat.el
similarity index 100%
rename from lisp/w3-compat.el
rename to w3-compat.el
diff --git a/lisp/w3-cus.el b/w3-cus.el
similarity index 100%
rename from lisp/w3-cus.el
rename to w3-cus.el
diff --git a/lisp/w3-dired.el b/w3-dired.el
similarity index 100%
rename from lisp/w3-dired.el
rename to w3-dired.el
diff --git a/lisp/w3-display.el b/w3-display.el
similarity index 100%
rename from lisp/w3-display.el
rename to w3-display.el
diff --git a/lisp/w3-emacs.el b/w3-emacs.el
similarity index 100%
rename from lisp/w3-emacs.el
rename to w3-emacs.el
diff --git a/lisp/w3-emulate.el b/w3-emulate.el
similarity index 100%
rename from lisp/w3-emulate.el
rename to w3-emulate.el
diff --git a/lisp/w3-fast-parse.el b/w3-fast-parse.el
similarity index 100%
rename from lisp/w3-fast-parse.el
rename to w3-fast-parse.el
diff --git a/lisp/w3-forms.el b/w3-forms.el
similarity index 100%
rename from lisp/w3-forms.el
rename to w3-forms.el
diff --git a/lisp/w3-hot.el b/w3-hot.el
similarity index 100%
rename from lisp/w3-hot.el
rename to w3-hot.el
diff --git a/lisp/w3-hotindex.el b/w3-hotindex.el
similarity index 100%
rename from lisp/w3-hotindex.el
rename to w3-hotindex.el
diff --git a/lisp/w3-imap.el b/w3-imap.el
similarity index 100%
rename from lisp/w3-imap.el
rename to w3-imap.el
diff --git a/lisp/w3-java.el b/w3-java.el
similarity index 100%
rename from lisp/w3-java.el
rename to w3-java.el
diff --git a/lisp/w3-keymap.el b/w3-keymap.el
similarity index 100%
rename from lisp/w3-keymap.el
rename to w3-keymap.el
diff --git a/lisp/w3-latex.el b/w3-latex.el
similarity index 100%
rename from lisp/w3-latex.el
rename to w3-latex.el
diff --git a/lisp/w3-menu.el b/w3-menu.el
similarity index 100%
rename from lisp/w3-menu.el
rename to w3-menu.el
diff --git a/lisp/w3-mouse.el b/w3-mouse.el
similarity index 100%
rename from lisp/w3-mouse.el
rename to w3-mouse.el
diff --git a/lisp/w3-parse.el b/w3-parse.el
similarity index 100%
rename from lisp/w3-parse.el
rename to w3-parse.el
diff --git a/lisp/w3-print.el b/w3-print.el
similarity index 100%
rename from lisp/w3-print.el
rename to w3-print.el
diff --git a/lisp/w3-props.el b/w3-props.el
similarity index 100%
rename from lisp/w3-props.el
rename to w3-props.el
diff --git a/lisp/w3-speak-table.el b/w3-speak-table.el
similarity index 100%
rename from lisp/w3-speak-table.el
rename to w3-speak-table.el
diff --git a/lisp/w3-speak.el b/w3-speak.el
similarity index 100%
rename from lisp/w3-speak.el
rename to w3-speak.el
diff --git a/lisp/w3-style.el b/w3-style.el
similarity index 100%
rename from lisp/w3-style.el
rename to w3-style.el
diff --git a/lisp/w3-toolbar.el b/w3-toolbar.el
similarity index 100%
rename from lisp/w3-toolbar.el
rename to w3-toolbar.el
diff --git a/lisp/w3-vars.el b/w3-vars.el
similarity index 100%
rename from lisp/w3-vars.el
rename to w3-vars.el
diff --git a/lisp/w3-widget.el b/w3-widget.el
similarity index 100%
rename from lisp/w3-widget.el
rename to w3-widget.el
diff --git a/lisp/w3-xemac.el b/w3-xemac.el
similarity index 100%
rename from lisp/w3-xemac.el
rename to w3-xemac.el
diff --git a/lisp/w3.el b/w3.el
similarity index 100%
rename from lisp/w3.el
rename to w3.el

commit 4cd82a5d4502374d8021b6e1c01236d1778f1fab
Author: Magnus Henoch <address@hidden>
Date:   Tue May 20 17:28:01 2008 +0200

    2008-05-20  Magnus Henoch  <address@hidden>
    
        * lisp/w3.el (w3-do-setup): Change homepage link.

diff --git a/ChangeLog b/ChangeLog
index 9ff349c..e1d60c3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2008-05-20  Magnus Henoch  <address@hidden>
+
+       * lisp/w3.el (w3-do-setup): Change homepage link.
+
 2008-03-26  Magnus Henoch  <address@hidden>
 
        * lisp/w3.el (w3-fetch-callback): Don't disable multibyte.
diff --git a/lisp/w3.el b/lisp/w3.el
index 8db15d5..b33623d 100644
--- a/lisp/w3.el
+++ b/lisp/w3.el
@@ -1850,11 +1850,11 @@ Emacs."
     (or w3-hotlist (w3-parse-hotlist))
 
     ;; Set the default home page, honoring their defaults, then the
-    ;; standard WWW_HOME, then default to the documentation @ IU
+    ;; standard WWW_HOME, then default to the documentation @ gnu.org
     (or w3-default-homepage
        (setq w3-default-homepage
              (or (getenv "WWW_HOME")
-                 "http://www.cs.indiana.edu/elisp/w3/docs.html";)))
+                 "http://www.gnu.org/software/w3/";)))
 
     (run-hooks 'w3-load-hook)))
 

commit 4fe95e5078c6f369d0e8eec551f4573475626e98
Author: Magnus Henoch <address@hidden>
Date:   Wed Mar 26 00:10:25 2008 +0100

    2008-03-26  Magnus Henoch  <address@hidden>
    
        * lisp/w3.el (w3-fetch-callback): Don't disable multibyte.
        (w3-decode-charset): Don't reenable multibyte.

diff --git a/ChangeLog b/ChangeLog
index d8901cc..9ff349c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2008-03-26  Magnus Henoch  <address@hidden>
+
+       * lisp/w3.el (w3-fetch-callback): Don't disable multibyte.
+       (w3-decode-charset): Don't reenable multibyte.
+
 2008-03-10  Magnus Henoch  <address@hidden>
 
        * lisp/w3-display.el (w3-display-table): Guard against empty
diff --git a/lisp/w3.el b/lisp/w3.el
index a23131f..8db15d5 100644
--- a/lisp/w3.el
+++ b/lisp/w3.el
@@ -5,7 +5,7 @@
 ;; Keywords: faces, help, comm, news, mail, processes, mouse, hypermedia
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; Copyright (c) 1996, 97, 98, 99, 2001, 2007 Free Software Foundation, Inc.
+;;; Copyright (c) 1996, 97, 98, 99, 2001, 2007, 2008 Free Software Foundation, 
Inc.
 ;;; Copyright (c) 1993 - 1996 by William M. Perry <address@hidden>
 ;;;
 ;;; This file is part of GNU Emacs.
@@ -188,8 +188,7 @@ Return the coding system used for the decoding."
        (mm-decode-coding-region (point-min) (point-max) coding-system)
        ;; Potentially useful is the buffer's going to be saved, and
        ;; for the mode-line indication.
-       (set-buffer-file-coding-system coding-system))
-      (mm-enable-multibyte))
+       (set-buffer-file-coding-system coding-system)))
     coding-system))
 
 (defvar http-header)                   ; dynamically bound below
@@ -360,7 +359,6 @@ MUST-BE-VIEWING is the current URL when the timer expires."
            (equal (mm-handle-media-type handle) "application/xhtml+xml"))
        ;; Special case text/html if it comes through w3-fetch
        (set-buffer (generate-new-buffer " *w3-html*"))
-       (mm-disable-multibyte)
        (mm-insert-part handle)
        (w3-decode-charset handle)
        (setq url-current-object (url-generic-parse-url url))

commit 634c8c5f42ab5a9f845e62a9983b7a52c0c1522d
Author: Magnus Henoch <address@hidden>
Date:   Mon Mar 10 21:07:19 2008 +0100

    * lisp/w3-display.el (w3-display-table-dimensions): Guard against
    empty colspan and rowspan elements.

diff --git a/ChangeLog b/ChangeLog
index 715aa4a..d8901cc 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -2,6 +2,7 @@
 
        * lisp/w3-display.el (w3-display-table): Guard against empty
        colspan and rowspan elements.
+       (w3-display-table-dimensions): Ditto.
 
 2008-03-01  Magnus Henoch  <address@hidden>
 
diff --git a/lisp/w3-display.el b/lisp/w3-display.el
index 2b3f21b..851908d 100644
--- a/lisp/w3-display.el
+++ b/lisp/w3-display.el
@@ -1369,8 +1369,10 @@ Can sometimes make the structure of a document clearer")
               (mapcar
                (function
                 (lambda (td)
-                  (setq colspan (string-to-int (or (cdr-safe (assq 'colspan 
(nth 1 td))) "1"))
-                        rowspan (string-to-int (or (cdr-safe (assq 'rowspan 
(nth 1 td))) "1"))
+                  (setq colspan (string-to-int (or (let ((attr (cdr-safe (assq 
'colspan (nth 1 td)))))
+                                                     (unless (zerop (length 
attr)) attr)) "1"))
+                        rowspan (string-to-int (or (let ((attr (cdr-safe (assq 
'rowspan (nth 1 td)))))
+                                                     (unless (zerop (length 
attr)) attr))"1"))
                         min  (w3-size-of-tree  (nth 2 td) 'min)
                         max  (w3-size-of-tree  (nth 2 td) 'max)
                         )

commit 2c671b3c0bb15c5a3e4c8024d6c1c2975b0233dd
Author: Magnus Henoch <address@hidden>
Date:   Mon Mar 10 20:42:05 2008 +0100

    * lisp/w3-display.el (w3-display-table): Guard against empty
    colspan and rowspan elements.

diff --git a/ChangeLog b/ChangeLog
index 9e72aa6..715aa4a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2008-03-10  Magnus Henoch  <address@hidden>
+
+       * lisp/w3-display.el (w3-display-table): Guard against empty
+       colspan and rowspan elements.
+
 2008-03-01  Magnus Henoch  <address@hidden>
 
        * lisp/w3-speak-table.el: Modernize backquotes.
diff --git a/lisp/w3-display.el b/lisp/w3-display.el
index 97c5b3c..2b3f21b 100644
--- a/lisp/w3-display.el
+++ b/lisp/w3-display.el
@@ -4,7 +4,7 @@
 ;; Keywords: faces, help, hypermedia
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; Copyright (c) 1996, 97, 98, 99, 2000, 2001, 2007 Free Software Foundation, 
Inc.
+;;; Copyright (c) 1996, 97, 98, 99, 2000, 2001, 2007, 2008 Free Software 
Foundation, Inc.
 ;;; Copyright (c) 1996 by William M. Perry <address@hidden>
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;;
@@ -1646,11 +1646,15 @@ Can sometimes make the structure of a document clearer")
                     (push nil w3-active-voices)
                     (let* ((node (car cols))
                            (attributes (nth 1 node))
+                           (colspan-attr (cdr-safe (assq 'colspan attributes)))
                            (colspan (string-to-int
-                                     (or (cdr-safe (assq 'colspan attributes))
+                                     (or (unless (zerop (length colspan-attr))
+                                           colspan-attr)
                                          "1")))
+                           (rowspan-attr (cdr-safe (assq 'rowspan attributes)))
                            (rowspan (string-to-int
-                                     (or (cdr-safe (assq 'rowspan attributes))
+                                     (or (unless (zerop (length rowspan-attr))
+                                           rowspan-attr)
                                          "1")))
                            fill-column column-width
                            (fill-prefix "")

commit dd86362358344046f091601d510935dc8c638636
Author: Magnus Henoch <address@hidden>
Date:   Sat Mar 1 20:34:57 2008 +0100

        * lisp/w3-speak-table.el: Modernize backquotes.
    
        * lisp/w3-parse.el: Modernize backquotes.
    
        * lisp/w3-java.el: Modernize backquotes.
    
        * lisp/w3-forms.el: Modernize backquotes.

diff --git a/ChangeLog b/ChangeLog
index 3d98803..9e72aa6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,13 @@
 2008-03-01  Magnus Henoch  <address@hidden>
 
+       * lisp/w3-speak-table.el: Modernize backquotes.
+
+       * lisp/w3-parse.el: Modernize backquotes.
+
+       * lisp/w3-java.el: Modernize backquotes.
+
+       * lisp/w3-forms.el: Modernize backquotes.
+
        * lisp/Makefile.in (UTIL_SOURCES): Remove base64.el, md5.el,
        socks.el
 
diff --git a/lisp/w3-forms.el b/lisp/w3-forms.el
index db05cc6..12d4053 100644
--- a/lisp/w3-forms.el
+++ b/lisp/w3-forms.el
@@ -5,8 +5,8 @@
 ;; Keywords: faces, help, comm, data, languages
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; Copyright (c) 1996 - 1999, 2008 Free Software Foundation, Inc.
 ;;; Copyright (c) 1996 by William M. Perry <address@hidden>
-;;; Copyright (c) 1996 - 1999 Free Software Foundation, Inc.
 ;;;
 ;;; This file is part of GNU Emacs.
 ;;;
@@ -407,7 +407,7 @@
                           (list 'choice-item
                                 :format "%[%t%]"
                                 :emacspeak-help 'w3-form-summarize-field
-                                :menu-tag-get (` (lambda (zed) (, (car x))))
+                                :menu-tag-get `(lambda (zed) ,(car x))
                                 :tag (truncate-string-to-width (car x)
                                                                size nil ? )
                                 :button-face face
diff --git a/lisp/w3-java.el b/lisp/w3-java.el
index 78ffb28..289a978 100644
--- a/lisp/w3-java.el
+++ b/lisp/w3-java.el
@@ -5,7 +5,7 @@
 ;; Keywords: hypermedia, scripting
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; Copyright (c) 1999 Free Software Foundation, Inc.
+;;; Copyright (c) 1999, 2008 Free Software Foundation, Inc.
 ;;;
 ;;; This file is part of GNU Emacs.
 ;;;
@@ -76,12 +76,11 @@ Java applet."
          (let ((process-connection-type nil)
                (proc nil))
            (setq proc (eval
-                       (`
-                        (start-process name buffer w3-java-vm-program
-                                       (,@ w3-java-vm-arguments)))))
+                       `(start-process name buffer w3-java-vm-program
+                                       ,@w3-java-vm-arguments)))
            (process-kill-without-query proc)
            proc)
-       (eval (` (funcall w3-java-vm-program
-                         (,@ w3-java-vm-arguments))))))))
+       (eval `(funcall w3-java-vm-program
+                         ,@w3-java-vm-arguments))))))
 
 (provide 'w3-java)
diff --git a/lisp/w3-parse.el b/lisp/w3-parse.el
index 6bc1b5b..952225a 100644
--- a/lisp/w3-parse.el
+++ b/lisp/w3-parse.el
@@ -69,15 +69,15 @@ w3-parse-buffer which it is w3-parse-buffer's 
responsibility to
   (defmacro w3-p-s-var-def (var)
     "Declare VAR as a scratch variable which w3-parse-buffer must
 \"let\"-bind."
-    (` (eval-when-compile
-         (defvar (, var))
-         (or (memq '(, var) w3-p-s-var-list)
-             (setq w3-p-s-var-list (cons '(, var) w3-p-s-var-list))))))
+    `(eval-when-compile
+         (defvar ,var)
+         (or (memq ',var w3-p-s-var-list)
+             (setq w3-p-s-var-list (cons ',var w3-p-s-var-list)))))
 
   (defmacro w3-p-s-let-bindings (&rest body)
     "\"let\"-bind all of the variables in w3-p-s-var-list in BODY."
-    (` (let (, w3-p-s-var-list)
-         (,@ body))))
+    `(let ,w3-p-s-var-list
+         ,@body))
   (put 'w3-p-s-let-bindings 'lisp-indent-function 0)
   (put 'w3-p-s-let-bindings 'edebug-form-spec t)
 
@@ -193,15 +193,15 @@ which must be a string to use as the error message."
                         'w3-debug-html))
       (if mandatory-if
           (setq condition
-                (` (or (, mandatory-if)
-                       (, condition)))))
-      (` (if (, condition)
-             (let ((message (progn (,@ body))))
+                `(or ,mandatory-if
+                       ,condition)))
+      `(if ,condition
+             (let ((message (progn ,@body)))
                (if message
                    (w3-debug-html-aux message
-                                      (,@ (if nocontext
+                                      ,@(if nocontext
                                               (list outer nocontext)
-                                            (if outer '(t)))))))))))
+                                            (if outer '(t)))))))))
 
   ;; This is unsatisfactory.
   (put 'w3-debug-html 'lisp-indent-function 0)
@@ -721,11 +721,11 @@ available.  Codes in the range [128,160] are substituted 
using
       (let* ((field (symbol-name (car fields)))
              (get-sym (intern (concat "w3-element-" field)))
              (set-sym (intern (concat "w3-set-element-" field))))
-        (eval (` (progn
-                   (defmacro (, get-sym) (element)
-                     (list 'aref element (, index)))
-                   (defmacro (, set-sym) (element value)
-                     (list 'aset element (, index) value))))))
+        (eval `(progn
+                   (defmacro ,get-sym (element)
+                     (list 'aref element ,index))
+                   (defmacro ,set-sym (element value)
+                     (list 'aset element ,index value)))))
       (setq fields (cdr fields))
       (setq index (1- index))))
 
@@ -734,14 +734,14 @@ available.  Codes in the range [128,160] are substituted 
using
 
   ;; *** move this to be with DTD declaration.
   (defmacro w3-fresh-element-for-tag (tag)
-    (` (copy-sequence
-        (or (get (, tag) 'html-element-info)
+    `(copy-sequence
+        (or (get ,tag 'html-element-info)
             (error "unimplemented element %s"
-                   (w3-sgml-name-to-string (, tag)))))))
+                   (w3-sgml-name-to-string ,tag)))))
 
   ;; *** move this to be with DTD declaration.
   (defmacro w3-known-element-p (tag)
-    (` (get (, tag) 'html-element-info)))
+    `(get ,tag 'html-element-info))
   
   (defsubst w3-sgml-name-to-string (sym)
     (upcase (symbol-name sym)))
diff --git a/lisp/w3-speak-table.el b/lisp/w3-speak-table.el
index 05b2071..1b71378 100644
--- a/lisp/w3-speak-table.el
+++ b/lisp/w3-speak-table.el
@@ -18,10 +18,10 @@
 (defmacro w3-within-cell (cell-info table-info &rest forms)
   "Enables to recursively enter the current cell using `extract-rectangle'
 using CELL-INFO and TABLE-INFO and process FORMS inside it (for instance to 
process subtables)"
-  (` (let* ((cell-row (w3-cell-info-row (, cell-info)))
-           (cell-col (w3-cell-info-column (, cell-info)))
-           (cell-beg (w3-cell-info-start (, cell-info)))
-           (cell-end (w3-cell-info-end (, cell-info)))
+  `(let* ((cell-row (w3-cell-info-row ,cell-info))
+           (cell-col (w3-cell-info-column ,cell-info))
+           (cell-beg (w3-cell-info-start ,cell-info))
+           (cell-end (w3-cell-info-end ,cell-info))
            (cell-contents (extract-rectangle cell-beg cell-end))
            (cell-x (count-lines (save-excursion (goto-char cell-beg) 
(beginning-of-line) (point))
                                 (save-excursion (beginning-of-line) (point))))
@@ -31,11 +31,11 @@ using CELL-INFO and TABLE-INFO and process FORMS inside it 
(for instance to proc
                                    (- (point) cell-beg)))
            cell-table-structure)
        ;; really inside cell ?
-       (when (and (, cell-info)
+       (when (and ,cell-info
                  (>= (point) cell-beg)
                  (<= (point) cell-end))
         ;; find current subtables structure
-        (loop for subtable in (w3-table-info-subtables (, table-info))
+        (loop for subtable in (w3-table-info-subtables ,table-info)
           if (and (= cell-row (car subtable))
                   (= cell-col (cadr subtable)))
           do (setq cell-table-structure (cons (cddr subtable) 
cell-table-structure)))
@@ -54,7 +54,7 @@ using CELL-INFO and TABLE-INFO and process FORMS inside it 
(for instance to proc
           (forward-line cell-x)
           (move-to-column cell-y)
           (setq w3-table-structure (nreverse cell-table-structure))
-          (,@ forms))))))
+          ,@forms))))
 
 (put 'w3-within-cell 'lisp-indent-function 2)
 (put 'w3-within-cell 'edebug-form-spec '(sexp sexp &rest form))
@@ -62,15 +62,15 @@ using CELL-INFO and TABLE-INFO and process FORMS inside it 
(for instance to proc
 (defmacro w3-table-compute-relative-movement (&rest forms)
   "Record a movement done by &rest FORMS (e.g. inside a temporary buffer)
 and return it as (horizontal-offset . vertical-offset)"
-  (` (let ((origin-line-beg (save-excursion (beginning-of-line) (point)))
+  `(let ((origin-line-beg (save-excursion (beginning-of-line) (point)))
           (origin-char-col (current-column)))
-       (,@ forms)
+       ,@forms
        (cons (- (current-column) origin-char-col)
             (let* ((new-line-beg (save-excursion (beginning-of-line) (point)))
                    (line-diff (count-lines new-line-beg origin-line-beg)))
               (if (< new-line-beg origin-line-beg)
                   (- line-diff)
-                line-diff))))))
+                line-diff)))))
 (put 'w3-table-compute-relative-movement 'lisp-indent-function 0)
 (put 'w3-table-compute-relative-movement 'edebug-form-spec '(&rest form))
 
@@ -85,31 +85,31 @@ and return it as (horizontal-offset . vertical-offset)"
 (defmacro w3-table-move-within-cell (at-depth cell-info move-function)
   "Move within a cell (in a temporary buffer) and reflect the same movement
 in the containing table in the original buffer"
-  (` (if (null (, cell-info))
+  `(if (null ,cell-info)
         (error "Not inside a W3 cell")
        (let (table-movement)
-        (w3-within-cell (, cell-info) table-info
+        (w3-within-cell ,cell-info table-info
                         (setq table-movement
                               (w3-table-compute-relative-movement
-                               (funcall (, move-function) (1- at-depth)))))
-        (w3-table-redo-relative-movement table-movement)))))
+                               (funcall ,move-function (1- at-depth)))))
+        (w3-table-redo-relative-movement table-movement))))
 (put 'w3-table-move-within-cell 'lisp-indent-function 2)
 (put 'w3-table-move-within-cell 'edebug-form-spec '(sexp sexp &rest form))
 
 (defmacro w3-table-move-within-subtable (at-depth cell-info move-function)
   "Move within a subtable (in a temporary buffer) and reflect the same movement
 in the containing table in the original buffer"
-  (` (if (null (, cell-info))
+  `(if (null ,cell-info)
         (error "Not inside a W3 cell")
-       (let ((subtable-info (w3-cell-info-current-subtable (, cell-info)))
+       (let ((subtable-info (w3-cell-info-current-subtable ,cell-info))
             table-movement)
         (if (null subtable-info)
             (error "Not inside a W3 table")
-          (w3-within-cell (, cell-info) table-info
+          (w3-within-cell ,cell-info table-info
                           (setq table-movement
                                 (w3-table-compute-relative-movement
-                                 (funcall (, move-function) (1- at-depth) 
subtable-info))))
-          (w3-table-redo-relative-movement table-movement))))))
+                                 (funcall ,move-function (1- at-depth) 
subtable-info))))
+          (w3-table-redo-relative-movement table-movement)))))
 
 (put 'w3-table-move-within-subtable 'lisp-indent-function 2)
 (put 'w3-table-move-within-subtable 'edebug-form-spec '(sexp sexp &rest form))

commit 44d11807ae8fc43253d9e56b6194317950826a36
Author: Magnus Henoch <address@hidden>
Date:   Sat Mar 1 20:09:53 2008 +0100

        * lisp/Makefile.in (UTIL_SOURCES): Remove base64.el, md5.el,
        socks.el
    
        * lisp/base64.el: Remove.  Emacs has this builtin.
    
        * lisp/md5.el: Remove.  Emacs has this builtin.
    
        * lisp/socks.el: Remove.  Emacs already has it.
    
        * lisp/ssl.el: Don't require base64.

diff --git a/ChangeLog b/ChangeLog
index 957e4fa..3d98803 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,16 @@
 2008-03-01  Magnus Henoch  <address@hidden>
 
+       * lisp/Makefile.in (UTIL_SOURCES): Remove base64.el, md5.el,
+       socks.el
+
+       * lisp/base64.el: Remove.  Emacs has this builtin.
+
+       * lisp/md5.el: Remove.  Emacs has this builtin.
+
+       * lisp/socks.el: Remove.  Emacs already has it.
+
+       * lisp/ssl.el: Don't require base64.
+
        * lisp/url-vars.el: Remove.  Emacs already has it.
 
 2008-02-04  Magnus Henoch  <address@hidden>
diff --git a/lisp/Makefile.in b/lisp/Makefile.in
index ff20595..3cd9862 100644
--- a/lisp/Makefile.in
+++ b/lisp/Makefile.in
@@ -54,7 +54,7 @@ W3_SOURCES =                                                  
        \
        w3.el
 
 UTIL_SOURCES =                                                                 
\
-       base64.el devices.el font.el images.el md5.el socks.el ssl.el
+       devices.el font.el images.el ssl.el
 
 AUTO_SOURCES = auto-autoloads.el custom-load.el w3-auto.el w3-cfg.el
 
diff --git a/lisp/base64.el b/lisp/base64.el
deleted file mode 100644
index bbef43e..0000000
--- a/lisp/base64.el
+++ /dev/null
@@ -1,276 +0,0 @@
-;;; base64.el,v --- Base64 encoding functions
-;; Author: Kyle E. Jones
-;; Created: 1997/03/12 14:37:09
-;; Version: 1.6
-;; Keywords: extensions
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; Copyright (C) 1997 Kyle E. Jones
-;;;
-;;; This file is not part of GNU Emacs, but the same permissions apply.
-;;;
-;;; GNU Emacs is free software; you can redistribute it and/or modify
-;;; it under the terms of the GNU General Public License as published by
-;;; the Free Software Foundation; either version 2, or (at your option)
-;;; any later version.
-;;;
-;;; GNU Emacs is distributed in the hope that it will be useful,
-;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;;; GNU General Public License for more details.
-;;;
-;;; You should have received a copy of the GNU General Public License
-;;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;;; Boston, MA 02111-1307, USA.
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-;; For non-MULE
-(if (not (fboundp 'char-int))
-    (fset 'char-int 'identity))
-
-(defvar base64-alphabet
-  "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/")
-
-(defvar base64-decoder-program nil
-  "*Non-nil value should be a string that names a MIME base64 decoder.
-The program should expect to read base64 data on its standard
-input and write the converted data to its standard output.")
-
-(defvar base64-decoder-switches nil
-  "*List of command line flags passed to the command named by
-base64-decoder-program.")
-
-(defvar base64-encoder-program nil
-  "*Non-nil value should be a string that names a MIME base64 encoder.
-The program should expect arbitrary data on its standard
-input and write base64 data to its standard output.")
-
-(defvar base64-encoder-switches nil
-  "*List of command line flags passed to the command named by
-base64-encoder-program.")
-
-(defconst base64-alphabet-decoding-alist
-  '(
-    ( ?A . 00) ( ?B . 01) ( ?C . 02) ( ?D . 03) ( ?E . 04) ( ?F . 05)
-    ( ?G . 06) ( ?H . 07) ( ?I . 08) ( ?J . 09) ( ?K . 10) ( ?L . 11)
-    ( ?M . 12) ( ?N . 13) ( ?O . 14) ( ?P . 15) ( ?Q . 16) ( ?R . 17)
-    ( ?S . 18) ( ?T . 19) ( ?U . 20) ( ?V . 21) ( ?W . 22) ( ?X . 23)
-    ( ?Y . 24) ( ?Z . 25) ( ?a . 26) ( ?b . 27) ( ?c . 28) ( ?d . 29)
-    ( ?e . 30) ( ?f . 31) ( ?g . 32) ( ?h . 33) ( ?i . 34) ( ?j . 35)
-    ( ?k . 36) ( ?l . 37) ( ?m . 38) ( ?n . 39) ( ?o . 40) ( ?p . 41)
-    ( ?q . 42) ( ?r . 43) ( ?s . 44) ( ?t . 45) ( ?u . 46) ( ?v . 47)
-    ( ?w . 48) ( ?x . 49) ( ?y . 50) ( ?z . 51) ( ?0 . 52) ( ?1 . 53)
-    ( ?2 . 54) ( ?3 . 55) ( ?4 . 56) ( ?5 . 57) ( ?6 . 58) ( ?7 . 59)
-    ( ?8 . 60) ( ?9 . 61) ( ?+ . 62) ( ?/ . 63)
-   ))
-
-(defvar base64-alphabet-decoding-vector
-  (let ((v (make-vector 123 nil))
-       (p base64-alphabet-decoding-alist))
-    (while p
-      (aset v (car (car p)) (cdr (car p)))
-      (setq p (cdr p)))
-    v))
-
-(defvar base64-binary-coding-system 'binary)
-
-(defun base64-run-command-on-region (start end output-buffer command
-                                          &rest arg-list)
-  (let ((tempfile nil) status errstring default-process-coding-system 
-       (coding-system-for-write base64-binary-coding-system)
-       (coding-system-for-read base64-binary-coding-system))
-    (unwind-protect
-       (progn
-         (setq tempfile (make-temp-name "/tmp/base64"))
-         (setq status
-               (apply 'call-process-region
-                      start end command nil
-                      (list output-buffer tempfile)
-                      nil arg-list))
-         (cond ((equal status 0) t)
-               ((zerop (save-excursion
-                         (set-buffer (find-file-noselect tempfile))
-                         (buffer-size)))
-                t)
-               (t (save-excursion
-                    (set-buffer (find-file-noselect tempfile))
-                    (setq errstring (buffer-string))
-                    (kill-buffer nil)
-                    (cons status errstring)))))
-      (ignore-errors
-       (delete-file tempfile)))))
-
-(if (string-match "XEmacs" emacs-version)
-    (defalias 'base64-insert-char 'insert-char)
-  (defun base64-insert-char (char &optional count ignored buffer)
-    (if (or (null buffer) (eq buffer (current-buffer)))
-       (insert-char char count)
-      (with-current-buffer buffer
-       (insert-char char count))))
-  (setq base64-binary-coding-system 'no-conversion))
-
-(defun base64-decode-region (start end)
-  (interactive "r")
-  ;;(message "Decoding base64...")
-  (let ((work-buffer nil)
-       (done nil)
-       (counter 0)
-       (bits 0)
-       (lim 0) inputpos
-       (non-data-chars (concat "^=" base64-alphabet)))
-    (unwind-protect
-       (save-excursion
-         (setq work-buffer (generate-new-buffer " *base64-work*"))
-         (buffer-disable-undo work-buffer)
-         (if base64-decoder-program
-             (let* ((binary-process-output t) ; any text already has CRLFs
-                    (status (apply 'base64-run-command-on-region
-                                  start end work-buffer
-                                  base64-decoder-program
-                                  base64-decoder-switches)))
-               (if (not (eq status t))
-                   (error "%s" (cdr status))))
-           (goto-char start)
-           (skip-chars-forward non-data-chars end)
-           (while (not done)
-             (setq inputpos (point))
-             (cond
-              ((> (skip-chars-forward base64-alphabet end) 0)
-               (setq lim (point))
-               (while (< inputpos lim)
-                 (setq bits (+ bits
-                               (aref base64-alphabet-decoding-vector
-                                     (char-int (char-after inputpos)))))
-                 (setq counter (1+ counter)
-                       inputpos (1+ inputpos))
-                 (cond ((= counter 4)
-                        (base64-insert-char (lsh bits -16) 1 nil work-buffer)
-                        (base64-insert-char (logand (lsh bits -8) 255) 1 nil
-                                        work-buffer)
-                        (base64-insert-char (logand bits 255) 1 nil
-                                            work-buffer)
-                        (setq bits 0 counter 0))
-                       (t (setq bits (lsh bits 6)))))))
-             (cond
-              ((= (point) end)
-               (if (not (zerop counter))
-                   (error "at least %d bits missing at end of base64 encoding"
-                          (* (- 4 counter) 6)))
-               (setq done t))
-              ((eq (char-after (point)) ?=)
-               (setq done t)
-               (cond ((= counter 1)
-                      (error "at least 2 bits missing at end of base64 
encoding"))
-                     ((= counter 2)
-                      (base64-insert-char (lsh bits -10) 1 nil work-buffer))
-                     ((= counter 3)
-                      (base64-insert-char (lsh bits -16) 1 nil work-buffer)
-                      (base64-insert-char (logand (lsh bits -8) 255)
-                                          1 nil work-buffer))
-                     ((= counter 0) t)))
-              (t (skip-chars-forward non-data-chars end)))))
-         (or (markerp end) (setq end (set-marker (make-marker) end)))
-         (goto-char start)
-         (insert-buffer-substring work-buffer)
-         (delete-region (point) end))
-      (and work-buffer (kill-buffer work-buffer))))
-  ;;(message "Decoding base64... done")
-  )
-
-(defun base64-encode-region (start end &optional no-line-break)
-  (interactive "r")
-  (message "Encoding base64...")
-  (let ((work-buffer nil)
-       (counter 0)
-       (cols 0)
-       (bits 0)
-       (alphabet base64-alphabet)
-       inputpos)
-    (unwind-protect
-       (save-excursion
-         (setq work-buffer (generate-new-buffer " *base64-work*"))
-         (buffer-disable-undo work-buffer)
-         (if base64-encoder-program
-             (let ((status (apply 'base64-run-command-on-region
-                                  start end work-buffer
-                                  base64-encoder-program
-                                  base64-encoder-switches)))
-               (if (not (eq status t))
-                   (error "%s" (cdr status))))
-           (setq inputpos start)
-           (while (< inputpos end)
-             (setq bits (+ bits (char-int (char-after inputpos))))
-             (setq counter (1+ counter))
-             (cond ((= counter 3)
-                    (base64-insert-char (aref alphabet (lsh bits -18)) 1 nil
-                                        work-buffer)
-                    (base64-insert-char
-                     (aref alphabet (logand (lsh bits -12) 63))
-                     1 nil work-buffer)
-                    (base64-insert-char
-                     (aref alphabet (logand (lsh bits -6) 63))
-                     1 nil work-buffer)
-                    (base64-insert-char
-                     (aref alphabet (logand bits 63))
-                     1 nil work-buffer)
-                    (setq cols (+ cols 4))
-                    (cond ((and (= cols 72)
-                                (not no-line-break))
-                           (base64-insert-char ?\n 1 nil work-buffer)
-                           (setq cols 0)))
-                    (setq bits 0 counter 0))
-                   (t (setq bits (lsh bits 8))))
-             (setq inputpos (1+ inputpos)))
-           ;; write out any remaining bits with appropriate padding
-           (if (= counter 0)
-               nil
-             (setq bits (lsh bits (- 16 (* 8 counter))))
-             (base64-insert-char (aref alphabet (lsh bits -18)) 1 nil
-                                 work-buffer)
-             (base64-insert-char (aref alphabet (logand (lsh bits -12) 63))
-                                 1 nil work-buffer)
-             (if (= counter 1)
-                 (base64-insert-char ?= 2 nil work-buffer)
-               (base64-insert-char (aref alphabet (logand (lsh bits -6) 63))
-                                   1 nil work-buffer)
-               (base64-insert-char ?= 1 nil work-buffer)))
-           (if (and (> cols 0)
-                    (not no-line-break))
-               (base64-insert-char ?\n 1 nil work-buffer)))
-         (or (markerp end) (setq end (set-marker (make-marker) end)))
-         (goto-char start)
-         (insert-buffer-substring work-buffer)
-         (delete-region (point) end))
-      (and work-buffer (kill-buffer work-buffer))))
-  (message "Encoding base64... done"))
-
-(defun base64-encode (string)
-  (save-excursion
-    (set-buffer (get-buffer-create " *base64-encode*"))
-    (erase-buffer)
-    (insert string)
-    (base64-encode-region (point-min) (point-max))
-    (skip-chars-backward " \t\r\n")
-    (delete-region (point-max) (point))
-    (prog1
-       (buffer-string)
-      (kill-buffer (current-buffer)))))
-
-(defun base64-decode (string)
-  (save-excursion
-    (set-buffer (get-buffer-create " *base64-decode*"))
-    (erase-buffer)
-    (insert string)
-    (base64-decode-region (point-min) (point-max))
-    (goto-char (point-max))
-    (skip-chars-backward " \t\r\n")
-    (delete-region (point-max) (point))
-    (prog1
-       (buffer-string)
-      (kill-buffer (current-buffer)))))
-
-(fset 'base64-decode-string 'base64-decode)
-(fset 'base64-encode-string 'base64-encode)
-
-(provide 'base64)
diff --git a/lisp/md5.el b/lisp/md5.el
deleted file mode 100644
index b4a64e9..0000000
--- a/lisp/md5.el
+++ /dev/null
@@ -1,406 +0,0 @@
-;;; md5.el -- MD5 Message Digest Algorithm
-;;; Gareth Rees <address@hidden>
-
-;; LCD Archive Entry:
-;; md5|Gareth Rees|address@hidden|
-;; MD5 cryptographic message digest algorithm|
-;; 13-Nov-95|1.0|~/misc/md5.el.Z|
-
-;;; Details: ------------------------------------------------------------------
-
-;; This is a direct translation into Emacs LISP of the reference C
-;; implementation of the MD5 Message-Digest Algorithm written by RSA
-;; Data Security, Inc.
-;; 
-;; The algorithm takes a message (that is, a string of bytes) and
-;; computes a 16-byte checksum or "digest" for the message.  This digest
-;; is supposed to be cryptographically strong in the sense that if you
-;; are given a 16-byte digest D, then there is no easier way to
-;; construct a message whose digest is D than to exhaustively search the
-;; space of messages.  However, the robustness of the algorithm has not
-;; been proven, and a similar algorithm (MD4) was shown to be unsound,
-;; so treat with caution!
-;; 
-;; The C algorithm uses 32-bit integers; because GNU Emacs
-;; implementations provide 28-bit integers (with 24-bit integers on
-;; versions prior to 19.29), the code represents a 32-bit integer as the
-;; cons of two 16-bit integers.  The most significant word is stored in
-;; the car and the least significant in the cdr.  The algorithm requires
-;; at least 17 bits of integer representation in order to represent the
-;; carry from a 16-bit addition.
-
-;;; Usage: --------------------------------------------------------------------
-
-;; To compute the MD5 Message Digest for a message M (represented as a
-;; string or as a vector of bytes), call
-;; 
-;;   (md5-encode M)
-;; 
-;; which returns the message digest as a vector of 16 bytes.  If you
-;; need to supply the message in pieces M1, M2, ... Mn, then call
-;; 
-;;   (md5-init)
-;;   (md5-update M1)
-;;   (md5-update M2)
-;;   ...
-;;   (md5-update Mn)
-;;   (md5-final)
-
-;;; Copyright and licence: ----------------------------------------------------
-
-;; Copyright (C) 1995, 1996, 1997 by Gareth Rees
-;; Derived from the RSA Data Security, Inc. MD5 Message-Digest Algorithm
-;; 
-;; md5.el is free software; you can redistribute it and/or modify it
-;; under the terms of the GNU General Public License as published by the
-;; Free Software Foundation; either version 2, or (at your option) any
-;; later version.
-;; 
-;; md5.el is distributed in the hope that it will be useful, but WITHOUT
-;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-;; FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-;; for more details.
-;; 
-;; The original copyright notice is given below, as required by the
-;; licence for the original code.  This code is distributed under *both*
-;; RSA's original licence and the GNU General Public Licence.  (There
-;; should be no problems, as the former is more liberal than the
-;; latter).
-
-;;; Original copyright notice: ------------------------------------------------
-
-;; Copyright (C) 1990, RSA Data Security, Inc. All rights reserved.
-;;
-;; License to copy and use this software is granted provided that it is
-;; identified as the "RSA Data Security, Inc. MD5 Message- Digest
-;; Algorithm" in all material mentioning or referencing this software or
-;; this function.
-;;
-;; License is also granted to make and use derivative works provided
-;; that such works are identified as "derived from the RSA Data
-;; Security, Inc. MD5 Message-Digest Algorithm" in all material
-;; mentioning or referencing the derived work.
-;;
-;; RSA Data Security, Inc. makes no representations concerning either
-;; the merchantability of this software or the suitability of this
-;; software for any particular purpose.  It is provided "as is" without
-;; express or implied warranty of any kind.
-;;
-;; These notices must be retained in any copies of any part of this
-;; documentation and/or software.
-
-;;; Code: ---------------------------------------------------------------------
-
-(defvar md5-program "md5"
-  "*Program that reads a message on its standard input and writes an
-MD5 digest on its output.")
-
-(defvar md5-maximum-internal-length 4096
-  "*The maximum size of a piece of data that should use the MD5 routines
-written in lisp.  If a message exceeds this, it will be run through an
-external filter for processing.  Also see the `md5-program' variable.
-This variable has no effect if you call the md5-init|update|final
-functions - only used by the `md5' function's simpler interface.")
-
-(defvar md5-bits (make-vector 4 0)
-  "Number of bits handled, modulo 2^64.
-Represented as four 16-bit numbers, least significant first.")
-(defvar md5-buffer (make-vector 4 '(0 . 0))
-  "Scratch buffer (four 32-bit integers).")
-(defvar md5-input (make-vector 64 0)
-  "Input buffer (64 bytes).")
-
-(defun md5-unhex (x)
-  (if (> x ?9)
-      (if (>= x ?a)
-         (+ 10 (- x ?a))
-       (+ 10 (- x ?A)))
-    (- x ?0)))
-
-(defun md5-encode (message)
-  "Encodes MESSAGE using the MD5 message digest algorithm.
-MESSAGE must be a string or an array of bytes.
-Returns a vector of 16 bytes containing the message digest."
-  (if (<= (length message) md5-maximum-internal-length)
-      (progn
-       (md5-init)
-       (md5-update message)
-       (md5-final))
-    (save-excursion
-      (set-buffer (get-buffer-create " *md5-work*"))
-      (erase-buffer)
-      (insert message)
-      (call-process-region (point-min) (point-max)
-                          md5-program
-                          t (current-buffer))
-      ;; MD5 digest is 32 chars long
-      ;; mddriver adds a newline to make neaten output for tty
-      ;; viewing, make sure we leave it behind.
-      (let ((data (buffer-substring (point-min) (+ (point-min) 32)))
-           (vec (make-vector 16 0))
-           (ctr 0))
-       (while (< ctr 16)
-         (aset vec ctr (+ (* 16 (md5-unhex (aref data (* ctr 2))))
-                          (md5-unhex (aref data (1+ (* ctr 2))))))
-         (setq ctr (1+ ctr)))))))
-
-(defsubst md5-add (x y)
-  "Return 32-bit sum of 32-bit integers X and Y."
-  (let ((m (+ (car x) (car y)))
-        (l (+ (cdr x) (cdr y))))
-    (cons (logand 65535 (+ m (lsh l -16))) (logand l 65535))))
-
-;; FF, GG, HH and II are basic MD5 functions, providing transformations
-;; for rounds 1, 2, 3 and 4 respectively.  Each function follows this
-;; pattern of computation (where ROTATE(x,y) means rotate 32-bit value x
-;; by y bits to the left):
-;; 
-;;   FF(a,b,c,d,x,s,ac) = ROTATE(a + F(b,c,d) + x + ac,s) + b
-;; 
-;; so we use the macro `md5-make-step' to construct each one.  The
-;; helper functions F, G, H and I operate on 16-bit numbers; the full
-;; operation splits its inputs, operates on the halves separately and
-;; then puts the results together.
-
-(defsubst md5-F (x y z) (logior (logand x y) (logand (lognot x) z)))
-(defsubst md5-G (x y z) (logior (logand x z) (logand y (lognot z))))
-(defsubst md5-H (x y z) (logxor x y z))
-(defsubst md5-I (x y z) (logxor y (logior x (logand 65535 (lognot z)))))
-
-(defmacro md5-make-step (name func)
-  (`
-   (defun (, name) (a b c d x s ac)
-     (let*
-         ((m1 (+ (car a) ((, func) (car b) (car c) (car d)) (car x) (car ac)))
-          (l1 (+ (cdr a) ((, func) (cdr b) (cdr c) (cdr d)) (cdr x) (cdr ac)))
-          (m2 (logand 65535 (+ m1 (lsh l1 -16))))
-          (l2 (logand 65535 l1))
-          (m3 (logand 65535 (if (> s 15)
-                                (+ (lsh m2 (- s 32)) (lsh l2 (- s 16)))
-                              (+ (lsh m2 s) (lsh l2 (- s 16))))))
-          (l3 (logand 65535 (if (> s 15)
-                                (+ (lsh l2 (- s 32)) (lsh m2 (- s 16)))
-                              (+ (lsh l2 s) (lsh m2 (- s 16)))))))
-       (md5-add (cons m3 l3) b)))))
-
-(md5-make-step md5-FF md5-F)
-(md5-make-step md5-GG md5-G)
-(md5-make-step md5-HH md5-H)
-(md5-make-step md5-II md5-I)
-
-(defun md5-init ()
-  "Initialise the state of the message-digest routines."
-  (aset md5-bits 0 0)
-  (aset md5-bits 1 0)
-  (aset md5-bits 2 0)
-  (aset md5-bits 3 0)
-  (aset md5-buffer 0 '(26437 .  8961))
-  (aset md5-buffer 1 '(61389 . 43913))
-  (aset md5-buffer 2 '(39098 . 56574))
-  (aset md5-buffer 3 '( 4146 . 21622)))
-
-(defun md5-update (string)
-  "Update the current MD5 state with STRING (an array of bytes)."
-  (let ((len (length string))
-        (i 0)
-        (j 0))
-    (while (< i len)
-      ;; Compute number of bytes modulo 64
-      (setq j (% (/ (aref md5-bits 0) 8) 64))
-
-      ;; Store this byte (truncating to 8 bits to be sure)
-      (aset md5-input j (logand 255 (aref string i)))
-
-      ;; Update number of bits by 8 (modulo 2^64)
-      (let ((c 8) (k 0))
-        (while (and (> c 0) (< k 4))
-          (let ((b (aref md5-bits k)))
-            (aset md5-bits k (logand 65535 (+ b c)))
-            (setq c (if (> b (- 65535 c)) 1 0)
-                  k (1+ k)))))
-
-      ;; Increment number of bytes processed
-      (setq i (1+ i))
-
-      ;; When 64 bytes accumulated, pack them into sixteen 32-bit
-      ;; integers in the array `in' and then tranform them.
-      (if (= j 63)
-          (let ((in (make-vector 16 (cons 0 0)))
-                (k 0)
-                (kk 0))
-            (while (< k 16)
-              (aset in k (md5-pack md5-input kk))
-              (setq k (+ k 1) kk (+ kk 4)))
-            (md5-transform in))))))
-
-(defun md5-pack (array i)
-  "Pack the four bytes at ARRAY reference I to I+3 into a 32-bit integer."
-  (cons (+ (lsh (aref array (+ i 3)) 8) (aref array (+ i 2)))
-        (+ (lsh (aref array (+ i 1)) 8) (aref array (+ i 0)))))
-
-(defun md5-byte (array n b)
-  "Unpack byte B (0 to 3) from Nth member of ARRAY of 32-bit integers."
-  (let ((e (aref array n)))
-    (cond ((eq b 0) (logand 255 (cdr e)))
-          ((eq b 1) (lsh (cdr e) -8))
-          ((eq b 2) (logand 255 (car e)))
-          ((eq b 3) (lsh (car e) -8)))))
-
-(defun md5-final ()
-  (let ((in (make-vector 16 (cons 0 0)))
-        (j 0)
-        (digest (make-vector 16 0))
-        (padding))
-
-    ;; Save the number of bits in the message
-    (aset in 14 (cons (aref md5-bits 1) (aref md5-bits 0)))
-    (aset in 15 (cons (aref md5-bits 3) (aref md5-bits 2)))
-
-    ;; Compute number of bytes modulo 64
-    (setq j (% (/ (aref md5-bits 0) 8) 64))
-
-    ;; Pad out computation to 56 bytes modulo 64
-    (setq padding (make-vector (if (< j 56) (- 56 j) (- 120 j)) 0))
-    (aset padding 0 128)
-    (md5-update padding)
-
-    ;; Append length in bits and transform
-    (let ((k 0) (kk 0))
-      (while (< k 14)
-        (aset in k (md5-pack md5-input kk))
-        (setq k (+ k 1) kk (+ kk 4))))
-    (md5-transform in)
-
-    ;; Store the results in the digest
-    (let ((k 0) (kk 0))
-      (while (< k 4)
-        (aset digest (+ kk 0) (md5-byte md5-buffer k 0))
-        (aset digest (+ kk 1) (md5-byte md5-buffer k 1))
-        (aset digest (+ kk 2) (md5-byte md5-buffer k 2))
-        (aset digest (+ kk 3) (md5-byte md5-buffer k 3))
-        (setq k (+ k 1) kk (+ kk 4))))
-
-    ;; Return digest
-    digest))
-
-;; It says in the RSA source, "Note that if the Mysterious Constants are
-;; arranged backwards in little-endian order and decrypted with the DES
-;; they produce OCCULT MESSAGES!"  Security through obscurity?
-
-(defun md5-transform (in)
-  "Basic MD5 step. Transform md5-buffer based on array IN."
-  (let ((a (aref md5-buffer 0))
-        (b (aref md5-buffer 1))
-        (c (aref md5-buffer 2))
-        (d (aref md5-buffer 3)))
-    (setq
-     a (md5-FF a b c d (aref in  0)  7 '(55146 . 42104))
-     d (md5-FF d a b c (aref in  1) 12 '(59591 . 46934))
-     c (md5-FF c d a b (aref in  2) 17 '( 9248 . 28891))
-     b (md5-FF b c d a (aref in  3) 22 '(49597 . 52974))
-     a (md5-FF a b c d (aref in  4)  7 '(62844 .  4015))
-     d (md5-FF d a b c (aref in  5) 12 '(18311 . 50730))
-     c (md5-FF c d a b (aref in  6) 17 '(43056 . 17939))
-     b (md5-FF b c d a (aref in  7) 22 '(64838 . 38145))
-     a (md5-FF a b c d (aref in  8)  7 '(27008 . 39128))
-     d (md5-FF d a b c (aref in  9) 12 '(35652 . 63407))
-     c (md5-FF c d a b (aref in 10) 17 '(65535 . 23473))
-     b (md5-FF b c d a (aref in 11) 22 '(35164 . 55230))
-     a (md5-FF a b c d (aref in 12)  7 '(27536 .  4386))
-     d (md5-FF d a b c (aref in 13) 12 '(64920 . 29075))
-     c (md5-FF c d a b (aref in 14) 17 '(42617 . 17294))
-     b (md5-FF b c d a (aref in 15) 22 '(18868 .  2081))
-     a (md5-GG a b c d (aref in  1)  5 '(63006 .  9570))
-     d (md5-GG d a b c (aref in  6)  9 '(49216 . 45888))
-     c (md5-GG c d a b (aref in 11) 14 '( 9822 . 23121))
-     b (md5-GG b c d a (aref in  0) 20 '(59830 . 51114))
-     a (md5-GG a b c d (aref in  5)  5 '(54831 .  4189))
-     d (md5-GG d a b c (aref in 10)  9 '(  580 .  5203))
-     c (md5-GG c d a b (aref in 15) 14 '(55457 . 59009))
-     b (md5-GG b c d a (aref in  4) 20 '(59347 . 64456))
-     a (md5-GG a b c d (aref in  9)  5 '( 8673 . 52710))
-     d (md5-GG d a b c (aref in 14)  9 '(49975 .  2006))
-     c (md5-GG c d a b (aref in  3) 14 '(62677 .  3463))
-     b (md5-GG b c d a (aref in  8) 20 '(17754 .  5357))
-     a (md5-GG a b c d (aref in 13)  5 '(43491 . 59653))
-     d (md5-GG d a b c (aref in  2)  9 '(64751 . 41976))
-     c (md5-GG c d a b (aref in  7) 14 '(26479 .   729))
-     b (md5-GG b c d a (aref in 12) 20 '(36138 . 19594))
-     a (md5-HH a b c d (aref in  5)  4 '(65530 . 14658))
-     d (md5-HH d a b c (aref in  8) 11 '(34673 . 63105))
-     c (md5-HH c d a b (aref in 11) 16 '(28061 . 24866))
-     b (md5-HH b c d a (aref in 14) 23 '(64997 . 14348))
-     a (md5-HH a b c d (aref in  1)  4 '(42174 . 59972))
-     d (md5-HH d a b c (aref in  4) 11 '(19422 . 53161))
-     c (md5-HH c d a b (aref in  7) 16 '(63163 . 19296))
-     b (md5-HH b c d a (aref in 10) 23 '(48831 . 48240))
-     a (md5-HH a b c d (aref in 13)  4 '(10395 . 32454))
-     d (md5-HH d a b c (aref in  0) 11 '(60065 . 10234))
-     c (md5-HH c d a b (aref in  3) 16 '(54511 . 12421))
-     b (md5-HH b c d a (aref in  6) 23 '( 1160 .  7429))
-     a (md5-HH a b c d (aref in  9)  4 '(55764 . 53305))
-     d (md5-HH d a b c (aref in 12) 11 '(59099 . 39397))
-     c (md5-HH c d a b (aref in 15) 16 '( 8098 . 31992))
-     b (md5-HH b c d a (aref in  2) 23 '(50348 . 22117))
-     a (md5-II a b c d (aref in  0)  6 '(62505 .  8772))
-     d (md5-II d a b c (aref in  7) 10 '(17194 . 65431))
-     c (md5-II c d a b (aref in 14) 15 '(43924 .  9127))
-     b (md5-II b c d a (aref in  5) 21 '(64659 . 41017))
-     a (md5-II a b c d (aref in 12)  6 '(25947 . 22979))
-     d (md5-II d a b c (aref in  3) 10 '(36620 . 52370))
-     c (md5-II c d a b (aref in 10) 15 '(65519 . 62589))
-     b (md5-II b c d a (aref in  1) 21 '(34180 . 24017))
-     a (md5-II a b c d (aref in  8)  6 '(28584 . 32335))
-     d (md5-II d a b c (aref in 15) 10 '(65068 . 59104))
-     c (md5-II c d a b (aref in  6) 15 '(41729 . 17172))
-     b (md5-II b c d a (aref in 13) 21 '(19976 .  4513))
-     a (md5-II a b c d (aref in  4)  6 '(63315 . 32386))
-     d (md5-II d a b c (aref in 11) 10 '(48442 . 62005))
-     c (md5-II c d a b (aref in  2) 15 '(10967 . 53947))
-     b (md5-II b c d a (aref in  9) 21 '(60294 . 54161)))
-
-     (aset md5-buffer 0 (md5-add (aref md5-buffer 0) a))
-     (aset md5-buffer 1 (md5-add (aref md5-buffer 1) b))
-     (aset md5-buffer 2 (md5-add (aref md5-buffer 2) c))
-     (aset md5-buffer 3 (md5-add (aref md5-buffer 3) d))))
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; Here begins the merger with the XEmacs API and the md5.el from the URL
-;;; package.  Courtesy address@hidden
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-(defun md5 (object &optional start end)
-  "Return the MD5 (a secure message digest algorithm) of an object.
-OBJECT is either a string or a buffer.
-Optional arguments START and END denote buffer positions for computing the
-hash of a portion of OBJECT."
- (let ((buffer nil))
-    (unwind-protect
-       (save-excursion
-         (setq buffer (generate-new-buffer " *md5-work*"))
-         (set-buffer buffer)
-         (cond
-          ((bufferp object)
-           (insert-buffer-substring object start end))
-          ((stringp object)
-           (insert (if (or start end)
-                       (substring object start end)
-                     object)))
-          (t nil))
-         (prog1
-             (if (<= (point-max) md5-maximum-internal-length)
-                 (mapconcat
-                  (function (lambda (node) (format "%02x" node)))
-                  (md5-encode (buffer-string))
-                  "")
-               (call-process-region (point-min) (point-max)
-                                    shell-file-name
-                                    t buffer nil
-                                    shell-command-switch md5-program)
-               ;; MD5 digest is 32 chars long
-               ;; mddriver adds a newline to make neaten output for tty
-               ;; viewing, make sure we leave it behind.
-               (buffer-substring (point-min) (+ (point-min) 32)))
-           (kill-buffer buffer)))
-      (and buffer (buffer-name buffer) (kill-buffer buffer) nil))))
-
-(provide 'md5)
diff --git a/lisp/socks.el b/lisp/socks.el
deleted file mode 100644
index 692ed8a..0000000
--- a/lisp/socks.el
+++ /dev/null
@@ -1,654 +0,0 @@
-;;; socks.el --- A Socks v5 Client for Emacs
-;; Author: $Author: fx $
-;; Created: $Date: 2002/01/22 18:58:43 $
-;; Version: $Revision: 1.7 $
-;; Keywords: comm, firewalls
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; Copyright (c) 1996 - 1998 by William M. Perry <address@hidden>
-;;; Copyright (c) 1996, 97, 98, 1999, 2000 Free Software Foundation, Inc.
-;;;
-;;; This file is part of GNU Emacs.
-;;;
-;;; GNU Emacs is free software; you can redistribute it and/or modify
-;;; it under the terms of the GNU General Public License as published by
-;;; the Free Software Foundation; either version 2, or (at your option)
-;;; any later version.
-;;;
-;;; GNU Emacs is distributed in the hope that it will be useful,
-;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;;; GNU General Public License for more details.
-;;;
-;;; You should have received a copy of the GNU General Public License
-;;; along with GNU Emacs; see the file COPYING.  If not, write to
-;;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;
-;;; This is an implementation of the SOCKS v5 protocol as defined in
-;;; RFC 1928.
-;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-;; TODO
-;; - Finish the redirection rules stuff
-;; - Implement composition of servers.  Recursively evaluate the
-;;   redirection rules and do SOCKS-over-HTTP and SOCKS-in-SOCKS
-
-(eval-when-compile
-  (require 'cl)
-  (require 'wid-edit))
-(require 'custom)
-
-;; For non-XEmacs-MULE
-(if (fboundp 'char-int)
-    (defalias 'socks-char-int 'char-int)
-  (defalias 'socks-char-int 'identity))
-
-(if (not (fboundp 'split-string))
-    (defun split-string (string &optional pattern)
-      "Return a list of substrings of STRING which are separated by PATTERN.
-If PATTERN is omitted, it defaults to \"[ \\f\\t\\n\\r\\v]+\"."
-      (or pattern
-         (setq pattern "[ \f\t\n\r\v]+"))
-      (let (parts (start 0))
-       (while (string-match pattern string start)
-         (setq parts (cons (substring string start (match-beginning 0)) parts)
-               start (match-end 0)))
-       (nreverse (cons (substring string start) parts)))))
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; Custom widgets
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-(define-widget 'dynamic-choice 'menu-choice
-  "A pretty simple dynamic dropdown list"
-  :format "%[%t%]: %v"
-  :tag "Network"
-  :case-fold t
-  :void '(item :format "invalid (%t)\n")
-  :value-create 's5-widget-value-create
-  :value-delete 'widget-children-value-delete
-  :value-get 'widget-choice-value-get
-  :value-inline 'widget-choice-value-inline
-  :mouse-down-action 'widget-choice-mouse-down-action
-  :action 'widget-choice-action
-  :error "Make a choice"
-  :validate 'widget-choice-validate
-  :match 's5-dynamic-choice-match
-  :match-inline 's5-dynamic-choice-match-inline)
-
-(defun s5-dynamic-choice-match (widget value)
-  (let ((choices (funcall (widget-get widget :choice-function)))
-       current found)
-    (while (and choices (not found))
-      (setq current (car choices)
-           choices (cdr choices)
-           found (widget-apply current :match value)))
-    found))
-
-(defun s5-dynamic-choice-match-inline (widget value)
-  (let ((choices (funcall (widget-get widget :choice-function)))
-       current found)
-    (while (and choices (not found))
-      (setq current (car choices)
-           choices (cdr choices)
-           found (widget-match-inline current value)))
-    found))
-
-(defun s5-widget-value-create (widget)
-  (let ((choices (funcall (widget-get widget :choice-function)))
-       (value (widget-get widget :value)))
-    (if (not value)
-       (widget-put widget :value (widget-value (car choices))))
-    (widget-put widget :args choices)
-    (widget-choice-value-create widget)))
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; Customization support
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-(defgroup socks nil
-  "SOCKS Support"
-  :prefix "socks-"
-  :group 'processes)
-
-'(defcustom socks-server-aliases nil
-  "A list of server aliases for use in access control and filtering rules."
-  :group 'socks
-  :type '(repeat (list :format "%v"
-                      :value ("" "" 1080 5)
-                      (string :tag "Alias")
-                      (string :tag "Hostname/IP Address")
-                      (integer :tag "Port #")
-                      (choice :tag "SOCKS Version"
-                              (integer :tag "SOCKS v4" :value 4)
-                              (integer :tag "SOCKS v5" :value 5)))))
-
-'(defcustom socks-network-aliases
-  '(("Anywhere" (netmask "0.0.0.0" "0.0.0.0")))
-  "A list of network aliases for use in subsequent rules."
-  :group 'socks
-  :type '(repeat (list :format "%v"
-                      :value (netmask "" "255.255.255.0")
-                      (string :tag "Alias")
-                      (radio-button-choice
-                       :format "%v"
-                       (list :tag  "IP address range"
-                             (const :format "" :value range)
-                             (string :tag "From")
-                             (string :tag "To"))
-                       (list :tag  "IP address/netmask"
-                             (const :format "" :value netmask)
-                             (string :tag "IP Address")
-                             (string :tag "Netmask"))
-                       (list :tag  "Domain Name"
-                             (const :format "" :value domain)
-                             (string :tag "Domain name"))
-                       (list :tag  "Unique hostname/IP address"
-                             (const :format "" :value exact)
-                             (string :tag "Hostname/IP Address"))))))
-
-'(defun s5-servers-filter ()
-  (if socks-server-aliases
-      (mapcar (lambda (x) (list 'const :tag (car x) :value (car x))) 
s5-server-aliases)
-    '((const :tag "No aliases defined" :value nil))))
-
-'(defun s5-network-aliases-filter ()
-  (mapcar (lambda (x) (list 'const :tag (car x) :value (car x)))
-         socks-network-aliases))
-
-'(defcustom socks-redirection-rules
-   nil
-   "A list of redirection rules."
-   :group 'socks
-   :type '(repeat (list :format "%v"
-                       :value ("Anywhere" nil)
-                       (dynamic-choice :choice-function 
s5-network-aliases-filter
-                                       :tag "Destination network")
-                       (radio-button-choice
-                        :tag "Connection type"
-                        (const :tag "Direct connection" :value nil)
-                        (dynamic-choice :format "%t: %[%v%]"
-                                        :choice-function s5-servers-filter
-                                        :tag "Proxy chain via")))))
-
-(defcustom socks-server
-  (list "Default server" "socks" 1080 5)
-  ""
-  :group 'socks
-  :type '(list
-         (string :format "" :value "Default server")
-         (string :tag "Server")
-         (integer :tag "Port")
-         (radio-button-choice :tag "SOCKS Version"
-                              :format "%t: %v"
-                              (const :tag "SOCKS v4  " :format "%t" :value 4)
-                              (const :tag "SOCKS v5"   :format "%t" :value 
5))))
-  
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; Get down to the nitty gritty
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-(defconst socks-version 5)
-(defvar socks-debug nil)
-
-;; Common socks v5 commands
-(defconst socks-connect-command 1)
-(defconst socks-bind-command 2)
-(defconst socks-udp-associate-command 3)
-
-;; Miscellaneous other socks constants
-(defconst socks-authentication-null 0)
-(defconst socks-authentication-failure 255)
-
-;; Response codes
-(defconst socks-response-success               0)
-(defconst socks-response-general-failure       1)
-(defconst socks-response-access-denied         2)
-(defconst socks-response-network-unreachable   3)
-(defconst socks-response-host-unreachable      4)
-(defconst socks-response-connection-refused    5)
-(defconst socks-response-ttl-expired           6)
-(defconst socks-response-cmd-not-supported     7)
-(defconst socks-response-address-not-supported 8)
-
-(defvar socks-errors
-  '("Succeeded"
-    "General SOCKS server failure"
-    "Connection not allowed by ruleset"
-    "Network unreachable"
-    "Host unreachable"
-    "Connection refused"
-    "Time-to-live expired"
-    "Command not supported"
-    "Address type not supported"))
-
-;; The socks v5 address types
-(defconst socks-address-type-v4   1)
-(defconst socks-address-type-name 3)
-(defconst socks-address-type-v6   4)
-
-;; Base variables
-(defvar socks-timeout 5)
-(defvar socks-connections (make-hash-table :size 13))
-
-;; Miscellaneous stuff for authentication
-(defvar socks-authentication-methods nil)
-(defvar socks-username (user-login-name))
-(defvar socks-password nil)
-
-(defun socks-register-authentication-method (id desc callback)
-  (let ((old (assq id socks-authentication-methods)))
-    (if old
-       (setcdr old (cons desc callback))
-      (setq socks-authentication-methods
-           (cons (cons id (cons desc callback))
-                 socks-authentication-methods)))))
-
-(defun socks-unregister-authentication-method (id)
-  (let ((old (assq id socks-authentication-methods)))
-    (if old
-       (setq socks-authentication-methods
-             (delq old socks-authentication-methods)))))
-
-(socks-register-authentication-method 0 "No authentication" 'identity)
-
-(defun socks-build-auth-list ()
-  (let ((num 0)
-       (retval ""))
-    (mapcar
-     (function
-      (lambda (x)
-       (if (fboundp (cdr (cdr x)))
-           (setq retval (format "%s%c" retval (car x))
-                 num (1+ num)))))
-     (reverse socks-authentication-methods))
-    (format "%c%s" num retval)))
-
-(defconst socks-state-waiting-for-auth 0)
-(defconst socks-state-submethod-negotiation 1)
-(defconst socks-state-authenticated 2)
-(defconst socks-state-waiting 3)
-(defconst socks-state-connected 4)
-
-(defmacro socks-wait-for-state-change (proc htable cur-state)
-  (`
-   (while (and (= (gethash 'state (, htable)) (, cur-state))
-              (memq (process-status (, proc)) '(run open)))
-     (accept-process-output (, proc) socks-timeout))))
-
-(defun socks-filter (proc string)
-  (let ((info (gethash proc socks-connections))
-       state desired-len)
-    (or info (error "socks-filter called on non-SOCKS connection %S" proc))
-    (setq state (gethash 'state info))
-    (cond
-     ((= state socks-state-waiting-for-auth)
-      (puthash 'scratch (concat string (gethash 'scratch info)) info)
-      (setq string (gethash 'scratch info))
-      (if (< (length string) 2)
-         nil                           ; We need to spin some more
-       (puthash 'authtype (socks-char-int (aref string 1)) info)
-       (puthash 'scratch (substring string 2 nil) info)
-       (puthash 'state socks-state-submethod-negotiation info)))
-     ((= state socks-state-submethod-negotiation)
-      )
-     ((= state socks-state-authenticated)
-      )
-     ((= state socks-state-waiting)
-      (puthash 'scratch (concat string (gethash 'scratch info)) info)
-      (setq string (gethash 'scratch info))
-      (case (gethash 'server-protocol info)
-       (http
-        (if (not (string-match "\r\n\r\n" string))
-            nil                        ; Need to spin some more
-          (debug)
-          (puthash 'state socks-state-connected info)
-          (puthash 'reply 0 info)
-          (puthash 'response string info)))
-       (4
-        (if (< (length string) 2)
-            nil                        ; Can't know how much to read yet
-          (setq desired-len
-                (+ 4 ; address length
-                   2 ; port
-                   2 ; initial data
-                   ))
-          (if (< (length string) desired-len)
-              nil                      ; need to spin some more
-            (let ((response (socks-char-int (aref string 1))))
-              (if (= response 90)
-                  (setq response 0))
-              (puthash 'state socks-state-connected info)
-              (puthash 'reply response info)
-              (puthash 'response string info)))))
-       (5
-        (if (< (length string) 4)
-            nil
-          (setq desired-len
-                (+ 6                   ; Standard socks header
-                   (cond
-                    ((= (socks-char-int (aref string 3)) 
socks-address-type-v4) 4)
-                    ((= (socks-char-int (aref string 3)) 
socks-address-type-v6) 16)
-                    ((= (socks-char-int (aref string 3)) 
socks-address-type-name)
-                     (if (< (length string) 5)
-                         255
-                       (+ 1 (socks-char-int (aref string 4))))))))
-          (if (< (length string) desired-len)
-              nil                      ; Need to spin some more
-            (puthash 'state socks-state-connected info)
-            (puthash 'reply (socks-char-int (aref string 1)) info)
-            (puthash 'response string info))))))
-     ((= state socks-state-connected)
-      )
-     )
-    )
-  )
-
-(defun socks-open-connection (server-info)
-  (interactive)
-  (save-excursion
-    (let ((proc (socks-original-open-network-stream "socks"
-                                                   nil
-                                                   (nth 1 server-info)
-                                                   (nth 2 server-info)))
-         (info (make-hash-table :size 13))
-         (authtype nil))
-      
-      ;; Initialize process and info about the process
-      (set-process-filter proc 'socks-filter)
-      (process-kill-without-query proc)
-      (puthash proc info socks-connections)
-      (puthash 'state socks-state-waiting-for-auth info)
-      (puthash 'authtype socks-authentication-failure info)
-      (puthash 'server-protocol (nth 3 server-info) info)
-      (puthash 'server-name (nth 1 server-info) info)
-      (case (nth 3 server-info)
-       (http
-        ;; Don't really have to do any connection setup under http
-        nil)
-       (4
-        ;; Don't really have to do any connection setup under v4
-        nil)
-       (5
-        ;; Need to handle all the authentication crap under v5
-        ;; Send what we think we can handle for authentication types
-        (process-send-string proc (format "%c%s" socks-version
-                                          (socks-build-auth-list)))
-
-        ;; Basically just do a select() until we change states.
-        (socks-wait-for-state-change proc info socks-state-waiting-for-auth)
-        (setq authtype (gethash 'authtype info))
-        (cond
-         ((= authtype socks-authentication-null)
-          (and socks-debug (message "No authentication necessary")))
-         ((= authtype socks-authentication-failure)
-          (error "No acceptable authentication methods found."))
-         (t
-          (let* ((auth-type (gethash 'authtype info))
-                 (auth-handler (assoc auth-type socks-authentication-methods))
-                 (auth-func (and auth-handler (cdr (cdr auth-handler))))
-                 (auth-desc (and auth-handler (car (cdr auth-handler)))))
-            (set-process-filter proc nil)
-            (if (and auth-func (fboundp auth-func)
-                     (funcall auth-func proc))
-                nil                    ; We succeeded!
-              (delete-process proc)
-              (error "Failed to use auth method: %s (%d)"
-                     (or auth-desc "Unknown") auth-type))
-            )
-          )
-         )
-        (puthash 'state socks-state-authenticated info)
-        (set-process-filter proc 'socks-filter)))
-      proc)))
-
-(defun socks-send-command (proc command atype address port)
-  (let ((addr (cond
-              ((or (= atype socks-address-type-v4)
-                   (= atype socks-address-type-v6))
-               address)
-              ((= atype socks-address-type-name)
-               (format "%c%s" (length address) address))
-              (t
-               (error "Unkown address type: %d" atype))))
-       (info (gethash proc socks-connections))
-       request version)
-    (or info (error "socks-send-command called on non-SOCKS connection %S"
-                   proc))
-    (puthash 'state socks-state-waiting info)
-    (setq version (gethash 'server-protocol info))
-    (case version
-      (http
-       (setq request (format (eval-when-compile
-                              (concat
-                               "CONNECT %s:%d HTTP/1.0\r\n"
-                               "User-Agent: Emacs/SOCKS v1.0\r\n"
-                               "\r\n"))
-                            (case atype
-                              (socks-address-type-name address)
-                              (otherwise
-                               (error "Unsupported address type for HTTP: %d" 
atype)))
-                            port)))
-      (4
-       (setq request (format
-                     "%c%c%c%c%s%s%c"
-                     version           ; version
-                     command           ; command
-                     (lsh port -8)     ; port, high byte
-                     (- port (lsh (lsh port -8) 8)) ; port, low byte
-                     addr              ; address
-                     (user-full-name)  ; username
-                     0                 ; terminate username
-                     )))
-      (5
-       (setq request (format 
-                     "%c%c%c%c%s%c%c"
-                     version           ; version 
-                     command           ; command
-                     0                 ; reserved
-                     atype             ; address type
-                     addr              ; address
-                     (lsh port -8)     ; port, high byte
-                     (- port (lsh (lsh port -8) 8)) ; port, low byte
-                     )))
-      (otherwise
-       (error "Unknown protocol version: %d" version)))
-    (process-send-string proc request)
-    (socks-wait-for-state-change proc info socks-state-waiting)
-    (process-status proc)
-    (if (= (or (gethash 'reply info) 1) socks-response-success)
-       nil                             ; Sweet sweet success!
-      (delete-process proc)
-      (error "SOCKS: %s" (nth (or (gethash 'reply info) 1) socks-errors)))
-    proc))
-
-
-;; Replacement functions for open-network-stream, etc.
-(defvar socks-noproxy nil
-  "*List of regexps matching hosts that we should not socksify connections to")
-
-(defun socks-find-route (host service)
-  (let ((route socks-server)
-       (noproxy socks-noproxy))
-    (while noproxy
-      (if (eq ?! (aref (car noproxy) 0))
-         (if (string-match (substring (car noproxy) 1) host)
-             (setq noproxy nil))
-       (if (string-match (car noproxy) host)
-           (setq route nil
-                 noproxy nil)))
-      (setq noproxy (cdr noproxy)))
-    route))
-
-(defvar socks-override-functions nil
-  "*Whether to overwrite the open-network-stream function with the SOCKSified
-version.")
-
-(if (fboundp 'socks-original-open-network-stream)
-    nil                                        ; Do nothing, we've been here 
already
-  (defalias 'socks-original-open-network-stream
-       (symbol-function 'open-network-stream))
-  (if socks-override-functions
-      (defalias 'open-network-stream 'socks-open-network-stream)))
-
-(defvar socks-services-file "/etc/services")
-(defvar socks-tcp-services (make-hash-table :size 13 :test 'equal))
-(defvar socks-udp-services (make-hash-table :size 13 :test 'equal))
-
-(defun socks-parse-services ()
-  (if (not (and (file-exists-p socks-services-file)
-               (file-readable-p socks-services-file)))
-      (error "Could not find services file: %s" socks-services-file))
-  (save-excursion
-    (clrhash socks-tcp-services)
-    (clrhash socks-udp-services)
-    (set-buffer (get-buffer-create " *socks-tmp*"))
-    (erase-buffer)
-    (insert-file-contents socks-services-file)
-    ;; Nuke comments
-    (goto-char (point-min))
-    (while (re-search-forward "#.*" nil t)
-      (replace-match ""))
-    ;; Nuke empty lines
-    (goto-char (point-min))
-    (while (re-search-forward "^[ \t\n]+" nil t)
-      (replace-match ""))
-    ;; Now find all the lines
-    (goto-char (point-min))
-    (let (name port type)
-      (while (re-search-forward "^\\([^ \t]+\\)[ \t]+\\([0-9]+\\)/\\([a-z]+\\)"
-                               nil t)
-       (setq name (downcase (match-string 1))
-             port (string-to-int (match-string 2))
-             type (downcase (match-string 3)))
-       (puthash name port (if (equal type "udp")
-                              socks-udp-services
-                            socks-tcp-services))))))
-
-(defun socks-find-services-entry (service &optional udp)
-  "Return the port # associated with SERVICE"
-  (if (= (hash-table-count socks-tcp-services) 0)
-      (socks-parse-services))
-  (gethash (downcase service)
-             (if udp socks-udp-services socks-tcp-services)))
-
-(defun socks-open-network-stream (name buffer host service)
-  (let* ((route (socks-find-route host service))
-        proc info version atype)
-    (if (not route)
-       (socks-original-open-network-stream name buffer host service)
-      (setq proc (socks-open-connection route)
-           info (gethash proc socks-connections)
-           version (gethash 'server-protocol info))
-      (case version
-       (4
-        (setq host (socks-nslookup-host host))
-        (if (not (listp host))
-            (error "Could not get IP address for: %s" host))
-        (setq host (apply 'format "%c%c%c%c" host))
-        (setq atype socks-address-type-v4))
-       (otherwise
-        (setq atype socks-address-type-name)))
-      (socks-send-command proc
-                         socks-connect-command
-                         atype
-                         host
-                         (if (stringp service)
-                             (socks-find-services-entry service)
-                           service))
-      (puthash 'buffer buffer info)
-      (puthash 'host host info)
-      (puthash 'service host info)
-      (set-process-filter proc nil)
-      (set-process-buffer proc (if buffer (get-buffer-create buffer)))
-      proc)))
-
-;; Authentication modules go here
-
-;; Basic username/password authentication, ala RFC 1929
-(socks-register-authentication-method 2 "Username/Password"
-                                     'socks-username/password-auth)
-
-(defconst socks-username/password-auth-version 1)
-
-(defun socks-username/password-auth-filter (proc str)
-  (let ((info (gethash proc socks-connections))
-       state desired-len)
-    (or info (error "socks-filter called on non-SOCKS connection %S" proc))
-    (setq state (gethash 'state info))
-    (puthash 'scratch (concat (gethash 'scratch info) str) info)
-    (if (< (length (gethash 'scratch info)) 2)
-       nil
-      (puthash 'password-auth-status (socks-char-int
-                                        (aref (gethash 'scratch info) 1))
-                 info)
-      (puthash 'state socks-state-authenticated info))))
-
-(defun socks-username/password-auth (proc)
-  (let* ((info (gethash proc socks-connections))
-        (state (gethash 'state info)))
-    (if (not socks-password)
-       (setq socks-password (read-passwd
-                             (format "Password for address@hidden: "
-                                     socks-username
-                                     (gethash 'server-name info)))))
-    (puthash 'scratch "" info)
-    (set-process-filter proc 'socks-username/password-auth-filter)
-    (process-send-string proc
-                        (format "%c%c%s%c%s"
-                                socks-username/password-auth-version
-                                (length socks-username)
-                                socks-username
-                                (length socks-password)
-                                socks-password))
-    (socks-wait-for-state-change proc info state)
-    (= (gethash 'password-auth-status info) 0)))
-
-
-;; More advanced GSS/API stuff, not yet implemented - volunteers?
-;; (socks-register-authentication-method 1 "GSS/API" 'socks-gssapi-auth)
-
-(defun socks-gssapi-auth (proc)
-  nil)
-
-
-;; CHAP stuff
-;; (socks-register-authentication-method 3 "CHAP" 'socks-chap-auth)
-(defun socks-chap-auth (proc)
-  nil)
-
-
-;; CRAM stuff
-;; (socks-register-authentication-method 5 "CRAM" 'socks-cram-auth)
-(defun socks-cram-auth (proc)
-  nil)
-
-
-(defcustom socks-nslookup-program "nslookup"
-  "*If non-NIL then a string naming the nslookup program."
-  :type '(choice (const :tag "None" :value nil) string)
-  :group 'socks)
-
-(defun socks-nslookup-host (host)
-  "Attempt to resolve the given HOSTNAME using nslookup if possible."
-  (interactive "sHost:  ")
-  (if socks-nslookup-program
-      (let ((proc (start-process " *nslookup*" " *nslookup*"
-                                socks-nslookup-program host))
-           (res host))
-       (process-kill-without-query proc)
-       (save-excursion
-         (set-buffer (process-buffer proc))
-         (while (progn
-                  (accept-process-output proc)
-                  (memq (process-status proc) '(run open))))
-         (goto-char (point-min))
-         (if (re-search-forward "Name:.*\nAddress\\(es\\)?: *\\([0-9.]+\\)$" 
nil t)
-             (progn
-               (setq res (buffer-substring (match-beginning 2)
-                                           (match-end 2))
-                     res (mapcar 'string-to-int (split-string res "\\.")))))
-         (kill-buffer (current-buffer)))
-       res)
-    host))
-
-(provide 'socks)
diff --git a/lisp/ssl.el b/lisp/ssl.el
index 1e4f78d..67e2f75 100644
--- a/lisp/ssl.el
+++ b/lisp/ssl.el
@@ -4,8 +4,8 @@
 ;; Keywords: comm
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; Copyright (c) 1996, 97, 98, 99, 2001, 2008 Free Software Foundation, Inc.
 ;;; Copyright (c) 1995, 1996 by William M. Perry <address@hidden>
-;;; Copyright (c) 1996, 97, 98, 99, 2001 Free Software Foundation, Inc.
 ;;;
 ;;; This file is part of GNU Emacs.
 ;;;
@@ -26,7 +26,6 @@
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
 (eval-when-compile (require 'cl))
-(require 'base64)
 (require 'url)                         ; for `url-configuration-directory'
 
 (defgroup ssl nil

commit 5f6be6d1bb44a1dfc3215b47dd6eb09d359652a1
Author: Magnus Henoch <address@hidden>
Date:   Sat Mar 1 19:55:32 2008 +0100

    lisp/url-vars.el: Remove.  Emacs already has it.

diff --git a/ChangeLog b/ChangeLog
index 605b609..957e4fa 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2008-03-01  Magnus Henoch  <address@hidden>
+
+       * lisp/url-vars.el: Remove.  Emacs already has it.
+
 2008-02-04  Magnus Henoch  <address@hidden>
 
        * lisp/font.el (font-x-font-regexp-foundry-and-family): Add from
diff --git a/lisp/url-vars.el b/lisp/url-vars.el
deleted file mode 100644
index 70e12de..0000000
--- a/lisp/url-vars.el
+++ /dev/null
@@ -1,612 +0,0 @@
-;;; url-vars.el --- Variables for Uniform Resource Locator tool
-;; Author: $Author: wmperry $
-;; Created: $Date: 1999/12/05 08:35:58 $
-;; Version: $Revision: 1.4 $
-;; Keywords: comm, data, processes, hypermedia
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; Copyright (c) 1993 - 1996 by William M. Perry <address@hidden>
-;;; Copyright (c) 1996 - 1999 Free Software Foundation, Inc.
-;;;
-;;; This file is part of GNU Emacs.
-;;;
-;;; GNU Emacs is free software; you can redistribute it and/or modify
-;;; it under the terms of the GNU General Public License as published by
-;;; the Free Software Foundation; either version 2, or (at your option)
-;;; any later version.
-;;;
-;;; GNU Emacs is distributed in the hope that it will be useful,
-;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;;; GNU General Public License for more details.
-;;;
-;;; You should have received a copy of the GNU General Public License
-;;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;;; Boston, MA 02111-1307, USA.
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-(eval-and-compile
-  (condition-case ()
-      (require 'custom)
-    (error nil))
-  (if (and (featurep 'custom) (fboundp 'custom-declare-variable))
-      nil ;; We've got what we needed
-    ;; We have the old custom-library, hack around it!
-    (defmacro defgroup (&rest args)
-      nil)
-    (defmacro defcustom (var value doc &rest args) 
-      (` (defvar (, var) (, value) (, doc))))))
-
-(defconst url-version (let ((x "$State: p4.0pre.47 $"))
-                       (if (string-match "State: \\([^ \t\n]+\\)" x)
-                           (substring x (match-beginning 1) (match-end 1))
-                         x))
-  "Version # of URL package.")
-
-(defgroup url nil
-  "Uniform Resource Locator tool"
-  :group 'hypermedia)
-
-(defgroup url-file nil
-  "URL storage"
-  :prefix "url-"
-  :group 'url)
-
-(defgroup url-cache nil
-  "URL cache"
-  :prefix "url-"
-  :prefix "url-cache-"
-  :group 'url)
-
-(defgroup url-history nil
-  "History variables in the URL package"
-  :prefix "url-"
-  :group 'url)
-
-(defgroup url-cookie nil
-  "URL cookies"
-  :prefix "url-"
-  :prefix "url-cookie-"
-  :group 'url)
-
-(defgroup url-mime nil
-  "MIME options of URL"
-  :prefix "url-"
-  :group 'url)
-
-(defgroup url-hairy nil
-  "Hairy options of URL"
-  :prefix "url-"
-  :group 'url)
-
-
-(defvar url-current-can-be-cached t
-  "*Whether the current URL can be cached.")
-
-(defvar url-current-object nil
-  "A parsed representation of the current url")
-
-(defvar url-current-callback-func nil
-  "*The callback function for the current buffer.")
-
-(defvar url-current-callback-data nil
-  "*The data to be passed to the callback function.  This should be a list,
-each item in the list will be an argument to the url-current-callback-func.")
-
-(mapcar 'make-variable-buffer-local '(
-                                     url-current-callback-data
-                                     url-current-callback-func
-                                     url-current-can-be-cached
-                                     url-current-content-length
-                                     url-current-isindex
-                                     url-current-mime-encoding
-                                     url-current-mime-headers
-                                     url-current-mime-type
-                                     url-current-mime-charset
-                                     url-current-mime-viewer
-                                     url-current-object
-                                     url-current-referer
-
-                                     ;; obsolete
-                                     ;; url-current-file
-                                     ;; url-current-port
-                                     ;; url-current-server
-                                     ;; url-current-type
-                                     ;; url-current-user
-                                     ))
-
-(defvar url-cookie-storage nil         "Where cookies are stored.")
-(defvar url-cookie-secure-storage nil  "Where secure cookies are stored.")
-(defcustom url-cookie-file nil            "*Where cookies are stored on disk."
-  :type '(choice (const :tag "Default" :value nil) file)
-  :group 'url-file
-  :group 'url-cookie)
-
-(defcustom url-default-retrieval-proc 'url-default-callback
-  "*The default action to take when an asynchronous retrieval completes."
-  :type 'function
-  :group 'url-hairy)
-
-(defcustom url-honor-refresh-requests t
-  "*Whether to do automatic page reloads at the request of the document
-author or the server via the `Refresh' header in an HTTP/1.0 response.
-If nil, no refresh requests will be honored.
-If t, all refresh requests will be honored.
-If non-nil and not t, the user will be asked for each refresh request."
-  :type '(choice (const :tag "off" nil)
-                (const :tag "on" t)
-                (const :tag "ask" 'ask))
-  :group 'url-hairy)
-
-(defcustom url-inhibit-mime-parsing nil
-  "Whether to parse out (and delete) the MIME headers from a message."
-  :type 'boolean
-  :group 'url-mime)
-
-(defcustom url-automatic-caching nil
-  "*If non-nil, all documents will be automatically cached to the local
-disk."
-  :type 'boolean
-  :group 'url-cache)
-
-(defcustom url-cache-expired
-  (function (lambda (t1 t2) (>= (- (car t2) (car t1)) 5)))
-  "*A function (`funcall'able) that takes two times as its arguments, and
-returns non-nil if the second time is 'too old' when compared to the first
-time."
-  :type 'function
-  :group 'url-cache)
-
-(defvar url-bug-address "address@hidden"
-  "Where to send bug reports.")
-
-(defcustom url-cookie-confirmation nil
-  "*If non-nil, confirmation by the user is required to accept HTTP cookies."
-  :type 'boolean
-  :group 'url-cookie)
-
-(defcustom url-personal-mail-address nil
-  "*Your full email address.
-This is what is sent to HTTP/1.0 servers as the FROM field in an HTTP/1.0
-request."
-  :type '(choice (const nil) string)
-  :group 'url)
-
-(defcustom url-directory-index-file "index.html"
-  "*The filename to look for when indexing a directory.
-If this file exists, and is readable, then it will be viewed instead of
-using `dired' to view the directory."
-  :type 'string
-  :group 'url-file)
-
-(defcustom url-privacy-level '(email)
-  "*How private you want your requests to be.
-HTTP/1.0 has header fields for various information about the user, including
-operating system information, email addresses, the last page you visited, etc.
-This variable controls how much of this information is sent.
-
-This should a symbol or a list.
-Valid values if a symbol are:
-none     -- Send all information
-low      -- Don't send the last location
-high     -- Don't send the email address or last location
-paranoid -- Don't send anything
-
-If a list, this should be a list of symbols of what NOT to send.
-Valid symbols are:
-email    -- the email address
-os       -- the operating system info
-lastloc  -- the last location
-agent    -- Do not send the User-Agent string
-cookie   -- never accept HTTP cookies
-
-Samples:
-
- (setq url-privacy-level 'high)
- (setq url-privacy-level '(email lastloc))    ;; equivalent to 'high
- (setq url-privacy-level '(os))
-
-::NOTE::
-This variable controls several other variables and is _NOT_ automatically
-updated.  Call the function `url-setup-privacy-info' after modifying this
-variable."
-  :type '(radio (const :tag "None (you believe in the basic goodness of 
humanity)"
-                      :value none)
-               (const :tag "Low (do not reveal last location)"
-                      :value low)
-               (const :tag "High (no email address or last location)"
-                      :value high)
-               (const :tag "Paranoid (reveal nothing!)"
-                      :value paranoid)
-               (checklist :tag "Custom"
-                          (const :tag "Email address" :value email)
-                          (const :tag "Operating system" :value os)
-                          (const :tag "Last location" :value lastloc)
-                          (const :tag "Browser identification" :value agent)
-                          (const :tag "No cookies" :value cookie)))
-  :group 'url)
-
-(defvar url-history-list nil "List of urls visited this session.")
-
-(defvar url-inhibit-uncompression nil "Do not do decompression if non-nil.")
-
-(defcustom url-keep-history nil
-  "*Controls whether to keep a list of all the URLS being visited.
-If non-nil, url will keep track of all the URLS visited.
-If eq to `t', then the list is saved to disk at the end of each emacs
-session."
-  :type 'boolean
-  :group 'url-history)
-
-(defcustom url-uncompressor-alist '((".z"  . "x-gzip")
-                                   (".gz" . "x-gzip")
-                                   (".uue" . "x-uuencoded")
-                                   (".hqx" . "x-hqx")
-                                   (".Z"  . "x-compress"))
-  "*An assoc list of file extensions and the appropriate
-content-transfer-encodings for each."
-  :type '(repeat (cons :format "%v"
-                      (string :tag "Extension")
-                      (string :tag "Encoding")))
-  :group 'url-mime)
-
-(defcustom url-mail-command 'url-mail
-  "*This function will be called whenever url needs to send mail.
-It should enter a mail-mode-like buffer in the current window.
-The commands mail-to and mail-subject should still work in this
-buffer, and it should use mail-header-separator if possible."
-  :type 'function
-  :group 'url)
-
-(defcustom url-proxy-services nil
-  "*An assoc list of access types and servers that gateway them.
-Looks like ((\"http\" . \"hostname:portnumber\") ....)  This is set up
-from the ACCESS_proxy environment variables in url-do-setup."
-  :type '(repeat (cons :format "%v"
-                      (string :tag "Protocol")
-                      (string :tag "Proxy")))
-  :group 'url)
-
-(defcustom url-global-history-file nil
-  "*The global history file used by both Mosaic/X and the url package.
-This file contains a list of all the URLs you have visited.  This file
-is parsed at startup and used to provide URL completion."
-  :type '(choice (const :tag "Default" :value nil) file)
-  :group 'url-history)
-
-(defcustom url-global-history-save-interval 3600
-  "*The number of seconds between automatic saves of the history list.
-Default is 1 hour.  Note that if you change this variable outside of
-the `customize' interface after `url-do-setup' has been run, you need
-to run the `url-setup-save-timer' function manually."
-  :set (function (lambda (var val)
-                  (set-default var val)
-                  (and (featurep 'url)
-                       (fboundp 'url-setup-save-timer)
-                       (url-setup-save-timer))))
-  :type 'integer
-  :group 'url-history)
-
-(defvar url-global-history-timer nil)
-
-(defcustom url-passwd-entry-func nil
-  "*This is a symbol indicating which function to call to read in a
-password.  It will be set up depending on whether you are running EFS
-or ange-ftp at startup if it is nil.  This function should accept the
-prompt string as its first argument, and the default value as its
-second argument."
-  :type '(choice (const :tag "Guess" :value nil)
-                (const :tag "Use Ange-FTP" :value ange-ftp-read-passwd)
-                (const :tag "Use EFS"      :value efs-read-passwd)
-                (const :tag "Use Password Package" :value read-passwd)
-                (function :tag "Other"))
-  :group 'url-hairy)
-
-(defcustom url-gopher-labels
-  '(("0" . "(TXT)")
-    ("1" . "(DIR)")
-    ("2" . "(CSO)")
-    ("3" . "(ERR)")
-    ("4" . "(MAC)")
-    ("5" . "(PCB)")
-    ("6" . "(UUX)")
-    ("7" . "(???)")
-    ("8" . "(TEL)")
-    ("T" . "(TN3)")
-    ("9" . "(BIN)")
-    ("g" . "(GIF)")
-    ("I" . "(IMG)")
-    ("h" . "(WWW)")
-    ("s" . "(SND)"))
-  "*An assoc list of gopher types and how to describe them in the gopher
-menus.  These can be any string, but HTML/HTML+ entities should be
-used when necessary, or it could disrupt formatting of the document
-later on.  It is also a good idea to make sure all the strings are the
-same length after entity references are removed, on a strictly
-stylistic level."
-  :type '(repeat (cons (string :tag "Type")
-                      (string :tag "Description")))
-  :group 'url-hairy)
-
-(defcustom url-gopher-icons
-  '(
-    ("0" . "&text.document;")
-    ("1" . "&folder;")
-    ("2" . "&index;")
-    ("3" . "&stop;")
-    ("4" . "&binhex.document;")
-    ("5" . "&binhex.document;")
-    ("6" . "&uuencoded.document;")
-    ("7" . "&index;")
-    ("8" . "&telnet;")
-    ("T" . "&tn3270;")
-    ("9" . "&binary.document;")
-    ("g" . "&image;")
-    ("I" . "&image;")
-    ("s" . "&audio;"))
-  "*An assoc list of gopher types and the graphic entity references to
-show when possible."
-  :type '(repeat (cons (string :tag "Type")
-                      (string :tag "Icon")))
-  :group 'url-hairy)
-
-(defcustom url-standalone-mode nil "*Rely solely on the cache?"
-  :type 'boolean
-  :group 'url-cache)
-(defcustom url-multiple-p t
-  "*If non-nil, multiple queries are possible through ` *URL-<i>*' buffers"
-  :type 'boolean
-  :group 'url-hairy)
-(defvar url-default-working-buffer " *URL*" " The default buffer to do all of 
the processing in.")
-(defvar url-working-buffer url-default-working-buffer
-  "The buffer to do all of the processing in.
-It defaults to `url-default-working-buffer' and is bound to *URL-<i>*
-buffers when used for multiple requests, cf. `url-multiple-p'")
-(defvar url-current-referer nil "Referer of this page.")
-(defvar url-current-content-length nil "Current content length.")
-(defvar url-current-isindex nil "Is the current document a searchable index?")
-(defvar url-current-mime-encoding nil "MIME encoding of current document.")
-(defvar url-current-mime-headers nil "An alist of MIME headers.")
-(defvar url-current-mime-type nil "MIME type of current document.")
-(defvar url-current-mime-charset nil "MIME charset of current document.")
-(defvar url-current-mime-viewer nil "How to view the current MIME doc.")
-(defvar url-current-passwd-count 0 "How many times password has failed.")
-(defvar url-gopher-types "0123456789+gIThws:;<"
-  "A string containing character representations of all the gopher types.")
-(defvar url-mime-separator-chars (mapcar 'identity
-                                       (concat "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
-                                               "abcdefghijklmnopqrstuvwxyz"
-                                               "0123456789'()+_,-./=?"))
-  "Characters allowable in a MIME multipart separator.")
-
-(defcustom url-bad-port-list
-  '("25" "119" "19")
-  "*List of ports to warn the user about connecting to.  Defaults to just
-the mail, chargen, and NNTP ports so you cannot be tricked into sending
-fake mail or forging messages by a malicious HTML document."
-  :type '(repeat (string :tag "Port"))
-  :group 'url-hairy)
-
-(defcustom url-be-anal-about-file-attributes nil
-  "*Whether to use HTTP/1.0 to figure out file attributes
-or just guess based on file extension, etc."
-  :type 'boolean
-  :group 'url-mime)
-
-(defcustom url-be-asynchronous nil
-  "*Controls whether document retrievals over HTTP should be done in
-the background.  This allows you to keep working in other windows
-while large downloads occur."
-  :type 'boolean
-  :group 'url)
-(make-variable-buffer-local 'url-be-asynchronous)
-
-(defvar url-mime-content-type-charset-regexp
-  ";[ \t]*charset=\"?\\([^\"]+\\)\"?"
-  "Regexp used in parsing `Content-Type' for a charset indication")
-
-(defvar url-request-data nil "Any data to send with the next request.")
-
-(defvar url-request-extra-headers nil
-  "A list of extra headers to send with the next request.  Should be
-an assoc list of headers/contents.")
-
-(defvar url-request-method nil "The method to use for the next request.")
-
-(defvar url-mime-encoding-string nil
-  "*String to send to the server in the Accept-encoding: field in HTTP/1.0
-requests.  This is created automatically from mm-content-transfer-encodings.")
-
-(defcustom url-mime-language-string nil
-  "*String to send to the server in the Accept-language: field in
-HTTP/1.0 requests."
-  :type '(radio
-         (const :tag "None (get default language version)" :value nil)
-         (const :tag "Any (get first available language version)" :value "*")
-         (string :tag "Other"))
-  :group 'url-mime
-  :group 'i18n)
-
-(defvar url-mime-accept-string nil
-  "String to send to the server in the Accept: field in HTTP/1.0 requests.
-This is created automatically from url-mime-viewers, after the mailcap file
-has been parsed.")
-
-(defvar url-history-changed-since-last-save nil
-  "Whether the history list has changed since the last save operation.")
-
-(defvar url-cookies-changed-since-last-save nil
-  "Whether the cookies list has changed since the last save operation.")
-
-(defvar url-proxy-basic-authentication nil
-  "Internal structure - do not modify!")
-  
-(defvar url-registered-protocols nil
-  "Internal structure - do not modify!  See `url-register-protocol'")
-
-(defvar url-package-version "Unknown" "Version # of package using URL.")
-
-(defvar url-package-name "Unknown" "Version # of package using URL.")
-
-(defvar url-system-type nil "What type of system we are on.")
-(defvar url-os-type nil "What OS we are on.")
-
-(defcustom url-max-password-attempts 5
-  "*Maximum number of times a password will be prompted for when a
-protected document is denied by the server."
-  :type 'integer
-  :group 'url)
-
-(defcustom url-temporary-directory (or (getenv "TMPDIR") "/tmp")
-  "*Where temporary files go."
-  :type 'directory
-  :group 'url-file)
-
-(defcustom url-show-status t
-  "*Whether to show a running total of bytes transferred.  Can cause a
-large hit if using a remote X display over a slow link, or a terminal
-with a slow modem."
-  :type 'boolean
-  :group 'url)
-
-(defvar url-using-proxy nil
-  "Either nil or the fully qualified proxy URL in use, e.g.
-http://www.domain.com/";)
-
-(defcustom url-news-server nil
-  "*The default news server to get newsgroups/articles from if no server
-is specified in the URL.  Defaults to the environment variable NNTPSERVER
-or \"news\" if NNTPSERVER is undefined."
-  :type '(choice (const :tag "None" :value nil) string)
-  :group 'url)
-
-(defcustom url-gopher-to-mime
-  '((?0 . "text/plain")                        ; It's a file
-    (?1 . "www/gopher")                        ; Gopher directory
-    (?2 . "www/gopher-cso-search")     ; CSO search
-    (?3 . "text/plain")                        ; Error
-    (?4 . "application/mac-binhex40")  ; Binhexed macintosh file
-    (?5 . "application/pc-binhex40")   ; DOS binary archive of some sort
-    (?6 . "archive/x-uuencode")                ; Unix uuencoded file
-    (?7 . "www/gopher-search")         ; Gopher search!
-    (?9 . "application/octet-stream")  ; Binary file!
-    (?g . "image/gif")                 ; Gif file
-    (?I . "image/gif")                 ; Some sort of image
-    (?h . "text/html")                 ; HTML source
-    (?s . "audio/basic")               ; Sound file
-    )
-  "*An assoc list of gopher types and their corresponding MIME types."
-  :type '(repeat (cons sexp string))
-  :group 'url-hairy)
-
-(defcustom url-use-hypertext-gopher t
-  "*Controls how gopher documents are retrieved.
-If non-nil, the gopher pages will be converted into HTML and parsed
-just like any other page.  If nil, the requests will be passed off to
-the gopher.el package by Scott Snyder.  Using the gopher.el package
-will lose the gopher+ support, and inlined searching."
-  :type 'boolean
-  :group 'url)
-
-(defvar url-global-history-hash-table nil
-  "Hash table for global history completion.")
-
-(defvar url-nonrelative-link
-  "^\\([-a-zA-Z0-9+.]+:\\)"
-  "A regular expression that will match an absolute URL.")
-
-(defcustom url-confirmation-func 'y-or-n-p
-  "*What function to use for asking yes or no functions.  Possible
-values are 'yes-or-no-p or 'y-or-n-p, or any function that takes a
-single argument (the prompt), and returns t only if a positive answer
-is gotten."
-  :type '(choice (const :tag "Short (y or n)" :value y-or-n-p)
-                (const :tag "Long (yes or no)" :value yes-or-no-p)
-                (function :tag "Other"))
-  :group 'url-hairy)
-
-(defcustom url-gateway-method 'native
-  "*The type of gateway support to use.
-Should be a symbol specifying how we are to get a connection off of the
-local machine.
-
-Currently supported methods:
-'telnet        :: Run telnet in a subprocess to connect
-'rlogin         :: Rlogin to another machine to connect
-'socks          :: Connects through a socks server
-'ssl            :: Connection should be made with SSL
-'tcp            :: Use the excellent tcp.el package from gnus.
-                   This simply does a (require 'tcp), then sets
-                   url-gateway-method to be 'native.
-'native                :: Use the native open-network-stream in emacs
-"
-  :type '(radio (const :tag "Telnet to gateway host" :value telnet)
-               (const :tag "Rlogin to gateway host" :value rlogin)
-               (const :tag "Use SOCKS proxy" :value socks)
-               (const :tag "Use SSL for all connections" :value ssl)
-               (const :tag "Use the `tcp' package" :value tcp)
-               (const :tag "Direct connection" :value native))
-  :group 'url-hairy)
-
-(defvar url-running-xemacs (string-match "XEmacs" emacs-version)
-  "*Got XEmacs?")
-
-(defvar url-default-ports '(("http"   .  "80")
-                           ("gopher" .  "70")
-                           ("telnet" .  "23")
-                           ("news"   . "119")
-                           ("https"  . "443")
-                           ("shttp"  .  "80"))
-  "An assoc list of protocols and default port #s")
-
-(defvar url-setup-done nil "*Has setup configuration been done?")
-
-(defvar url-source nil
-  "*Whether to force a sourcing of the next buffer.  This forces local
-files to be read into a buffer, no matter what.  Gets around the
-optimization that if you are passing it to a viewer, just make a
-symbolic link, which looses if you want the source for inlined
-images/etc.")
-
-(defconst weekday-alist
-  '(("Sunday" . 0) ("Monday" . 1) ("Tuesday" . 2) ("Wednesday" . 3)
-    ("Thursday" . 4) ("Friday" . 5) ("Saturday" . 6)
-    ("Tues" . 2) ("Thurs" . 4)
-    ("Sun" . 0) ("Mon" . 1) ("Tue" . 2) ("Wed" . 3)
-    ("Thu" . 4) ("Fri" . 5) ("Sat" . 6)))
-
-(defconst monthabbrev-alist
-  '(("Jan" . 1) ("Feb" . 2) ("Mar" . 3) ("Apr" . 4) ("May" . 5) ("Jun" . 6)
-    ("Jul" . 7) ("Aug" . 8) ("Sep" . 9) ("Oct" . 10) ("Nov" . 11) ("Dec" . 12))
-  )
-
-(defvar url-lazy-message-time 0)
-
-(defvar url-extensions-header "Security/Digest Security/SSL")
-
-(defvar url-mailserver-syntax-table
-  (copy-syntax-table emacs-lisp-mode-syntax-table)
-  "*A syntax table for parsing the mailserver URL")
-
-(modify-syntax-entry ?' "\"" url-mailserver-syntax-table)
-(modify-syntax-entry ?` "\"" url-mailserver-syntax-table)
-(modify-syntax-entry ?< "(>" url-mailserver-syntax-table)
-(modify-syntax-entry ?> ")<" url-mailserver-syntax-table)
-(modify-syntax-entry ?/ " " url-mailserver-syntax-table)
-
-(defvar url-handle-no-scheme-hook nil
-  "*Hooks to be run until one can successfully transform an incomplete URL.
-
-Each hook is called with a single argument URL and should return a tranformed
-url with a valid scheme (e.g., \"gnu\" --> \"http://www.gnu.org/\";), or nil
-otherwise.")
-
-(defvar url-load-hook nil
-  "*Hooks to be run after initalizing the URL library.")
-
-;;; Make OS/2 happy - yeeks
-(defvar        tcp-binary-process-input-services nil
-  "*Make OS/2 happy with our CRLF pairs...")
-
-(provide 'url-vars)

commit 1c703f81416b849db5a49d6647c84dc8466e9b00
Author: Magnus Henoch <address@hidden>
Date:   Mon Feb 4 06:29:13 2008 +0000

    2008-02-04  Magnus Henoch  <address@hidden>
    
        * lisp/font.el (font-x-font-regexp-foundry-and-family): Add from
        last version of w3-sysdp.
        (x-font-create-object): Use it instead of
        x-font-regexp-foundry-and-family.

diff --git a/ChangeLog b/ChangeLog
index 21a065c..605b609 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
 2008-02-04  Magnus Henoch  <address@hidden>
 
+       * lisp/font.el (font-x-font-regexp-foundry-and-family): Add from
+       last version of w3-sysdp.
+       (x-font-create-object): Use it instead of
+       x-font-regexp-foundry-and-family.
+
        * lisp/Makefile.in (EXTRAS): Remove w3-sysdp.el.
        (W3_SOURCES): Add w3-compat.el.
 
diff --git a/lisp/font.el b/lisp/font.el
index 6f5481d..08df0b1 100644
--- a/lisp/font.el
+++ b/lisp/font.el
@@ -2,7 +2,7 @@
 
 ;; Author: wmperry
 ;; Maintainer: Bill Perry <address@hidden>
-;; Created: $Date: 2006/12/15 14:40:54 $
+;; Created: $Date: 2008/02/04 06:29:13 $
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;; Copyright (c) 1995, 1996 by William M. Perry <address@hidden>
@@ -448,6 +448,13 @@ These are for use in the `weight' field of an X font 
string.")
           registry - encoding "\\'"
           ))))
 
+(defvar font-x-font-regexp-foundry-and-family
+  (let ((-             "[-?]")
+       (foundry                "[^-]+")
+       (family                 "[^-]+")
+       )
+    (concat "\\`[-?*]" foundry - "\\(" family "\\)" -)))
+
 (defvar font-x-registry-and-encoding-regexp
   (or (and (featurep 'xemacs)
           (boundp 'x-font-regexp-registry-and-encoding)
@@ -506,7 +513,7 @@ These are for use in the `weight' field of an X font 
string.")
            (retval nil)
            (case-fold-search t)
            )
-       (if (not (string-match x-font-regexp-foundry-and-family fontname))
+       (if (not (string-match font-x-font-regexp-foundry-and-family fontname))
            nil
          (setq family (list (downcase (match-string 1 fontname)))))
        (if (string= "*" weight)  (setq weight  nil))

commit 1051911b55844bf6dbe62eb1917492e7fc9ae35a
Author: Magnus Henoch <address@hidden>
Date:   Mon Feb 4 06:12:39 2008 +0000

    2008-02-04  Magnus Henoch  <address@hidden>
    
        * lisp/Makefile.in (EXTRAS): Remove w3-sysdp.el.
        (W3_SOURCES): Add w3-compat.el.

diff --git a/ChangeLog b/ChangeLog
index a994b6f..21a065c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2008-02-04  Magnus Henoch  <address@hidden>
+
+       * lisp/Makefile.in (EXTRAS): Remove w3-sysdp.el.
+       (W3_SOURCES): Add w3-compat.el.
+
 2007-12-09  Magnus Henoch  <address@hidden>
 
        * lisp/w3-compat.el (w3-url-file-nondirectory): Fix thinko: alias
@@ -439,7 +444,7 @@
 2001-05-31  Dave Love  <address@hidden>
 
        * lisp/w3-menu.el (w3-menu-file-menu): Fix
-       "---:shadowDoubleEtchedIn".  From Pavel Janík.
+       "---:shadowDoubleEtchedIn".  From Pavel Janík.
 
        * lisp/w3-parse.el (decode-char): Define with older Mule-UCS.
        (w3-expand-entity-at-point-maybe): Sanitize regexp for numeric
@@ -489,7 +494,7 @@
        to work around a byte-optimizer bug in Emacs 21 that caused this
        module to fail to byte-compile.
 
-2001-05-24  Pavel Janík <address@hidden>
+2001-05-24  Pavel Janík <address@hidden>
 
        * lisp/w3-display.el (w3-resurrect-hyperlinks): Look for next
        single property change from `st' instead of `nd' to avoid
diff --git a/lisp/Makefile.in b/lisp/Makefile.in
index beffe31..ff20595 100644
--- a/lisp/Makefile.in
+++ b/lisp/Makefile.in
@@ -26,6 +26,7 @@ W3_SOURCES =                                                  
        \
        css.el                                                          \
        url-hotlist.el                                                  \
        w3-cfg.el                                                       \
+       w3-compat.el                                                    \
        w3-cus.el                                                       \
        w3-dired.el                                                     \
        w3-display.el                                                   \
@@ -68,7 +69,7 @@ ALLSOURCES = $(W3_SOURCES) $(UTIL_SOURCES) $(AUTO_SOURCES)
 ALLOBJECTS = $(W3_OBJECTS) $(UTIL_OBJECTS) $(AUTO_OBJECTS)
 
 # Warning!  Currently, the following file can _NOT_ be bytecompiled.
-EXTRAS = w3-sysdp.el docomp.el
+EXTRAS = docomp.el
 
 .SUFFIXES: .elc .el
 

commit fa8480fca0e318695ebbe89d5b7dab3b3dad7af9
Author: Magnus Henoch <address@hidden>
Date:   Sun Dec 9 22:21:17 2007 +0000

    *** empty log message ***

diff --git a/ChangeLog b/ChangeLog
index 5a22993..a994b6f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2007-12-09  Magnus Henoch  <address@hidden>
+
+       * lisp/w3-compat.el (w3-url-file-nondirectory): Fix thinko: alias
+       to url-file-nondirectory, not url-file-directory.
+
 2007-11-16  Magnus Henoch  <address@hidden>
 
        * lisp/w3-compat.el (w3-alist-to-plist): Define.

commit 79795b17b83c2a99c391c1d0c6b052b9936a723e
Author: Magnus Henoch <address@hidden>
Date:   Sun Dec 9 22:21:04 2007 +0000

    (w3-url-file-nondirectory): Fix thinko: alias to url-file-nondirectory, not 
url-file-directory.

diff --git a/lisp/w3-compat.el b/lisp/w3-compat.el
index 422d430..1d75aa9 100644
--- a/lisp/w3-compat.el
+++ b/lisp/w3-compat.el
@@ -34,7 +34,7 @@
 ;; `url-file-nondirectory' post Emacs 22.
 (cond
  ((fboundp 'url-file-nondirectory)
-  (defalias 'w3-url-file-nondirectory 'url-file-directory))
+  (defalias 'w3-url-file-nondirectory 'url-file-nondirectory))
  ((fboundp 'url-basepath)
   (defsubst w3-url-file-nondirectory (file)
     "Return the directory part of FILE, for a URL."

commit 8a44a180b2cb855117442fe62bf24e835d59fecd
Author: Magnus Henoch <address@hidden>
Date:   Fri Nov 16 12:26:55 2007 +0000

    2007-11-16  Magnus Henoch  <address@hidden>
    
        * lisp/w3-compat.el (w3-alist-to-plist): Define.
    
        * lisp/w3-display.el (w3-parse-link)
        (w3-display-normalize-form-info, w3-display-node): Use
        w3-alist-to-plist instead of alist-to-plist.

diff --git a/ChangeLog b/ChangeLog
index d7bad85..5a22993 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2007-11-16  Magnus Henoch  <address@hidden>
+
+       * lisp/w3-compat.el (w3-alist-to-plist): Define.
+
+       * lisp/w3-display.el (w3-parse-link)
+       (w3-display-normalize-form-info, w3-display-node): Use
+       w3-alist-to-plist instead of alist-to-plist.
+
 2007-11-15  Magnus Henoch  <address@hidden>
 
        * lisp/w3-display.el: Use w3-url-file-nondirectory instead of
diff --git a/lisp/w3-compat.el b/lisp/w3-compat.el
index 2153a15..422d430 100644
--- a/lisp/w3-compat.el
+++ b/lisp/w3-compat.el
@@ -42,5 +42,29 @@
  (t
   (error "Couldn't define `w3-url-file-nondirectory'")))
 
+;; `alist-to-plist' is only in XEmacs, it seems.
+(cond
+ ((fboundp 'alist-to-plist)
+  (defalias 'w3-alist-to-plist 'alist-to-plist))
+ (t
+  ;; Stolen from Gnus, `mm-alist-to-plist'
+  (defun w3-alist-to-plist (alist)
+  "Convert association list ALIST into the equivalent property-list form.
+The plist is returned.  This converts from
+
+\((a . 1) (b . 2) (c . 3))
+
+into
+
+\(a 1 b 2 c 3)
+
+The original alist is not modified.  See also `destructive-alist-to-plist'."
+  (let (plist)
+    (while alist
+      (let ((el (car alist)))
+       (setq plist (cons (cdr el) (cons (car el) plist))))
+      (setq alist (cdr alist)))
+    (nreverse plist)))))
+
 (provide 'w3-compat)
 ;;; w3-compat.el ends here
diff --git a/lisp/w3-display.el b/lisp/w3-display.el
index dc991ef..97c5b3c 100644
--- a/lisp/w3-display.el
+++ b/lisp/w3-display.el
@@ -1,6 +1,6 @@
 ;;; w3-display.el --- W3 display engine
 ;; Author: William M. Perry <address@hidden>
-;; Version: $Revision: 1.50 $
+;; Version: $Revision: 1.51 $
 ;; Keywords: faces, help, hypermedia
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -749,7 +749,7 @@ If the face already exists, it is unmodified."
         (desc (w3-get-attribute type))
         (dc-desc (and desc (downcase desc))) ; canonical case
         (dest (w3-get-attribute 'href))
-        (plist (alist-to-plist args))
+        (plist (w3-alist-to-plist args))
         (node-1 (assq type w3-current-links))
         (node-2 (and node-1 desc (or (assoc desc
                                             (cdr node-1))
@@ -1942,7 +1942,7 @@ Can sometimes make the structure of a document clearer")
     color))
 
 (defun w3-display-normalize-form-info (args)
-  (let* ((plist (alist-to-plist args))
+  (let* ((plist (w3-alist-to-plist args))
         (type (intern (downcase
                        (or (plist-get plist 'type) "text"))))
         (name (plist-get plist 'name))
@@ -2643,7 +2643,7 @@ Format: (((image-alt row column) . offset) ...)")
             (w3-handle-empty-tag)
             )
            (style
-            (w3-handle-style (alist-to-plist
+            (w3-handle-style (w3-alist-to-plist
                               (cons (cons 'data (apply 'concat (nth 2 node)))
                                     (nth 1 node))))
             (w3-handle-empty-tag))

commit 509bae663efb816e503b6cdd32bd5491196f8d57
Author: Magnus Henoch <address@hidden>
Date:   Thu Nov 15 12:59:53 2007 +0000

    * lisp/w3-display.el: Use w3-url-file-nondirectory instead of
    url-basepath (in many places).
    
    * lisp/w3.el: Require w3-compat.
    (w3-download-url): Use w3-url-file-nondirectory instead of
    url-basepath.
    
    * lisp/w3-compat.el: New file.
    (w3-url-file-nondirectory): New function.

diff --git a/ChangeLog b/ChangeLog
index 3fb9ffe..d7bad85 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,15 @@
 2007-11-15  Magnus Henoch  <address@hidden>
 
+       * lisp/w3-display.el: Use w3-url-file-nondirectory instead of
+       url-basepath (in many places).
+
+       * lisp/w3.el: Require w3-compat.
+       (w3-download-url): Use w3-url-file-nondirectory instead of
+       url-basepath.
+
+       * lisp/w3-compat.el: New file.
+       (w3-url-file-nondirectory): New function.
+
        * lisp/images.el: Don't require w3-sysdp.
 
        * lisp/css.el: Ditto.
diff --git a/lisp/w3-compat.el b/lisp/w3-compat.el
new file mode 100644
index 0000000..2153a15
--- /dev/null
+++ b/lisp/w3-compat.el
@@ -0,0 +1,46 @@
+;;; w3-compat.el --- Compatibility stubs
+
+;; Copyright (C) 2007  Free Software Foundation, Inc.
+
+;; Author: Magnus Henoch <address@hidden>
+
+;; This file is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 3, or (at your option)
+;; any later version.
+
+;; This file is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING.  If not, write to
+;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
+
+;;; Commentary:
+
+;; This file defines aliases or stub functions starting with `w3-', to
+;; compensate for the possible nonexistence of needed functions.  The
+;; prefix is used to avoid polluting the namespace and confusing other
+;; packages.
+
+;; Currently no attempt is made to support anything before Emacs 22.
+
+;;; Code:
+
+;; `url-basepath' was morphed into `url-file-directory' and
+;; `url-file-nondirectory' post Emacs 22.
+(cond
+ ((fboundp 'url-file-nondirectory)
+  (defalias 'w3-url-file-nondirectory 'url-file-directory))
+ ((fboundp 'url-basepath)
+  (defsubst w3-url-file-nondirectory (file)
+    "Return the directory part of FILE, for a URL."
+    (url-basepath file t)))
+ (t
+  (error "Couldn't define `w3-url-file-nondirectory'")))
+
+(provide 'w3-compat)
+;;; w3-compat.el ends here
diff --git a/lisp/w3-display.el b/lisp/w3-display.el
index da29f46..dc991ef 100644
--- a/lisp/w3-display.el
+++ b/lisp/w3-display.el
@@ -1,6 +1,6 @@
 ;;; w3-display.el --- W3 display engine
 ;; Author: William M. Perry <address@hidden>
-;; Version: $Revision: 1.49 $
+;; Version: $Revision: 1.50 $
 ;; Keywords: faces, help, hypermedia
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -805,7 +805,7 @@ If the face already exists, it is unmodified."
          (eq (device-type) 'tty))      ; Why bother?
       (w3-add-delayed-graphic widget))
      ((not (w3-image-loadable-p src nil)) ; Hey, we can't load it!
-      (message "Skipping image %s" (url-basepath src t))
+      (message "Skipping image %s" (w3-url-file-nondirectory src))
       (w3-add-delayed-graphic widget))
      (t                                        ; Grab the images
       (let ((url-request-method "GET")
@@ -841,7 +841,7 @@ If the face already exists, it is unmodified."
          (eq (device-type) 'tty))      ; Why bother?
       nil)
      ((not (w3-image-loadable-p src nil)) ; Hey, we can't load it!
-      (message "Skipping image %s" (url-basepath src t))
+      (message "Skipping image %s" (w3-url-file-nondirectory src))
       nil)
      (t                                        ; Grab the images
       (let ((url-request-method "GET")
@@ -996,11 +996,11 @@ If the face already exists, it is unmodified."
                   (cond
                    ((null w3-auto-image-alt) "")
                    ((eq t w3-auto-image-alt)
-                    (concat "[IMAGE(" (url-basepath src t) ")] "))
+                    (concat "[IMAGE(" (w3-url-file-nondirectory src) ")] "))
                    ((stringp w3-auto-image-alt)
-                    (format w3-auto-image-alt (url-basepath src t)))
+                    (format w3-auto-image-alt (w3-url-file-nondirectory src)))
                    ((functionp w3-auto-image-alt)
-                    (funcall w3-auto-image-alt (url-basepath src t))))))
+                    (funcall w3-auto-image-alt (w3-url-file-nondirectory 
src))))))
          c)
      (while (setq c (string-match "[\C-i\C-j\C-l\C-m]" alt))
        (aset alt c ? ))
diff --git a/lisp/w3.el b/lisp/w3.el
index 64a50da..a23131f 100644
--- a/lisp/w3.el
+++ b/lisp/w3.el
@@ -1,7 +1,7 @@
 ;;; w3.el --- Main functions for emacs-w3 on all platforms/versions
 ;; Author: $Author: legoscia $
-;; Created: $Date: 2007/11/15 12:22:34 $
-;; Version: $Revision: 1.39 $
+;; Created: $Date: 2007/11/15 12:59:53 $
+;; Version: $Revision: 1.40 $
 ;; Keywords: faces, help, comm, news, mail, processes, mouse, hypermedia
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -33,6 +33,7 @@
 ;;; format.                                                                ;;;
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
+(require 'w3-compat)
 (require 'w3-cfg)
 
 (or (featurep 'efs)
@@ -1924,7 +1925,7 @@ Emacs."
   (interactive (list (w3-read-url-with-default)))
   (let* ((url-mime-accept-string "*/*")
         (urlobj (url-generic-parse-url url))
-        (stub-fname (url-basepath (or (url-filename urlobj) "") t))
+        (stub-fname (w3-url-file-nondirectory (or (url-filename urlobj) "")))
         (dir (or mailcap-download-directory "~/"))
         (fname (or file-name
                    (expand-file-name

commit de787b93e0295e127e5601f32b0593b7d9719489
Author: Magnus Henoch <address@hidden>
Date:   Thu Nov 15 12:46:08 2007 +0000

    Fix parentheses

diff --git a/lisp/w3-display.el b/lisp/w3-display.el
index 38cd2f5..da29f46 100644
--- a/lisp/w3-display.el
+++ b/lisp/w3-display.el
@@ -1,6 +1,6 @@
 ;;; w3-display.el --- W3 display engine
 ;; Author: William M. Perry <address@hidden>
-;; Version: $Revision: 1.48 $
+;; Version: $Revision: 1.49 $
 ;; Keywords: faces, help, hypermedia
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -604,7 +604,7 @@ If the face already exists, it is unmodified."
     `(progn
        (push (cons tag args) w3-display-open-element-stack)
        (push content content-stack)
-       (setq content (nth 2 ,node)))))
+       (setq content (nth 2 ,node))))
 
   (defmacro w3-display-handle-list-type ()
     `(add-text-properties
@@ -740,7 +740,7 @@ If the face already exists, it is unmodified."
        (otherwise                      ; Assume 'inline' rendering as default
        nil))
      )
-    )
+)  
 
 
 ;; <link> handling

commit 970822ddc796eeda7624d79d2c698dbbfcc9759f
Author: Magnus Henoch <address@hidden>
Date:   Thu Nov 15 12:42:39 2007 +0000

    lisp/w3-display.el: Drop old-style backquotes.

diff --git a/ChangeLog b/ChangeLog
index 84575ed..3fb9ffe 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,15 +1,20 @@
 2007-11-15  Magnus Henoch  <address@hidden>
 
        * lisp/images.el: Don't require w3-sysdp.
+
        * lisp/css.el: Ditto.
        (css-rule-specificity-internal): Drop old-style backquotes.
        (css-symbol-list-as-regexp): Ditto.
 
        * lisp/w3-dired.el: Don't require w3-sysdp.
-       * lisp/w3-display.el: Ditto.
+
+       * lisp/w3-display.el: Ditto.  Also drop old-style backquotes.
+
        * lisp/w3-menu.el: Ditto.
+
        * lisp/w3.el: Ditto.
        (w3-download-callback): Skip HTTP headers when saving file.
+
        * lisp/w3-sysdp.el: Remove.
 
 2007-03-09  Magnus Henoch  <address@hidden>
diff --git a/lisp/w3-display.el b/lisp/w3-display.el
index 58790b2..38cd2f5 100644
--- a/lisp/w3-display.el
+++ b/lisp/w3-display.el
@@ -1,10 +1,10 @@
 ;;; w3-display.el --- W3 display engine
 ;; Author: William M. Perry <address@hidden>
-;; Version: $Revision: 1.47 $
+;; Version: $Revision: 1.48 $
 ;; Keywords: faces, help, hypermedia
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; Copyright (c) 1996, 97, 98, 99, 2000, 2001 Free Software Foundation, Inc.
+;;; Copyright (c) 1996, 97, 98, 99, 2000, 2001, 2007 Free Software Foundation, 
Inc.
 ;;; Copyright (c) 1996 by William M. Perry <address@hidden>
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;;
@@ -592,25 +592,22 @@ If the face already exists, it is unmodified."
 ;; Various macros
 (eval-when-compile
   (defmacro w3-node-visible-p ()
-    (` (not (eq (car break-style) 'none))))
+    `(not (eq (car break-style) 'none)))
 
   (defmacro w3-handle-empty-tag ()
-    (`
-     (progn
+    `(progn
        (push (cons tag args) w3-display-open-element-stack)
        (push content content-stack)
-       (setq content nil))))
+       (setq content nil)))
 
   (defmacro w3-handle-content (node)
-    (`
-     (progn
+    `(progn
        (push (cons tag args) w3-display-open-element-stack)
        (push content content-stack)
-       (setq content (nth 2 (, node))))))
+       (setq content (nth 2 ,node)))))
 
   (defmacro w3-display-handle-list-type ()
-    (`
-     (add-text-properties
+    `(add-text-properties
       (point)
       (progn
        (case (car break-style)
@@ -660,11 +657,10 @@ If the face already exists, it is unmodified."
       (list 'start-open t
            'end-open t
            'rear-nonsticky nil
-           'face 'nil))))
+           'face 'nil)))
 
   (defmacro w3-display-set-margins ()
-    (`
-     (progn
+    `(progn
        (push (+ (w3-get-style-info 'margin-left node 0)
                (car left-margin-stack)) left-margin-stack)
        (push (-
@@ -672,17 +668,15 @@ If the face already exists, it is unmodified."
              (w3-get-style-info 'margin-right node 0)) right-margin-stack)
        (setq fill-column (car right-margin-stack))
        (w3-set-fill-prefix-length (car left-margin-stack))
-       (w3-display-handle-list-type))))
+       (w3-display-handle-list-type)))
 
   (defmacro w3-display-restore-margins ()
-    (`
-     (progn
+    `(progn
        (pop right-margin-stack)
-       (pop left-margin-stack))))
+       (pop left-margin-stack)))
 
   (defmacro w3-display-handle-break ()
-    (`
-     (case (car break-style)
+    `(case (car break-style)
        (block                          ; Full paragraph break
        (if (eq (cadr break-style) 'list-item)
            (setf (cadr break-style) 'line)
@@ -722,16 +716,14 @@ If the face already exists, it is unmodified."
         w3-display-alignment-stack))
        (otherwise                      ; Assume 'inline' rendering as default
        nil))
-     )
     )
+    
 
   (defmacro w3-display-progress-meter ()
-    (`
-     (url-lazy-message "Drawing... %c" (aref "/|\\-" (random 4)))))
+    `(url-lazy-message "Drawing... %c" (aref "/|\\-" (random 4))))
     
   (defmacro w3-display-handle-end-break ()
-    (`
-     (case (pop break-style)
+    `(case (pop break-style)
        (block                          ; Full paragraph break
        (w3-display-line-break 1)
        (w3-display-restore-margins)
@@ -749,7 +741,7 @@ If the face already exists, it is unmodified."
        nil))
      )
     )
-  )
+
 
 ;; <link> handling
 (defun w3-parse-link (args)
@@ -999,8 +991,7 @@ If the face already exists, it is unmodified."
     (concat "[" (file-name-sans-extension fname) "]")))
 
 (defmacro w3-image-alt (src)
-  (`
-   (let* ((doc-alt (w3-get-attribute 'alt))
+  `(let* ((doc-alt (w3-get-attribute 'alt))
          (alt (or (and (stringp doc-alt) (string-match "[^ \t\n]" doc-alt) 
doc-alt)
                   (cond
                    ((null w3-auto-image-alt) "")
@@ -1013,7 +1004,7 @@ If the face already exists, it is unmodified."
          c)
      (while (setq c (string-match "[\C-i\C-j\C-l\C-m]" alt))
        (aset alt c ? ))
-     alt)))
+     alt))
 
 (defmacro w3-handle-image ()
   `(let* ((height (w3-get-attribute 'height))

commit a55762dd09cb9a4bf800becb8a11c52d536cf999
Author: Magnus Henoch <address@hidden>
Date:   Thu Nov 15 12:28:29 2007 +0000

    (css-rule-specificity-internal): Drop old-style backquotes.
    (css-symbol-list-as-regexp): Ditto.

diff --git a/ChangeLog b/ChangeLog
index 34097ab..84575ed 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -2,7 +2,10 @@
 
        * lisp/images.el: Don't require w3-sysdp.
        * lisp/css.el: Ditto.
-       * lisp/w3-dired.el: Ditto.
+       (css-rule-specificity-internal): Drop old-style backquotes.
+       (css-symbol-list-as-regexp): Ditto.
+
+       * lisp/w3-dired.el: Don't require w3-sysdp.
        * lisp/w3-display.el: Ditto.
        * lisp/w3-menu.el: Ditto.
        * lisp/w3.el: Ditto.
diff --git a/lisp/css.el b/lisp/css.el
index 1dad90f..5e87560 100644
--- a/lisp/css.el
+++ b/lisp/css.el
@@ -1,11 +1,11 @@
 ;;; css.el -- Cascading Style Sheet parser
 ;; Author: $Author: legoscia $
-;; Created: $Date: 2007/11/15 12:22:34 $
-;; Version: $Revision: 1.11 $
+;; Created: $Date: 2007/11/15 12:28:29 $
+;; Version: $Revision: 1.12 $
 ;; Keywords: 
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; Copyright (c) 1996, 97, 98, 1999, 2000, 2001 Free Software Foundation, Inc.
+;;; Copyright (c) 1996, 97, 98, 1999, 2000, 2001, 2007 Free Software 
Foundation, Inc.
 ;;; Copyright (c) 1996 by William M. Perry <address@hidden>
 ;;;
 ;;; This file is part of GNU Emacs.
@@ -453,11 +453,11 @@ For a terminal frame, the value is always 1."
     rval))
 
 (defmacro css-symbol-list-as-regexp (&rest keys)
-  (` (eval-when-compile
-       (concat "^\\("
-              (mapconcat 'symbol-name
-                         (quote (, keys))
-                         "\\|") "\\)$"))))
+  `(eval-when-compile
+     (concat "^\\("
+            (mapconcat 'symbol-name
+                       (quote ,keys)
+                       "\\|") "\\)$")))
 
 (defun css-expand-color (color)
   (condition-case e
@@ -865,15 +865,14 @@ For a terminal frame, the value is always 1."
     types))
 
 (defmacro css-rule-specificity-internal (rule)
-  (`
-   (progn
-     (setq tmp (cdr (, rule)))
+  `(progn
+     (setq tmp (cdr ,rule))
      (if (listp tmp)
         (while tmp
           (if (= ?# (aref (car tmp) 0))
               (incf a)
             (incf b))
-          (setq tmp (cdr tmp)))))))
+          (setq tmp (cdr tmp))))))
 
 (defsubst css-specificity (rule)
   ;; To find specificity, according to the september 1996 CSS draft

commit da273105f3009d2d64a5e4f708a20819590a3532
Author: Magnus Henoch <address@hidden>
Date:   Thu Nov 15 12:25:17 2007 +0000

    *** empty log message ***

diff --git a/ChangeLog b/ChangeLog
index 1ded9ed..34097ab 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2007-11-15  Magnus Henoch  <address@hidden>
+
+       * lisp/images.el: Don't require w3-sysdp.
+       * lisp/css.el: Ditto.
+       * lisp/w3-dired.el: Ditto.
+       * lisp/w3-display.el: Ditto.
+       * lisp/w3-menu.el: Ditto.
+       * lisp/w3.el: Ditto.
+       (w3-download-callback): Skip HTTP headers when saving file.
+       * lisp/w3-sysdp.el: Remove.
+
 2007-03-09  Magnus Henoch  <address@hidden>
 
        * lisp/css.el (css-expand-color): Catch errors and display a

commit dad78f0e5287e8a70e528436b1d3e8b385788640
Author: Magnus Henoch <address@hidden>
Date:   Thu Nov 15 12:22:34 2007 +0000

    2007-11-15  Magnus Henoch  <address@hidden>
    
        * lisp/images.el: Don't require w3-sysdp.
        * lisp/css.el: Ditto.
        * lisp/w3-dired.el: Ditto.
        * lisp/w3-display.el: Ditto.
        * lisp/w3-menu.el: Ditto.
        * lisp/w3.el: Ditto.
        (w3-download-callback): Skip HTTP headers when saving file.
        * lisp/w3-sysdp.el: Remove.

diff --git a/lisp/css.el b/lisp/css.el
index 149243e..1dad90f 100644
--- a/lisp/css.el
+++ b/lisp/css.el
@@ -1,12 +1,12 @@
 ;;; css.el -- Cascading Style Sheet parser
 ;; Author: $Author: legoscia $
-;; Created: $Date: 2007/03/09 21:36:27 $
-;; Version: $Revision: 1.10 $
+;; Created: $Date: 2007/11/15 12:22:34 $
+;; Version: $Revision: 1.11 $
 ;; Keywords: 
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; Copyright (c) 1996 by William M. Perry <address@hidden>
 ;;; Copyright (c) 1996, 97, 98, 1999, 2000, 2001 Free Software Foundation, Inc.
+;;; Copyright (c) 1996 by William M. Perry <address@hidden>
 ;;;
 ;;; This file is part of GNU Emacs.
 ;;;
@@ -30,7 +30,6 @@
 (eval-and-compile
   (require 'cl)
   (require 'font))
-(require 'w3-sysdp)                    ; for copy-tree
 (autoload 'url-expand-file-name "url-expand")
 (autoload 'url-insert-file-contents "url-handlers")
 (autoload 'url-view-url "url-util")
diff --git a/lisp/images.el b/lisp/images.el
index 2d02a58..83892b7 100644
--- a/lisp/images.el
+++ b/lisp/images.el
@@ -1,12 +1,12 @@
 ;;; images.el --- Automatic image converters
-;; Author: $Author: wmperry $
-;; Created: $Date: 2002/02/01 17:42:48 $
-;; Version: $Revision: 1.5 $
+;; Author: $Author: legoscia $
+;; Created: $Date: 2007/11/15 12:22:34 $
+;; Version: $Revision: 1.6 $
 ;; Keywords: images
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; Copyright (c) 1996 - 1999, 2007 Free Software Foundation Inc.
 ;;; Copyright (c) 1995 - 1996 by William M. Perry <address@hidden>
-;;; Copyright (c) 1996 - 1999 Free Software Foundation Inc.
 ;;;
 ;;; This file is part of GNU Emacs.
 ;;;
@@ -26,16 +26,6 @@
 ;;; Boston, MA 02111-1307, USA.
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; The emacsen compatibility package - load it up before anything else
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-(eval-and-compile
-  (if (not (and (featurep 'xemacs)
-               (or (> emacs-major-version 19)
-                   (>= emacs-minor-version 14))))
-      (require 'w3-sysdp)))
-
 (defvar image-temp-stack nil "Do no touch - internal storage.")
 (defvar image-converters nil "Storage for the image converters.")
 (defvar image-native-formats
diff --git a/lisp/w3-dired.el b/lisp/w3-dired.el
index 52c025a..b56b909 100644
--- a/lisp/w3-dired.el
+++ b/lisp/w3-dired.el
@@ -1,11 +1,11 @@
 ;;; w3-dired.el --- W3 Dired minor mode
 ;; Author: Bill Perry <address@hidden>
-;; Created: $Date: 2001/05/29 15:50:37 $
-;; Version: $Revision: 1.4 $
+;; Created: $Date: 2007/11/15 12:22:34 $
+;; Version: $Revision: 1.5 $
 ;; Keywords: faces, help, comm, news, mail, processes, mouse, hypermedia
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; Copyright (c) 1996 - 1999 Free Software Foundation, Inc.
+;;; Copyright (c) 1996 - 1999, 2007 Free Software Foundation, Inc.
 ;;;
 ;;; This file is part of GNU Emacs.
 ;;;
@@ -35,7 +35,6 @@
 
 ;; Fixme: should we have both this and url-dired?
 
-(require 'w3-sysdp)                    ; for add-minor-mode
 (autoload 'dired-get-filename "dired")
 (autoload 'w3-open-local "w3")
 (autoload 'w3-fetch "w3")
diff --git a/lisp/w3-display.el b/lisp/w3-display.el
index 3a1f045..58790b2 100644
--- a/lisp/w3-display.el
+++ b/lisp/w3-display.el
@@ -1,11 +1,11 @@
 ;;; w3-display.el --- W3 display engine
 ;; Author: William M. Perry <address@hidden>
-;; Version: $Revision: 1.46 $
+;; Version: $Revision: 1.47 $
 ;; Keywords: faces, help, hypermedia
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; Copyright (c) 1996 by William M. Perry <address@hidden>
 ;;; Copyright (c) 1996, 97, 98, 99, 2000, 2001 Free Software Foundation, Inc.
+;;; Copyright (c) 1996 by William M. Perry <address@hidden>
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;;
 ;;; This file is part of GNU Emacs.
@@ -35,7 +35,6 @@
 (require 'mailcap)
 (require 'w3-widget)
 (require 'w3-imap)
-(require 'w3-sysdp)
 
 ;; Some mm-* "functions" are macros.  Ensure that they are loaded.
 (eval-when-compile
diff --git a/lisp/w3-menu.el b/lisp/w3-menu.el
index 0840f99..98e50b6 100644
--- a/lisp/w3-menu.el
+++ b/lisp/w3-menu.el
@@ -1,11 +1,11 @@
 ;;; w3-menu.el --- Menu functions for emacs-w3
 ;; Author: Bill Perry <address@hidden>
-;; Version: $Revision: 1.14 $
+;; Version: $Revision: 1.15 $
 ;; Keywords: menu, hypermedia
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; Copyright (c) 1996, 97, 98, 99, 2000, 2001, 2007 Free Software Foundation, 
Inc.
 ;;; Copyright (c) 1996 by William M. Perry <address@hidden>
-;;; Copyright (c) 1996, 97, 98, 99, 2000, 2001 Free Software Foundation, Inc.
 ;;;
 ;;; This file is part of GNU Emacs.
 ;;;
@@ -27,7 +27,6 @@
 
 (require 'w3-vars)
 (require 'w3-mouse)
-(require 'w3-sysdp)                    ; for copy-tree
 (eval-when-compile
   (require 'cl)
   (defvar w3-html-bookmarks))
diff --git a/lisp/w3-sysdp.el b/lisp/w3-sysdp.el
deleted file mode 100644
index f533a75..0000000
--- a/lisp/w3-sysdp.el
+++ /dev/null
@@ -1,405 +0,0 @@
-;;; sysdep.el --- consolidate Emacs-version dependencies in one file.
-
-;; Copyright (c) 1995 - 1997 Ben Wing.
-
-;; Author: Ben Wing <address@hidden>, William Perry <address@hidden>
-;; Keywords: lisp, tools
-;; Version: 0.003
-
-
-;; This stuff should go.  We don't have papers for it and it's not
-;; good practice to define things like this.  It tends to screw other
-;; packages that do feature tests with fboundp.  Compare what Gnus
-;; does.  (A lot of it's probably irrelevant anyhow, especially as
-;; depending on Gnus MIME stuff means dropping support for old
-;; Emacsen.)  -- fx
-
-;; The purpose of this file is to eliminate the cruftiness that
-;; would otherwise be required of packages that want to run on multiple
-;; versions of Emacs.  The idea is that we make it look like we're running
-;; the latest version of XEmacs (currently 19.12) by emulating all the
-;; missing functions.
-
-;; #### This file does not currently do any advising but should.
-;; Unfortunately, advice.el is a hugely big package.  Is any such
-;; thing as `advice-lite' possible?
-
-;; #### - This package is great, but its role needs to be thought out a bit
-;; more.  Sysdep will not permit programs written for the old XEmacs API to
-;; run on new versions of XEmacs.  Sysdep is a backward-compatibility
-;; package for the latest and greatest XEmacs API.  It permits programmers
-;; to use the latest XEmacs functionality and still have their programs run
-;; on older versions of XEmacs...perhaps even on FSF Emacs.  It should NEVER
-;; ever need to be loaded in the newest XEmacs.  It doesn't even make sense
-;; to put it in the lisp/utils part of the XEmacs distribution because it's
-;; real purpose is to be distributed with packages like w3 which take
-;; advantage of the latest and greatest features of XEmacs but still need to
-;; be run on older versions.  --Stig
-
-;; Any packages that wish to use this file should load it using
-;; `load-library'.  It will not load itself if a version of sysdep.el
-;; that is at least as recent has already been loaded, but will
-;; load over an older version of sysdep.el.  It will attempt to
-;; not redefine functions that have already been custom-redefined,
-;; but will redefine a function if the supplied definition came from
-;; an older version of sysdep.el.
-
-;; Packages such as w3 that wish to include this file with the package
-;; should rename it to something unique, such as `w3-sysdep.el', and
-;; load it with `load-library'.  That will ensure that no conflicts
-;; arise if more than one package in the load path provides a version
-;; of sysdep.el.  If multiple packages load sysdep.el, the most recent
-;; version will end up loaded; as long as I'm careful not to
-;; introduce bugs in previously working definitions, this should work
-;; fine.
-
-;; You may well discover deficiencies in this file as you use it.
-;; The preferable way of dealing with this is to send me a patch
-;; to sysdep.el; that way, the collective body of knowledge gets
-;; increased.
-
-;; IMPORTANT: leave the version string in the format X.XXX (e.g. 1.001)
-;; so that string comparisons to other versions work properly.
-
-(defconst sysdep-potential-version "0.003")
-
-;; this macro means: define the function, but only if either it
-;; wasn't bound before, or the supplied binding comes from an older
-;; version of sysdep.el.  That way, user-supplied bindings don't
-;; get overridden.
-
-;; note: sysdep-defalias is often more useful than this function,
-;; esp. since you can do load-time conditionalizing and can
-;; optionally leave the function undefined. (e.g. frame functions
-;; in v18.)
-
-(defmacro sysdep-defun (function &rest everything-else)
-  (` (cond ((and (not (fboundp (quote (, function))))
-                (or
-                 (not
-                  (stringp (get (quote (, function)) 'sysdep-defined-this)))
-                 (and (get (quote (, function)) 'sysdep-defined-this)
-                      (string-lessp
-                       (get (quote (, function)) 'sysdep-defined-this)
-                       sysdep-potential-version))))
-           (put (quote (, function)) 'sysdep-defined-this
-                sysdep-potential-version)
-           (defun (, function) (,@ everything-else))))))
-
-(defmacro sysdep-defvar (function &rest everything-else)
-  (` (cond ((and (not (boundp (quote (, function))))
-                (or 
-                 (not
-                  (stringp (get (quote (, function)) 'sysdep-defined-this)))
-                 (and (get (quote (, function)) 'sysdep-defined-this)
-                      (string-lessp
-                       (get (quote (, function)) 'sysdep-defined-this)
-                       sysdep-potential-version))))
-           (put (quote (, function)) 'sysdep-defined-this t)
-           (defvar (, function) (,@ everything-else))))))
-
-(defmacro sysdep-defconst (function &rest everything-else)
-  (` (cond ((and (not (boundp (quote (, function))))
-                (or
-                 (not
-                  (stringp (get (quote (, function)) 'sysdep-defined-this)))
-                 (and (get (quote (, function)) 'sysdep-defined-this)
-                      (string-lessp
-                       (get (quote (, function)) 'sysdep-defined-this)
-                       sysdep-potential-version))))
-           (put (quote (, function)) 'sysdep-defined-this t)
-           (defconst (, function) (,@ everything-else))))))
-
-;; similar for fset and defalias.  No need to quote as the argument
-;; is already quoted.
-
-(defmacro sysdep-fset (function def)
-  (` (cond ((and (not (fboundp (, function)))
-                (or (not (stringp
-                          (get (, function) 'sysdep-defined-this)))
-                    (and (get (, function) 'sysdep-defined-this)
-                         (string-lessp
-                          (get (, function) 'sysdep-defined-this)
-                          sysdep-potential-version)))
-                (, def))
-           (put (, function) 'sysdep-defined-this t)
-           (fset (, function) (, def))))))
-
-(defmacro sysdep-defalias (function def)
-  (` (cond ((and (not (fboundp (, function)))
-                (or (not (stringp
-                          (get (, function) 'sysdep-defined-this)))
-                    (and (get (, function) 'sysdep-defined-this)
-                         (string-lessp
-                          (get (, function) 'sysdep-defined-this)
-                          sysdep-potential-version)))
-                (, def)
-                (or (listp (, def))
-                    (and (symbolp (, def))
-                         (fboundp (, def)))))
-           (put (, function) 'sysdep-defined-this t)
-           (defalias (, function) (, def))))))
-
-(sysdep-defvar list-buffers-directory nil)
-(sysdep-defvar x-library-search-path `("/usr/X11R6/lib/X11/"
-                                     "/usr/X11R5/lib/X11/"
-                                     "/usr/lib/X11R6/X11/"
-                                     "/usr/lib/X11R5/X11/"
-                                     "/usr/local/X11R6/lib/X11/"
-                                     "/usr/local/X11R5/lib/X11/"
-                                     "/usr/local/lib/X11R6/X11/"
-                                     "/usr/local/lib/X11R5/X11/"
-                                     "/usr/X11/lib/X11/"
-                                     "/usr/lib/X11/"
-                                     "/usr/local/lib/X11/"
-                                     "/usr/X386/lib/X11/"
-                                     "/usr/x386/lib/X11/"
-                                     "/usr/XFree86/lib/X11/"
-                                     "/usr/unsupported/lib/X11/"
-                                     "/usr/athena/lib/X11/"
-                                     "/usr/local/x11r5/lib/X11/"
-                                     "/usr/lpp/Xamples/lib/X11/"
-                                     "/usr/openwin/lib/X11/"
-                                     "/usr/openwin/share/lib/X11/"
-                                     ,data-directory)
-  "Search path used for X11 libraries.")
-
-;; frame-related stuff.
-
-(sysdep-defun frame-parameter (frame parameter)
-  "Return FRAME's value for parameter PARAMETER.
-  If FRAME is omitted, describe the currently selected frame."
-  (cdr (assq parameter (frame-parameters frame))))
-
-(sysdep-defun event-point (event)
-  (let ((posn (event-end event)))
-    (if posn 
-       (posn-point posn))))
-
-(sysdep-defalias 'face-list 'list-faces)
-
-(sysdep-defun set-keymap-parent (keymap new-parent)
-  (let ((tail keymap))
-    (while (and tail (cdr tail) (not (eq (car (cdr tail)) 'keymap)))
-      (setq tail (cdr tail)))
-    (if tail
-       (setcdr tail new-parent))))
-
-;; Property list functions
-;;
-(sysdep-defun plist-put (plist prop val)
-  "Change value in PLIST of PROP to VAL.
-PLIST is a property list, which is a list of the form
-\(PROP1 VALUE1 PROP2 VALUE2 ...).  PROP is a symbol and VAL is any object.
-If PROP is already a property on the list, its value is set to VAL,
-otherwise the new PROP VAL pair is added.  The new plist is returned;
-use `(setq x (plist-put x prop val))' to be sure to use the new value.
-The PLIST is modified by side effects."
-  (let ((node (memq prop plist)))
-    (if node
-       (setcar (cdr node) val)
-      (setq plist (cons prop (cons val plist))))
-    plist))
-
-(sysdep-defun plist-get (plist prop)
-  "Extract a value from a property list.
-PLIST is a property list, which is a list of the form
-\(PROP1 VALUE1 PROP2 VALUE2...).  This function returns the value
-corresponding to the given PROP, or nil if PROP is not
-one of the properties on the list."
-  (while (and plist (not (eq (car plist) prop)))
-    (setq plist (cdr (cdr plist))))
-  (and plist (car (cdr plist))))
-
-;; misc
-
-(sysdep-defun buffer-substring-no-properties (beg end)
-  "Return the text from BEG to END, without text properties, as a string."
-  (format "%s" (buffer-substring beg end)))
-  
-(sysdep-defun symbol-value-in-buffer (symbol buffer &optional unbound-value)
-  "Return the value of SYMBOL in BUFFER, or UNBOUND-VALUE if it is unbound."
-  (save-excursion
-    (set-buffer buffer)
-    (if (not (boundp symbol))
-       unbound-value
-      (symbol-value symbol))))
-
-(sysdep-defun insert-file-contents-literally
-  (file &optional visit beg end replace)
-  "Like `insert-file-contents', q.v., but only reads in the file.
-A buffer may be modified in several ways after reading into the buffer due
-to advanced Emacs features, such as file-name-handlers, format decoding,
-find-file-hooks, etc.
-  This function ensures that none of these modifications will take place."
-  (let ((file-name-handler-alist nil)
-       (find-file-hooks nil))
-    (insert-file-contents file visit beg end replace)))
-
-(sysdep-defun alist-to-plist (alist)
-  "Convert association list ALIST into the equivalent property-list form.
-The plist is returned.  This converts from
-
-\((a . 1) (b . 2) (c . 3))
-
-into
-
-\(a 1 b 2 c 3)
-
-The original alist is not modified.  See also `destructive-alist-to-plist'."
-  (let (plist)
-    (while alist
-      (let ((el (car alist)))
-       (setq plist (cons (cdr el) (cons (car el) plist))))
-      (setq alist (cdr alist)))
-    (nreverse plist)))
-
-(sysdep-defun add-minor-mode (toggle name &optional keymap after toggle-fun)
-  "Add a minor mode to `minor-mode-alist' and `minor-mode-map-alist'.
-TOGGLE is a symbol which is used as the variable which toggle the minor mode,
-NAME is the name that should appear in the modeline (it should be a string
-beginning with a space), KEYMAP is a keymap to make active when the minor
-mode is active, and AFTER is the toggling symbol used for another minor
-mode.  If AFTER is non-nil, then it is used to position the new mode in the
-minor-mode alists.  TOGGLE-FUN specifies an interactive function that
-is called to toggle the mode on and off; this affects what appens when
-button2 is pressed on the mode, and when button3 is pressed somewhere
-in the list of modes.  If TOGGLE-FUN is nil and TOGGLE names an
-interactive function, TOGGLE is used as the toggle function.
-
-Example:  (add-minor-mode 'view-minor-mode \" View\" view-mode-map)"
-  (if (not (assq toggle minor-mode-alist))
-      (setq minor-mode-alist (cons (list toggle name) minor-mode-alist)))
-  (if (and keymap (not (assq toggle minor-mode-map-alist)))
-      (setq minor-mode-map-alist (cons (cons toggle keymap)
-                                      minor-mode-map-alist))))
-
-(sysdep-defvar x-font-regexp-foundry-and-family
-  (let ((-             "[-?]")
-       (foundry                "[^-]+")
-       (family                 "[^-]+")
-       )
-    (concat "\\`[-?*]" foundry - "\\(" family "\\)" -)))
-
-(sysdep-defalias 'valid-color-name-p
-  (cond
-   ((fboundp 'x-valid-color-name-p)    ; XEmacs/Lucid
-    'x-valid-color-name-p)
-   ((and window-system
-        (fboundp 'color-defined-p))    ; NS/Emacs 19
-    'color-defined-p)
-   ((and window-system
-        (fboundp 'pm-color-defined-p))
-    'pm-color-defined-p)
-   ((and window-system
-        (fboundp 'x-color-defined-p))  ; Emacs 19
-    'x-color-defined-p)
-   ((fboundp 'get-color)               ; Epoch
-    (function (lambda (color)
-               (let ((x (get-color color)))
-                 (if x
-                     (setq x (progn
-                               (free-color x)
-                               t)))
-                 x))))
-   (t 'identity)))                     ; All others
-
-;; Misc.
-
-(sysdep-defun split-string (string pattern)
-  "Return a list of substrings of STRING which are separated by PATTERN."
-  (let (parts (start 0))
-    (while (string-match pattern string start)
-      (setq parts (cons (substring string start (match-beginning 0)) parts)
-           start (match-end 0)))
-    (nreverse (cons (substring string start) parts))
-    ))
-
-(sysdep-defun display-error (error-object stream)
-  "Display `error-object' on `stream' in a user-friendly way."
-  (funcall (or (let ((type (car-safe error-object)))
-                (catch 'error
-                  (and (consp error-object)
-                       (symbolp type)
-                       ;;(stringp (get type 'error-message))
-                       (consp (get type 'error-conditions))
-                       (let ((tail (cdr error-object)))
-                         (while (not (null tail))
-                           (if (consp tail)
-                               (setq tail (cdr tail))
-                             (throw 'error nil)))
-                         t)
-                       ;; (check-type condition condition)
-                       (get type 'error-conditions)
-                       ;; Search class hierarchy
-                       (let ((tail (get type 'error-conditions)))
-                         (while (not (null tail))
-                           (cond ((not (and (consp tail)
-                                            (symbolp (car tail))))
-                                  (throw 'error nil))
-                                 ((get (car tail) 'display-error)
-                                  (throw 'error (get (car tail)
-                                                     'display-error)))
-                                 (t
-                                  (setq tail (cdr tail)))))
-                         ;; Default method
-                         (function
-                          (lambda (error-object stream)
-                            (let ((type (car error-object))
-                                  (tail (cdr error-object))
-                                  (first t))
-                              (if (eq type 'error)
-                                  (progn (princ (car tail) stream)
-                                         (setq tail (cdr tail)))
-                                (princ (or (get type 'error-message) type)
-                                       stream))
-                              (while tail
-                                (princ (if first ": " ", ") stream)
-                                (prin1 (car tail) stream)
-                                (setq tail (cdr tail)
-                                      first nil)))))))))
-              (function
-               (lambda (error-object stream)
-                 (princ "Peculiar error " stream)
-                 (prin1 error-object stream))))
-          error-object stream))
-
-(sysdep-defun find-face (face)
-  (car-safe (memq face (face-list))))
-
-(sysdep-defun copy-tree (tree &optional vecp)
-  "Make a copy of TREE.
-If TREE is a cons cell, this recursively copies both its car and its cdr.
-Contrast to copy-sequence, which copies only along the cdrs.  With second
-argument VECP, this copies vectors as well as conses."
-  (if (consp tree)
-      (let ((p (setq tree (copy-list tree))))
-       (while (consp p)
-         (if (or (consp (car p)) (and vecp (vectorp (car p))))
-             (setcar p (copy-tree (car p) vecp)))
-         (or (listp (cdr p)) (setcdr p (copy-tree (cdr p) vecp)))
-         (pop p)))
-    (if (and vecp (vectorp tree))
-       (let ((i (length (setq tree (copy-sequence tree)))))
-         (while (>= (setq i (1- i)) 0)
-           (aset tree i (copy-tree (aref tree i) vecp))))))
-  tree)
-
-(sysdep-defun truncate-string-to-width (str len &optional start-column pad)
-  "Truncate string STR so that string-width of STR is not greater than LEN.
-If width of the truncated string is less than LEN, and if a character PAD is
-defined, add padding end of it."
-  (concat (if (> (length str) len) (substring str 0 len) str)
-         (if (or (null pad) (> (length str) len))
-             ""
-           (make-string (- len (length str)) pad))))
-
-(provide 'w3-sysdp)
-;;; sysdep.el ends here
-
-;;;(sysdep.el) Local Variables:
-;;;(sysdep.el) eval: (put 'sysdep-defun 'lisp-indent-function 'defun)
-;;;(sysdep.el) eval: (put 'sysdep-defalias 'lisp-indent-function 'defun)
-;;;(sysdep.el) eval: (put 'sysdep-defconst 'lisp-indent-function 'defun)
-;;;(sysdep.el) eval: (put 'sysdep-defvar 'lisp-indent-function 'defun)
-;;;(sysdep.el) End:
diff --git a/lisp/w3.el b/lisp/w3.el
index ff008b5..64a50da 100644
--- a/lisp/w3.el
+++ b/lisp/w3.el
@@ -1,12 +1,12 @@
 ;;; w3.el --- Main functions for emacs-w3 on all platforms/versions
 ;; Author: $Author: legoscia $
-;; Created: $Date: 2006/12/07 00:21:26 $
-;; Version: $Revision: 1.38 $
+;; Created: $Date: 2007/11/15 12:22:34 $
+;; Version: $Revision: 1.39 $
 ;; Keywords: faces, help, comm, news, mail, processes, mouse, hypermedia
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; Copyright (c) 1996, 97, 98, 99, 2001, 2007 Free Software Foundation, Inc.
 ;;; Copyright (c) 1993 - 1996 by William M. Perry <address@hidden>
-;;; Copyright (c) 1996, 97, 98, 99, 2001 Free Software Foundation, Inc.
 ;;;
 ;;; This file is part of GNU Emacs.
 ;;;
@@ -33,7 +33,6 @@
 ;;; format.                                                                ;;;
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
-(require 'w3-sysdp)
 (require 'w3-cfg)
 
 (or (featurep 'efs)
@@ -1897,7 +1896,9 @@ Emacs."
 
 (defun w3-download-callback (fname)
   (let ((coding-system-for-write 'binary))
-    (write-region (point-min) (point-max) fname))
+    (goto-char (point-min))
+    (search-forward "\n\n" nil t)
+    (write-region (point) (point-max) fname))
   (url-mark-buffer-as-dead (current-buffer))
   (message "Download of %s complete." (url-view-url t))
   (sit-for 3))

commit 74e5aca3de9c0790e1493e9b5ad90d5d7bc7bbe9
Author: Magnus Henoch <address@hidden>
Date:   Fri Mar 9 21:36:36 2007 +0000

    *** empty log message ***

diff --git a/ChangeLog b/ChangeLog
index f0f4c64..1ded9ed 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2007-03-09  Magnus Henoch  <address@hidden>
+
+       * lisp/css.el (css-expand-color): Catch errors and display a
+       warning instead.
+
 2006-12-15  Klaus Straubinger <address@hidden> (tiny change)
 
        * lisp/font.el (font-spatial-to-canonical): Fix conversion from

commit 776580324ecb1eb1d7ff024f461222156a11236e
Author: Magnus Henoch <address@hidden>
Date:   Fri Mar 9 21:36:27 2007 +0000

    (css-expand-color): Catch errors and display a warning instead.

diff --git a/lisp/css.el b/lisp/css.el
index 6a6d467..149243e 100644
--- a/lisp/css.el
+++ b/lisp/css.el
@@ -1,7 +1,7 @@
 ;;; css.el -- Cascading Style Sheet parser
 ;; Author: $Author: legoscia $
-;; Created: $Date: 2006/12/15 15:21:47 $
-;; Version: $Revision: 1.9 $
+;; Created: $Date: 2007/03/09 21:36:27 $
+;; Version: $Revision: 1.10 $
 ;; Keywords: 
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -461,54 +461,58 @@ For a terminal frame, the value is always 1."
                          "\\|") "\\)$"))))
 
 (defun css-expand-color (color)
-  (cond
-   ((string-match "^\\(transparent\\|none\\)$" color)
-    (setq color nil))
-   ((string-match "^#" color)
-    (let (r g b)
+  (condition-case e
       (cond
-       ((string-match "^#...$" color)
-       ;; 3-char rgb spec, expand out to six chars by replicating
-       ;; digits, not adding zeros.
-       (setq r (css-unhex (make-string 2 (aref color 1)))
-             g (css-unhex (make-string 2 (aref color 2)))
-             b (css-unhex (make-string 2 (aref color 3)))))
-       ((string-match "^#\\(..\\)\\(..\\)\\(..\\)$" color)
-       (setq r (css-unhex (match-string 1 color))
-             g (css-unhex (match-string 2 color))
-             b (css-unhex (match-string 3 color))))
+       ((string-match "^\\(transparent\\|none\\)$" color)
+       (setq color nil))
+       ((string-match "^#" color)
+       (let (r g b)
+         (cond
+          ((string-match "^#...$" color)
+           ;; 3-char rgb spec, expand out to six chars by replicating
+           ;; digits, not adding zeros.
+           (setq r (css-unhex (make-string 2 (aref color 1)))
+                 g (css-unhex (make-string 2 (aref color 2)))
+                 b (css-unhex (make-string 2 (aref color 3)))))
+          ((string-match "^#\\(..\\)\\(..\\)\\(..\\)$" color)
+           (setq r (css-unhex (match-string 1 color))
+                 g (css-unhex (match-string 2 color))
+                 b (css-unhex (match-string 3 color))))
+          (t
+           (setq color (substring color 1))
+           (let* ((n (/ (length color) 3))
+                  (max (float (css-pow 16 n))))
+             (setq r (css-unhex (substring color 0 n))
+                   g (css-unhex (substring color n (* n 2)))
+                   b (css-unhex (substring color (* n 2) (* n 3)))
+                   r (round (* (/ r max) 255))
+                   g (round (* (/ g max) 255))
+                   b (round (* (/ b max) 255))))))
+         (setq color (vector 'rgb r g b))))
+       ((string-match "^rgb *( *\\([0-9]+\\)[, ]+\\([0-9]+\\)[, ]+\\([0-9]+\\) 
*) *$" color)
+       ;; rgb(r,g,b) 0 - 255, cutting off at 255
+       (setq color (vector
+                    'rgb
+                    (min (string-to-int (match-string 1 color)) 255)
+                    (min (string-to-int (match-string 2 color)) 255)
+                    (min (string-to-int (match-string 3 color)) 255))))
+       ((string-match "^rgb *( *\\([0-9]+\\) *%[, ]+\\([0-9]+\\) *%[, 
]+\\([0-9]+\\) *% *) *$" color)
+       ;; rgb(r%,g%,b%) 0 - 100%, cutting off at 100%
+       (let ((r (min (string-to-number (match-string 1 color)) 100.0))
+             (g (min (string-to-number (match-string 2 color)) 100.0))
+             (b (min (string-to-number (match-string 3 color)) 100.0)))
+         (setq r (round (* r 2.55))
+               g (round (* g 2.55))
+               b (round (* b 2.55))
+               color (vector 'rgb r g b))))
        (t
-       (setq color (substring color 1))
-       (let* ((n (/ (length color) 3))
-              (max (float (css-pow 16 n))))
-         (setq r (css-unhex (substring color 0 n))
-               g (css-unhex (substring color n (* n 2)))
-               b (css-unhex (substring color (* n 2) (* n 3)))
-               r (round (* (/ r max) 255))
-               g (round (* (/ g max) 255))
-               b (round (* (/ b max) 255))))))
-      (setq color (vector 'rgb r g b))))
-   ((string-match "^rgb *( *\\([0-9]+\\)[, ]+\\([0-9]+\\)[, ]+\\([0-9]+\\) *) 
*$" color)
-    ;; rgb(r,g,b) 0 - 255, cutting off at 255
-    (setq color (vector
-                'rgb
-                (min (string-to-int (match-string 1 color)) 255)
-                (min (string-to-int (match-string 2 color)) 255)
-                (min (string-to-int (match-string 3 color)) 255))))
-   ((string-match "^rgb *( *\\([0-9]+\\) *%[, ]+\\([0-9]+\\) *%[, 
]+\\([0-9]+\\) *% *) *$" color)
-    ;; rgb(r%,g%,b%) 0 - 100%, cutting off at 100%
-    (let ((r (min (string-to-number (match-string 1 color)) 100.0))
-         (g (min (string-to-number (match-string 2 color)) 100.0))
-         (b (min (string-to-number (match-string 3 color)) 100.0)))
-      (setq r (round (* r 2.55))
-           g (round (* g 2.55))
-           b (round (* b 2.55))
-           color (vector 'rgb r g b))))
-    (t
-     ;; Hmmm... pass it through unmangled and hope the underlying
-     ;; windowing system can handle it.
-     )
-    )
+       ;; Hmmm... pass it through unmangled and hope the underlying
+       ;; windowing system can handle it.
+       )
+       )
+    (error
+     (w3-warn 'css (format "Couldn't interpret color value %s" color))
+     (setq color nil)))
   color
   )
 

commit 32aedb11b0a3c7ce02043f8a9141458ddf936c24
Author: Magnus Henoch <address@hidden>
Date:   Fri Dec 15 15:21:56 2006 +0000

    *** empty log message ***

diff --git a/ChangeLog b/ChangeLog
index f49dcb2..f0f4c64 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -3,6 +3,9 @@
        * lisp/font.el (font-spatial-to-canonical): Fix conversion from
        pixels to points.
 
+       * lisp/css.el (css-expand-length): Treat character based size
+       specifications as such.
+
 2006-12-07  Magnus Henoch  <address@hidden>
 
        * lisp/w3.el (w3-fetch-callback): Treat application/xhtml+xml as

commit 308cba8d14e0f271ff302f0735d86c93d80e7981
Author: Magnus Henoch <address@hidden>
Date:   Fri Dec 15 15:21:47 2006 +0000

    (css-expand-length): Treat character based size specifications as
    such.

diff --git a/lisp/css.el b/lisp/css.el
index bc8641f..6a6d467 100644
--- a/lisp/css.el
+++ b/lisp/css.el
@@ -1,7 +1,7 @@
 ;;; css.el -- Cascading Style Sheet parser
-;; Author: $Author: fx $
-;; Created: $Date: 2002/01/22 19:01:57 $
-;; Version: $Revision: 1.8 $
+;; Author: $Author: legoscia $
+;; Created: $Date: 2006/12/15 15:21:47 $
+;; Version: $Revision: 1.9 $
 ;; Keywords: 
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -409,6 +409,7 @@ For a terminal frame, the value is always 1."
    ((and (string-match "\\([+-]?\\([0-9]+\\|[0-9]*\\.[0-9]+\\)\\)%" spec)
         (fboundp 'frame-char-height))
     ;; A percentage
+    ;; XXX: should be relative to encosing element
     (setq spec (/ (string-to-int (match-string 1 spec)) 100.0))
     (if height
        (round (* (frame-char-height) spec))
@@ -421,7 +422,12 @@ For a terminal frame, the value is always 1."
       (max 0 (round (* (/ (frame-pixel-width) (frame-width)) spec)))))
    ((string-match "\\([+-]?\\([0-9]+\\|[0-9]*\\.[0-9]+\\)\\)e[mx]" spec)
     ;; Character based
-    (max 0 (round (string-to-number (match-string 1 spec)))))
+    ;; XXX: should be relative to font size of enclosing element
+    (round (font-spatial-to-canonical
+            (concat (number-to-string
+                     (* (string-to-number (match-string 1 spec))
+                        (if height (frame-char-height) (frame-char-width))))
+                    "px"))))
    (t
     (truncate (font-spatial-to-canonical spec)))
    )

commit bedfdd5d81b27c7db69b784b5bef22edbc8f73d4
Author: Magnus Henoch <address@hidden>
Date:   Fri Dec 15 14:41:01 2006 +0000

    *** empty log message ***

diff --git a/ChangeLog b/ChangeLog
index 71e0d67..f49dcb2 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2006-12-15  Klaus Straubinger <address@hidden> (tiny change)
+
+       * lisp/font.el (font-spatial-to-canonical): Fix conversion from
+       pixels to points.
+
 2006-12-07  Magnus Henoch  <address@hidden>
 
        * lisp/w3.el (w3-fetch-callback): Treat application/xhtml+xml as

commit 855a47c41edf88891c2bd67ccdb1ecbbf19ecbdb
Author: Magnus Henoch <address@hidden>
Date:   Fri Dec 15 14:40:54 2006 +0000

    (font-spatial-to-canonical): Fix conversion from pixels to points.

diff --git a/lisp/font.el b/lisp/font.el
index c5a977e..6f5481d 100644
--- a/lisp/font.el
+++ b/lisp/font.el
@@ -2,7 +2,7 @@
 
 ;; Author: wmperry
 ;; Maintainer: Bill Perry <address@hidden>
-;; Created: $Date: 2002/10/23 03:33:41 $
+;; Created: $Date: 2006/12/15 14:40:54 $
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;; Copyright (c) 1995, 1996 by William M. Perry <address@hidden>
@@ -307,7 +307,7 @@ These are for use in the `weight' field of an X font 
string.")
       (setq num (string-to-number spec))
       (cond
        ((member type '("pixel" "px" "pix"))
-       (setq retval (* num (/ pix-width mm-width) (/ 25.4 72.0))))
+       (setq retval (* num (/ mm-width pix-width) (/ 72.0 25.4))))
        ((member type '("point" "pt"))
        (setq retval num))
        ((member type '("pica" "pa"))

commit 50baee205590d1a1c3047f3ddee407913f6c3c1c
Author: Magnus Henoch <address@hidden>
Date:   Thu Dec 7 00:21:34 2006 +0000

    *** empty log message ***

diff --git a/ChangeLog b/ChangeLog
index d99a2c7..71e0d67 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2006-12-07  Magnus Henoch  <address@hidden>
+
+       * lisp/w3.el (w3-fetch-callback): Treat application/xhtml+xml as
+       text/html.
+
 2006-11-29  Magnus Henoch  <address@hidden>
 
        * lisp/w3.el (w3-download-redirect-callback): New function.

commit 8676e0a3bcfe33205d5e838789c8e1b0795d24ef
Author: Magnus Henoch <address@hidden>
Date:   Thu Dec 7 00:21:26 2006 +0000

    (w3-fetch-callback): Treat application/xhtml+xml as text/html.

diff --git a/lisp/w3.el b/lisp/w3.el
index 8ae98ae..ff008b5 100644
--- a/lisp/w3.el
+++ b/lisp/w3.el
@@ -1,7 +1,7 @@
 ;;; w3.el --- Main functions for emacs-w3 on all platforms/versions
 ;; Author: $Author: legoscia $
-;; Created: $Date: 2006/11/29 11:59:06 $
-;; Version: $Revision: 1.37 $
+;; Created: $Date: 2006/12/07 00:21:26 $
+;; Version: $Revision: 1.38 $
 ;; Keywords: faces, help, comm, news, mail, processes, mouse, hypermedia
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -354,7 +354,10 @@ MUST-BE-VIEWING is the current URL when the timer expires."
                                  (mm-handle-media-type handle)))))
       ;; Fixme: can handle be null?
       (cond
-       ((equal (mm-handle-media-type handle) "text/html")
+       ((or (equal (mm-handle-media-type handle) "text/html")
+           ;; Ultimately this should be handled by an XML parser, but
+           ;; this will mostly work for now:
+           (equal (mm-handle-media-type handle) "application/xhtml+xml"))
        ;; Special case text/html if it comes through w3-fetch
        (set-buffer (generate-new-buffer " *w3-html*"))
        (mm-disable-multibyte)

commit e512bda6a7ed5868cf2be8271bddfb20fea50ffe
Author: Magnus Henoch <address@hidden>
Date:   Wed Nov 29 11:59:15 2006 +0000

    *** empty log message ***

diff --git a/ChangeLog b/ChangeLog
index 842c1c4..d99a2c7 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2006-11-29  Magnus Henoch  <address@hidden>
+
+       * lisp/w3.el (w3-download-redirect-callback): New function.
+       (w3-download-url): Use it instead of w3-download-callback.
+
 2006-11-01  Magnus Henoch  <address@hidden>
 
        * lisp/w3.el (w3-fetch-redirect-callback): Handle both old and new

commit f8f8a943715c47daa0b0afb1346893c2815b0e6f
Author: Magnus Henoch <address@hidden>
Date:   Wed Nov 29 11:59:06 2006 +0000

    (w3-download-redirect-callback): New function.
    (w3-download-url): Use it instead of w3-download-callback.

diff --git a/lisp/w3.el b/lisp/w3.el
index 6a2f24d..8ae98ae 100644
--- a/lisp/w3.el
+++ b/lisp/w3.el
@@ -1,7 +1,7 @@
 ;;; w3.el --- Main functions for emacs-w3 on all platforms/versions
 ;; Author: $Author: legoscia $
-;; Created: $Date: 2006/11/01 00:21:50 $
-;; Version: $Revision: 1.36 $
+;; Created: $Date: 2006/11/29 11:59:06 $
+;; Version: $Revision: 1.37 $
 ;; Keywords: faces, help, comm, news, mail, processes, mouse, hypermedia
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -1867,6 +1867,31 @@ Emacs."
                    (setq result (cons x result))))
     result))
 
+(defun w3-download-redirect-callback (&rest args)
+  (let (redirect-url errorp)
+    ;; Handle both styles of `url-retrieve' callbacks...
+    (cond
+     ((listp (car args))
+      ;; Emacs 22 style.  First argument is a list.
+      (let ((status (car args)))
+       (when (eq (car status) :error)
+         (setq errorp t)
+         (setq status (cddr args)))
+       (when (eq (car status) :redirect)
+         (setq redirect-url (second (car args))))
+
+       (setq args (cdr args))))
+
+     ((eq (car args) :redirect)
+      ;; Pre-22 redirect.
+      (setq redirect-url (cadr args))
+      (while (eq (car args) :redirect)
+       (setq args (cddr args)))))
+
+    (if errorp
+       (message "Download of %s failed." (url-view-url t))
+      (w3-download-callback (car args)))))
+
 (defun w3-download-callback (fname)
   (let ((coding-system-for-write 'binary))
     (write-region (point-min) (point-max) fname))
@@ -1904,7 +1929,7 @@ Emacs."
                                     stub-fname
                                     nil
                                     stub-fname) dir))))
-    (url-retrieve url 'w3-download-callback (list fname))))
+    (url-retrieve url 'w3-download-redirect-callback (list fname))))
 
 ;;;###autoload
 (defun w3-follow-link-other-frame (&optional p)

commit fb5b3c55371fd0cb7a1e72b8a9cb2fd77eeecf20
Author: Magnus Henoch <address@hidden>
Date:   Wed Nov 1 00:21:49 2006 +0000

    lisp/w3.el (w3-fetch-redirect-callback): Handle both old and new style
    of `url-retrieve' callback.
    
    lisp/w3-display.el (w3-finalize-image-download-skip-redirects): Ditto.

diff --git a/ChangeLog b/ChangeLog
index 9d51c94..842c1c4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2006-11-01  Magnus Henoch  <address@hidden>
+
+       * lisp/w3.el (w3-fetch-redirect-callback): Handle both old and new
+       style of `url-retrieve' callback.
+
+       * lisp/w3-display.el (w3-finalize-image-download-skip-redirects):
+       Ditto.
+
 2006-10-17  Magnus Henoch  <address@hidden>
 
        * lisp/w3.el (w3-save-url): Use kill-new.
diff --git a/lisp/w3-display.el b/lisp/w3-display.el
index 5d1f487..3a1f045 100644
--- a/lisp/w3-display.el
+++ b/lisp/w3-display.el
@@ -1,6 +1,6 @@
 ;;; w3-display.el --- W3 display engine
 ;; Author: William M. Perry <address@hidden>
-;; Version: $Revision: 1.45 $
+;; Version: $Revision: 1.46 $
 ;; Keywords: faces, help, hypermedia
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -872,14 +872,34 @@ If the face already exists, it is unmodified."
        (url-retrieve src 'w3-finalize-image-download-skip-redirects (list src 
buf 'background face)))))))
 
 (defun w3-finalize-image-download-skip-redirects (&rest args)
-  ;; Skip any number of redirects, conserving the real URL of the
-  ;; image.
-  (let ((url (if (eq (car args) :redirect)
-                (cadr args)
-              (car args))))
-    (while (eq (car args) :redirect)
-      (setq args (cddr args)))
-    (apply 'w3-finalize-image-download args)))
+  (let (redirect-url errorp)
+    ;; Handle both styles of `url-retrieve' callbacks...
+    (cond
+     ((listp (car args))
+      ;; Emacs 22 style.  First argument is a list.
+      (let ((status (car args)))
+       (when (eq (car status) :error)
+         (setq errorp (cadr status))
+         (setq status (cddr status)))
+       (when (eq (car status) :redirect)
+         (setq redirect-url (second (car args))))
+
+       (setq args (cdr args))))
+
+     ((eq (car args) :redirect)
+      ;; Pre-22 redirect.
+      (setq redirect-url (cadr args))
+      (while (eq (car args) :redirect)
+       (setq args (cddr args)))))
+
+    (if errorp
+       (progn
+         ;;(message "Reading of %s failed: %s" (or redirect-url (car args)) 
errorp)
+         (url-mark-buffer-as-dead (current-buffer)))
+      ;; Actually, for images we don't want to know the real URL, as the
+      ;; original address is used when putting the images in the right
+      ;; place.  Thus we ignore redirect-url.
+      (apply 'w3-finalize-image-download args))))
 
 (defun w3-finalize-image-download (url buffer &optional widget face)
   (let ((glyph nil)
diff --git a/lisp/w3.el b/lisp/w3.el
index ff671a8..6a2f24d 100644
--- a/lisp/w3.el
+++ b/lisp/w3.el
@@ -1,7 +1,7 @@
 ;;; w3.el --- Main functions for emacs-w3 on all platforms/versions
 ;; Author: $Author: legoscia $
-;; Created: $Date: 2006/10/17 20:24:48 $
-;; Version: $Revision: 1.35 $
+;; Created: $Date: 2006/11/01 00:21:50 $
+;; Version: $Revision: 1.36 $
 ;; Keywords: faces, help, comm, news, mail, processes, mouse, hypermedia
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -299,12 +299,28 @@ MUST-BE-VIEWING is the current URL when the timer 
expires."
                               (string-to-int (or reload "5"))))))
 
 (defun w3-fetch-redirect-callback (&rest args)
-  ;; Web page was fetched, but `url-retrieve' might have added
-  ;; information about redirections.
-  (w3-fetch-callback
-   (if (eq (car args) :redirect)
-       (cadr args)
-     (car args))))
+  (let (redirect-url errorp)
+    ;; Handle both styles of `url-retrieve' callbacks...
+    (cond
+     ((listp (car args))
+      ;; Emacs 22 style.  First argument is a list.
+      (let ((status (car args)))
+       (when (eq (car status) :error)
+         (setq errorp t)
+         (setq status (cddr args)))
+       (when (eq (car status) :redirect)
+         (setq redirect-url (second (car args))))
+
+       (setq args (cdr args))))
+
+     ((eq (car args) :redirect)
+      ;; Pre-22 redirect.
+      (setq redirect-url (cadr args))
+      (while (eq (car args) :redirect)
+       (setq args (cddr args)))))
+
+    ;; w3-fetch-callback can handle errors, too.
+    (w3-fetch-callback (or redirect-url (car args)))))
 
 (defun w3-fetch-callback (url)
   (w3-nasty-disgusting-http-equiv-handling (current-buffer) url)

commit ed38e25bbfa8fdcabcc1cc9c9e4df49f3bfd5cd0
Author: Magnus Henoch <address@hidden>
Date:   Tue Oct 17 20:24:47 2006 +0000

    lisp/w3.el (w3-save-url): Use kill-new.
    lisp/w3-xemac.el (w3-store-in-clipboard): Remove.

diff --git a/ChangeLog b/ChangeLog
index 865fb36..9d51c94 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2006-10-17  Magnus Henoch  <address@hidden>
+
+       * lisp/w3.el (w3-save-url): Use kill-new.
+
+       * lisp/w3-xemac.el (w3-store-in-clipboard): Remove.
+
 2006-10-13  Magnus Henoch  <address@hidden>
 
        * lisp/w3-parse.el (w3-slow-parse-buffer): Don't call
diff --git a/lisp/w3-xemac.el b/lisp/w3-xemac.el
index a2cb663..f49ac24 100644
--- a/lisp/w3-xemac.el
+++ b/lisp/w3-xemac.el
@@ -1,7 +1,7 @@
 ;;; w3-xemac.el --- XEmacs specific functions for emacs-w3
-;; Author: $Author: wmperry $
-;; Created: $Date: 1999/12/05 08:36:12 $
-;; Version: $Revision: 1.2 $
+;; Author: $Author: legoscia $
+;; Created: $Date: 2006/10/17 20:24:48 $
+;; Version: $Revision: 1.3 $
 ;; Keywords: faces, help, mouse, hypermedia
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -90,21 +90,6 @@
     )
   )
 
-(defun w3-store-in-clipboard (str)
-  "Store string STR into the clipboard in X"
-  ;; If possible, let's use the builtin XEmacs device-independent version
-  ;; of this function.  This exists as of XEmacs 21.0, so we should still
-  ;; provide our own version in case we are not on the bleeding edge.
-  (if (fboundp 'own-selection)
-      (own-selection str)
-    (case (device-type)
-      (x
-       (x-own-selection str))
-      (mswindows
-       (mswindows-own-selection str))
-      (otherwise
-       nil))))
-
 (defun w3-mode-motion-hook (e)
   (let* ((glyph  (event-glyph e))
         (x      (and glyph (event-glyph-x-pixel e)))
diff --git a/lisp/w3.el b/lisp/w3.el
index 94d86d9..ff671a8 100644
--- a/lisp/w3.el
+++ b/lisp/w3.el
@@ -1,7 +1,7 @@
 ;;; w3.el --- Main functions for emacs-w3 on all platforms/versions
 ;; Author: $Author: legoscia $
-;; Created: $Date: 2006/10/11 01:23:17 $
-;; Version: $Revision: 1.34 $
+;; Created: $Date: 2006/10/17 20:24:48 $
+;; Version: $Revision: 1.35 $
 ;; Keywords: faces, help, comm, news, mail, processes, mouse, hypermedia
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -1537,11 +1537,8 @@ as high as possible in w3-explicit-conversion-tree"
            (t (url-view-url t)))))
     (if x
        (progn
-         (setq kill-ring (cons x kill-ring))
-         (setq kill-ring-yank-pointer kill-ring)
-         (message "Stored URL in kill-ring.")
-         (if (fboundp 'w3-store-in-clipboard)
-             (w3-store-in-clipboard x)))
+         (kill-new x)
+         (message "Stored URL in kill-ring."))
       (error "No URL to store"))))
 
 (fset 'w3-end-of-document 'end-of-buffer)

commit aabeb8bb96425f17603fd13d9aa1b509b4bd521f
Author: Magnus Henoch <address@hidden>
Date:   Fri Oct 13 00:33:55 2006 +0000

    (w3-slow-parse-buffer): Don't call w3-element-content-model on nil
    values.

diff --git a/ChangeLog b/ChangeLog
index 6eb59a0..865fb36 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2006-10-13  Magnus Henoch  <address@hidden>
+
+       * lisp/w3-parse.el (w3-slow-parse-buffer): Don't call
+       w3-element-content-model on nil values.
+
 2006-10-12  Magnus Henoch  <address@hidden>
 
        * lisp/w3-imap.el (w3-image-loadable-p): Ignore errors in
diff --git a/lisp/w3-parse.el b/lisp/w3-parse.el
index 65cb4e9..6bc1b5b 100644
--- a/lisp/w3-parse.el
+++ b/lisp/w3-parse.el
@@ -2490,9 +2490,11 @@ Returns a data structure containing the parsed 
information."
                      ((looking-at "/>")
                       (forward-char 2)
                       (or ;; XHTML-style empty tag
-                       (eq 'EMPTY
-                           (w3-element-content-model
-                            (get w3-p-d-tag-name 'html-element-info))) 
+                       (let ((html-element-info (get w3-p-d-tag-name 
'html-element-info)))
+                         (and html-element-info
+                              (eq 'EMPTY
+                                  (w3-element-content-model
+                                   html-element-info)))) 
                        ;; XHTML empty element which is not ordinarily
                        ;; empty.  Simulate by inserting an end tag.
                        (save-excursion

commit 609bb3b42a5422011d59da2d37fc8aaa30c6c9c1
Author: Magnus Henoch <address@hidden>
Date:   Thu Oct 12 21:32:16 2006 +0000

    (w3-image-loadable-p): Ignore errors in url-file-attributes.

diff --git a/ChangeLog b/ChangeLog
index e0350b4..6eb59a0 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
 2006-10-12  Magnus Henoch  <address@hidden>
 
+       * lisp/w3-imap.el (w3-image-loadable-p): Ignore errors in
+       url-file-attributes.
+
        * lisp/w3-display.el (w3-finalize-image-download-skip-redirects):
        New function.
        (w3-maybe-start-background-image-download)
diff --git a/lisp/w3-imap.el b/lisp/w3-imap.el
index e03994d..99948cf 100644
--- a/lisp/w3-imap.el
+++ b/lisp/w3-imap.el
@@ -1,7 +1,7 @@
 ;;; w3-imap.el --- Imagemap functions
-;; Author: $Author: sds $
-;; Created: $Date: 2003/06/26 18:43:27 $
-;; Version: $Revision: 1.4 $
+;; Author: $Author: legoscia $
+;; Created: $Date: 2006/10/12 21:32:16 $
+;; Version: $Revision: 1.5 $
 ;; Keywords: hypermedia
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -210,7 +210,8 @@ vectors."
 
 (defun w3-image-loadable-p (href force)
   (or force
-      (let ((attribs (url-file-attributes href)))
+      (let ((attribs (condition-case nil (url-file-attributes href)
+                      (error nil))))
         (and attribs
              ;; this is clearly an error: `file-attributes' returns
              ;; the permissions string as the 8th element, not a mime type!

commit 20ca0e8de882282c7d11e832195df33d780b28e3
Author: Magnus Henoch <address@hidden>
Date:   Wed Oct 11 22:18:28 2006 +0000

    (w3-finalize-image-download-skip-redirects): New function.
    (w3-maybe-start-background-image-download)
    (w3-maybe-start-image-download): Use it instead of
    w3-finalize-image-download.

diff --git a/ChangeLog b/ChangeLog
index 52fa100..e0350b4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2006-10-12  Magnus Henoch  <address@hidden>
+
+       * lisp/w3-display.el (w3-finalize-image-download-skip-redirects):
+       New function.
+       (w3-maybe-start-background-image-download)
+       (w3-maybe-start-image-download): Use it instead of
+       w3-finalize-image-download.
+
 2006-10-11  Magnus Henoch  <address@hidden>
 
        * lisp/w3.el (w3-fetch-redirect-callback): New function.
diff --git a/lisp/w3-display.el b/lisp/w3-display.el
index b1decbf..5d1f487 100644
--- a/lisp/w3-display.el
+++ b/lisp/w3-display.el
@@ -1,6 +1,6 @@
 ;;; w3-display.el --- W3 display engine
 ;; Author: William M. Perry <address@hidden>
-;; Version: $Revision: 1.44 $
+;; Version: $Revision: 1.45 $
 ;; Keywords: faces, help, hypermedia
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -832,7 +832,7 @@ If the face already exists, it is unmodified."
            (setq w3-graphics-list (cons (cons src (make-glyph))
                                     w3-graphics-list))
          (add-to-list 'w3-graphics-list (cons src (list 'image))))
-       (url-retrieve src 'w3-finalize-image-download
+       (url-retrieve src 'w3-finalize-image-download-skip-redirects
                      (list src (widget-get widget 'buffer) widget)))))))
 
 (defun w3-maybe-start-background-image-download (src face)
@@ -869,7 +869,17 @@ If the face already exists, it is unmodified."
            (setq w3-graphics-list (cons (cons src (make-glyph))
                                     w3-graphics-list))
          (add-to-list 'w3-graphics-list (cons src (list 'image))))
-       (url-retrieve src 'w3-finalize-image-download (list src buf 'background 
face)))))))
+       (url-retrieve src 'w3-finalize-image-download-skip-redirects (list src 
buf 'background face)))))))
+
+(defun w3-finalize-image-download-skip-redirects (&rest args)
+  ;; Skip any number of redirects, conserving the real URL of the
+  ;; image.
+  (let ((url (if (eq (car args) :redirect)
+                (cadr args)
+              (car args))))
+    (while (eq (car args) :redirect)
+      (setq args (cddr args)))
+    (apply 'w3-finalize-image-download args)))
 
 (defun w3-finalize-image-download (url buffer &optional widget face)
   (let ((glyph nil)

commit 207c4e2efe7ae3343efcdf4b999410c3b69332a0
Author: Magnus Henoch <address@hidden>
Date:   Wed Oct 11 01:23:17 2006 +0000

    * lisp/w3.el (w3-fetch-redirect-callback): New function.
      (w3-fetch): Use it as url-retrieve callback instead of
      w3-fetch-callback.

diff --git a/ChangeLog b/ChangeLog
index 4508346..52fa100 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2006-10-11  Magnus Henoch  <address@hidden>
+
+       * lisp/w3.el (w3-fetch-redirect-callback): New function.
+       (w3-fetch): Use it as url-retrieve callback instead of
+       w3-fetch-callback.
+
 2006-10-09  Magnus Henoch  <address@hidden>
 
        * lisp/w3.el: Require mm-decode here too.
diff --git a/lisp/w3.el b/lisp/w3.el
index e49ca1a..94d86d9 100644
--- a/lisp/w3.el
+++ b/lisp/w3.el
@@ -1,7 +1,7 @@
 ;;; w3.el --- Main functions for emacs-w3 on all platforms/versions
 ;; Author: $Author: legoscia $
-;; Created: $Date: 2006/10/09 09:09:23 $
-;; Version: $Revision: 1.33 $
+;; Created: $Date: 2006/10/11 01:23:17 $
+;; Version: $Revision: 1.34 $
 ;; Keywords: faces, help, comm, news, mail, processes, mouse, hypermedia
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -298,6 +298,14 @@ MUST-BE-VIEWING is the current URL when the timer expires."
        (w3-setup-reload-timer uri (url-view-url t)
                               (string-to-int (or reload "5"))))))
 
+(defun w3-fetch-redirect-callback (&rest args)
+  ;; Web page was fetched, but `url-retrieve' might have added
+  ;; information about redirections.
+  (w3-fetch-callback
+   (if (eq (car args) :redirect)
+       (cadr args)
+     (car args))))
+
 (defun w3-fetch-callback (url)
   (w3-nasty-disgusting-http-equiv-handling (current-buffer) url)
   ;; Process any cookie and refresh headers.
@@ -436,7 +444,7 @@ With prefix argument, use the URL of the hyperlink under 
point instead."
                (not (funcall url-confirmation-func
                              (format "Reuse URL in buffer %s? "
                                      (buffer-name buf)))))))
-         (url-retrieve url 'w3-fetch-callback (list url))
+         (url-retrieve url 'w3-fetch-redirect-callback (list url))
        (w3-notify-when-ready buf))))))
 
 

commit 4441613f9dfabe6d8e990b92645e4af2a4d92243
Author: Magnus Henoch <address@hidden>
Date:   Mon Oct 9 09:09:23 2006 +0000

    2006-10-09  Magnus Henoch  <address@hidden>
    
        * lisp/w3.el: Require mm-decode here too.

diff --git a/ChangeLog b/ChangeLog
index 735d918..4508346 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2006-10-09  Magnus Henoch  <address@hidden>
+
+       * lisp/w3.el: Require mm-decode here too.
+
 2006-10-08  Magnus Henoch  <address@hidden>
 
        * lisp/w3-display.el: Require mm-decode when compiling.
diff --git a/lisp/w3.el b/lisp/w3.el
index e3e6fb5..e49ca1a 100644
--- a/lisp/w3.el
+++ b/lisp/w3.el
@@ -1,7 +1,7 @@
 ;;; w3.el --- Main functions for emacs-w3 on all platforms/versions
-;; Author: $Author: wmperry $
-;; Created: $Date: 2003/01/12 22:10:25 $
-;; Version: $Revision: 1.32 $
+;; Author: $Author: legoscia $
+;; Created: $Date: 2006/10/09 09:09:23 $
+;; Version: $Revision: 1.33 $
 ;; Keywords: faces, help, comm, news, mail, processes, mouse, hypermedia
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -49,6 +49,11 @@
 (require 'w3-vars)
 (eval-and-compile
   (require 'w3-display))
+
+;; Some mm-* "functions" are macros.  Ensure that they are loaded.
+(eval-when-compile
+  (require 'mm-decode))
+
 (autoload 'w3-parse-hotlist "w3-hot")
 (autoload 'w3-menu-install-menus "w3-menu")
 

commit 94de5a3592284694a2435427778cbb39596ccdfe
Author: Magnus Henoch <address@hidden>
Date:   Sun Oct 8 18:44:17 2006 +0000

    lisp/w3-display.el: Require mm-decode when compiling.

diff --git a/ChangeLog b/ChangeLog
index 5944dc9..735d918 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2006-10-08  Magnus Henoch  <address@hidden>
+
+       * lisp/w3-display.el: Require mm-decode when compiling.
+
 2006-04-28  Dave Love  <address@hidden>
 
        * texi/w3.txi: Change licence to GFDL. 
diff --git a/lisp/w3-display.el b/lisp/w3-display.el
index fd372db..b1decbf 100644
--- a/lisp/w3-display.el
+++ b/lisp/w3-display.el
@@ -1,6 +1,6 @@
 ;;; w3-display.el --- W3 display engine
 ;; Author: William M. Perry <address@hidden>
-;; Version: $Revision: 1.43 $
+;; Version: $Revision: 1.44 $
 ;; Keywords: faces, help, hypermedia
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -37,6 +37,10 @@
 (require 'w3-imap)
 (require 'w3-sysdp)
 
+;; Some mm-* "functions" are macros.  Ensure that they are loaded.
+(eval-when-compile
+  (require 'mm-decode))
+
 (autoload 'sentence-ify "flame")
 (autoload 'string-ify "flame")
 (autoload '*flame "flame")

commit e09df3b6ef8af53dadc34018e853ea2ea1a37db8
Author: Dave Love <address@hidden>
Date:   Fri Apr 28 10:57:31 2006 +0000

    *** empty log message ***

diff --git a/ChangeLog b/ChangeLog
index 6292591..5944dc9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2006-04-28  Dave Love  <address@hidden>
+
+       * texi/w3.txi: Change licence to GFDL. 
+
 2003-06-26  Sam Steingold  <address@hidden>
 
        * lisp/w3-imap.el (w3-image-loadable-p): fixed the logic

commit 0eab27c939d4e17a8ebb9d5a687c83d1d82d9df3
Author: Dave Love <address@hidden>
Date:   Fri Apr 28 10:57:15 2006 +0000

    Change licence to GFDL.

diff --git a/texi/w3.txi b/texi/w3.txi
index 4d948a9..8c6e9bd 100644
--- a/texi/w3.txi
+++ b/texi/w3.txi
@@ -12,7 +12,7 @@
 @c site: http://www.cs.indiana.edu/elisp/w3/docs.html
 @c
 @setfilename w3.info
address@hidden Emacs/W3 $State: v4.0pre.47 $ User's Manual
address@hidden Emacs/W3 $State: Exp $ User's Manual
 @iftex
 @c @finalout
 @end iftex
@@ -29,24 +29,21 @@
 @direntry
 * Emacs/W3: (w3).                 Emacs/W3 World Wide Web browser.
 @end direntry
address@hidden
-This file documents the Emacs/W3 World Wide Web browser.
 
-Copyright (C) 1993, 1994, 1995, 1996 William M. Perry
-Copyright (C) 1996, 1997 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.
-
address@hidden
-Permission is granted to process this file through Tex and print the
-results, provided the printed document carries copying permission
-notice identical to this one except for the removal of this paragraph
-(this paragraph not being relevant to the printed manual).
-
address@hidden ignore
address@hidden ifinfo
address@hidden
address@hidden copying
+Copyright @copyright{} 1993, 1994, 1995, 1996, 1997, 1999, 2000
+Free Software Foundation, Inc.
+
address@hidden
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, with the Front-Cover texts being ``A GNU
+Manual''.  A copy of the
+license is included in the section entitled ``GNU Free Documentation
+License'' in the Emacs manual.
address@hidden quotation
 @c
 @titlepage
 @sp 6
@@ -59,15 +56,6 @@ notice identical to this one except for the removal of this 
paragraph
 @sp 5
 @center William M. Perry
 @center @i{wmperry@@cs.indiana.edu}
address@hidden
address@hidden 0pt plus 1filll
-Copyright @copyright{} 1993 - 1995 William M. address@hidden
-Copyright @copyright{} 1996 - 1999 Free Software Foundation
-
-Permission is granted to make and distribute verbatim copies address@hidden
-this manual provided the copyright notice and this permission address@hidden
-are preserved on all copies.
-
 @end titlepage
 @page
 @node Top, Getting Started, (dir), (dir)
@@ -89,7 +77,7 @@ cannot be modified to your satisfaction, please send mail to 
the
 @t{w3-beta@@xemacs.org} mailing list with any suggestions.
 @xref{Reporting Bugs}.
 
-This manual corresponds to Emacs/W3 $State: v4.0pre.47 $
+This manual corresponds to Emacs/W3 $State: Exp $
 
 @menu
 * Getting Started::             Getting up and running with Emacs/W3

commit 7d6c43e977f7b59e2d82bf11a4f2ac227ee6c4e3
Author: Sam Steingold <address@hidden>
Date:   Thu Jun 26 18:43:27 2003 +0000

    (w3-image-loadable-p): fixed the logic

diff --git a/ChangeLog b/ChangeLog
index 4b16fa0..6292591 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,10 @@
+2003-06-26  Sam Steingold  <address@hidden>
+
+       * lisp/w3-imap.el (w3-image-loadable-p): fixed the logic
+
 2003-01-12  Wolfgang Jenkner <address@hidden>
 
-       * lisp/w3.el (w3-fetch-callback) 
+       * lisp/w3.el (w3-fetch-callback)
        (w3-nasty-disgusting-http-equiv-handling): When searching for the
        ':' meaning we are past the 'http/1.x' response, make sure that we
        save-execursion around it, or bad things happen.
@@ -87,7 +91,7 @@
        (w3-java-run-applet): Use url-generate-unique-filename, not
        non-existent mailcap-generate-unique-filename.
 
-       * lisp/w3-menu.el (w3-first-n-items, w3-only-links) 
+       * lisp/w3-menu.el (w3-first-n-items, w3-only-links)
        (w3-fix-spaces): Autoload to avoid compiler warnings.
        (w3-menu-filters-supported-p): Include Emacs 21.
        (w3-menu-links-constructor): Use modern backquote syntax.
@@ -176,7 +180,7 @@
 2001-10-01  Dave Love  <address@hidden>
 
        * lisp/w3-vars.el: Doc fixes.
-       (w3-meta-content-type-charset-regexp) 
+       (w3-meta-content-type-charset-regexp)
        (w3-meta-charset-content-type-regexp): Removed.
        (w3-persistent-variables): Add url-current-mime-headers.
 
@@ -200,7 +204,7 @@
 
 2001-09-09  Dave Love  <address@hidden>
 
-       * lisp/w3-display.el (w3-mode, w3-add-delayed-graphic) 
+       * lisp/w3-display.el (w3-mode, w3-add-delayed-graphic)
        (w3-find-specific-link, w3-fix-spaces): Autoload.
 
        * lisp/w3-props.el (w3-fillin-text-property): Renamed from
@@ -253,7 +257,7 @@
        cl-map-keymap.
        (w3-form-create-custom): Require cus-edit unconditionally.
        (w3-all-widgets): Move definition.
-       (w3-form-create-file-browser, w3-form-create-option-list) 
+       (w3-form-create-file-browser, w3-form-create-option-list)
        (w3-form-default-button-update): Avoid mule-truncate-string.
        (mule-sysdp): Don't require.
        (w3-form-encode-xwfu): Avoid mule-encode-string.
@@ -296,11 +300,11 @@
        * lisp/w3-vars.el (w3-version-number): Fix regexp, doc.
        (w3-html-entities): Modified per W3C entity list.
 
-       * lisp/w3-toolbar.el (w3-toolbar-back-icon, w3-toolbar-forw-icon) 
-       (w3-toolbar-home-icon, w3-toolbar-reld-icon) 
-       (w3-toolbar-imag-icon, w3-toolbar-open-icon) 
-       (w3-toolbar-print-icon, w3-toolbar-find-icon) 
-       (w3-toolbar-stop-icon, w3-toolbar-help-icon) 
+       * lisp/w3-toolbar.el (w3-toolbar-back-icon, w3-toolbar-forw-icon)
+       (w3-toolbar-home-icon, w3-toolbar-reld-icon)
+       (w3-toolbar-imag-icon, w3-toolbar-open-icon)
+       (w3-toolbar-print-icon, w3-toolbar-find-icon)
+       (w3-toolbar-stop-icon, w3-toolbar-help-icon)
        (w3-toolbar-hotl-icon) [(featurep 'tool-bar)]: Initialize to names
        of Emacs 21 icons.
        (toolbar-make-button-list) [(featurep 'tool-bar)]: Don't define.
@@ -322,14 +326,14 @@
 2001-05-31  Dave Love  <address@hidden>
 
        * lisp/w3-menu.el (w3-menu-file-menu): Fix
-       "---:shadowDoubleEtchedIn".  From Pavel Jan-Bík.-A
+       "---:shadowDoubleEtchedIn".  From Pavel Janík.
 
        * lisp/w3-parse.el (decode-char): Define with older Mule-UCS.
        (w3-expand-entity-at-point-maybe): Sanitize regexp for numeric
        entity.  Don't lose trailing space.  Grok hex form.
 
 2001-05-30  Dave Love  <address@hidden>
-       
+
        * lisp/w3-menu.el: Require w3-sysdp.
        (w3-popup-menu): Revert last change.
 
@@ -372,7 +376,7 @@
        to work around a byte-optimizer bug in Emacs 21 that caused this
        module to fail to byte-compile.
 
-2001-05-24  Pavel Jan-Bík <address@hidden>-A
+2001-05-24  Pavel Janík <address@hidden>
 
        * lisp/w3-display.el (w3-resurrect-hyperlinks): Look for next
        single property change from `st' instead of `nd' to avoid
@@ -502,9 +506,9 @@
 
 2001-01-04  Dave Love  <address@hidden>
 
-       * lisp/w3-toolbar.el (w3-add-toolbar-to-buffer) <featurep 'tool-bar>: 
+       * lisp/w3-toolbar.el (w3-add-toolbar-to-buffer) <featurep 'tool-bar>:
        Test display-graphic-p and tool-bar-lines.  Use mapc, not mapcar.
-       
+
 2001-01-03  Dave Love  <address@hidden>
 
        * lisp/w3-toolbar.el (w3-add-toolbar-to-buffer): In Emacs, test
@@ -708,5 +712,5 @@
        face attribute if it is nil.  The new redisplay doesn't like that.
 
 ;; Local Variables:
-;; coding: iso-2022-7bit
+;; coding: utf-8
 ;; End:
diff --git a/lisp/w3-imap.el b/lisp/w3-imap.el
index 893f9da..e03994d 100644
--- a/lisp/w3-imap.el
+++ b/lisp/w3-imap.el
@@ -1,7 +1,7 @@
 ;;; w3-imap.el --- Imagemap functions
-;; Author: $Author: fx $
-;; Created: $Date: 2001/05/14 17:29:25 $
-;; Version: $Revision: 1.3 $
+;; Author: $Author: sds $
+;; Created: $Date: 2003/06/26 18:43:27 $
+;; Version: $Revision: 1.4 $
 ;; Keywords: hypermedia
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -97,7 +97,7 @@ All arguments are vectors of [X Y] coordinates."
 (defun w3-image-poly-alloc (n)
   (if (< n 3)
       (error "w3-image-poly-alloc: invalid number of sides (%d)" n))
-  
+
   (vector n 0 (make-vector n nil) (make-vector n nil)))
 
 (defun w3-image-poly-assign (p x y)
@@ -209,13 +209,16 @@ vectors."
   `(cdr-safe (assoc ,href w3-graphics-list)))
 
 (defun w3-image-loadable-p (href force)
-  (let ((attribs (url-file-attributes href)))
-    (or force
-       (assoc (nth 8 attribs) w3-allowed-image-types)
-       (null w3-image-size-restriction)
-       (<= (nth 7 attribs) 0)
-       (and (numberp w3-image-size-restriction)
-            (<= (nth 7 attribs) w3-image-size-restriction)))))
+  (or force
+      (let ((attribs (url-file-attributes href)))
+        (and attribs
+             ;; this is clearly an error: `file-attributes' returns
+             ;; the permissions string as the 8th element, not a mime type!
+             ;; (assoc (nth 8 attribs) w3-allowed-image-types)
+             (or (null w3-image-size-restriction)
+                 (and (<= (nth 7 attribs) 0)
+                      (or (not (numberp w3-image-size-restriction))
+                          (<= (nth 7 attribs) w3-image-size-restriction))))))))
 
 (defmacro w3-image-invalid-glyph-p (glyph)
   `(if (vectorp glyph)

commit 380d7602424cac4f454c245d584a5c25f224cd19
Author: William M. Perry <address@hidden>
Date:   Sun Jan 12 22:10:25 2003 +0000

    Fix http-equiv handling bug thanks to Wolfgang Jenkner <address@hidden>

diff --git a/ChangeLog b/ChangeLog
index c2034f2..4b16fa0 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2003-01-12  Wolfgang Jenkner <address@hidden>
+
+       * lisp/w3.el (w3-fetch-callback) 
+       (w3-nasty-disgusting-http-equiv-handling): When searching for the
+       ':' meaning we are past the 'http/1.x' response, make sure that we
+       save-execursion around it, or bad things happen.
+
 2002-10-28  Dave Love  <address@hidden>
 
        * lisp/w3-display.el (w3-display-node): Don't use
diff --git a/lisp/w3.el b/lisp/w3.el
index 6e47cb3..e3e6fb5 100644
--- a/lisp/w3.el
+++ b/lisp/w3.el
@@ -1,7 +1,7 @@
 ;;; w3.el --- Main functions for emacs-w3 on all platforms/versions
 ;; Author: $Author: wmperry $
-;; Created: $Date: 2002/10/28 02:32:11 $
-;; Version: $Revision: 1.31 $
+;; Created: $Date: 2003/01/12 22:10:25 $
+;; Version: $Revision: 1.32 $
 ;; Keywords: faces, help, comm, news, mail, processes, mouse, hypermedia
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -248,7 +248,8 @@ Operate on BUFFER."
                         (w3-parse-buffer)))))
                (when http-header
                  (goto-char (point-min))
-                 (unless (search-forward ":" (line-end-position) t)
+                 (unless (save-excursion
+                           (search-forward ":" (line-end-position) t))
                    (forward-line))
                  (insert http-header)))))))))
 
@@ -300,7 +301,8 @@ MUST-BE-VIEWING is the current URL when the timer expires."
       (save-restriction
        (mail-narrow-to-head)
        (goto-char (point-min))
-       (unless (search-forward ":" (line-end-position) t)
+       (unless (save-excursion
+                 (search-forward ":" (line-end-position) t))
          (forward-line))
        (setq headers (mail-header-extract))
        (let (refreshed)

commit 512e3a0528fc9d3df38944844fd53a604df1d38d
Author: Dave Love <address@hidden>
Date:   Mon Oct 28 23:58:07 2002 +0000

    *** empty log message ***

diff --git a/ChangeLog b/ChangeLog
index d5c7621..c2034f2 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2002-10-28  Dave Love  <address@hidden>
+
+       * lisp/w3-display.el (w3-display-node): Don't use
+       font-running-xemacs.
+
 2002-10-27  William M. Perry  <address@hidden>
 
        * lisp/w3.el (w3-nasty-disgusting-http-equiv-handling): Now takes

commit 2bbf3e094063b7c3be4203c4688f6fe375a427ae
Author: Dave Love <address@hidden>
Date:   Mon Oct 28 23:55:54 2002 +0000

    (w3-display-node): Don't use
    font-running-xemacs.

diff --git a/lisp/w3-display.el b/lisp/w3-display.el
index d85a270..fd372db 100644
--- a/lisp/w3-display.el
+++ b/lisp/w3-display.el
@@ -1,6 +1,6 @@
 ;;; w3-display.el --- W3 display engine
 ;; Author: William M. Perry <address@hidden>
-;; Version: $Revision: 1.42 $
+;; Version: $Revision: 1.43 $
 ;; Keywords: faces, help, hypermedia
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -2458,7 +2458,7 @@ Format: (((image-alt row column) . offset) ...)")
                 (setf (car w3-face-color) fore)
                 (setf (car w3-face-background-color) back)
 
-                (if (not font-running-xemacs)
+                (if (not (featurep 'xemacs))
                     (setq w3-display-background-properties (cons fore back))
                   (if pixm
                       (w3-maybe-start-background-image-download pixm 'default))

commit a61e788da868f3b40f803940edf5eabc1dcde8a7
Author: William M. Perry <address@hidden>
Date:   Mon Oct 28 02:32:11 2002 +0000

        * lisp/w3.el (w3-nasty-disgusting-http-equiv-handling): Now takes
        a second parameter, which is the URL that is being processed.
        This allows us to set url-current-object in the temporary buffer.
        This fixes the bug where a not-fully-qualified URL would cause
        url-expand-filename to get 'confused' and throw an error.
        (w3-fetch-callback): Pass the new URL argument to
        w3-nasty-disgusting-*

diff --git a/ChangeLog b/ChangeLog
index 626c486..d5c7621 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2002-10-27  William M. Perry  <address@hidden>
+
+       * lisp/w3.el (w3-nasty-disgusting-http-equiv-handling): Now takes
+       a second parameter, which is the URL that is being processed.
+       This allows us to set url-current-object in the temporary buffer.
+       This fixes the bug where a not-fully-qualified URL would cause
+       url-expand-filename to get 'confused' and throw an error.
+       (w3-fetch-callback): Pass the new URL argument to
+       w3-nasty-disgusting-*
+
 2002-10-22  William M. Perry  <address@hidden>
 
        * lisp/w3-forms.el (w3-form-create-option-list): Invalid call to
diff --git a/lisp/w3.el b/lisp/w3.el
index e408a11..6e47cb3 100644
--- a/lisp/w3.el
+++ b/lisp/w3.el
@@ -1,7 +1,7 @@
 ;;; w3.el --- Main functions for emacs-w3 on all platforms/versions
 ;; Author: $Author: wmperry $
-;; Created: $Date: 2002/10/23 03:33:41 $
-;; Version: $Revision: 1.30 $
+;; Created: $Date: 2002/10/28 02:32:11 $
+;; Version: $Revision: 1.31 $
 ;; Keywords: faces, help, comm, news, mail, processes, mouse, hypermedia
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -208,7 +208,7 @@ variable `http-header'."
                                         (cdr (assq 'content attrs))))))))
              (w3-http-equiv-headers (nth 2 node)))))))
 
-(defun w3-nasty-disgusting-http-equiv-handling (buffer)
+(defun w3-nasty-disgusting-http-equiv-handling (buffer url)
   "Propagate information from <meta http-equiv...> elements to MIME headers.
 Operate on BUFFER."
   (let (content-type end-of-headers extra-headers)
@@ -242,6 +242,7 @@ Operate on BUFFER."
                       ;; widening and munging character references
                       ;; &c.
                       (with-temp-buffer
+                        (setq url-current-object (url-generic-parse-url url))
                         (insert-buffer-substring buffer
                                                  end-of-headers end-of-head)
                         (w3-parse-buffer)))))
@@ -292,7 +293,7 @@ MUST-BE-VIEWING is the current URL when the timer expires."
                               (string-to-int (or reload "5"))))))
 
 (defun w3-fetch-callback (url)
-  (w3-nasty-disgusting-http-equiv-handling (current-buffer))
+  (w3-nasty-disgusting-http-equiv-handling (current-buffer) url)
   ;; Process any cookie and refresh headers.
   (let (headers)
     (ignore-errors
@@ -333,18 +334,18 @@ MUST-BE-VIEWING is the current URL when the timer 
expires."
        (setq url-current-mime-headers headers)
        (w3-notify-when-ready (current-buffer))
        (mm-destroy-parts handle))
-       ;;        ((equal (mm-handle-media-type handle) "text/xml")
-       ;;      ;; Special case text/xml if it comes through w3-fetch
-       ;;      (set-buffer (generate-new-buffer " *w3-xml*"))
-       ;;      (mm-disable-multibyte)
-       ;;      (mm-insert-part handle)
-       ;;      (w3-decode-charset handle)
-       ;;      !!! Need some function to view XML nicely... maybe the
-       ;;      !!! customize tree control?
-       ;;      (setq url-current-object (url-generic-parse-url url)
-       ;;            url-current-mime-headers headers)
-       ;;      (mm-destroy-parts handle)
-       ;;      (w3-notify-when-ready (current-buffer)))
+       ;;        ((equal (mm-handle-media-type handle) "text/xml")
+       ;;      ;; Special case text/xml if it comes through w3-fetch
+       ;;      (set-buffer (generate-new-buffer " *w3-xml*"))
+       ;;      (mm-disable-multibyte)
+       ;;      (mm-insert-part handle)
+       ;;      (w3-decode-charset handle)
+       ;;      !!! Need some function to view XML nicely... maybe the
+       ;;      !!! customize tree control?
+       ;;      (setq url-current-object (url-generic-parse-url url)
+       ;;            url-current-mime-headers headers)
+       ;;      (mm-destroy-parts handle)
+       ;;      (w3-notify-when-ready (current-buffer)))
        ((equal (car-safe (mm-handle-type handle))
               "application/x-elisp-parsed-html")
        ;; Also need to special-case pre-parsed representations of HTML.

commit fff9a202d3d71a8055f62655725f513066f78e37
Author: William M. Perry <address@hidden>
Date:   Wed Oct 23 03:33:41 2002 +0000

    Fix select options.  Remove cookie handling - this is all in the http 
loader now.

diff --git a/ChangeLog b/ChangeLog
index de8e02c..626c486 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,17 @@
+2002-10-22  William M. Perry  <address@hidden>
+
+       * lisp/w3-forms.el (w3-form-create-option-list): Invalid call to
+       truncate-string-to-width caused all reasonably sized <option>
+       elements in a <select> to be invisible.
+       (w3-form-default-button-update): Similar problem for buttons.
+
+2002-09-17  William M. Perry  <address@hidden>
+
+       * lisp/w3.el (w3-fetch-callback): Removed set-cookie handling.
+       This needs to be handled in the HTTP protocol loader so that
+       cookies that get set on redirects are honored.  This seems to be
+       why my.yahoo.com has stopped working.
+
 2002-09-15  William M. Perry  <address@hidden>
 
        * lisp/w3.el (w3-nasty-disgusting-http-equiv-handling): Need to
diff --git a/lisp/font.el b/lisp/font.el
index be08491..c5a977e 100644
--- a/lisp/font.el
+++ b/lisp/font.el
@@ -2,7 +2,7 @@
 
 ;; Author: wmperry
 ;; Maintainer: Bill Perry <address@hidden>
-;; Created: $Date: 2002/02/01 17:42:48 $
+;; Created: $Date: 2002/10/23 03:33:41 $
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;; Copyright (c) 1995, 1996 by William M. Perry <address@hidden>
@@ -30,7 +30,7 @@
 (require 'devices)
 (require 'disp-table)
 
-(when (featurep 'xemacs)
+(when (fboundp 'globally-declare-fboundp)
   (globally-declare-fboundp
    '(x-list-fonts
      mswindows-list-fonts fontsetp get-font-info
diff --git a/lisp/w3-forms.el b/lisp/w3-forms.el
index e0fa890..db05cc6 100644
--- a/lisp/w3-forms.el
+++ b/lisp/w3-forms.el
@@ -1,7 +1,7 @@
 ;;; w3-forms.el --- Emacs-w3 forms parsing code for new display engine
-;; Author: $Author: fx $
-;; Created: $Date: 2001/09/09 15:30:49 $
-;; Version: $Revision: 1.10 $
+;; Author: $Author: wmperry $
+;; Created: $Date: 2002/10/23 03:33:41 $
+;; Version: $Revision: 1.11 $
 ;; Keywords: faces, help, comm, data, languages
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -404,11 +404,12 @@
                       (mapcar
                        (function
                         (lambda (x)
-                          (list 'choice-item :format "%[%t%]"
+                          (list 'choice-item
+                                :format "%[%t%]"
                                 :emacspeak-help 'w3-form-summarize-field
                                 :menu-tag-get (` (lambda (zed) (, (car x))))
                                 :tag (truncate-string-to-width (car x)
-                                                               size ? )
+                                                               size nil ? )
                                 :button-face face
                                 :value-face face
                                 :value (car x))))
@@ -491,7 +492,7 @@
                     (if (eq 'password (w3-form-element-type info))
                         (make-string (length v) ?*)
                       v)
-                    (w3-form-element-size info) ? )))
+                    (w3-form-element-size info) nil ? )))
     v))
 
 (defun w3-form-default-button-callback (widget &rest ignore)
diff --git a/lisp/w3.el b/lisp/w3.el
index 8fef8b5..e408a11 100644
--- a/lisp/w3.el
+++ b/lisp/w3.el
@@ -1,7 +1,7 @@
 ;;; w3.el --- Main functions for emacs-w3 on all platforms/versions
 ;; Author: $Author: wmperry $
-;; Created: $Date: 2002/09/16 01:43:42 $
-;; Version: $Revision: 1.29 $
+;; Created: $Date: 2002/10/23 03:33:41 $
+;; Version: $Revision: 1.30 $
 ;; Keywords: faces, help, comm, news, mail, processes, mouse, hypermedia
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -296,22 +296,20 @@ MUST-BE-VIEWING is the current URL when the timer 
expires."
   ;; Process any cookie and refresh headers.
   (let (headers)
     (ignore-errors
-     (save-restriction
-       (mail-narrow-to-head)
-       (goto-char (point-min))
-       (unless (search-forward ":" (line-end-position) t)
-        (forward-line))
-       (setq headers (mail-header-extract))
-       (let (refreshed)
-        (dolist (header headers)
-          ;; Act on multiple cookies if necessary, but only on a
-          ;; single refresh request in case there's more than one.
-          (case (car header)
-                (set-cookie (url-cookie-handle-set-cookie (cdr header)))
-                ;(set-cookie2 (url-cookie-handle-set-cookie2 (cdr header)))
-                (refresh (unless refreshed
-                           (w3-handle-refresh-header (cdr header))
-                           (setq refreshed t))))))))
+      (save-restriction
+       (mail-narrow-to-head)
+       (goto-char (point-min))
+       (unless (search-forward ":" (line-end-position) t)
+         (forward-line))
+       (setq headers (mail-header-extract))
+       (let (refreshed)
+         (dolist (header headers)
+           ;; Act on multiple cookies if necessary, but only on a
+           ;; single refresh request in case there's more than one.
+           (case (car header)
+             (refresh (unless refreshed
+                        (w3-handle-refresh-header (cdr header))
+                        (setq refreshed t))))))))
     (let ((handle (mm-dissect-buffer t))
          (w3-explicit-coding-system
           (or w3-explicit-coding-system
@@ -335,18 +333,18 @@ MUST-BE-VIEWING is the current URL when the timer 
expires."
        (setq url-current-mime-headers headers)
        (w3-notify-when-ready (current-buffer))
        (mm-destroy-parts handle))
-;;        ((equal (mm-handle-media-type handle) "text/xml")
-;;     ;; Special case text/xml if it comes through w3-fetch
-;;     (set-buffer (generate-new-buffer " *w3-xml*"))
-;;     (mm-disable-multibyte)
-;;     (mm-insert-part handle)
-;;     (w3-decode-charset handle)
-;;      !!! Need some function to view XML nicely... maybe the
-;;      !!! customize tree control?
-;;     (setq url-current-object (url-generic-parse-url url)
-;;           url-current-mime-headers headers)
-;;     (mm-destroy-parts handle)
-;;     (w3-notify-when-ready (current-buffer)))
+       ;;        ((equal (mm-handle-media-type handle) "text/xml")
+       ;;      ;; Special case text/xml if it comes through w3-fetch
+       ;;      (set-buffer (generate-new-buffer " *w3-xml*"))
+       ;;      (mm-disable-multibyte)
+       ;;      (mm-insert-part handle)
+       ;;      (w3-decode-charset handle)
+       ;;      !!! Need some function to view XML nicely... maybe the
+       ;;      !!! customize tree control?
+       ;;      (setq url-current-object (url-generic-parse-url url)
+       ;;            url-current-mime-headers headers)
+       ;;      (mm-destroy-parts handle)
+       ;;      (w3-notify-when-ready (current-buffer)))
        ((equal (car-safe (mm-handle-type handle))
               "application/x-elisp-parsed-html")
        ;; Also need to special-case pre-parsed representations of HTML.
@@ -356,7 +354,7 @@ MUST-BE-VIEWING is the current URL when the timer expires."
        ((mm-inlinable-p handle)
        ;; We can view it inline!
        (set-buffer (generate-new-buffer url))
-       (require 'mm-view)              ; make sure methods are defined
+       (require 'mm-view)             ; make sure methods are defined
        (mm-display-part handle)
        (set-buffer-modified-p nil)
        (w3-mode)

commit a50f82b09b8c9ecc832a2cd5d5825dfbe6247a33
Author: William M. Perry <address@hidden>
Date:   Mon Sep 16 01:43:42 2002 +0000

    Fix cookie handling.

diff --git a/ChangeLog b/ChangeLog
index 4827a58..de8e02c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+2002-09-15  William M. Perry  <address@hidden>
+
+       * lisp/w3.el (w3-nasty-disgusting-http-equiv-handling): Need to
+       make sure that we skip the 'HTTP/1.x' line at the top of the
+       buffer (due to changes in the url library), or we end up confusing
+       mail-header-extract if there are any <meta> elements with
+       http-equiv headers in them.
+       (w3-fetch-callback): I'm an idiot and was trying to compare the
+       VALUE of a header against the actual header name for doing cookie
+       handling.  Arguably this cookie handling should all be done in the
+       HTTP handler itself.  Should move it somebday.
+
 2002-02-01  William M. Perry  <address@hidden>
 
        * lisp/w3.el (w3-fetch-callback): Fiddling with how to display XML
diff --git a/lisp/w3.el b/lisp/w3.el
index 1419e9d..8fef8b5 100644
--- a/lisp/w3.el
+++ b/lisp/w3.el
@@ -1,7 +1,7 @@
 ;;; w3.el --- Main functions for emacs-w3 on all platforms/versions
 ;; Author: $Author: wmperry $
-;; Created: $Date: 2002/02/01 17:42:49 $
-;; Version: $Revision: 1.28 $
+;; Created: $Date: 2002/09/16 01:43:42 $
+;; Version: $Revision: 1.29 $
 ;; Keywords: faces, help, comm, news, mail, processes, mouse, hypermedia
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -247,6 +247,8 @@ Operate on BUFFER."
                         (w3-parse-buffer)))))
                (when http-header
                  (goto-char (point-min))
+                 (unless (search-forward ":" (line-end-position) t)
+                   (forward-line))
                  (insert http-header)))))))))
 
 (defun w3-setup-reload-timer (url must-be-viewing &optional time)
@@ -304,8 +306,9 @@ MUST-BE-VIEWING is the current URL when the timer expires."
         (dolist (header headers)
           ;; Act on multiple cookies if necessary, but only on a
           ;; single refresh request in case there's more than one.
-          (case (cdr header)
+          (case (car header)
                 (set-cookie (url-cookie-handle-set-cookie (cdr header)))
+                ;(set-cookie2 (url-cookie-handle-set-cookie2 (cdr header)))
                 (refresh (unless refreshed
                            (w3-handle-refresh-header (cdr header))
                            (setq refreshed t))))))))

commit 2ce1b75bfaf8c1b4db270ae1accdde81b2c2cd52
Author: Sam Steingold <address@hidden>
Date:   Sun May 19 16:42:52 2002 +0000

    ignore generated files

diff --git a/etc/.cvsignore b/etc/.cvsignore
new file mode 100644
index 0000000..f3c7a7c
--- /dev/null
+++ b/etc/.cvsignore
@@ -0,0 +1 @@
+Makefile
diff --git a/lisp/.cvsignore b/lisp/.cvsignore
new file mode 100644
index 0000000..e72d50b
--- /dev/null
+++ b/lisp/.cvsignore
@@ -0,0 +1,5 @@
+Makefile
+auto-autoloads.el
+custom-load.el
+w3-auto.el
+w3-cfg.el
diff --git a/texi/.cvsignore b/texi/.cvsignore
new file mode 100644
index 0000000..c4df0aa
--- /dev/null
+++ b/texi/.cvsignore
@@ -0,0 +1,2 @@
+*.info*
+Makefile

commit bf6e41dd7b563242d5b1a60a4a40cefe8a2ff90d
Author: William M. Perry <address@hidden>
Date:   Thu Feb 21 14:43:44 2002 +0000

    Make sure we compile and install w3-fast-parse.el[c]

diff --git a/lisp/Makefile.in b/lisp/Makefile.in
index a47a9cc..beffe31 100644
--- a/lisp/Makefile.in
+++ b/lisp/Makefile.in
@@ -32,6 +32,7 @@ W3_SOURCES =                                                  
        \
        w3-emacs.el                                                     \
        w3-emulate.el                                                   \
        w3-forms.el                                                     \
+       w3-fast-parse.el                                                \
        w3-hot.el                                                       \
        w3-hotindex.el                                                  \
        w3-imap.el                                                      \

commit 13c765b43b97e9ca2640a9ecff7455bbbe2dcce8
Author: Dave Love <address@hidden>
Date:   Wed Feb 6 11:36:36 2002 +0000

    Fix last change.

diff --git a/lisp/ssl.el b/lisp/ssl.el
index 4db1b2d..1e4f78d 100644
--- a/lisp/ssl.el
+++ b/lisp/ssl.el
@@ -1,6 +1,6 @@
 ;;; ssl.el,v --- ssl functions for Emacsen without them builtin
 ;; Author: William M. Perry <address@hidden>
-;; $Revision: 1.4 $
+;; $Revision: 1.5 $
 ;; Keywords: comm
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -212,8 +212,7 @@ specifying a port number to connect to."
   (if (integerp service) (setq service (int-to-string service)))
   (let* ((process-connection-type nil)
         (port service)
-        (proc (eval
-               (start-process name buffer ,@(ssl-get-command)))))
+        (proc (eval `(start-process name buffer ,@(ssl-get-command)))))
     (process-kill-without-query proc)
     proc))
 

commit 733a144456e79f2ca570cf481df37692cdbcc259
Author: William M. Perry <address@hidden>
Date:   Fri Feb 1 17:42:48 2002 +0000

    2002-02-01  William M. Perry  <address@hidden>
    
        * lisp/w3.el (w3-fetch-callback): Fiddling with how to display XML
        by default.
    
        * lisp/w3-widget.el: Attempt to make images work with Emacs 21.
    
        * lisp/w3-display.el (w3-display-node): Revert change for <hr>
        handling.
    
        * lisp/images.el: Use (featurep 'xemacs) instead of
        string-matching on emacs-version.
    
    2001-12-11  William M. Perry  <address@hidden>
    
        * lisp/devices.el: Remove ancient NextStep support.
    
        * lisp/font.el: Merge with the version from XEmacs 21.5.  This
        pulls in lots of GTK fixes that I made ages ago.  Also removes
        ancient, unworking NextStep support.  Use new backquote syntax
        (emacs 19 can go away now).

diff --git a/ChangeLog b/ChangeLog
index ade6b89..4827a58 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,25 @@
+2002-02-01  William M. Perry  <address@hidden>
+
+       * lisp/w3.el (w3-fetch-callback): Fiddling with how to display XML
+       by default.
+
+       * lisp/w3-widget.el: Attempt to make images work with Emacs 21.
+
+       * lisp/w3-display.el (w3-display-node): Revert change for <hr>
+       handling.
+
+       * lisp/images.el: Use (featurep 'xemacs) instead of
+       string-matching on emacs-version.
+
+2001-12-11  William M. Perry  <address@hidden>
+
+       * lisp/devices.el: Remove ancient NextStep support.
+
+       * lisp/font.el: Merge with the version from XEmacs 21.5.  This
+       pulls in lots of GTK fixes that I made ages ago.  Also removes
+       ancient, unworking NextStep support.  Use new backquote syntax
+       (emacs 19 can go away now).
+
 2002-01-22  Dave Love  <address@hidden>
 
        * lisp/css.el (css-color-values): Maybe use `color-values'.
@@ -252,7 +274,7 @@
 2001-05-31  Dave Love  <address@hidden>
 
        * lisp/w3-menu.el (w3-menu-file-menu): Fix
-       "---:shadowDoubleEtchedIn".  From Pavel Jan,Bm(Bk.
+       "---:shadowDoubleEtchedIn".  From Pavel Jan-Bík.-A
 
        * lisp/w3-parse.el (decode-char): Define with older Mule-UCS.
        (w3-expand-entity-at-point-maybe): Sanitize regexp for numeric
@@ -302,7 +324,7 @@
        to work around a byte-optimizer bug in Emacs 21 that caused this
        module to fail to byte-compile.
 
-2001-05-24  Pavel Jan,Bm(Bk <address@hidden>
+2001-05-24  Pavel Jan-Bík <address@hidden>-A
 
        * lisp/w3-display.el (w3-resurrect-hyperlinks): Look for next
        single property change from `st' instead of `nd' to avoid
diff --git a/lisp/devices.el b/lisp/devices.el
index 71ed43e..72d842d 100644
--- a/lisp/devices.el
+++ b/lisp/devices.el
@@ -1,7 +1,7 @@
 ;;; devices.el -- XEmacs device API emulation
-;; Author: $Author: fx $
-;; Created: $Date: 2002/01/22 18:33:38 $
-;; Version: $Revision: 1.3 $
+;; Author: $Author: wmperry $
+;; Created: $Date: 2002/02/01 17:42:48 $
+;; Version: $Revision: 1.4 $
 ;; Keywords: 
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -31,28 +31,26 @@
 ;; XEmacs 19.14.  A 'device' for Emacs 19 is just a frame, from which we can
 ;; determine the connection to an X display, etc.
 
-(eval-when-compile (require 'cl))
 (eval-when-compile
-  (if (string-match "XEmacs" (emacs-version))
-      (set 'byte-optimize nil)))
+  (require 'cl)
+  (when (featurep 'xemacs)
+    (set 'byte-optimize nil)))
     
-(if (string-match "XEmacs" (emacs-version))
-    nil
-'()
-(defalias 'selected-device 'ignore)
-(defalias 'device-or-frame-p 'framep)
-(defalias 'device-console 'ignore)
-(defalias 'device-sound-enabled-p 'ignore)
-(defalias 'device-live-p 'frame-live-p)
-(defalias 'devicep 'framep)
-(defalias 'frame-device 'identity)
-(defalias 'redisplay-device 'redraw-frame)
-(defalias 'redraw-device 'redraw-frame)
-(defalias 'select-device 'select-frame)
-(defalias 'set-device-class 'ignore)
-
-(defun make-device (type connection &optional props)
-  "Create a new device of type TYPE, attached to connection CONNECTION.
+(when (not (featurep 'xemacs))
+  (defalias 'selected-device 'ignore)
+  (defalias 'device-or-frame-p 'framep)
+  (defalias 'device-console 'ignore)
+  (defalias 'device-sound-enabled-p 'ignore)
+  (defalias 'device-live-p 'frame-live-p)
+  (defalias 'devicep 'framep)
+  (defalias 'frame-device 'identity)
+  (defalias 'redisplay-device 'redraw-frame)
+  (defalias 'redraw-device 'redraw-frame)
+  (defalias 'select-device 'select-frame)
+  (defalias 'set-device-class 'ignore)
+
+  (defun make-device (type connection &optional props)
+    "Create a new device of type TYPE, attached to connection CONNECTION.
 
 The valid values for CONNECTION are device-specific; however,
 CONNECTION is generally a string. (Specifically, for X devices,
@@ -67,18 +65,18 @@ device creation.
 If CONNECTION specifies an already-existing device connection, that
 device is simply returned; no new device is created, and PROPS
 have no effect."
-  (cond
-   ((and (eq type 'x) connection)
-    (make-frame-on-display connection props))
-   ((eq type 'x)
-    (make-frame props))
-   ((eq type 'tty)
-    nil)
-   (t
-    (error "Unsupported device-type: %s" type))))
-
-(defun make-frame-on-device (type connection &optional props)
-  "Create a frame of type TYPE on CONNECTION.
+    (cond
+     ((and (eq type 'x) connection)
+      (make-frame-on-display connection props))
+     ((eq type 'x)
+      (make-frame props))
+     ((eq type 'tty)
+      nil)
+     (t
+      (error "Unsupported device-type: %s" type))))
+
+  (defun make-frame-on-device (type connection &optional props)
+    "Create a frame of type TYPE on CONNECTION.
 TYPE should be a symbol naming the device type, i.e. one of
 
 x      An X display.  CONNECTION should be a standard display string
@@ -100,249 +98,230 @@ PROPS should be an plist of properties, as in the call 
to `make-frame'.
 
 If a connection to CONNECTION already exists, it is reused; otherwise,
 a new connection is opened."
-  (make-device type connection props))
+    (make-device type connection props))
 
-(defun make-tty-device (&optional tty terminal-type)
-  "Create a new device on TTY.
+  (defun make-tty-device (&optional tty terminal-type)
+    "Create a new device on TTY.
   TTY should be the name of a tty device file (e.g. \"/dev/ttyp3\" under
 SunOS et al.), as returned by the `tty' command.  A value of nil means
 use the stdin and stdout as passed to XEmacs from the shell.
   If TERMINAL-TYPE is non-nil, it should be a string specifying the
 type of the terminal attached to the specified tty.  If it is nil,
 the terminal type will be inferred from the TERM environment variable."
-  (make-device 'tty tty (list 'terminal-type terminal-type)))
+    (make-device 'tty tty (list 'terminal-type terminal-type)))
 
-(defun make-x-device (&optional display)
-  (make-device 'x display))
+  (defun make-x-device (&optional display)
+    (make-device 'x display))
 
-(defun set-device-selected-frame (device frame)
-  "Set the selected frame of device object DEVICE to FRAME.
+  (defun set-device-selected-frame (device frame)
+    "Set the selected frame of device object DEVICE to FRAME.
 If DEVICE is nil, the selected device is used.
 If DEVICE is the selected device, this makes FRAME the selected frame."
-  (select-frame frame))
+    (select-frame frame))
 
-(defun set-device-baud-rate (device rate)
-  "Set the output baud rate of DEVICE to RATE.
+  (defun set-device-baud-rate (device rate)
+    "Set the output baud rate of DEVICE to RATE.
 On most systems, changing this value will affect the amount of padding
 and other strategic decisions made during redisplay."
-  (setq baud-rate rate))
+    (setq baud-rate rate))
 
-(defun dfw-device (obj)
-  "Given a device, frame, or window, return the associated device.
+  (defun dfw-device (obj)
+    "Given a device, frame, or window, return the associated device.
 Return nil otherwise."
-  (cond
-   ((windowp obj)
-    (window-frame obj))
-   ((framep obj)
-    obj)
-   (t
-    nil)))
-
-(defun event-device (event)
-  "Return the device that EVENT occurred on.
+    (cond
+     ((windowp obj)
+      (window-frame obj))
+     ((framep obj)
+      obj)
+     (t
+      nil)))
+
+  (defun event-device (event)
+    "Return the device that EVENT occurred on.
 This will be nil for some types of events (e.g. keyboard and eval events)."
-  (dfw-device (posn-window (event-start event))))
+    (dfw-device (posn-window (event-start event))))
 
-(defun device-connection (&optional device)
-  "Return the connection of the specified device.
+  (defun device-connection (&optional device)
+    "Return the connection of the specified device.
 DEVICE defaults to the selected device if omitted"
-  (or (cdr-safe (assq 'display (frame-parameters device))) "stdio"))
+    (or (cdr-safe (assq 'display (frame-parameters device))) "stdio"))
 
-(defun find-device (connection &optional type)
-  "Look for an existing device attached to connection CONNECTION.
+  (defun find-device (connection &optional type)
+    "Look for an existing device attached to connection CONNECTION.
 Return the device if found; otherwise, return nil.
 
 If TYPE is specified, only return devices of that type; otherwise,
 return devices of any type. (It is possible, although unlikely,
 that two devices of different types could have the same connection
 name; in such a case, the first device found is returned.)"
-  (let ((devices (device-list))
-       (retval nil))
-    (while (and devices (not nil))
-      (if (equal connection (device-connection (car devices)))
-         (setq retval (car devices)))
-      (setq devices (cdr devices)))
-    retval))
-
-(defalias 'get-device 'find-device)
-
-(defmacro device-baud-rate (&optional device)
-  "Return the output baud rate of DEVICE."
-  'baud-rate)
-
-(defun device-on-window-system-p (&optional device)
-  "Return non-nil if DEVICE is on a window system.
+    (let ((devices (device-list))
+         (retval nil))
+      (while (and devices (not nil))
+       (if (equal connection (device-connection (car devices)))
+           (setq retval (car devices)))
+       (setq devices (cdr devices)))
+      retval))
+
+  (defalias 'get-device 'find-device)
+
+  (defmacro device-baud-rate (&optional device)
+    "Return the output baud rate of DEVICE."
+    'baud-rate)
+
+  (defun device-on-window-system-p (&optional device)
+    "Return non-nil if DEVICE is on a window system.
 This generally means that there is support for the mouse, the menubar,
 the toolbar, glyphs, etc."
-  (and (cdr-safe (assq 'display (frame-parameters device))) t))
+    (and (cdr-safe (assq 'display (frame-parameters device))) t))
 
-(defun device-name (&optional device)
-  "Return the name of the specified device."
-  (or (cdr-safe (assq 'display (frame-parameters device))) "stdio"))
+  (defun device-name (&optional device)
+    "Return the name of the specified device."
+    (or (cdr-safe (assq 'display (frame-parameters device))) "stdio"))
 
-(defun device-frame-list (&optional device)
-  "Return a list of all frames on DEVICE.
+  (defun device-frame-list (&optional device)
+    "Return a list of all frames on DEVICE.
 If DEVICE is nil, the selected device will be used."
-  (let ((desired (device-connection device)))
-    (filtered-frame-list (function (lambda (x) (equal (device-connection x)
-                                                     desired))))))
-(defun device-list ()
-  "Return a list of all devices"
-  (let ((seen nil)
-       (cur nil)
-       (conn nil)
-       (retval nil)
-       (not-heard (frame-list)))
-    (while not-heard
-      (setq cur (car not-heard)
-           conn (device-connection cur)
-           not-heard (cdr not-heard))
-      (if (member conn seen)
-         nil                           ; Already got it
-       (setq seen (cons conn seen)     ; Whoo hoo, a new one!
-             retval (cons cur retval))))
-    retval))
-
-(defvar delete-device-hook nil
-  "Function or functions to call when a device is deleted.
+    (let ((desired (device-connection device)))
+      (filtered-frame-list (function (lambda (x) (equal (device-connection x)
+                                                       desired))))))
+  (defun device-list ()
+    "Return a list of all devices"
+    (let ((seen nil)
+         (cur nil)
+         (conn nil)
+         (retval nil)
+         (not-heard (frame-list)))
+      (while not-heard
+       (setq cur (car not-heard)
+             conn (device-connection cur)
+             not-heard (cdr not-heard))
+       (if (member conn seen)
+           nil                         ; Already got it
+         (setq seen (cons conn seen)   ; Whoo hoo, a new one!
+               retval (cons cur retval))))
+      retval))
+
+  (defvar delete-device-hook nil
+    "Function or functions to call when a device is deleted.
 One argument, the to-be-deleted device.")
 
-(defun delete-device (device &optional force)
-  "Delete DEVICE, permanently eliminating it from use.
+  (defun delete-device (device &optional force)
+    "Delete DEVICE, permanently eliminating it from use.
 Normally, you cannot delete the last non-minibuffer-only frame (you must
 use `save-buffers-kill-emacs' or `kill-emacs').  However, if optional
 second argument FORCE is non-nil, you can delete the last frame. (This
 will automatically call `save-buffers-kill-emacs'.)"
-  (let ((frames (device-frame-list device)))
-    (run-hook-with-args 'delete-device-hook device)
-    (while frames
-      (delete-frame (car frames) force)
-      (setq frames (cdr frames)))))
-
-(defun device-color-cells (&optional device)
-  (case window-system
-    ((x win32 w32 pm) (x-display-color-cells device))
-    (ns (ns-display-color-cells device))
-    (otherwise 1)))
-
-(defun device-pixel-width (&optional device)
-  (case window-system
-    ((x win32 w32 pm) (x-display-pixel-width device))
-    (ns (ns-display-pixel-width device))
-    (otherwise (frame-width device))))
-
-(defun device-pixel-height (&optional device)
-  (case window-system
-    ((x win32 w32 pm) (x-display-pixel-height device))
-    (ns (ns-display-pixel-height device))
-    (otherwise (frame-height device))))
-
-(defun device-mm-width (&optional device)
-  (case window-system
-    ((x win32 w32 pm) (x-display-mm-width device))
-    (ns (ns-display-mm-width device))
-    (otherwise nil)))
-
-(defun device-mm-height (&optional device)
-  (case window-system
-    ((x win32 w32 pm) (x-display-mm-height device))
-    (ns (ns-display-mm-height device))
-    (otherwise nil)))
-
-(defun device-bitplanes (&optional device)
-  (case window-system
-    ((x win32 w32 pm) (x-display-planes device))
-    (ns (ns-display-planes device))
-    (otherwise 2)))
-
-(defun device-class (&optional device)
-  (if (fboundp 'display-color-p)
-      (if (display-color-p device)
-         'color
-       (if (display-grayscale-p device)
-           'grayscale
-         'mono))
+    (let ((frames (device-frame-list device)))
+      (run-hook-with-args 'delete-device-hook device)
+      (while frames
+       (delete-frame (car frames) force)
+       (setq frames (cdr frames)))))
+
+  (defun device-color-cells (&optional device)
+    (case window-system
+      ((x win32 w32 pm) (x-display-color-cells device))
+      (otherwise 1)))
+
+  (defun device-pixel-width (&optional device)
+    (case window-system
+      ((x win32 w32 pm) (x-display-pixel-width device))
+      (otherwise (frame-width device))))
+
+  (defun device-pixel-height (&optional device)
+    (case window-system
+      ((x win32 w32 pm) (x-display-pixel-height device))
+      (otherwise (frame-height device))))
+
+  (defun device-mm-width (&optional device)
+    (case window-system
+      ((x win32 w32 pm) (x-display-mm-width device))
+      (otherwise nil)))
+
+  (defun device-mm-height (&optional device)
+    (case window-system
+      ((x win32 w32 pm) (x-display-mm-height device))
+      (otherwise nil)))
+
+  (defun device-bitplanes (&optional device)
     (case window-system
-      (x                ; X11
-       (cond
-       ((fboundp 'x-display-visual-class)
-        (let ((val (symbol-name (x-display-visual-class device))))
-          (cond
-           ((string-match "color" val) 'color)
-           ((string-match "gray-scale" val) 'grayscale)
-           (t 'mono))))
-       ((fboundp 'x-display-color-p)
-        (if (x-display-color-p device)
-            'color
-          'mono))
-       (t 'color)))
-      (pm ; OS/2 Presentation Manager
-       (cond
-       ((fboundp 'pm-display-visual-class)
-        (let ((val (symbol-name (pm-display-visual-class device))))
-          (cond
-           ((string-match "color" val) 'color)
-           ((string-match "gray-scale" val) 'grayscale)
-           (t 'mono))))
-       ((fboundp 'pm-display-color-p)
-        (if (pm-display-color-p device)
-            'color
-          'mono))
-       (t 'color)))
-      (ns
-       (cond
-       ((fboundp 'ns-display-visual-class)
-        (let ((val (symbol-name (ns-display-visual-class device))))
-          (cond
-           ((string-match "color" val) 'color)
-           ((string-match "gray-scale" val) 'grayscale)
-           (t 'mono))))
-       ((fboundp 'ns-display-color-p)
-        (if (ns-display-color-p device)
-            'color
-          'mono))
-       (t 'mono)))
-      (otherwise 'color))))
-
-(defun device-class-list ()
-  "Returns a list of valid device classes."
-  (list 'color 'grayscale 'mono))
-
-(defun valid-device-class-p (class)
-  "Given a CLASS, return t if it is valid.
+      ((x win32 w32 pm) (x-display-planes device))
+      (otherwise 2)))
+
+  (defun device-class (&optional device)
+    (if (fboundp 'display-color-p)
+       (if (display-color-p device)
+           'color
+         (if (display-grayscale-p device)
+             'grayscale
+           'mono))
+      (case window-system
+       (x                              ; X11
+        (cond
+         ((fboundp 'x-display-visual-class)
+          (let ((val (symbol-name (x-display-visual-class device))))
+            (cond
+             ((string-match "color" val) 'color)
+             ((string-match "gray-scale" val) 'grayscale)
+             (t 'mono))))
+         ((fboundp 'x-display-color-p)
+          (if (x-display-color-p device)
+              'color
+            'mono))
+         (t 'color)))
+       (pm                             ; OS/2 Presentation Manager
+        (cond
+         ((fboundp 'pm-display-visual-class)
+          (let ((val (symbol-name (pm-display-visual-class device))))
+            (cond
+             ((string-match "color" val) 'color)
+             ((string-match "gray-scale" val) 'grayscale)
+             (t 'mono))))
+         ((fboundp 'pm-display-color-p)
+          (if (pm-display-color-p device)
+              'color
+            'mono))
+         (t 'color)))
+       (otherwise 'color))))
+
+  (defun device-class-list ()
+    "Returns a list of valid device classes."
+    (list 'color 'grayscale 'mono))
+
+  (defun valid-device-class-p (class)
+    "Given a CLASS, return t if it is valid.
 Valid classes are 'color, 'grayscale, and 'mono."
-  (memq class (device-class-list)))
+    (memq class (device-class-list)))
 
-(defun device-or-