From: Stefan Monnier <monnier@iro.umontreal.ca>
Date: Thu, 1 Mar 2007 15:07:45 +0000 (+0000)
Subject: (python-quote-syntax): Don't bother with syntax-ppss-context.
X-Git-Tag: emacs-pretest-22.0.95~11
X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=fc553234b5d93ae3ab0235b00a3d9fbcc5e74f4c;p=emacs.git

(python-quote-syntax): Don't bother with syntax-ppss-context.
(python-fill-paragraph): Make sure that fenced-string delimiters that
stand on their own line stay there
---

diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 6e4800031e6..9526dbfb9fe 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,10 @@
+2007-03-01  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* progmodes/python.el (python-quote-syntax): Don't bother with
+	syntax-ppss-context.
+	(python-fill-paragraph): Make sure that fenced-string delimiters that
+	stand on their own line stay there
+
 2007-03-01  Lennart Borgman  <lennart.borgman.073@student.lu.se>
 
 	* replace.el (perform-replace): Propertize message.
diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el
index f94a3d63653..38e846aa2cc 100644
--- a/lisp/progmodes/python.el
+++ b/lisp/progmodes/python.el
@@ -163,7 +163,7 @@ Used for syntactic keywords.  N is the match number (1, 2 or 3)."
 	       (= (match-beginning 1) (match-end 1))) ; prefix is null
 	  (and (= n 1)			; prefix
 	       (/= (match-beginning 1) (match-end 1)))) ; non-empty
-      (unless (eq 'string (syntax-ppss-context (syntax-ppss)))
+      (unless (nth 3 (syntax-ppss))
         (eval-when-compile (string-to-syntax "|"))))
      ;; Otherwise (we're in a non-matching string) the property is
      ;; nil, which is OK.
@@ -1743,12 +1743,11 @@ Otherwise, do nothing."
 	       (orig (point))
 	       (start (nth 8 syntax))
 	       end)
-	  (cond ((eq t (nth 3 syntax))	    ; in fenced string
-		 (goto-char (nth 8 syntax)) ; string start
-		 (condition-case ()	    ; for unbalanced quotes
-		     (progn (forward-sexp)
-			    (setq end (point)))
-		   (error (setq end (point-max)))))
+	  (cond ((eq t (nth 3 syntax))	      ; in fenced string
+		 (goto-char (nth 8 syntax))   ; string start
+		 (setq end (condition-case () ; for unbalanced quotes
+                               (progn (forward-sexp) (point))
+                             (error (point-max)))))
 		((re-search-backward "\\s|\\s-*\\=" nil t) ; end of fenced
 							   ; string
 		 (forward-char)
@@ -1756,13 +1755,17 @@ Otherwise, do nothing."
 		 (condition-case ()
 		     (progn (backward-sexp)
 			    (setq start (point)))
-		   (error nil))))
+		   (error (setq end nil)))))
 	  (when end
 	    (save-restriction
 	      (narrow-to-region start end)
 	      (goto-char orig)
-	      (fill-paragraph justify))))))
-      t)
+              (let ((paragraph-separate
+                     ;; Make sure that fenced-string delimiters that stand
+                     ;; on their own line stay there.
+                     (concat "[ \t]*['\"]+[ \t]*$\\|" paragraph-separate)))
+                (fill-paragraph justify))))))
+      t))
 
 (defun python-shift-left (start end &optional count)
   "Shift lines in region COUNT (the prefix arg) columns to the left.