Struct zed2::languages::Buffer

source ·
pub struct Buffer { /* private fields */ }

Implementations§

source§

impl Buffer

source

pub fn new<T>(replica_id: u16, id: u64, base_text: T) -> Bufferwhere T: Into<String>,

source

pub fn remote(remote_id: u64, replica_id: u16, base_text: String) -> Buffer

source

pub fn from_proto( replica_id: u16, message: BufferState, file: Option<Arc<dyn File, Global>> ) -> Result<Buffer, Error>

source

pub fn to_proto(&self) -> BufferState

source

pub fn serialize_ops( &self, since: Option<Global>, cx: &AppContext ) -> Task<Vec<Operation, Global>>

source

pub fn with_language( self, language: Arc<Language, Global>, cx: &mut ModelContext<'_, Buffer> ) -> Buffer

source

pub fn build( buffer: Buffer, diff_base: Option<String>, file: Option<Arc<dyn File, Global>> ) -> Buffer

source

pub fn snapshot(&self) -> BufferSnapshot

source

pub fn as_text_snapshot(&self) -> &BufferSnapshot

source

pub fn text_snapshot(&self) -> BufferSnapshot

source

pub fn file(&self) -> Option<&Arc<dyn File, Global>>

source

pub fn saved_version(&self) -> &Global

source

pub fn saved_version_fingerprint(&self) -> HashMatrix

source

pub fn saved_mtime(&self) -> SystemTime

source

pub fn set_language( &mut self, language: Option<Arc<Language, Global>>, cx: &mut ModelContext<'_, Buffer> )

source

pub fn set_language_registry( &mut self, language_registry: Arc<LanguageRegistry, Global> )

source

pub fn did_save( &mut self, version: Global, fingerprint: HashMatrix, mtime: SystemTime, cx: &mut ModelContext<'_, Buffer> )

source

pub fn reload( &mut self, cx: &mut ModelContext<'_, Buffer> ) -> Receiver<Option<Transaction>>

source

pub fn did_reload( &mut self, version: Global, fingerprint: HashMatrix, line_ending: LineEnding, mtime: SystemTime, cx: &mut ModelContext<'_, Buffer> )

source

pub fn file_updated( &mut self, new_file: Arc<dyn File, Global>, cx: &mut ModelContext<'_, Buffer> )

source

pub fn diff_base(&self) -> Option<&str>

source

pub fn set_diff_base( &mut self, diff_base: Option<String>, cx: &mut ModelContext<'_, Buffer> )

source

pub fn git_diff_recalc( &mut self, cx: &mut ModelContext<'_, Buffer> ) -> Option<Task<()>>

source

pub fn close(&mut self, cx: &mut ModelContext<'_, Buffer>)

source

pub fn language(&self) -> Option<&Arc<Language, Global>>

source

pub fn language_at<D>(&self, position: D) -> Option<Arc<Language, Global>>where D: ToOffset,

source

pub fn parse_count(&self) -> usize

source

pub fn selections_update_count(&self) -> usize

source

pub fn diagnostics_update_count(&self) -> usize

source

pub fn file_update_count(&self) -> usize

source

pub fn git_diff_update_count(&self) -> usize

source

pub fn contains_unknown_injections(&self) -> bool

source

pub fn reparse(&mut self, cx: &mut ModelContext<'_, Buffer>)

Called after an edit to synchronize the buffer’s main parse tree with the buffer’s new underlying state.

Locks the syntax map and interpolates the edits since the last reparse into the foreground syntax tree.

Then takes a stable snapshot of the syntax map before unlocking it. The snapshot with the interpolated edits is sent to a background thread, where we ask Tree-sitter to perform an incremental parse.

Meanwhile, in the foreground, we block the main thread for up to 1ms waiting on the parse to complete. As soon as it completes, we proceed synchronously, unless a 1ms timeout elapses.

If we time out waiting on the parse, we spawn a second task waiting until the parse does complete and return with the interpolated tree still in the foreground. When the background parse completes, call back into the main thread and assign the foreground parse state.

If the buffer or grammar changed since the start of the background parse, initiate an additional reparse recursively. To avoid concurrent parses for the same buffer, we only initiate a new parse if we are not already parsing in the background.

source

pub fn update_diagnostics( &mut self, server_id: LanguageServerId, diagnostics: DiagnosticSet, cx: &mut ModelContext<'_, Buffer> )

source

pub fn edit_for_indent_size_adjustment( row: u32, current_size: IndentSize, new_size: IndentSize ) -> Option<(Range<Point>, String)>

source

pub fn diff(&self, new_text: String, cx: &AppContext) -> Task<Diff>

source

pub fn remove_trailing_whitespace(&self, cx: &AppContext) -> Task<Diff>

Spawn a background task that searches the buffer for any whitespace at the ends of a lines, and returns a Diff that removes that whitespace.

source

pub fn ensure_final_newline(&mut self, cx: &mut ModelContext<'_, Buffer>)

Ensure that the buffer ends with a single newline character, and no other whitespace.

source

pub fn apply_diff( &mut self, diff: Diff, cx: &mut ModelContext<'_, Buffer> ) -> Option<Lamport>

Apply a diff to the buffer. If the buffer has changed since the given diff was calculated, then adjust the diff to account for those changes, and discard any parts of the diff that conflict with those changes.

source

pub fn is_dirty(&self) -> bool

source

pub fn has_conflict(&self) -> bool

source

pub fn subscribe(&mut self) -> Subscription

source

pub fn start_transaction(&mut self) -> Option<Lamport>

source

pub fn start_transaction_at(&mut self, now: Instant) -> Option<Lamport>

source

pub fn end_transaction( &mut self, cx: &mut ModelContext<'_, Buffer> ) -> Option<Lamport>

source

pub fn end_transaction_at( &mut self, now: Instant, cx: &mut ModelContext<'_, Buffer> ) -> Option<Lamport>

source

pub fn push_transaction(&mut self, transaction: Transaction, now: Instant)

source

pub fn finalize_last_transaction(&mut self) -> Option<&Transaction>

source

pub fn group_until_transaction(&mut self, transaction_id: Lamport)

source

pub fn forget_transaction(&mut self, transaction_id: Lamport)

source

pub fn merge_transactions(&mut self, transaction: Lamport, destination: Lamport)

source

pub fn wait_for_edits( &mut self, edit_ids: impl IntoIterator<Item = Lamport> ) -> impl Future<Output = Result<(), Error>>

source

pub fn wait_for_anchors( &mut self, anchors: impl IntoIterator<Item = Anchor> ) -> impl Future<Output = Result<(), Error>> + 'static

source

pub fn wait_for_version( &mut self, version: Global ) -> impl Future<Output = Result<(), Error>>

source

pub fn give_up_waiting(&mut self)

source

pub fn set_active_selections( &mut self, selections: Arc<[Selection<Anchor>], Global>, line_mode: bool, cursor_shape: CursorShape, cx: &mut ModelContext<'_, Buffer> )

source

pub fn remove_active_selections(&mut self, cx: &mut ModelContext<'_, Buffer>)

source

pub fn set_text<T>( &mut self, text: T, cx: &mut ModelContext<'_, Buffer> ) -> Option<Lamport>where T: Into<Arc<str, Global>>,

source

pub fn edit<I, S, T>( &mut self, edits_iter: I, autoindent_mode: Option<AutoindentMode>, cx: &mut ModelContext<'_, Buffer> ) -> Option<Lamport>where I: IntoIterator<Item = (Range<S>, T)>, S: ToOffset, T: Into<Arc<str, Global>>,

source

pub fn apply_ops<I>( &mut self, ops: I, cx: &mut ModelContext<'_, Buffer> ) -> Result<(), Error>where I: IntoIterator<Item = Operation>,

source

pub fn remove_peer( &mut self, replica_id: u16, cx: &mut ModelContext<'_, Buffer> )

source

pub fn undo(&mut self, cx: &mut ModelContext<'_, Buffer>) -> Option<Lamport>

source

pub fn undo_transaction( &mut self, transaction_id: Lamport, cx: &mut ModelContext<'_, Buffer> ) -> bool

source

pub fn undo_to_transaction( &mut self, transaction_id: Lamport, cx: &mut ModelContext<'_, Buffer> ) -> bool

source

pub fn redo(&mut self, cx: &mut ModelContext<'_, Buffer>) -> Option<Lamport>

source

pub fn redo_to_transaction( &mut self, transaction_id: Lamport, cx: &mut ModelContext<'_, Buffer> ) -> bool

source

pub fn set_completion_triggers( &mut self, triggers: Vec<String, Global>, cx: &mut ModelContext<'_, Buffer> )

source

pub fn completion_triggers(&self) -> &[String]

Methods from Deref<Target = Buffer>§

source

pub fn version(&self) -> Global

source

pub fn snapshot(&self) -> BufferSnapshot

source

pub fn replica_id(&self) -> u16

source

pub fn remote_id(&self) -> u64

source

pub fn deferred_ops_len(&self) -> usize

source

pub fn transaction_group_interval(&self) -> Duration

source

pub fn peek_undo_stack(&self) -> Option<&HistoryEntry>

source

pub fn peek_redo_stack(&self) -> Option<&HistoryEntry>

source

pub fn base_text(&self) -> &Rope

source

pub fn operations(&self) -> &TreeMap<Lamport, Operation>

source

pub fn edited_ranges_for_transaction<D, 'a>( &'a self, transaction: &'a Transaction ) -> impl Iterator<Item = Range<D>> + 'awhere D: TextDimension,

Methods from Deref<Target = BufferSnapshot>§

source

pub fn as_rope(&self) -> &Rope

source

pub fn remote_id(&self) -> u64

source

pub fn replica_id(&self) -> u16

source

pub fn row_count(&self) -> u32

source

pub fn len(&self) -> usize

source

pub fn is_empty(&self) -> bool

source

pub fn chars(&self) -> impl Iterator<Item = char>

source

pub fn chars_for_range<T>(&self, range: Range<T>) -> impl Iterator<Item = char>where T: ToOffset,

source

pub fn reversed_chars_for_range<T>( &self, range: Range<T> ) -> impl Iterator<Item = char>where T: ToOffset,

source

pub fn contains_str_at<T>(&self, position: T, needle: &str) -> boolwhere T: ToOffset,

source

pub fn common_prefix_at<T>(&self, position: T, needle: &str) -> Range<T>where T: ToOffset + TextDimension,

source

pub fn text(&self) -> String

source

pub fn line_ending(&self) -> LineEnding

source

pub fn deleted_text(&self) -> String

source

pub fn fragments(&self) -> impl Iterator<Item = &Fragment>

source

pub fn text_summary(&self) -> TextSummary

source

pub fn max_point(&self) -> Point

source

pub fn max_point_utf16(&self) -> PointUtf16

source

pub fn point_to_offset(&self, point: Point) -> usize

source

pub fn point_utf16_to_offset(&self, point: PointUtf16) -> usize

source

pub fn unclipped_point_utf16_to_offset( &self, point: Unclipped<PointUtf16> ) -> usize

source

pub fn unclipped_point_utf16_to_point( &self, point: Unclipped<PointUtf16> ) -> Point

source

pub fn offset_utf16_to_offset(&self, offset: OffsetUtf16) -> usize

source

pub fn offset_to_offset_utf16(&self, offset: usize) -> OffsetUtf16

source

pub fn offset_to_point(&self, offset: usize) -> Point

source

pub fn offset_to_point_utf16(&self, offset: usize) -> PointUtf16

source

pub fn point_to_point_utf16(&self, point: Point) -> PointUtf16

source

pub fn version(&self) -> &Global

source

pub fn chars_at<T>(&self, position: T) -> impl Iterator<Item = char>where T: ToOffset,

source

pub fn reversed_chars_at<T>(&self, position: T) -> impl Iterator<Item = char>where T: ToOffset,

source

pub fn reversed_chunks_in_range<T>(&self, range: Range<T>) -> Chunks<'_> where T: ToOffset,

source

pub fn bytes_in_range<T>(&self, range: Range<T>) -> Bytes<'_> where T: ToOffset,

source

pub fn reversed_bytes_in_range<T>(&self, range: Range<T>) -> Bytes<'_> where T: ToOffset,

source

pub fn text_for_range<T>(&self, range: Range<T>) -> Chunks<'_> where T: ToOffset,

source

pub fn line_len(&self, row: u32) -> u32

source

pub fn is_line_blank(&self, row: u32) -> bool

source

pub fn text_summary_for_range<D, O>(&self, range: Range<O>) -> Dwhere O: ToOffset, D: TextDimension,

source

pub fn summaries_for_anchors<'a, D, A>( &'a self, anchors: A ) -> impl Iterator<Item = D> + 'awhere D: 'a + TextDimension, A: 'a + IntoIterator<Item = &'a Anchor>,

source

pub fn summaries_for_anchors_with_payload<'a, D, A, T>( &'a self, anchors: A ) -> impl Iterator<Item = (D, T)> + 'awhere D: 'a + TextDimension, A: 'a + IntoIterator<Item = (&'a Anchor, T)>,

source

pub fn anchor_before<T>(&self, position: T) -> Anchorwhere T: ToOffset,

source

pub fn anchor_after<T>(&self, position: T) -> Anchorwhere T: ToOffset,

source

pub fn anchor_at<T>(&self, position: T, bias: Bias) -> Anchorwhere T: ToOffset,

source

pub fn can_resolve(&self, anchor: &Anchor) -> bool

source

pub fn clip_offset(&self, offset: usize, bias: Bias) -> usize

source

pub fn clip_point(&self, point: Point, bias: Bias) -> Point

source

pub fn clip_offset_utf16(&self, offset: OffsetUtf16, bias: Bias) -> OffsetUtf16

source

pub fn clip_point_utf16( &self, point: Unclipped<PointUtf16>, bias: Bias ) -> PointUtf16

source

pub fn edits_since<D, 'a>( &'a self, since: &'a Global ) -> impl Iterator<Item = Edit<D>> + 'awhere D: TextDimension + Ord,

source

pub fn anchored_edits_since<D, 'a>( &'a self, since: &'a Global ) -> impl Iterator<Item = (Edit<D>, Range<Anchor>)> + 'awhere D: TextDimension + Ord,

source

pub fn edits_since_in_range<D, 'a>( &'a self, since: &'a Global, range: Range<Anchor> ) -> impl Iterator<Item = Edit<D>> + 'awhere D: TextDimension + Ord,

source

pub fn anchored_edits_since_in_range<D, 'a>( &'a self, since: &'a Global, range: Range<Anchor> ) -> impl Iterator<Item = (Edit<D>, Range<Anchor>)> + 'awhere D: TextDimension + Ord,

Trait Implementations§

source§

impl Deref for Buffer

§

type Target = Buffer

The resulting type after dereferencing.
source§

fn deref(&self) -> &<Buffer as Deref>::Target

Dereferences the value.
source§

impl Item for Buffer

source§

impl EventEmitter<Event> for Buffer

Auto Trait Implementations§

§

impl !RefUnwindSafe for Buffer

§

impl Send for Buffer

§

impl Sync for Buffer

§

impl Unpin for Buffer

§

impl !UnwindSafe for Buffer

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<S> FromSample<S> for S

§

fn from_sample_(s: S) -> S

source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for Twhere U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

§

impl<T> Pointable for T

§

const ALIGN: usize = mem::align_of::<T>()

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<T> Same<T> for T

§

type Output = T

Should always be Self
§

impl<T, U> ToSample<U> for Twhere U: FromSample<T>,

§

fn to_sample_(self) -> U

source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for Twhere V: MultiLane<T>,

§

fn vzip(self) -> V

source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
§

impl<S, T> Duplex<S> for Twhere T: FromSample<S> + ToSample<S>,