Struct kaolinite::document::Document[][src]

pub struct Document {
    pub info: FileInfo,
    pub rows: Vec<Row>,
    pub modified: bool,
    pub size: Size,
    pub char_ptr: usize,
    pub cursor: Loc,
    pub offset: Loc,
}
Expand description

A struct that contains all the basic tools necessary to manage documents

Fields

info: FileInfo

The information for the current file

rows: Vec<Row>

All the rows within the document

modified: bool

Boolean that changes when the file is edited via the event executor

size: Size

The size holds how much space the document has to render

char_ptr: usize

A pointer to the character at the current cursor position

cursor: Loc

The position within the terminal

offset: Loc

Stores information about scrolling

Implementations

Create a new document

The argument size takes in a Size struct. This should store information about the terminal size.

If you plan to implement things like status lines or tabs, you should subtract them from the size height, as this size is purely for the file viewport size.

Open a file at a specified path into this document.

This will also reset the cursor position, offset position, file name, contents and line ending information

Errors

Will return Err if path does not exist or the user does not have permission to read from it.

Save a file

This will reset modified to false, as it has been saved back to it’s original file.

Errors

Will return Err if the file path the document came from wasn’t able to be written to, potentially because of file permission errors.

Save a file to a specified path

Similar to save but takes a file argument, and saves it there. This method also doesn’t change modified.

Errors

Will return Err if the provided file path wasn’t able to be written to, potentially because fo file permission errors.

Execute an event in this document

This method is the main method that should be used to modify the document. It takes in an Event enum.

This method also takes advantage of undo & redo functionality and the document modificatior indicator and moves your cursor automatically. If you change the rows in the document directly, you will not gain access to these benefits, but you can always manually handle these features if need be.

Errors

Will return Err if the event tried to modifiy data outside the scope of the document.

Move the cursor to a specific x and y coordinate

Errors

Will return Err if the location provided is out of scope of the document.

Move the cursor to a specific x coordinate

Errors

Will return Err if the location provided is out of scope of the document.

Move the cursor to a specific y coordinate

Errors

Will return Err if the location provided is out of scope of the document.

Move the cursor to the left

Errors

Will return Err if the cursor is out of scope of the document

Move the cursor to the right

Errors

Will return Err if the cursor is out of scope of the document

Move the cursor upwards

Errors

Will return Err if the cursor is out of scope of the document

Move the cursor downwards

Errors

Will return Err if the cursor is out of scope of the document

Render the document into the correct form

Return a reference to a row in the document

Errors

This will error if the index is out of range

Return a mutable reference to a row in the document

Errors

This will error if the index is out of range

Get the current row

Errors

This will error if the cursor position isn’t on a existing row

Get the current position in the document

Trait Implementations

Formats the value using the given formatter. Read more

Returns the “default value” for a type. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.