Donate Share

python-mode.el for Emacs and XEmacs

Tracker: Patches

5 Handle triple-quoted strings correctly: take 2 - ID: 1770556
Last Update: Comment added ( glasserc )

This patch uses font-lock-mode's syntactic keyword feature to ensure that
triple quoted strings are displayed correctly. In particular, it defines a
font-lock-syntactic-keywords table that finds any quote marks that should
not be considered string delimiters because they occur inside triple-quoted
strings, and sets their syntactic designation to "normal punctuation" (the
same designation used for e.g. operators).

This is a more principled approach than my previous attempt to fix
python-mode's handling of triple-quoted strings [1], and as a result the
patch is about a third as big, and should never incur any serious
overhead.

This patch has been tested successfully on the following emacs variants:

XEmacs 21.4 (patch 13) (i386-redhat-linux)
XEmacs 21.4 (patch 17) (i386-debian-linux)
GNU Emacs 21.3.1 (i386-wingw-nt5.1.2600)
GNU Emacs 21.3.1 (i386-redhat-linux-gnu)
GNU Emacs 22.0.50.1 (powerpc-apple-darwin8.3.0)

I am also including the file test-triple-strings.py, which contains a bunch
of test cases to make sure the mode is working correctly. This file is
*not* intended to be run -- it is intended to be opened in python-mode, and
examined by hand to verify that the correct faces are used. I included
test cases for every corner case that I thought of (e.g. interactions
between backslashes and quotes, and cases with more than 3 quotes in a
row).

The new behavior can be turned off using the customization constant
"py-syntactic-triple-quoted-strings" (default=t), but I don't expect that
to ever be necessary.

I am retiring my previous patch with the same goal [1] -- this patch
supsercedes it.

If this patch looks acceptable, let me know, and I can commit it. (Or feel
free to commit it yourself.) It might be good to include the test file,
possibly in a "tests/" subdirectory.

[1]
http://sourceforge.net/tracker/index.php?func=detail&aid=1023335&group_id=8
6916&atid=581351


Edward Loper ( edloper ) - 2007-08-09 01:53

5

Open

None

Nobody/Anonymous

None

None

Public


Comments ( 2 )

Date: 2007-08-10 07:07
Sender: glasserc


Hi,

I'm not qualified to review your patch, but I did test it on my machine:
XEmacs 21.4 (patch 20) (i386-debian-linux). It works better than the last
patch, including not being confused by colons or parens inside strings.
Thanks for your time and effort!

Ethan


Date: 2007-08-09 01:55
Sender: edloper


File Added: test-triple-strings.py


Attached Files ( 2 )

Filename Description Download
python-mode-tqs.diff Unified diff vs. revision 461. Download
test-triple-strings.py Test file for triple-quoted string handling in python-mode Download

Changes ( 2 )

Field Old Value Date By
File Added 240490: test-triple-strings.py 2007-08-09 01:55 edloper
File Added 240489: python-mode-tqs.diff 2007-08-09 01:53 edloper