[BACK]Return to term.c CVS log [TXT][DIR] Up to [cvsweb.bsd.lv] / mandoc

Diff for /mandoc/term.c between version 1.36 and 1.37

version 1.36, 2009/03/02 17:29:16 version 1.37, 2009/03/03 22:17:19
Line 50 
Line 50 
 #define TTYPE_INCLUDE     15  #define TTYPE_INCLUDE     15
 #define TTYPE_SYMB        16  #define TTYPE_SYMB        16
 #define TTYPE_SYMBOL      17  #define TTYPE_SYMBOL      17
 #define TTYPE_NMAX        18  #define TTYPE_DIAG        18
   #define TTYPE_NMAX        19
   
 /*  /*
  * These define "styles" for element types, like command arguments or   * These define "styles" for element types, like command arguments or
Line 78  const int ttypes[TTYPE_NMAX] = {
Line 79  const int ttypes[TTYPE_NMAX] = {
         TERMP_BOLD,             /* TTYPE_CMD */          TERMP_BOLD,             /* TTYPE_CMD */
         TERMP_BOLD,             /* TTYPE_INCLUDE */          TERMP_BOLD,             /* TTYPE_INCLUDE */
         TERMP_BOLD,             /* TTYPE_SYMB */          TERMP_BOLD,             /* TTYPE_SYMB */
         TERMP_BOLD              /* TTYPE_SYMBOL */          TERMP_BOLD,             /* TTYPE_SYMBOL */
           TERMP_BOLD              /* TTYPE_DIAG */
 };  };
   
 static  int               arg_hasattr(int, size_t,  static  int               arg_hasattr(int, size_t,
Line 415  termp_it_pre(DECL_ARGS)
Line 417  termp_it_pre(DECL_ARGS)
                         /* FALLTHROUGH */                          /* FALLTHROUGH */
                 case (MDOC_Tag):                  case (MDOC_Tag):
                         /* FALLTHROUGH */                          /* FALLTHROUGH */
                   case (MDOC_Inset):
                           /* FALLTHROUGH */
                   case (MDOC_Diag):
                           /* FALLTHROUGH */
                 case (MDOC_Ohang):                  case (MDOC_Ohang):
                         type = bl->argv[i].arg;                          type = bl->argv[i].arg;
                         i = (int)bl->argc;                          i = (int)bl->argc;
Line 452  termp_it_pre(DECL_ARGS)
Line 458  termp_it_pre(DECL_ARGS)
                 width = width > 6 ? width : 6;                  width = width > 6 ? width : 6;
                 break;                  break;
         case (MDOC_Tag):          case (MDOC_Tag):
                 /* FIXME: auto-size. */  
                 if (0 == width)                  if (0 == width)
                         errx(1, "need non-zero -width");                          errx(1, "need non-zero -width");
                 break;                  break;
Line 462  termp_it_pre(DECL_ARGS)
Line 467  termp_it_pre(DECL_ARGS)
   
         /* Word-wrap control. */          /* Word-wrap control. */
   
         p->flags |= TERMP_NOSPACE;  
   
         switch (type) {          switch (type) {
           case (MDOC_Diag):
                   if (MDOC_HEAD == node->type)
                           TERMPAIR_SETFLAG(p, pair, ttypes[TTYPE_DIAG]);
                   /* FALLTHROUGH */
           case (MDOC_Inset):
                   if (MDOC_HEAD == node->type)
                           p->flags |= TERMP_NOSPACE;
                   break;
         case (MDOC_Bullet):          case (MDOC_Bullet):
                 /* FALLTHROUGH */                  /* FALLTHROUGH */
         case (MDOC_Dash):          case (MDOC_Dash):
Line 474  termp_it_pre(DECL_ARGS)
Line 485  termp_it_pre(DECL_ARGS)
         case (MDOC_Hyphen):          case (MDOC_Hyphen):
                 /* FALLTHROUGH */                  /* FALLTHROUGH */
         case (MDOC_Tag):          case (MDOC_Tag):
                   p->flags |= TERMP_NOSPACE;
                 if (MDOC_HEAD == node->type)                  if (MDOC_HEAD == node->type)
                         p->flags |= TERMP_NOBREAK;                          p->flags |= TERMP_NOBREAK;
                 else if (MDOC_BODY == node->type)                  else if (MDOC_BODY == node->type)
Line 540  termp_it_pre(DECL_ARGS)
Line 552  termp_it_pre(DECL_ARGS)
 static void  static void
 termp_it_post(DECL_ARGS)  termp_it_post(DECL_ARGS)
 {  {
           int                type, i;
           struct mdoc_block *bl;
   
         if (MDOC_BODY != node->type && MDOC_HEAD != node->type)          if (MDOC_BODY != node->type && MDOC_HEAD != node->type)
                 return;                  return;
   
         flushln(p);          assert(MDOC_BLOCK == node->parent->parent->parent->type);
           assert(MDOC_Bl == node->parent->parent->parent->tok);
           bl = &node->parent->parent->parent->data.block;
   
           for (type = -1, i = 0; i < (int)bl->argc; i++)
                   switch (bl->argv[i].arg) {
                   case (MDOC_Bullet):
                           /* FALLTHROUGH */
                   case (MDOC_Dash):
                           /* FALLTHROUGH */
                   case (MDOC_Enum):
                           /* FALLTHROUGH */
                   case (MDOC_Hyphen):
                           /* FALLTHROUGH */
                   case (MDOC_Tag):
                           /* FALLTHROUGH */
                   case (MDOC_Diag):
                           /* FALLTHROUGH */
                   case (MDOC_Inset):
                           /* FALLTHROUGH */
                   case (MDOC_Ohang):
                           type = bl->argv[i].arg;
                           i = (int)bl->argc;
                           break;
                   default:
                           errx(1, "list type not supported");
                           /* NOTREACHED */
                   }
   
   
           switch (type) {
           case (MDOC_Diag):
                   /* FALLTHROUGH */
           case (MDOC_Inset):
                   break;
           default:
                   flushln(p);
                   break;
           }
   
         p->offset = pair->offset;          p->offset = pair->offset;
         p->rmargin = pair->rmargin;          p->rmargin = pair->rmargin;
   
         if (MDOC_HEAD == node->type)          switch (type) {
                 p->flags &= ~TERMP_NOBREAK;          case (MDOC_Inset):
         else if (MDOC_BODY == node->type)                  break;
                 p->flags &= ~TERMP_NOLPAD;          default:
                   if (MDOC_HEAD == node->type)
                           p->flags &= ~TERMP_NOBREAK;
                   else if (MDOC_BODY == node->type)
                           p->flags &= ~TERMP_NOLPAD;
                   break;
           }
 }  }
   
   

Legend:
Removed from v.1.36  
changed lines
  Added in v.1.37

CVSweb