Crayons.jl icon indicating copy to clipboard operation
Crayons.jl copied to clipboard

Crayons do not work with line breaks and with the standard Julia logging.

Open dmitry-v-vlasov opened this issue 6 years ago • 2 comments

using Crayons.Box
@info LIGHT_GRAY_FG("Hello,\nUniverse!")

image

dmitry-v-vlasov avatar Feb 02 '19 09:02 dmitry-v-vlasov

Maybe this issue should be closed, as it isn't a Crayons issue. It probably is a Julia-print-system issue or a logging.jl issue that could be mentioned in Crayons docs.

To see it isn't a Crayons issue, note that while 'Hello' printed ok in gray foreground, the at the beginning of the second line switched to cyan color. That is, the print-system or logging applied a color change that ignored and overrode the previous setting. Instead of changing back to previous color after that, the print-system or logging apparently set a default color.

I don't see any color changes in logging.jl and don't know where the cyan or green colors were set. In 1.7.0-rc2 REPL on my Linux system, white is the default color instead of green. Running your test code in a program file has the same result as in REPL.

A workaround might be to store the desired Crayon setup in a variable or function C, and reapply it after a \n. Eg, @info C("Hello,\n"), C("Universe!") or @info "$(C)Hello,\n$(C)Universe!". I'm not sure if the latter is feasible and don't know whether Crayons stores the current state aside from user-initiated stacking. I think it isn't able to detect from scratch what the state is.

ghjwp7 avatar Jan 20 '22 05:01 ghjwp7

as a quick & dirty workaround i would define a function that takes a Crayon c and a message String m and apply c for each of the "rows" of m:

image

(rdrw stands for redefine row wise :-) )

czylabsonasa avatar Jan 07 '23 18:01 czylabsonasa