On Sat, Oct 12, 2024 at 08:51:08PM +0100, Gavin Smith wrote:
> Here's an attempt at explaining it:
> 
> pl_chars is the current column.  We want to find the next multiple of 8
> after the current column, assuming a tab is 8 spaces.  We add 8 to the
> current column, and then subtract the remainder when this result is
> divided by 8.
> 
> For example 
> 
> A.  21 + 8 = 28, 
> B.  Then 28 mod 8 = 4
> C.  28 - 4 = 24.
> D.  Finally, we take away the starting point: 24 - 21 = 3.
> 
> So we output 3 spaces to get up to 24 columns.
> 
> (n & 0xf8) is supposed to do steps B and C combined
> as the binary representation of 0xf8 is 1111 1000 so the result has
> to be a multiple of 8.
> 
> However, this doesn't work if there are more than 255 columns (which is
> unlikely, though).

Thanks!

I added a comment based on your explanation.

-- 
Pat

Reply via email to