Subject: bug#10960: linum-mode does not work properly when changing font size

From: Eli Zaretskii <[email-masked]>
Date: Sat, 10 Mar 2012 23:50:12 +0200

> From: Stefan Monnier <[email-masked]>
> Cc: Eli Zaretskii <[email-masked]>,  [email-masked],  [email-masked]
> Date: Sat, 10 Mar 2012 13:28:52 -0500
> 
> > The problem with that answer is that it is maximally unhelpful.  Every
> > package that wants to use the margin will have to be defensively coded
> > against text-scale-*.
> 
> You mean, that text-scale-* makes the problem more common significant?
> Maybe so, yes.  But I don't think that just special-handling
> text-scale-* would be a good solution.

Special-casing it was not what I had in mind.

> We need some more general way to adjust the size of the margin to
> the size of the images&text displayed there, so as to handle
> non-default faces, proportional text, ...

It all boils down to calculating the size of the margins in pixels.
The key to that is window_box_width, which uses
WINDOW_FRAME_COLUMN_WIDTH to convert columns into pixels, and
WINDOW_FRAME_COLUMN_WIDTH returns the "canonical" width of a column,
which is an average width of the default face's font.

So all it takes is to make that calculation aware of face remapping,
images displayed in the margin, etc.