From cd86e2e3fbe596b999f4cfd9655f0a37ac3845d2 Mon Sep 17 00:00:00 2001 From: Jacob Leeming Date: Mon, 22 Apr 2024 09:49:15 +0100 Subject: [PATCH] indent single statement if in csharp-ts-mode bug#70345 --- lisp/progmodes/csharp-mode.el | 4 +- .../csharp-ts-mode-resources/indent.erts | 51 +++++++++++++++++++ test/lisp/progmodes/csharp-ts-mode-tests.el | 30 +++++++++++ 3 files changed, 84 insertions(+), 1 deletion(-) create mode 100644 test/lisp/progmodes/csharp-ts-mode-resources/indent.erts create mode 100644 test/lisp/progmodes/csharp-ts-mode-tests.el diff --git a/lisp/progmodes/csharp-mode.el b/lisp/progmodes/csharp-mode.el index 607360f737a..62bbbfe02ff 100644 --- a/lisp/progmodes/csharp-mode.el +++ b/lisp/progmodes/csharp-mode.el @@ -689,7 +689,9 @@ csharp-ts-mode--indent-rules ((parent-is "binary_expression") parent 0) ((parent-is "block") parent-bol csharp-ts-mode-indent-offset) ((parent-is "local_function_statement") parent-bol 0) - ((parent-is "if_statement") parent-bol 0) + ((match "block" "if_statement") parent-bol 0) + ((match "else" "if_statement") parent-bol 0) + ((parent-is "if_statement") parent-bol csharp-ts-mode-indent-offset) ((parent-is "for_statement") parent-bol 0) ((parent-is "for_each_statement") parent-bol 0) ((parent-is "while_statement") parent-bol 0) diff --git a/test/lisp/progmodes/csharp-ts-mode-resources/indent.erts b/test/lisp/progmodes/csharp-ts-mode-resources/indent.erts new file mode 100644 index 00000000000..3cb23608270 --- /dev/null +++ b/test/lisp/progmodes/csharp-ts-mode-resources/indent.erts @@ -0,0 +1,51 @@ +Code: + (lambda () + (csharp-ts-mode) + (indent-region (point-min) (point-max))) + +Point-Char: | + +Name: Indent single statement body for if/else. (bug#70345) + +=-= + +int x; +int y; + +if (true) + x = 2; + +if (true) +{ + x = 2; +} + +if (true) + x = 2; +else + y = 2; + +if (true) +{ + x = 2; +} +else +{ + y = 2; +} + +if (true) + x = 2; +else +{ + y = 2; +} + +if (true) +{ + x = 2; +} +else + y = 2; + +=-=-= diff --git a/test/lisp/progmodes/csharp-ts-mode-tests.el b/test/lisp/progmodes/csharp-ts-mode-tests.el new file mode 100644 index 00000000000..0df0211d86b --- /dev/null +++ b/test/lisp/progmodes/csharp-ts-mode-tests.el @@ -0,0 +1,30 @@ +;;; csharp-ts-mode-tests.el --- Tests for Tree-sitter-based C# mode -*- lexical-binding: t; -*- + +;; Copyright (C) 2024 Free Software Foundation, Inc. + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs. If not, see . + +;;; Code: + +(require 'ert) +(require 'ert-x) +(require 'csharp-mode) + +(ert-deftest csharp-ts-mode-test-indentation () + (ert-test-erts-file (ert-resource-file "indent.erts"))) + +(provide 'csharp-ts-mode-tests) +;;; csharp-ts-mode-tests.el ends here -- 2.39.2