Bug 386685 - Python syntax highlighter thinks escaped quote at end of triple quote comment string is part of string delimiter
Summary: Python syntax highlighter thinks escaped quote at end of triple quote comment...
Status: RESOLVED FIXED
Alias: None
Product: frameworks-syntax-highlighting
Classification: Frameworks and Libraries
Component: syntax (show other bugs)
Version: unspecified
Platform: openSUSE Linux
: NOR normal
Target Milestone: ---
Assignee: KWrite Developers
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2017-11-09 18:00 UTC by Linus Kardell
Modified: 2018-07-14 11:11 UTC (History)
2 users (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments
Example of incorrect highlighting (3.02 KB, image/png)
2017-11-09 18:00 UTC, Linus Kardell
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Linus Kardell 2017-11-09 18:00:07 UTC
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.
Comment 1 Nibaldo G. 2018-07-12 06:51:50 UTC
Proposed patch: https://phabricator.kde.org/D14062
Comment 2 Dominik Haumann 2018-07-14 11:11:56 UTC
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