// r#"Hello, World!"#;
// }
// ```
-pub(crate) fn make_raw_string(mut ctx: AssistCtx<impl HirDatabase>) -> Option<Assist> {
+pub(crate) fn make_raw_string(ctx: AssistCtx<impl HirDatabase>) -> Option<Assist> {
let token = ctx.find_token_at_offset(STRING)?;
let text = token.text().as_str();
let usual_string_range = find_usual_string_range(text)?;
if error.is_err() {
return None;
}
- ctx.add_action(AssistId("make_raw_string"), "make raw string", |edit| {
+ ctx.add_assist(AssistId("make_raw_string"), "make raw string", |edit| {
edit.target(token.text_range());
let max_hash_streak = count_hashes(&unescaped);
let mut hashes = String::with_capacity(max_hash_streak + 1);
hashes.push('#');
}
edit.replace(token.text_range(), format!("r{}\"{}\"{}", hashes, unescaped, hashes));
- });
- ctx.build()
+ })
}
// Assist: make_usual_string
// "Hello, \"World!\"";
// }
// ```
-pub(crate) fn make_usual_string(mut ctx: AssistCtx<impl HirDatabase>) -> Option<Assist> {
+pub(crate) fn make_usual_string(ctx: AssistCtx<impl HirDatabase>) -> Option<Assist> {
let token = ctx.find_token_at_offset(RAW_STRING)?;
let text = token.text().as_str();
let usual_string_range = find_usual_string_range(text)?;
- ctx.add_action(AssistId("make_usual_string"), "make usual string", |edit| {
+ ctx.add_assist(AssistId("make_usual_string"), "make usual string", |edit| {
edit.target(token.text_range());
// parse inside string to escape `"`
let start_of_inside = usual_string_range.start().to_usize() + 1;
let inside_str = &text[start_of_inside..end_of_inside];
let escaped = inside_str.escape_default().to_string();
edit.replace(token.text_range(), format!("\"{}\"", escaped));
- });
- ctx.build()
+ })
}
// Assist: add_hash
// r##"Hello, World!"##;
// }
// ```
-pub(crate) fn add_hash(mut ctx: AssistCtx<impl HirDatabase>) -> Option<Assist> {
+pub(crate) fn add_hash(ctx: AssistCtx<impl HirDatabase>) -> Option<Assist> {
let token = ctx.find_token_at_offset(RAW_STRING)?;
- ctx.add_action(AssistId("add_hash"), "add hash to raw string", |edit| {
+ ctx.add_assist(AssistId("add_hash"), "add hash to raw string", |edit| {
edit.target(token.text_range());
edit.insert(token.text_range().start() + TextUnit::of_char('r'), "#");
edit.insert(token.text_range().end(), "#");
- });
- ctx.build()
+ })
}
// Assist: remove_hash
// r"Hello, World!";
// }
// ```
-pub(crate) fn remove_hash(mut ctx: AssistCtx<impl HirDatabase>) -> Option<Assist> {
+pub(crate) fn remove_hash(ctx: AssistCtx<impl HirDatabase>) -> Option<Assist> {
let token = ctx.find_token_at_offset(RAW_STRING)?;
let text = token.text().as_str();
if text.starts_with("r\"") {
// no hash to remove
return None;
}
- ctx.add_action(AssistId("remove_hash"), "remove hash from raw string", |edit| {
+ ctx.add_assist(AssistId("remove_hash"), "remove hash from raw string", |edit| {
edit.target(token.text_range());
let result = &text[2..text.len() - 1];
let result = if result.starts_with("\"") {
result.to_owned()
};
edit.replace(token.text_range(), format!("r{}", result));
- });
- ctx.build()
+ })
}
fn count_hashes(s: &str) -> usize {