diff options
-rw-r--r-- | regress/mdoc/Tg/Makefile | 8 | ||||
-rw-r--r-- | regress/mdoc/Tg/implicit.in | 14 | ||||
-rw-r--r-- | regress/mdoc/Tg/implicit.out_ascii | 13 | ||||
-rw-r--r-- | regress/mdoc/Tg/implicit.out_html | 2 | ||||
-rw-r--r-- | regress/mdoc/Tg/implicit.out_markdown | 15 | ||||
-rw-r--r-- | regress/mdoc/Tg/implicit.out_tag | 3 | ||||
-rw-r--r-- | tag.c | 19 |
7 files changed, 67 insertions, 7 deletions
diff --git a/regress/mdoc/Tg/Makefile b/regress/mdoc/Tg/Makefile index d67ec5af..83ae4160 100644 --- a/regress/mdoc/Tg/Makefile +++ b/regress/mdoc/Tg/Makefile @@ -1,9 +1,9 @@ -# $OpenBSD: Makefile,v 1.2 2020/04/06 09:55:50 schwarze Exp $ +# $OpenBSD: Makefile,v 1.3 2022/04/26 11:28:35 schwarze Exp $ -REGRESS_TARGETS = column list warn -TAG_TARGETS = column list warn +REGRESS_TARGETS = column implicit list warn +TAG_TARGETS = column implicit list warn LINT_TARGETS = warn -HTML_TARGETS = column list warn +HTML_TARGETS = column implicit list warn SKIP_TMAN = column diff --git a/regress/mdoc/Tg/implicit.in b/regress/mdoc/Tg/implicit.in new file mode 100644 index 00000000..1f89f3e5 --- /dev/null +++ b/regress/mdoc/Tg/implicit.in @@ -0,0 +1,14 @@ +.\" $OpenBSD: implicit.in,v 1.1 2022/04/26 11:28:35 schwarze Exp $ +.Dd $Mdocdate$ +.Dt TG-IMPLICIT 1 +.Os +.Sh NAME +.Nm Tg-implicit +.Nd overriding implicit tagging +.Sh DESCRIPTION +BEGINTEST +.Pp +.Tg explicit +.Sy implicit is unsused +.Pp +ENDTEST diff --git a/regress/mdoc/Tg/implicit.out_ascii b/regress/mdoc/Tg/implicit.out_ascii new file mode 100644 index 00000000..e3618686 --- /dev/null +++ b/regress/mdoc/Tg/implicit.out_ascii @@ -0,0 +1,13 @@ +TG-IMPLICIT(1) General Commands Manual TG-IMPLICIT(1) + +NNAAMMEE + TTgg--iimmpplliicciitt - overriding implicit tagging + +DDEESSCCRRIIPPTTIIOONN + BEGINTEST + + iimmpplliicciitt iiss uunnssuusseedd + + ENDTEST + +OpenBSD April 26, 2022 OpenBSD diff --git a/regress/mdoc/Tg/implicit.out_html b/regress/mdoc/Tg/implicit.out_html new file mode 100644 index 00000000..93df918d --- /dev/null +++ b/regress/mdoc/Tg/implicit.out_html @@ -0,0 +1,2 @@ +<p class="Pp" id="explicit"><a class="permalink" href="#explicit"><b class="Sy">implicit + is unsused</b></a></p> diff --git a/regress/mdoc/Tg/implicit.out_markdown b/regress/mdoc/Tg/implicit.out_markdown new file mode 100644 index 00000000..6511e441 --- /dev/null +++ b/regress/mdoc/Tg/implicit.out_markdown @@ -0,0 +1,15 @@ +TG-IMPLICIT(1) - General Commands Manual + +# NAME + +**Tg-implicit** - overriding implicit tagging + +# DESCRIPTION + +BEGINTEST + +**implicit is unsused** + +ENDTEST + +OpenBSD - April 26, 2022 diff --git a/regress/mdoc/Tg/implicit.out_tag b/regress/mdoc/Tg/implicit.out_tag new file mode 100644 index 00000000..b7b9a927 --- /dev/null +++ b/regress/mdoc/Tg/implicit.out_tag @@ -0,0 +1,3 @@ +NAME implicit.mandoc_ascii 3 +DESCRIPTION implicit.mandoc_ascii 6 +explicit implicit.mandoc_ascii 9 @@ -1,6 +1,7 @@ /* $Id$ */ /* - * Copyright (c) 2015,2016,2018,2019,2020 Ingo Schwarze <schwarze@openbsd.org> + * Copyright (c) 2015, 2016, 2018, 2019, 2020, 2022 + * 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 @@ -80,7 +81,7 @@ tag_free(void) /* * Set a node where a term is defined, - * unless it is already defined at a lower priority. + * unless the term is already defined at a lower priority. */ void tag_put(const char *s, int prio, struct roff_node *n) @@ -93,6 +94,18 @@ tag_put(const char *s, int prio, struct roff_node *n) assert(prio <= TAG_FALLBACK); + /* + * If the node is already tagged, the existing tag is + * explicit and we are now about to add an implicit tag. + * Don't do that; just skip implicit tagging if the author + * specified an explicit tag. + */ + + if (n->flags & NODE_ID) + return; + + /* Determine the implicit tag. */ + if (s == NULL) { if (n->child == NULL || n->child->type != ROFFT_TEXT) return; @@ -150,7 +163,7 @@ tag_put(const char *s, int prio, struct roff_node *n) */ else if (entry->prio < prio) - return; + return; /* * If the existing entry is worse, clear it. |