/*============================================================================= * MENU */ int inputMenu(int k, int e) { if(consoleIsActive()) { consoleInput(k, e); inputK_key = inputE_key = 0; } else { inputK_key = k; inputE_key = e; bInput(); } inputMouseR = 0; }
static DebugWaitFor cmder(debugOptPo opts, processPo p, methodPo mtd, termPo loc, insWord ins) { static bufferPo cmdBuffer = Null; if (cmdBuffer == Null) cmdBuffer = newStringBuffer(); while (interactive) { dbgPrompt(p); clearBuffer(cmdBuffer); setEditLineCompletionCallback(cmdComplete, (void *) opts); retCode res = (debuggerListener == Null ? consoleInput(cmdBuffer) : inLine(debugInChnnl, cmdBuffer, "\n")); clearEditLineCompletionCallback(); switch (res) { case Eof: return quitDbg; case Ok: { integer cmdLen = 0; char *cmdLine = getTextFromBuffer(cmdBuffer, &cmdLen); cmdLine = defltLine(cmdLine, cmdLen, &cmdLen); codePoint cmd; integer nxt = 0; cmd = nextCodePoint(cmdLine, &nxt, cmdLen); if (isNdChar((codePoint) cmd)) { cmd = 'n'; nxt = 0; } for (int ix = 0; ix < opts->count; ix++) { if (opts->opts[ix].c == cmd) return opts->opts[ix].cmd(&cmdLine[nxt], p, loc, ins, opts->opts[ix].cl); } outMsg(debugOutChnnl, "invalid debugger command: %s\n", cmdLine); } default: for (int ix = 0; ix < opts->count; ix++) outMsg(debugOutChnnl, "%s\n", opts->opts[ix].usage); flushFile(debugOutChnnl); return moreDebug; } } return moreDebug; }