From aa2f6e2260ada3ff762389057126fec1b6bfdc4d Mon Sep 17 00:00:00 2001 From: Matuush Date: Mon, 7 Apr 2025 21:05:05 +0200 Subject: [PATCH] Print only relevant lines while inserting/deleting lines --- main.cpp | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/main.cpp b/main.cpp index 1472c4e..0345c6d 100644 --- a/main.cpp +++ b/main.cpp @@ -51,19 +51,25 @@ bool save(string filename) { } -// Print line -void print_line(int pos) { +// Clear line +void clear_line(int pos) { move(pos, 0); clrtoeol(); +} +// Print line +void print_line(int pos) { + clear_line(pos); move(pos, 0); adds(get_line(pos)); move(row, col); } // Print file content -void print_file() { - clear(); - for(int i = 0; i < LINES && file_offset+i < file.size(); i++) - print_line(i); +void print_file(int start = 0) { + for(int i = start; i < LINES; i++) + if(file_offset+i < file.size()) + print_line(i); + else + clear_line(i); move(row, col); } @@ -153,7 +159,7 @@ int main(int argc, char* argv[]) { break; case 'd': remove_line(row); - print_file(); + print_file(row); break; case 'x': remove_char(row, col); @@ -161,7 +167,7 @@ int main(int argc, char* argv[]) { break; case 'o': add_line(row); - print_file(); + print_file(row); break; case 'q': run = false;