Adding in and renaming stuff and such

This commit is contained in:
able 2023-09-16 17:30:39 -05:00
parent f03b9e41cc
commit 589649298c
4 changed files with 74 additions and 24 deletions

11
README.md Normal file
View file

@ -0,0 +1,11 @@
# adit
## TODO
- Custom key binds
- Custom syntax highlighting
-

View file

@ -1,5 +1,5 @@
fn status_bar() { fn status_bar() {
let sb = `${file_name}:${y}:${x} | ${file_type} | ${line_count} Lines`; let sb = ` ${file_name}:${y}:${x} | ${file_type} | ${line_count} Lines`;
return sb; return sb;
} }
@ -9,11 +9,19 @@ fn welcome_message(){
return wm; return wm;
} }
fn on_start(){ fn presave() {
// Make this more usable later
return "";
} }
fn filetype(file){ fn on_start(){}
fn on_key(){}
fn filetype(file) {
switch file { switch file {
"rs" => { "rs" => {
let name = "Rust"; let name = "Rust";
@ -26,4 +34,4 @@ fn filetype(file){
return (name); return (name);
} }
} }
} }

View file

@ -1,9 +1,13 @@
use crate::FileType; use crate::{
use crate::Position; FileType,
use crate::Row; Position,
use crate::SearchDirection; Row,
use std::fs; SearchDirection
use std::io::{Error, Write}; };
use std::{
fs,
io::{Error, Write},
};
#[derive(Default)] #[derive(Default)]
pub struct Document { pub struct Document {
@ -60,6 +64,7 @@ impl Document {
return; return;
} }
self.dirty = true; self.dirty = true;
if c == '\n' { if c == '\n' {
self.insert_newline(at); self.insert_newline(at);
} else if at.y == self.rows.len() { } else if at.y == self.rows.len() {
@ -98,7 +103,7 @@ impl Document {
self.unhighlight_rows(at.y); self.unhighlight_rows(at.y);
} }
pub fn save(&mut self) -> Result<(), Error> { pub fn save(&mut self) -> Result<(), Error> {
if let Some(file_name) = &self.file_name { if let Some(file_name) = &self.file_name {
let mut file = fs::File::create(file_name)?; let mut file = fs::File::create(file_name)?;
self.file_type = FileType::from(file_name); self.file_type = FileType::from(file_name);
for row in &mut self.rows { for row in &mut self.rows {
@ -110,7 +115,7 @@ impl Document {
Ok(()) Ok(())
} }
pub fn is_dirty(&self) -> bool { pub fn is_dirty(&self) -> bool {
self.dirty self.dirty
} }
#[allow(clippy::indexing_slicing)] #[allow(clippy::indexing_slicing)]
pub fn find(&self, query: &str, at: &Position, direction: SearchDirection) -> Option<Position> { pub fn find(&self, query: &str, at: &Position, direction: SearchDirection) -> Option<Position> {

View file

@ -1,12 +1,12 @@
use crate::config::Config; use {
use crate::config::Theme; crate::{
use crate::Document; config::{Config, Theme},
use crate::Row; Document, Row, Terminal,
use crate::Terminal; },
use core::time::Duration; core::time::Duration,
use std::env; std::{env, time::Instant},
use std::time::Instant; termion::event::Key,
use termion::event::Key; };
const VERSION: &str = env!("CARGO_PKG_VERSION"); const VERSION: &str = env!("CARGO_PKG_VERSION");
const QUIT_TIMES: u8 = 2; const QUIT_TIMES: u8 = 2;
@ -64,6 +64,7 @@ impl Editor<'static> {
} }
} }
} }
pub fn default() -> Self { pub fn default() -> Self {
let args: Vec<String> = env::args().collect(); let args: Vec<String> = env::args().collect();
let mut initial_status = let mut initial_status =
@ -155,7 +156,8 @@ impl Editor<'static> {
} }
self.document.file_name = new_name; self.document.file_name = new_name;
} }
// TODO
self.config.call("presave");
if self.document.save().is_ok() { if self.document.save().is_ok() {
self.status_message = StatusMessage::from("File saved successfully.".to_string()); self.status_message = StatusMessage::from("File saved successfully.".to_string());
} else { } else {
@ -202,6 +204,7 @@ impl Editor<'static> {
} }
fn process_keypress(&mut self) -> Result<(), std::io::Error> { fn process_keypress(&mut self) -> Result<(), std::io::Error> {
let pressed_key = Terminal::read_key()?; let pressed_key = Terminal::read_key()?;
// TODO: break this out into the config
match pressed_key { match pressed_key {
Key::Ctrl('q') => { Key::Ctrl('q') => {
if self.quit_times > 0 && self.document.is_dirty() { if self.quit_times > 0 && self.document.is_dirty() {
@ -225,6 +228,29 @@ impl Editor<'static> {
} }
} }
Key::Char('(') => {
self.document.insert(&self.cursor_position, ')');
self.document.insert(&self.cursor_position, '(');
self.move_cursor(Key::Right);
}
Key::Char('[') => {
self.document.insert(&self.cursor_position, ']');
self.document.insert(&self.cursor_position, '[');
self.move_cursor(Key::Right);
}
Key::Char('{') => {
self.document.insert(&self.cursor_position, '}');
self.document.insert(&self.cursor_position, '{');
self.move_cursor(Key::Right);
}
Key::Char('"') => {
self.document.insert(&self.cursor_position, '"');
self.document.insert(&self.cursor_position, '"');
self.move_cursor(Key::Right);
}
Key::Char(c) => { Key::Char(c) => {
self.document.insert(&self.cursor_position, c); self.document.insert(&self.cursor_position, c);
self.move_cursor(Key::Right); self.move_cursor(Key::Right);
@ -408,7 +434,7 @@ impl Editor<'static> {
#[allow(clippy::arithmetic_side_effects)] #[allow(clippy::arithmetic_side_effects)]
let len = status.len(); let len = status.len();
status.push_str(&" ".repeat(width.saturating_sub(len))); status.push_str(&" ".repeat(width.saturating_sub(len)));
status = format!(" {status}"); status = format!("{status}");
status.truncate(width); status.truncate(width);
let theme = Theme::default(); let theme = Theme::default();