aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorIngo Schwarze <schwarze@openbsd.org>2010-10-01 21:51:13 +0000
committerIngo Schwarze <schwarze@openbsd.org>2010-10-01 21:51:13 +0000
commit5e7fb1db20be568b2fe3b2f582beeb683c0812eb (patch)
treee60b646fbe07b7f6e7a28697bf799d224da66b76
parentc3ccf2f42ee5664ddacf557bae68288b6dea8c44 (diff)
downloadmandoc-5e7fb1db20be568b2fe3b2f582beeb683c0812eb.tar.gz
mandoc-5e7fb1db20be568b2fe3b2f582beeb683c0812eb.tar.zst
mandoc-5e7fb1db20be568b2fe3b2f582beeb683c0812eb.zip
* need a space before .No even if it starts with a closing delimiter
* slightly simplify .Pf *_IGNDELIM code, and share part of it with .No * do not let opening delimiters fall out of the front of .Ns (from kristaps@) This fixes a few spacing issues in csh(1) and ksh(1). OK kristaps@
-rw-r--r--TODO14
-rw-r--r--html.c4
-rw-r--r--mdoc_html.c11
-rw-r--r--mdoc_macro.c6
-rw-r--r--mdoc_term.c11
-rw-r--r--term.c4
6 files changed, 19 insertions, 31 deletions
diff --git a/TODO b/TODO
index 7a400855..d497a92c 100644
--- a/TODO
+++ b/TODO
@@ -1,6 +1,6 @@
************************************************************************
* Official mandoc TODO.
-* $Id: TODO,v 1.57 2010/09/27 22:42:48 kristaps Exp $
+* $Id: TODO,v 1.58 2010/10/01 21:51:13 schwarze Exp $
************************************************************************
************************************************************************
@@ -105,22 +105,10 @@
to better distinguish the contents of .%T and .%J,
see for example OpenBSD cat(1)
-- .It ${name Ns [ selector ] Ns }
- should be "${name[selector]}" not "${name [selector]}"
- This is parsed as
- text("${name") text("[") Ns() text(selector)...
- Opening punctuation should not fall out of .Ns.
- see for example OpenBSD csh(1)
-
- In .Bl -bullet, the groff bullet is "+\b+\bo\bo", the mandoc bullet
is just "o\bo".
see for example OpenBSD ksh(1)
-- .No text No ) is "text )", not "text)"
- see the terrible example
- case word in [[(] pattern [| pattern] ... ) list ;; ] ... esac
- in OpenBSD ksh(1)
-
- .Sm should *not* produce as a blank line in .Bd -literal
see for example "Brace expansion" in OpenBSD ksh(1)
diff --git a/html.c b/html.c
index 138d3e4c..91be0b1f 100644
--- a/html.c
+++ b/html.c
@@ -1,4 +1,4 @@
-/* $Id: html.c,v 1.112 2010/09/04 20:18:53 kristaps Exp $ */
+/* $Id: html.c,v 1.113 2010/10/01 21:51:13 schwarze Exp $ */
/*
* Copyright (c) 2008, 2009, 2010 Kristaps Dzonsons <kristaps@bsd.lv>
*
@@ -552,6 +552,8 @@ print_text(struct html *h, const char *word)
if ( ! (h->flags & HTML_NONOSPACE))
h->flags &= ~HTML_NOSPACE;
+ h->flags &= ~HTML_IGNDELIM;
+
/*
* Note that we don't process the pipe: the parser sees it as
* punctuation, but we don't in terms of typography.
diff --git a/mdoc_html.c b/mdoc_html.c
index 900e0943..ef37781b 100644
--- a/mdoc_html.c
+++ b/mdoc_html.c
@@ -1,4 +1,4 @@
-/* $Id: mdoc_html.c,v 1.109 2010/10/01 12:09:55 kristaps Exp $ */
+/* $Id: mdoc_html.c,v 1.110 2010/10/01 21:51:13 schwarze Exp $ */
/*
* Copyright (c) 2008, 2009, 2010 Kristaps Dzonsons <kristaps@bsd.lv>
*
@@ -91,6 +91,7 @@ static int mdoc_ex_pre(MDOC_ARGS);
static void mdoc_fo_post(MDOC_ARGS);
static int mdoc_fo_pre(MDOC_ARGS);
static int mdoc_ic_pre(MDOC_ARGS);
+static int mdoc_igndelim_pre(MDOC_ARGS);
static int mdoc_in_pre(MDOC_ARGS);
static int mdoc_it_block_pre(MDOC_ARGS, enum mdoc_list,
int, struct roffsu *, struct roffsu *);
@@ -109,7 +110,6 @@ static int mdoc_nm_pre(MDOC_ARGS);
static int mdoc_ns_pre(MDOC_ARGS);
static int mdoc_pa_pre(MDOC_ARGS);
static void mdoc_pf_post(MDOC_ARGS);
-static int mdoc_pf_pre(MDOC_ARGS);
static void mdoc_quote_post(MDOC_ARGS);
static int mdoc_quote_pre(MDOC_ARGS);
static int mdoc_rs_pre(MDOC_ARGS);
@@ -199,12 +199,12 @@ static const struct htmlmdoc mdocs[MDOC_MAX] = {
{NULL, NULL}, /* Eo */
{mdoc_xx_pre, NULL}, /* Fx */
{mdoc_ms_pre, NULL}, /* Ms */
- {NULL, NULL}, /* No */
+ {mdoc_igndelim_pre, NULL}, /* No */
{mdoc_ns_pre, NULL}, /* Ns */
{mdoc_xx_pre, NULL}, /* Nx */
{mdoc_xx_pre, NULL}, /* Ox */
{NULL, NULL}, /* Pc */
- {mdoc_pf_pre, mdoc_pf_post}, /* Pf */
+ {mdoc_igndelim_pre, mdoc_pf_post}, /* Pf */
{mdoc_quote_pre, mdoc_quote_post}, /* Po */
{mdoc_quote_pre, mdoc_quote_post}, /* Pq */
{NULL, NULL}, /* Qc */
@@ -1911,7 +1911,7 @@ mdoc_ms_pre(MDOC_ARGS)
/* ARGSUSED */
static int
-mdoc_pf_pre(MDOC_ARGS)
+mdoc_igndelim_pre(MDOC_ARGS)
{
h->flags |= HTML_IGNDELIM;
@@ -1924,7 +1924,6 @@ static void
mdoc_pf_post(MDOC_ARGS)
{
- h->flags &= ~HTML_IGNDELIM;
h->flags |= HTML_NOSPACE;
}
diff --git a/mdoc_macro.c b/mdoc_macro.c
index cd6d23a5..eba97686 100644
--- a/mdoc_macro.c
+++ b/mdoc_macro.c
@@ -1,4 +1,4 @@
-/* $Id: mdoc_macro.c,v 1.94 2010/09/26 20:22:28 schwarze Exp $ */
+/* $Id: mdoc_macro.c,v 1.95 2010/10/01 21:51:13 schwarze Exp $ */
/*
* Copyright (c) 2008, 2009, 2010 Kristaps Dzonsons <kristaps@bsd.lv>
* Copyright (c) 2010 Ingo Schwarze <schwarze@openbsd.org>
@@ -138,8 +138,8 @@ const struct mdoc_macro __mdoc_macros[MDOC_MAX] = {
{ blk_part_exp, MDOC_CALLABLE | MDOC_PARSED | MDOC_EXPLICIT }, /* Eo */
{ in_line_argn, MDOC_CALLABLE | MDOC_PARSED }, /* Fx */
{ in_line, MDOC_CALLABLE | MDOC_PARSED }, /* Ms */
- { in_line_argn, MDOC_CALLABLE | MDOC_PARSED }, /* No */
- { in_line_argn, MDOC_CALLABLE | MDOC_PARSED }, /* Ns */
+ { in_line_argn, MDOC_CALLABLE | MDOC_PARSED | MDOC_IGNDELIM }, /* No */
+ { in_line_argn, MDOC_CALLABLE | MDOC_PARSED | MDOC_IGNDELIM }, /* Ns */
{ in_line_argn, MDOC_CALLABLE | MDOC_PARSED }, /* Nx */
{ in_line_argn, MDOC_CALLABLE | MDOC_PARSED }, /* Ox */
{ blk_exp_close, MDOC_EXPLICIT | MDOC_CALLABLE | MDOC_PARSED }, /* Pc */
diff --git a/mdoc_term.c b/mdoc_term.c
index 2bdb85a0..d039af4c 100644
--- a/mdoc_term.c
+++ b/mdoc_term.c
@@ -1,4 +1,4 @@
-/* $Id: mdoc_term.c,v 1.191 2010/09/27 23:03:44 schwarze Exp $ */
+/* $Id: mdoc_term.c,v 1.192 2010/10/01 21:51:13 schwarze Exp $ */
/*
* Copyright (c) 2008, 2009, 2010 Kristaps Dzonsons <kristaps@bsd.lv>
* Copyright (c) 2010 Ingo Schwarze <schwarze@openbsd.org>
@@ -102,6 +102,7 @@ static int termp_fl_pre(DECL_ARGS);
static int termp_fn_pre(DECL_ARGS);
static int termp_fo_pre(DECL_ARGS);
static int termp_ft_pre(DECL_ARGS);
+static int termp_igndelim_pre(DECL_ARGS);
static int termp_in_pre(DECL_ARGS);
static int termp_it_pre(DECL_ARGS);
static int termp_li_pre(DECL_ARGS);
@@ -109,7 +110,6 @@ static int termp_lk_pre(DECL_ARGS);
static int termp_nd_pre(DECL_ARGS);
static int termp_nm_pre(DECL_ARGS);
static int termp_ns_pre(DECL_ARGS);
-static int termp_pf_pre(DECL_ARGS);
static int termp_quote_pre(DECL_ARGS);
static int termp_rs_pre(DECL_ARGS);
static int termp_rv_pre(DECL_ARGS);
@@ -196,12 +196,12 @@ static const struct termact termacts[MDOC_MAX] = {
{ NULL, NULL }, /* Eo */
{ termp_xx_pre, NULL }, /* Fx */
{ termp_bold_pre, NULL }, /* Ms */
- { NULL, NULL }, /* No */
+ { termp_igndelim_pre, NULL }, /* No */
{ termp_ns_pre, NULL }, /* Ns */
{ termp_xx_pre, NULL }, /* Nx */
{ termp_xx_pre, NULL }, /* Ox */
{ NULL, NULL }, /* Pc */
- { termp_pf_pre, termp_pf_post }, /* Pf */
+ { termp_igndelim_pre, termp_pf_post }, /* Pf */
{ termp_quote_pre, termp_quote_post }, /* Po */
{ termp_quote_pre, termp_quote_post }, /* Pq */
{ NULL, NULL }, /* Qc */
@@ -1684,7 +1684,7 @@ termp_xx_pre(DECL_ARGS)
/* ARGSUSED */
static int
-termp_pf_pre(DECL_ARGS)
+termp_igndelim_pre(DECL_ARGS)
{
p->flags |= TERMP_IGNDELIM;
@@ -1697,7 +1697,6 @@ static void
termp_pf_post(DECL_ARGS)
{
- p->flags &= ~TERMP_IGNDELIM;
p->flags |= TERMP_NOSPACE;
}
diff --git a/term.c b/term.c
index b609b0e8..e225ff62 100644
--- a/term.c
+++ b/term.c
@@ -1,4 +1,4 @@
-/* $Id: term.c,v 1.172 2010/09/23 20:26:00 schwarze Exp $ */
+/* $Id: term.c,v 1.173 2010/10/01 21:51:13 schwarze Exp $ */
/*
* Copyright (c) 2008, 2009, 2010 Kristaps Dzonsons <kristaps@bsd.lv>
* Copyright (c) 2010 Ingo Schwarze <schwarze@openbsd.org>
@@ -505,7 +505,7 @@ term_word(struct termp *p, const char *word)
else
p->flags |= TERMP_NOSPACE;
- p->flags &= ~TERMP_SENTENCE;
+ p->flags &= ~(TERMP_SENTENCE | TERMP_IGNDELIM);
while (*word) {
if ((ssz = strcspn(word, "\\")) > 0)