changeset 110448:0e1478bb5f00

* lisp/simple.el (blink-matching-open): Use syntax-class. * lisp/emacs-lisp/lisp.el (up-list): Don't do nothing silently.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Mon, 20 Sep 2010 23:45:09 +0200
parents 2ecf65f18c7c
children 45304f108596
files lisp/ChangeLog lisp/emacs-lisp/lisp.el lisp/simple.el
diffstat 3 files changed, 16 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Mon Sep 20 16:57:01 2010 +0200
+++ b/lisp/ChangeLog	Mon Sep 20 23:45:09 2010 +0200
@@ -1,5 +1,9 @@
 2010-09-20  Stefan Monnier  <monnier@iro.umontreal.ca>
 
+	* emacs-lisp/lisp.el (up-list): Don't do nothing silently.
+
+	* simple.el (blink-matching-open): Use syntax-class.
+
 	* progmodes/pascal.el (pascal-mode): Use define-derived-mode.
 	Set invisibility spec for pascal's outline mode.
 	(pascal-outline-change): Clean up calling convention.
--- a/lisp/emacs-lisp/lisp.el	Mon Sep 20 16:57:01 2010 +0200
+++ b/lisp/emacs-lisp/lisp.el	Mon Sep 20 23:45:09 2010 +0200
@@ -141,15 +141,19 @@
 This command assumes point is not in a string or comment."
   (interactive "^p")
   (or arg (setq arg 1))
-  (let ((inc (if (> arg 0) 1 -1)))
+  (let ((inc (if (> arg 0) 1 -1))
+        pos)
     (while (/= arg 0)
-      (if forward-sexp-function
+      (if (null forward-sexp-function)
+          (goto-char (or (scan-lists (point) inc 1) (buffer-end arg)))
           (condition-case err
-              (while (let ((pos (point)))
+              (while (progn (setq pos (point))
                        (forward-sexp inc)
                        (/= (point) pos)))
             (scan-error (goto-char (nth 2 err))))
-        (goto-char (or (scan-lists (point) inc 1) (buffer-end arg))))
+        (if (= (point) pos)
+            (signal 'scan-error
+                    (list "Unbalanced parentheses" (point) (point)))))
       (setq arg (- arg inc)))))
 
 (defun kill-sexp (&optional arg)
--- a/lisp/simple.el	Mon Sep 20 16:57:01 2010 +0200
+++ b/lisp/simple.el	Mon Sep 20 23:45:09 2010 +0200
@@ -5525,9 +5525,10 @@
                         ;; backward-sexp skips backward over prefix chars,
                         ;; so move back to the matching paren.
                         (while (and (< (point) (1- oldpos))
-                                    (let ((code (car (syntax-after (point)))))
-                                      (or (eq (logand 65536 code) 6)
-                                          (eq (logand 1048576 code) 1048576))))
+                                    (let ((code (syntax-after (point))))
+                                      (or (eq (syntax-class code) 6)
+                                          (eq (logand 1048576 (car code))
+                                              1048576))))
                           (forward-char 1))
                         (point))
                     (error nil))))))