This commit is contained in:
FantasyPvP
2024-11-07 13:52:28 +00:00
parent b40ecc5bb1
commit 214dfc66a5
7 changed files with 68 additions and 29 deletions
+22 -10
View File
@@ -7,7 +7,6 @@ use std::{
io::Write,
};
fn somefunc() {
let c = "hello";
@@ -16,7 +15,6 @@ fn somefunc() {
let c2 = String::from("hello world");
}
struct EditorData {
buffer: Vec<Vec<char>>, // outer vec is the line, inner is col;
file_line: i32,
@@ -60,16 +58,30 @@ impl EditorData {
&& self.screen_line + dy <= self.buffer.len() as i32
{
self.screen_line += dy;
let line_width = self.buffer.get(self.screen_line as usize).unwrap_or(&Vec::<char>::new()).len() as i32;
let line_width = self
.buffer
.get(self.screen_line as usize)
.unwrap_or(&Vec::<char>::new())
.len() as i32;
if self.screen_col > line_width {
self.screen_col = line_width;
}
} else if self.screen_col + dx < 0 {
if self.screen_line - 1 >= 0 {
self.screen_line -= 1;
self.screen_col = self.buffer.get(self.screen_line as usize).unwrap_or(&Vec::<char>::new()).len() as i32;
self.screen_col = self
.buffer
.get(self.screen_line as usize)
.unwrap_or(&Vec::<char>::new())
.len() as i32;
}
} else if self.screen_col + dx > self.buffer.get(self.screen_line as usize).unwrap_or(&Vec::<char>::new()).len() as i32 {
} else if self.screen_col + dx
> self
.buffer
.get(self.screen_line as usize)
.unwrap_or(&Vec::<char>::new())
.len() as i32
{
if self.screen_line + 1 <= self.buffer.len() as i32 {
self.screen_col = 0;
self.screen_line += 1;
@@ -107,7 +119,10 @@ impl EditorData {
line.insert(self.screen_col as usize, c);
} else {
self.buffer.push(Vec::new());
self.buffer.get_mut(self.screen_line as usize).unwrap().push(c);
self.buffer
.get_mut(self.screen_line as usize)
.unwrap()
.push(c);
}
self.mv_cursor(0, 1);
}
@@ -226,9 +241,7 @@ fn open(filename: &str) -> Result<(), &'static str> {
ncurses::KEY_RIGHT => data.mv_cursor(0, 1),
ncurses::KEY_UP => data.mv_cursor(-1, 0),
ncurses::KEY_DOWN => data.mv_cursor(1, 0),
ncurses::KEY_ENTER => {
}
ncurses::KEY_ENTER => {}
_ => {
data.addchar(char::from_u32(keystroke as u32).unwrap());
}
@@ -240,7 +253,6 @@ fn open(filename: &str) -> Result<(), &'static str> {
}
119 => {
let buff_size = max_y * max_x;
let buff = data.to_string();