MattDMo/PythonImproved

Error in coloring of raw python strings

Grokzen opened this issue · 14 comments

I loaded this piece of code into ST3 and when the following text was parsed as a raw string it caused a major coloring error. I guess it fails out because when [ ] is used inside a string it tries to match them and color the content.

image

Solutions that solves the problem temporarily is to remove the r before the string and then escape all special characters inside the string. This is not a desired solution tho.

Thanks for the feedback. Could you please post the plain text of the code you're using so I can test it?

This might not help anything but i am running the following theme and scheme

"color_scheme": "Packages/Color Scheme - Default/Monokai.tmTheme",
"theme": "Flatland Dark.sublime-theme",

Strange. Using the Neon Color Scheme, ST3 Build 3075 (just released yesterday), and the latest version of Python Improved, your code looks fine to me:

issue_34_neon

Are you sure you're running the latest version of Python Improved?

It also doesn't seem to be an issue with Monokai:

issue_34_monokai

I tried neon color scheme and i am running on the latest ST3 (3075) release and it bugs out anyway

Mkay, it apeared to be some random bug or something because i started to disable and enable packages and when i disabled all python related, then PyImproved then Python and renable them in the reverse order everything cleared out and now it renders correctly O.o

Closing this because there is no point of having it open now :] Thanks for the help anyway

No problem. Glad you got it fixed!

I don't know if the below highlighting bug (is it?) is in any way related to the issue, but this seemed to be the right place to post it.

From the source code of http.cookies:

MCVE:

Removing the r suffix solves the problem. The default Python syntax definition for ST3 gives the same result.

So this is either a problem with Sublime itself and bracket matching, or with the regex syntax definition. Just to be sure, I've cloned the regex syntax def from the original Python package and added it to PI with a few initial changes, unfortunately none that will address this issue. Feel free to hack at it and see what you think.

The referenced issue is fixed in 3095 (and will be very hard to fix with tmLanguage syntax because of how it's structured).

In the default Python syntax def, you can use an upper case R before the string to still get a raw string but not automatic regexp syntax highlighting.

This should be semi-fixed in the new 2.1 release I'm about to push - see #25. Here's how it looks using raw-regex (lowercase r):

screen shot 2015-12-04 at 12 55 14 pm

and here's how it looks using raw (uppercase R):

screen shot 2015-12-04 at 12 56 19 pm

I'm going to leave this issue open for now, just on the off chance that someone can figure out how to tweak either the main syntax or the regex syntax to make everything work with raw-regex. If you have any thoughts, please share!

See also jskinner/DefaultPackages#173 and probably others