From 8c537aa2956a55fe341e1d48110ae6985ada7e5f Mon Sep 17 00:00:00 2001 From: Zandr Martin Date: Sat, 06 Jul 2019 15:57:34 -0400 Subject: [PATCH] fix enforcement of 1-step indentation --- src/main.c | 9 +++++---- test/indent | 11 +++++++++++ diff --git a/src/main.c b/src/main.c index 2508a7f0ded51471729b78f7247305adf2f37f3a..688b544d9c09803f478cbaa6c704edb1a2ffe741 100644 --- a/src/main.c +++ b/src/main.c @@ -286,9 +286,12 @@ while ((ch = parser_getch(p)) == '\t') { ++i; } parser_pushch(p, ch); - if (ch == '\n' && *indent != 0) { - // Don't change indent when we encounter empty lines + if ((ch == '\n' || ch == UTF8_INVALID) && *indent != 0) { + // Don't change indent when we encounter empty lines or EOF return *indent; + } + if (abs(i - *indent) > 1) { + parser_fatal(p, "Changed indentation by an amount greater than 1"); } if (write) { if (i < *indent) { @@ -297,8 +300,6 @@ roff_macro(p, "RE", NULL); } } else if (i == *indent + 1) { fprintf(p->output, ".RS 4\n"); - } else if (i != *indent && ch == '\t') { - parser_fatal(p, "Indented by an amount greater than 1"); } } *indent = i; diff --git a/test/indent b/test/indent index 087e30c9aaf450575d75247258a2a547e7efe8fd..0df281d15ba536518c0e24ff5e8467cdb028696c 100755 --- a/test/indent +++ b/test/indent @@ -19,3 +19,14 @@ Indented one level Not indented EOF end 0 + +begin "Disallows indentation changes > 1" +scdoc </dev/null +test(8) + +Not indented + Indented one level + Indented three levels +Not indented +EOF +end 1 -- 2.48.1