diff Misc/python-mode.el @ 5073:e21f1d2595de legacy-trunk

(py-parse-partial-sexp-works-p): New variable to work around a bug in parse-partial-sexp in some Emacsen. (py-goto-beyond-final-line): use py-parse-partial-sexp-works-p.
author Barry Warsaw <barry@python.org>
date Thu, 30 Jan 1997 19:49:39 +0000
parents 88714fbf9a06
children 3273acbe476f
line wrap: on
line diff
--- a/Misc/python-mode.el	Thu Jan 30 15:54:58 1997 +0000
+++ b/Misc/python-mode.el	Thu Jan 30 19:49:39 1997 +0000
@@ -410,6 +410,26 @@
 If you change this, you probably have to change `py-current-defun' as well.
 This is only used by `py-current-defun' to find the name for add-log.el.")
 
+;; As of 30-Jan-1997, Emacs 19.34 works but XEmacs 19.15b90 and
+;; previous does not.  It is suspected that Emacsen before 19.34 are
+;; also broken.
+(defvar py-parse-partial-sexp-works-p
+  (let ((buf (get-buffer-create " ---*---pps---*---"))
+	state status)
+    (save-excursion
+      (set-buffer buf)
+      (erase-buffer)
+      (insert "(line1\n line2)\nline3")
+      (lisp-mode)
+      (goto-char (point-min))
+      (setq state (parse-partial-sexp (point) (save-excursion
+						(forward-line 1)
+						(point))))
+      (parse-partial-sexp (point) (point-max) 0 nil state)
+      (setq status (not (= (point) (point-max))))
+      (kill-buffer buf)
+      status))
+  "Does `parse-partial-sexp' work in this Emacs?")
 
 
 ;; Menu definitions, only relevent if you have the easymenu.el package
@@ -2203,9 +2223,9 @@
       (if (and (not (zerop (car state)))
 	       (not (eobp)))
 	  (progn
-	    ;; BUG ALERT: I could swear, from reading the docs, that
-	    ;; the 3rd argument should be plain 0
-	    (parse-partial-sexp (point) (point-max) (- 0 (car state))
+	    (parse-partial-sexp (point) (point-max)
+				(if py-parse-partial-sexp-works-p
+				    0 (- 0 (car state)))
 				nil state)
 	    (forward-line 1))))))