Module Name: src Committed By: rillig Date: Fri Jun 9 08:10:58 UTC 2023
Modified Files: src/tests/usr.bin/indent: opt_eei.c src/usr.bin/indent: debug.c indent.c indent.h io.c Log Message: indent: when an indentation is ambiguous, indent one level further The '-eei' mode now applies whenever the indentation from a multi-line expression could be confused with a following statement. To generate a diff of this commit: cvs rdiff -u -r1.13 -r1.14 src/tests/usr.bin/indent/opt_eei.c cvs rdiff -u -r1.40 -r1.41 src/usr.bin/indent/debug.c cvs rdiff -u -r1.342 -r1.343 src/usr.bin/indent/indent.c cvs rdiff -u -r1.179 -r1.180 src/usr.bin/indent/indent.h cvs rdiff -u -r1.206 -r1.207 src/usr.bin/indent/io.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/tests/usr.bin/indent/opt_eei.c diff -u src/tests/usr.bin/indent/opt_eei.c:1.13 src/tests/usr.bin/indent/opt_eei.c:1.14 --- src/tests/usr.bin/indent/opt_eei.c:1.13 Fri Jun 9 07:54:05 2023 +++ src/tests/usr.bin/indent/opt_eei.c Fri Jun 9 08:10:58 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: opt_eei.c,v 1.13 2023/06/09 07:54:05 rillig Exp $ */ +/* $NetBSD: opt_eei.c,v 1.14 2023/06/09 08:10:58 rillig Exp $ */ /* * Tests for the options '-eei' and '-neei'. @@ -62,18 +62,14 @@ b) //indent run -eei { if (a < -/* $ XXX: No extra indentation necessary. */ - b) + b) stmt(); if (a -/* $ XXX: No extra indentation necessary. */ - < -/* $ XXX: No extra indentation necessary. */ - b) + < + b) stmt(); while (a -/* $ XXX: No extra indentation necessary. */ - < b) + < b) stmt(); switch ( a) @@ -110,8 +106,7 @@ b) b) stmt(); while (a -/* $ XXX: No extra indentation necessary. */ - < b) + < b) stmt(); switch ( /* $ XXX: No extra indentation necessary. */ @@ -208,10 +203,9 @@ b) //indent run -eei { if (fun( -// $ TODO: Indent one level further. - 1, - 2, - 3)) + 1, + 2, + 3)) stmt; } //indent end @@ -239,9 +233,8 @@ b) 3 ))) stmt; -// $ XXX: The indentation of '4' may be considered ambiguous. if (((( - 4 + 4 )))) stmt; } Index: src/usr.bin/indent/debug.c diff -u src/usr.bin/indent/debug.c:1.40 src/usr.bin/indent/debug.c:1.41 --- src/usr.bin/indent/debug.c:1.40 Thu Jun 8 21:18:54 2023 +++ src/usr.bin/indent/debug.c Fri Jun 9 08:10:58 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: debug.c,v 1.40 2023/06/08 21:18:54 rillig Exp $ */ +/* $NetBSD: debug.c,v 1.41 2023/06/09 08:10:58 rillig Exp $ */ /*- * Copyright (c) 2023 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include <sys/cdefs.h> -__RCSID("$NetBSD: debug.c,v 1.40 2023/06/08 21:18:54 rillig Exp $"); +__RCSID("$NetBSD: debug.c,v 1.41 2023/06/09 08:10:58 rillig Exp $"); #include <stdarg.h> @@ -131,7 +131,7 @@ const char *const line_kind_name[] = { static const char *const extra_expr_indent_name[] = { "no", - "yes", + "maybe", "last", }; Index: src/usr.bin/indent/indent.c diff -u src/usr.bin/indent/indent.c:1.342 src/usr.bin/indent/indent.c:1.343 --- src/usr.bin/indent/indent.c:1.342 Fri Jun 9 07:20:30 2023 +++ src/usr.bin/indent/indent.c Fri Jun 9 08:10:58 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: indent.c,v 1.342 2023/06/09 07:20:30 rillig Exp $ */ +/* $NetBSD: indent.c,v 1.343 2023/06/09 08:10:58 rillig Exp $ */ /*- * SPDX-License-Identifier: BSD-4-Clause @@ -38,7 +38,7 @@ */ #include <sys/cdefs.h> -__RCSID("$NetBSD: indent.c,v 1.342 2023/06/09 07:20:30 rillig Exp $"); +__RCSID("$NetBSD: indent.c,v 1.343 2023/06/09 08:10:58 rillig Exp $"); #include <sys/param.h> #include <err.h> @@ -453,10 +453,8 @@ process_lparen(void) ps.want_blank = false; buf_add_char(&code, token.s[0]); - if (opt.extra_expr_indent && !opt.lineup_to_parens - && ps.spaced_expr_psym != psym_0 && ps.nparen == 1 - && opt.continuation_indent == opt.indent_size) - ps.extra_expr_indent = eei_yes; + if (opt.extra_expr_indent && ps.spaced_expr_psym != psym_0) + ps.extra_expr_indent = eei_maybe; if (ps.init_or_struct && ps.psyms.top <= 2) { /* A kludge to correctly align function definitions. */ @@ -465,9 +463,6 @@ process_lparen(void) } int indent = ind_add(0, code.s, code.len); - if (opt.extra_expr_indent && ps.spaced_expr_psym != psym_0 - && ps.nparen == 1 && indent < 2 * opt.indent_size) - indent = 2 * opt.indent_size; enum paren_level_cast cast = cast_unknown; if (ps.prev_lsym == lsym_offsetof @@ -532,7 +527,7 @@ unbalanced: buf_add_char(&code, token.s[0]); if (ps.spaced_expr_psym != psym_0 && ps.nparen == 0) { - if (ps.extra_expr_indent == eei_yes) + if (ps.extra_expr_indent == eei_maybe) ps.extra_expr_indent = eei_last; ps.force_nl = true; ps.next_unary = true; Index: src/usr.bin/indent/indent.h diff -u src/usr.bin/indent/indent.h:1.179 src/usr.bin/indent/indent.h:1.180 --- src/usr.bin/indent/indent.h:1.179 Thu Jun 8 21:18:54 2023 +++ src/usr.bin/indent/indent.h Fri Jun 9 08:10:58 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: indent.h,v 1.179 2023/06/08 21:18:54 rillig Exp $ */ +/* $NetBSD: indent.h,v 1.180 2023/06/09 08:10:58 rillig Exp $ */ /*- * SPDX-License-Identifier: BSD-2-Clause-FreeBSD @@ -351,7 +351,7 @@ extern struct parser_state { enum { eei_no, - eei_yes, + eei_maybe, eei_last } extra_expr_indent; Index: src/usr.bin/indent/io.c diff -u src/usr.bin/indent/io.c:1.206 src/usr.bin/indent/io.c:1.207 --- src/usr.bin/indent/io.c:1.206 Fri Jun 9 07:20:30 2023 +++ src/usr.bin/indent/io.c Fri Jun 9 08:10:58 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: io.c,v 1.206 2023/06/09 07:20:30 rillig Exp $ */ +/* $NetBSD: io.c,v 1.207 2023/06/09 08:10:58 rillig Exp $ */ /*- * SPDX-License-Identifier: BSD-4-Clause @@ -38,7 +38,7 @@ */ #include <sys/cdefs.h> -__RCSID("$NetBSD: io.c,v 1.206 2023/06/09 07:20:30 rillig Exp $"); +__RCSID("$NetBSD: io.c,v 1.207 2023/06/09 08:10:58 rillig Exp $"); #include <stdio.h> @@ -216,16 +216,16 @@ compute_code_indent_lineup(int base_ind) { int ind = paren_indent; int overflow = ind_add(ind, code.s, code.len) - opt.max_line_length; - if (overflow < 0) - return ind; - - if (ind_add(base_ind, code.s, code.len) < opt.max_line_length) { + if (overflow >= 0 + && ind_add(base_ind, code.s, code.len) < opt.max_line_length) { ind -= overflow + 2; - if (ind > base_ind) - return ind; - return base_ind; + if (ind < base_ind) + ind = base_ind; } + if (ps.extra_expr_indent != eei_no + && ind == base_ind + opt.indent_size) + ind += opt.continuation_indent; return ind; } @@ -249,10 +249,10 @@ compute_code_indent(void) return compute_code_indent_lineup(base_ind); } - if (ps.extra_expr_indent != eei_no) - return base_ind + 2 * opt.continuation_indent; - - return base_ind + opt.continuation_indent * ps.line_start_nparen; + int rel_ind = opt.continuation_indent * ps.line_start_nparen; + if (ps.extra_expr_indent != eei_no && rel_ind == opt.indent_size) + rel_ind += opt.continuation_indent; + return base_ind + rel_ind; } static void