-/* $Id: term.c,v 1.212 2013/12/23 02:20:09 schwarze Exp $ */
+/* $Id: term.c,v 1.215 2013/12/31 18:07:42 schwarze Exp $ */
/*
* Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
* Copyright (c) 2010, 2011, 2012, 2013 Ingo Schwarze <schwarze@openbsd.org>
void
term_word(struct termp *p, const char *word)
{
+ const char nbrsp[2] = { ASCII_NBRSP, 0 };
const char *seq, *cp;
char c;
int sz, uc;
else
p->flags |= TERMP_NOSPACE;
- p->flags &= ~(TERMP_SENTENCE | TERMP_IGNDELIM);
+ p->flags &= ~TERMP_SENTENCE;
while ('\0' != *word) {
if ('\\' != *word) {
word++;
continue;
}
- ssz = strcspn(word, "\\");
+ if (TERMP_NBRWORD & p->flags) {
+ if (' ' == *word) {
+ encode(p, nbrsp, 1);
+ word++;
+ continue;
+ }
+ ssz = strcspn(word, "\\ ");
+ } else
+ ssz = strcspn(word, "\\");
encode(p, word, ssz);
word += (int)ssz;
continue;
break;
}
}
+ p->flags &= ~TERMP_NBRWORD;
}
static void
for (i = 0; i < rsz; i++)
sz += cond_width(p, *cp++, &skip);
- c = 0;
switch (*cp) {
case ('\\'):
cp++;