editor: Fix block comment with same prefix as line comment incorrectly extending on new line (#34156)
Closes #33930 Release Notes: - Fixed `--[[` incorrectly extending `--` upon a new line in Lua.
This commit is contained in:
parent
16d02cfdb3
commit
66dda8e368
2 changed files with 56 additions and 1 deletions
|
@ -4381,7 +4381,7 @@ impl Editor {
|
||||||
.take_while(|c| c.is_whitespace())
|
.take_while(|c| c.is_whitespace())
|
||||||
.count();
|
.count();
|
||||||
let comment_candidate = snapshot
|
let comment_candidate = snapshot
|
||||||
.chars_for_range(range)
|
.chars_for_range(range.clone())
|
||||||
.skip(num_of_whitespaces)
|
.skip(num_of_whitespaces)
|
||||||
.take(max_len_of_delimiter)
|
.take(max_len_of_delimiter)
|
||||||
.collect::<String>();
|
.collect::<String>();
|
||||||
|
@ -4397,6 +4397,22 @@ impl Editor {
|
||||||
})
|
})
|
||||||
.max_by_key(|(_, len)| *len)?;
|
.max_by_key(|(_, len)| *len)?;
|
||||||
|
|
||||||
|
if let Some((block_start, _)) = language.block_comment_delimiters()
|
||||||
|
{
|
||||||
|
let block_start_trimmed = block_start.trim_end();
|
||||||
|
if block_start_trimmed.starts_with(delimiter.trim_end()) {
|
||||||
|
let line_content = snapshot
|
||||||
|
.chars_for_range(range)
|
||||||
|
.skip(num_of_whitespaces)
|
||||||
|
.take(block_start_trimmed.len())
|
||||||
|
.collect::<String>();
|
||||||
|
|
||||||
|
if line_content.starts_with(block_start_trimmed) {
|
||||||
|
return None;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
let cursor_is_placed_after_comment_marker =
|
let cursor_is_placed_after_comment_marker =
|
||||||
num_of_whitespaces + trimmed_len <= start_point.column as usize;
|
num_of_whitespaces + trimmed_len <= start_point.column as usize;
|
||||||
if cursor_is_placed_after_comment_marker {
|
if cursor_is_placed_after_comment_marker {
|
||||||
|
|
|
@ -3080,6 +3080,45 @@ async fn test_newline_documentation_comments(cx: &mut TestAppContext) {
|
||||||
"});
|
"});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[gpui::test]
|
||||||
|
async fn test_newline_comments_with_block_comment(cx: &mut TestAppContext) {
|
||||||
|
init_test(cx, |settings| {
|
||||||
|
settings.defaults.tab_size = NonZeroU32::new(4)
|
||||||
|
});
|
||||||
|
|
||||||
|
let lua_language = Arc::new(Language::new(
|
||||||
|
LanguageConfig {
|
||||||
|
line_comments: vec!["--".into()],
|
||||||
|
block_comment: Some(("--[[".into(), "]]".into())),
|
||||||
|
..LanguageConfig::default()
|
||||||
|
},
|
||||||
|
None,
|
||||||
|
));
|
||||||
|
|
||||||
|
let mut cx = EditorTestContext::new(cx).await;
|
||||||
|
cx.update_buffer(|buffer, cx| buffer.set_language(Some(lua_language), cx));
|
||||||
|
|
||||||
|
// Line with line comment should extend
|
||||||
|
cx.set_state(indoc! {"
|
||||||
|
--ˇ
|
||||||
|
"});
|
||||||
|
cx.update_editor(|e, window, cx| e.newline(&Newline, window, cx));
|
||||||
|
cx.assert_editor_state(indoc! {"
|
||||||
|
--
|
||||||
|
--ˇ
|
||||||
|
"});
|
||||||
|
|
||||||
|
// Line with block comment that matches line comment should not extend
|
||||||
|
cx.set_state(indoc! {"
|
||||||
|
--[[ˇ
|
||||||
|
"});
|
||||||
|
cx.update_editor(|e, window, cx| e.newline(&Newline, window, cx));
|
||||||
|
cx.assert_editor_state(indoc! {"
|
||||||
|
--[[
|
||||||
|
ˇ
|
||||||
|
"});
|
||||||
|
}
|
||||||
|
|
||||||
#[gpui::test]
|
#[gpui::test]
|
||||||
fn test_insert_with_old_selections(cx: &mut TestAppContext) {
|
fn test_insert_with_old_selections(cx: &mut TestAppContext) {
|
||||||
init_test(cx, |_| {});
|
init_test(cx, |_| {});
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue