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

Diff for /mandoc/mdoc_man.c between version 1.135 and 1.136

version 1.135, 2020/02/20 22:55:42 version 1.136, 2020/02/27 01:43:52
Line 113  static int   pre_sm(DECL_ARGS);
Line 113  static int   pre_sm(DECL_ARGS);
 static  void      pre_sp(DECL_ARGS);  static  void      pre_sp(DECL_ARGS);
 static  int       pre_sect(DECL_ARGS);  static  int       pre_sect(DECL_ARGS);
 static  int       pre_sy(DECL_ARGS);  static  int       pre_sy(DECL_ARGS);
 static  void      pre_syn(const struct roff_node *);  static  void      pre_syn(struct roff_node *);
 static  void      pre_ta(DECL_ARGS);  static  void      pre_ta(DECL_ARGS);
 static  int       pre_vt(DECL_ARGS);  static  int       pre_vt(DECL_ARGS);
 static  int       pre_xr(DECL_ARGS);  static  int       pre_xr(DECL_ARGS);
Line 650  print_node(DECL_ARGS)
Line 650  print_node(DECL_ARGS)
          * Break the line if we were parsed subsequent the current node.           * Break the line if we were parsed subsequent the current node.
          * This makes the page structure be more consistent.           * This makes the page structure be more consistent.
          */           */
         if (MMAN_spc & outflags && NODE_LINE & n->flags)          if (outflags & MMAN_spc &&
               n->flags & NODE_LINE &&
               !roff_node_transparent(n))
                 outflags |= MMAN_nl;                  outflags |= MMAN_nl;
   
         act = NULL;          act = NULL;
Line 777  post_font(DECL_ARGS)
Line 779  post_font(DECL_ARGS)
 static void  static void
 post_percent(DECL_ARGS)  post_percent(DECL_ARGS)
 {  {
           struct roff_node *np, *nn, *nnn;
   
         if (mdoc_man_act(n->tok)->pre == pre_em)          if (mdoc_man_act(n->tok)->pre == pre_em)
                 font_pop();                  font_pop();
         if (n->next) {  
                 print_word(",");          if ((nn = roff_node_next(n)) != NULL) {
                 if (n->prev &&  n->prev->tok == n->tok &&                  np = roff_node_prev(n);
                                 n->next->tok == n->tok)                  nnn = nn == NULL ? NULL : roff_node_next(nn);
                   if (nn->tok != n->tok ||
                       (np != NULL && np->tok == n->tok) ||
                       (nnn != NULL && nnn->tok == n->tok))
                           print_word(",");
                   if (nn->tok == n->tok &&
                       (nnn == NULL || nnn->tok != n->tok))
                         print_word("and");                          print_word("and");
         } else {          } else {
                 print_word(".");                  print_word(".");
Line 851  post_sect(DECL_ARGS)
Line 860  post_sect(DECL_ARGS)
   
 /* See mdoc_term.c, synopsis_pre() for comments. */  /* See mdoc_term.c, synopsis_pre() for comments. */
 static void  static void
 pre_syn(const struct roff_node *n)  pre_syn(struct roff_node *n)
 {  {
           struct roff_node *np;
   
         if (NULL == n->prev || ! (NODE_SYNPRETTY & n->flags))          if ((n->flags & NODE_SYNPRETTY) == 0 ||
               (np = roff_node_prev(n)) == NULL)
                 return;                  return;
   
         if (n->prev->tok == n->tok &&          if (np->tok == n->tok &&
             MDOC_Ft != n->tok &&              MDOC_Ft != n->tok &&
             MDOC_Fo != n->tok &&              MDOC_Fo != n->tok &&
             MDOC_Fn != n->tok) {              MDOC_Fn != n->tok) {
Line 865  pre_syn(const struct roff_node *n)
Line 876  pre_syn(const struct roff_node *n)
                 return;                  return;
         }          }
   
         switch (n->prev->tok) {          switch (np->tok) {
         case MDOC_Fd:          case MDOC_Fd:
         case MDOC_Fn:          case MDOC_Fn:
         case MDOC_Fo:          case MDOC_Fo:
Line 941  static int
Line 952  static int
 pre_bd(DECL_ARGS)  pre_bd(DECL_ARGS)
 {  {
         outflags &= ~(MMAN_PP | MMAN_sp | MMAN_br);          outflags &= ~(MMAN_PP | MMAN_sp | MMAN_br);
           if (n->norm->Bd.type == DISP_unfilled ||
         if (DISP_unfilled == n->norm->Bd.type ||              n->norm->Bd.type == DISP_literal)
             DISP_literal  == n->norm->Bd.type)  
                 print_line(".nf", 0);                  print_line(".nf", 0);
         if (0 == n->norm->Bd.comp && NULL != n->parent->prev)          if (n->norm->Bd.comp == 0 && roff_node_prev(n->parent) != NULL)
                 outflags |= MMAN_sp;                  outflags |= MMAN_sp;
         print_offs(n->norm->Bd.offs, 1);          print_offs(n->norm->Bd.offs, 1);
         return 1;          return 1;
Line 977  post_bd(DECL_ARGS)
Line 987  post_bd(DECL_ARGS)
         }          }
   
         /* Maybe we are inside an enclosing list? */          /* Maybe we are inside an enclosing list? */
         if (NULL != n->parent->next)          if (roff_node_next(n->parent) != NULL)
                 mid_it();                  mid_it();
 }  }
   
Line 1102  post_bl(DECL_ARGS)
Line 1112  post_bl(DECL_ARGS)
                 print_line(".RE", MMAN_nl);                  print_line(".RE", MMAN_nl);
                 assert(Bl_stack_len);                  assert(Bl_stack_len);
                 Bl_stack_len--;                  Bl_stack_len--;
                 assert(0 == Bl_stack[Bl_stack_len]);                  assert(Bl_stack[Bl_stack_len] == 0);
         } else {          } else {
                 outflags |= MMAN_PP | MMAN_nl;                  outflags |= MMAN_PP | MMAN_nl;
                 outflags &= ~(MMAN_sp | MMAN_br);                  outflags &= ~(MMAN_sp | MMAN_br);
         }          }
   
         /* Maybe we are inside an enclosing list? */          /* Maybe we are inside an enclosing list? */
         if (NULL != n->parent->next)          if (roff_node_next(n->parent) != NULL)
                 mid_it();                  mid_it();
   
 }  }
   
 static void  static void
Line 1123  pre_br(DECL_ARGS)
Line 1132  pre_br(DECL_ARGS)
 static int  static int
 pre_dl(DECL_ARGS)  pre_dl(DECL_ARGS)
 {  {
   
         print_offs("6n", 0);          print_offs("6n", 0);
         return 1;          return 1;
 }  }
Line 1131  pre_dl(DECL_ARGS)
Line 1139  pre_dl(DECL_ARGS)
 static void  static void
 post_dl(DECL_ARGS)  post_dl(DECL_ARGS)
 {  {
   
         print_line(".RE", MMAN_nl);          print_line(".RE", MMAN_nl);
   
         /* Maybe we are inside an enclosing list? */          /* Maybe we are inside an enclosing list? */
         if (NULL != n->parent->next)          if (roff_node_next(n->parent) != NULL)
                 mid_it();                  mid_it();
 }  }
   
Line 1236  pre_fa(DECL_ARGS)
Line 1243  pre_fa(DECL_ARGS)
 static void  static void
 post_fa(DECL_ARGS)  post_fa(DECL_ARGS)
 {  {
           struct roff_node *nn;
   
         if (NULL != n->next && MDOC_Fa == n->next->tok)          if ((nn = roff_node_next(n)) != NULL && nn->tok == MDOC_Fa)
                 print_word(",");                  print_word(",");
 }  }
   
 static int  static int
 pre_fd(DECL_ARGS)  pre_fd(DECL_ARGS)
 {  {
   
         pre_syn(n);          pre_syn(n);
         font_push('B');          font_push('B');
         return 1;          return 1;
Line 1253  pre_fd(DECL_ARGS)
Line 1260  pre_fd(DECL_ARGS)
 static void  static void
 post_fd(DECL_ARGS)  post_fd(DECL_ARGS)
 {  {
   
         font_pop();          font_pop();
         outflags |= MMAN_br;          outflags |= MMAN_br;
 }  }
Line 1261  post_fd(DECL_ARGS)
Line 1267  post_fd(DECL_ARGS)
 static int  static int
 pre_fl(DECL_ARGS)  pre_fl(DECL_ARGS)
 {  {
   
         font_push('B');          font_push('B');
         print_word("\\-");          print_word("\\-");
         if (n->child != NULL)          if (n->child != NULL)
Line 1272  pre_fl(DECL_ARGS)
Line 1277  pre_fl(DECL_ARGS)
 static void  static void
 post_fl(DECL_ARGS)  post_fl(DECL_ARGS)
 {  {
           struct roff_node *nn;
   
         font_pop();          font_pop();
         if (!(n->child != NULL ||          if (n->child == NULL &&
             n->next == NULL ||              ((nn = roff_node_next(n)) != NULL &&
             n->next->type == ROFFT_TEXT ||              nn->type != ROFFT_TEXT &&
             n->next->flags & NODE_LINE))              (nn->flags & NODE_LINE) == 0))
                 outflags &= ~MMAN_spc;                  outflags &= ~MMAN_spc;
 }  }
   
Line 1420  pre_it(DECL_ARGS)
Line 1426  pre_it(DECL_ARGS)
         case ROFFT_HEAD:          case ROFFT_HEAD:
                 outflags |= MMAN_PP | MMAN_nl;                  outflags |= MMAN_PP | MMAN_nl;
                 bln = n->parent->parent;                  bln = n->parent->parent;
                 if (0 == bln->norm->Bl.comp ||                  if (bln->norm->Bl.comp == 0 ||
                     (NULL == n->parent->prev &&                      (n->parent->prev == NULL &&
                      NULL == bln->parent->prev))                       roff_node_prev(bln->parent) == NULL))
                         outflags |= MMAN_sp;                          outflags |= MMAN_sp;
                 outflags &= ~MMAN_br;                  outflags &= ~MMAN_br;
                 switch (bln->norm->Bl.type) {                  switch (bln->norm->Bl.type) {
Line 1634  pre_nm(DECL_ARGS)
Line 1640  pre_nm(DECL_ARGS)
 {  {
         char    *name;          char    *name;
   
         if (n->type == ROFFT_BLOCK) {          switch (n->type) {
           case ROFFT_BLOCK:
                 outflags |= MMAN_Bk;                  outflags |= MMAN_Bk;
                 pre_syn(n);                  pre_syn(n);
         }  
         if (n->type != ROFFT_ELEM && n->type != ROFFT_HEAD)  
                 return 1;                  return 1;
           case ROFFT_HEAD:
           case ROFFT_ELEM:
                   break;
           default:
                   return 1;
           }
         name = n->child == NULL ? NULL : n->child->string;          name = n->child == NULL ? NULL : n->child->string;
         if (NULL == name)          if (name == NULL)
                 return 0;                  return 0;
         if (n->type == ROFFT_HEAD) {          if (n->type == ROFFT_HEAD) {
                 if (NULL == n->parent->prev)                  if (roff_node_prev(n->parent) == NULL)
                         outflags |= MMAN_sp;                          outflags |= MMAN_sp;
                 print_block(".HP", 0);                  print_block(".HP", 0);
                 printf(" %dn", man_strlen(name) + 1);                  printf(" %dn", man_strlen(name) + 1);

Legend:
Removed from v.1.135  
changed lines
  Added in v.1.136

CVSweb