[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.313 and 1.314

version 1.313, 2015/03/06 15:48:52 version 1.314, 2015/04/02 21:36:50
Line 8 
Line 8 
  * purpose with or without fee is hereby granted, provided that the above   * purpose with or without fee is hereby granted, provided that the above
  * copyright notice and this permission notice appear in all copies.   * copyright notice and this permission notice appear in all copies.
  *   *
  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES   * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHORS DISCLAIM ALL WARRANTIES
  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF   * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR   * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR
  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES   * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN   * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF   * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
Line 28 
Line 28 
 #include <stdlib.h>  #include <stdlib.h>
 #include <string.h>  #include <string.h>
   
 #include "mandoc.h"  
 #include "mandoc_aux.h"  #include "mandoc_aux.h"
   #include "mandoc.h"
   #include "roff.h"
   #include "mdoc.h"
 #include "out.h"  #include "out.h"
 #include "term.h"  #include "term.h"
 #include "mdoc.h"  
 #include "main.h"  #include "main.h"
   
 struct  termpair {  struct  termpair {
Line 331  print_mdoc_node(DECL_ARGS)
Line 332  print_mdoc_node(DECL_ARGS)
          */           */
   
         switch (n->type) {          switch (n->type) {
         case MDOC_TEXT:          case ROFFT_TEXT:
                 if (' ' == *n->string && MDOC_LINE & n->flags)                  if (' ' == *n->string && MDOC_LINE & n->flags)
                         term_newln(p);                          term_newln(p);
                 if (MDOC_DELIMC & n->flags)                  if (MDOC_DELIMC & n->flags)
Line 340  print_mdoc_node(DECL_ARGS)
Line 341  print_mdoc_node(DECL_ARGS)
                 if (MDOC_DELIMO & n->flags)                  if (MDOC_DELIMO & n->flags)
                         p->flags |= TERMP_NOSPACE;                          p->flags |= TERMP_NOSPACE;
                 break;                  break;
         case MDOC_EQN:          case ROFFT_EQN:
                 if ( ! (n->flags & MDOC_LINE))                  if ( ! (n->flags & MDOC_LINE))
                         p->flags |= TERMP_NOSPACE;                          p->flags |= TERMP_NOSPACE;
                 term_eqn(p, n->eqn);                  term_eqn(p, n->eqn);
                 if (n->next != NULL && ! (n->next->flags & MDOC_LINE))                  if (n->next != NULL && ! (n->next->flags & MDOC_LINE))
                         p->flags |= TERMP_NOSPACE;                          p->flags |= TERMP_NOSPACE;
                 break;                  break;
         case MDOC_TBL:          case ROFFT_TBL:
                 if (p->tbl.cols == NULL)                  if (p->tbl.cols == NULL)
                         term_newln(p);                          term_newln(p);
                 term_tbl(p, n->span);                  term_tbl(p, n->span);
Line 367  print_mdoc_node(DECL_ARGS)
Line 368  print_mdoc_node(DECL_ARGS)
             (ENDBODY_NOT == n->end ? n : n->body)->prev_font);              (ENDBODY_NOT == n->end ? n : n->body)->prev_font);
   
         switch (n->type) {          switch (n->type) {
         case MDOC_TEXT:          case ROFFT_TEXT:
                 break;                  break;
         case MDOC_TBL:          case ROFFT_TBL:
                 break;                  break;
         case MDOC_EQN:          case ROFFT_EQN:
                 break;                  break;
         default:          default:
                 if ( ! termacts[n->tok].post || MDOC_ENDED & n->flags)                  if ( ! termacts[n->tok].post || MDOC_ENDED & n->flags)
Line 568  print_bvspace(struct termp *p,
Line 569  print_bvspace(struct termp *p,
         while (nn->prev == NULL) {          while (nn->prev == NULL) {
                 do {                  do {
                         nn = nn->parent;                          nn = nn->parent;
                         if (nn->type == MDOC_ROOT)                          if (nn->type == ROFFT_ROOT)
                                 return;                                  return;
                 } while (nn->type != MDOC_BLOCK);                  } while (nn->type != ROFFT_BLOCK);
                 if (nn->tok == MDOC_Sh || nn->tok == MDOC_Ss)                  if (nn->tok == MDOC_Sh || nn->tok == MDOC_Ss)
                         return;                          return;
                 if (nn->tok == MDOC_It &&                  if (nn->tok == MDOC_It &&
Line 614  termp_it_pre(DECL_ARGS)
Line 615  termp_it_pre(DECL_ARGS)
         int                     i, offset, width;          int                     i, offset, width;
         enum mdoc_list          type;          enum mdoc_list          type;
   
         if (MDOC_BLOCK == n->type) {          if (n->type == ROFFT_BLOCK) {
                 print_bvspace(p, n->parent->parent, n);                  print_bvspace(p, n->parent->parent, n);
                 return(1);                  return(1);
         }          }
Line 666  termp_it_pre(DECL_ARGS)
Line 667  termp_it_pre(DECL_ARGS)
   
         switch (type) {          switch (type) {
         case LIST_column:          case LIST_column:
                 if (MDOC_HEAD == n->type)                  if (n->type == ROFFT_HEAD)
                         break;                          break;
   
                 /*                  /*
Line 683  termp_it_pre(DECL_ARGS)
Line 684  termp_it_pre(DECL_ARGS)
                     ncols == 5 ? term_len(p, 3) : term_len(p, 1);                      ncols == 5 ? term_len(p, 3) : term_len(p, 1);
   
                 /*                  /*
                  * Calculate the offset by applying all prior MDOC_BODY,                   * Calculate the offset by applying all prior ROFFT_BODY,
                  * so we stop at the MDOC_HEAD (NULL == nn->prev).                   * so we stop at the ROFFT_HEAD (nn->prev == NULL).
                  */                   */
   
                 for (i = 0, nn = n->prev;                  for (i = 0, nn = n->prev;
Line 734  termp_it_pre(DECL_ARGS)
Line 735  termp_it_pre(DECL_ARGS)
   
         switch (type) {          switch (type) {
         case LIST_diag:          case LIST_diag:
                 if (MDOC_BODY == n->type)                  if (n->type == ROFFT_BODY)
                         term_word(p, "\\ \\ ");                          term_word(p, "\\ \\ ");
                 break;                  break;
         case LIST_inset:          case LIST_inset:
                 if (MDOC_BODY == n->type && n->parent->head->nchild)                  if (n->type == ROFFT_BODY && n->parent->head->nchild)
                         term_word(p, "\\ ");                          term_word(p, "\\ ");
                 break;                  break;
         default:          default:
Line 749  termp_it_pre(DECL_ARGS)
Line 750  termp_it_pre(DECL_ARGS)
   
         switch (type) {          switch (type) {
         case LIST_diag:          case LIST_diag:
                 if (MDOC_HEAD == n->type)                  if (n->type == ROFFT_HEAD)
                         term_fontpush(p, TERMFONT_BOLD);                          term_fontpush(p, TERMFONT_BOLD);
                 break;                  break;
         default:          default:
Line 777  termp_it_pre(DECL_ARGS)
Line 778  termp_it_pre(DECL_ARGS)
         case LIST_hyphen:          case LIST_hyphen:
                 if (width <= (int)term_len(p, 2))                  if (width <= (int)term_len(p, 2))
                         p->flags |= TERMP_HANG;                          p->flags |= TERMP_HANG;
                 if (MDOC_HEAD != n->type)                  if (n->type != ROFFT_HEAD)
                         break;                          break;
                 p->flags |= TERMP_NOBREAK;                  p->flags |= TERMP_NOBREAK;
                 p->trailspace = 1;                  p->trailspace = 1;
                 break;                  break;
         case LIST_hang:          case LIST_hang:
                 if (MDOC_HEAD != n->type)                  if (n->type != ROFFT_HEAD)
                         break;                          break;
   
                 /*                  /*
Line 802  termp_it_pre(DECL_ARGS)
Line 803  termp_it_pre(DECL_ARGS)
                 p->trailspace = 1;                  p->trailspace = 1;
                 break;                  break;
         case LIST_tag:          case LIST_tag:
                 if (MDOC_HEAD != n->type)                  if (n->type != ROFFT_HEAD)
                         break;                          break;
   
                 p->flags |= TERMP_NOBREAK | TERMP_BRIND;                  p->flags |= TERMP_NOBREAK | TERMP_BRIND;
Line 812  termp_it_pre(DECL_ARGS)
Line 813  termp_it_pre(DECL_ARGS)
                         p->flags |= TERMP_DANGLE;                          p->flags |= TERMP_DANGLE;
                 break;                  break;
         case LIST_column:          case LIST_column:
                 if (MDOC_HEAD == n->type)                  if (n->type == ROFFT_HEAD)
                         break;                          break;
   
                 if (NULL == n->next) {                  if (NULL == n->next) {
Line 825  termp_it_pre(DECL_ARGS)
Line 826  termp_it_pre(DECL_ARGS)
   
                 break;                  break;
         case LIST_diag:          case LIST_diag:
                 if (MDOC_HEAD != n->type)                  if (n->type != ROFFT_HEAD)
                         break;                          break;
                 p->flags |= TERMP_NOBREAK | TERMP_BRIND;                  p->flags |= TERMP_NOBREAK | TERMP_BRIND;
                 p->trailspace = 1;                  p->trailspace = 1;
Line 849  termp_it_pre(DECL_ARGS)
Line 850  termp_it_pre(DECL_ARGS)
                  * don't want to recalculate rmargin and offsets when                   * don't want to recalculate rmargin and offsets when
                  * using `Bd' or `Bl' within `-hang' overstep lists.                   * using `Bd' or `Bl' within `-hang' overstep lists.
                  */                   */
                 if (MDOC_HEAD == n->type &&                  if (n->type == ROFFT_HEAD &&
                     NULL != n->next &&                      NULL != n->next &&
                     NULL != n->next->child &&                      NULL != n->next->child &&
                     (MDOC_Bl == n->next->child->tok ||                      (MDOC_Bl == n->next->child->tok ||
Line 865  termp_it_pre(DECL_ARGS)
Line 866  termp_it_pre(DECL_ARGS)
         case LIST_hyphen:          case LIST_hyphen:
                 /* FALLTHROUGH */                  /* FALLTHROUGH */
         case LIST_tag:          case LIST_tag:
                 if (MDOC_HEAD == n->type)                  if (n->type == ROFFT_HEAD)
                         p->rmargin = p->offset + width;                          p->rmargin = p->offset + width;
                 else                  else
                         p->offset += width;                          p->offset += width;
Line 877  termp_it_pre(DECL_ARGS)
Line 878  termp_it_pre(DECL_ARGS)
                  * XXX - this behaviour is not documented: the                   * XXX - this behaviour is not documented: the
                  * right-most column is filled to the right margin.                   * right-most column is filled to the right margin.
                  */                   */
                 if (MDOC_HEAD == n->type)                  if (n->type == ROFFT_HEAD)
                         break;                          break;
                 if (NULL == n->next && p->rmargin < p->maxrmargin)                  if (NULL == n->next && p->rmargin < p->maxrmargin)
                         p->rmargin = p->maxrmargin;                          p->rmargin = p->maxrmargin;
Line 891  termp_it_pre(DECL_ARGS)
Line 892  termp_it_pre(DECL_ARGS)
          * HEAD character (temporarily bold, in some cases).           * HEAD character (temporarily bold, in some cases).
          */           */
   
         if (MDOC_HEAD == n->type)          if (n->type == ROFFT_HEAD)
                 switch (type) {                  switch (type) {
                 case LIST_bullet:                  case LIST_bullet:
                         term_fontpush(p, TERMFONT_BOLD);                          term_fontpush(p, TERMFONT_BOLD);
Line 929  termp_it_pre(DECL_ARGS)
Line 930  termp_it_pre(DECL_ARGS)
         case LIST_hyphen:          case LIST_hyphen:
                 /* FALLTHROUGH */                  /* FALLTHROUGH */
         case LIST_enum:          case LIST_enum:
                 if (MDOC_HEAD == n->type)                  if (n->type == ROFFT_HEAD)
                         return(0);                          return(0);
                 break;                  break;
         case LIST_column:          case LIST_column:
                 if (MDOC_HEAD == n->type)                  if (n->type == ROFFT_HEAD)
                         return(0);                          return(0);
                 break;                  break;
         default:          default:
Line 948  termp_it_post(DECL_ARGS)
Line 949  termp_it_post(DECL_ARGS)
 {  {
         enum mdoc_list     type;          enum mdoc_list     type;
   
         if (MDOC_BLOCK == n->type)          if (n->type == ROFFT_BLOCK)
                 return;                  return;
   
         type = n->parent->parent->parent->norm->Bl.type;          type = n->parent->parent->parent->norm->Bl.type;
Line 959  termp_it_post(DECL_ARGS)
Line 960  termp_it_post(DECL_ARGS)
         case LIST_diag:          case LIST_diag:
                 /* FALLTHROUGH */                  /* FALLTHROUGH */
         case LIST_inset:          case LIST_inset:
                 if (MDOC_BODY == n->type)                  if (n->type == ROFFT_BODY)
                         term_newln(p);                          term_newln(p);
                 break;                  break;
         case LIST_column:          case LIST_column:
                 if (MDOC_BODY == n->type)                  if (n->type == ROFFT_BODY)
                         term_flushln(p);                          term_flushln(p);
                 break;                  break;
         default:          default:
Line 987  termp_nm_pre(DECL_ARGS)
Line 988  termp_nm_pre(DECL_ARGS)
 {  {
         const char      *cp;          const char      *cp;
   
         if (MDOC_BLOCK == n->type) {          if (n->type == ROFFT_BLOCK) {
                 p->flags |= TERMP_PREKEEP;                  p->flags |= TERMP_PREKEEP;
                 return(1);                  return(1);
         }          }
   
         if (MDOC_BODY == n->type) {          if (n->type == ROFFT_BODY) {
                 if (NULL == n->child)                  if (NULL == n->child)
                         return(0);                          return(0);
                 p->flags |= TERMP_NOSPACE;                  p->flags |= TERMP_NOSPACE;
Line 1011  termp_nm_pre(DECL_ARGS)
Line 1012  termp_nm_pre(DECL_ARGS)
         if (NULL == n->child && NULL == meta->name)          if (NULL == n->child && NULL == meta->name)
                 return(0);                  return(0);
   
         if (MDOC_HEAD == n->type)          if (n->type == ROFFT_HEAD)
                 synopsis_pre(p, n->parent);                  synopsis_pre(p, n->parent);
   
         if (MDOC_HEAD == n->type &&          if (n->type == ROFFT_HEAD &&
             NULL != n->next && NULL != n->next->child) {              NULL != n->next && NULL != n->next->child) {
                 p->flags |= TERMP_NOSPACE | TERMP_NOBREAK | TERMP_BRIND;                  p->flags |= TERMP_NOSPACE | TERMP_NOBREAK | TERMP_BRIND;
                 p->trailspace = 1;                  p->trailspace = 1;
                 p->rmargin = p->offset + term_len(p, 1);                  p->rmargin = p->offset + term_len(p, 1);
                 if (NULL == n->child) {                  if (NULL == n->child) {
                         p->rmargin += term_strlen(p, meta->name);                          p->rmargin += term_strlen(p, meta->name);
                 } else if (MDOC_TEXT == n->child->type) {                  } else if (n->child->type == ROFFT_TEXT) {
                         p->rmargin += term_strlen(p, n->child->string);                          p->rmargin += term_strlen(p, n->child->string);
                         if (n->child->next)                          if (n->child->next)
                                 p->flags |= TERMP_HANG;                                  p->flags |= TERMP_HANG;
Line 1041  static void
Line 1042  static void
 termp_nm_post(DECL_ARGS)  termp_nm_post(DECL_ARGS)
 {  {
   
         if (MDOC_BLOCK == n->type) {          if (n->type == ROFFT_BLOCK) {
                 p->flags &= ~(TERMP_KEEP | TERMP_PREKEEP);                  p->flags &= ~(TERMP_KEEP | TERMP_PREKEEP);
         } else if (MDOC_HEAD == n->type &&          } else if (n->type == ROFFT_HEAD &&
             NULL != n->next && NULL != n->next->child) {              NULL != n->next && NULL != n->next->child) {
                 term_flushln(p);                  term_flushln(p);
                 p->flags &= ~(TERMP_NOBREAK | TERMP_BRIND | TERMP_HANG);                  p->flags &= ~(TERMP_NOBREAK | TERMP_BRIND | TERMP_HANG);
                 p->trailspace = 0;                  p->trailspace = 0;
         } else if (MDOC_BODY == n->type && n->child)          } else if (n->type == ROFFT_BODY && n->child != NULL)
                 term_flushln(p);                  term_flushln(p);
 }  }
   
Line 1061  termp_fl_pre(DECL_ARGS)
Line 1062  termp_fl_pre(DECL_ARGS)
   
         if ( ! (n->nchild == 0 &&          if ( ! (n->nchild == 0 &&
             (n->next == NULL ||              (n->next == NULL ||
              n->next->type == MDOC_TEXT ||               n->next->type == ROFFT_TEXT ||
              n->next->flags & MDOC_LINE)))               n->next->flags & MDOC_LINE)))
                 p->flags |= TERMP_NOSPACE;                  p->flags |= TERMP_NOSPACE;
   
Line 1118  termp_rs_pre(DECL_ARGS)
Line 1119  termp_rs_pre(DECL_ARGS)
   
         if (SEC_SEE_ALSO != n->sec)          if (SEC_SEE_ALSO != n->sec)
                 return(1);                  return(1);
         if (MDOC_BLOCK == n->type && n->prev)          if (n->type == ROFFT_BLOCK && n->prev != NULL)
                 term_vspace(p);                  term_vspace(p);
         return(1);          return(1);
 }  }
Line 1214  static int
Line 1215  static int
 termp_nd_pre(DECL_ARGS)  termp_nd_pre(DECL_ARGS)
 {  {
   
         if (n->type == MDOC_BODY)          if (n->type == ROFFT_BODY)
                 term_word(p, "\\(en");                  term_word(p, "\\(en");
         return(1);          return(1);
 }  }
Line 1223  static int
Line 1224  static int
 termp_bl_pre(DECL_ARGS)  termp_bl_pre(DECL_ARGS)
 {  {
   
         return(MDOC_HEAD != n->type);          return(n->type != ROFFT_HEAD);
 }  }
   
 static void  static void
 termp_bl_post(DECL_ARGS)  termp_bl_post(DECL_ARGS)
 {  {
   
         if (MDOC_BLOCK == n->type)          if (n->type == ROFFT_BLOCK)
                 term_newln(p);                  term_newln(p);
 }  }
   
Line 1241  termp_xr_pre(DECL_ARGS)
Line 1242  termp_xr_pre(DECL_ARGS)
         if (NULL == (n = n->child))          if (NULL == (n = n->child))
                 return(0);                  return(0);
   
         assert(MDOC_TEXT == n->type);          assert(n->type == ROFFT_TEXT);
         term_word(p, n->string);          term_word(p, n->string);
   
         if (NULL == (n = n->next))          if (NULL == (n = n->next))
Line 1251  termp_xr_pre(DECL_ARGS)
Line 1252  termp_xr_pre(DECL_ARGS)
         term_word(p, "(");          term_word(p, "(");
         p->flags |= TERMP_NOSPACE;          p->flags |= TERMP_NOSPACE;
   
         assert(MDOC_TEXT == n->type);          assert(n->type == ROFFT_TEXT);
         term_word(p, n->string);          term_word(p, n->string);
   
         p->flags |= TERMP_NOSPACE;          p->flags |= TERMP_NOSPACE;
Line 1321  static int
Line 1322  static int
 termp_vt_pre(DECL_ARGS)  termp_vt_pre(DECL_ARGS)
 {  {
   
         if (MDOC_ELEM == n->type) {          if (n->type == ROFFT_ELEM) {
                 synopsis_pre(p, n);                  synopsis_pre(p, n);
                 return(termp_under_pre(p, pair, meta, n));                  return(termp_under_pre(p, pair, meta, n));
         } else if (MDOC_BLOCK == n->type) {          } else if (n->type == ROFFT_BLOCK) {
                 synopsis_pre(p, n);                  synopsis_pre(p, n);
                 return(1);                  return(1);
         } else if (MDOC_HEAD == n->type)          } else if (n->type == ROFFT_HEAD)
                 return(0);                  return(0);
   
         return(termp_under_pre(p, pair, meta, n));          return(termp_under_pre(p, pair, meta, n));
Line 1361  termp_sh_pre(DECL_ARGS)
Line 1362  termp_sh_pre(DECL_ARGS)
 {  {
   
         switch (n->type) {          switch (n->type) {
         case MDOC_BLOCK:          case ROFFT_BLOCK:
                 /*                  /*
                  * Vertical space before sections, except                   * Vertical space before sections, except
                  * when the previous section was empty.                   * when the previous section was empty.
Line 1372  termp_sh_pre(DECL_ARGS)
Line 1373  termp_sh_pre(DECL_ARGS)
                      n->prev->body->child != NULL))                       n->prev->body->child != NULL))
                         term_vspace(p);                          term_vspace(p);
                 break;                  break;
         case MDOC_HEAD:          case ROFFT_HEAD:
                 term_fontpush(p, TERMFONT_BOLD);                  term_fontpush(p, TERMFONT_BOLD);
                 break;                  break;
         case MDOC_BODY:          case ROFFT_BODY:
                 p->offset = term_len(p, p->defindent);                  p->offset = term_len(p, p->defindent);
                 if (SEC_AUTHORS == n->sec)                  if (SEC_AUTHORS == n->sec)
                         p->flags &= ~(TERMP_SPLIT|TERMP_NOSPLIT);                          p->flags &= ~(TERMP_SPLIT|TERMP_NOSPLIT);
Line 1391  termp_sh_post(DECL_ARGS)
Line 1392  termp_sh_post(DECL_ARGS)
 {  {
   
         switch (n->type) {          switch (n->type) {
         case MDOC_HEAD:          case ROFFT_HEAD:
                 term_newln(p);                  term_newln(p);
                 break;                  break;
         case MDOC_BODY:          case ROFFT_BODY:
                 term_newln(p);                  term_newln(p);
                 p->offset = 0;                  p->offset = 0;
                 break;                  break;
Line 1433  static int
Line 1434  static int
 termp_d1_pre(DECL_ARGS)  termp_d1_pre(DECL_ARGS)
 {  {
   
         if (MDOC_BLOCK != n->type)          if (n->type != ROFFT_BLOCK)
                 return(1);                  return(1);
         term_newln(p);          term_newln(p);
         p->offset += term_len(p, p->defindent + 1);          p->offset += term_len(p, p->defindent + 1);
Line 1469  termp_fn_pre(DECL_ARGS)
Line 1470  termp_fn_pre(DECL_ARGS)
                 p->flags |= TERMP_NOBREAK | TERMP_BRIND | TERMP_HANG;                  p->flags |= TERMP_NOBREAK | TERMP_BRIND | TERMP_HANG;
         }          }
   
         assert(MDOC_TEXT == n->type);          assert(n->type == ROFFT_TEXT);
         term_fontpush(p, TERMFONT_BOLD);          term_fontpush(p, TERMFONT_BOLD);
         term_word(p, n->string);          term_word(p, n->string);
         term_fontpop(p);          term_fontpop(p);
Line 1486  termp_fn_pre(DECL_ARGS)
Line 1487  termp_fn_pre(DECL_ARGS)
         p->flags |= TERMP_NOSPACE;          p->flags |= TERMP_NOSPACE;
   
         for (n = n->next; n; n = n->next) {          for (n = n->next; n; n = n->next) {
                 assert(MDOC_TEXT == n->type);                  assert(n->type == ROFFT_TEXT);
                 term_fontpush(p, TERMFONT_UNDER);                  term_fontpush(p, TERMFONT_UNDER);
                 if (pretty)                  if (pretty)
                         p->flags |= TERMP_NBRWORD;                          p->flags |= TERMP_NBRWORD;
Line 1543  termp_bd_pre(DECL_ARGS)
Line 1544  termp_bd_pre(DECL_ARGS)
         struct mdoc_node        *nn;          struct mdoc_node        *nn;
         int                      offset;          int                      offset;
   
         if (MDOC_BLOCK == n->type) {          if (n->type == ROFFT_BLOCK) {
                 print_bvspace(p, n, n);                  print_bvspace(p, n, n);
                 return(1);                  return(1);
         } else if (MDOC_HEAD == n->type)          } else if (n->type == ROFFT_HEAD)
                 return(0);                  return(0);
   
         /* Handle the -offset argument. */          /* Handle the -offset argument. */
Line 1590  termp_bd_pre(DECL_ARGS)
Line 1591  termp_bd_pre(DECL_ARGS)
   
         for (nn = n->child; nn; nn = nn->next) {          for (nn = n->child; nn; nn = nn->next) {
                 if (DISP_centered == n->norm->Bd.type) {                  if (DISP_centered == n->norm->Bd.type) {
                         if (MDOC_TEXT == nn->type) {                          if (nn->type == ROFFT_TEXT) {
                                 len = term_strlen(p, nn->string);                                  len = term_strlen(p, nn->string);
                                 p->offset = len >= rm ? 0 :                                  p->offset = len >= rm ? 0 :
                                     lm + len >= rm ? rm - len :                                      lm + len >= rm ? rm - len :
Line 1643  termp_bd_post(DECL_ARGS)
Line 1644  termp_bd_post(DECL_ARGS)
 {  {
         size_t           rm, rmax;          size_t           rm, rmax;
   
         if (MDOC_BODY != n->type)          if (n->type != ROFFT_BODY)
                 return;                  return;
   
         rm = p->rmargin;          rm = p->rmargin;
Line 1737  termp_ss_pre(DECL_ARGS)
Line 1738  termp_ss_pre(DECL_ARGS)
 {  {
   
         switch (n->type) {          switch (n->type) {
         case MDOC_BLOCK:          case ROFFT_BLOCK:
                 term_newln(p);                  term_newln(p);
                 if (n->prev)                  if (n->prev)
                         term_vspace(p);                          term_vspace(p);
                 break;                  break;
         case MDOC_HEAD:          case ROFFT_HEAD:
                 term_fontpush(p, TERMFONT_BOLD);                  term_fontpush(p, TERMFONT_BOLD);
                 p->offset = term_len(p, (p->defindent+1)/2);                  p->offset = term_len(p, (p->defindent+1)/2);
                 break;                  break;
         case MDOC_BODY:          case ROFFT_BODY:
                 p->offset = term_len(p, p->defindent);                  p->offset = term_len(p, p->defindent);
                 break;                  break;
         default:          default:
Line 1760  static void
Line 1761  static void
 termp_ss_post(DECL_ARGS)  termp_ss_post(DECL_ARGS)
 {  {
   
         if (n->type == MDOC_HEAD || n->type == MDOC_BODY)          if (n->type == ROFFT_HEAD || n->type == ROFFT_BODY)
                 term_newln(p);                  term_newln(p);
 }  }
   
Line 1851  static int
Line 1852  static int
 termp_quote_pre(DECL_ARGS)  termp_quote_pre(DECL_ARGS)
 {  {
   
         if (MDOC_BODY != n->type && MDOC_ELEM != n->type)          if (n->type != ROFFT_BODY && n->type != ROFFT_ELEM)
                 return(1);                  return(1);
   
         switch (n->tok) {          switch (n->tok) {
Line 1918  static void
Line 1919  static void
 termp_quote_post(DECL_ARGS)  termp_quote_post(DECL_ARGS)
 {  {
   
         if (n->type != MDOC_BODY && n->type != MDOC_ELEM)          if (n->type != ROFFT_BODY && n->type != ROFFT_ELEM)
                 return;                  return;
   
         p->flags |= TERMP_NOSPACE;          p->flags |= TERMP_NOSPACE;
Line 1986  static int
Line 1987  static int
 termp_eo_pre(DECL_ARGS)  termp_eo_pre(DECL_ARGS)
 {  {
   
         if (n->type != MDOC_BODY)          if (n->type != ROFFT_BODY)
                 return(1);                  return(1);
   
         if (n->end == ENDBODY_NOT &&          if (n->end == ENDBODY_NOT &&
Line 2007  termp_eo_post(DECL_ARGS)
Line 2008  termp_eo_post(DECL_ARGS)
 {  {
         int      body, tail;          int      body, tail;
   
         if (n->type != MDOC_BODY)          if (n->type != ROFFT_BODY)
                 return;                  return;
   
         if (n->end != ENDBODY_NOT) {          if (n->end != ENDBODY_NOT) {
Line 2034  termp_fo_pre(DECL_ARGS)
Line 2035  termp_fo_pre(DECL_ARGS)
   
         pretty = MDOC_SYNPRETTY & n->flags;          pretty = MDOC_SYNPRETTY & n->flags;
   
         if (MDOC_BLOCK == n->type) {          if (n->type == ROFFT_BLOCK) {
                 synopsis_pre(p, n);                  synopsis_pre(p, n);
                 return(1);                  return(1);
         } else if (MDOC_BODY == n->type) {          } else if (n->type == ROFFT_BODY) {
                 if (pretty) {                  if (pretty) {
                         rmargin = p->rmargin;                          rmargin = p->rmargin;
                         p->rmargin = p->offset + term_len(p, 4);                          p->rmargin = p->offset + term_len(p, 4);
Line 2072  static void
Line 2073  static void
 termp_fo_post(DECL_ARGS)  termp_fo_post(DECL_ARGS)
 {  {
   
         if (MDOC_BODY != n->type)          if (n->type != ROFFT_BODY)
                 return;                  return;
   
         p->flags |= TERMP_NOSPACE;          p->flags |= TERMP_NOSPACE;
Line 2089  static int
Line 2090  static int
 termp_bf_pre(DECL_ARGS)  termp_bf_pre(DECL_ARGS)
 {  {
   
         if (MDOC_HEAD == n->type)          if (n->type == ROFFT_HEAD)
                 return(0);                  return(0);
         else if (MDOC_BODY != n->type)          else if (n->type != ROFFT_BODY)
                 return(1);                  return(1);
   
         if (FONT_Em == n->norm->Bf.font)          if (FONT_Em == n->norm->Bf.font)
Line 2197  termp_bk_pre(DECL_ARGS)
Line 2198  termp_bk_pre(DECL_ARGS)
 {  {
   
         switch (n->type) {          switch (n->type) {
         case MDOC_BLOCK:          case ROFFT_BLOCK:
                 break;                  break;
         case MDOC_HEAD:          case ROFFT_HEAD:
                 return(0);                  return(0);
         case MDOC_BODY:          case ROFFT_BODY:
                 if (n->parent->args || 0 == n->prev->nchild)                  if (n->parent->args || 0 == n->prev->nchild)
                         p->flags |= TERMP_PREKEEP;                          p->flags |= TERMP_PREKEEP;
                 break;                  break;
Line 2217  static void
Line 2218  static void
 termp_bk_post(DECL_ARGS)  termp_bk_post(DECL_ARGS)
 {  {
   
         if (MDOC_BODY == n->type)          if (n->type == ROFFT_BODY)
                 p->flags &= ~(TERMP_KEEP | TERMP_PREKEEP);                  p->flags &= ~(TERMP_KEEP | TERMP_PREKEEP);
 }  }
   

Legend:
Removed from v.1.313  
changed lines
  Added in v.1.314

CVSweb