=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/mandoc/mdoc_macro.c,v retrieving revision 1.180 retrieving revision 1.181 diff -c -r1.180 -r1.181 *** src/usr.bin/mandoc/mdoc_macro.c 2017/05/05 15:16:25 1.180 --- src/usr.bin/mandoc/mdoc_macro.c 2017/05/30 16:21:07 1.181 *************** *** 1,4 **** ! /* $OpenBSD: mdoc_macro.c,v 1.180 2017/05/05 15:16:25 schwarze Exp $ */ /* * Copyright (c) 2008-2012 Kristaps Dzonsons * Copyright (c) 2010, 2012-2017 Ingo Schwarze --- 1,4 ---- ! /* $OpenBSD: mdoc_macro.c,v 1.181 2017/05/30 16:21:07 schwarze Exp $ */ /* * Copyright (c) 2008-2012 Kristaps Dzonsons * Copyright (c) 2010, 2012-2017 Ingo Schwarze *************** *** 74,80 **** { blk_full, MDOC_PARSED | MDOC_JOIN }, /* It */ { in_line, MDOC_CALLABLE | MDOC_PARSED }, /* Ad */ { in_line, MDOC_CALLABLE | MDOC_PARSED | MDOC_JOIN }, /* An */ ! { in_line_argn, MDOC_CALLABLE | MDOC_PARSED | MDOC_JOIN }, /* Ap */ { in_line, MDOC_CALLABLE | MDOC_PARSED }, /* Ar */ { in_line, MDOC_CALLABLE | MDOC_PARSED | MDOC_JOIN }, /* Cd */ { in_line, MDOC_CALLABLE | MDOC_PARSED }, /* Cm */ --- 74,81 ---- { blk_full, MDOC_PARSED | MDOC_JOIN }, /* It */ { in_line, MDOC_CALLABLE | MDOC_PARSED }, /* Ad */ { in_line, MDOC_CALLABLE | MDOC_PARSED | MDOC_JOIN }, /* An */ ! { in_line_argn, MDOC_CALLABLE | MDOC_PARSED | ! MDOC_IGNDELIM | MDOC_JOIN }, /* Ap */ { in_line, MDOC_CALLABLE | MDOC_PARSED }, /* Ar */ { in_line, MDOC_CALLABLE | MDOC_PARSED | MDOC_JOIN }, /* Cd */ { in_line, MDOC_CALLABLE | MDOC_PARSED }, /* Cm */ *************** *** 710,717 **** if (ac == ARGS_PUNCT || ac == ARGS_EOLN) break; ! ntok = ac == ARGS_QWORD ? TOKEN_NONE : ! lookup(mdoc, tok, line, lastarg, p); if (ntok == TOKEN_NONE) { dword(mdoc, line, lastarg, p, DELIM_MAX, --- 711,717 ---- if (ac == ARGS_PUNCT || ac == ARGS_EOLN) break; ! ntok = lookup(mdoc, tok, line, lastarg, p); if (ntok == TOKEN_NONE) { dword(mdoc, line, lastarg, p, DELIM_MAX, *************** *** 807,813 **** break; } ! ntok = (ac == ARGS_QWORD || (tok == MDOC_Fn && !cnt)) ? TOKEN_NONE : lookup(mdoc, tok, line, la, p); /* --- 807,813 ---- break; } ! ntok = (tok == MDOC_Fn && !cnt) ? TOKEN_NONE : lookup(mdoc, tok, line, la, p); /* *************** *** 836,849 **** } /* ! * Non-quote-enclosed punctuation. Set up our scope, if ! * a word; rewind the scope, if a delimiter; then append ! * the word. */ ! d = ac == ARGS_QWORD ? DELIM_NONE : mdoc_isdelim(p); ! ! if (DELIM_NONE != d) { /* * If we encounter closing punctuation, no word * has been emitted, no scope is open, and we're --- 836,846 ---- } /* ! * Handle punctuation. Set up our scope, if a word; ! * rewind the scope, if a delimiter; then append the word. */ ! if ((d = mdoc_isdelim(p)) != DELIM_NONE) { /* * If we encounter closing punctuation, no word * has been emitted, no scope is open, and we're *************** *** 863,873 **** * Close out our scope, if one is open, before * any punctuation. */ ! if (scope) rew_elem(mdoc, tok); ! scope = 0; ! if (tok == MDOC_Fn) ! mayopen = 0; } else if (mayopen && !scope) { mdoc_elem_alloc(mdoc, line, ppos, tok, arg); scope = 1; --- 860,871 ---- * Close out our scope, if one is open, before * any punctuation. */ ! if (scope && tok != MDOC_Lk) { rew_elem(mdoc, tok); ! scope = 0; ! if (tok == MDOC_Fn) ! mayopen = 0; ! } } else if (mayopen && !scope) { mdoc_elem_alloc(mdoc, line, ppos, tok, arg); scope = 1; *************** *** 1113,1119 **** if (head == NULL && ac != ARGS_PHRASE && - ac != ARGS_QWORD && mdoc_isdelim(p) == DELIM_OPEN) { dword(mdoc, line, la, p, DELIM_OPEN, 0); continue; --- 1111,1116 ---- *************** *** 1210,1217 **** if (ac == ARGS_EOLN || ac == ARGS_PUNCT) break; ! if (body == NULL && ac != ARGS_QWORD && ! mdoc_isdelim(p) == DELIM_OPEN) { dword(mdoc, line, la, p, DELIM_OPEN, 0); continue; } --- 1207,1213 ---- if (ac == ARGS_EOLN || ac == ARGS_PUNCT) break; ! if (body == NULL && mdoc_isdelim(p) == DELIM_OPEN) { dword(mdoc, line, la, p, DELIM_OPEN, 0); continue; } *************** *** 1267,1274 **** /* Flush out leading punctuation. */ ! if (head == NULL && ac != ARGS_QWORD && ! mdoc_isdelim(p) == DELIM_OPEN) { dword(mdoc, line, la, p, DELIM_OPEN, 0); continue; } --- 1263,1269 ---- /* Flush out leading punctuation. */ ! if (head == NULL && mdoc_isdelim(p) == DELIM_OPEN) { dword(mdoc, line, la, p, DELIM_OPEN, 0); continue; } *************** *** 1367,1373 **** state = -2; } ! ntok = (ac == ARGS_QWORD || (tok == MDOC_Pf && state == 0)) ? TOKEN_NONE : lookup(mdoc, tok, line, la, p); if (ntok != TOKEN_NONE) { --- 1362,1368 ---- state = -2; } ! ntok = (tok == MDOC_Pf && state == 0) ? TOKEN_NONE : lookup(mdoc, tok, line, la, p); if (ntok != TOKEN_NONE) { *************** *** 1379,1386 **** break; } ! if (ac == ARGS_QWORD || ! mdoc_macros[tok].flags & MDOC_IGNDELIM || mdoc_isdelim(p) == DELIM_NONE) { if (state == -1) { mdoc_elem_alloc(mdoc, line, ppos, tok, arg); --- 1374,1380 ---- break; } ! if (mdoc_macros[tok].flags & MDOC_IGNDELIM || mdoc_isdelim(p) == DELIM_NONE) { if (state == -1) { mdoc_elem_alloc(mdoc, line, ppos, tok, arg);