diff --git a/src/step1_read_print.cpp b/src/step1_read_print.cpp index d9a9a98..3efd03c 100644 --- a/src/step1_read_print.cpp +++ b/src/step1_read_print.cpp @@ -1,13 +1,18 @@ -#include +#include // std::signal +#include // std::exit #include // std::cin #include // std::getline #include +#include "ruc/format/color.h" + #include "ast.h" #include "lexer.h" #include "printer.h" #include "reader.h" +#define PRETTY_PRINT 0 + #if 1 auto read(std::string_view data) -> blaze::ASTNode* { @@ -37,12 +42,31 @@ auto rep(std::string_view data) -> void print(eval(read(data))); } +static auto cleanup(int signal) -> void +{ + print("\033[0m"); + std::exit(signal); +} + auto main() -> int { + // Signal callbacks + std::signal(SIGINT, cleanup); + std::signal(SIGTERM, cleanup); + while (true) { - printf("user> "); + #if PRETTY_PRINT + print(fg(ruc::format::TerminalColor::Blue), "user>"); + print(" "); + print("\033[1m"); + #else + print("user> "); + #endif std::string line; std::getline(std::cin, line); + #if PRETTY_PRINT + print("\033[0m"); + #endif // Exit with Ctrl-D if (std::cin.eof() || std::cin.fail()) {