pub struct SourceContent { /* private fields */ }Expand description
Represents key information about a source file and its content:
- The path to the file (or its name, in the case of virtual files)
- The content of the file
- The byte offsets of every line in the file, for use in looking up line/column information
Implementations§
Source§impl SourceContent
impl SourceContent
Sourcepub fn new(
language: impl AsRef<str>,
uri: impl Into<Uri>,
content: impl Into<String>,
) -> SourceContent
pub fn new( language: impl AsRef<str>, uri: impl Into<Uri>, content: impl Into<String>, ) -> SourceContent
Create a new SourceContent from the (possibly virtual) file path, and its content as a UTF-8 string.
When created, the line starts for this file will be computed, which requires scanning the file content once.
Sourcepub fn set_version(&mut self, version: i32)
pub fn set_version(&mut self, version: i32)
Set the current version of this content
Sourcepub fn source_range(&self) -> Range<ByteIndex>
pub fn source_range(&self) -> Range<ByteIndex>
Returns the range of valid byte indices for this file
Sourcepub fn source_slice(&self, span: impl Into<Range<usize>>) -> Option<&str>
pub fn source_slice(&self, span: impl Into<Range<usize>>) -> Option<&str>
Returns a subset of the underlying content as a string slice.
The bounds of the given span are byte indices, not character indices.
Returns None if the given span is out of bounds, or if the bounds do not
fall on valid UTF-8 character boundaries.
Sourcepub fn byte_slice(&self, span: impl Into<Range<ByteIndex>>) -> Option<&[u8]>
pub fn byte_slice(&self, span: impl Into<Range<ByteIndex>>) -> Option<&[u8]>
Returns a subset of the underlying content as a byte slice.
Returns None if the given span is out of bounds
Sourcepub fn select(&self, range: Selection) -> Option<&str>
pub fn select(&self, range: Selection) -> Option<&str>
Like Self::source_slice, but the slice is computed like a selection in an editor, i.e. based on line/column positions, rather than raw character indices.
This is useful when mapping LSP operations to content in the source file.
Sourcepub fn line_count(&self) -> usize
pub fn line_count(&self) -> usize
Returns the number of lines in the source content
Sourcepub fn line_start(&self, line_index: LineIndex) -> Option<ByteIndex>
pub fn line_start(&self, line_index: LineIndex) -> Option<ByteIndex>
Returns the byte index at which the line corresponding to line_index starts
Returns None if the given index is out of bounds
Sourcepub fn last_line_index(&self) -> LineIndex
pub fn last_line_index(&self) -> LineIndex
Returns the index of the last line in this file
Sourcepub fn line_range(&self, line_index: LineIndex) -> Option<Range<ByteIndex>>
pub fn line_range(&self, line_index: LineIndex) -> Option<Range<ByteIndex>>
Get the range of byte indices covered by the given line
Sourcepub fn line_index(&self, byte_index: ByteIndex) -> LineIndex
pub fn line_index(&self, byte_index: ByteIndex) -> LineIndex
Get the index of the line to which byte_index belongs
Sourcepub fn line_column_to_offset(
&self,
line_index: LineIndex,
column_index: ColumnIndex,
) -> Option<ByteIndex>
pub fn line_column_to_offset( &self, line_index: LineIndex, column_index: ColumnIndex, ) -> Option<ByteIndex>
Get the ByteIndex corresponding to the given line and column indices.
Returns None if the line or column indices are out of bounds.
Sourcepub fn location(&self, byte_index: ByteIndex) -> Option<FileLineCol>
pub fn location(&self, byte_index: ByteIndex) -> Option<FileLineCol>
Get a FileLineCol corresponding to the line/column in this file at which byte_index
occurs
Sourcepub fn update(
&mut self,
text: String,
range: Option<Selection>,
version: i32,
) -> Result<(), SourceContentUpdateError>
pub fn update( &mut self, text: String, range: Option<Selection>, version: i32, ) -> Result<(), SourceContentUpdateError>
Update the source document after being notified of a change event.
The version indicates the new version of the document
NOTE: This is intended to update a super::SourceManager’s view of the content of the document, not to perform an update against the actual file, wherever it may be.
Trait Implementations§
Source§impl Clone for SourceContent
impl Clone for SourceContent
Source§fn clone(&self) -> SourceContent
fn clone(&self) -> SourceContent
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for SourceContent
impl Debug for SourceContent
Source§impl<'de> Deserialize<'de> for SourceContent
impl<'de> Deserialize<'de> for SourceContent
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<SourceContent, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<SourceContent, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
Source§impl Hash for SourceContent
impl Hash for SourceContent
Source§impl Ord for SourceContent
impl Ord for SourceContent
Source§fn cmp(&self, other: &SourceContent) -> Ordering
fn cmp(&self, other: &SourceContent) -> Ordering
1.21.0 · Source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
Source§impl PartialEq for SourceContent
impl PartialEq for SourceContent
Source§impl PartialOrd for SourceContent
impl PartialOrd for SourceContent
Source§impl Serialize for SourceContent
impl Serialize for SourceContent
Source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
impl Eq for SourceContent
Auto Trait Implementations§
impl Freeze for SourceContent
impl RefUnwindSafe for SourceContent
impl Send for SourceContent
impl Sync for SourceContent
impl Unpin for SourceContent
impl UnwindSafe for SourceContent
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<D> OwoColorize for D
impl<D> OwoColorize for D
Source§fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
Source§fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
Source§fn black(&self) -> FgColorDisplay<'_, Black, Self>
fn black(&self) -> FgColorDisplay<'_, Black, Self>
Source§fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
Source§fn red(&self) -> FgColorDisplay<'_, Red, Self>
fn red(&self) -> FgColorDisplay<'_, Red, Self>
Source§fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
Source§fn green(&self) -> FgColorDisplay<'_, Green, Self>
fn green(&self) -> FgColorDisplay<'_, Green, Self>
Source§fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
Source§fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
Source§fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
Source§fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
Source§fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
Source§fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
Source§fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
Source§fn white(&self) -> FgColorDisplay<'_, White, Self>
fn white(&self) -> FgColorDisplay<'_, White, Self>
Source§fn on_white(&self) -> BgColorDisplay<'_, White, Self>
fn on_white(&self) -> BgColorDisplay<'_, White, Self>
Source§fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
Source§fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
Source§fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
Source§fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
Source§fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
Source§fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
Source§fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
Source§fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
Source§fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
Source§fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
Source§fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
Source§fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
Source§fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
Source§fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
Source§fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
Source§fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
Source§fn bold(&self) -> BoldDisplay<'_, Self>
fn bold(&self) -> BoldDisplay<'_, Self>
Source§fn dimmed(&self) -> DimDisplay<'_, Self>
fn dimmed(&self) -> DimDisplay<'_, Self>
Source§fn italic(&self) -> ItalicDisplay<'_, Self>
fn italic(&self) -> ItalicDisplay<'_, Self>
Source§fn underline(&self) -> UnderlineDisplay<'_, Self>
fn underline(&self) -> UnderlineDisplay<'_, Self>
Source§fn blink(&self) -> BlinkDisplay<'_, Self>
fn blink(&self) -> BlinkDisplay<'_, Self>
Source§fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
Source§fn reversed(&self) -> ReversedDisplay<'_, Self>
fn reversed(&self) -> ReversedDisplay<'_, Self>
Source§fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
Source§fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::fg or
a color-specific method, such as OwoColorize::green, Read moreSource§fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::bg or
a color-specific method, such as OwoColorize::on_yellow, Read more