Index: trac/mimeview/tests/pygments_renderer.py
===================================================================
--- trac/mimeview/tests/pygments_renderer.py	(revision 4575)
+++ trac/mimeview/tests/pygments_renderer.py	(working copy)
@@ -46,6 +46,8 @@
     def _test(self, expected_id, result):
         expected = str(self._expected(expected_id))
         result = str(result)
+        print "E: " + expected
+        print "R: " + result
         expected, result = expected.splitlines(), result.splitlines()
         for exp, res in zip(expected, result):
             self.assertEquals(exp, res)
Index: trac/mimeview/tests/pygments.html
===================================================================
--- trac/mimeview/tests/pygments.html	(revision 4575)
+++ trac/mimeview/tests/pygments.html	(working copy)
@@ -13,20 +13,15 @@
   <body>
     <h1>Pygments Renderer Test Cases</h1>
     <br />
-    <div id="python_hello">
-<span class="k">def</span><span class=""> </span><span class="nf">hello</span><span class="">():
+    <div id="python_hello"><span class="k">def</span> <span class="nf">hello</span>():
+        <span class="k">return</span> <span class="s">"Hello World!"</span>
+</div>
+    <div id="python_hello_mimeview"><div class="code"><pre><span class="k">def</span><span class=""> </span><span class="nf">hello</span><span class="">():
         </span><span class="k">return</span><span class=""> </span><span class="s">"Hello World!"</span><span class="">
-</span>
-    </div>
-    <div id="python_hello_mimeview">
-<div class="code"><pre><span class="k">def</span><span class=""> </span><span class="nf">hello</span><span class="">():
-        </span><span class="k">return</span><span class=""> </span><span class="s">"Hello World!"</span><span class="">
 </span></pre></div>
     </div>
     <div id="empty_content">
-<span class="">
-</span>
-    </div>
+</div>
     <hr />
   </body>
 </html>
Index: trac/mimeview/pygments_renderer.py
===================================================================
--- trac/mimeview/pygments_renderer.py	(revision 4575)
+++ trac/mimeview/pygments_renderer.py	(working copy)
@@ -224,21 +224,26 @@
 
             def _generate():
                 lattrs = None
+                t = []
 
                 for ttype, value in tokens:
-                    attrs = Attrs([('class', self._get_css_class(ttype))])
+                    attrs = self._get_css_class(ttype)
 
                     if attrs == lattrs:
-                        yield TEXT, value, pos
+                        t.append(value)
 
                     elif value: # if no value, leave old span open
+                        yield TEXT, u''.join(t), pos
                         if lattrs:
                             yield END, span, pos
                         lattrs = attrs
                         if attrs:
-                            yield START, (span, attrs), pos
-                        yield TEXT, value, pos
+                            a = Attrs([('class', attrs)])
+                            yield START, (span, a), pos
+                        t = [value]
 
+                if t:
+                    yield TEXT, u''.join(t), pos
                 if lattrs:
                     yield END, span, pos
 

