From b06c5fac14638d8a9e56b2a4cf7311a82e4a5e8c Mon Sep 17 00:00:00 2001 From: Geobert Quach Date: Mon, 30 Sep 2019 19:50:44 +0100 Subject: feat(assists): Be smart about hashes Add max_hashes_streak + 1 hashes to the raw string --- crates/ra_assists/src/assists/raw_string.rs | 37 ++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) (limited to 'crates/ra_assists/src/assists') diff --git a/crates/ra_assists/src/assists/raw_string.rs b/crates/ra_assists/src/assists/raw_string.rs index e57f24e7c..dd8db0b7d 100644 --- a/crates/ra_assists/src/assists/raw_string.rs +++ b/crates/ra_assists/src/assists/raw_string.rs @@ -28,7 +28,25 @@ pub(crate) fn make_raw_string(mut ctx: AssistCtx) -> Option max_hash_streak { + max_hash_streak = acc; + } + 0 + } + }); + let mut hashes = String::with_capacity(max_hash_streak + 1); + for _ in 0..hashes.capacity() { + hashes.push('#'); + } + edit.replace( + literal.syntax().text_range(), + format!("r{}\"{}\"{}", hashes, unescaped, hashes), + ); } }); ctx.build() @@ -136,6 +154,23 @@ string"#; ) } + #[test] + fn make_raw_string_hashes_inside_works() { + check_assist( + make_raw_string, + r###" + fn f() { + let s = <|>"#random##\nstring"; + } + "###, + r####" + fn f() { + let s = <|>r###"#random## +string"###; + } + "####, + ) + } #[test] fn make_raw_string_nothing_to_unescape_works() { check_assist( -- cgit v1.2.3