head 1.2; access; symbols pkgsrc-2026Q1:1.2.0.106 pkgsrc-2026Q1-base:1.2 pkgsrc-2025Q4:1.2.0.104 pkgsrc-2025Q4-base:1.2 pkgsrc-2025Q3:1.2.0.102 pkgsrc-2025Q3-base:1.2 pkgsrc-2025Q2:1.2.0.100 pkgsrc-2025Q2-base:1.2 pkgsrc-2025Q1:1.2.0.98 pkgsrc-2025Q1-base:1.2 pkgsrc-2024Q4:1.2.0.96 pkgsrc-2024Q4-base:1.2 pkgsrc-2024Q3:1.2.0.94 pkgsrc-2024Q3-base:1.2 pkgsrc-2024Q2:1.2.0.92 pkgsrc-2024Q2-base:1.2 pkgsrc-2024Q1:1.2.0.90 pkgsrc-2024Q1-base:1.2 pkgsrc-2023Q4:1.2.0.88 pkgsrc-2023Q4-base:1.2 pkgsrc-2023Q3:1.2.0.86 pkgsrc-2023Q3-base:1.2 pkgsrc-2023Q2:1.2.0.84 pkgsrc-2023Q2-base:1.2 pkgsrc-2023Q1:1.2.0.82 pkgsrc-2023Q1-base:1.2 pkgsrc-2022Q4:1.2.0.80 pkgsrc-2022Q4-base:1.2 pkgsrc-2022Q3:1.2.0.78 pkgsrc-2022Q3-base:1.2 pkgsrc-2022Q2:1.2.0.76 pkgsrc-2022Q2-base:1.2 pkgsrc-2022Q1:1.2.0.74 pkgsrc-2022Q1-base:1.2 pkgsrc-2021Q4:1.2.0.72 pkgsrc-2021Q4-base:1.2 pkgsrc-2021Q3:1.2.0.70 pkgsrc-2021Q3-base:1.2 pkgsrc-2021Q2:1.2.0.68 pkgsrc-2021Q2-base:1.2 pkgsrc-2021Q1:1.2.0.66 pkgsrc-2021Q1-base:1.2 pkgsrc-2020Q4:1.2.0.64 pkgsrc-2020Q4-base:1.2 pkgsrc-2020Q3:1.2.0.62 pkgsrc-2020Q3-base:1.2 pkgsrc-2020Q2:1.2.0.58 pkgsrc-2020Q2-base:1.2 pkgsrc-2020Q1:1.2.0.38 pkgsrc-2020Q1-base:1.2 pkgsrc-2019Q4:1.2.0.60 pkgsrc-2019Q4-base:1.2 pkgsrc-2019Q3:1.2.0.56 pkgsrc-2019Q3-base:1.2 pkgsrc-2019Q2:1.2.0.54 pkgsrc-2019Q2-base:1.2 pkgsrc-2019Q1:1.2.0.52 pkgsrc-2019Q1-base:1.2 pkgsrc-2018Q4:1.2.0.50 pkgsrc-2018Q4-base:1.2 pkgsrc-2018Q3:1.2.0.48 pkgsrc-2018Q3-base:1.2 pkgsrc-2018Q2:1.2.0.46 pkgsrc-2018Q2-base:1.2 pkgsrc-2018Q1:1.2.0.44 pkgsrc-2018Q1-base:1.2 pkgsrc-2017Q4:1.2.0.42 pkgsrc-2017Q4-base:1.2 pkgsrc-2017Q3:1.2.0.40 pkgsrc-2017Q3-base:1.2 pkgsrc-2017Q2:1.2.0.36 pkgsrc-2017Q2-base:1.2 pkgsrc-2017Q1:1.2.0.34 pkgsrc-2017Q1-base:1.2 pkgsrc-2016Q4:1.2.0.32 pkgsrc-2016Q4-base:1.2 pkgsrc-2016Q3:1.2.0.30 pkgsrc-2016Q3-base:1.2 pkgsrc-2016Q2:1.2.0.28 pkgsrc-2016Q2-base:1.2 pkgsrc-2016Q1:1.2.0.26 pkgsrc-2016Q1-base:1.2 pkgsrc-2015Q4:1.2.0.24 pkgsrc-2015Q4-base:1.2 pkgsrc-2015Q3:1.2.0.22 pkgsrc-2015Q3-base:1.2 pkgsrc-2015Q2:1.2.0.20 pkgsrc-2015Q2-base:1.2 pkgsrc-2015Q1:1.2.0.18 pkgsrc-2015Q1-base:1.2 pkgsrc-2014Q4:1.2.0.16 pkgsrc-2014Q4-base:1.2 pkgsrc-2014Q3:1.2.0.14 pkgsrc-2014Q3-base:1.2 pkgsrc-2014Q2:1.2.0.12 pkgsrc-2014Q2-base:1.2 pkgsrc-2014Q1:1.2.0.10 pkgsrc-2014Q1-base:1.2 pkgsrc-2013Q4:1.2.0.8 pkgsrc-2013Q4-base:1.2 pkgsrc-2013Q3:1.2.0.6 pkgsrc-2013Q3-base:1.2 pkgsrc-2013Q2:1.2.0.4 pkgsrc-2013Q2-base:1.2 pkgsrc-2013Q1:1.2.0.2 pkgsrc-2013Q1-base:1.2 pkgsrc-2012Q4:1.1.0.28 pkgsrc-2012Q4-base:1.1 pkgsrc-2012Q3:1.1.0.26 pkgsrc-2012Q3-base:1.1 pkgsrc-2012Q2:1.1.0.24 pkgsrc-2012Q2-base:1.1 pkgsrc-2012Q1:1.1.0.22 pkgsrc-2012Q1-base:1.1 pkgsrc-2011Q4:1.1.0.20 pkgsrc-2011Q4-base:1.1 pkgsrc-2011Q3:1.1.0.18 pkgsrc-2011Q3-base:1.1 pkgsrc-2011Q2:1.1.0.16 pkgsrc-2011Q2-base:1.1 pkgsrc-2011Q1:1.1.0.14 pkgsrc-2011Q1-base:1.1 pkgsrc-2010Q4:1.1.0.12 pkgsrc-2010Q4-base:1.1 pkgsrc-2010Q3:1.1.0.10 pkgsrc-2010Q3-base:1.1 pkgsrc-2010Q2:1.1.0.8 pkgsrc-2010Q2-base:1.1 pkgsrc-2010Q1:1.1.0.6 pkgsrc-2010Q1-base:1.1 pkgsrc-2009Q4:1.1.0.4 pkgsrc-2009Q4-base:1.1 pkgsrc-2009Q3:1.1.0.2 pkgsrc-2009Q3-base:1.1; locks; strict; comment @# @; 1.2 date 2013.01.23.17.26.08; author wiz; state Exp; branches; next 1.1; 1.1 date 2009.08.07.16.39.21; author lukem; state Exp; branches; next ; desc @@ 1.2 log @Fix build with automake-1.13. While here, use a better WRKSRC and rebase patches. @ text @$NetBSD: patch-az,v 1.1 2009/08/07 16:39:21 lukem Exp $ --- vi/v_txt.c.orig 2007-11-19 03:41:42.000000000 +1100 +++ vi/v_txt.c @@@@ -948,7 +948,7 @@@@ k_escape: LINE_RESOLVE; switch (carat) { case C_CARATSET: /* ^^D */ - if (tp->ai == 0 || tp->cno > tp->ai + tp->offset + 1) + if (tp->ai == 0 || tp->cno != tp->ai + tp->offset + 1) goto ins_ch; /* Save the ai string for later. */ @@@@ -961,17 +961,18 @@@@ k_escape: LINE_RESOLVE; carat = C_NOCHANGE; goto leftmargin; case C_ZEROSET: /* 0^D */ - if (tp->ai == 0 || tp->cno > tp->ai + tp->offset + 1) + if (tp->ai == 0 || tp->cno != tp->ai + tp->offset + 1) goto ins_ch; carat = C_NOTSET; leftmargin: tp->lb[tp->cno - 1] = ' '; tp->owrite += tp->cno - tp->offset; - tp->ai = 0; tp->cno = tp->offset; break; + case C_NOCHANGE: /* ^D after reset with ^^D */ + /* FALLTHROUGH */ case C_NOTSET: /* ^D */ - if (tp->ai == 0 || tp->cno > tp->ai + tp->offset) + if (tp->ai == 0 || tp->cno != tp->ai + tp->offset) goto ins_ch; (void)txt_dent(sp, tp, 0); @@@@ -1719,13 +1720,19 @@@@ txt_ai_resolve(SCR *sp, TEXT *tp, int *c /* * If there are no spaces, or no tabs after spaces and less than * ts spaces, it's already minimal. + * Keep analysing if expandtab is set. */ - if (!spaces || !tab_after_sp && spaces < ts) + if ((!spaces || (!tab_after_sp && spaces < ts)) && + !O_ISSET(sp, O_EXPANDTAB)) return; /* Count up spaces/tabs needed to get to the target. */ - for (cno = 0, tabs = 0; cno + COL_OFF(cno, ts) <= scno; ++tabs) - cno += COL_OFF(cno, ts); + cno = 0; + tabs = 0; + if (!O_ISSET(sp, O_EXPANDTAB)) { + for (; cno + COL_OFF(cno, ts) <= scno; ++tabs) + cno += COL_OFF(cno, ts); + } spaces = scno - cno; /* @@@@ -1889,7 +1896,6 @@@@ txt_dent(SCR *sp, TEXT *tp, int isindent CHAR_T ch; u_long sw, ts; size_t cno, current, spaces, target, tabs, off; - int ai_reset; ts = O_VAL(sp, O_TABSTOP); sw = O_VAL(sp, O_SHIFTWIDTH); @@@@ -1921,16 +1927,6 @@@@ txt_dent(SCR *sp, TEXT *tp, int isindent target -= --target % sw; /* - * The AI characters will be turned into overwrite characters if the - * cursor immediately follows them. We test both the cursor position - * and the indent flag because there's no single test. (^T can only - * be detected by the cursor position, and while we know that the test - * is always true for ^D, the cursor can be in more than one place, as - * "0^D" and "^D" are different.) - */ - ai_reset = !isindent || tp->cno == tp->ai + tp->offset; - - /* * Back up over any previous characters, changing them into * overwrite characters (including any ai characters). Then figure * out the current screen column. @@@@ -1957,15 +1953,16 @@@@ txt_dent(SCR *sp, TEXT *tp, int isindent if (current >= target) spaces = tabs = 0; else { - for (cno = current, - tabs = 0; cno + COL_OFF(cno, ts) <= target; ++tabs) - cno += COL_OFF(cno, ts); + cno = current; + tabs = 0; + if (!O_ISSET(sp, O_EXPANDTAB)) { + for (; cno + COL_OFF(cno, ts) <= target; ++tabs) + cno += COL_OFF(cno, ts); + } spaces = target - cno; } - /* If we overwrote ai characters, reset the ai count. */ - if (ai_reset) - tp->ai = tabs + spaces; + tp->ai = tabs + spaces; /* * Call txt_insch() to insert each character, so that we get the @ 1.1 log @Apply various features and fixes from NetBSD basesrc: * Implement options: expandtab gtagsmode matchchars * Fix tty garbling when quitting from recovery mode. * Don't coredump during autoindent edge case. * Set internal version to "nvi-1.81.6nb4 (2009-08-07)" * Crank pkgrevision to nb4. @ text @d1 1 a1 1 $NetBSD$ d3 2 a4 2 --- ../vi/v_txt.c.orig 2007-11-19 03:41:42.000000000 +1100 +++ ../vi/v_txt.c @