I have also been using proportional fonts for at least 10-15 years.
I used to use all the column alignment tricks like the one you showed, and stuff like this:
do_something_special(first_argument,
second_argument,
third_argument);
Then one day I renamed a function and the length of its name changed, and I had to go through all the code and line things back up again.
So I abandoned this kind of column alignment completely and switched to a purely indentation-based format:
do_something_special(
first_argument,
second_argument,
third_argument
);
(Assume for the sake of discussion that those arguments are long enough that they need to be on separate lines.)
That's when the proverbial light went on. I thought, "since I'm not using column alignment any more, why not try a proportional font?"
I did just that, and never looked back. If you're not doing column alignment, proportional fonts work just fine.
Where I currently work, most of our code is in Python. We used to use the YAPF formatter with Google's settings that are full of column alignment. Last year we switched to Black, and I noticed something interesting.
Black-formatted code does not use column alignment at all. It uses only indentation, as in your second example and my second example. So it is just as readable in a proportional font as in monospaced!
My current coding font is something I call Trebuchet++. It's based on Trebuchet MS, but with a few customizations that I like for code: a better tilde glyph (the one in Trebuchet MS look too much like a hyphen), a little extra space before and after a dot, and a sneaky trick to make names_with_underscores more readable: I reduced the width that the underscore takes up but extended the underscore below the text before and after it. These last two adjustments fix a problem with stuff like foo_bar_baz.moo_mar_maz() where the underscores are wider than the dot, creating the wrong visual grouping.