Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide/src/syntax_highlighting/escape.rs')
-rw-r--r--crates/ide/src/syntax_highlighting/escape.rs21
1 files changed, 12 insertions, 9 deletions
diff --git a/crates/ide/src/syntax_highlighting/escape.rs b/crates/ide/src/syntax_highlighting/escape.rs
index 552ce9cd8c..094f88f3a8 100644
--- a/crates/ide/src/syntax_highlighting/escape.rs
+++ b/crates/ide/src/syntax_highlighting/escape.rs
@@ -4,12 +4,9 @@ use crate::{HlRange, HlTag};
use syntax::ast::{Byte, Char, IsString};
use syntax::{AstToken, TextRange, TextSize};
-pub(super) fn highlight_escape_string<T: IsString>(
- stack: &mut Highlights,
- string: &T,
- start: TextSize,
-) {
+pub(super) fn highlight_escape_string<T: IsString>(stack: &mut Highlights, string: &T) {
let text = string.text();
+ let start = string.syntax().text_range().start();
string.escaped_char_ranges(&mut |piece_range, char| {
if text[piece_range.start().into()..].starts_with('\\') {
let highlight = match char {
@@ -25,7 +22,7 @@ pub(super) fn highlight_escape_string<T: IsString>(
});
}
-pub(super) fn highlight_escape_char(stack: &mut Highlights, char: &Char, start: TextSize) {
+pub(super) fn highlight_escape_char(stack: &mut Highlights, char: &Char) {
if char.value().is_err() {
// We do not emit invalid escapes highlighting here. The lexer would likely be in a bad
// state and this token contains junk, since `'` is not a reliable delimiter (consider
@@ -42,11 +39,14 @@ pub(super) fn highlight_escape_char(stack: &mut Highlights, char: &Char, start:
return;
};
- let range = TextRange::at(start + TextSize::from(1), TextSize::from(text.len() as u32));
+ let range = TextRange::at(
+ char.syntax().text_range().start() + TextSize::from(1),
+ TextSize::from(text.len() as u32),
+ );
stack.add(HlRange { range, highlight: HlTag::EscapeSequence.into(), binding_hash: None })
}
-pub(super) fn highlight_escape_byte(stack: &mut Highlights, byte: &Byte, start: TextSize) {
+pub(super) fn highlight_escape_byte(stack: &mut Highlights, byte: &Byte) {
if byte.value().is_err() {
// See `highlight_escape_char` for why no error highlighting here.
return;
@@ -61,6 +61,9 @@ pub(super) fn highlight_escape_byte(stack: &mut Highlights, byte: &Byte, start:
return;
};
- let range = TextRange::at(start + TextSize::from(2), TextSize::from(text.len() as u32));
+ let range = TextRange::at(
+ byte.syntax().text_range().start() + TextSize::from(2),
+ TextSize::from(text.len() as u32),
+ );
stack.add(HlRange { range, highlight: HlTag::EscapeSequence.into(), binding_hash: None })
}