summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--eqn_term.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/eqn_term.c b/eqn_term.c
index 69c77409..159021e8 100644
--- a/eqn_term.c
+++ b/eqn_term.c
@@ -52,6 +52,7 @@ static void
eqn_box(struct termp *p, const struct eqn_box *bp)
{
const struct eqn_box *child;
+ const char *cp;
int delim;
/* Delimiters around this box? */
@@ -94,8 +95,9 @@ eqn_box(struct termp *p, const struct eqn_box *bp)
if (strchr("!\"'),.:;?]}", *bp->text) != NULL)
p->flags |= TERMP_NOSPACE;
term_word(p, bp->text);
- if (*bp->text != '\0' && strchr("\"'([{",
- bp->text[strlen(bp->text) - 1]) != NULL)
+ if ((cp = strchr(bp->text, '\0')) > bp->text &&
+ ((cp[-1] == '-' && bp->prev == NULL) ||
+ strchr("\"'([{", cp[-1]) != NULL))
p->flags |= TERMP_NOSPACE;
}