Module Name: src
Committed By: rillig
Date: Sat Mar 13 10:06:47 UTC 2021
Modified Files:
src/usr.bin/indent: indent.c indent.h io.c pr_comment.c
Log Message:
indent: replace compute_code_column with compute_code_indent
The goal is to only ever be concerned about the _indentation_ of a
token, never the _column_ it appears in. Having only one of these
avoids off-by-one errors.
No functional change.
To generate a diff of this commit:
cvs rdiff -u -r1.48 -r1.49 src/usr.bin/indent/indent.c
cvs rdiff -u -r1.10 -r1.11 src/usr.bin/indent/indent.h
cvs rdiff -u -r1.38 -r1.39 src/usr.bin/indent/io.c
cvs rdiff -u -r1.22 -r1.23 src/usr.bin/indent/pr_comment.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/usr.bin/indent/indent.c
diff -u src/usr.bin/indent/indent.c:1.48 src/usr.bin/indent/indent.c:1.49
--- src/usr.bin/indent/indent.c:1.48 Sat Mar 13 09:21:57 2021
+++ src/usr.bin/indent/indent.c Sat Mar 13 10:06:47 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: indent.c,v 1.48 2021/03/13 09:21:57 rillig Exp $ */
+/* $NetBSD: indent.c,v 1.49 2021/03/13 10:06:47 rillig Exp $ */
/*-
* SPDX-License-Identifier: BSD-4-Clause
@@ -46,7 +46,7 @@ static char sccsid[] = "@(#)indent.c 5.1
#include <sys/cdefs.h>
#ifndef lint
#if defined(__NetBSD__)
-__RCSID("$NetBSD: indent.c,v 1.48 2021/03/13 09:21:57 rillig Exp $");
+__RCSID("$NetBSD: indent.c,v 1.49 2021/03/13 10:06:47 rillig Exp $");
#elif defined(__FreeBSD__)
__FBSDID("$FreeBSD: head/usr.bin/indent/indent.c 340138 2018-11-04 19:24:49Z oshogbo $");
#endif
@@ -1150,7 +1150,7 @@ main(int argc, char **argv)
if (ps.block_init_level <= 0)
ps.block_init = 0;
if (break_comma && (!opt.leave_comma ||
- count_spaces_until(compute_code_column(), s_code, e_code) >
+ count_spaces_until(1 + compute_code_indent(), s_code, e_code) >
opt.max_col - opt.tabsize))
force_nl = true;
}
Index: src/usr.bin/indent/indent.h
diff -u src/usr.bin/indent/indent.h:1.10 src/usr.bin/indent/indent.h:1.11
--- src/usr.bin/indent/indent.h:1.10 Sat Mar 13 09:54:11 2021
+++ src/usr.bin/indent/indent.h Sat Mar 13 10:06:47 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: indent.h,v 1.10 2021/03/13 09:54:11 rillig Exp $ */
+/* $NetBSD: indent.h,v 1.11 2021/03/13 10:06:47 rillig Exp $ */
/*-
* SPDX-License-Identifier: BSD-2-Clause-FreeBSD
@@ -30,7 +30,7 @@
#if 0
#if defined(__NetBSD__)
-__RCSID("$NetBSD: indent.h,v 1.10 2021/03/13 09:54:11 rillig Exp $");
+__RCSID("$NetBSD: indent.h,v 1.11 2021/03/13 10:06:47 rillig Exp $");
#elif defined(__FreeBSD__)
__FBSDID("$FreeBSD: head/usr.bin/indent/indent.h 336333 2018-07-16 05:46:50Z pstef $");
#endif
@@ -45,7 +45,7 @@ __FBSDID("$FreeBSD: head/usr.bin/indent/
void add_typename(const char *);
void alloc_typenames(void);
-int compute_code_column(void);
+int compute_code_indent(void);
int compute_label_indent(void);
int count_spaces(int, const char *);
int count_spaces_until(int, const char *, const char *);
Index: src/usr.bin/indent/io.c
diff -u src/usr.bin/indent/io.c:1.38 src/usr.bin/indent/io.c:1.39
--- src/usr.bin/indent/io.c:1.38 Sat Mar 13 09:54:11 2021
+++ src/usr.bin/indent/io.c Sat Mar 13 10:06:47 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: io.c,v 1.38 2021/03/13 09:54:11 rillig Exp $ */
+/* $NetBSD: io.c,v 1.39 2021/03/13 10:06:47 rillig Exp $ */
/*-
* SPDX-License-Identifier: BSD-4-Clause
@@ -46,7 +46,7 @@ static char sccsid[] = "@(#)io.c 8.1 (Be
#include <sys/cdefs.h>
#ifndef lint
#if defined(__NetBSD__)
-__RCSID("$NetBSD: io.c,v 1.38 2021/03/13 09:54:11 rillig Exp $");
+__RCSID("$NetBSD: io.c,v 1.39 2021/03/13 10:06:47 rillig Exp $");
#elif defined(__FreeBSD__)
__FBSDID("$FreeBSD: head/usr.bin/indent/io.c 334927 2018-06-10 16:44:18Z pstef $");
#endif
@@ -195,7 +195,7 @@ dump_line(void)
comment_open = 0;
output_string(".*/\n");
}
- target_col = compute_code_column();
+ target_col = 1 + compute_code_indent();
{
int i;
@@ -287,31 +287,36 @@ dump_line(void)
}
int
-compute_code_column(void)
+compute_code_indent(void)
{
- int target_col = opt.ind_size * ps.ind_level + 1;
+ int target_ind = opt.ind_size * ps.ind_level;
- if (ps.paren_level) {
+ if (ps.paren_level != 0) {
if (!opt.lineup_to_parens)
- target_col += opt.continuation_indent *
+ target_ind += opt.continuation_indent *
(2 * opt.continuation_indent == opt.ind_size ? 1 : ps.paren_level);
else if (opt.lineup_to_parens_always)
- target_col = paren_indent;
+ /*
+ * XXX: where does this '- 1' come from? It looks strange but is
+ * nevertheless needed for proper indentation, as demonstrated in
+ * the test opt-lpl.0.
+ */
+ target_ind = paren_indent - 1;
else {
int w;
int t = paren_indent;
if ((w = count_spaces(t, s_code) - opt.max_col) > 0
- && count_spaces(target_col, s_code) <= opt.max_col) {
+ && count_spaces(target_ind + 1, s_code) <= opt.max_col) {
t -= w + 1;
- if (t > target_col)
- target_col = t;
+ if (t > target_ind + 1)
+ target_ind = t - 1;
} else
- target_col = t;
+ target_ind = t - 1;
}
} else if (ps.ind_stmt)
- target_col += opt.continuation_indent;
- return target_col;
+ target_ind += opt.continuation_indent;
+ return target_ind;
}
int
Index: src/usr.bin/indent/pr_comment.c
diff -u src/usr.bin/indent/pr_comment.c:1.22 src/usr.bin/indent/pr_comment.c:1.23
--- src/usr.bin/indent/pr_comment.c:1.22 Sat Mar 13 09:54:11 2021
+++ src/usr.bin/indent/pr_comment.c Sat Mar 13 10:06:47 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: pr_comment.c,v 1.22 2021/03/13 09:54:11 rillig Exp $ */
+/* $NetBSD: pr_comment.c,v 1.23 2021/03/13 10:06:47 rillig Exp $ */
/*-
* SPDX-License-Identifier: BSD-4-Clause
@@ -46,7 +46,7 @@ static char sccsid[] = "@(#)pr_comment.c
#include <sys/cdefs.h>
#ifndef lint
#if defined(__NetBSD__)
-__RCSID("$NetBSD: pr_comment.c,v 1.22 2021/03/13 09:54:11 rillig Exp $");
+__RCSID("$NetBSD: pr_comment.c,v 1.23 2021/03/13 10:06:47 rillig Exp $");
#elif defined(__FreeBSD__)
__FBSDID("$FreeBSD: head/usr.bin/indent/pr_comment.c 334927 2018-06-10 16:44:18Z pstef $");
#endif
@@ -162,11 +162,11 @@ pr_comment(void)
int target_col;
break_delim = false;
if (s_code != e_code)
- target_col = count_spaces(compute_code_column(), s_code);
+ target_col = count_spaces(1 + compute_code_indent(), s_code);
else {
target_col = 1;
if (s_lab != e_lab)
- target_col = count_spaces(compute_label_indent() + 1, s_lab);
+ target_col = count_spaces(1 + compute_label_indent(), s_lab);
}
ps.com_col = ps.decl_on_line || ps.ind_level == 0 ? opt.decl_com_ind : opt.com_ind;
if (ps.com_col <= target_col)