changeset 70623:2ed5d4bbedbf

* simple.el (line-move-finish): Fix last fix.
author Chong Yidong <cyd@stupidchicken.com>
date Fri, 12 May 2006 17:48:40 +0000
parents 00605fe92bf7
children 97f1ae99fe30
files lisp/ChangeLog lisp/simple.el
diffstat 2 files changed, 27 insertions(+), 17 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Fri May 12 17:44:41 2006 +0000
+++ b/lisp/ChangeLog	Fri May 12 17:48:40 2006 +0000
@@ -1,3 +1,8 @@
+2006-05-12  Chong Yidong  <cyd@stupidchicken.com>
+
+	* simple.el (line-move-finish): Avoid calling point motion hooks
+	while processing intangibility.
+
 2006-05-12  Dan Nicolaescu  <dann@ics.uci.edu>
 
 	* term/xterm.el (terminal-init-xterm): Fix typo.
--- a/lisp/simple.el	Fri May 12 17:44:41 2006 +0000
+++ b/lisp/simple.el	Fri May 12 17:48:40 2006 +0000
@@ -3645,25 +3645,30 @@
 	;; Process intangibility within a line.
 	;; Move to the chosen destination position from above,
 	;; with intangibility processing enabled.
+
+	;; Avoid calling point-entered and point-left.
 	(goto-char new)
-	;; If intangibility moves us to a different (later) place
-	;; in the same line, use that as the destination.
-	(if (<= (point) line-end)
-	    (setq new (point))
-	  ;; If that position is "too late",
-	  ;; try the previous allowable position.
-	  ;; See if it is ok.
-	  (backward-char)
-	  (if (if forward
-		  ;; If going forward, don't accept the previous
-		  ;; allowable position if it is before the target line.
-		  (< line-beg (point))
-		;; If going backward, don't accept the previous
-		;; allowable position if it is still after the target line.
-		(<= (point) line-end))
+	(let ((inhibit-point-motion-hooks nil))
+	  (goto-char new)
+
+	  ;; If intangibility moves us to a different (later) place
+	  ;; in the same line, use that as the destination.
+	  (if (<= (point) line-end)
 	      (setq new (point))
-	    ;; As a last resort, use the end of the line.
-	    (setq new line-end)))
+	    ;; If that position is "too late",
+	    ;; try the previous allowable position.
+	    ;; See if it is ok.
+	    (backward-char)
+	    (if (if forward
+		    ;; If going forward, don't accept the previous
+		    ;; allowable position if it is before the target line.
+		    (< line-beg (point))
+		  ;; If going backward, don't accept the previous
+		  ;; allowable position if it is still after the target line.
+		  (<= (point) line-end))
+		(setq new (point))
+	      ;; As a last resort, use the end of the line.
+	      (setq new line-end))))
 
 	;; Now move to the updated destination, processing fields
 	;; as well as intangibility.