Rename col to col_utf16
This commit is contained in:
parent
136d1864bc
commit
bccbee5ba3
@ -11,7 +11,7 @@ pub struct LineIndex {
|
||||
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
|
||||
pub struct LineCol {
|
||||
pub line: u32,
|
||||
pub col: u32,
|
||||
pub col_utf16: u32,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, Hash, PartialEq, Eq)]
|
||||
@ -75,13 +75,13 @@ impl LineIndex {
|
||||
|
||||
LineCol {
|
||||
line: line as u32,
|
||||
col: self.utf8_to_utf16_col(line as u32, col) as u32,
|
||||
col_utf16: self.utf8_to_utf16_col(line as u32, col) as u32,
|
||||
}
|
||||
}
|
||||
|
||||
pub fn offset(&self, line_col: LineCol) -> TextUnit {
|
||||
//TODO: return Result
|
||||
let col = self.utf16_to_utf8_col(line_col.line, line_col.col);
|
||||
let col = self.utf16_to_utf8_col(line_col.line, line_col.col_utf16);
|
||||
self.newlines[line_col.line as usize] + col
|
||||
}
|
||||
|
||||
@ -126,23 +126,23 @@ impl LineIndex {
|
||||
fn test_line_index() {
|
||||
let text = "hello\nworld";
|
||||
let index = LineIndex::new(text);
|
||||
assert_eq!(index.line_col(0.into()), LineCol { line: 0, col: 0 });
|
||||
assert_eq!(index.line_col(1.into()), LineCol { line: 0, col: 1 });
|
||||
assert_eq!(index.line_col(5.into()), LineCol { line: 0, col: 5 });
|
||||
assert_eq!(index.line_col(6.into()), LineCol { line: 1, col: 0 });
|
||||
assert_eq!(index.line_col(7.into()), LineCol { line: 1, col: 1 });
|
||||
assert_eq!(index.line_col(8.into()), LineCol { line: 1, col: 2 });
|
||||
assert_eq!(index.line_col(10.into()), LineCol { line: 1, col: 4 });
|
||||
assert_eq!(index.line_col(11.into()), LineCol { line: 1, col: 5 });
|
||||
assert_eq!(index.line_col(12.into()), LineCol { line: 1, col: 6 });
|
||||
assert_eq!(index.line_col(0.into()), LineCol { line: 0, col_utf16: 0 });
|
||||
assert_eq!(index.line_col(1.into()), LineCol { line: 0, col_utf16: 1 });
|
||||
assert_eq!(index.line_col(5.into()), LineCol { line: 0, col_utf16: 5 });
|
||||
assert_eq!(index.line_col(6.into()), LineCol { line: 1, col_utf16: 0 });
|
||||
assert_eq!(index.line_col(7.into()), LineCol { line: 1, col_utf16: 1 });
|
||||
assert_eq!(index.line_col(8.into()), LineCol { line: 1, col_utf16: 2 });
|
||||
assert_eq!(index.line_col(10.into()), LineCol { line: 1, col_utf16: 4 });
|
||||
assert_eq!(index.line_col(11.into()), LineCol { line: 1, col_utf16: 5 });
|
||||
assert_eq!(index.line_col(12.into()), LineCol { line: 1, col_utf16: 6 });
|
||||
|
||||
let text = "\nhello\nworld";
|
||||
let index = LineIndex::new(text);
|
||||
assert_eq!(index.line_col(0.into()), LineCol { line: 0, col: 0 });
|
||||
assert_eq!(index.line_col(1.into()), LineCol { line: 1, col: 0 });
|
||||
assert_eq!(index.line_col(2.into()), LineCol { line: 1, col: 1 });
|
||||
assert_eq!(index.line_col(6.into()), LineCol { line: 1, col: 5 });
|
||||
assert_eq!(index.line_col(7.into()), LineCol { line: 2, col: 0 });
|
||||
assert_eq!(index.line_col(0.into()), LineCol { line: 0, col_utf16: 0 });
|
||||
assert_eq!(index.line_col(1.into()), LineCol { line: 1, col_utf16: 0 });
|
||||
assert_eq!(index.line_col(2.into()), LineCol { line: 1, col_utf16: 1 });
|
||||
assert_eq!(index.line_col(6.into()), LineCol { line: 1, col_utf16: 5 });
|
||||
assert_eq!(index.line_col(7.into()), LineCol { line: 2, col_utf16: 0 });
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
|
@ -51,7 +51,7 @@ impl ConvWith for Position {
|
||||
fn conv_with(self, line_index: &LineIndex) -> TextUnit {
|
||||
let line_col = LineCol {
|
||||
line: self.line as u32,
|
||||
col: (self.character as u32).into(),
|
||||
col_utf16: self.character as u32,
|
||||
};
|
||||
line_index.offset(line_col)
|
||||
}
|
||||
@ -63,7 +63,10 @@ impl ConvWith for TextUnit {
|
||||
|
||||
fn conv_with(self, line_index: &LineIndex) -> Position {
|
||||
let line_col = line_index.line_col(self);
|
||||
Position::new(u64::from(line_col.line), u64::from(u32::from(line_col.col)))
|
||||
Position::new(
|
||||
u64::from(line_col.line),
|
||||
u64::from(u32::from(line_col.col_utf16)),
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@ -201,8 +204,10 @@ impl TryConvWith for SourceChange {
|
||||
.map(|it| it.edits.as_slice())
|
||||
.unwrap_or(&[]);
|
||||
let line_col = translate_offset_with_edit(&*line_index, pos.offset, edits);
|
||||
let position =
|
||||
Position::new(u64::from(line_col.line), u64::from(u32::from(line_col.col)));
|
||||
let position = Position::new(
|
||||
u64::from(line_col.line),
|
||||
u64::from(u32::from(line_col.col_utf16)),
|
||||
);
|
||||
Some(TextDocumentPositionParams {
|
||||
text_document: TextDocumentIdentifier::new(pos.file_id.try_conv_with(world)?),
|
||||
position,
|
||||
@ -245,12 +250,12 @@ fn translate_offset_with_edit(
|
||||
if in_edit_line_col.line == 0 {
|
||||
LineCol {
|
||||
line: edit_line_col.line,
|
||||
col: edit_line_col.col + in_edit_line_col.col,
|
||||
col_utf16: edit_line_col.col_utf16 + in_edit_line_col.col_utf16,
|
||||
}
|
||||
} else {
|
||||
LineCol {
|
||||
line: edit_line_col.line + in_edit_line_col.line,
|
||||
col: in_edit_line_col.col,
|
||||
col_utf16: in_edit_line_col.col_utf16,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user