""
to''
… There is nothing to highlight for SemanticDiff.Really? I definitely want to see that. I want to be deliberate about my code. I am not only targeting compiled code. I am also targeting developers through maintainable code.
I’m surprised they did not list an alternative that would be my preference: Highlight the entire string. The
f
prefix changes the entire text value type. I would like the `f´ to be highlighted strongly, and string it changes the interpretation of weakly, and the placeholder variable more strongly again.Many code formatters decide whether to use
"
or'
based on some configuration and whether the default one would require escaping. So if you are using such a code formatter, this is no longer a deliberate choice unless you explicitly override the behavior with annotations.I am not sure whether your solution of using a less intense color for the unchanged part of the string would make it clearer. It is just more similar to other diff tools that highlight the whole line with a less intense color if it contains changes.
Then with a code formatter you definitely want to show this change. In a normal usage the code formatter should ensure that this kind of diff can’t happen, then it’s useful to see if it was not used during a code review.
just stick a verification task in ci. if I have to check if the format matches the standard in a code review instead of reviewing meaningful things my time is being wasted
Yeah exactly, I’m not it was clear that it was what I meant by “the formatter should ensure …”
would make it clearer
Would make what clearer?
If I change a string to a raw string or an interpolated string, it is a semantic change on the entire string, even if it leads to consequential changes only on subsections of it. The next time or additional changes I make must take different semantics into account.
If the formatting configuration forces one specific style then that is the deliberate choice; to have that one.
If there is no uniform single string quoting it is useful to differentiate between them; for example if for normal strings
'
is preferred while for specific cases where escaping characters like\n
is required,"
must be used.
I like the way azure dev-ops do it, they highlight the entire line with a soft color and the changes with a harder one. Isn’t not semantic afaik.
I don’t see what’s the point of the second one if the syntax highlight, even in the first example, already shows a changed role.
A more realistic solution for the example code would be to setup a linter in the pipeline, and if one letter variables and/or template literals are detected, depending on how nice you are, reject the commit, or send an email requesting the author to be beaten up with a crowbar to the teamlead, and a copy, parsed by chatGPT for formality and politeness, to the HR.
that’s not a one letter template literal, that’s built in python syntax. it only has combinations of u r and f and no user defined option. f makes it templated
This is an interesting problem to mull over; thanks for posting it!
this is neat but also is a closed source extension. I use https://github.com/Wilfred/difftastic which doesn’t do quite as much and doesn’t integrate outside of git’s diff, but is still significantly better than nothing
I don’t speak python. Does the f in the top example affect string interpolation or something? If the above replaces {bar} and the below does not, highlight all after the equals sign would be my preference.
it allows string interpolation with the syntax in the photo
Options 1 and 3 make sense to me.
Option 2 feels like something specific:
Similar to cases like100
vs100U
with the second one denoting “unsigned”.