emacs-bug-tracker
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#70345: closed ([PATCH] 29.1.50; csharp-ts-mode indentation of if sta


From: GNU bug Tracking System
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

Your message dated Thu, 25 Apr 2024 19:04:14 +0300
with message-id <867cgl1la9.fsf@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@gnu.org.)


-- 
70345: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=70345
GNU Bug Tracking System
Contact help-debbugs@gnu.org with problems
--- 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 ---

reply via email to

[Prev in Thread] Current Thread [Next in Thread]