From 214dfc66a596a30714086754030d6bbc6aa7fdb9 Mon Sep 17 00:00:00 2001 From: FantasyPvP <80643031+FantasyPvP@users.noreply.github.com> Date: Thu, 7 Nov 2024 13:52:28 +0000 Subject: [PATCH] bugfixes --- final/binary | Bin 29264 -> 21768 bytes final/dynstr.c | 8 +++++++- final/editor.c | 44 ++++++++++++++++++++++++++++-------------- final/editor.h | 8 +++++--- final/log.txt | 1 + final/main.c | 4 +++- prototype/src/main.rs | 32 ++++++++++++++++++++---------- 7 files changed, 68 insertions(+), 29 deletions(-) create mode 100644 final/log.txt diff --git a/final/binary b/final/binary index 9e656ce77d1122b4dfc9b889ea2e897e8cfabeb9..62a1f15cfb36551ac1ac83f39638927cb8f4edfb 100755 GIT binary patch literal 21768 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 diff --git a/final/dynstr.c b/final/dynstr.c index d535986..6d28f07 100644 --- a/final/dynstr.c +++ b/final/dynstr.c @@ -214,7 +214,13 @@ char* to_chars(String_t* s) { // printf("%s\n", to_chars(&s)); +// int linen = 0; +// String_t* lines = str_lines(&s, &linen); +// for (int i=0; i < linen; i++) { +// printf("%s", to_chars(&lines[i])); +// } + // str_dealloc(&s); // return 0; -// } \ No newline at end of file +// } diff --git a/final/editor.c b/final/editor.c index 7a91c46..dd8bd48 100644 --- a/final/editor.c +++ b/final/editor.c @@ -1,13 +1,12 @@ #include #include -#include #include "dynstr.h" #include typedef struct { - int lines; - int screen_line; - int screen_col; + uint32_t lines; + uint32_t screen_line; + uint32_t screen_col; bool editmode; String_t* buffer; } Editor; @@ -20,7 +19,9 @@ Editor new_editor() { e.editmode = false; String_t lines = str_from_chars(""); - e.buffer = str_lines(&lines, &e.lines); + int linenum = 0; + e.buffer = str_lines(&lines, &linenum); + e.lines = linenum; str_dealloc(&lines); addstr(""); @@ -29,25 +30,39 @@ Editor new_editor() { } Editor editor_from(char* input_string) { - // TODO: fix this function Editor e; e.lines = 0; e.screen_line = 0; e.screen_col = 0; e.editmode = false; - - String_t lines = str_from_chars(input_string); - e.buffer = str_lines(&lines, &e.lines); - str_dealloc(&lines); + int linenum = 0; + String_t lines = str_from_chars(input_string); + e.buffer = str_lines(&lines, &linenum); + e.lines = (size_t)linenum; + + fprintf(stderr, "BUFFER: %s", to_chars(&e.buffer[2])); + str_dealloc(&lines); + // String_t s = str_from_chars(input_string); + // int linen = 0; + // String_t* lines = str_lines(&s, &linen); + // for (int i=0; i < linen; i++) { + // fprintf(stderr, "%s", to_chars(&lines[i])); + // } + // e.lines = (size_t)linen; + // e.buffer = lines; + // str_dealloc(&s); + addstr(input_string); return e; } void move_cursor(Editor* self, int x, int y) { + fprintf(stderr, "lns %d, line %d, col %d, mode %d", self->lines, self->screen_line, self->screen_col, self->editmode); + fprintf(stderr, "line: %s", to_chars(&self->buffer[self->screen_line])); if (y != 0 - && self->screen_line + y >= 0 + && (int)(self->screen_line) + y >= 0 && self->screen_line + y <= self->lines) { self->screen_line += y; @@ -55,7 +70,8 @@ void move_cursor(Editor* self, int x, int y) { if (self->screen_col > line_width) { self->screen_col = line_width; } - } else if (self->screen_col + x < 0) { + } else if ((int)(self->screen_col) + x < 0) { + fprintf(stderr, "going off left side"); if (self->screen_line - 1 >= 0) { self->screen_line -= 1; self->screen_col = str_len(&self->buffer[self->screen_line]); @@ -67,8 +83,8 @@ void move_cursor(Editor* self, int x, int y) { } } else if (x != 0) { self->screen_col += x; - } - + } + fprintf(stderr, "lns %d, line %d, col %d, mode %d", self->lines, self->screen_line, self->screen_col, self->editmode); move(self->screen_line, self->screen_col); } diff --git a/final/editor.h b/final/editor.h index 5e678dd..727bceb 100644 --- a/final/editor.h +++ b/final/editor.h @@ -1,8 +1,10 @@ #include "dynstr.h" +#include typedef struct { - int screen_line; - int screen_col; + uint32_t lines; + uint32_t screen_line; + uint32_t screen_col; bool editmode; String_t* buffer; } Editor; @@ -15,4 +17,4 @@ void move_cursor(Editor* self, int x, int y); void delchar(Editor* self); void addchar(Editor* self, char c); -String_t* to_string(Editor* self); \ No newline at end of file +String_t* to_string(Editor* self); diff --git a/final/log.txt b/final/log.txt new file mode 100644 index 0000000..d3f768c --- /dev/null +++ b/final/log.txt @@ -0,0 +1 @@ +BUFFER: (null)3 0 0 0lns 3, line 0, col 0, mode 1line: this is some text to editlns 3, line 0, col 1, mode 1lns 3, line 0, col 1, mode 1line: this is some text to editlns 3, line 0, col 2, mode 1lns 3, line 0, col 2, mode 1line: this is some text to editlns 3, line 0, col 3, mode 1lns 3, line 0, col 3, mode 1line: this is some text to editlns 3, line 0, col 4, mode 1lns 3, line 0, col 4, mode 1line: this is some text to editlns 3, line 0, col 5, mode 1lns 3, line 0, col 5, mode 1line: this is some text to editlns 3, line 1, col 5, mode 1lns 3, line 1, col 5, mode 1line: this is the second linelns 3, line 1, col 4, mode 1lns 3, line 1, col 4, mode 1line: this is the second linelns 3, line 1, col 3, mode 1lns 3, line 1, col 3, mode 1line: this is the second linelns 3, line 1, col 2, mode 1lns 3, line 1, col 2, mode 1line: this is the second linelns 3, line 1, col 1, mode 1lns 3, line 1, col 1, mode 1line: this is the second linelns 3, line 1, col 0, mode 1lns 3, line 1, col 0, mode 1line: this is the second linegoing off left sidelns 3, line 0, col 25, mode 1lns 3, line 0, col 25, mode 1line: this is some text to editlns 3, line 1, col 0, mode 1lns 3, line 1, col 0, mode 1line: this is the second linelns 3, line 1, col 1, mode 1lns 3, line 1, col 1, mode 1line: this is the second linelns 3, line 1, col 2, mode 1lns 3, line 1, col 2, mode 1line: this is the second linelns 3, line 1, col 3, mode 1lns 3, line 1, col 3, mode 1line: this is the second linelns 3, line 1, col 4, mode 1lns 3, line 1, col 4, mode 1line: this is the second linelns 3, line 1, col 5, mode 1lns 3, line 1, col 5, mode 1line: this is the second linelns 3, line 1, col 6, mode 1lns 3, line 1, col 6, mode 1line: this is the second linelns 3, line 1, col 7, mode 1lns 3, line 1, col 7, mode 1line: this is the second linelns 3, line 1, col 8, mode 1lns 3, line 1, col 8, mode 1line: this is the second linelns 3, line 1, col 9, mode 1lns 3, line 1, col 9, mode 1line: this is the second linelns 3, line 1, col 10, mode 1lns 3, line 1, col 10, mode 1line: this is the second linelns 3, line 1, col 11, mode 1lns 3, line 1, col 11, mode 1line: this is the second linelns 3, line 1, col 12, mode 1lns 3, line 1, col 12, mode 1line: this is the second linelns 3, line 1, col 13, mode 1lns 3, line 1, col 13, mode 1line: this is the second linelns 3, line 1, col 14, mode 1lns 3, line 1, col 14, mode 1line: this is the second linelns 3, line 1, col 15, mode 1lns 3, line 1, col 15, mode 1line: this is the second linelns 3, line 1, col 16, mode 1lns 3, line 1, col 16, mode 1line: this is the second linelns 3, line 1, col 17, mode 1lns 3, line 1, col 17, mode 1line: this is the second linelns 3, line 1, col 18, mode 1lns 3, line 1, col 18, mode 1line: this is the second linelns 3, line 1, col 19, mode 1lns 3, line 1, col 19, mode 1line: this is the second linelns 3, line 1, col 20, mode 1lns 3, line 1, col 20, mode 1line: this is the second linelns 3, line 1, col 21, mode 1lns 3, line 1, col 21, mode 1line: this is the second linelns 3, line 1, col 22, mode 1lns 3, line 1, col 22, mode 1line: this is the second linelns 3, line 1, col 23, mode 1lns 3, line 1, col 23, mode 1line: this is the second linelns 3, line 2, col 0, mode 1lns 3, line 2, col 0, mode 1line: (null)lns 3, line 3, col 0, mode 1lns 3, line 3, col 0, mode 1line: (null)lns 3, line 3, col 0, mode 1lns 3, line 3, col 0, mode 1line: (null)lns 3, line 3, col 0, mode 1lns 3, line 3, col 0, mode 1line: (null)lns 3, line 3, col 0, mode 1lns 3, line 3, col 0, mode 1line: (null)going off left sidelns 3, line 2, col 0, mode 1lns 3, line 2, col 0, mode 1line: (null)going off left sidelns 3, line 1, col 23, mode 1lns 3, line 1, col 23, mode 1line: this is the second linelns 3, line 1, col 22, mode 1lns 3, line 1, col 22, mode 1line: this is the second linelns 3, line 1, col 21, mode 1lns 3, line 1, col 21, mode 1line: this is the second linelns 3, line 1, col 20, mode 1lns 3, line 1, col 20, mode 1line: this is the second linelns 3, line 1, col 19, mode 1lns 3, line 1, col 19, mode 1line: this is the second linelns 3, line 1, col 18, mode 1lns 3, line 1, col 18, mode 1line: this is the second linelns 3, line 1, col 17, mode 1lns 3, line 1, col 17, mode 1line: this is the second linelns 3, line 1, col 16, mode 1lns 3, line 1, col 16, mode 1line: this is the second linelns 3, line 1, col 15, mode 1lns 3, line 1, col 15, mode 1line: this is the second linelns 3, line 1, col 14, mode 1lns 3, line 1, col 14, mode 1line: this is the second linelns 3, line 1, col 13, mode 1lns 3, line 1, col 13, mode 1line: this is the second linelns 3, line 1, col 12, mode 1lns 3, line 1, col 12, mode 1line: this is the second linelns 3, line 1, col 11, mode 1lns 3, line 1, col 11, mode 1line: this is the second linelns 3, line 1, col 10, mode 1lns 3, line 1, col 10, mode 1line: this is the second linelns 3, line 1, col 9, mode 1lns 3, line 1, col 9, mode 1line: this is the second linelns 3, line 1, col 8, mode 1lns 3, line 1, col 8, mode 1line: this is the second linelns 3, line 1, col 7, mode 1lns 3, line 1, col 7, mode 1line: this is the second linelns 3, line 1, col 6, mode 1lns 3, line 1, col 6, mode 1line: this is the second linelns 3, line 1, col 5, mode 1lns 3, line 1, col 5, mode 1line: this is the second linelns 3, line 1, col 4, mode 1lns 3, line 1, col 4, mode 1line: this is the second linelns 3, line 1, col 3, mode 1lns 3, line 1, col 3, mode 1line: this is the second linelns 3, line 1, col 2, mode 1lns 3, line 1, col 2, mode 1line: this is the second linelns 3, line 1, col 1, mode 1lns 3, line 1, col 1, mode 1line: this is the second linelns 3, line 1, col 0, mode 1lns 3, line 1, col 0, mode 1line: this is the second linegoing off left sidelns 3, line 0, col 25, mode 1lns 3, line 0, col 25, mode 1line: this is some text to editlns 3, line 0, col 24, mode 1lns 3, line 0, col 24, mode 1line: this is some text to editlns 3, line 0, col 23, mode 1lns 3, line 0, col 23, mode 1line: this is some text to editlns 3, line 0, col 22, mode 1lns 3, line 0, col 22, mode 1line: this is some text to editlns 3, line 0, col 21, mode 1lns 3, line 0, col 21, mode 1line: this is some text to editlns 3, line 0, col 20, mode 1lns 3, line 0, col 20, mode 1line: this is some text to editlns 3, line 0, col 19, mode 1lns 3, line 0, col 19, mode 1line: this is some text to editlns 3, line 0, col 18, mode 1lns 3, line 0, col 18, mode 1line: this is some text to editlns 3, line 0, col 17, mode 1lns 3, line 0, col 17, mode 1line: this is some textš to editlns 3, line 0, col 18, mode 1lns 3, line 0, col 18, mode 1line: this is some textšš to editlns 3, line 0, col 19, mode 1 \ No newline at end of file diff --git a/final/main.c b/final/main.c index 0111961..a0c3f25 100644 --- a/final/main.c +++ b/final/main.c @@ -26,10 +26,12 @@ int open_editor() { Editor editor = editor_from("this is some text to edit\nthis is the second line\nand this is the third lol"); + fprintf(stderr, "%d %d %d %d", editor.lines, editor.screen_line, editor.screen_col, editor.editmode); + while (true) { refresh(); int c = getch(); - if (editor.editmode) { + if (editor.editmode == true) { switch (c) { case 27: editor.editmode = false; diff --git a/prototype/src/main.rs b/prototype/src/main.rs index 281db9b..118f743 100644 --- a/prototype/src/main.rs +++ b/prototype/src/main.rs @@ -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>, // 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::::new()).len() as i32; + let line_width = self + .buffer + .get(self.screen_line as usize) + .unwrap_or(&Vec::::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::::new()).len() as i32; + self.screen_col = self + .buffer + .get(self.screen_line as usize) + .unwrap_or(&Vec::::new()) + .len() as i32; } - } else if self.screen_col + dx > self.buffer.get(self.screen_line as usize).unwrap_or(&Vec::::new()).len() as i32 { + } else if self.screen_col + dx + > self + .buffer + .get(self.screen_line as usize) + .unwrap_or(&Vec::::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();