source@mandoc.bsd.lv
 help / color / mirror / Atom feed
* mandoc: support tail arguments on the .ME and .UE macros, used for
@ 2018-08-14  1:27 schwarze
  0 siblings, 0 replies; only message in thread
From: schwarze @ 2018-08-14  1:27 UTC (permalink / raw)
  To: source

Log Message:
-----------
support tail arguments on the .ME and .UE macros,
used for example in the ditroff(7) manual of the groff package

Modified Files:
--------------
    mandoc:
        man_macro.c
        man_term.c
        tree.c
        TODO
    mandoc/regress/man/MT:
        args.in
        args.out_ascii
        args.out_lint
    mandoc/regress/man/UR:
        args.in
        args.out_ascii
        args.out_lint

Revision Data
-------------
Index: TODO
===================================================================
RCS file: /home/cvs/mandoc/mandoc/TODO,v
retrieving revision 1.262
retrieving revision 1.263
diff -LTODO -LTODO -u -p -r1.262 -r1.263
--- TODO
+++ TODO
@@ -172,9 +172,6 @@ are mere guesses, and some may be wrong.
 - .SY and .YS,
   used by many groff manual pages
 
-- preserve punctuation following .ME,
-  see ditroff(7) for an example
-
 - .TQ tagged paragraph continuation,
   see groff_diff(7) for examples
 
Index: man_macro.c
===================================================================
RCS file: /home/cvs/mandoc/mandoc/man_macro.c,v
retrieving revision 1.123
retrieving revision 1.124
diff -Lman_macro.c -Lman_macro.c -u -p -r1.123 -r1.124
--- man_macro.c
+++ man_macro.c
@@ -1,7 +1,7 @@
 /*	$Id$ */
 /*
  * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
- * Copyright (c) 2012-2015, 2017 Ingo Schwarze <schwarze@openbsd.org>
+ * Copyright (c) 2012-2015, 2017, 2018 Ingo Schwarze <schwarze@openbsd.org>
  * Copyright (c) 2013 Franco Fichtner <franco@lastsummer.de>
  *
  * Permission to use, copy, modify, and distribute this software for any
@@ -189,10 +189,10 @@ rew_scope(struct roff_man *man, enum rof
 void
 blk_close(MACRO_PROT_ARGS)
 {
-	enum roff_tok		 ntok;
+	enum roff_tok		 ctok, ntok;
 	const struct roff_node	*nn;
 	char			*p;
-	int			 nrew, target;
+	int			 cline, cpos, nrew, target;
 
 	nrew = 1;
 	switch (tok) {
@@ -234,22 +234,29 @@ blk_close(MACRO_PROT_ARGS)
 		mandoc_msg(MANDOCERR_BLK_NOTOPEN, man->parse,
 		    line, ppos, roff_name[tok]);
 		rew_scope(man, MAN_PP);
-	} else {
-		line = man->last->line;
-		ppos = man->last->pos;
-		ntok = man->last->tok;
-		man_unscope(man, nn);
-
-		if (tok == MAN_RE && nn->head->aux > 0)
-			roff_setreg(man->roff, "an-margin",
-			    nn->head->aux, '-');
-
-		/* Move a trailing paragraph behind the block. */
-
-		if (ntok == MAN_LP || ntok == MAN_PP || ntok == MAN_P) {
-			*pos = strlen(buf);
-			blk_imp(man, ntok, line, ppos, pos, buf);
-		}
+		return;
+	}
+
+	cline = man->last->line;
+	cpos = man->last->pos;
+	ctok = man->last->tok;
+	man_unscope(man, nn);
+
+	if (tok == MAN_RE && nn->head->aux > 0)
+		roff_setreg(man->roff, "an-margin", nn->head->aux, '-');
+
+	/* Trailing text. */
+
+	if (buf[*pos] != '\0') {
+		roff_word_alloc(man, line, ppos, buf + *pos);
+		man->last->flags |= NODE_DELIMC;
+	}
+
+	/* Move a trailing paragraph behind the block. */
+
+	if (ctok == MAN_LP || ctok == MAN_PP || ctok == MAN_P) {
+		*pos = strlen(buf);
+		blk_imp(man, ctok, line, ppos, pos, buf);
 	}
 }
 
Index: man_term.c
===================================================================
RCS file: /home/cvs/mandoc/mandoc/man_term.c,v
retrieving revision 1.211
retrieving revision 1.212
diff -Lman_term.c -Lman_term.c -u -p -r1.211 -r1.212
--- man_term.c
+++ man_term.c
@@ -884,6 +884,8 @@ print_man_node(DECL_ARGS)
 		} else if (*n->string == ' ' && n->flags & NODE_LINE &&
 		    (p->flags & TERMP_NONEWLINE) == 0)
 			term_newln(p);
+		else if (n->flags & NODE_DELIMC)
+			p->flags |= TERMP_NOSPACE;
 
 		term_word(p, n->string);
 		goto out;
Index: tree.c
===================================================================
RCS file: /home/cvs/mandoc/mandoc/tree.c,v
retrieving revision 1.78
retrieving revision 1.79
diff -Ltree.c -Ltree.c -u -p -r1.78 -r1.79
--- tree.c
+++ tree.c
@@ -289,6 +289,8 @@ print_man(const struct roff_node *n, int
 		if (NODE_LINE & n->flags)
 			putchar('*');
 		printf("%d:%d", n->line, n->pos + 1);
+		if (NODE_DELIMC & n->flags)
+			putchar(')');
 		if (NODE_EOS & n->flags)
 			putchar('.');
 		putchar('\n');
Index: args.in
===================================================================
RCS file: /home/cvs/mandoc/mandoc/regress/man/MT/args.in,v
retrieving revision 1.2
retrieving revision 1.3
diff -Lregress/man/MT/args.in -Lregress/man/MT/args.in -u -p -r1.2 -r1.3
--- regress/man/MT/args.in
+++ regress/man/MT/args.in
@@ -1,13 +1,19 @@
 .\" $OpenBSD: args.in,v 1.2 2017/07/04 14:53:23 schwarze Exp $
-.TH MT-ARGS 1 "June 25, 2017"
+.TH MT-ARGS 1 "August 13, 2018"
 .SH NAME
 MT-args \- argument handling of the man-ext mailto macro
 .SH DESCRIPTION
+argument, text, and tail:
+.MT test@example.com
+text
+.ME tail args
+.PP
 argument plus text:
 .MT test@example.com
 invalid
 address
 .ME
+next line
 .PP
 argument but no text:
 .MT test@example.com
Index: args.out_lint
===================================================================
RCS file: /home/cvs/mandoc/mandoc/regress/man/MT/args.out_lint,v
retrieving revision 1.2
retrieving revision 1.3
diff -Lregress/man/MT/args.out_lint -Lregress/man/MT/args.out_lint -u -p -r1.2 -r1.3
--- regress/man/MT/args.out_lint
+++ regress/man/MT/args.out_lint
@@ -1,5 +1,5 @@
-mandoc: args.in:22:11: ERROR: skipping excess arguments: MT ... second
-mandoc: args.in:27:11: ERROR: skipping excess arguments: MT ... second
-mandoc: args.in:13:2: WARNING: empty block: MT
-mandoc: args.in:17:2: WARNING: missing resource identifier, using "": MT
-mandoc: args.in:27:2: WARNING: empty block: MT
+mandoc: args.in:28:11: ERROR: skipping excess arguments: MT ... second
+mandoc: args.in:33:11: ERROR: skipping excess arguments: MT ... second
+mandoc: args.in:19:2: WARNING: empty block: MT
+mandoc: args.in:23:2: WARNING: missing resource identifier, using "": MT
+mandoc: args.in:33:2: WARNING: empty block: MT
Index: args.out_ascii
===================================================================
RCS file: /home/cvs/mandoc/mandoc/regress/man/MT/args.out_ascii,v
retrieving revision 1.1
retrieving revision 1.2
diff -Lregress/man/MT/args.out_ascii -Lregress/man/MT/args.out_ascii -u -p -r1.1 -r1.2
--- regress/man/MT/args.out_ascii
+++ regress/man/MT/args.out_ascii
@@ -6,7 +6,9 @@ N\bNA\bAM\bME\bE
        MT-args - argument handling of the man-ext mailto macro
 
 D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
-       argument plus text: invalid address <test@example.com>
+       argument, text, and tail: text <test@example.com>tail args
+
+       argument plus text: invalid address <test@example.com> next line
 
        argument but no text: <test@example.com>
 
@@ -20,4 +22,4 @@ D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
 
 
 
-OpenBSD                          June 25, 2017                      MT-ARGS(1)
+OpenBSD                         August 13, 2018                     MT-ARGS(1)
Index: args.out_lint
===================================================================
RCS file: /home/cvs/mandoc/mandoc/regress/man/UR/args.out_lint,v
retrieving revision 1.4
retrieving revision 1.5
diff -Lregress/man/UR/args.out_lint -Lregress/man/UR/args.out_lint -u -p -r1.4 -r1.5
--- regress/man/UR/args.out_lint
+++ regress/man/UR/args.out_lint
@@ -1,5 +1,5 @@
-mandoc: args.in:22:11: ERROR: skipping excess arguments: UR ... second
-mandoc: args.in:27:11: ERROR: skipping excess arguments: UR ... second
-mandoc: args.in:13:2: WARNING: empty block: UR
-mandoc: args.in:17:2: WARNING: missing resource identifier, using "": UR
-mandoc: args.in:27:2: WARNING: empty block: UR
+mandoc: args.in:28:11: ERROR: skipping excess arguments: UR ... second
+mandoc: args.in:33:11: ERROR: skipping excess arguments: UR ... second
+mandoc: args.in:19:2: WARNING: empty block: UR
+mandoc: args.in:23:2: WARNING: missing resource identifier, using "": UR
+mandoc: args.in:33:2: WARNING: empty block: UR
Index: args.in
===================================================================
RCS file: /home/cvs/mandoc/mandoc/regress/man/UR/args.in,v
retrieving revision 1.2
retrieving revision 1.3
diff -Lregress/man/UR/args.in -Lregress/man/UR/args.in -u -p -r1.2 -r1.3
--- regress/man/UR/args.in
+++ regress/man/UR/args.in
@@ -1,13 +1,19 @@
 .\" $OpenBSD: args.in,v 1.2 2017/07/04 14:53:24 schwarze Exp $
-.TH UR-ARGS 1 "October 17, 2013"
+.TH UR-ARGS 1 "August 14, 2018"
 .SH NAME
 UR-basic \- argument handling of the man-ext URI macro
 .SH DESCRIPTION
+argument, text, and tail:
+.UR http://www.openbsd.org/
+text
+.UE tail argument
+.PP
 argument plus text:
 .UR http://www.openbsd.org/
 OpenBSD
 homepage
 .UE
+next line
 .PP
 argument but no text:
 .UR http://www.netbsd.org/
Index: args.out_ascii
===================================================================
RCS file: /home/cvs/mandoc/mandoc/regress/man/UR/args.out_ascii,v
retrieving revision 1.1
retrieving revision 1.2
diff -Lregress/man/UR/args.out_ascii -Lregress/man/UR/args.out_ascii -u -p -r1.1 -r1.2
--- regress/man/UR/args.out_ascii
+++ regress/man/UR/args.out_ascii
@@ -6,7 +6,10 @@ N\bNA\bAM\bME\bE
        UR-basic - argument handling of the man-ext URI macro
 
 D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
-       argument plus text: OpenBSD homepage <http://www.openbsd.org/>
+       argument, text, and tail: text <http://www.openbsd.org/>tail argument
+
+       argument plus text: OpenBSD homepage <http://www.openbsd.org/> next
+       line
 
        argument but no text: <http://www.netbsd.org/>
 
@@ -20,4 +23,4 @@ D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
 
 
 
-OpenBSD                        October 17, 2013                     UR-ARGS(1)
+OpenBSD                         August 14, 2018                     UR-ARGS(1)
--
 To unsubscribe send an email to source+unsubscribe@mandoc.bsd.lv

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2018-08-14  1:27 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-08-14  1:27 mandoc: support tail arguments on the .ME and .UE macros, used for schwarze

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).