Subject: bug#34476: fluffy whitespace in the mode-line, despite it running off the screen

From: Lars Ingebrigtsen <[email-masked]>
Date: Fri, 07 Aug 2020 13:41:15 +0200

Eli Zaretskii <[email-masked]> writes:

>> +	  char c = ostring[i];
>> +	  if (!(c == ' ' && prev == ' '))
>> +	    {
>> +	      *s++ = c;
>> +	      prev = c;
>> +	    }

[...]

> Ouch!  This is Lisp converted into C, yes?

If that looks like Lisp to you...  :-)

> And it formats the mode-line twice: once in format-mode-line, then
> again in display_string, right?

No, display_string just displays the string, I think?

> You don't need all this inelegance.  After display_mode_element
> returns, you have all the glyphs it produced in it.glyph_row, so you
> can simply remove the unneeded space glyphs from the glyph row (and
> adjust the metrics accordingly).  Let me know if you need more
> detailed help in how to do that.

That seems like a lot more work, I think?  And I don't see how that
could be more efficient than just removing the characters from the C
string?

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no