source@mandoc.bsd.lv
 help / color / mirror / Atom feed
* mdocml: implement roff(7) .rj (right justify) request
@ 2017-06-14 13:01 schwarze
  0 siblings, 0 replies; only message in thread
From: schwarze @ 2017-06-14 13:01 UTC (permalink / raw)
  To: source

Log Message:
-----------
implement roff(7) .rj (right justify) request

Modified Files:
--------------
    mdocml:
        mdoc_man.c
        roff.7
        roff.c
        roff.h
        roff_html.c
        roff_term.c
        roff_validate.c

Revision Data
-------------
Index: roff.7
===================================================================
RCS file: /home/cvs/mdocml/mdocml/roff.7,v
retrieving revision 1.88
retrieving revision 1.89
diff -Lroff.7 -Lroff.7 -u -p -r1.88 -r1.89
--- roff.7
+++ roff.7
@@ -1477,7 +1477,9 @@ This is a Heirloom extension and current
 Justify the next
 .Ar N
 input lines to the right margin without filling.
-Currently ignored.
+.Ar N
+defaults to 1.
+An argument of 0 or less ends right adjustment.
 .It Ic \&rm Ar macroname
 Remove a request, macro or string.
 .It Ic \&rn Ar oldname newname
Index: roff.c
===================================================================
RCS file: /home/cvs/mdocml/mdocml/roff.c,v
retrieving revision 1.308
retrieving revision 1.309
diff -Lroff.c -Lroff.c -u -p -r1.308 -r1.309
--- roff.c
+++ roff.c
@@ -222,8 +222,8 @@ static	enum rofferr	 roff_userdef(ROFF_A
 
 const char *__roff_name[MAN_MAX + 1] = {
 	"br",		"ce",		"ft",		"ll",
-	"mc",		"sp",		"ta",		"ti",
-	NULL,
+	"mc",		"rj",		"sp",		"ta",
+	"ti",		NULL,
 	"ab",		"ad",		"af",		"aln",
 	"als",		"am",		"am1",		"ami",
 	"ami1",		"as",		"as1",		"asciify",
@@ -267,7 +267,7 @@ const char *__roff_name[MAN_MAX + 1] = {
 	"pn",		"pnr",		"po",		"ps",
 	"psbb",		"pshape",	"pso",		"ptr",
 	"pvs",		"rchar",	"rd",		"recursionlimit",
-	"return",	"rfschar",	"rhang",	"rj",
+	"return",	"rfschar",	"rhang",
 	"rm",		"rn",		"rnn",		"rr",
 	"rs",		"rt",		"schar",	"sentchar",
 	"shc",		"shift",	"sizes",	"so",
@@ -334,6 +334,7 @@ static	struct roffmac	 roffs[TOKEN_NONE]
 	{ roff_onearg, NULL, NULL, 0 },  /* ft */
 	{ roff_onearg, NULL, NULL, 0 },  /* ll */
 	{ roff_onearg, NULL, NULL, 0 },  /* mc */
+	{ roff_onearg, NULL, NULL, 0 },  /* rj */
 	{ roff_onearg, NULL, NULL, 0 },  /* sp */
 	{ roff_manyarg, NULL, NULL, 0 },  /* ta */
 	{ roff_onearg, NULL, NULL, 0 },  /* ti */
@@ -511,7 +512,6 @@ static	struct roffmac	 roffs[TOKEN_NONE]
 	{ roff_unsupp, NULL, NULL, 0 },  /* return */
 	{ roff_unsupp, NULL, NULL, 0 },  /* rfschar */
 	{ roff_line_ignore, NULL, NULL, 0 },  /* rhang */
-	{ roff_line_ignore, NULL, NULL, 0 },  /* rj */
 	{ roff_rm, NULL, NULL, 0 },  /* rm */
 	{ roff_rn, NULL, NULL, 0 },  /* rn */
 	{ roff_unsupp, NULL, NULL, 0 },  /* rnn */
@@ -1549,7 +1549,7 @@ roff_parseln(struct roff *r, int ln, str
 	/* Tables ignore most macros. */
 
 	if (r->tbl != NULL && (t == TOKEN_NONE || t == ROFF_TS ||
-	    t == ROFF_br || t == ROFF_ce || t == ROFF_sp)) {
+	    t == ROFF_br || t == ROFF_ce || t == ROFF_rj || t == ROFF_sp)) {
 		mandoc_msg(MANDOCERR_TBLMACRO, r->parse,
 		    ln, pos, buf->buf + spos);
 		if (t != TOKEN_NONE)
@@ -2880,7 +2880,7 @@ roff_onearg(ROFF_ARGS)
 	    (tok == ROFF_sp || tok == ROFF_ti))
 		man_breakscope(r->man, tok);
 
-	if (tok == ROFF_ce && roffce_node != NULL) {
+	if (roffce_node != NULL && (tok == ROFF_ce || tok == ROFF_rj)) {
 		r->man->last = roffce_node;
 		r->man->next = ROFF_NEXT_SIBLING;
 	}
@@ -2901,8 +2901,8 @@ roff_onearg(ROFF_ARGS)
 		roff_word_alloc(r->man, ln, pos, buf->buf + pos);
 	}
 
-	if (tok == ROFF_ce) {
-		if (r->man->last->tok == ROFF_ce) {
+	if (tok == ROFF_ce || tok == ROFF_rj) {
+		if (r->man->last->type == ROFFT_ELEM) {
 			roff_word_alloc(r->man, ln, pos, "1");
 			r->man->last->flags |= NODE_NOSRC;
 		}
Index: mdoc_man.c
===================================================================
RCS file: /home/cvs/mdocml/mdocml/mdoc_man.c,v
retrieving revision 1.120
retrieving revision 1.121
diff -Lmdoc_man.c -Lmdoc_man.c -u -p -r1.120 -r1.121
--- mdoc_man.c
+++ mdoc_man.c
@@ -125,14 +125,15 @@ static	void	  print_count(int *);
 static	void	  print_node(DECL_ARGS);
 
 static	const void_fp roff_manacts[ROFF_MAX] = {
-	pre_br,
-	pre_onearg,
-	pre_ft,
-	pre_onearg,
-	pre_onearg,
-	pre_sp,
-	pre_ta,
-	pre_onearg,
+	pre_br,		/* br */
+	pre_onearg,	/* ce */
+	pre_ft,		/* ft */
+	pre_onearg,	/* ll */
+	pre_onearg,	/* mc */
+	pre_onearg,	/* rj */
+	pre_sp,		/* sp */
+	pre_ta,		/* ta */
+	pre_onearg,	/* ti */
 };
 
 static	const struct manact __manacts[MDOC_MAX - MDOC_Dd] = {
Index: roff_validate.c
===================================================================
RCS file: /home/cvs/mdocml/mdocml/roff_validate.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -Lroff_validate.c -Lroff_validate.c -u -p -r1.7 -r1.8
--- roff_validate.c
+++ roff_validate.c
@@ -36,6 +36,7 @@ static	const roff_valid_fp roff_valids[R
 	roff_valid_ft,  /* ft */
 	NULL,  /* ll */
 	NULL,  /* mc */
+	NULL,  /* rj */
 	NULL,  /* sp */
 	NULL,  /* ta */
 	NULL,  /* ti */
Index: roff_html.c
===================================================================
RCS file: /home/cvs/mdocml/mdocml/roff_html.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -Lroff_html.c -Lroff_html.c -u -p -r1.8 -r1.9
--- roff_html.c
+++ roff_html.c
@@ -38,6 +38,7 @@ static	const roff_html_pre_fp roff_html_
 	NULL,  /* ft */
 	NULL,  /* ll */
 	NULL,  /* mc */
+	roff_html_pre_ce,  /* rj */
 	roff_html_pre_sp,  /* sp */
 	NULL,  /* ta */
 	NULL,  /* ti */
Index: roff.h
===================================================================
RCS file: /home/cvs/mdocml/mdocml/roff.h,v
retrieving revision 1.52
retrieving revision 1.53
diff -Lroff.h -Lroff.h -u -p -r1.52 -r1.53
--- roff.h
+++ roff.h
@@ -77,6 +77,7 @@ enum	roff_tok {
 	ROFF_ft,
 	ROFF_ll,
 	ROFF_mc,
+	ROFF_rj,
 	ROFF_sp,
 	ROFF_ta,
 	ROFF_ti,
@@ -257,7 +258,6 @@ enum	roff_tok {
 	ROFF_return,
 	ROFF_rfschar,
 	ROFF_rhang,
-	ROFF_rj,
 	ROFF_rm,
 	ROFF_rn,
 	ROFF_rnn,
Index: roff_term.c
===================================================================
RCS file: /home/cvs/mdocml/mdocml/roff_term.c,v
retrieving revision 1.10
retrieving revision 1.11
diff -Lroff_term.c -Lroff_term.c -u -p -r1.10 -r1.11
--- roff_term.c
+++ roff_term.c
@@ -42,6 +42,7 @@ static	const roff_term_pre_fp roff_term_
 	roff_term_pre_ft,  /* ft */
 	roff_term_pre_ll,  /* ll */
 	roff_term_pre_mc,  /* mc */
+	roff_term_pre_ce,  /* rj */
 	roff_term_pre_sp,  /* sp */
 	roff_term_pre_ta,  /* ta */
 	roff_term_pre_ti,  /* ti */
@@ -69,33 +70,34 @@ roff_term_pre_br(ROFF_TERM_ARGS)
 static void
 roff_term_pre_ce(ROFF_TERM_ARGS)
 {
-	const struct roff_node	*nch;
+	const struct roff_node	*nc1, *nc2;
 	size_t			 len, lm;
 
 	roff_term_pre_br(p, n);
 	lm = p->tcol->offset;
-	n = n->child->next;
-	while (n != NULL) {
-		nch = n;
+	nc1 = n->child->next;
+	while (nc1 != NULL) {
+		nc2 = nc1;
 		len = 0;
 		do {
-			if (n->type == ROFFT_TEXT) {
+			if (nc2->type == ROFFT_TEXT) {
 				if (len)
 					len++;
-				len += term_strlen(p, nch->string);
+				len += term_strlen(p, nc2->string);
 			}
-			nch = nch->next;
-		} while (nch != NULL && (n->type != ROFFT_TEXT ||
-		    (n->flags & NODE_LINE) == 0));
+			nc2 = nc2->next;
+		} while (nc2 != NULL && (nc2->type != ROFFT_TEXT ||
+		    (nc2->flags & NODE_LINE) == 0));
 		p->tcol->offset = len >= p->tcol->rmargin ? 0 :
 		    lm + len >= p->tcol->rmargin ? p->tcol->rmargin - len :
+		    n->tok == ROFF_rj ? p->tcol->rmargin - len :
 		    (lm + p->tcol->rmargin - len) / 2;
-		while (n != nch) {
-			if (n->type == ROFFT_TEXT)
-				term_word(p, n->string);
+		while (nc1 != nc2) {
+			if (nc1->type == ROFFT_TEXT)
+				term_word(p, nc1->string);
 			else
-				roff_term_pre(p, n);
-			n = n->next;
+				roff_term_pre(p, nc1);
+			nc1 = nc1->next;
 		}
 		p->flags |= TERMP_NOSPACE;
 		term_flushln(p);
--
 To unsubscribe send an email to source+unsubscribe@mdocml.bsd.lv

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

only message in thread, other threads:[~2017-06-14 13:01 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-06-14 13:01 mdocml: implement roff(7) .rj (right justify) request 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).