changeset 104725:f1f277c6c9fe

(comint-insert-input): Be careful to only set point if we don't delegate to some other command.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Sun, 30 Aug 2009 05:10:22 +0000
parents 8bd22a0db033
children 848797c69be5
files lisp/ChangeLog lisp/comint.el
diffstat 2 files changed, 16 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Sun Aug 30 05:00:59 2009 +0000
+++ b/lisp/ChangeLog	Sun Aug 30 05:10:22 2009 +0000
@@ -1,5 +1,8 @@
 2009-08-30  Stefan Monnier  <monnier@iro.umontreal.ca>
 
+	* comint.el (comint-insert-input): Be careful to only set point if we
+	don't delegate to some other command.
+
 	* proced.el (proced-signal-list): Make it an alist.
 	(proced-grammar-alist): Capitalize names.
 	(proced-send-signal): Use a non-hidden buffer (since it's displayed).
--- a/lisp/comint.el	Sun Aug 30 05:00:59 2009 +0000
+++ b/lisp/comint.el	Sun Aug 30 05:10:22 2009 +0000
@@ -816,7 +816,9 @@
 If there is no previous input at point, run the command specified
 by the global keymap (usually `mouse-yank-at-click')."
   (interactive "e")
-  (mouse-set-point event)
+  ;; Don't set the mouse here, since it may otherwise change the behavior
+  ;; of the command on which we fallback if there's no field at point.
+  ;; (mouse-set-point event)
   (let ((pos (posn-point (event-end event)))
 	field input)
     (with-selected-window (posn-window (event-end event))
@@ -833,15 +835,16 @@
 	       (fun (and last-key (lookup-key global-map (vector last-key)))))
 	  (and fun (not (eq fun 'comint-insert-input))
 	       (call-interactively fun)))
-      ;; Otherwise, insert the previous input.
-      (goto-char (point-max))
-      ;; First delete any old unsent input at the end
-      (delete-region
-       (or (marker-position comint-accum-marker)
-	   (process-mark (get-buffer-process (current-buffer))))
-       (point))
-      ;; Insert the input at point
-      (insert input))))
+      (with-selected-window (posn-window (event-end event))
+        ;; Otherwise, insert the previous input.
+        (goto-char (point-max))
+        ;; First delete any old unsent input at the end
+        (delete-region
+         (or (marker-position comint-accum-marker)
+             (process-mark (get-buffer-process (current-buffer))))
+         (point))
+        ;; Insert the input at point
+        (insert input)))))
 
 ;; Input history processing in a buffer
 ;; ===========================================================================