MagicStack/MagicPython

Wrong highlight for raw string

alexr00 opened this issue · 5 comments

  • Editor name and version: VS Code 1.81.1
  • Platform: any
  • Color scheme: any
  • MagicPython version: 7d0f2b2
  • A sreenshot:
    Expected
    image

Actual: The \ of a raw string is the \ and not the escape character, but the hignlight still treats them as escapes.
image

  • 5-10 lines of surrounding code:
print(r"C:\Users\test")

Originally from @AuroraTea in microsoft/vscode#190519

The issue was mentioned here back in 2020. The link contains some extra information that may be helpful.

The issue was closed there so that it could be reported somewhere more relevant instead, namely this repository.

DG119 commented

apparently it is a feature.
Check this reply:
#114 (comment)

r is for RE, use R for raw string

apparently it is a feature.
[...]
r is for RE, use R for raw string

AFAIK this is not a standard defined in any PEP, and popular code formatter such as black will convert any R'' strings into r'' by default.

I get the reasoning behind this decision, and there were some arguments for it since TextMate and Sublime Text both highlight Python syntax this way by default, but with the widespread use of VSCode these days (which does not highlight raw strings in Python this way by default) this argument seems outdated. Ideally this idiosyncratic highlighting could be made optional, preferably off by default.

AFAIK this is not a standard defined in any PEP, and popular code formatter such as black will convert any R'' strings into r'' by default.

Black specifically does not change R'' to r'' because of syntax highlighters treating the two differently. See https://black.readthedocs.io/en/stable/the_black_code_style/current_style.html#r-strings-and-r-strings.

I struggled against this issue for a while coming from PyCharm to VSCode. Using some resources found online for editing TokenColorCustimizations and TextMateRules in the JSON settings, I was able to create a custom workaround at the link below. It's annoying having to manually enter hex codes for the colors to all match the way you'd expect inside of an r-string, but unless you are a person who changes themes often you should only have to make the edits once.

Instructions for adding the code to your VSCode user settings are contained in the .txt file here:
https://github.com/tylercowdreywadnr/VSCode_rstring_color_hack