msgs: One msgWriteln with optional flags

Instead of msgWriteln, outWriteln and stdoutWriteln doing essentially the same.
This commit is contained in:
Adam Strzelecki
2015-10-22 22:07:56 +02:00
parent a90e23a4dd
commit acb6a36656
3 changed files with 19 additions and 24 deletions

View File

@@ -317,11 +317,12 @@ proc mainCommand* =
(key: "lib_paths", val: libpaths)
]
outWriteln($dumpdata)
msgWriteln($dumpdata, {msgStdout, msgSkipHook})
else:
outWriteln("-- list of currently defined symbols --")
for s in definedSymbolNames(): outWriteln(s)
outWriteln("-- end of list --")
msgWriteln("-- list of currently defined symbols --",
{msgStdout, msgSkipHook})
for s in definedSymbolNames(): msgWriteln(s, {msgStdout, msgSkipHook})
msgWriteln("-- end of list --", {msgStdout, msgSkipHook})
for it in iterSearchPath(searchPaths): msgWriteln(it)
of "check":

View File

@@ -727,20 +727,23 @@ proc `??`* (info: TLineInfo, filename: string): bool =
var gTrackPos*: TLineInfo
proc outWriteln*(s: string) =
## Writes to stdout. Always.
if eStdOut in errorOutputs:
writeLine(stdout, s)
flushFile(stdout)
type
MsgFlag* = enum ## flags altering msgWriteln behavior
msgStdout, ## force writing to stdout, even stderr is default
msgSkipHook ## skip message hook even if it is present
MsgFlags* = set[MsgFlag]
proc msgWriteln*(s: string) =
## Writes to stderr. If --stdout option is given, writes to stdout instead.
proc msgWriteln*(s: string, flags: MsgFlags = {}) =
## Writes given message string to stderr by default.
## If ``--stdout`` option is given, writes to stdout instead. If message hook
## is present, then it is used to output message rather than stderr/stdout.
## This behavior can be altered by given optional flags.
#if gCmd == cmdIdeTools and optCDebug notin gGlobalOptions: return
if not isNil(writelnHook):
if not isNil(writelnHook) and msgSkipHook notin flags:
writelnHook(s)
elif optStdout in gGlobalOptions:
elif optStdout in gGlobalOptions or msgStdout in flags:
if eStdOut in errorOutputs:
writeLine(stdout, s)
flushFile(stdout)
@@ -751,15 +754,6 @@ proc msgWriteln*(s: string) =
when defined(windows):
flushFile(stderr)
proc stdoutWriteln*(s: string) =
## Writes to stdout.
## Should be used only for VM time equivalents to procs outputting to stdout.
if not isNil(writelnHook):
writelnHook(s)
else:
writeLine(stdout, s)
flushFile(stdout)
macro callIgnoringStyle(theProc: typed, first: typed,
args: varargs[expr]): stmt =
let typForegroundColor = bindSym"ForegroundColor".getType

View File

@@ -811,13 +811,13 @@ proc rawExecute(c: PCtx, start: int, tos: PStackFrame): TFullReg =
of opcEcho:
let rb = instr.regB
if rb == 1:
stdoutWriteln(regs[ra].node.strVal)
msgWriteln(regs[ra].node.strVal, {msgStdout})
else:
var outp = ""
for i in ra..ra+rb-1:
#if regs[i].kind != rkNode: debug regs[i]
outp.add(regs[i].node.strVal)
stdoutWriteln(outp)
msgWriteln(outp, {msgStdout})
of opcContainsSet:
decodeBC(rkInt)
regs[ra].intVal = ord(inSet(regs[rb].node, regs[rc].regToNode))