mirror of
https://github.com/rust-lang/rust.git
synced 2025-06-05 19:58:32 +00:00
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)]
|
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
|
||||||
pub struct LineCol {
|
pub struct LineCol {
|
||||||
pub line: u32,
|
pub line: u32,
|
||||||
pub col: u32,
|
pub col_utf16: u32,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Clone, Debug, Hash, PartialEq, Eq)]
|
#[derive(Clone, Debug, Hash, PartialEq, Eq)]
|
||||||
@ -75,13 +75,13 @@ impl LineIndex {
|
|||||||
|
|
||||||
LineCol {
|
LineCol {
|
||||||
line: line as u32,
|
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 {
|
pub fn offset(&self, line_col: LineCol) -> TextUnit {
|
||||||
//TODO: return Result
|
//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
|
self.newlines[line_col.line as usize] + col
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -126,23 +126,23 @@ impl LineIndex {
|
|||||||
fn test_line_index() {
|
fn test_line_index() {
|
||||||
let text = "hello\nworld";
|
let text = "hello\nworld";
|
||||||
let index = LineIndex::new(text);
|
let index = LineIndex::new(text);
|
||||||
assert_eq!(index.line_col(0.into()), LineCol { line: 0, col: 0 });
|
assert_eq!(index.line_col(0.into()), LineCol { line: 0, col_utf16: 0 });
|
||||||
assert_eq!(index.line_col(1.into()), LineCol { line: 0, col: 1 });
|
assert_eq!(index.line_col(1.into()), LineCol { line: 0, col_utf16: 1 });
|
||||||
assert_eq!(index.line_col(5.into()), LineCol { line: 0, col: 5 });
|
assert_eq!(index.line_col(5.into()), LineCol { line: 0, col_utf16: 5 });
|
||||||
assert_eq!(index.line_col(6.into()), LineCol { line: 1, col: 0 });
|
assert_eq!(index.line_col(6.into()), LineCol { line: 1, col_utf16: 0 });
|
||||||
assert_eq!(index.line_col(7.into()), LineCol { line: 1, col: 1 });
|
assert_eq!(index.line_col(7.into()), LineCol { line: 1, col_utf16: 1 });
|
||||||
assert_eq!(index.line_col(8.into()), LineCol { line: 1, col: 2 });
|
assert_eq!(index.line_col(8.into()), LineCol { line: 1, col_utf16: 2 });
|
||||||
assert_eq!(index.line_col(10.into()), LineCol { line: 1, col: 4 });
|
assert_eq!(index.line_col(10.into()), LineCol { line: 1, col_utf16: 4 });
|
||||||
assert_eq!(index.line_col(11.into()), LineCol { line: 1, col: 5 });
|
assert_eq!(index.line_col(11.into()), LineCol { line: 1, col_utf16: 5 });
|
||||||
assert_eq!(index.line_col(12.into()), LineCol { line: 1, col: 6 });
|
assert_eq!(index.line_col(12.into()), LineCol { line: 1, col_utf16: 6 });
|
||||||
|
|
||||||
let text = "\nhello\nworld";
|
let text = "\nhello\nworld";
|
||||||
let index = LineIndex::new(text);
|
let index = LineIndex::new(text);
|
||||||
assert_eq!(index.line_col(0.into()), LineCol { line: 0, 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: 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: 1 });
|
assert_eq!(index.line_col(2.into()), LineCol { line: 1, col_utf16: 1 });
|
||||||
assert_eq!(index.line_col(6.into()), LineCol { line: 1, col: 5 });
|
assert_eq!(index.line_col(6.into()), LineCol { line: 1, col_utf16: 5 });
|
||||||
assert_eq!(index.line_col(7.into()), LineCol { line: 2, col: 0 });
|
assert_eq!(index.line_col(7.into()), LineCol { line: 2, col_utf16: 0 });
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
|
@ -51,7 +51,7 @@ impl ConvWith for Position {
|
|||||||
fn conv_with(self, line_index: &LineIndex) -> TextUnit {
|
fn conv_with(self, line_index: &LineIndex) -> TextUnit {
|
||||||
let line_col = LineCol {
|
let line_col = LineCol {
|
||||||
line: self.line as u32,
|
line: self.line as u32,
|
||||||
col: (self.character as u32).into(),
|
col_utf16: self.character as u32,
|
||||||
};
|
};
|
||||||
line_index.offset(line_col)
|
line_index.offset(line_col)
|
||||||
}
|
}
|
||||||
@ -63,7 +63,10 @@ impl ConvWith for TextUnit {
|
|||||||
|
|
||||||
fn conv_with(self, line_index: &LineIndex) -> Position {
|
fn conv_with(self, line_index: &LineIndex) -> Position {
|
||||||
let line_col = line_index.line_col(self);
|
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())
|
.map(|it| it.edits.as_slice())
|
||||||
.unwrap_or(&[]);
|
.unwrap_or(&[]);
|
||||||
let line_col = translate_offset_with_edit(&*line_index, pos.offset, edits);
|
let line_col = translate_offset_with_edit(&*line_index, pos.offset, edits);
|
||||||
let position =
|
let position = Position::new(
|
||||||
Position::new(u64::from(line_col.line), u64::from(u32::from(line_col.col)));
|
u64::from(line_col.line),
|
||||||
|
u64::from(u32::from(line_col.col_utf16)),
|
||||||
|
);
|
||||||
Some(TextDocumentPositionParams {
|
Some(TextDocumentPositionParams {
|
||||||
text_document: TextDocumentIdentifier::new(pos.file_id.try_conv_with(world)?),
|
text_document: TextDocumentIdentifier::new(pos.file_id.try_conv_with(world)?),
|
||||||
position,
|
position,
|
||||||
@ -245,12 +250,12 @@ fn translate_offset_with_edit(
|
|||||||
if in_edit_line_col.line == 0 {
|
if in_edit_line_col.line == 0 {
|
||||||
LineCol {
|
LineCol {
|
||||||
line: edit_line_col.line,
|
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 {
|
} else {
|
||||||
LineCol {
|
LineCol {
|
||||||
line: edit_line_col.line + in_edit_line_col.line,
|
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…
Reference in New Issue
Block a user