diff options
| author | Miles Bader | 2004-06-28 07:56:49 +0000 |
|---|---|---|
| committer | Miles Bader | 2004-06-28 07:56:49 +0000 |
| commit | 327719ee8a3fcdb36ed6acaf6d8cb5fbdf0bd801 (patch) | |
| tree | 21de188e13b5e41a79bb50040933072ae0235217 /src/window.c | |
| parent | 852f73b7fa7b71910282eacb6263b3ecfd4ee783 (diff) | |
| parent | 376de73927383d6062483db10b8a82448505f52b (diff) | |
| download | emacs-327719ee8a3fcdb36ed6acaf6d8cb5fbdf0bd801.tar.gz emacs-327719ee8a3fcdb36ed6acaf6d8cb5fbdf0bd801.zip | |
Revision: miles@gnu.org--gnu-2004/emacs--unicode--0--patch-15
Merge from emacs--cvs-trunk--0
Patches applied:
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-218
- miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-220
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-221
Restore deleted tagline in etc/TUTORIAL.ru
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-222
- miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-228
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-229
Remove TeX output files from the archive
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-230
- miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-247
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-248
src/lisp.h (CYCLE_CHECK): Macro moved from xfaces.c
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-249
- miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-256
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-258
- miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-263
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-264
Update from CVS: lispref/display.texi: emacs -> Emacs.
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-265
- miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-274
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-275
Update from CVS: man/makefile.w32-in: Revert last change
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-276
- miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-295
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-296
Allow restarting an existing debugger session that's exited
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-297
- miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-299
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-300
- miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-327
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-328
Update from CVS: src/.gdbinit (xsymbol): Fix last change.
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-329
- miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-344
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-345
Tweak source regexps so that building in place won't cause problems
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-346
- miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-351
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-352
Update from CVS: lisp/flymake.el: New file.
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-353
- miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-361
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-362
Support " [...]" style defaults in minibuffer-electric-default-mode
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-363
(read-number): Use canonical format for default in prompt.
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-364
- miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-367
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-368
Improve display-supports-face-attributes-p on non-ttys
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-369
Rewrite face-differs-from-default-p
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-370
Move `display-supports-face-attributes-p' entirely into C code
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-371
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-372
Simplify face-differs-from-default-p; don't consider :stipple.
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-373
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-374
(tty_supports_face_attributes_p): Ensure attributes differ from default
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-375
- miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-376
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-377
(Fdisplay_supports_face_attributes_p): Work around bootstrapping problem
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-378
- miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-380
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-381
Face merging cleanups
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-382
- miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-384
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-385
src/xfaces.c (push_named_merge_point): Return 0 if a cycle is detected
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-386
- miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-395
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-396
Tweak arch tagging to make build/install-in-place less annoying
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-397
Work around vc-arch problems when building eshell
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-398
Tweak permissions
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-399
Tweak directory permissions
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-400
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-401
More build-in-place tweaking of arch tagging
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-402
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-403
Yet more build-in-place tweaking of arch tagging
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-404
- miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-409
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-410
Make sure image types are initialized for lookup too
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-411
- miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-416
Update from CVS
Diffstat (limited to 'src/window.c')
| -rw-r--r-- | src/window.c | 126 |
1 files changed, 63 insertions, 63 deletions
diff --git a/src/window.c b/src/window.c index 47bbf0806ee..d3203c99e90 100644 --- a/src/window.c +++ b/src/window.c | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | /* Window creation, deletion and examination for GNU Emacs. | 1 | /* Window creation, deletion and examination for GNU Emacs. |
| 2 | Does not include redisplay. | 2 | Does not include redisplay. |
| 3 | Copyright (C) 1985,86,87,93,94,95,96,97,1998,2000, 2001, 2002, 2003 | 3 | Copyright (C) 1985,86,87, 1993,94,95,96,97,98, 2000,01,02,03,04 |
| 4 | Free Software Foundation, Inc. | 4 | Free Software Foundation, Inc. |
| 5 | 5 | ||
| 6 | This file is part of GNU Emacs. | 6 | This file is part of GNU Emacs. |
| @@ -322,7 +322,11 @@ DEFUN ("pos-visible-in-window-p", Fpos_visible_in_window_p, | |||
| 322 | Return nil if that position is scrolled vertically out of view. | 322 | Return nil if that position is scrolled vertically out of view. |
| 323 | If a character is only partially visible, nil is returned, unless the | 323 | If a character is only partially visible, nil is returned, unless the |
| 324 | optional argument PARTIALLY is non-nil. | 324 | optional argument PARTIALLY is non-nil. |
| 325 | POS defaults to point in WINDOW; WINDOW defaults to the selected window. */) | 325 | POS defaults to point in WINDOW; WINDOW defaults to the selected window. |
| 326 | |||
| 327 | If POS is visible, return t if PARTIALLY is nil; if PARTIALLY is non-nil, | ||
| 328 | return value is a list (X Y PARTIAL) where X and Y are the pixel relative | ||
| 329 | coordinate */) | ||
| 326 | (pos, window, partially) | 330 | (pos, window, partially) |
| 327 | Lisp_Object pos, window, partially; | 331 | Lisp_Object pos, window, partially; |
| 328 | { | 332 | { |
| @@ -330,8 +334,9 @@ POS defaults to point in WINDOW; WINDOW defaults to the selected window. */) | |||
| 330 | register int posint; | 334 | register int posint; |
| 331 | register struct buffer *buf; | 335 | register struct buffer *buf; |
| 332 | struct text_pos top; | 336 | struct text_pos top; |
| 333 | Lisp_Object in_window; | 337 | Lisp_Object in_window = Qnil; |
| 334 | int fully_p; | 338 | int fully_p = 1; |
| 339 | int x, y; | ||
| 335 | 340 | ||
| 336 | w = decode_window (window); | 341 | w = decode_window (window); |
| 337 | buf = XBUFFER (w->buffer); | 342 | buf = XBUFFER (w->buffer); |
| @@ -347,38 +352,20 @@ POS defaults to point in WINDOW; WINDOW defaults to the selected window. */) | |||
| 347 | else | 352 | else |
| 348 | posint = XMARKER (w->pointm)->charpos; | 353 | posint = XMARKER (w->pointm)->charpos; |
| 349 | 354 | ||
| 350 | /* If position is above window start, it's not visible. */ | 355 | /* If position is above window start or outside buffer boundaries, |
| 351 | if (posint < CHARPOS (top)) | 356 | or if window start is out of range, position is not visible. */ |
| 352 | in_window = Qnil; | 357 | if (posint >= CHARPOS (top) |
| 353 | else if (XFASTINT (w->last_modified) >= BUF_MODIFF (buf) | 358 | && posint <= BUF_ZV (buf) |
| 354 | && XFASTINT (w->last_overlay_modified) >= BUF_OVERLAY_MODIFF (buf) | 359 | && CHARPOS (top) >= BUF_BEGV (buf) |
| 355 | && posint < BUF_Z (buf) - XFASTINT (w->window_end_pos)) | 360 | && CHARPOS (top) <= BUF_ZV (buf) |
| 356 | { | 361 | && pos_visible_p (w, posint, &fully_p, &x, &y, NILP (partially)) |
| 357 | /* If frame is up-to-date, and POSINT is < window end pos, use | 362 | && (!NILP (partially) || fully_p)) |
| 358 | that info. This doesn't work for POSINT == end pos, because | 363 | in_window = Qt; |
| 359 | the window end pos is actually the position _after_ the last | 364 | |
| 360 | char in the window. */ | 365 | if (!NILP (in_window) && !NILP (partially)) |
| 361 | if (NILP (partially)) | 366 | in_window = Fcons (make_number (x), |
| 362 | { | 367 | Fcons (make_number (y), |
| 363 | pos_visible_p (w, posint, &fully_p, NILP (partially)); | 368 | Fcons (fully_p ? Qt : Qnil, Qnil))); |
| 364 | in_window = fully_p ? Qt : Qnil; | ||
| 365 | } | ||
| 366 | else | ||
| 367 | in_window = Qt; | ||
| 368 | } | ||
| 369 | else if (posint > BUF_ZV (buf)) | ||
| 370 | in_window = Qnil; | ||
| 371 | else if (CHARPOS (top) < BUF_BEGV (buf) || CHARPOS (top) > BUF_ZV (buf)) | ||
| 372 | /* If window start is out of range, do something reasonable. */ | ||
| 373 | in_window = Qnil; | ||
| 374 | else | ||
| 375 | { | ||
| 376 | if (pos_visible_p (w, posint, &fully_p, NILP (partially))) | ||
| 377 | in_window = !NILP (partially) || fully_p ? Qt : Qnil; | ||
| 378 | else | ||
| 379 | in_window = Qnil; | ||
| 380 | } | ||
| 381 | |||
| 382 | return in_window; | 369 | return in_window; |
| 383 | } | 370 | } |
| 384 | 371 | ||
| @@ -3036,7 +3023,7 @@ set_window_buffer (window, buffer, run_hooks_p, keep_margins_p) | |||
| 3036 | DEFUN ("set-window-buffer", Fset_window_buffer, Sset_window_buffer, 2, 3, 0, | 3023 | DEFUN ("set-window-buffer", Fset_window_buffer, Sset_window_buffer, 2, 3, 0, |
| 3037 | doc: /* Make WINDOW display BUFFER as its contents. | 3024 | doc: /* Make WINDOW display BUFFER as its contents. |
| 3038 | BUFFER can be a buffer or buffer name. | 3025 | BUFFER can be a buffer or buffer name. |
| 3039 | Optional third arg KEEP_MARGINS non-nil means that WINDOW's current | 3026 | Optional third arg KEEP-MARGINS non-nil means that WINDOW's current |
| 3040 | display margins, fringe widths, and scroll bar settings are maintained; | 3027 | display margins, fringe widths, and scroll bar settings are maintained; |
| 3041 | the default is to reset these from BUFFER's local settings or the frame | 3028 | the default is to reset these from BUFFER's local settings or the frame |
| 3042 | defaults. */) | 3029 | defaults. */) |
| @@ -3075,8 +3062,8 @@ defaults. */) | |||
| 3075 | 3062 | ||
| 3076 | DEFUN ("select-window", Fselect_window, Sselect_window, 1, 2, 0, | 3063 | DEFUN ("select-window", Fselect_window, Sselect_window, 1, 2, 0, |
| 3077 | doc: /* Select WINDOW. Most editing will apply to WINDOW's buffer. | 3064 | doc: /* Select WINDOW. Most editing will apply to WINDOW's buffer. |
| 3078 | If WINDOW is not already selected, also make WINDOW's buffer current. | 3065 | If WINDOW is not already selected, make WINDOW's buffer current |
| 3079 | Also make WINDOW the frame's selected window. | 3066 | and make WINDOW the frame's selected window. |
| 3080 | Optional second arg NORECORD non-nil means | 3067 | Optional second arg NORECORD non-nil means |
| 3081 | do not put this buffer at the front of the list of recently selected ones. | 3068 | do not put this buffer at the front of the list of recently selected ones. |
| 3082 | 3069 | ||
| @@ -3283,6 +3270,10 @@ If FRAME is nil, search only the selected frame | |||
| 3283 | unless `pop-up-frames' or `display-buffer-reuse-frames' is non-nil, | 3270 | unless `pop-up-frames' or `display-buffer-reuse-frames' is non-nil, |
| 3284 | which means search visible and iconified frames. | 3271 | which means search visible and iconified frames. |
| 3285 | 3272 | ||
| 3273 | If a full-width window on a splittable frame is available to display | ||
| 3274 | the buffer, it may be split, subject to the value of the variable | ||
| 3275 | `split-height-threshold'. | ||
| 3276 | |||
| 3286 | If `even-window-heights' is non-nil, window heights will be evened out | 3277 | If `even-window-heights' is non-nil, window heights will be evened out |
| 3287 | if displaying the buffer causes two vertically adjacent windows to be | 3278 | if displaying the buffer causes two vertically adjacent windows to be |
| 3288 | displayed. */) | 3279 | displayed. */) |
| @@ -3460,7 +3451,7 @@ DEFUN ("force-window-update", Fforce_window_update, Sforce_window_update, | |||
| 3460 | 0, 1, 0, | 3451 | 0, 1, 0, |
| 3461 | doc: /* Force redisplay of all windows. | 3452 | doc: /* Force redisplay of all windows. |
| 3462 | If optional arg OBJECT is a window, force redisplay of that window only. | 3453 | If optional arg OBJECT is a window, force redisplay of that window only. |
| 3463 | If OBJECT is a buffer or buffer name, force redisplay of all windows | 3454 | If OBJECT is a buffer or buffer name, force redisplay of all windows |
| 3464 | displaying that buffer. */) | 3455 | displaying that buffer. */) |
| 3465 | (object) | 3456 | (object) |
| 3466 | Lisp_Object object; | 3457 | Lisp_Object object; |
| @@ -3482,7 +3473,7 @@ displaying that buffer. */) | |||
| 3482 | ++update_mode_lines; | 3473 | ++update_mode_lines; |
| 3483 | return Qt; | 3474 | return Qt; |
| 3484 | } | 3475 | } |
| 3485 | 3476 | ||
| 3486 | if (STRINGP (object)) | 3477 | if (STRINGP (object)) |
| 3487 | object = Fget_buffer (object); | 3478 | object = Fget_buffer (object); |
| 3488 | if (BUFFERP (object) && !NILP (XBUFFER (object)->name)) | 3479 | if (BUFFERP (object) && !NILP (XBUFFER (object)->name)) |
| @@ -3547,7 +3538,7 @@ temp_output_buffer_show (buf) | |||
| 3547 | Lisp_Object prev_window, prev_buffer; | 3538 | Lisp_Object prev_window, prev_buffer; |
| 3548 | prev_window = selected_window; | 3539 | prev_window = selected_window; |
| 3549 | XSETBUFFER (prev_buffer, old); | 3540 | XSETBUFFER (prev_buffer, old); |
| 3550 | 3541 | ||
| 3551 | /* Select the window that was chosen, for running the hook. | 3542 | /* Select the window that was chosen, for running the hook. |
| 3552 | Note: Both Fselect_window and select_window_norecord may | 3543 | Note: Both Fselect_window and select_window_norecord may |
| 3553 | set-buffer to the buffer displayed in the window, | 3544 | set-buffer to the buffer displayed in the window, |
| @@ -3598,7 +3589,8 @@ DEFUN ("split-window", Fsplit_window, Ssplit_window, 0, 3, "", | |||
| 3598 | WINDOW defaults to selected one and SIZE to half its size. | 3589 | WINDOW defaults to selected one and SIZE to half its size. |
| 3599 | If optional third arg HORFLAG is non-nil, split side by side | 3590 | If optional third arg HORFLAG is non-nil, split side by side |
| 3600 | and put SIZE columns in the first of the pair. In that case, | 3591 | and put SIZE columns in the first of the pair. In that case, |
| 3601 | SIZE includes that window's scroll bar, or the divider column to its right. */) | 3592 | SIZE includes that window's scroll bar, or the divider column to its right. |
| 3593 | Returns the newly-created window. */) | ||
| 3602 | (window, size, horflag) | 3594 | (window, size, horflag) |
| 3603 | Lisp_Object window, size, horflag; | 3595 | Lisp_Object window, size, horflag; |
| 3604 | { | 3596 | { |
| @@ -6067,7 +6059,7 @@ If TYPE is t, use the frame's scroll-bar type. */) | |||
| 6067 | vertical_type = Qnil; | 6059 | vertical_type = Qnil; |
| 6068 | 6060 | ||
| 6069 | if (!(EQ (vertical_type, Qnil) | 6061 | if (!(EQ (vertical_type, Qnil) |
| 6070 | || EQ (vertical_type, Qleft) | 6062 | || EQ (vertical_type, Qleft) |
| 6071 | || EQ (vertical_type, Qright) | 6063 | || EQ (vertical_type, Qright) |
| 6072 | || EQ (vertical_type, Qt))) | 6064 | || EQ (vertical_type, Qt))) |
| 6073 | error ("Invalid type of vertical scroll bar"); | 6065 | error ("Invalid type of vertical scroll bar"); |
| @@ -6116,12 +6108,13 @@ value. */) | |||
| 6116 | Smooth scrolling | 6108 | Smooth scrolling |
| 6117 | ***********************************************************************/ | 6109 | ***********************************************************************/ |
| 6118 | 6110 | ||
| 6119 | DEFUN ("window-vscroll", Fwindow_vscroll, Swindow_vscroll, 0, 1, 0, | 6111 | DEFUN ("window-vscroll", Fwindow_vscroll, Swindow_vscroll, 0, 2, 0, |
| 6120 | doc: /* Return the amount by which WINDOW is scrolled vertically. | 6112 | doc: /* Return the amount by which WINDOW is scrolled vertically. |
| 6121 | Use the selected window if WINDOW is nil or omitted. | 6113 | Use the selected window if WINDOW is nil or omitted. |
| 6122 | Value is a multiple of the canonical character height of WINDOW. */) | 6114 | Normally, value is a multiple of the canonical character height of WINDOW; |
| 6123 | (window) | 6115 | optional second arg PIXELS_P means value is measured in pixels. */) |
| 6124 | Lisp_Object window; | 6116 | (window, pixels_p) |
| 6117 | Lisp_Object window, pixels_p; | ||
| 6125 | { | 6118 | { |
| 6126 | Lisp_Object result; | 6119 | Lisp_Object result; |
| 6127 | struct frame *f; | 6120 | struct frame *f; |
| @@ -6135,7 +6128,9 @@ Value is a multiple of the canonical character height of WINDOW. */) | |||
| 6135 | f = XFRAME (w->frame); | 6128 | f = XFRAME (w->frame); |
| 6136 | 6129 | ||
| 6137 | if (FRAME_WINDOW_P (f)) | 6130 | if (FRAME_WINDOW_P (f)) |
| 6138 | result = FRAME_CANON_Y_FROM_PIXEL_Y (f, -w->vscroll); | 6131 | result = (NILP (pixels_p) |
| 6132 | ? FRAME_CANON_Y_FROM_PIXEL_Y (f, -w->vscroll) | ||
| 6133 | : make_number (-w->vscroll)); | ||
| 6139 | else | 6134 | else |
| 6140 | result = make_number (0); | 6135 | result = make_number (0); |
| 6141 | return result; | 6136 | return result; |
| @@ -6143,12 +6138,13 @@ Value is a multiple of the canonical character height of WINDOW. */) | |||
| 6143 | 6138 | ||
| 6144 | 6139 | ||
| 6145 | DEFUN ("set-window-vscroll", Fset_window_vscroll, Sset_window_vscroll, | 6140 | DEFUN ("set-window-vscroll", Fset_window_vscroll, Sset_window_vscroll, |
| 6146 | 2, 2, 0, | 6141 | 2, 3, 0, |
| 6147 | doc: /* Set amount by which WINDOW should be scrolled vertically to VSCROLL. | 6142 | doc: /* Set amount by which WINDOW should be scrolled vertically to VSCROLL. |
| 6148 | WINDOW nil means use the selected window. VSCROLL is a non-negative | 6143 | WINDOW nil means use the selected window. Normally, VSCROLL is a |
| 6149 | multiple of the canonical character height of WINDOW. */) | 6144 | non-negative multiple of the canonical character height of WINDOW; |
| 6150 | (window, vscroll) | 6145 | optional third arg PIXELS_P non-nil means that VSCROLL is in pixels. */) |
| 6151 | Lisp_Object window, vscroll; | 6146 | (window, vscroll, pixels_p) |
| 6147 | Lisp_Object window, vscroll, pixels_p; | ||
| 6152 | { | 6148 | { |
| 6153 | struct window *w; | 6149 | struct window *w; |
| 6154 | struct frame *f; | 6150 | struct frame *f; |
| @@ -6166,7 +6162,9 @@ multiple of the canonical character height of WINDOW. */) | |||
| 6166 | { | 6162 | { |
| 6167 | int old_dy = w->vscroll; | 6163 | int old_dy = w->vscroll; |
| 6168 | 6164 | ||
| 6169 | w->vscroll = - FRAME_LINE_HEIGHT (f) * XFLOATINT (vscroll); | 6165 | w->vscroll = - (NILP (pixels_p) |
| 6166 | ? FRAME_LINE_HEIGHT (f) * XFLOATINT (vscroll) | ||
| 6167 | : XFLOATINT (vscroll)); | ||
| 6170 | w->vscroll = min (w->vscroll, 0); | 6168 | w->vscroll = min (w->vscroll, 0); |
| 6171 | 6169 | ||
| 6172 | /* Adjust glyph matrix of the frame if the virtual display | 6170 | /* Adjust glyph matrix of the frame if the virtual display |
| @@ -6178,7 +6176,7 @@ multiple of the canonical character height of WINDOW. */) | |||
| 6178 | XBUFFER (w->buffer)->prevent_redisplay_optimizations_p = 1; | 6176 | XBUFFER (w->buffer)->prevent_redisplay_optimizations_p = 1; |
| 6179 | } | 6177 | } |
| 6180 | 6178 | ||
| 6181 | return Fwindow_vscroll (window); | 6179 | return Fwindow_vscroll (window, pixels_p); |
| 6182 | } | 6180 | } |
| 6183 | 6181 | ||
| 6184 | 6182 | ||
| @@ -6506,9 +6504,10 @@ using `special-display-function'. See also `special-display-regexps'. | |||
| 6506 | An element of the list can be a list instead of just a string. | 6504 | An element of the list can be a list instead of just a string. |
| 6507 | There are two ways to use a list as an element: | 6505 | There are two ways to use a list as an element: |
| 6508 | (BUFFER FRAME-PARAMETERS...) (BUFFER FUNCTION OTHER-ARGS...) | 6506 | (BUFFER FRAME-PARAMETERS...) (BUFFER FUNCTION OTHER-ARGS...) |
| 6509 | In the first case, FRAME-PARAMETERS are used to create the frame. | 6507 | In the first case, the FRAME-PARAMETERS are pairs of the form |
| 6510 | In the latter case, FUNCTION is called with BUFFER as the first argument, | 6508 | \(PARAMETER . VALUE); these parameter values are used to create the frame. |
| 6511 | followed by OTHER-ARGS--it can display BUFFER in any way it likes. | 6509 | In the second case, FUNCTION is called with BUFFER as the first argument, |
| 6510 | followed by the OTHER-ARGS--it can display BUFFER in any way it likes. | ||
| 6512 | All this is done by the function found in `special-display-function'. | 6511 | All this is done by the function found in `special-display-function'. |
| 6513 | 6512 | ||
| 6514 | If the specified frame parameters include (same-buffer . t), the | 6513 | If the specified frame parameters include (same-buffer . t), the |
| @@ -6531,9 +6530,10 @@ using `special-display-function'. | |||
| 6531 | An element of the list can be a list instead of just a string. | 6530 | An element of the list can be a list instead of just a string. |
| 6532 | There are two ways to use a list as an element: | 6531 | There are two ways to use a list as an element: |
| 6533 | (REGEXP FRAME-PARAMETERS...) (REGEXP FUNCTION OTHER-ARGS...) | 6532 | (REGEXP FRAME-PARAMETERS...) (REGEXP FUNCTION OTHER-ARGS...) |
| 6534 | In the first case, FRAME-PARAMETERS are used to create the frame. | 6533 | In the first case, the FRAME-PARAMETERS are pairs of the form |
| 6535 | In the latter case, FUNCTION is called with the buffer as first argument, | 6534 | \(PARAMETER . VALUE); these parameter values are used to create the frame. |
| 6536 | followed by OTHER-ARGS--it can display the buffer in any way it likes. | 6535 | In the second case, FUNCTION is called with BUFFER as the first argument, |
| 6536 | followed by the OTHER-ARGS--it can display the buffer in any way it likes. | ||
| 6537 | All this is done by the function found in `special-display-function'. | 6537 | All this is done by the function found in `special-display-function'. |
| 6538 | 6538 | ||
| 6539 | If the specified frame parameters include (same-buffer . t), the | 6539 | If the specified frame parameters include (same-buffer . t), the |
| @@ -6599,7 +6599,7 @@ See also `same-window-buffer-names'. */); | |||
| 6599 | next_screen_context_lines = 2; | 6599 | next_screen_context_lines = 2; |
| 6600 | 6600 | ||
| 6601 | DEFVAR_INT ("split-height-threshold", &split_height_threshold, | 6601 | DEFVAR_INT ("split-height-threshold", &split_height_threshold, |
| 6602 | doc: /* *display-buffer would prefer to split the largest window if this large. | 6602 | doc: /* *A window must be at least this tall to be eligible for splitting by `display-buffer'. |
| 6603 | If there is only one window, it is split regardless of this value. */); | 6603 | If there is only one window, it is split regardless of this value. */); |
| 6604 | split_height_threshold = 500; | 6604 | split_height_threshold = 500; |
| 6605 | 6605 | ||