GNU bug report logs - #70345
[PATCH] 29.1.50; csharp-ts-mode indentation of if statements with single-statement body

Previous Next

Package: emacs;

Reported by: Jacob Leeming <jacobtophatleeming <at> gmail.com>

Date: Thu, 11 Apr 2024 20:33:03 UTC

Severity: normal

Tags: patch

Done: Eli Zaretskii <eliz <at> gnu.org>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: help-debbugs <at> gnu.org (GNU bug Tracking System)
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: tracker <at> debbugs.gnu.org
Subject: bug#70345: closed ([PATCH] 29.1.50; csharp-ts-mode indentation of
 if statements with single-statement body)
Date: Thu, 25 Apr 2024 16:05:04 +0000
[Message part 1 (text/plain, inline)]
Your message dated Thu, 25 Apr 2024 19:04:14 +0300
with message-id <867cgl1la9.fsf <at> gnu.org>
and subject line Re: bug#70345: [PATCH] 29.1.50; csharp-ts-mode indentation of if statements with single-statement body
has caused the debbugs.gnu.org bug report #70345,
regarding [PATCH] 29.1.50; csharp-ts-mode indentation of if statements with single-statement body
to be marked as done.

(If you believe you have received this mail in error, please contact
help-debbugs <at> gnu.org.)


-- 
70345: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=70345
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
From: Jacob Leeming <jacobtophatleeming <at> gmail.com>
To: bug-gnu-emacs <at> gnu.org
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
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


[Message part 3 (message/rfc822, inline)]
From: Eli Zaretskii <eliz <at> gnu.org>
To: Jacob Leeming <jacobtophatleeming <at> gmail.com>
Cc: dmitry <at> gutov.dev, 70345-done <at> debbugs.gnu.org, theo <at> thornhill.no
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 <at> debbugs.gnu.org, Jacob Leeming <jacobtophatleeming <at> gmail.com>
> From: Jacob Leeming <jacobtophatleeming <at> 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.


This bug report was last modified 1 year and 84 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.