forked from lix-project/lix
clear screen and show top debug trace
This commit is contained in:
parent
a963674d88
commit
990bec78d3
|
@ -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)
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue