* mdocml: Some pre-handlers produce output, so reorder the code to set up
@ 2011-02-06 22:33 schwarze
0 siblings, 0 replies; only message in thread
From: schwarze @ 2011-02-06 22:33 UTC (permalink / raw)
To: source
Log Message:
-----------
Some pre-handlers produce output, so reorder the code to set up
keep flags before they are called.
Without this bugfix, .Bk was ineffective in some cases.
"looks reasonable" kristaps@
Modified Files:
--------------
mdocml:
mdoc_term.c
Revision Data
-------------
Index: mdoc_term.c
===================================================================
RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/mdoc_term.c,v
retrieving revision 1.216
retrieving revision 1.217
diff -Lmdoc_term.c -Lmdoc_term.c -u -p -r1.216 -r1.217
--- mdoc_term.c
+++ mdoc_term.c
@@ -1,6 +1,6 @@
/* $Id$ */
/*
- * Copyright (c) 2008, 2009, 2010 Kristaps Dzonsons <kristaps@bsd.lv>
+ * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
* Copyright (c) 2010 Ingo Schwarze <schwarze@openbsd.org>
*
* Permission to use, copy, modify, and distribute this software for any
@@ -312,24 +312,6 @@ print_mdoc_node(DECL_ARGS)
memset(&npair, 0, sizeof(struct termpair));
npair.ppair = pair;
-
- switch (n->type) {
- case (MDOC_TEXT):
- if (' ' == *n->string && MDOC_LINE & n->flags)
- term_newln(p);
- term_word(p, n->string);
- break;
- case (MDOC_EQN):
- break;
- case (MDOC_TBL):
- term_tbl(p, n->span);
- break;
- default:
- if (termacts[n->tok].pre && ENDBODY_NOT == n->end)
- chld = (*termacts[n->tok].pre)
- (p, &npair, m, n);
- break;
- }
/*
* Keeps only work until the end of a line. If a keep was
@@ -361,6 +343,29 @@ print_mdoc_node(DECL_ARGS)
(n->parent && MDOC_SYNPRETTY & n->parent->flags)))
p->flags &= ~(TERMP_KEEP | TERMP_PREKEEP);
+ /*
+ * After the keep flags have been set up, we may now
+ * produce output. Note that some pre-handlers do so.
+ */
+
+ switch (n->type) {
+ case (MDOC_TEXT):
+ if (' ' == *n->string && MDOC_LINE & n->flags)
+ term_newln(p);
+ term_word(p, n->string);
+ break;
+ case (MDOC_EQN):
+ break;
+ case (MDOC_TBL):
+ term_tbl(p, n->span);
+ break;
+ default:
+ if (termacts[n->tok].pre && ENDBODY_NOT == n->end)
+ chld = (*termacts[n->tok].pre)
+ (p, &npair, m, n);
+ break;
+ }
+
if (chld && n->child)
print_mdoc_nodelist(p, &npair, m, n->child);
@@ -2191,7 +2196,7 @@ termp__t_post(DECL_ARGS)
* If we're in an `Rs' and there's a journal present, then quote
* us instead of underlining us (for disambiguation).
*/
- if (n->parent && MDOC_Rs == n->parent->tok &&
+ if (n->parent && MDOC_Rs == n->parent->tok &&
n->parent->norm->Rs.quote_T)
termp_quote_post(p, pair, m, n);
--
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:[~2011-02-06 22:33 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-02-06 22:33 mdocml: Some pre-handlers produce output, so reorder the code to set up 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).