clear screen and show top debug trace

This commit is contained in:
Ben Burdette 2022-01-08 15:43:04 -07:00
parent a963674d88
commit 990bec78d3

View file

@ -77,8 +77,30 @@ ref<EvalState> EvalCommand::getEvalState()
searchPath, getEvalStore(), getStore());
if (startReplOnEvalErrors)
debuggerHook = [evalState{ref<EvalState>(evalState)}](const Error * error, const Env & env, const Expr & expr) {
std::cout << "\033[2J\033[1;1H";
if (error)
printError("%s\n\n" ANSI_BOLD "Starting REPL to allow you to inspect the current state of the evaluator.\n" ANSI_NORMAL, error->what());
else
{
auto iter = evalState->debugTraces.begin();
if (iter != evalState->debugTraces.end()) {
std::cout << "\n" << "" << iter->hint.str() << "\n";
if (iter->pos.has_value() && (*iter->pos)) {
auto pos = iter->pos.value();
std::cout << "\n";
printAtPos(pos, std::cout);
auto loc = getCodeLines(pos);
if (loc.has_value()) {
std::cout << "\n";
printCodeLines(std::cout, "", pos, *loc);
std::cout << "\n";
}
}
}
}
if (expr.staticenv)
{