Index: who.lisp
===================================================================
--- who.lisp	(revision 4611)
+++ who.lisp	(working copy)
@@ -30,13 +30,13 @@
 (in-package :cl-who)
 
 (defun html-mode ()
-  "Returns the current HTML mode. :SGML for \(SGML-)HTML and
-:XML for XHTML."
+  "Returns the current HTML mode. :SGML for \(SGML-)HTML, :XML for
+XHTML and :HTML5 for HTML5 (HTML syntax)."
   *html-mode*)
 
 (defun (setf html-mode) (mode)
   "Sets the output mode to XHTML or \(SGML-)HTML.  MODE can be
-:SGML for HTML or :XML for XHTML."
+:SGML for HTML, :XML for XHTML or :HTML5 for HTML5 (HTML syntax)."
   (ecase mode
     ((:sgml)
      (setf *html-mode* :sgml
@@ -45,7 +45,11 @@
     ((:xml)
      (setf *html-mode* :xml
            *empty-tag-end* " />"
-           *prologue* "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">"))))
+           *prologue* "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">"))
+    ((:html5)
+     (setf *html-mode* :html5
+           *empty-tag-end* ">"
+           *prologue* "<!DOCTYPE html>"))))
 
 (defun process-tag (sexp body-fn)
   (declare (optimize speed space))
Index: doc/index.html
===================================================================
--- doc/index.html	(revision 4611)
+++ doc/index.html	(working copy)
@@ -61,7 +61,7 @@
 code inserted by the user of the macro. CL-WHO will make sure that
 there aren't two adjacent <code>WRITE-STRING</code> forms with
 constant strings. CL-WHO's output is
-either XHTML (default) or 'plain' (SGML) HTML &mdash; depending on
+either XHTML (default), 'plain' (SGML) HTML or HTML5 (using HTML syntax) &mdash; depending on
 what you've set <a href="#html-mode"><code>HTML-MODE</code></a> to.
 <p>
 CL-WHO is intended to be portable and should work with all
@@ -541,7 +541,7 @@
 <blockquote><br>
 Set this to <code>NIL</code> to if you want to use CL-WHO as a strict XML
 generator.  Otherwise, CL-WHO will only write empty tags listed in
-<a href="#*html-empty-tags*"><code>*HTML-EMPTY-TAGS*</code></a> as <code>&lt;tag/&gt;</code> (XHTML mode) or <code>&lt;tag&gt;</code> (SGML mode). For
+<a href="#*html-empty-tags*"><code>*HTML-EMPTY-TAGS*</code></a> as <code>&lt;tag/&gt;</code> (XHTML mode) or <code>&lt;tag&gt;</code> (SGML mode or HTML mode). For
 all other tags, it will always generate <code>&lt;tag&gt;&lt;/tag&gt;</code>. The initial value of this variable is <code>T</code>.
 </blockquote>
 
@@ -553,9 +553,9 @@
 <a href="#*html-empty-tag-aware-p*"><code>*HTML-EMPTY-TAG-AWARE-P*</code></a>.
 The initial value is the list
 <pre>
-(:area :atop :audioscope :base :basefont :br :choose :col :frame
- :hr :img :input :isindex :keygen :left :limittext :link :meta
- :nextid :of :over :param :range :right :spacer :spot :tab :wbr)
+(:area :atop :audioscope :base :basefont :br :choose :col :command :embed
+ :frame :hr :img :input :isindex :keygen :left :limittext :link :meta :nextid
+ :of :over :param :range :right :source :spacer :spot :tab :track :wbr)
 </pre>
 </blockquote>
 
@@ -585,11 +585,14 @@
 <br><a class=none name="html-mode"><b>html-mode</b></a> <i>=> mode</i>
 <br><tt>(setf (</tt><b>html-mode</b>) <i>mode</i><tt>)</tt>
 <blockquote><br>
-The function <code>HTML-MODE</code> returns the current mode for generating HTML. The default is <code>:XML</code> for XHTML. You can change this by setting it with <code>(SETF&nbsp;(HTML-MODE)&nbsp;:SGML)</code> to pre-XML HTML mode.
+The function <code>HTML-MODE</code> returns the current mode for generating HTML. The default is <code>:XML</code> for XHTML. You can change this by setting it with <code>(SETF&nbsp;(HTML-MODE)&nbsp;:SGML)</code> to pre-XML HTML mode or <code>(SETF&nbsp;(HTML-MODE)&nbsp;:HTML5)</code> to HTML5 mode (using HTML syntax).
 <p>
 Setting it to SGML HTML sets the <a href="#*prologue*"><code>*prologue*</code></a> to the doctype string for HTML 4.01 transitional:
 <pre>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.01 Transitional//EN&quot; &quot;http://www.w3.org/TR/html4/loose.dtd&quot;&gt;</pre>
 Code generation in SGML HTML is slightly different from XHTML - there's no need to end empty elements with <code>/&gt;</code> and empty attributes are allowed.
+<p>
+Setting it to HTML5 sets the <a href="#*prologue*"><code>*prologue*</code></a> to the following doctype string:
+<pre>&lt;!DOCTYPE html&gt;</pre>
 </blockquote>
 
 <p><br>[Function]
Index: specials.lisp
===================================================================
--- specials.lisp	(revision 4611)
+++ specials.lisp	(working copy)
@@ -51,7 +51,7 @@
 indentation dynamically.")
 
 (defvar *html-mode* :xml
-  ":SGML for \(SGML-)HTML, :XML \(default) for XHTML.")
+  ":SGML for \(SGML-)HTML, :XML \(default) for XHTML, :HTML5 for HTML5.")
 
 (defvar *downcase-tokens-p* t
   "If NIL, a keyword symbol representing a tag or attribute name will
@@ -73,6 +73,8 @@
     :br
     :choose
     :col
+    :command
+    :embed
     :frame
     :hr
     :img
@@ -89,9 +91,11 @@
     :param
     :range   
     :right
+    :source
     :spacer
     :spot
     :tab
+    :track
     :wbr)
   "The list of HTML tags that should be output as empty tags.
 See *HTML-EMPTY-TAG-AWARE-P*.")
@@ -100,7 +104,7 @@
   "Set this to NIL to if you want to use CL-WHO as a strict XML
 generator.  Otherwise, CL-WHO will only write empty tags listed
 in *HTML-EMPTY-TAGS* as <tag/> \(XHTML mode) or <tag> \(SGML
-mode).  For all other tags, it will always generate
+mode and HTML5 mode).  For all other tags, it will always generate
 <tag></tag>.")
 
 (defconstant +newline+ (make-string 1 :initial-element #\Newline)
