#26 Handle triple-quoted strings correctly: take 2


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 (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=86916&atid=581351


  • Edward Loper

    Edward Loper - 2007-08-09

    Unified diff vs. revision 461.

  • Edward Loper

    Edward Loper - 2007-08-09

    Logged In: YES
    Originator: YES

    File Added: test-triple-strings.py

  • Edward Loper

    Edward Loper - 2007-08-09

    Test file for triple-quoted string handling in python-mode

  • Ethan Glasser-Camp

    Logged In: YES
    Originator: NO


    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!



Get latest updates about Open Source Projects, Conferences and News.

Sign up for the SourceForge newsletter:

No, thanks