mirror of
https://github.com/nim-lang/Nim.git
synced 2026-04-19 14:00:35 +00:00
msgs: One msgWriteln with optional flags
Instead of msgWriteln, outWriteln and stdoutWriteln doing essentially the same.
This commit is contained in:
@@ -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":
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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))
|
||||
|
||||
Reference in New Issue
Block a user