For selected window have (set-)window-point always operate on buffer's point.
* 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.
This commit is contained in:
parent
9f1ee09efc
commit
5481664ac4
4 changed files with 53 additions and 53 deletions
|
@ -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):
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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.
|
||||
|
|
50
src/window.c
50
src/window.c
|
@ -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.
|
||||
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. */)
|
||||
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;
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue