aboutsummaryrefslogtreecommitdiff
path: root/crates/ide_db/src/line_index.rs
diff options
context:
space:
mode:
authorAleksey Kladov <[email protected]>2021-02-12 18:24:10 +0000
committerAleksey Kladov <[email protected]>2021-02-16 16:17:32 +0000
commit2cb4ac9eb4cb02e7d14ec50a9e7d8e9fe49a4ec1 (patch)
treed70cb9c9c61359ba0b171e3e38267e42bcb00b0b /crates/ide_db/src/line_index.rs
parentcc49502ab47bcd20c90589226282b8f3c3df5190 (diff)
Prepare for utf-8 offsets
Diffstat (limited to 'crates/ide_db/src/line_index.rs')
-rw-r--r--crates/ide_db/src/line_index.rs12
1 files changed, 6 insertions, 6 deletions
diff --git a/crates/ide_db/src/line_index.rs b/crates/ide_db/src/line_index.rs
index 41226305e..490c172e3 100644
--- a/crates/ide_db/src/line_index.rs
+++ b/crates/ide_db/src/line_index.rs
@@ -15,11 +15,11 @@ pub struct LineIndex {
15} 15}
16 16
17#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)] 17#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
18pub struct LineCol { 18pub struct LineColUtf16 {
19 /// Zero-based 19 /// Zero-based
20 pub line: u32, 20 pub line: u32,
21 /// Zero-based 21 /// Zero-based
22 pub col_utf16: u32, 22 pub col: u32,
23} 23}
24 24
25#[derive(Clone, Debug, Hash, PartialEq, Eq)] 25#[derive(Clone, Debug, Hash, PartialEq, Eq)]
@@ -88,17 +88,17 @@ impl LineIndex {
88 LineIndex { newlines, utf16_lines } 88 LineIndex { newlines, utf16_lines }
89 } 89 }
90 90
91 pub fn line_col(&self, offset: TextSize) -> LineCol { 91 pub fn line_col(&self, offset: TextSize) -> LineColUtf16 {
92 let line = partition_point(&self.newlines, |&it| it <= offset) - 1; 92 let line = partition_point(&self.newlines, |&it| it <= offset) - 1;
93 let line_start_offset = self.newlines[line]; 93 let line_start_offset = self.newlines[line];
94 let col = offset - line_start_offset; 94 let col = offset - line_start_offset;
95 95
96 LineCol { line: line as u32, col_utf16: self.utf8_to_utf16_col(line as u32, col) as u32 } 96 LineColUtf16 { line: line as u32, col: self.utf8_to_utf16_col(line as u32, col) as u32 }
97 } 97 }
98 98
99 pub fn offset(&self, line_col: LineCol) -> TextSize { 99 pub fn offset(&self, line_col: LineColUtf16) -> TextSize {
100 //FIXME: return Result 100 //FIXME: return Result
101 let col = self.utf16_to_utf8_col(line_col.line, line_col.col_utf16); 101 let col = self.utf16_to_utf8_col(line_col.line, line_col.col);
102 self.newlines[line_col.line as usize] + col 102 self.newlines[line_col.line as usize] + col
103 } 103 }
104 104