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

Diff for /mandoc/mdoc_term.c between version 1.150 and 1.152

version 1.150, 2010/06/12 12:10:55 version 1.152, 2010/06/12 12:38:01
Line 61  static int   arg_getattrs(const int *, int *, size_t,
Line 61  static int   arg_getattrs(const int *, int *, size_t,
                         const struct mdoc_node *);                          const struct mdoc_node *);
 static  int       arg_getattr(int, const struct mdoc_node *);  static  int       arg_getattr(int, const struct mdoc_node *);
 static  void      print_bvspace(struct termp *,  static  void      print_bvspace(struct termp *,
                           const struct mdoc_node *,
                         const struct mdoc_node *);                          const struct mdoc_node *);
 static  void      print_mdoc_node(DECL_ARGS);  static  void      print_mdoc_node(DECL_ARGS);
 static  void      print_mdoc_nodelist(DECL_ARGS);  static  void      print_mdoc_nodelist(DECL_ARGS);
Line 563  arg_getattrs(const int *keys, int *vals, 
Line 564  arg_getattrs(const int *keys, int *vals, 
  * too.   * too.
  */   */
 static void  static void
 print_bvspace(struct termp *p, const struct mdoc_node *n)  print_bvspace(struct termp *p,
                   const struct mdoc_node *bl,
                   const struct mdoc_node *n)
 {  {
         const struct mdoc_node  *nn;          const struct mdoc_node  *nn;
   
         term_newln(p);          term_newln(p);
   
         if (MDOC_Bl == n->tok && n->data.Bl.comp)          if (MDOC_Bd == bl->tok && bl->data.Bd.comp)
                 return;                  return;
         if (MDOC_Bd == n->tok && n->data.Bd.comp)          if (MDOC_Bl == bl->tok && bl->data.Bl.comp)
                 return;                  return;
   
         /* Do not vspace directly after Ss/Sh. */          /* Do not vspace directly after Ss/Sh. */
Line 590  print_bvspace(struct termp *p, const struct mdoc_node 
Line 593  print_bvspace(struct termp *p, const struct mdoc_node 
   
         /* A `-column' does not assert vspace within the list. */          /* A `-column' does not assert vspace within the list. */
   
         if (MDOC_Bl == n->tok && LIST_column == n->data.Bl.type)          if (MDOC_Bl == bl->tok && LIST_column == bl->data.Bl.type)
                 if (n->prev && MDOC_It == n->prev->tok)                  if (n->prev && MDOC_It == n->prev->tok)
                         return;                          return;
   
         /* A `-diag' without body does not vspace. */          /* A `-diag' without body does not vspace. */
   
         if (MDOC_Bl == n->tok && LIST_diag == n->data.Bl.type)          if (MDOC_Bl == bl->tok && LIST_diag == bl->data.Bl.type)
                 if (n->prev && MDOC_It == n->prev->tok) {                  if (n->prev && MDOC_It == n->prev->tok) {
                         assert(n->prev->body);                          assert(n->prev->body);
                         if (NULL == n->prev->body->child)                          if (NULL == n->prev->body->child)
Line 640  termp_it_pre(DECL_ARGS)
Line 643  termp_it_pre(DECL_ARGS)
 {  {
         const struct mdoc_node *bl, *nn;          const struct mdoc_node *bl, *nn;
         char                    buf[7];          char                    buf[7];
         int                     i, keys[3], vals[3];          int                     i, keys[2], vals[2];
         size_t                  width, offset, ncols, dcol;          size_t                  width, offset, ncols, dcol;
         enum mdoc_list          type;          enum mdoc_list          type;
   
         if (MDOC_BLOCK == n->type) {          if (MDOC_BLOCK == n->type) {
                 print_bvspace(p, n);                  print_bvspace(p, n->parent->parent, n);
                 return(1);                  return(1);
         }          }
   
Line 654  termp_it_pre(DECL_ARGS)
Line 657  termp_it_pre(DECL_ARGS)
         /* Get list width, offset, and list type from argument list. */          /* Get list width, offset, and list type from argument list. */
   
         keys[0] = MDOC_Width;          keys[0] = MDOC_Width;
         keys[1] = MDOC_Offset;          keys[1] = MDOC_Column;
         keys[2] = MDOC_Column;  
   
         vals[0] = vals[1] = vals[2] = -1;          vals[0] = vals[1] = -1;
   
         arg_getattrs(keys, vals, 3, bl);          arg_getattrs(keys, vals, 2, bl);
   
         type = bl->data.Bl.type;          type = bl->data.Bl.type;
   
Line 671  termp_it_pre(DECL_ARGS)
Line 673  termp_it_pre(DECL_ARGS)
   
         width = offset = 0;          width = offset = 0;
   
         if (vals[1] >= 0)          if (bl->data.Bl.offs)
                 offset = a2offs(bl->args->argv[vals[1]].value[0]);                  offset = a2offs(bl->data.Bl.offs);
   
   
         switch (type) {          switch (type) {
         case (LIST_column):          case (LIST_column):
                 if (MDOC_HEAD == n->type)                  if (MDOC_HEAD == n->type)
Line 687  termp_it_pre(DECL_ARGS)
Line 690  termp_it_pre(DECL_ARGS)
                  *   column.                   *   column.
                  * - For more than 5 columns, add only one column.                   * - For more than 5 columns, add only one column.
                  */                   */
                 ncols = bl->args->argv[vals[2]].sz;                  ncols = bl->args->argv[vals[1]].sz;
                 /* LINTED */                  /* LINTED */
                 dcol = ncols < 5 ? 4 : ncols == 5 ? 3 : 1;                  dcol = ncols < 5 ? 4 : ncols == 5 ? 3 : 1;
   
Line 700  termp_it_pre(DECL_ARGS)
Line 703  termp_it_pre(DECL_ARGS)
                                 nn->prev && i < (int)ncols;                                  nn->prev && i < (int)ncols;
                                 nn = nn->prev, i++)                                  nn = nn->prev, i++)
                         offset += dcol + a2width                          offset += dcol + a2width
                                 (&bl->args->argv[vals[2]], i);                                  (&bl->args->argv[vals[1]], i);
   
   
                 /*                  /*
Line 716  termp_it_pre(DECL_ARGS)
Line 719  termp_it_pre(DECL_ARGS)
                  * Use the declared column widths, extended as explained                   * Use the declared column widths, extended as explained
                  * in the preceding paragraph.                   * in the preceding paragraph.
                  */                   */
                 width = a2width(&bl->args->argv[vals[2]], i) + dcol;                  width = a2width(&bl->args->argv[vals[1]], i) + dcol;
                 break;                  break;
         default:          default:
                 if (vals[0] < 0)                  if (vals[0] < 0)
Line 1606  termp_bd_pre(DECL_ARGS)
Line 1609  termp_bd_pre(DECL_ARGS)
         const struct mdoc_node  *nn;          const struct mdoc_node  *nn;
   
         if (MDOC_BLOCK == n->type) {          if (MDOC_BLOCK == n->type) {
                 print_bvspace(p, n);                  print_bvspace(p, n, n);
                 return(1);                  return(1);
         } else if (MDOC_HEAD == n->type)          } else if (MDOC_HEAD == n->type)
                 return(0);                  return(0);

Legend:
Removed from v.1.150  
changed lines
  Added in v.1.152

CVSweb