]> git.cameronkatri.com Git - mandoc.git/blobdiff - term.c
Put tbl_alloc function right into the addspan() one, as this is the only
[mandoc.git] / term.c
diff --git a/term.c b/term.c
index 37fc180d1cd30d71f17ae0921ff8d2cebe69c5e5..2116639f5aab2ace8786abfe01cb3fd831903755 100644 (file)
--- a/term.c
+++ b/term.c
@@ -1,7 +1,7 @@
-/*     $Id: term.c,v 1.174 2010/10/02 15:15:55 schwarze Exp $ */
+/*     $Id: term.c,v 1.177 2011/01/30 16:05:37 schwarze Exp $ */
 /*
  * Copyright (c) 2008, 2009, 2010 Kristaps Dzonsons <kristaps@bsd.lv>
- * Copyright (c) 2010 Ingo Schwarze <schwarze@openbsd.org>
+ * Copyright (c) 2010, 2011 Ingo Schwarze <schwarze@openbsd.org>
  *
  * Permission to use, copy, modify, and distribute this software for any
  * purpose with or without fee is hereby granted, provided that the above
@@ -146,7 +146,7 @@ term_flushln(struct termp *p)
         * an indentation, but can be, for tagged lists or columns, a
         * small set of values. 
         */
-       assert  (p->rmargin > p->offset);
+       assert  (p->rmargin >= p->offset);
        dv     = p->rmargin - p->offset;
        maxvis = (int)dv > p->overstep ? dv - (size_t)p->overstep : 0;
        dv     = p->maxrmargin - p->offset;
@@ -352,6 +352,17 @@ term_vspace(struct termp *p)
 }
 
 
+static void
+numbered(struct termp *p, const char *word, size_t len)
+{
+       const char      *rhs;
+
+       rhs = chars_num2char(word, len);
+       if (rhs) 
+               encode(p, rhs, 1);
+}
+
+
 static void
 spec(struct termp *p, enum roffdeco d, const char *word, size_t len)
 {
@@ -511,6 +522,9 @@ term_word(struct termp *p, const char *word)
                word += a2roffdeco(&deco, &seq, &ssz);
 
                switch (deco) {
+               case (DECO_NUMBERED):
+                       numbered(p, seq, ssz);
+                       break;
                case (DECO_RESERVED):
                        res(p, seq, ssz);
                        break;
@@ -677,6 +691,12 @@ term_strlen(const struct termp *p, const char *cp)
                        if (rhs)
                                for (i = 0; i < rsz; i++)
                                        sz += (*p->width)(p, *rhs++);
+               } else if (ASCII_NBRSP == *cp) {
+                       sz += (*p->width)(p, ' ');
+                       cp++;
+               } else if (ASCII_HYPH == *cp) {
+                       sz += (*p->width)(p, '-');
+                       cp++;
                } else
                        sz += (*p->width)(p, *cp++);