From 05fb6d088e32f81cbe0dbffd0d6ed12ec54405e3 Mon Sep 17 00:00:00 2001 From: Waqar Ahmed Date: Wed, 14 Feb 2024 20:58:29 +0500 Subject: [PATCH] fmt: Improve formatting in codeblocks - No longer inserts extra new lines - multiple statements get formatted correctly --- tools/lsp/fmt/fmt.rs | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/tools/lsp/fmt/fmt.rs b/tools/lsp/fmt/fmt.rs index 7febf8ae5be..e4c7021d115 100644 --- a/tools/lsp/fmt/fmt.rs +++ b/tools/lsp/fmt/fmt.rs @@ -613,13 +613,23 @@ fn format_codeblock( state.indentation_level += 1; state.new_line(); for n in sub { + state.skip_all_whitespace = true; if n.kind() == SyntaxKind::RBrace { state.indentation_level -= 1; state.whitespace_to_add = None; state.new_line(); } + + let is_semicolon = n.kind() == SyntaxKind::Semicolon; + fold(n, writer, state)?; + + if is_semicolon { + state.whitespace_to_add = None; + state.new_line(); + } } + state.skip_all_whitespace = true; Ok(()) } @@ -1160,6 +1170,39 @@ A := B { } } } +"#, + ); + } + + #[test] + fn code_block() { + assert_formatting( + r#" +component ABC { + in-out property logged_in: false; + function clicked() -> bool { + if (logged_in) { + logged_in = false; + return true; + } else { + logged_in = false; return false; + } + } +} +"#, + r#" +component ABC { + in-out property logged_in: false; + function clicked() -> bool{ + if (logged_in) { + logged_in = false; + return true; + } else { + logged_in = false; + return false; + } + } +} "#, ); }