]> git.eshelyaron.com Git - emacs.git/commitdiff
For selected window have (set-)window-point always operate on buffer's point.
authorMartin Rudalics <rudalics@gmx.at>
Tue, 21 Aug 2012 09:27:07 +0000 (11:27 +0200)
committerMartin Rudalics <rudalics@gmx.at>
Tue, 21 Aug 2012 09:27:07 +0000 (11:27 +0200)
* window.c (Fwindow_point): For the selected window always return
the position of its buffer's point.
(Fset_window_point): For the selected window always go in its
buffer to the specified position.
* window.el (window-point-1, set-window-point-1): Remove.
(window-in-direction, record-window-buffer)
(set-window-buffer-start-and-point, split-window-below)
(window--state-get-1, display-buffer-record-window): Replace
calls to window-point-1 and set-window-point-1 by calls to
window-point and set-window-point respectively.

lisp/ChangeLog
lisp/window.el
src/ChangeLog
src/window.c

index 11bdce9a230f4d2f91eea9e9015fbb1e91e700a0..3098d1657fc6f2337ef43d3f194499ee5681ff0e 100644 (file)
@@ -1,3 +1,12 @@
+2012-08-21  Martin Rudalics  <rudalics@gmx.at>
+
+       * window.el (window-point-1, set-window-point-1): Remove.
+       (window-in-direction, record-window-buffer)
+       (set-window-buffer-start-and-point, split-window-below)
+       (window--state-get-1, display-buffer-record-window): Replace
+       calls to window-point-1 and set-window-point-1 by calls to
+       window-point and set-window-point respectively.
+
 2012-08-21  Glenn Morris  <rgm@gnu.org>
 
        * calendar/cal-tex.el (cal-tex-leftday, cal-tex-rightday):
index 142e80e16668b6da4a084bc2a8b3225c5a4d5789..f6209730a7a4953443f470e13cc13fe756d28afe 100644 (file)
@@ -1062,32 +1062,6 @@ windows nor the buffer list."
     (dolist (walk-windows-window (window-list-1 nil minibuf all-frames))
       (funcall fun walk-windows-window))))
 
-(defun window-point-1 (&optional window)
-  "Return value of WINDOW's point.
-WINDOW can be any live window and defaults to the selected one.
-
-This function is like `window-point' with one exception: If
-WINDOW is selected, it returns the value of `point' of WINDOW's
-buffer regardless of whether that buffer is current or not."
-  (setq window (window-normalize-window window t))
-  (if (eq window (selected-window))
-      (with-current-buffer (window-buffer window)
-       (point))
-    (window-point window)))
-
-(defun set-window-point-1 (window pos)
-  "Set value of WINDOW's point to POS.
-WINDOW can be any live window and defaults to the selected one.
-
-This function is like `set-window-point' with one exception: If
-WINDOW is selected, it moves `point' of WINDOW's buffer to POS
-regardless of whether that buffer is current or not."
-  (setq window (window-normalize-window window t))
-  (if (eq window (selected-window))
-      (with-current-buffer (window-buffer window)
-       (goto-char pos))
-    (set-window-point window pos)))
-
 (defun window-at-side-p (&optional window side)
   "Return t if WINDOW is at SIDE of its containing frame.
 WINDOW must be a valid window and defaults to the selected one.
@@ -1146,7 +1120,7 @@ IGNORE non-nil means a window can be returned even if its
         (last (+ first (if hor
                            (window-total-width window)
                          (window-total-height window))))
-        (posn-cons (nth 6 (posn-at-point (window-point-1 window) window)))
+        (posn-cons (nth 6 (posn-at-point (window-point window) window)))
         ;; The column / row value of `posn-at-point' can be nil for the
         ;; mini-window, guard against that.
         (posn (if hor
@@ -2613,7 +2587,7 @@ WINDOW must be a live window and defaults to the selected one."
       ;; Add an entry for buffer to WINDOW's previous buffers.
       (with-current-buffer buffer
        (let ((start (window-start window))
-             (point (window-point-1 window)))
+             (point (window-point window)))
          (setq entry
                (cons buffer
                      (if entry
@@ -2657,7 +2631,7 @@ before was current this also makes BUFFER the current buffer."
       ;; Don't force window-start here (even if POINT is nil).
       (set-window-start window start t))
     (when point
-      (set-window-point-1 window point))))
+      (set-window-point window point))))
 
 (defcustom switch-to-visible-buffer t
   "If non-nil, allow switching to an already visible buffer.
@@ -3393,7 +3367,7 @@ Otherwise, the window starts are chosen so as to minimize the
 amount of redisplay; this is convenient on slow terminals."
   (interactive "P")
   (let ((old-window (selected-window))
-       (old-point (window-point-1))
+       (old-point (window-point))
        (size (and size (prefix-numeric-value size)))
         moved-by-window-height moved new-window bottom)
     (when (and size (< size 0) (< (- size) window-min-height))
@@ -3418,7 +3392,7 @@ amount of redisplay; this is convenient on slow terminals."
          (setq bottom (point)))
        (and moved-by-window-height
             (<= bottom (point))
-            (set-window-point-1 old-window (1- bottom)))
+            (set-window-point old-window (1- bottom)))
        (and moved-by-window-height
             (<= (window-start new-window) old-point)
             (set-window-point new-window old-point)
@@ -3727,7 +3701,7 @@ specific buffers."
                   `((parameters . ,list))))
             ,@(when buffer
                 ;; All buffer related things go in here.
-               (let ((point (window-point-1 window))
+               (let ((point (window-point window))
                      (start (window-start window)))
                  `((buffer
                     ,(buffer-name buffer)
@@ -4020,7 +3994,7 @@ element is BUFFER."
        (list 'other
             ;; A quadruple of WINDOW's buffer, start, point and height.
             (list (window-buffer window) (window-start window)
-                  (window-point-1 window) (window-total-size window))
+                  (window-point window) (window-total-size window))
             (selected-window) buffer))))
    ((eq type 'window)
     ;; WINDOW has been created on an existing frame.
index 5a7c69230294e275354bc71510d003322941ecc3..15eac722f8ef986ba868438d21ba7355744a57de 100644 (file)
@@ -1,3 +1,10 @@
+2012-08-21  Martin Rudalics  <rudalics@gmx.at>
+
+       * window.c (Fwindow_point): For the selected window always return
+       the position of its buffer's point.
+       (Fset_window_point): For the selected window always go in its
+       buffer to the specified position.
+
 2012-08-21  Dmitry Antipov  <dmantipov@yandex.ru>
 
        Setter macros for fontsets.
index 9045721009de62fded664812c5e9b40d611dc678..4d92566b243ece497b3f6bf92081f533fc762dd3 100644 (file)
@@ -1407,22 +1407,21 @@ DEFUN ("window-point", Fwindow_point, Swindow_point, 0, 1, 0,
        doc: /* Return current value of point in WINDOW.
 WINDOW must be a live window and defaults to the selected one.
 
-For a nonselected window, this is the value point would have
-if that window were selected.
-
-Note that, when WINDOW is the selected window and its buffer
-is also currently selected, the value returned is the same as (point).
-It would be more strictly correct to return the `top-level' value
-of point, outside of any save-excursion forms.
-But that is hard to define.  */)
+For a nonselected window, this is the value point would have if that
+window were selected.
+
+Note that, when WINDOW is selected, the value returned is the same as
+that returned by `point' for WINDOW's buffer.  It would be more strictly
+correct to return the `top-level' value of `point', outside of any
+`save-excursion' forms.  But that is hard to define.  */)
   (Lisp_Object window)
 {
   register struct window *w = decode_live_window (window);
 
-  if (w == XWINDOW (selected_window)
-      && current_buffer == XBUFFER (w->buffer))
-    return Fpoint ();
-  return Fmarker_position (w->pointm);
+  if (w == XWINDOW (selected_window))
+    return make_number (BUF_PT (XBUFFER (w->buffer)));
+  else
+    return Fmarker_position (w->pointm);
 }
 
 DEFUN ("window-start", Fwindow_start, Swindow_start, 0, 1, 0,
@@ -1532,16 +1531,27 @@ Return POS.  */)
   register struct window *w = decode_live_window (window);
 
   CHECK_NUMBER_COERCE_MARKER (pos);
-  if (w == XWINDOW (selected_window)
-      && XBUFFER (w->buffer) == current_buffer)
-    Fgoto_char (pos);
-  else
-    set_marker_restricted (w->pointm, pos, w->buffer);
 
-  /* We have to make sure that redisplay updates the window to show
-     the new value of point.  */
-  if (!EQ (window, selected_window))
-    ++windows_or_buffers_changed;
+  if (w == XWINDOW (selected_window))
+    {
+      if (XBUFFER (w->buffer) == current_buffer)
+       Fgoto_char (pos);
+      else
+       {
+         struct buffer *old_buffer = current_buffer;
+
+         set_buffer_internal (XBUFFER (w->buffer));
+         Fgoto_char (pos);
+         set_buffer_internal (old_buffer);
+       }
+    }
+  else
+    {
+      set_marker_restricted (w->pointm, pos, w->buffer);
+      /* We have to make sure that redisplay updates the window to show
+        the new value of point.  */
+      ++windows_or_buffers_changed;
+    }
 
   return pos;
 }