Skip to main content

InternalSettings

Struct InternalSettings 

Source
pub struct InternalSettings {
    pub force_clear: bool,
    pub must_quit: bool,
    pub nvim_server: String,
    pub opener: Opener,
    pub size: Size,
    pub disks: Disks,
    pub inside_neovim: bool,
    pub copy_file_queue: Vec<(Vec<PathBuf>, PathBuf)>,
    pub in_mem_progress: Option<InMemoryTerm>,
    pub clear_before_quit: bool,
    pub cursor: Cursor,
    pub last_buffer: Option<Buffer>,
    /* private fields */
}
Expand description

Internal settings of the status.

Every setting which couldn’t be attached elsewhere and is needed by the whole application. It knows:

  • if the content should be completely refreshed,
  • if the application has to quit,
  • the address of the nvim_server to send files to and if the application was launched from neovim,
  • which opener should be used for kind of files,
  • the height & width of the application,
  • basic informations about disks being used,
  • a copy queue to display informations about files beeing copied.

Fields§

§force_clear: bool

Do we have to clear the screen ?

§must_quit: bool

True if the user issued a quit event (Key::Char('q') by default). It’s used to exit the main loop before reseting the cursor.

§nvim_server: String

NVIM RPC server address

§opener: Opener

The opener used by the application.

§size: Size

Termin size, width & height

§disks: Disks

Info about the running machine. Only used to detect disks and their mount points.

§inside_neovim: bool

true if the application was launched inside a neovim terminal emulator

§copy_file_queue: Vec<(Vec<PathBuf>, PathBuf)>

queue of pairs (sources, dest) to be copied. it shouldn’t be massive under normal usage so we can use a vector instead of an efficient queue data structure.

§in_mem_progress: Option<InMemoryTerm>

internal progressbar used to display copy progress

§clear_before_quit: bool

true if the terminal should be cleared before exit. It’s set to true when we reuse the window to start a new shell.

§cursor: Cursor

Cesor movement and selection. Responsible of recording what is selected by the user.

§last_buffer: Option<Buffer>

Last registered frame

Implementations§

Source§

impl InternalSettings

Source

pub fn new(opener: Opener, size: Size, disks: Disks, binds: &Bindings) -> Self

Creates a new instance. Some parameters (nvim_server and inside_neovim) are read from args.

Source

pub fn term_size(&self) -> Size

Returns the size of the terminal (width, height)

Source

pub fn update_size(&mut self, width: u16, height: u16)

Update the size from width & height.

Source

pub fn force_clear(&mut self)

Set a “force clear” flag to true, which will reset the display. It’s used when some command or whatever may pollute the terminal. We ensure to clear it before displaying again.

Source

pub fn reset_clear(&mut self)

Reset the clear flag. Prevent the display from being completely reset for the next frame.

Source

pub fn should_be_cleared(&self) -> bool

True iff some event required a complete refresh of the dispplay

Source

pub fn disks(&mut self) -> &Disks

Refresh the disks – removing non listed ones – and returns a reference

Source

pub fn mount_points_vec(&mut self) -> Vec<&Path>

Returns a vector of mount points. Disks are refreshed first.

Source

pub fn mount_points_set(&self) -> HashSet<&Path>

Returns a set of mount points

Source

pub fn update_nvim_listen_address(&mut self)

Tries its best to update the neovim address.

  1. from the $NVIM_LISTEN_ADDRESS environment variable,
  2. from the opened socket read from ss.
§Warning

If multiple neovim instances are opened at the same time, it will get the first one from the ss output.

Source

pub fn copy_file_remove_head(&mut self) -> Result<()>

Remove the top of the copy queue.

Source

pub fn copy_next_file_in_queue( &mut self, fm_sender: Arc<Sender<FmEvents>>, width: u16, ) -> Result<()>

Start the copy of the next file in copy file queue and register the progress in the mock terminal used to create the display.

Source

pub fn store_copy_progress(&mut self, in_mem_progress_bar: InMemoryTerm)

Store copy progress bar. When a copy progress bar is stored, display manager is responsible for its display in the left tab.

Source

pub fn unset_copy_progress(&mut self)

Set copy progress bar to None.

Source

pub fn disable_display(&mut self)

Disable the application display. It’s used to give to allow another program to be executed.

Source

pub fn enable_display(&mut self)

Display the application after it gave its terminal to another program.

Enable the display again, clear the screen, set a flag to clear before quitting application.

Source

pub fn is_disabled(&self) -> bool

True iff the terminal is disabled. The state (self.is_disabled) is changed every time a new shell is started replacing the normal window. If true, the display shouldn’t be drawn.

Source

pub fn open_in_window<P>( &mut self, args: &[&str], current_path: P, ) -> Result<()>
where P: AsRef<Path>,

Open a new command which output will replace the current display. Current progress of the application is locked as long as the command doesn’t finish. Firstly the display is disabled, then the command is ran. Once the command ends… the display is reenabled again.

Source

pub fn open_single_file<P>( &mut self, path: &Path, current_path: P, ) -> Result<()>
where P: AsRef<Path>,

Open a single file: In neovim if this file should be, or in a new shell in current terminal, or in a new window.

Source

pub fn open_flagged_files<P>( &mut self, flagged: &Flagged, current_path: P, ) -> Result<()>
where P: AsRef<Path>,

Open all the flagged files. We try to open all files in a single command if it’s possible. If all files should be opened in neovim, it will be. Otherwise, they will be opened separetely.

Source

pub fn quit(&mut self)

Set the must quit flag to true. The next update call will exit the application. It doesn’t exit the application itself.

Source

pub fn format_copy_progress(&self) -> Option<String>

Format the progress of the current operation in copy file queue. If nothing is being copied, it returns None

Source

pub fn move_cursor(&mut self, direction: CursorDirection)

Move the cursor in given direction, up, down, left or right. Cursor is clamped to the the screen and can’t move outside. Extends the selection if the cursor is active.

Source

pub fn copy_buffer_rect(&self)

Copy the rect buffer of text in the clipboard.

Auto Trait Implementations§

Blanket Implementations§

Source§

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

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

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

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

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

Source§

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

Mutably borrows from an owned value. Read more
Source§

impl<T> Downcast for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
Source§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
Source§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
Source§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
Source§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

Source§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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 T
where 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.

Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

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

Initializes a with the given initializer. Read more
Source§

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

Dereferences the given pointer. Read more
Source§

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

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

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

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

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

Source§

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 T
where U: TryFrom<T>,

Source§

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.
Source§

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

Source§

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> MaybeSend for T
where T: Send,