Summary: | Python syntax highlighter thinks escaped quote at end of triple quote comment string is part of string delimiter | ||
---|---|---|---|
Product: | [Frameworks and Libraries] frameworks-syntax-highlighting | Reporter: | Linus Kardell <linus.kardell> |
Component: | syntax | Assignee: | KWrite Developers <kwrite-bugs-null> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | nate, nibgonz |
Priority: | NOR | ||
Version: | unspecified | ||
Target Milestone: | --- | ||
Platform: | openSUSE | ||
OS: | Linux | ||
Latest Commit: | https://commits.kde.org/syntax-highlighting/2627d3e421f6e5973258688c50a1391988500cac | Version Fixed In: | |
Sentry Crash Report: | |||
Attachments: | Example of incorrect highlighting |
Proposed patch: https://phabricator.kde.org/D14062 Git commit 2627d3e421f6e5973258688c50a1391988500cac by Dominik Haumann, on behalf of Nibaldo González. Committed on 14/07/2018 at 11:11. Pushed by dhaumann into branch 'master'. Python: fix escapes in quoted-comments Summary: Escape characters are not detected in triple-quote comments. Comments in quotes are literal strings that do not have assignment or operations, so the interpreter ignores them. These are also used to associate documentation with objects, using the `__doc__` attribute (Docstrings [1][2]). Comments in quotes support the same escapes as normal string. Also, since these can be used as documentation strings, I believe that the correct way is to use the same string escape highlight. * [1] Python. PEP 257 -- Docstring Conventions: https://www.python.org/dev/peps/pep-0257/ * [2] Python docstrings: http://www.pythonforbeginners.com/basics/python-docstrings Reviewers: #framework_syntax_highlighting, #kate, dhaumann, cullmann Reviewed By: #framework_syntax_highlighting, #kate, dhaumann Subscribers: ngraham, kwrite-devel, kde-frameworks-devel Tags: #kate, #frameworks Differential Revision: https://phabricator.kde.org/D14062 M +5 -0 autotests/folding/test.py.fold M +5 -0 autotests/html/test.py.html M +5 -0 autotests/input/test.py M +5 -0 autotests/reference/test.py.ref M +5 -4 data/syntax/python.xml https://commits.kde.org/syntax-highlighting/2627d3e421f6e5973258688c50a1391988500cac |
Created attachment 108764 [details] Example of incorrect highlighting If you type a triple quote string in a Python document, and put an escaped quote character at the end of the string, Kate will think the quote character is part of the end delimiter of the string. This only happens for ineffectual strings, which are treated as comments. I you do something with the string, e.g. assign it to a variable. For example, if you type the below code, "print('test')" will be treated as part of the string: print """test\"""" print('test') And if you type the below, the string will be treated as terminated, even though it's not: """test\""" Both programs in the screenshot are valid programs printing test, though though the highlighter would have you think they're not.