I think I understand the reason why it happens, but I'm not certain how to fix it, so this is more of an extended comment than an answer. The reason it happens is because rather than actually replacing things like ->
with the right arrow character, it only renders that character in the front end now. When you move the cursor into the symbol, it temporarily suspends that rendering. According to the Wolfram blog this was necessary to deal with auto replacing of things like [[
into the double bracket. With the new system, they say you can delete just a single bracket without deleting the entire double bracket. Specifically:
It might seem odd that it’s taken so many years to go from “automatic →” to “automatic 〚 〛”. But it’s a lot more subtle than you might think, and in fact it’s required a whole new as-you-type approach to code rendering. Back in Version 3.0, the idea was to replace -> with → when you type it. So, for example, if you then backspace one character, you’ll delete the whole →, rather than simply “removing the >” and reverting to -.
But if you’re dealing with [[ ... ]] you can’t just do this kind of “local replacement” without the potential for confusion with some ]] showing up as 〛 while others break apart into ]] as a result of routine editing.
In Version 12.3 what we’re doing is not to make replacements at all, but instead just to render specified sequences of characters (like ]]) in special ways. The result is that we can support very general “ligature-like” behavior, and that backspacing will always exactly reverse characters that were entered.
This is apparently controlled by AutoOperatorRenderings
which is an option for cells and notebooks. It says it's included in the Core.nb
stylesheet. I've never really dealt with stylesheets, but it sounds like there may be someway to edit the default stylesheet to eliminate the AutoOperatorRenderings
.
EDIT:
According to ilian and Jesse Friedman, the way to disable this function is CurrentValue[$FrontEnd, {StyleHints, "OperatorRenderings"}] = {}
. I thought I would add this to my answer since it's only been in the comments so far.
CurrentValue[$FrontEnd, {StyleHints, "OperatorRenderings"}] = {}
$\endgroup$