diff options
author | Ingo Schwarze <schwarze@openbsd.org> | 2015-10-17 00:21:07 +0000 |
---|---|---|
committer | Ingo Schwarze <schwarze@openbsd.org> | 2015-10-17 00:21:07 +0000 |
commit | d15faae535d3d733f4ecad6a0e740a310a2ddfb9 (patch) | |
tree | 98f7dbd06d5d0932412b65aaa76c4114c7bf9742 /roff.h | |
parent | 38835fc941bf12f49824b7238cd2312b188777cf (diff) | |
download | mandoc-d15faae535d3d733f4ecad6a0e740a310a2ddfb9.tar.gz mandoc-d15faae535d3d733f4ecad6a0e740a310a2ddfb9.tar.zst mandoc-d15faae535d3d733f4ecad6a0e740a310a2ddfb9.zip |
Very tricky diff to fix macro interpretation and spacing around tabs
in .Bl -column; it took me more than a day to get this right.
Triggered by a loosely related bug report from tim@.
The lesson for you is: Use .Ta macros in .Bl -column, avoid tabs,
or you are in for surprises: The last word before a tab is not
interpreted as a macro (unless there is a blank in between), the
first word after a tab isn't either (unless there is a blank in
between), and a blank after a tab causes a leading blank in the
respective output cell. Yes, "blank", "tab", "blank tab" and "tab
blank" all have different semantics; if you write code relying on
that, good luck maintaining it afterwards...
Diffstat (limited to 'roff.h')
-rw-r--r-- | roff.h | 7 |
1 files changed, 5 insertions, 2 deletions
@@ -141,8 +141,8 @@ struct roff_man { #define MDOC_LITERAL (1 << 1) /* In a literal scope. */ #define MDOC_PBODY (1 << 2) /* In the document body. */ #define MDOC_NEWLINE (1 << 3) /* First macro/text in a line. */ -#define MDOC_PHRASELIT (1 << 4) /* Literal within a partial phrase. */ -#define MDOC_PPHRASE (1 << 5) /* Within a partial phrase. */ +#define MDOC_PHRASE (1 << 4) /* In a Bl -column phrase. */ +#define MDOC_PHRASELIT (1 << 5) /* Literal within a phrase. */ #define MDOC_FREECOL (1 << 6) /* `It' invocation should close. */ #define MDOC_SYNOPSIS (1 << 7) /* SYNOPSIS-style formatting. */ #define MDOC_KEEP (1 << 8) /* In a word keep. */ @@ -150,6 +150,9 @@ struct roff_man { #define MDOC_NODELIMC (1 << 10) /* Disable closing delimiter handling. */ #define MAN_ELINE (1 << 11) /* Next-line element scope. */ #define MAN_BLINE (1 << 12) /* Next-line block scope. */ +#define MDOC_PHRASEQF (1 << 13) /* Quote first word encountered. */ +#define MDOC_PHRASEQL (1 << 14) /* Quote last word of this phrase. */ +#define MDOC_PHRASEQN (1 << 15) /* Quote first word of the next phrase. */ #define MAN_LITERAL MDOC_LITERAL #define MAN_NEWLINE MDOC_NEWLINE enum roff_macroset macroset; /* Kind of high-level macros used. */ |