Display file type
This commit is contained in:
parent
d207cb7884
commit
b765f894fc
@ -1,3 +1,4 @@
|
|||||||
|
use crate::FileType;
|
||||||
use crate::Position;
|
use crate::Position;
|
||||||
use crate::Row;
|
use crate::Row;
|
||||||
use crate::SearchDirection;
|
use crate::SearchDirection;
|
||||||
@ -9,6 +10,7 @@ pub struct Document {
|
|||||||
rows: Vec<Row>,
|
rows: Vec<Row>,
|
||||||
pub file_name: Option<String>,
|
pub file_name: Option<String>,
|
||||||
dirty: bool,
|
dirty: bool,
|
||||||
|
file_type: FileType,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Document {
|
impl Document {
|
||||||
@ -27,9 +29,14 @@ impl Document {
|
|||||||
rows,
|
rows,
|
||||||
file_name: Some(filename.to_string()),
|
file_name: Some(filename.to_string()),
|
||||||
dirty: false,
|
dirty: false,
|
||||||
|
file_type: FileType::from(filename),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn file_type(&self) -> String {
|
||||||
|
self.file_type.name()
|
||||||
|
}
|
||||||
|
|
||||||
pub fn row(&self, index: usize) -> Option<&Row> {
|
pub fn row(&self, index: usize) -> Option<&Row> {
|
||||||
self.rows.get(index)
|
self.rows.get(index)
|
||||||
}
|
}
|
||||||
@ -100,6 +107,7 @@ impl Document {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// File has been cleaned! (Saved)
|
// File has been cleaned! (Saved)
|
||||||
|
self.file_type = FileType::from(file_name);
|
||||||
self.dirty = false;
|
self.dirty = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -136,7 +136,8 @@ impl Editor {
|
|||||||
);
|
);
|
||||||
|
|
||||||
let line_indicator = format!(
|
let line_indicator = format!(
|
||||||
"{}/{}",
|
"{} | {}/{}",
|
||||||
|
self.document.file_type(),
|
||||||
self.cursor_position.y.saturating_add(1),
|
self.cursor_position.y.saturating_add(1),
|
||||||
self.document.len()
|
self.document.len()
|
||||||
);
|
);
|
||||||
|
35
src/filetype.rs
Normal file
35
src/filetype.rs
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
pub struct FileType {
|
||||||
|
name: String,
|
||||||
|
hl_opts: HighlightingOptions,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Default)]
|
||||||
|
pub struct HighlightingOptions {
|
||||||
|
pub numbers: bool,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Default for FileType {
|
||||||
|
fn default() -> Self {
|
||||||
|
Self {
|
||||||
|
name: String::from("No filetype"),
|
||||||
|
hl_opts: HighlightingOptions::default(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl FileType {
|
||||||
|
pub fn name(&self) -> String {
|
||||||
|
self.name.clone()
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn from(file_name: &str) -> Self {
|
||||||
|
if file_name.ends_with(".rs") {
|
||||||
|
return Self {
|
||||||
|
name: String::from("Rust"),
|
||||||
|
hl_opts: HighlightingOptions { numbers: true },
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
Self::default()
|
||||||
|
}
|
||||||
|
}
|
@ -2,6 +2,7 @@
|
|||||||
#![allow(clippy::missing_errors_doc, clippy::must_use_candidate, clippy::panic)]
|
#![allow(clippy::missing_errors_doc, clippy::must_use_candidate, clippy::panic)]
|
||||||
mod document;
|
mod document;
|
||||||
mod editor;
|
mod editor;
|
||||||
|
mod filetype;
|
||||||
mod highlighting;
|
mod highlighting;
|
||||||
mod row;
|
mod row;
|
||||||
mod terminal;
|
mod terminal;
|
||||||
@ -10,6 +11,7 @@ pub use document::Document;
|
|||||||
use editor::Editor;
|
use editor::Editor;
|
||||||
pub use editor::Position;
|
pub use editor::Position;
|
||||||
pub use editor::SearchDirection;
|
pub use editor::SearchDirection;
|
||||||
|
pub use filetype::FileType;
|
||||||
pub use row::Row;
|
pub use row::Row;
|
||||||
pub use terminal::Terminal;
|
pub use terminal::Terminal;
|
||||||
|
|
||||||
|
@ -230,8 +230,9 @@ impl Row {
|
|||||||
&highlighting::Type::None
|
&highlighting::Type::None
|
||||||
};
|
};
|
||||||
|
|
||||||
if c.is_ascii_digit()
|
if (c.is_ascii_digit()
|
||||||
&& (prev_is_separator || previous_highlight == &highlighting::Type::Number)
|
&& (prev_is_separator || previous_highlight == &highlighting::Type::Number))
|
||||||
|
|| (c == &'.' && previous_highlight == &highlighting::Type::Number)
|
||||||
{
|
{
|
||||||
highlighting.push(highlighting::Type::Number)
|
highlighting.push(highlighting::Type::Number)
|
||||||
} else {
|
} else {
|
||||||
|
Loading…
Reference in New Issue
Block a user