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

Diff for /mandoc/term.c between version 1.31 and 1.35

version 1.31, 2009/03/01 13:06:49 version 1.35, 2009/03/02 17:14:46
Line 25 
Line 25 
   
 #include "term.h"  #include "term.h"
   
 #define INDENT            6  
   
 /*  /*
  * Performs actions on nodes of the abstract syntax tree.  Both pre- and   * Performs actions on nodes of the abstract syntax tree.  Both pre- and
  * post-fix operations are defined here.   * post-fix operations are defined here.
Line 934  static int
Line 932  static int
 termp_ft_pre(DECL_ARGS)  termp_ft_pre(DECL_ARGS)
 {  {
   
           if (SEC_SYNOPSIS == node->sec)
                   if (node->prev && MDOC_Fo == node->prev->tok)
                           vspace(p);
         TERMPAIR_SETFLAG(p, pair, ttypes[TTYPE_FUNC_TYPE]);          TERMPAIR_SETFLAG(p, pair, ttypes[TTYPE_FUNC_TYPE]);
         return(1);          return(1);
 }  }
Line 944  static void
Line 945  static void
 termp_ft_post(DECL_ARGS)  termp_ft_post(DECL_ARGS)
 {  {
   
         if (node->sec == SEC_SYNOPSIS)          if (SEC_SYNOPSIS == node->sec)
                 newln(p);                  newln(p);
 }  }
   
Line 1050  static int
Line 1051  static int
 termp_bd_pre(DECL_ARGS)  termp_bd_pre(DECL_ARGS)
 {  {
         const struct mdoc_block *bl;          const struct mdoc_block *bl;
         const struct mdoc_node *n;          const struct mdoc_node  *n;
         int              i;          int              i, type;
   
         if (MDOC_BLOCK == node->type) {          if (MDOC_BLOCK == node->type) {
                 if (node->prev)                  if (node->prev)
Line 1060  termp_bd_pre(DECL_ARGS)
Line 1061  termp_bd_pre(DECL_ARGS)
         } else if (MDOC_BODY != node->type)          } else if (MDOC_BODY != node->type)
                 return(1);                  return(1);
   
         assert(MDOC_BLOCK == node->parent->type);  
         pair->offset = p->offset;          pair->offset = p->offset;
   
         bl = &node->parent->data.block;          bl = &node->parent->data.block;
   
           for (type = -1, i = 0; i < (int)bl->argc; i++) {
                   switch (bl->argv[i].arg) {
                   case (MDOC_Ragged):
                           /* FALLTHROUGH */
                   case (MDOC_Filled):
                           /* FALLTHROUGH */
                   case (MDOC_Unfilled):
                           /* FALLTHROUGH */
                   case (MDOC_Literal):
                           type = bl->argv[i].arg;
                           i = (int)bl->argc;
                           break;
                   default:
                           errx(1, "display type not supported");
                   }
           }
   
           assert(-1 != type);
   
         i = arg_getattr(MDOC_Offset, bl->argc, bl->argv);          i = arg_getattr(MDOC_Offset, bl->argc, bl->argv);
         if (-1 != i) {          if (-1 != i) {
                 assert(1 == bl->argv[i].sz);                  assert(1 == bl->argv[i].sz);
                 p->offset += arg_offset(&bl->argv[i]);                  p->offset += arg_offset(&bl->argv[i]);
         }          }
   
         if ( ! arg_hasattr(MDOC_Literal, bl->argc, bl->argv))  
           switch (type) {
           case (MDOC_Literal):
                   /* FALLTHROUGH */
           case (MDOC_Unfilled):
                   break;
           default:
                 return(1);                  return(1);
           }
   
         p->flags |= TERMP_LITERAL;          p->flags |= TERMP_LITERAL;
   
         for (n = node->child; n; n = n->next) {          for (n = node->child; n; n = n->next) {
                 assert(MDOC_TEXT == n->type); /* FIXME */                  if (MDOC_TEXT != n->type) {
                 if ((*n->data.text.string)) {                          warnx("non-text children not yet allowed");
                         word(p, n->data.text.string);                          continue;
                         flushln(p);                  }
                 } else                  word(p, n->data.text.string);
                         vspace(p);                  flushln(p);
   
         }          }
   
         p->flags &= ~TERMP_LITERAL;  
         return(0);          return(0);
 }  }
   
Line 1099  termp_bd_post(DECL_ARGS)
Line 1121  termp_bd_post(DECL_ARGS)
   
         if (MDOC_BODY != node->type)          if (MDOC_BODY != node->type)
                 return;                  return;
         newln(p);  
           if ( ! (p->flags & TERMP_LITERAL))
                   flushln(p);
   
           p->flags &= ~TERMP_LITERAL;
         p->offset = pair->offset;          p->offset = pair->offset;
 }  }
   
Line 1144  static void
Line 1170  static void
 termp_bx_post(DECL_ARGS)  termp_bx_post(DECL_ARGS)
 {  {
   
         p->flags |= TERMP_NOSPACE;          if (node->child)
                   p->flags |= TERMP_NOSPACE;
         word(p, "BSD");          word(p, "BSD");
 }  }
   
Line 1295  termp_cd_pre(DECL_ARGS)
Line 1322  termp_cd_pre(DECL_ARGS)
 {  {
   
         TERMPAIR_SETFLAG(p, pair, ttypes[TTYPE_CONFIG]);          TERMPAIR_SETFLAG(p, pair, ttypes[TTYPE_CONFIG]);
           newln(p);
         return(1);          return(1);
 }  }
   

Legend:
Removed from v.1.31  
changed lines
  Added in v.1.35

CVSweb