aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/term.c
diff options
context:
space:
mode:
Diffstat (limited to 'term.c')
-rw-r--r--term.c27
1 files changed, 15 insertions, 12 deletions
diff --git a/term.c b/term.c
index 1217d473..f2553d89 100644
--- a/term.c
+++ b/term.c
@@ -1,4 +1,4 @@
-/* $Id: term.c,v 1.259 2017/01/08 18:16:58 schwarze Exp $ */
+/* $Id: term.c,v 1.260 2017/05/07 17:31:45 schwarze Exp $ */
/*
* Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
* Copyright (c) 2010-2017 Ingo Schwarze <schwarze@openbsd.org>
@@ -141,8 +141,8 @@ term_flushln(struct termp *p)
* subsequent tabs into a single huge set of spaces.
*/
ntab = 0;
- while (i < p->col && '\t' == p->buf[i]) {
- vend = (vis / p->tabwidth + 1) * p->tabwidth;
+ while (i < p->col && p->buf[i] == '\t') {
+ vend = term_tab_next(vis);
vbl += vend - vis;
vis = vend;
ntab++;
@@ -192,17 +192,20 @@ term_flushln(struct termp *p)
vend -= vis;
(*p->endline)(p);
p->viscol = 0;
- if (TERMP_BRIND & p->flags) {
- vbl = p->rmargin;
- vend += p->rmargin;
- vend -= p->offset;
- } else
- vbl = p->offset;
- /* use pending tabs on the new line */
+ /* Use pending tabs on the new line. */
+
+ vbl = 0;
+ while (ntab--)
+ vbl = term_tab_next(vbl);
- if (0 < ntab)
- vbl += ntab * p->tabwidth;
+ /* Re-establish indentation. */
+
+ if (p->flags & TERMP_BRIND) {
+ vbl += p->rmargin;
+ vend += p->rmargin - p->offset;
+ } else
+ vbl += p->offset;
/*
* Remove the p->overstep width.