[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.250 and 1.253

version 1.250, 2013/12/22 23:34:13 version 1.253, 2013/12/24 20:45:27
Line 307  print_mdoc_node(DECL_ARGS)
Line 307  print_mdoc_node(DECL_ARGS)
         /*          /*
          * Keeps only work until the end of a line.  If a keep was           * Keeps only work until the end of a line.  If a keep was
          * invoked in a prior line, revert it to PREKEEP.           * invoked in a prior line, revert it to PREKEEP.
          *  
          * Also let SYNPRETTY sections behave as if they were wrapped  
          * in a `Bk' block.  
          */           */
   
         if (TERMP_KEEP & p->flags || MDOC_SYNPRETTY & n->flags) {          if (TERMP_KEEP & p->flags) {
                 if (n->prev ? (n->prev->line != n->line) :                  if (n->prev ? (n->prev->lastline != n->line) :
                     (n->parent && n->parent->line != n->line)) {                      (n->parent && n->parent->line != n->line)) {
                         p->flags &= ~TERMP_KEEP;                          p->flags &= ~TERMP_KEEP;
                         p->flags |= TERMP_PREKEEP;                          p->flags |= TERMP_PREKEEP;
Line 321  print_mdoc_node(DECL_ARGS)
Line 318  print_mdoc_node(DECL_ARGS)
         }          }
   
         /*          /*
          * Since SYNPRETTY sections aren't "turned off" with `Ek',  
          * we have to intuit whether we should disable formatting.  
          */  
   
         if ( ! (MDOC_SYNPRETTY & n->flags) &&  
             ((n->prev   && MDOC_SYNPRETTY & n->prev->flags) ||  
              (n->parent && MDOC_SYNPRETTY & n->parent->flags)))  
                 p->flags &= ~(TERMP_KEEP | TERMP_PREKEEP);  
   
         /*  
          * After the keep flags have been set up, we may now           * After the keep flags have been set up, we may now
          * produce output.  Note that some pre-handlers do so.           * produce output.  Note that some pre-handlers do so.
          */           */
Line 1010  static int
Line 997  static int
 termp_nm_pre(DECL_ARGS)  termp_nm_pre(DECL_ARGS)
 {  {
   
         if (MDOC_BLOCK == n->type)          if (MDOC_BLOCK == n->type) {
                   p->flags |= TERMP_PREKEEP;
                 return(1);                  return(1);
           }
   
         if (MDOC_BODY == n->type) {          if (MDOC_BODY == n->type) {
                 if (NULL == n->child)                  if (NULL == n->child)
Line 1060  static void
Line 1049  static void
 termp_nm_post(DECL_ARGS)  termp_nm_post(DECL_ARGS)
 {  {
   
         if (MDOC_HEAD == n->type && n->next->child) {          if (MDOC_BLOCK == n->type) {
                   p->flags &= ~(TERMP_KEEP | TERMP_PREKEEP);
           } else if (MDOC_HEAD == n->type && n->next->child) {
                 term_flushln(p);                  term_flushln(p);
                 p->flags &= ~(TERMP_NOBREAK | TERMP_HANG);                  p->flags &= ~(TERMP_NOBREAK | TERMP_HANG);
                 p->trailspace = 0;                  p->trailspace = 0;
Line 1538  termp_ft_pre(DECL_ARGS)
Line 1529  termp_ft_pre(DECL_ARGS)
 static int  static int
 termp_fn_pre(DECL_ARGS)  termp_fn_pre(DECL_ARGS)
 {  {
           size_t           width, rmargin = 0;
         int              pretty;          int              pretty;
   
         pretty = MDOC_SYNPRETTY & n->flags;          pretty = MDOC_SYNPRETTY & n->flags;
Line 1547  termp_fn_pre(DECL_ARGS)
Line 1539  termp_fn_pre(DECL_ARGS)
         if (NULL == (n = n->child))          if (NULL == (n = n->child))
                 return(0);                  return(0);
   
           if (pretty) {
                   width = term_len(p, 4);
                   rmargin = p->rmargin;
                   p->rmargin = p->offset + width;
                   p->flags |= TERMP_NOBREAK | TERMP_HANG;
           }
   
         assert(MDOC_TEXT == n->type);          assert(MDOC_TEXT == n->type);
         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);
   
           if (pretty) {
                   term_flushln(p);
                   p->flags &= ~(TERMP_NOBREAK | TERMP_HANG);
                   p->offset = p->rmargin;
                   p->rmargin = rmargin;
           }
   
         p->flags |= TERMP_NOSPACE;          p->flags |= TERMP_NOSPACE;
         term_word(p, "(");          term_word(p, "(");
         p->flags |= TERMP_NOSPACE;          p->flags |= TERMP_NOSPACE;
Line 1574  termp_fn_pre(DECL_ARGS)
Line 1580  termp_fn_pre(DECL_ARGS)
         if (pretty) {          if (pretty) {
                 p->flags |= TERMP_NOSPACE;                  p->flags |= TERMP_NOSPACE;
                 term_word(p, ";");                  term_word(p, ";");
                   term_flushln(p);
         }          }
   
         return(0);          return(0);
Line 2224  static void
Line 2231  static void
 termp_bk_post(DECL_ARGS)  termp_bk_post(DECL_ARGS)
 {  {
   
         if (MDOC_BODY == n->type && ! (MDOC_SYNPRETTY & n->flags))          if (MDOC_BODY == n->type)
                 p->flags &= ~(TERMP_KEEP | TERMP_PREKEEP);                  p->flags &= ~(TERMP_KEEP | TERMP_PREKEEP);
 }  }
   

Legend:
Removed from v.1.250  
changed lines
  Added in v.1.253

CVSweb