[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.379 and 1.383

version 1.379, 2020/03/13 15:32:28 version 1.383, 2023/11/13 19:13:01
Line 1 
Line 1 
 /* $Id$ */  /* $Id$ */
 /*  /*
  * Copyright (c) 2010, 2012-2020 Ingo Schwarze <schwarze@openbsd.org>   * Copyright (c) 2010, 2012-2020, 2022 Ingo Schwarze <schwarze@openbsd.org>
  * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>   * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
  * Copyright (c) 2013 Franco Fichtner <franco@lastsummer.de>   * Copyright (c) 2013 Franco Fichtner <franco@lastsummer.de>
  *   *
Line 250  terminal_mdoc(void *arg, const struct roff_meta *mdoc)
Line 250  terminal_mdoc(void *arg, const struct roff_meta *mdoc)
 {  {
         struct roff_node        *n, *nn;          struct roff_node        *n, *nn;
         struct termp            *p;          struct termp            *p;
         size_t                   save_defindent;  
   
         p = (struct termp *)arg;          p = (struct termp *)arg;
         p->tcol->rmargin = p->maxrmargin = p->defrmargin;          p->tcol->rmargin = p->maxrmargin = p->defrmargin;
Line 275  terminal_mdoc(void *arg, const struct roff_meta *mdoc)
Line 274  terminal_mdoc(void *arg, const struct roff_meta *mdoc)
                         print_mdoc_nodelist(p, NULL, mdoc, n);                          print_mdoc_nodelist(p, NULL, mdoc, n);
                 term_newln(p);                  term_newln(p);
         } else {          } else {
                 save_defindent = p->defindent;  
                 if (p->defindent == 0)  
                         p->defindent = 5;  
                 term_begin(p, print_mdoc_head, print_mdoc_foot, mdoc);                  term_begin(p, print_mdoc_head, print_mdoc_foot, mdoc);
                 while (n != NULL &&                  while (n != NULL &&
                     (n->type == ROFFT_COMMENT ||                      (n->type == ROFFT_COMMENT ||
Line 289  terminal_mdoc(void *arg, const struct roff_meta *mdoc)
Line 285  terminal_mdoc(void *arg, const struct roff_meta *mdoc)
                         print_mdoc_nodelist(p, NULL, mdoc, n);                          print_mdoc_nodelist(p, NULL, mdoc, n);
                 }                  }
                 term_end(p);                  term_end(p);
                 p->defindent = save_defindent;  
         }          }
 }  }
   
Line 320  print_mdoc_node(DECL_ARGS)
Line 315  print_mdoc_node(DECL_ARGS)
                     (p->flags & TERMP_NONEWLINE) == 0)                      (p->flags & TERMP_NONEWLINE) == 0)
                         term_newln(p);                          term_newln(p);
                 p->flags |= TERMP_BRNEVER;                  p->flags |= TERMP_BRNEVER;
         } else          } else {
                   if (n->flags & NODE_LINE)
                           term_tab_ref(p);
                 p->flags &= ~TERMP_BRNEVER;                  p->flags &= ~TERMP_BRNEVER;
           }
   
         if (n->type == ROFFT_COMMENT || n->flags & NODE_NOPRT)          if (n->type == ROFFT_COMMENT || n->flags & NODE_NOPRT)
                 return;                  return;
Line 335  print_mdoc_node(DECL_ARGS)
Line 333  print_mdoc_node(DECL_ARGS)
         memset(&npair, 0, sizeof(struct termpair));          memset(&npair, 0, sizeof(struct termpair));
         npair.ppair = pair;          npair.ppair = pair;
   
         if (n->flags & NODE_ID)          if (n->flags & NODE_ID && n->tok != MDOC_Pp &&
               (n->tok != MDOC_It || n->type != ROFFT_BLOCK))
                 term_tag_write(n, p->line);                  term_tag_write(n, p->line);
   
         /*          /*
Line 565  a2width(const struct termp *p, const char *v)
Line 564  a2width(const struct termp *p, const char *v)
   
         end = a2roffsu(v, &su, SCALE_MAX);          end = a2roffsu(v, &su, SCALE_MAX);
         if (end == NULL || *end != '\0') {          if (end == NULL || *end != '\0') {
                 SCALE_HS_INIT(&su, term_strlen(p, v));                  su.unit = SCALE_EN;
                 su.scale /= term_strlen(p, "0");                  su.scale = term_strlen(p, v) / term_strlen(p, "0");
         }          }
         return term_hen(p, &su);          return term_hen(p, &su);
 }  }
Line 630  termp_it_pre(DECL_ARGS)
Line 629  termp_it_pre(DECL_ARGS)
   
         if (n->type == ROFFT_BLOCK) {          if (n->type == ROFFT_BLOCK) {
                 print_bvspace(p, n->parent->parent, n);                  print_bvspace(p, n->parent->parent, n);
                   if (n->flags & NODE_ID)
                           term_tag_write(n, p->line);
                 return 1;                  return 1;
         }          }
   
Line 700  termp_it_pre(DECL_ARGS)
Line 701  termp_it_pre(DECL_ARGS)
                 for (i = 0, nn = n->prev;                  for (i = 0, nn = n->prev;
                     nn->prev && i < (int)ncols;                      nn->prev && i < (int)ncols;
                     nn = nn->prev, i++) {                      nn = nn->prev, i++) {
                         SCALE_HS_INIT(&su,                          su.unit = SCALE_EN;
                             term_strlen(p, bl->norm->Bl.cols[i]));                          su.scale = term_strlen(p, bl->norm->Bl.cols[i]) /
                         su.scale /= term_strlen(p, "0");                              term_strlen(p, "0");
                         offset += term_hen(p, &su) + dcol;                          offset += term_hen(p, &su) + dcol;
                 }                  }
   
Line 719  termp_it_pre(DECL_ARGS)
Line 720  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.
                  */                   */
                 SCALE_HS_INIT(&su, term_strlen(p, bl->norm->Bl.cols[i]));                  su.unit = SCALE_EN;
                 su.scale /= term_strlen(p, "0");                  su.scale = term_strlen(p, bl->norm->Bl.cols[i]) /
                       term_strlen(p, "0");
                 width = term_hen(p, &su) + dcol;                  width = term_hen(p, &su) + dcol;
                 break;                  break;
         default:          default:
Line 1110  termp_ex_pre(DECL_ARGS)
Line 1112  termp_ex_pre(DECL_ARGS)
 static int  static int
 termp_nd_pre(DECL_ARGS)  termp_nd_pre(DECL_ARGS)
 {  {
   
         if (n->type == ROFFT_BODY)          if (n->type == ROFFT_BODY)
                 term_word(p, "\\(en");                  term_word(p, "\\(en");
         return 1;          return 1;
Line 1119  termp_nd_pre(DECL_ARGS)
Line 1120  termp_nd_pre(DECL_ARGS)
 static int  static int
 termp_bl_pre(DECL_ARGS)  termp_bl_pre(DECL_ARGS)
 {  {
           switch (n->type) {
         return n->type != ROFFT_HEAD;          case ROFFT_BLOCK:
                   term_newln(p);
                   return 1;
           case ROFFT_HEAD:
                   return 0;
           default:
                   return 1;
           }
 }  }
   
 static void  static void
 termp_bl_post(DECL_ARGS)  termp_bl_post(DECL_ARGS)
 {  {
   
         if (n->type != ROFFT_BLOCK)          if (n->type != ROFFT_BLOCK)
                 return;                  return;
         term_newln(p);          term_newln(p);
Line 1140  termp_bl_post(DECL_ARGS)
Line 1147  termp_bl_post(DECL_ARGS)
 static int  static int
 termp_xr_pre(DECL_ARGS)  termp_xr_pre(DECL_ARGS)
 {  {
   
         if (NULL == (n = n->child))          if (NULL == (n = n->child))
                 return 0;                  return 0;
   
Line 1555  static int
Line 1561  static int
 termp_pp_pre(DECL_ARGS)  termp_pp_pre(DECL_ARGS)
 {  {
         term_vspace(p);          term_vspace(p);
           if (n->flags & NODE_ID)
                   term_tag_write(n, p->line);
         return 0;          return 0;
 }  }
   

Legend:
Removed from v.1.379  
changed lines
  Added in v.1.383

CVSweb