diff Misc/python-mode.el @ 8379:f5ebcc7a5ab2 legacy-trunk

(py-stringlit-re): Another ME patch to recognize SQTQs and DQTQs (single and double quoted triple quoted strings :-) with embedded single like-quotes. Also recognizes raw prefix.
author Barry Warsaw <barry@python.org>
date Tue, 19 May 1998 16:06:21 +0000
parents 7ac15f1e5302
children cd2dfed0c44b
line wrap: on
line diff
--- a/Misc/python-mode.el	Tue May 19 15:54:45 1998 +0000
+++ b/Misc/python-mode.el	Tue May 19 16:06:21 1998 +0000
@@ -403,9 +403,23 @@
 ;; Regexp matching a Python string literal
 (defconst py-stringlit-re
   (concat
-   "'\\([^'\n\\]\\|\\\\.\\)*'"		; single-quoted
+   ;; These fail if backslash-quote ends the string (not worth
+   ;; fixing?).  They precede the short versions so that the first two
+   ;; quotes don't look like an empty short string.
+   ;;
+   ;; (maybe raw), long single quoted triple quoted strings (SQTQ),
+   ;; with potential embedded single quotes
+   "[rR]?'''[^']*\\(\\('[^']\\|''[^']\\)[^']*\\)*'''"
+   "\\|"
+   ;; (maybe raw), long double quoted triple quoted strings (DQTQ),
+   ;; with potential embedded double quotes
+   "[rR]?\"\"\"[^\"]*\\(\\(\"[^\"]\\|\"\"[^\"]\\)[^\"]*\\)*\"\"\""
+   "\\|"
+   "[rR]?'\\([^'\n\\]\\|\\\\.\\)*'"	; single-quoted
    "\\|"				; or
-   "\"\\([^\"\n\\]\\|\\\\.\\)*\""))	; double-quoted
+   "[rR]?\"\\([^\"\n\\]\\|\\\\.\\)*\""	; double-quoted
+   ))
+
 
 ;; Regexp matching Python lines that are continued via backslash.
 ;; This is tricky because a trailing backslash does not mean
@@ -2801,6 +2815,10 @@
 ;; statement we need to skip over the continuation lines.  Tricky:
 ;; Again we need to be clever to avoid quadratic time behavior.
 (defun py-goto-beyond-final-line ()
+  ;; TEST ADDED BY MDE; not quite the right solution
+  (if (looking-at (concat "[ \t]*\\(" py-stringlit-re "\\)"))
+      (goto-char (match-end 0)))
+  ;;
   (forward-line 1)
   (let (state)
     (while (and (py-continuation-line-p)