aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorIngo Schwarze <schwarze@openbsd.org>2020-04-02 15:04:36 +0000
committerIngo Schwarze <schwarze@openbsd.org>2020-04-02 15:04:36 +0000
commit735c1e543343b638b339077b91a5874260cdf14b (patch)
tree930eb455cb29acfe6b5a98c93a46c9c4525d7bc6
parentbc6d8c884c63e49aafa7894399d3d7060108b4ec (diff)
downloadmandoc-735c1e543343b638b339077b91a5874260cdf14b.tar.gz
mandoc-735c1e543343b638b339077b91a5874260cdf14b.tar.zst
mandoc-735c1e543343b638b339077b91a5874260cdf14b.zip
Copy tagged strings before marking hyphens as breakable.
For example, this makes ":tCo-processes" work in ksh(1).
-rw-r--r--mdoc_validate.c12
-rw-r--r--regress/mdoc/Em/tag.in6
-rw-r--r--regress/mdoc/Em/tag.out_ascii5
-rw-r--r--regress/mdoc/Em/tag.out_html2
-rw-r--r--regress/mdoc/Em/tag.out_markdown4
-rw-r--r--regress/mdoc/Em/tag.out_tag6
-rw-r--r--regress/mdoc/Sh/tag.in6
-rw-r--r--regress/mdoc/Sh/tag.out_ascii5
-rw-r--r--regress/mdoc/Sh/tag.out_html4
-rw-r--r--regress/mdoc/Sh/tag.out_lint4
-rw-r--r--regress/mdoc/Sh/tag.out_markdown6
-rw-r--r--regress/mdoc/Sh/tag.out_tag3
-rw-r--r--regress/mdoc/Tg/warn.in6
-rw-r--r--regress/mdoc/Tg/warn.out_ascii2
-rw-r--r--regress/mdoc/Tg/warn.out_html2
-rw-r--r--regress/mdoc/Tg/warn.out_markdown2
-rw-r--r--regress/mdoc/Tg/warn.out_tag2
17 files changed, 48 insertions, 29 deletions
diff --git a/mdoc_validate.c b/mdoc_validate.c
index ad096588..551dec25 100644
--- a/mdoc_validate.c
+++ b/mdoc_validate.c
@@ -1,4 +1,4 @@
-/* $Id: mdoc_validate.c,v 1.381 2020/04/01 20:21:08 schwarze Exp $ */
+/* $Id: mdoc_validate.c,v 1.382 2020/04/02 15:04:36 schwarze Exp $ */
/*
* Copyright (c) 2010-2020 Ingo Schwarze <schwarze@openbsd.org>
* Copyright (c) 2008-2012 Kristaps Dzonsons <kristaps@bsd.lv>
@@ -2164,10 +2164,11 @@ post_rs(POST_ARGS)
static void
post_hyph(POST_ARGS)
{
- struct roff_node *nch;
+ struct roff_node *n, *nch;
char *cp;
- for (nch = mdoc->last->child; nch != NULL; nch = nch->next) {
+ n = mdoc->last;
+ for (nch = n->child; nch != NULL; nch = nch->next) {
if (nch->type != ROFFT_TEXT)
continue;
cp = nch->string;
@@ -2176,8 +2177,11 @@ post_hyph(POST_ARGS)
while (*(++cp) != '\0')
if (*cp == '-' &&
isalpha((unsigned char)cp[-1]) &&
- isalpha((unsigned char)cp[1]))
+ isalpha((unsigned char)cp[1])) {
+ if (n->string == NULL && n->flags & NODE_ID)
+ n->string = mandoc_strdup(nch->string);
*cp = ASCII_HYPH;
+ }
}
}
diff --git a/regress/mdoc/Em/tag.in b/regress/mdoc/Em/tag.in
index 70e6eb44..eb6ac085 100644
--- a/regress/mdoc/Em/tag.in
+++ b/regress/mdoc/Em/tag.in
@@ -1,5 +1,5 @@
-.\" $OpenBSD: tag.in,v 1.1 2020/03/13 00:31:05 schwarze Exp $
-.Dd $Mdocdate: March 13 2020 $
+.\" $OpenBSD: tag.in,v 1.2 2020/04/02 14:55:29 schwarze Exp $
+.Dd $Mdocdate: April 2 2020 $
.Dt EM-TAG 1
.Os
.Sh NAME
@@ -11,7 +11,7 @@ BEGINTEST
.It Em one | two
text
.It Xo
-.Em three
+.Em three-with-hyphens
.Xc
text
.El
diff --git a/regress/mdoc/Em/tag.out_ascii b/regress/mdoc/Em/tag.out_ascii
index 74f8212b..283c1120 100644
--- a/regress/mdoc/Em/tag.out_ascii
+++ b/regress/mdoc/Em/tag.out_ascii
@@ -9,9 +9,10 @@ DDEESSCCRRIIPPTTIIOONN
_o_n_e | _t_w_o
text
- _t_h_r_e_e text
+ _t_h_r_e_e_-_w_i_t_h_-_h_y_p_h_e_n_s
+ text
_f_o_u_r _o_n_e _f_i_v_e
ENDTEST
-OpenBSD March 13, 2020 OpenBSD
+OpenBSD April 2, 2020 OpenBSD
diff --git a/regress/mdoc/Em/tag.out_html b/regress/mdoc/Em/tag.out_html
index 4046673f..225343ee 100644
--- a/regress/mdoc/Em/tag.out_html
+++ b/regress/mdoc/Em/tag.out_html
@@ -2,7 +2,7 @@
<dt><a class="permalink" href="#one"><i class="Em" id="one">one</i></a> |
<a class="permalink" href="#two"><i class="Em" id="two">two</i></a></dt>
<dd>text</dd>
- <dt><a class="permalink" href="#three"><i class="Em" id="three">three</i></a></dt>
+ <dt><a class="permalink" href="#three-with-hyphens"><i class="Em" id="three-with-hyphens">three-with-hyphens</i></a></dt>
<dd>text</dd>
</dl>
<a class="permalink" href="#four"><i class="Em" id="four">four</i></a>
diff --git a/regress/mdoc/Em/tag.out_markdown b/regress/mdoc/Em/tag.out_markdown
index 4c107159..c881c2d9 100644
--- a/regress/mdoc/Em/tag.out_markdown
+++ b/regress/mdoc/Em/tag.out_markdown
@@ -12,7 +12,7 @@ BEGINTEST
> text
-*three*
+*three-with-hyphens*
> text
@@ -22,4 +22,4 @@ BEGINTEST
ENDTEST
-OpenBSD - March 13, 2020
+OpenBSD - April 2, 2020
diff --git a/regress/mdoc/Em/tag.out_tag b/regress/mdoc/Em/tag.out_tag
index dd032f4f..965d3e47 100644
--- a/regress/mdoc/Em/tag.out_tag
+++ b/regress/mdoc/Em/tag.out_tag
@@ -2,6 +2,6 @@ NAME 3
DESCRIPTION 6
one 9
two 9
-three 12
-four 13
-explicit 13
+three-with-hyphens 12
+four 14
+explicit 14
diff --git a/regress/mdoc/Sh/tag.in b/regress/mdoc/Sh/tag.in
index da8a884a..c44abbbf 100644
--- a/regress/mdoc/Sh/tag.in
+++ b/regress/mdoc/Sh/tag.in
@@ -1,5 +1,5 @@
-.\" $OpenBSD: tag.in,v 1.2 2020/04/01 20:10:18 schwarze Exp $
-.Dd $Mdocdate: April 1 2020 $
+.\" $OpenBSD: tag.in,v 1.3 2020/04/02 14:55:29 schwarze Exp $
+.Dd $Mdocdate: April 2 2020 $
.Dt SH-TAG 1
.Os
.Sh NAME
@@ -19,6 +19,8 @@ Text introducing examples.
.Tg example
.Ss Subsection
Example text.
+.Ss Sub-section
+More example text.
.Sh "\& WEIRD SECTION "
Text in weird section.
.Sh \ \&
diff --git a/regress/mdoc/Sh/tag.out_ascii b/regress/mdoc/Sh/tag.out_ascii
index 309cb559..8e6cce9d 100644
--- a/regress/mdoc/Sh/tag.out_ascii
+++ b/regress/mdoc/Sh/tag.out_ascii
@@ -20,6 +20,9 @@ EEXXAAMMPPLLEESS
SSuubbsseeccttiioonn
Example text.
+ SSuubb--sseeccttiioonn
+ More example text.
+
WWEEIIRRDD SSEECCTTIIOONN
Text in weird section.
@@ -28,4 +31,4 @@ EEXXAAMMPPLLEESS
ENDTEST
-OpenBSD April 1, 2020 OpenBSD
+OpenBSD April 2, 2020 OpenBSD
diff --git a/regress/mdoc/Sh/tag.out_html b/regress/mdoc/Sh/tag.out_html
index 49c45fdb..d99c6d4d 100644
--- a/regress/mdoc/Sh/tag.out_html
+++ b/regress/mdoc/Sh/tag.out_html
@@ -12,6 +12,10 @@
<h2 class="Ss" id="example"><a class="permalink" href="#example">Subsection</a></h2>
<p class="Pp">Example text.</p>
</section>
+<section class="Ss">
+<h2 class="Ss" id="Sub-section"><a class="permalink" href="#Sub-section">Sub-section</a></h2>
+<p class="Pp">More example text.</p>
+</section>
</section>
<section class="Sh">
<h1 class="Sh" id="WEIRD_SECTION"><a class="permalink" href="#WEIRD_SECTION">
diff --git a/regress/mdoc/Sh/tag.out_lint b/regress/mdoc/Sh/tag.out_lint
index cfb1dfad..63f9d2e4 100644
--- a/regress/mdoc/Sh/tag.out_lint
+++ b/regress/mdoc/Sh/tag.out_lint
@@ -1,3 +1,3 @@
mandoc: tag.in:14:2: WARNING: duplicate section title: Sh DESCRIPTION
-mandoc: tag.in:22:7: WARNING: tab in filled text
-mandoc: tag.in:22:22: WARNING: tab in filled text
+mandoc: tag.in:24:7: WARNING: tab in filled text
+mandoc: tag.in:24:22: WARNING: tab in filled text
diff --git a/regress/mdoc/Sh/tag.out_markdown b/regress/mdoc/Sh/tag.out_markdown
index 75a1e58e..4b87b144 100644
--- a/regress/mdoc/Sh/tag.out_markdown
+++ b/regress/mdoc/Sh/tag.out_markdown
@@ -26,6 +26,10 @@ Text introducing examples.
Example text.
+## Sub-section
+
+More example text.
+
# WEIRD SECTION
Text in weird section.
@@ -36,4 +40,4 @@ Text in section with empty header.
ENDTEST
-OpenBSD - April 1, 2020
+OpenBSD - April 2, 2020
diff --git a/regress/mdoc/Sh/tag.out_tag b/regress/mdoc/Sh/tag.out_tag
index 04b11882..b4adea63 100644
--- a/regress/mdoc/Sh/tag.out_tag
+++ b/regress/mdoc/Sh/tag.out_tag
@@ -4,4 +4,5 @@ Subsection 9
DESCRIPTION 14
examples 17
example 20
-WEIRD_SECTION 23
+Sub-section 23
+WEIRD_SECTION 26
diff --git a/regress/mdoc/Tg/warn.in b/regress/mdoc/Tg/warn.in
index e36f4506..d4dd3296 100644
--- a/regress/mdoc/Tg/warn.in
+++ b/regress/mdoc/Tg/warn.in
@@ -1,5 +1,5 @@
-.\" $OpenBSD: warn.in,v 1.1 2020/03/13 00:31:06 schwarze Exp $
-.Dd $Mdocdate: March 13 2020 $
+.\" $OpenBSD: warn.in,v 1.2 2020/04/02 14:55:29 schwarze Exp $
+.Dd $Mdocdate: April 2 2020 $
.Dt TG-WARN 1
.Os
.Sh NAME
@@ -8,7 +8,7 @@
.Sh DESCRIPTION
BEGINTEST
.Pp
-.Tg start
+.Tg start-tag
initial
text
.Tg
diff --git a/regress/mdoc/Tg/warn.out_ascii b/regress/mdoc/Tg/warn.out_ascii
index 8dee9aed..cb199b1f 100644
--- a/regress/mdoc/Tg/warn.out_ascii
+++ b/regress/mdoc/Tg/warn.out_ascii
@@ -16,4 +16,4 @@ EEXXAAMMPPLLEESS
ENDTEST
-OpenBSD March 13, 2020 OpenBSD
+OpenBSD April 2, 2020 OpenBSD
diff --git a/regress/mdoc/Tg/warn.out_html b/regress/mdoc/Tg/warn.out_html
index b4d3cf74..fdc333b6 100644
--- a/regress/mdoc/Tg/warn.out_html
+++ b/regress/mdoc/Tg/warn.out_html
@@ -1,4 +1,4 @@
-<p class="Pp"><mark id="start"></mark>initial text
+<p class="Pp"><mark id="start-tag"></mark>initial text
<a class="permalink" href="#macro"><code class="Ic" id="macro">macro</code></a>
too many badstart badend whitespace <mark id="sub"></mark></p>
<section class="Ss">
diff --git a/regress/mdoc/Tg/warn.out_markdown b/regress/mdoc/Tg/warn.out_markdown
index 87204424..ccc13bce 100644
--- a/regress/mdoc/Tg/warn.out_markdown
+++ b/regress/mdoc/Tg/warn.out_markdown
@@ -27,4 +27,4 @@ text
ENDTEST
-OpenBSD - March 13, 2020
+OpenBSD - April 2, 2020
diff --git a/regress/mdoc/Tg/warn.out_tag b/regress/mdoc/Tg/warn.out_tag
index 6426c3b5..9009af0e 100644
--- a/regress/mdoc/Tg/warn.out_tag
+++ b/regress/mdoc/Tg/warn.out_tag
@@ -1,6 +1,6 @@
NAME 3
DESCRIPTION 6
-start 9
+start-tag 9
macro 9
sub 9
double 11