aboutsummaryrefslogtreecommitdiffstats
path: root/src/window.c
diff options
context:
space:
mode:
authorMartin Rudalics2008-10-18 17:08:59 +0000
committerMartin Rudalics2008-10-18 17:08:59 +0000
commitd653c8cc93c2d7f522de4ba548a641cd657569bc (patch)
tree3fe51414288053688424b9eb276807e1f5e17e75 /src/window.c
parent26c6145fdabba5ebe35ca2146eacbecf04b822a9 (diff)
downloademacs-d653c8cc93c2d7f522de4ba548a641cd657569bc.tar.gz
emacs-d653c8cc93c2d7f522de4ba548a641cd657569bc.zip
(Fwindow_width, Fset_window_start)
(Fwindow_parameters, Fwindow_parameter, Fset_window_parameter) (Fdelete_windows_on, Freplace_buffer_in_windows): Make doc-strings follow code and Elisp manual more closely. (Fwindow_dedicated_p): Make window argument optional. (Fset_window_dedicated_p): Rename argument "arg" to "flag". (Fset_window_buffer): Respect any non-nil dedicated value for window. Rename "buffer" argument to "buffer_or_name".
Diffstat (limited to 'src/window.c')
-rw-r--r--src/window.c116
1 files changed, 65 insertions, 51 deletions
diff --git a/src/window.c b/src/window.c
index 9790d026a70..20b6ef846dc 100644
--- a/src/window.c
+++ b/src/window.c
@@ -515,9 +515,11 @@ WINDOW defaults to the selected window. */)
515 515
516DEFUN ("window-width", Fwindow_width, Swindow_width, 0, 1, 0, 516DEFUN ("window-width", Fwindow_width, Swindow_width, 0, 1, 0,
517 doc: /* Return the number of display columns in WINDOW. 517 doc: /* Return the number of display columns in WINDOW.
518This is the width that is usable columns available for text in WINDOW. 518WINDOW defaults to the selected window.
519If you want to find out how many columns WINDOW takes up, 519
520use (let ((edges (window-edges))) (- (nth 2 edges) (nth 0 edges))). */) 520Note: The return value is the number of columns available for text in
521WINDOW. If you want to find out how many columns WINDOW takes up, use
522(let ((edges (window-edges))) (- (nth 2 edges) (nth 0 edges))). */)
521 (window) 523 (window)
522 Lisp_Object window; 524 Lisp_Object window;
523{ 525{
@@ -1234,9 +1236,9 @@ Return POS. */)
1234 1236
1235DEFUN ("set-window-start", Fset_window_start, Sset_window_start, 2, 3, 0, 1237DEFUN ("set-window-start", Fset_window_start, Sset_window_start, 2, 3, 0,
1236 doc: /* Make display in WINDOW start at position POS in WINDOW's buffer. 1238 doc: /* Make display in WINDOW start at position POS in WINDOW's buffer.
1237Return POS. 1239WINDOW defaults to the selected window. Return POS.
1238Optional third arg NOFORCE non-nil inhibits next redisplay 1240Optional third arg NOFORCE non-nil inhibits next redisplay from
1239from overriding motion of point in order to display at this exact start. */) 1241overriding motion of point in order to display at this exact start. */)
1240 (window, pos, noforce) 1242 (window, pos, noforce)
1241 Lisp_Object window, pos, noforce; 1243 Lisp_Object window, pos, noforce;
1242{ 1244{
@@ -1257,10 +1259,17 @@ from overriding motion of point in order to display at this exact start. */)
1257 return pos; 1259 return pos;
1258} 1260}
1259 1261
1262
1260DEFUN ("window-dedicated-p", Fwindow_dedicated_p, Swindow_dedicated_p, 1263DEFUN ("window-dedicated-p", Fwindow_dedicated_p, Swindow_dedicated_p,
1261 1, 1, 0, 1264 0, 1, 0,
1262 doc: /* Return WINDOW's dedicated object, usually t or nil. 1265 doc: /* Return non-nil when WINDOW is dedicated to its buffer.
1263See also `set-window-dedicated-p'. */) 1266WINDOW defaults to the selected window.
1267
1268When a window is dedicated to its buffer, `display-buffer' and
1269`set-window-buffer' will refrain from displaying another buffer in it.
1270`get-lru-window' and `get-largest-window' treat dedicated windows
1271specially. `delete-windows-on' and `replace-buffer-in-windows'
1272sometimes delete a dedicated window and the containing frame. */)
1264 (window) 1273 (window)
1265 Lisp_Object window; 1274 Lisp_Object window;
1266{ 1275{
@@ -1269,26 +1278,31 @@ See also `set-window-dedicated-p'. */)
1269 1278
1270DEFUN ("set-window-dedicated-p", Fset_window_dedicated_p, 1279DEFUN ("set-window-dedicated-p", Fset_window_dedicated_p,
1271 Sset_window_dedicated_p, 2, 2, 0, 1280 Sset_window_dedicated_p, 2, 2, 0,
1272 doc: /* Control whether WINDOW is dedicated to the buffer it displays. 1281 doc: /* Mark WINDOW as dedicated according to FLAG.
1273If it is dedicated, Emacs will not automatically change 1282WINDOW defaults to the selected window. FLAG non-nil means mark WINDOW
1274which buffer appears in it. 1283as dedicated to its buffer. FLAG nil means mark WINDOW as nondedicated.
1275The second argument is the new value for the dedication flag; 1284Return FLAG.
1276non-nil means yes. */) 1285
1277 (window, arg) 1286When a window is dedicated to its buffer, `display-buffer' and
1278 Lisp_Object window, arg; 1287`set-window-buffer' will refrain from displaying another buffer in it.
1288`get-lru-window' and `get-largest-window' treat dedicated windows
1289specially. `delete-windows-on' and `replace-buffer-in-windows'
1290sometimes delete a dedicated window and the containing frame. */)
1291 (window, flag)
1292 Lisp_Object window, flag;
1279{ 1293{
1280 register struct window *w = decode_window (window); 1294 register struct window *w = decode_window (window);
1281 1295
1282 w->dedicated = arg; 1296 w->dedicated = flag;
1283
1284 return w->dedicated; 1297 return w->dedicated;
1285} 1298}
1286 1299
1300
1287DEFUN ("window-parameters", Fwindow_parameters, Swindow_parameters, 1301DEFUN ("window-parameters", Fwindow_parameters, Swindow_parameters,
1288 0, 1, 0, 1302 0, 1, 0,
1289 doc: /* Return the parameters-alist of window WINDOW. 1303 doc: /* Return the parameters of WINDOW and their values.
1290It is a list of elements of the form (PARAMETER . VALUE). 1304WINDOW defaults to the selected window. The return value is a list of
1291If WINDOW is omitted, return information on the currently selected window. */) 1305elements of the form (PARAMETER . VALUE). */)
1292 (window) 1306 (window)
1293 Lisp_Object window; 1307 Lisp_Object window;
1294{ 1308{
@@ -1297,8 +1311,8 @@ If WINDOW is omitted, return information on the currently selected window. */)
1297 1311
1298DEFUN ("window-parameter", Fwindow_parameter, Swindow_parameter, 1312DEFUN ("window-parameter", Fwindow_parameter, Swindow_parameter,
1299 2, 2, 0, 1313 2, 2, 0,
1300 doc: /* Return WINDOW's value for parameter PARAMETER. 1314 doc: /* Return WINDOW's value for PARAMETER.
1301If WINDOW is nil, describe the currently selected window. */) 1315WINDOW defaults to the selected window. */)
1302 (window, parameter) 1316 (window, parameter)
1303 Lisp_Object window, parameter; 1317 Lisp_Object window, parameter;
1304{ 1318{
@@ -1308,12 +1322,10 @@ If WINDOW is nil, describe the currently selected window. */)
1308 return CDR_SAFE (result); 1322 return CDR_SAFE (result);
1309} 1323}
1310 1324
1311
1312DEFUN ("set-window-parameter", Fset_window_parameter, 1325DEFUN ("set-window-parameter", Fset_window_parameter,
1313 Sset_window_parameter, 3, 3, 0, 1326 Sset_window_parameter, 3, 3, 0,
1314 doc: /* Set window parameter PARAMETER to VALUE on WINDOW. 1327 doc: /* Set WINDOW's value of PARAMETER to VALUE.
1315If WINDOW is nil, use the currently selected window. 1328WINDOW defaults to the selected window. Return VALUE. */)
1316Return VALUE. */)
1317 (window, parameter, value) 1329 (window, parameter, value)
1318 Lisp_Object window, parameter, value; 1330 Lisp_Object window, parameter, value;
1319{ 1331{
@@ -2488,7 +2500,9 @@ If optional argument FRAME is `visible', search all visible frames.
2488If FRAME is 0, search all visible and iconified frames. 2500If FRAME is 0, search all visible and iconified frames.
2489If FRAME is nil, search all frames. 2501If FRAME is nil, search all frames.
2490If FRAME is t, search only the selected frame. 2502If FRAME is t, search only the selected frame.
2491If FRAME is a frame, search only that frame. */) 2503If FRAME is a frame, search only that frame.
2504When a window showing BUFFER is dedicated and the only window of its
2505frame, that frame is deleted when there are other frames left. */)
2492 (buffer, frame) 2506 (buffer, frame)
2493 Lisp_Object buffer, frame; 2507 Lisp_Object buffer, frame;
2494{ 2508{
@@ -2513,7 +2527,10 @@ DEFUN ("replace-buffer-in-windows", Freplace_buffer_in_windows,
2513 Sreplace_buffer_in_windows, 2527 Sreplace_buffer_in_windows,
2514 1, 1, "bReplace buffer in windows: ", 2528 1, 1, "bReplace buffer in windows: ",
2515 doc: /* Replace BUFFER with some other buffer in all windows showing it. 2529 doc: /* Replace BUFFER with some other buffer in all windows showing it.
2516BUFFER may be a buffer or the name of an existing buffer. */) 2530BUFFER may be a buffer or the name of an existing buffer.
2531When a window showing BUFFER is dedicated that window is deleted. When
2532that window is the only window on its frame, that frame is deleted too
2533when there are other frames left. */)
2517 (buffer) 2534 (buffer)
2518 Lisp_Object buffer; 2535 Lisp_Object buffer;
2519{ 2536{
@@ -3449,38 +3466,35 @@ set_window_buffer (window, buffer, run_hooks_p, keep_margins_p)
3449 3466
3450 3467
3451DEFUN ("set-window-buffer", Fset_window_buffer, Sset_window_buffer, 2, 3, 0, 3468DEFUN ("set-window-buffer", Fset_window_buffer, Sset_window_buffer, 2, 3, 0,
3452 doc: /* Make WINDOW display BUFFER as its contents. 3469 doc: /* Make WINDOW display BUFFER-OR-NAME as its contents.
3453BUFFER can be a buffer or the name of an existing buffer. 3470WINDOW defaults to the selected window. BUFFER-OR-NAME must be a buffer
3454Optional third arg KEEP-MARGINS non-nil means that WINDOW's current 3471or the name of an existing buffer. Optional third argument KEEP-MARGINS
3455display margins, fringe widths, and scroll bar settings are maintained; 3472non-nil means that WINDOW's current display margins, fringe widths, and
3456the default is to reset these from BUFFER's local settings or the frame 3473scroll bar settings are preserved; the default is to reset these from
3457defaults. 3474the local settings for BUFFER-OR-NAME or the frame defaults. Return nil
3475
3476This function throws an error when WINDOW is dedicated to its buffer and
3477does not already display BUFFER-OR-NAME.
3458 3478
3459This function runs the hook `window-scroll-functions'. */) 3479This function runs the hook `window-scroll-functions'. */)
3460 (window, buffer, keep_margins) 3480 (window, buffer_or_name, keep_margins)
3461 register Lisp_Object window, buffer, keep_margins; 3481 register Lisp_Object window, buffer_or_name, keep_margins;
3462{ 3482{
3463 register Lisp_Object tem; 3483 register Lisp_Object tem, buffer;
3464 register struct window *w = decode_window (window); 3484 register struct window *w = decode_window (window);
3465 3485
3466 XSETWINDOW (window, w); 3486 XSETWINDOW (window, w);
3467 buffer = Fget_buffer (buffer); 3487 buffer = Fget_buffer (buffer_or_name);
3468 CHECK_BUFFER (buffer); 3488 CHECK_BUFFER (buffer);
3469
3470 if (NILP (XBUFFER (buffer)->name)) 3489 if (NILP (XBUFFER (buffer)->name))
3471 error ("Attempt to display deleted buffer"); 3490 error ("Attempt to display deleted buffer");
3472 3491
3473 tem = w->buffer; 3492 tem = w->buffer;
3474 if (NILP (tem)) 3493 if (!EQ (tem, Qt))
3475 error ("Window is deleted"); 3494 /* w->buffer is t when the window is first being set up. */
3476 else if (! EQ (tem, Qt)) /* w->buffer is t when the window
3477 is first being set up. */
3478 { 3495 {
3479 if (!EQ (tem, buffer)) 3496 if (!NILP (w->dedicated) && !EQ (tem, buffer))
3480 if (EQ (w->dedicated, Qt)) 3497 error ("Window is dedicated to `%s'", SDATA (XBUFFER (tem)->name));
3481 error ("Window is dedicated to `%s'", SDATA (XBUFFER (tem)->name));
3482 else
3483 w->dedicated = Qnil;
3484 3498
3485 unshow_buffer (w); 3499 unshow_buffer (w);
3486 } 3500 }
@@ -3489,8 +3503,8 @@ This function runs the hook `window-scroll-functions'. */)
3489 return Qnil; 3503 return Qnil;
3490} 3504}
3491 3505
3492/* Note that selected_window can be nil 3506/* Note that selected_window can be nil when this is called from
3493 when this is called from Fset_window_configuration. */ 3507 Fset_window_configuration. */
3494 3508
3495DEFUN ("select-window", Fselect_window, Sselect_window, 1, 2, 0, 3509DEFUN ("select-window", Fselect_window, Sselect_window, 1, 2, 0,
3496 doc: /* Select WINDOW. Most editing will apply to WINDOW's buffer. 3510 doc: /* Select WINDOW. Most editing will apply to WINDOW's buffer.