refactor: CaptureRegion -> config/tmux_bridge.rs

This commit is contained in:
graelo 2021-03-21 09:20:34 +01:00
parent d598d5962e
commit 2b331c2862
2 changed files with 33 additions and 33 deletions

View file

@ -1,9 +1,9 @@
use clap::Clap;
use regex::Regex; use regex::Regex;
use std::collections::HashMap; use std::collections::HashMap;
use std::fmt; use std::fmt;
use std::str::FromStr; use std::str::FromStr;
use crate::config::tmux_bridge::CaptureRegion;
use crate::error::ParseError; use crate::error::ParseError;
#[derive(Debug, PartialEq)] #[derive(Debug, PartialEq)]
@ -108,34 +108,6 @@ impl fmt::Display for PaneId {
} }
} }
#[derive(Clap, Debug)]
pub enum CaptureRegion {
/// The entire history.
///
/// This will end up sending `-S - -E -` to `tmux capture-pane`.
EntireHistory,
/// The visible area.
VisibleArea,
///// Region from start line to end line
/////
///// This works as defined in tmux's docs (order does not matter).
//Region(i32, i32),
}
impl FromStr for CaptureRegion {
type Err = ParseError;
fn from_str(s: &str) -> Result<Self, ParseError> {
match s {
"leading" => Ok(CaptureRegion::EntireHistory),
"trailing" => Ok(CaptureRegion::VisibleArea),
_ => Err(ParseError::ExpectedString(String::from(
"entire-history or visible-area",
))),
}
}
}
/// Returns a list of `Pane` from the current tmux session. /// Returns a list of `Pane` from the current tmux session.
pub fn list_panes() -> Result<Vec<Pane>, ParseError> { pub fn list_panes() -> Result<Vec<Pane>, ParseError> {
let args = vec![ let args = vec![
@ -187,8 +159,8 @@ pub fn get_options(prefix: &str) -> Result<HashMap<String, String>, ParseError>
/// Returns the entire Pane content as a `String`. /// Returns the entire Pane content as a `String`.
/// ///
/// `CaptureRegion` specifies if the visible area is captured, or the entire /// The provided `region` specifies if the visible area is captured, or the
/// history. /// entire history.
/// ///
/// # TODO /// # TODO
/// ///

View file

@ -29,7 +29,7 @@ pub struct Config {
/// Capture visible area or entire pane history. /// Capture visible area or entire pane history.
#[clap(long, arg_enum, default_value = "visible-area")] #[clap(long, arg_enum, default_value = "visible-area")]
pub capture_region: tmux::CaptureRegion, pub capture_region: CaptureRegion,
/// Name of the copy-to-clipboard executable. /// Name of the copy-to-clipboard executable.
/// ///
@ -64,7 +64,7 @@ impl Config {
) -> Result<(), error::ParseError> { ) -> Result<(), error::ParseError> {
for (name, value) in options { for (name, value) in options {
if let "@copyrat-capture" = name.as_ref() { if let "@copyrat-capture" = name.as_ref() {
self.capture_region = tmux::CaptureRegion::from_str(&value)?; self.capture_region = CaptureRegion::from_str(&value)?;
} }
} }
@ -74,3 +74,31 @@ impl Config {
Ok(()) Ok(())
} }
} }
#[derive(Clap, Debug)]
pub enum CaptureRegion {
/// The entire history.
///
/// This will end up sending `-S - -E -` to `tmux capture-pane`.
EntireHistory,
/// The visible area.
VisibleArea,
///// Region from start line to end line
/////
///// This works as defined in tmux's docs (order does not matter).
//Region(i32, i32),
}
impl FromStr for CaptureRegion {
type Err = error::ParseError;
fn from_str(s: &str) -> Result<Self, error::ParseError> {
match s {
"leading" => Ok(CaptureRegion::EntireHistory),
"trailing" => Ok(CaptureRegion::VisibleArea),
_ => Err(error::ParseError::ExpectedString(String::from(
"entire-history or visible-area",
))),
}
}
}