diff --git a/editor.cpp b/editor.cpp index 2d7bb30..0502fc7 100644 --- a/editor.cpp +++ b/editor.cpp @@ -13,8 +13,8 @@ void Editor::save() { } // Clear line -void Editor::clear_line(count_type r) { - ::move(r - file_offset, 0); +void Editor::clear_line(count_type i) { + ::move(i, 0); clrtoeol(); } // Print any text @@ -32,16 +32,10 @@ void Editor::print_file(count_type start) { else clear_line(i); } -// Print input -void Editor::print_input(string text) { - clear_line(file_offset + cur.r); - ::move(cur.r, 0); - adds(text); -} // Generic input taking template string Editor::get_input(string prompt, F func) { - print_input(prompt+": "); + print_text(cur.r, prompt+": "); string s = ""; char ch = getch(); while((ch != ENTER && func(ch)) || ch == BS) { @@ -49,7 +43,7 @@ string Editor::get_input(string prompt, F func) { s.pop_back(); else s += ch; - print_input(prompt+": " + s); + print_text(cur.r, prompt+": " + s); ch = getch(); } return s; @@ -154,7 +148,7 @@ bool Editor::take_action() { char ch = getch(); switch(mode) { case NORMAL: - print_line(file_offset + cur.r); + print_current_line(); switch(ch) { case 'h': case 'j': case 'k': case 'l': move_cursor(ch); @@ -175,7 +169,7 @@ bool Editor::take_action() { break; case 'x': file.remove(cur + file_offset); - print_line(file_offset + cur.r); + print_current_line(); break; case 'o': file.insert(file_offset + cur.r, ""); @@ -197,12 +191,12 @@ bool Editor::take_action() { break; case 'f': last_find = get_string("to find"); - print_line(file_offset + cur.r); + print_current_line(); case 'n': { auto result = find(last_find); if(!result.first) { - print_line(file_offset + cur.r); + print_current_line(); break; } jump(result.second); @@ -212,12 +206,12 @@ bool Editor::take_action() { case 's': last_find = get_string("to find"); last_replace = get_string("to replace"); - print_line(file_offset + cur.r); + print_current_line(); case 'r': { auto result = find(last_find); if(!result.first) { - print_line(file_offset + cur.r); + print_current_line(); break; } jump(result.second); @@ -239,7 +233,7 @@ bool Editor::take_action() { case ESC: mode = NORMAL; // Change current row into current_insert TODO - print_line(file_offset + cur.r); + print_current_line(); break; case BS: // Modify current_insert TODO @@ -247,7 +241,7 @@ bool Editor::take_action() { cur.c -= 1; file.remove(cur + file_offset); } - print_line(file_offset + cur.r); + print_current_line(); break; case ENTER: // Modify current_insert and update TODO @@ -260,18 +254,18 @@ bool Editor::take_action() { // Modify current_insert TODO file.insert(cur + file_offset, "\t"); cur.c += TAB_SIZE - (cur.c % TAB_SIZE); - print_line(file_offset + cur.r); + print_current_line(); break; default: // Modify current_insert TODO file.insert(cur + file_offset, string(1, ch)); cur.c += 1; - print_line(file_offset + cur.r); + print_current_line(); break; } break; case SELECT: - print_line(file_offset + cur.r); + print_current_line(); switch(ch) { case 'h': case 'j': case 'k': case 'l': move_cursor(ch); diff --git a/everything.hpp b/everything.hpp index f74ef46..4dab148 100644 --- a/everything.hpp +++ b/everything.hpp @@ -1,6 +1,5 @@ #pragma once #include -#include #include #include #include @@ -104,12 +103,11 @@ class Editor{ void save(); // Printing - void clear_line(count_type r); + void clear_line(count_type i); void print_text(count_type i, string text); - void print_line(count_type r) { print_text(r - file_offset, file.get_line(r)); } + void print_current_line() { print_text(cur.r, file.get_line(file_offset + cur.r)); } // User input - void print_input(string text); template string get_input(string prompt, F func); string get_string(string prompt);