Issue #9208 has been updated by luislavena (Luis Lavena).

Status changed from Open to Assigned

Thank you snaury,

That is correct, the addition of the ConEmu presence was something reported early on (#8201) that affected some users using Ruby under ConEmu.

I can say that color performance under ConEmu is considerably slower than native in Ruby itself, even they are using the same functions (I think is due the injection of code).

Assigned to nobu for approval before applying.
----------------------------------------
Bug #9208: Win32 ANSI color no longer works since revision 43331
https://bugs.ruby-lang.org/issues/9208#change-43398

Author: snaury (Alexey Borzenkov)
Status: Assigned
Priority: Normal
Assignee: nobu (Nobuyoshi Nakada)
Category: 
Target version: 
ruby -v: ruby 2.1.0dev (2013-12-03 trunk 43983) [i386-mingw32]
Backport: 1.9.3: UNKNOWN, 2.0.0: UNKNOWN


In revision 43331 in file win32/win32.c function console_emulator_p was added, which supposedly checked for patched WriteConsoleW. However, since WriteConsoleW points to a stub (which does jmp [import]), the allocation base address is always 0x400000 (i.e. ruby.exe), which is never equal to kernel32.dll. Because of this colors on ruby trunk never work on Windows anymore.

Attached patch fixes the problem and still detects conemu (i.e. whether WriteConsoleW is patched or not).

P.S. I don't understand why ruby needs to detect conemu? Console attributes and colors work in conemu as is, i.e. console_emulator_p could just always return FALSE, and everything seems to work correctly. However when conemu is detected and ruby tries to output ansi codes colors actually don't work on my Win7 x64 for some weird reason. Seems like this emulator detection does more harm than good.


-- 
http://bugs.ruby-lang.org/