fix: join lines doesn't add space before closing quote
This commit is contained in:
parent
b43921cddd
commit
e0da3da0d9
@ -65,11 +65,15 @@ fn remove_newlines(edit: &mut TextEditBuilder, token: &SyntaxToken, range: TextR
|
||||
|
||||
fn remove_newline(edit: &mut TextEditBuilder, token: &SyntaxToken, offset: TextSize) {
|
||||
if token.kind() != WHITESPACE || token.text().bytes().filter(|&b| b == b'\n').count() != 1 {
|
||||
let mut string_open_quote = false;
|
||||
let mut no_space = false;
|
||||
if let Some(string) = ast::String::cast(token.clone()) {
|
||||
if let Some(range) = string.open_quote_text_range() {
|
||||
cov_mark::hit!(join_string_literal);
|
||||
string_open_quote = range.end() == offset;
|
||||
cov_mark::hit!(join_string_literal_open_quote);
|
||||
no_space |= range.end() == offset;
|
||||
}
|
||||
if let Some(range) = string.close_quote_text_range() {
|
||||
cov_mark::hit!(join_string_literal_close_quote);
|
||||
no_space |= range.start() == offset + TextSize::of('\n');
|
||||
}
|
||||
}
|
||||
|
||||
@ -82,7 +86,7 @@ fn remove_newline(edit: &mut TextEditBuilder, token: &SyntaxToken, offset: TextS
|
||||
};
|
||||
|
||||
let range = TextRange::at(offset, ((n_spaces_after_line_break + 1) as u32).into());
|
||||
let replace_with = if string_open_quote { "" } else { " " };
|
||||
let replace_with = if no_space { "" } else { " " };
|
||||
edit.replace(range, replace_with.to_string());
|
||||
return;
|
||||
}
|
||||
@ -797,22 +801,41 @@ fn foo() {
|
||||
|
||||
#[test]
|
||||
fn join_string_literal() {
|
||||
cov_mark::check!(join_string_literal);
|
||||
check_join_lines(
|
||||
r#"
|
||||
{
|
||||
cov_mark::check!(join_string_literal_open_quote);
|
||||
check_join_lines(
|
||||
r#"
|
||||
fn main() {
|
||||
$0"
|
||||
hello
|
||||
";
|
||||
}
|
||||
"#,
|
||||
r#"
|
||||
r#"
|
||||
fn main() {
|
||||
$0"hello
|
||||
";
|
||||
}
|
||||
"#,
|
||||
);
|
||||
);
|
||||
}
|
||||
|
||||
{
|
||||
cov_mark::check!(join_string_literal_close_quote);
|
||||
check_join_lines(
|
||||
r#"
|
||||
fn main() {
|
||||
$0"hello
|
||||
";
|
||||
}
|
||||
"#,
|
||||
r#"
|
||||
fn main() {
|
||||
$0"hello";
|
||||
}
|
||||
"#,
|
||||
);
|
||||
}
|
||||
|
||||
check_join_lines(
|
||||
r#"
|
||||
|
Loading…
x
Reference in New Issue
Block a user