<p dir="auto">It's currenty hard to read TypeScript errors in VS Code:</p>
<p dir="auto"><a target="_blank" rel="noopener noreferrer nofollow" href="https://cloud.githubusercontent.com/assets/9283914/12127104/99089e0c-b3f5-11e5-989e-93c11f91b98a.png"><img src="https://cloud.githubusercontent.com/assets/9283914/12127104/99089e0c-b3f5-11e5-989e-93c11f91b98a.png" alt="errors 1" style="max-width: 100%;"></a><br>
<br><br>
There is a <code class="notranslate">--pretty</code> option for TypeScript, but AFAIK it doesn't show any effect when applying it using <code class="notranslate">gulp-typescript</code> or other task runner plug-ins.</p>
<p dir="auto">So I'd like to suggest to support colored messages in Output window.<br>
<br><br>
VS Code may be "skinned", or, "themed", which may cause interference with colored Output text. So if you decide to implement colored Output text I suggest to change Output colors like the following if their respective brightness will be getting too close to the Output panel's background color brightness:</p>
<div class="highlight highlight-source-js notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="/** Class definition for RGB color.
  */
class Rgb
{
  constructor( public r: number
             , public g: number
             , public b: number
             , public name: string
             );

  get isBright() : boolean { return r + g + b &gt; 348; }
  get isDark() : boolean { return !isBright(); }

  /** converts blue &lt;=&gt; darkblue; red &lt;=&gt; darkred; white &lt;=&gt; black, etc. */
  function inverseLuminance() : Rgb { ...; return this; }
}



/** Function used by the Output panel for setting the panel's text color.
  * @param textColor - Text color requested by task runner for output.
  * @param bgColor - Output panel background color.
  */
function getTextColor(textColor: Rgb, bgColor: Rgb) : Rgb
{
  // If the brightness of the desired color is too close to the brightness
  // of the Output panel's background color, inverse the desired color's
  // luminance, i.e. switch from yellow to darkyellow etc.
  if (Math.abs((textColor.r + textColor.g + textColor.b)
     - (bgColor.r + bgColor.g + bgColor.b)) &lt; 30
     )
  {
    return textColor.inverseLuminance();
  }

  return textColor;
}
"><pre class="notranslate"><span class="pl-c">/** Class definition for RGB color.</span>
<span class="pl-c">  */</span>
<span class="pl-k">class</span> <span class="pl-v">Rgb</span>
<span class="pl-kos">{</span>
  <span class="pl-c1">constructor</span><span class="pl-kos">(</span> <span class="pl-s1">public</span> <span class="pl-s1">r</span>: <span class="pl-s1">number</span>
             <span class="pl-kos">,</span> <span class="pl-s1">public</span> <span class="pl-s1">g</span>: <span class="pl-s1">number</span>
             <span class="pl-kos">,</span> <span class="pl-s1">public</span> <span class="pl-s1">b</span>: <span class="pl-s1">number</span>
             <span class="pl-kos">,</span> <span class="pl-s1">public</span> <span class="pl-s1">name</span>: <span class="pl-s1">string</span>
             <span class="pl-kos">)</span><span class="pl-kos">;</span>

  <span class="pl-k">get</span> <span class="pl-en">isBright</span><span class="pl-kos">(</span><span class="pl-kos">)</span> : <span class="pl-s1">boolean</span> <span class="pl-kos">{</span> <span class="pl-k">return</span> <span class="pl-s1">r</span> <span class="pl-c1">+</span> <span class="pl-s1">g</span> <span class="pl-c1">+</span> <span class="pl-s1">b</span> <span class="pl-c1">&gt;</span> <span class="pl-c1">348</span><span class="pl-kos">;</span> <span class="pl-kos">}</span>
  <span class="pl-k">get</span> <span class="pl-en">isDark</span><span class="pl-kos">(</span><span class="pl-kos">)</span> : <span class="pl-s1">boolean</span> <span class="pl-kos">{</span> <span class="pl-k">return</span> <span class="pl-c1">!</span><span class="pl-en">isBright</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span> <span class="pl-kos">}</span>

  <span class="pl-c">/** converts blue &lt;=&gt; darkblue; red &lt;=&gt; darkred; white &lt;=&gt; black, etc. */</span>
  <span class="pl-c1">function</span><span class="pl-kos"></span> <span class="pl-en">inverseLuminance</span><span class="pl-kos">(</span><span class="pl-kos">)</span> : <span class="pl-v">Rgb</span> <span class="pl-kos">{</span> ...<span class="pl-kos">;</span> <span class="pl-k">return</span> <span class="pl-smi">this</span><span class="pl-kos">;</span> <span class="pl-kos">}</span>
<span class="pl-kos">}</span>



<span class="pl-c">/** Function used by the Output panel for setting the panel's text color.</span>
<span class="pl-c">  * <span class="pl-k">@param</span> textColor - Text color requested by task runner for output.</span>
<span class="pl-c">  * <span class="pl-k">@param</span> bgColor - Output panel background color.</span>
<span class="pl-c">  */</span>
<span class="pl-k">function</span> <span class="pl-en">getTextColor</span><span class="pl-kos">(</span><span class="pl-s1">textColor</span>: <span class="pl-v">Rgb</span><span class="pl-kos">,</span> <span class="pl-s1">bgColor</span>: <span class="pl-v">Rgb</span><span class="pl-kos">)</span> : <span class="pl-v">Rgb</span>
<span class="pl-kos">{</span>
  <span class="pl-c">// If the brightness of the desired color is too close to the brightness</span>
  <span class="pl-c">// of the Output panel's background color, inverse the desired color's</span>
  <span class="pl-c">// luminance, i.e. switch from yellow to darkyellow etc.</span>
  <span class="pl-k">if</span> <span class="pl-kos">(</span><span class="pl-v">Math</span><span class="pl-kos">.</span><span class="pl-en">abs</span><span class="pl-kos">(</span><span class="pl-kos">(</span><span class="pl-s1">textColor</span><span class="pl-kos">.</span><span class="pl-c1">r</span> <span class="pl-c1">+</span> <span class="pl-s1">textColor</span><span class="pl-kos">.</span><span class="pl-c1">g</span> <span class="pl-c1">+</span> <span class="pl-s1">textColor</span><span class="pl-kos">.</span><span class="pl-c1">b</span><span class="pl-kos">)</span>
     <span class="pl-c1">-</span> <span class="pl-kos">(</span><span class="pl-s1">bgColor</span><span class="pl-kos">.</span><span class="pl-c1">r</span> <span class="pl-c1">+</span> <span class="pl-s1">bgColor</span><span class="pl-kos">.</span><span class="pl-c1">g</span> <span class="pl-c1">+</span> <span class="pl-s1">bgColor</span><span class="pl-kos">.</span><span class="pl-c1">b</span><span class="pl-kos">)</span><span class="pl-kos">)</span> <span class="pl-c1">&lt;</span> <span class="pl-c1">30</span>
     <span class="pl-kos">)</span>
  <span class="pl-kos">{</span>
    <span class="pl-k">return</span> <span class="pl-s1">textColor</span><span class="pl-kos">.</span><span class="pl-en">inverseLuminance</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
  <span class="pl-kos">}</span>

  <span class="pl-k">return</span> <span class="pl-s1">textColor</span><span class="pl-kos">;</span>
<span class="pl-kos">}</span></pre></div>
<br>
This will result in considerably better legible output messages:
<p dir="auto"><a target="_blank" rel="noopener noreferrer nofollow" href="https://cloud.githubusercontent.com/assets/9283914/12128094/75ffdd34-b3fb-11e5-9955-dfba9ea526af.png"><img src="https://cloud.githubusercontent.com/assets/9283914/12128094/75ffdd34-b3fb-11e5-9955-dfba9ea526af.png" alt="errors 2" style="max-width: 100%;"></a></p>
<p dir="auto"><em>(Text color for task runner's time stamp and basic logging information is suggested to be lightgray. Default task output text color is suggested to be white.)</em><br>
<br><br>
<br></p>
<p dir="auto">We have a <a href="https://github.com/Microsoft/vscode/blob/master/src/vs/workbench/services/statusbar/common/statusbarService.ts#L45">IStatusBarService</a> and <a href="https://github.com/Microsoft/vscode/blob/master/src/vs/workbench/services/message/browser/messageService.ts#L135">IMessageService.setStatusMessage</a> which looks like duplication or re-exporting. Should we move the setStatusMessage feature into the status bar service?</p>