]> granicus.if.org Git - mutt/commitdiff
Documentation beautification patch from Byrial Jensen. Thanks!
authorThomas Roessler <roessler@does-not-exist.org>
Thu, 25 May 2000 08:01:17 +0000 (08:01 +0000)
committerThomas Roessler <roessler@does-not-exist.org>
Thu, 25 May 2000 08:01:17 +0000 (08:01 +0000)
doc/devel-notes.txt
init.h
makedoc.c

index eb58da0a215b266dc2fd442e43853c072959f109..511441658d4dde181855d2c07eeb7bb08f4746cf 100644 (file)
@@ -148,6 +148,15 @@ similar to [ntg]roff:
    to help avoiding poblems when trying to represent any of the \
    sequences used by makedoc.
 
+ - .dl on a line starts a "definition list" environment (name taken
+    from HTML) where terms and definitions alternate.
+
+ - .dt marks a term in a definition list.
+
+ - .dd marks a definition in a definition list.
+
+ - .de on a line finishes a definition list environment.
+
  - .ts on a line starts a "verbose tscreen" environment (name taken from
    SGML).  Please try to keep lines inside such an environment
    short; a length of abut 40 characters should be ok.  This is
diff --git a/init.h b/init.h
index f4c0209b9afde9bec6a1345b15d44b79d85c7e5e..38bd6068d7e18ee90edb5f0f1dd3a759ef9e36b1 100644 (file)
--- a/init.h
+++ b/init.h
@@ -130,13 +130,12 @@ struct option_t MuttVars[] = {
   ** Specifies the format of the data displayed for the `alias' menu.  The
   ** following printf(3)-style sequences are available:
   ** .pp
-  ** .ts
-  ** %a      alias name
-  ** %n      index number
-  ** %r      address which alias expands to
-  ** %t      character which indicates if the alias is 
-  ** .       tagged for inclusion
-  ** .te
+  ** .dl
+  ** .dt %a .dd alias name
+  ** .dt %n .dd index number
+  ** .dt %r .dd address which alias expands to
+  ** .dt %t .dd character which indicates if the alias is tagged for inclusion
+  ** .de
   */
   { "allow_8bit",      DT_BOOL, R_NONE, OPTALLOW8BIT, 1 },
   /*
@@ -184,24 +183,22 @@ struct option_t MuttVars[] = {
   ** This variable describes the format of the `attachment' menu.  The
   ** following printf-style sequences are understood:
   ** .pp
-  ** .ts
-  ** %D      deleted flag
-  ** %d      description
-  ** %e      MIME content-transfer-encoding
-  ** %f      filename
-  ** %I      disposition (I=inline, A=attachment)
-  ** %m      major MIME type
-  ** %M      MIME subtype
-  ** %n      attachment number
-  ** %s      size
-  ** %t      tagged flag
-  ** %u      unlink (=to delete) flag
-  ** %>X     right justify the rest of the
-  ** .       string and pad with character "X"
-  ** %|X     pad to the end of the line with
-  ** .       character "X"
-  ** .te
-  */  
+  ** .dl
+  ** .dt %D  .dd deleted flag
+  ** .dt %d  .dd description
+  ** .dt %e  .dd MIME content-transfer-encoding
+  ** .dt %f  .dd filename
+  ** .dt %I  .dd disposition (I=inline, A=attachment)
+  ** .dt %m  .dd major MIME type
+  ** .dt %M  .dd MIME subtype
+  ** .dt %n  .dd attachment number
+  ** .dt %s  .dd size
+  ** .dt %t  .dd tagged flag
+  ** .dt %u  .dd unlink (=to delete) flag
+  ** .dt %>X .dd right justify the rest of the string and pad with character "X"
+  ** .dt %|X .dd pad to the end of the line with character "X"
+  ** .de
+  */
   { "attach_sep",      DT_STR,  R_NONE, UL &AttachSep, UL "\n" },
   /*
   ** .pp
@@ -298,12 +295,12 @@ struct option_t MuttVars[] = {
   ** menu.  This string is similar to ``$$status_format'', but has its own
   ** set of printf()-like sequences:
   ** .pp
-  ** .ts
-  ** %a      total number of attachments 
-  ** %h      local hostname
-  ** %l      approximate size (in bytes) of the current message
-  ** %v      Mutt version string
-  ** .te
+  ** .dl
+  ** .dt %a .dd total number of attachments 
+  ** .dt %h .dd local hostname
+  ** .dt %l .dd approximate size (in bytes) of the current message
+  ** .dt %v .dd Mutt version string
+  ** .de
   ** .pp
   ** See the text describing the ``$$status_format'' option for more 
   ** information on how to set ``$$compose_format''.
@@ -486,21 +483,20 @@ struct option_t MuttVars[] = {
   ** personal taste.  This string is similar to ``$$index_format'', but has
   ** its own set of printf()-like sequences:
   ** .pp
-  ** .ts
-  ** %C      current file number
-  ** %d      date/time folder was last modified
-  ** %f      filename
-  ** %F      file permissions
-  ** %g      group name (or numeric gid, if missing)
-  ** %l      number of hard links
-  ** %N      N if folder has new mail, blank otherwise
-  ** %s      size in bytes
-  ** %t      * if the file is tagged, blank otherwise
-  ** %u      owner name (or numeric uid, if missing)
-  ** %>X     right justify the rest of the string and pad 
-  ** .       with character "X"
-  ** %|X     pad to the end of the line with character "X"
-  ** .te
+  ** .dl
+  ** .dt %C  .dd current file number
+  ** .dt %d  .dd date/time folder was last modified
+  ** .dt %f  .dd filename
+  ** .dt %F  .dd file permissions
+  ** .dt %g  .dd group name (or numeric gid, if missing)
+  ** .dt %l  .dd number of hard links
+  ** .dt %N  .dd N if folder has new mail, blank otherwise
+  ** .dt %s  .dd size in bytes
+  ** .dt %t  .dd * if the file is tagged, blank otherwise
+  ** .dt %u  .dd owner name (or numeric uid, if missing)
+  ** .dt %>X .dd right justify the rest of the string and pad with character "X"
+  ** .dt %|X .dd pad to the end of the line with character "X"
+  ** .de
   */
   { "followup_to",     DT_BOOL, R_NONE, OPTFOLLOWUPTO, 1 },
   /*
@@ -787,76 +783,54 @@ struct option_t MuttVars[] = {
   ** function printf to format output (see the man page for more detail).
   ** The following sequences are defined in Mutt:
   ** .pp
-  ** .ts
-  ** %a      address of the author
-  ** %b      filename of the original message 
-  ** .       folder (think mailBox)
-  ** %B      the list to which the letter was sent, 
-  ** .       or else the folder name (%b).
-  ** %c      number of characters (bytes) in the message
-  ** %C      current message number
-  ** %d      date and time of the message in the format 
-  ** .       specified by ``date_format'' converted to 
-  ** .       sender's time zone
-  ** %D      date and time of the message in the format
-  ** .       specified by ``date_format'' converted to 
-  ** .       the local time zone
-  ** %e      current message number in thread
-  ** %E      number of messages in current thread
-  ** %f      entire From: line (address + real name)
-  ** %F      author name, or recipient name if the 
-  ** .       message is from you
-  ** %i      message-id of the current message
-  ** %l      number of lines in the message
-  ** %L      list-from function
-  ** %m      total number of message in the mailbox
-  ** %M      number of hidden messages if the thread 
-  ** .       is collapsed.
-  ** %N      message score
-  ** %n      author's real name (or address if missing)
-  ** %O      (_O_riginal save folder)  Where 
-  ** .       mutt would formerly have stashed the
-  ** .       message: list name or recipient name 
-  ** .       if no list
-  ** %s      subject of the message
-  ** %S      status of the message (N/D/d/!/r/\(as)
-  ** %t      `to:' field (recipients)
-  ** %T      the appropriate character from the 
-  ** .       $$to_chars string
-  ** %u      user (login) name of the author
-  ** %v      first name of the author, or the 
-  ** .       recipient if the message is from you
-  ** %y             `x-label:' field, if present
-  ** %Y             `x-label' field, if present, and 
-  ** .       (1) not at part of a thread tree,
-  ** .       (2) at the top of a thread, or
-  ** .              (3) `x-label' is different from preceding
-  ** .       message's `x-label'.
-  ** %Z      message status flags
-  ** %{fmt}  the date and time of the message is
-  ** .       converted to sender's time zone, and 
-  ** .       ``fmt'' is expanded by the library 
-  ** .       function ``strftime''; a leading bang 
-  ** .       disables locales
-  ** %[fmt]  the date and time of the message is 
-  ** .       converted to the local time zone, and
-  ** .       ``fmt'' is expanded by the library 
-  ** .       function ``strftime''; a leading bang 
-  ** .       disables locales
-  ** %(fmt)  the local date and time when the 
-  ** .       message was received.
-  ** .       ``fmt'' is expanded by the library
-  ** .       function ``strftime'';
-  ** .       a leading bang disables locales
-  ** %<fmt>  the current local time. 
-  ** .       ``fmt'' is expanded by the library
-  ** .       function ``strftime''; 
-  ** .       a leading bang disables locales.
-  ** %>X     right justify the rest of the string 
-  ** .       and pad with character "X"
-  ** %|X     pad to the end of the line with
-  ** .       character "X"
-  ** .te
+  ** .dl
+  ** .dt %a .dd address of the author
+  ** .dt %b .dd filename of the original message folder (think mailBox)
+  ** .dt %B .dd the list to which the letter was sent, or else the folder name (%b).
+  ** .dt %c .dd number of characters (bytes) in the message
+  ** .dt %C .dd current message number
+  ** .dt %d .dd date and time of the message in the format specified by
+  **            ``date_format'' converted to sender's time zone
+  ** .dt %D .dd date and time of the message in the format specified by
+  **            ``date_format'' converted to the local time zone
+  ** .dt %e .dd current message number in thread
+  ** .dt %E .dd number of messages in current thread
+  ** .dt %f .dd entire From: line (address + real name)
+  ** .dt %F .dd author name, or recipient name if the message is from you
+  ** .dt %i .dd message-id of the current message
+  ** .dt %l .dd number of lines in the message
+  ** .dt %L .dd list-from function
+  ** .dt %m .dd total number of message in the mailbox
+  ** .dt %M .dd number of hidden messages if the thread is collapsed.
+  ** .dt %N .dd message score
+  ** .dt %n .dd author's real name (or address if missing)
+  ** .dt %O .dd (_O_riginal save folder)  Where mutt would formerly have
+  **            stashed the message: list name or recipient name if no list
+  ** .dt %s .dd subject of the message
+  ** .dt %S .dd status of the message (N/D/d/!/r/\(as)
+  ** .dt %t .dd `to:' field (recipients)
+  ** .dt %T .dd the appropriate character from the $$to_chars string
+  ** .dt %u .dd user (login) name of the author
+  ** .dt %v .dd first name of the author, or the recipient if the message is from you
+  ** .dt %y .dd `x-label:' field, if present
+  ** .dt %Y .dd `x-label' field, if present, and (1) not at part of a thread tree,
+  **            (2) at the top of a thread, or (3) `x-label' is different from
+  **            preceding message's `x-label'.
+  ** .dt %Z .dd message status flags
+  ** .dt %{fmt} .dd the date and time of the message is converted to sender's
+  **                time zone, and ``fmt'' is expanded by the library function
+  **                ``strftime''; a leading bang disables locales
+  ** .dt %[fmt] .dd the date and time of the message is converted to the local
+  **                time zone, and ``fmt'' is expanded by the library function
+  **                ``strftime''; a leading bang disables locales
+  ** .dt %(fmt) .dd the local date and time when the message was received.
+  **                ``fmt'' is expanded by the library function ``strftime'';
+  **                a leading bang disables locales
+  ** .dt %<fmt> .dd the current local time. ``fmt'' is expanded by the library
+  **                function ``strftime''; a leading bang disables locales.
+  ** .dt %>X    .dd right justify the rest of the string and pad with character "X"
+  ** .dt %|X    .dd pad to the end of the line with character "X"
+  ** .de
   ** .pp
   ** See also: ``$$to_chars''.
   */
@@ -1002,12 +976,12 @@ struct option_t MuttVars[] = {
   ** chain selection screen.  The following printf-like sequences are 
   ** supported:
   ** .pp
-  ** .ts
-  ** %n      The running number on the menu.
-  ** %c             Remailer capabilities.
-  ** %s             The remailer's short name.
-  ** %a             The remailer's e-mail address.
-  ** .te
+  ** .dl
+  ** .dt %n .dd The running number on the menu.
+  ** .dt %c .dd Remailer capabilities.
+  ** .dt %s .dd The remailer's short name.
+  ** .dt %a .dd The remailer's e-mail address.
+  ** .de
   */
   { "mixmaster",       DT_PATH, R_NONE, UL &Mixmaster, UL MIXMASTER },
   /*
@@ -1116,18 +1090,17 @@ struct option_t MuttVars[] = {
   ** your personal taste. This string is similar to ``$$index_format'', but
   ** has its own set of printf()-like sequences:
   ** .pp
-  ** .ts
-  **  %n      number
-  **  %k      key id
-  **  %u      user id
-  **  %a      algorithm
-  **  %l      key length
-  **  %f      flags
-  **  %c      capabilities
-  **  %t      trust/validity of the key-uid association
-  **  %[<s>]  date of the key where <s> is an strftime(3) 
-  ** .        expression
-  ** .te
+  ** .dl
+  ** .dt %n     .dd number
+  ** .dt %k     .dd key id
+  ** .dt %u     .dd user id
+  ** .dt %a     .dd algorithm
+  ** .dt %l     .dd key length
+  ** .dt %f     .dd flags
+  ** .dt %c     .dd capabilities
+  ** .dt %t     .dd trust/validity of the key-uid association
+  ** .dt %[<s>] .dd date of the key where <s> is an strftime(3) expression
+  ** .de
   */
   { "pgp_long_ids",    DT_BOOL, R_NONE, OPTPGPLONGIDS, 0 },
   /*
@@ -1223,12 +1196,12 @@ struct option_t MuttVars[] = {
   ** Specifies how the entries in the `pgp keys' menu are sorted. The
   ** following are legal values:
   ** .pp
-  ** .ts
-  ** address   sort alphabetically by user id
-  ** keyid     sort alphabetically by key id
-  ** date      sort by key creation date
-  ** trust      sort by the trust of the key
-  ** .te
+  ** .dl
+  ** .dt address .dd sort alphabetically by user id
+  ** .dt keyid   .dd sort alphabetically by key id
+  ** .dt date    .dd sort by key creation date
+  ** .dt trust   .dd sort by the trust of the key
+  ** .de
   ** .pp
   ** If you prefer reverse order of the above values, prefix it with
   ** `reverse-'.
@@ -1257,18 +1230,15 @@ struct option_t MuttVars[] = {
   ** .pp
   ** The PGP command formats have their own set of printf-like sequences:
   ** .pp
-  ** .ts
-  ** %p        Expands to PGPPASSFD=0 when a pass phrase 
-  ** .         is needed, to an empty string otherwise.  
-  ** .         Note: This may be used with a %? construct.
-  ** %f        Expands to the name of a file containing 
-  ** .         a message.
-  ** %s        Expands to the name of a file containing 
-  ** .         the signature part of a multipart/signed 
-  ** .         attachment when verifying it.
-  ** %a        The value of $$pgp_sign_as.
-  ** %r        One or more key IDs.
-  ** .te
+  ** .dl
+  ** .dt %p .dd Expands to PGPPASSFD=0 when a pass phrase is needed, to an empty
+  **            string otherwise. Note: This may be used with a %? construct.
+  ** .dt %f .dd Expands to the name of a file containing a message.
+  ** .dt %s .dd Expands to the name of a file containing the signature part
+  ** .          of a multipart/signed attachment when verifying it.
+  ** .dt %a .dd The value of $$pgp_sign_as.
+  ** .dt %r .dd One or more key IDs.
+  ** .de
   ** .pp
   ** For examples on how to configure these formats for the various versions
   ** of PGP which are floating around, see the pgp*.rc and gpg.rc files in
@@ -1761,13 +1731,11 @@ struct option_t MuttVars[] = {
   ** to finish before giving up and putting delivery in the background.
   ** .pp
   ** Mutt interprets the value of this variable as follows:
-  ** .ts
-  ** >0      number of seconds to wait for sendmail to 
-  ** .       finish before continuing
-  ** 0       wait forever for sendmail to finish
-  ** <0      always put sendmail in the background 
-  ** .       without waiting
-  ** .te
+  ** .dl
+  ** .dt >0 .dd number of seconds to wait for sendmail to finish before continuing
+  ** .dt 0  .dd wait forever for sendmail to finish
+  ** .dt <0 .dd always put sendmail in the background without waiting
+  ** .de
   ** .pp
   ** Note that if you specify a value other than 0, the output of the child
   ** process will be put in a temporary file.  If there is some error, you
@@ -1932,34 +1900,32 @@ struct option_t MuttVars[] = {
   ** menu.  This string is similar to ``$$index_format'', but has its own
   ** set of printf()-like sequences:
   ** .pp
-  ** .ts
-  ** %b      number of mailboxes with new mail *
-  ** %d      number of deleted messages *
-  ** %h      local hostname
-  ** %f      the full pathname of the current mailbox
-  ** %F      number of flagged messages *
-  ** %l      size (in bytes) of the current mailbox *
-  ** %L      size (in bytes) of the messages shown 
-  ** .       (i.e., which match the current limit) *
-  ** %m      the number of messages in the mailbox *
-  ** %M      the number of messages shown (i.e., which 
-  ** .       match the current limit) *
-  ** %n      number of new messages in the mailbox *
-  ** %o      number of old unread messages
-  ** %p      number of postponed messages *
-  ** %P      percentage of the way through the index
-  ** %r      modified/read-only/won't-write/attach-message 
-  ** .       indicator, according to $$status_chars
-  ** %s      current sorting mode ($$sort)
-  ** %S      current aux sorting method ($$sort_aux)
-  ** %t      number of tagged messages *
-  ** %u      number of unread messages *
-  ** %v      Mutt version string
-  ** %V      currently active limit pattern, if any *
-  ** %>X     right justify the rest of the string and
-  ** .       pad with "X"
-  ** %|X     pad to the end of the line with "X"
-  ** .te
+  ** .dl
+  ** .dt %b  .dd number of mailboxes with new mail *
+  ** .dt %d  .dd number of deleted messages *
+  ** .dt %h  .dd local hostname
+  ** .dt %f  .dd the full pathname of the current mailbox
+  ** .dt %F  .dd number of flagged messages *
+  ** .dt %l  .dd size (in bytes) of the current mailbox *
+  ** .dt %L  .dd size (in bytes) of the messages shown 
+  **             (i.e., which match the current limit) *
+  ** .dt %m  .dd the number of messages in the mailbox *
+  ** .dt %M  .dd the number of messages shown (i.e., which match the current limit) *
+  ** .dt %n  .dd number of new messages in the mailbox *
+  ** .dt %o  .dd number of old unread messages
+  ** .dt %p  .dd number of postponed messages *
+  ** .dt %P  .dd percentage of the way through the index
+  ** .dt %r  .dd modified/read-only/won't-write/attach-message indicator,
+  **             according to $$status_chars
+  ** .dt %s  .dd current sorting mode ($$sort)
+  ** .dt %S  .dd current aux sorting method ($$sort_aux)
+  ** .dt %t  .dd number of tagged messages *
+  ** .dt %u  .dd number of unread messages *
+  ** .dt %v  .dd Mutt version string
+  ** .dt %V  .dd currently active limit pattern, if any *
+  ** .dt %>X .dd right justify the rest of the string and pad with "X"
+  ** .dt %|X .dd pad to the end of the line with "X"
+  ** .de
   ** .pp
   ** * = can be optionally printed if nonzero
   ** .pp
index 2107dc059498d55352a481d6c2925a25eb56cc49..95350139790240cb6666074e5f298c65fb8f3628 100644 (file)
--- a/makedoc.c
+++ b/makedoc.c
@@ -69,6 +69,8 @@ enum output_formats_t
 #define D_TAB          (1 << 3)
 #define D_NP           (1 << 4)
 #define D_INIT         (1 << 5)
+#define D_DL           (1 << 6)
+#define D_DT           (1 << 7)
 
 enum
 {
@@ -80,6 +82,10 @@ enum
   SP_STR,
   SP_START_TAB,
   SP_END_TAB,
+  SP_START_DL,
+  SP_DT,
+  SP_DD,
+  SP_END_DL,
   SP_REFER
 };
 
@@ -693,8 +699,11 @@ static void print_confline (const char *varname, int type, const char *val, FILE
  ** - \fI switches to italics
  ** - \fB switches to boldface
  ** - \fP switches to normal display
- ** - .ts on a line starts a "tscreen" environment (name taken from
- **   SGML).
+ ** - .dl on a line starts a definition list (name taken taken from HTML).
+ ** - .dt starts a term in a definition list.
+ ** - .dd starts a definition in a definition list.
+ ** - .de on a line finishes a definition list.
+ ** - .ts on a line starts a "tscreen" environment (name taken from SGML).
  ** - .te on a line finishes this environment.
  ** - .pp on a line starts a paragraph.
  ** - \$word will be converted to a reference to word, where appropriate.
@@ -720,7 +729,10 @@ static int flush_doc (int docstat, FILE *out)
 
   if (docstat & (D_TAB))
     docstat = print_it (SP_END_TAB, NULL, out, docstat);
-  
+
+  if (docstat & (D_DL))
+    docstat = print_it (SP_END_DL, NULL, out, docstat);
+
   if (docstat & (D_EM | D_BF))
     docstat = print_it (SP_END_FT, NULL, out, docstat);
 
@@ -740,10 +752,13 @@ static int print_it (int special, char *str, FILE *out, int docstat)
 
   switch (OutputFormat)
   {
+    /* configuration file */
     case F_CONF:
     {
       switch (special)
       {
+       static int Continuation = 0;
+
        case SP_END_FT: docstat &= ~(D_EM|D_BF); break;
        case SP_START_BF: docstat |= D_BF; break;
        case SP_START_EM: docstat |= D_EM; break;
@@ -756,6 +771,8 @@ static int print_it (int special, char *str, FILE *out, int docstat)
            fputs ("\n# ", out);
            docstat |= D_NL;
          }
+         if (docstat & D_DL)
+           ++ Continuation;
          break;
        }
        case SP_NEWPAR:
@@ -781,20 +798,56 @@ static int print_it (int special, char *str, FILE *out, int docstat)
        }
        case SP_END_TAB:
        {
-         fputs ("\n# ", out);
          docstat &= ~D_TAB;
+         docstat |= D_NL;
+         break;
+       }
+       case SP_START_DL:
+       {
+         docstat |= D_DL;
+         break;
+       }
+       case SP_DT:
+       {
+         Continuation = 0;
+         docstat |= D_DT;
+         break;
+       }
+       case SP_DD:
+       {
+         Continuation = 0;
+         break;
+       }
+       case SP_END_DL:
+       {
+         Continuation = 0;
+         docstat &= ~D_DL;
          break;
        }
        case SP_STR:
        {
+         if (Continuation)
+         {
+           Continuation = 0;
+           fputs ("        ", out);
+         }
          fputs (str, out);
+         if (docstat & D_DT)
+         { 
+           int i;
+
+           for (i = strlen (str) ; i < 8 ; i++)
+             putc (' ', out);
+           docstat &= ~D_DT;
+           docstat |= D_NL;
+         }
          break;
        }
       }
       break;
     }
 
-    
+    /* manual page */
     case F_MAN:
     {
       switch (special)
@@ -858,6 +911,28 @@ static int print_it (int special, char *str, FILE *out, int docstat)
          docstat |= D_NL;
          break;
        }
+       case SP_START_DL:
+       {
+         fputs ("\n.RS", out);
+         docstat |= D_DL;
+         break;
+       }
+       case SP_DT:
+       {
+         fputs ("\n.IP ", out);
+         break;
+       }
+       case SP_DD:
+       {
+         fputs ("\n", out);
+         break;
+       }
+       case SP_END_DL:
+       {
+         fputs ("\n.RE", out);
+         docstat &= ~D_DL;
+         break;
+       }
        case SP_STR:
        {
          while (*str)
@@ -887,6 +962,8 @@ static int print_it (int special, char *str, FILE *out, int docstat)
       }
       break;
     }
+
+    /* SGML based manual */
     case F_SGML:
     {
       switch (special)
@@ -951,6 +1028,28 @@ static int print_it (int special, char *str, FILE *out, int docstat)
          docstat |= D_NL;
          break;
        }
+       case SP_START_DL:
+       {
+         fputs ("\n<descrip>\n", out);
+         docstat |= D_DL;
+         break;
+       }
+       case SP_DT:
+       {
+         fputs ("<tag>", out);
+         break;
+       }
+       case SP_DD:
+       {
+         fputs ("</tag>", out);
+         break;
+       }
+       case SP_END_DL:
+       {
+         fputs ("</descrip>\n", out);
+         docstat &= ~D_DL;
+         break;
+       }
        case SP_STR:
        {
          if (docstat & D_TAB)
@@ -997,6 +1096,10 @@ static int handle_docline (char *l, FILE *out, int docstat)
     return print_it (SP_START_TAB, NULL, out, docstat);
   else if (!strncmp (l, ".te", 3))
     return print_it (SP_END_TAB, NULL, out, docstat);
+  else if (!strncmp (l, ".dl", 3))
+    return print_it (SP_START_DL, NULL, out, docstat);
+  else if (!strncmp (l, ".de", 3))
+    return print_it (SP_END_DL, NULL, out, docstat);
   else if (!strncmp (l, ". ", 2))
     *l = ' ';
 
@@ -1030,6 +1133,18 @@ static int handle_docline (char *l, FILE *out, int docstat)
       docstat = print_it (SP_END_FT, NULL, out, docstat);
       s += 2;
     }
+    else if (!strncmp (s, ".dt", 3))
+    {
+      docstat = commit_buff (buff, &d, out, docstat);
+      docstat = print_it (SP_DT, NULL, out, docstat);
+      s += 3;
+    }
+    else if (!strncmp (s, ".dd", 3))
+    {
+      docstat = commit_buff (buff, &d, out, docstat);
+      docstat = print_it (SP_DD, NULL, out, docstat);
+      s += 3;
+    }
     else if (*s == '$')
       /* add code for references here. */
       ;