[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.268 and 1.275

version 1.268, 2014/07/02 03:48:07 version 1.275, 2014/08/06 15:09:05
Line 275  terminal_mdoc(void *arg, const struct mdoc *mdoc)
Line 275  terminal_mdoc(void *arg, const struct mdoc *mdoc)
   
         term_begin(p, print_mdoc_head, print_mdoc_foot, meta);          term_begin(p, print_mdoc_head, print_mdoc_foot, meta);
   
         if (n->child)          if (n->child) {
                   if (MDOC_Sh != n->child->tok)
                           term_vspace(p);
                 print_mdoc_nodelist(p, NULL, meta, n->child);                  print_mdoc_nodelist(p, NULL, meta, n->child);
           }
   
         term_end(p);          term_end(p);
 }  }
Line 473  print_mdoc_head(struct termp *p, const void *arg)
Line 476  print_mdoc_head(struct termp *p, const void *arg)
                     meta->vol, meta->arch);                      meta->vol, meta->arch);
         vollen = term_strlen(p, volume);          vollen = term_strlen(p, volume);
   
         mandoc_asprintf(&title, "%s(%s)", meta->title, meta->msec);          if (NULL == meta->msec)
                   title = mandoc_strdup(meta->title);
           else
                   mandoc_asprintf(&title, "%s(%s)",
                       meta->title, meta->msec);
         titlen = term_strlen(p, title);          titlen = term_strlen(p, title);
   
         p->flags |= TERMP_NOBREAK | TERMP_NOSPACE;          p->flags |= TERMP_NOBREAK | TERMP_NOSPACE;
Line 747  termp_it_pre(DECL_ARGS)
Line 754  termp_it_pre(DECL_ARGS)
                         term_word(p, "\\ \\ ");                          term_word(p, "\\ \\ ");
                 break;                  break;
         case LIST_inset:          case LIST_inset:
                 if (MDOC_BODY == n->type)                  if (MDOC_BODY == n->type && n->parent->head->nchild)
                         term_word(p, "\\ ");                          term_word(p, "\\ ");
                 break;                  break;
         default:          default:
Line 1164  termp_rv_pre(DECL_ARGS)
Line 1171  termp_rv_pre(DECL_ARGS)
         int              nchild;          int              nchild;
   
         term_newln(p);          term_newln(p);
         term_word(p, "The");  
   
         nchild = n->nchild;          nchild = n->nchild;
         for (n = n->child; n; n = n->next) {          if (nchild > 0) {
                 term_fontpush(p, TERMFONT_BOLD);                  term_word(p, "The");
                 term_word(p, n->string);  
                 term_fontpop(p);  
   
                 p->flags |= TERMP_NOSPACE;                  for (n = n->child; n; n = n->next) {
                 term_word(p, "()");                          term_fontpush(p, TERMFONT_BOLD);
                           term_word(p, n->string);
                           term_fontpop(p);
   
                 if (nchild > 2 && n->next) {  
                         p->flags |= TERMP_NOSPACE;                          p->flags |= TERMP_NOSPACE;
                         term_word(p, ",");                          term_word(p, "()");
   
                           if (n->next == NULL)
                                   continue;
   
                           if (nchild > 2) {
                                   p->flags |= TERMP_NOSPACE;
                                   term_word(p, ",");
                           }
                           if (n->next->next == NULL)
                                   term_word(p, "and");
                 }                  }
   
                 if (n->next && NULL == n->next->next)                  if (nchild > 1)
                         term_word(p, "and");                          term_word(p, "functions return");
         }                  else
                           term_word(p, "function returns");
   
         if (nchild > 1)                  term_word(p, "the value\\~0 if successful;");
                 term_word(p, "functions return");          } else
         else                  term_word(p, "Upon successful completion,"
                 term_word(p, "function returns");                      " the value\\~0 is returned;");
   
         term_word(p, "the value 0 if successful; otherwise the "          term_word(p, "otherwise the value\\~\\-1 is returned"
             "value -1 is returned and the global variable");              " and the global variable");
   
         term_fontpush(p, TERMFONT_UNDER);          term_fontpush(p, TERMFONT_UNDER);
         term_word(p, "errno");          term_word(p, "errno");
Line 1226  termp_ex_pre(DECL_ARGS)
Line 1242  termp_ex_pre(DECL_ARGS)
         }          }
   
         if (nchild > 1)          if (nchild > 1)
                 term_word(p, "utilities exit");                  term_word(p, "utilities exit\\~0");
         else          else
                 term_word(p, "utility exits");                  term_word(p, "utility exits\\~0");
   
         term_word(p, "0 on success, and >0 if an error occurs.");          term_word(p, "on success, and\\~>0 if an error occurs.");
   
         p->flags |= TERMP_SENTENCE;          p->flags |= TERMP_SENTENCE;
         return(0);          return(0);
Line 1568  termp_fa_pre(DECL_ARGS)
Line 1584  termp_fa_pre(DECL_ARGS)
 static int  static int
 termp_bd_pre(DECL_ARGS)  termp_bd_pre(DECL_ARGS)
 {  {
         size_t                   tabwidth, rm, rmax;          size_t                   tabwidth, lm, len, rm, rmax;
         struct mdoc_node        *nn;          struct mdoc_node        *nn;
   
         if (MDOC_BLOCK == n->type) {          if (MDOC_BLOCK == n->type) {
Line 1589  termp_bd_pre(DECL_ARGS)
Line 1605  termp_bd_pre(DECL_ARGS)
          */           */
   
         if (DISP_literal != n->norm->Bd.type &&          if (DISP_literal != n->norm->Bd.type &&
             DISP_unfilled != n->norm->Bd.type)              DISP_unfilled != n->norm->Bd.type &&
               DISP_centered != n->norm->Bd.type)
                 return(1);                  return(1);
   
         tabwidth = p->tabwidth;          tabwidth = p->tabwidth;
         if (DISP_literal == n->norm->Bd.type)          if (DISP_literal == n->norm->Bd.type)
                 p->tabwidth = term_len(p, 8);                  p->tabwidth = term_len(p, 8);
   
           lm = p->offset;
         rm = p->rmargin;          rm = p->rmargin;
         rmax = p->maxrmargin;          rmax = p->maxrmargin;
         p->rmargin = p->maxrmargin = TERM_MAXMARGIN;          p->rmargin = p->maxrmargin = TERM_MAXMARGIN;
   
         for (nn = n->child; nn; nn = nn->next) {          for (nn = n->child; nn; nn = nn->next) {
                   if (DISP_centered == n->norm->Bd.type) {
                           if (MDOC_TEXT == nn->type) {
                                   len = term_strlen(p, nn->string);
                                   p->offset = len >= rm ? 0 :
                                       lm + len >= rm ? rm - len :
                                       (lm + rm - len) / 2;
                           } else
                                   p->offset = lm;
                   }
                 print_mdoc_node(p, pair, meta, nn);                  print_mdoc_node(p, pair, meta, nn);
                 /*                  /*
                  * If the printed node flushes its own line, then we                   * If the printed node flushes its own line, then we
Line 1747  termp_ss_pre(DECL_ARGS)
Line 1774  termp_ss_pre(DECL_ARGS)
                 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:
                   p->offset = term_len(p, p->defindent);
                   break;
         default:          default:
                 break;                  break;
         }          }
Line 1758  static void
Line 1788  static void
 termp_ss_post(DECL_ARGS)  termp_ss_post(DECL_ARGS)
 {  {
   
         if (MDOC_HEAD == n->type)          if (n->type == MDOC_HEAD || n->type == MDOC_BODY)
                 term_newln(p);                  term_newln(p);
 }  }
   
Line 2056  static int
Line 2086  static int
 termp_sm_pre(DECL_ARGS)  termp_sm_pre(DECL_ARGS)
 {  {
   
         assert(n->child && MDOC_TEXT == n->child->type);          if (NULL == n->child)
         if (0 == strcmp("on", n->child->string)) {                  p->flags ^= TERMP_NONOSPACE;
                 if (p->col)          else if (0 == strcmp("on", n->child->string))
                         p->flags &= ~TERMP_NOSPACE;  
                 p->flags &= ~TERMP_NONOSPACE;                  p->flags &= ~TERMP_NONOSPACE;
         } else          else
                 p->flags |= TERMP_NONOSPACE;                  p->flags |= TERMP_NONOSPACE;
   
           if (p->col && ! (TERMP_NONOSPACE & p->flags))
                   p->flags &= ~TERMP_NOSPACE;
   
         return(0);          return(0);
 }  }

Legend:
Removed from v.1.268  
changed lines
  Added in v.1.275

CVSweb