--- Begin Message ---
Subject: |
[PATCH] 29.1.50; csharp-ts-mode indentation of if statements with single-statement body |
Date: |
Thu, 11 Apr 2024 21:32:02 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) |
Hi all,
>From emacs -Q:
Evaluate this elisp to set up treesitter for csharp:
(setq treesit-language-source-alist '((c-sharp
"https://github.com/tree-sitter/tree-sitter-c-sharp" "master" "src"))
treesit-load-name-override-list '((c-sharp
"libtree-sitter-csharp" "tree_sitter_c_sharp"))
major-mode-remap-alist '((csharp-mode . csharp-ts-mode)))
Insert the following text into a csharp-ts-mode buffer:
if (true)
var x = 2;
Try to indent the variable declaration of the function with
indent-for-tab-command. Nothing will happen. I'd expect to see this:
if (true)
var x = 2;
This issue can be fixed with the following patch:
diff --git a/lisp/progmodes/csharp-mode.el b/lisp/progmodes/csharp-mode.el
index 53c52e6..1a7d535 100644
--- a/lisp/progmodes/csharp-mode.el
+++ b/lisp/progmodes/csharp-mode.el
@@ -678,7 +678,8 @@ 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)
+ ((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)
Cheers,
Jacob
--- End Message ---
--- Begin Message ---
Subject: |
Re: bug#70345: [PATCH] 29.1.50; csharp-ts-mode indentation of if statements with single-statement body |
Date: |
Thu, 25 Apr 2024 19:04:14 +0300 |
> Cc: 70345@debbugs.gnu.org, Jacob Leeming <jacobtophatleeming@gmail.com>
> From: Jacob Leeming <jacobtophatleeming@gmail.com>
> Date: Mon, 22 Apr 2024 09:50:23 +0100
>
> > Looks good to me. Are you willing to pack this up with a nice test
> > confirming the behavior?
> >
> > All the best,
> > Theo
>
> Thanks all,
>
> Discovered we had a similar issue for else blocks. Wrote a test that
> covers both cases.
>
> See the attached diff which contains my changes to the indent rules and
> the test.
Thanks, I installed this on the emacs-29 branch. (The test you added
should have been added to csharp-mode-tests.el, since our test files
follow the names of the implementation files, and csharp-ts-mode is
implemented in csharp-mode.el. I fixed that.)
With this changeset you have exhausted the amount of changes that we
can accept from you without copyright assignment. Would you like to
start the paperwork of assigning the copyright at this time, so that
we could accept your contributions in the future without limitations?
If yes, I will send you the form to fill and the instructions to send
the form.
I'm closing this bug.
--- End Message ---