Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 134298 Details for
Bug 196996
emacs-cvs-22.1.50_p20070829-r1 and elscreen-1.4.5-r1 throws "Window height 2 too small (after splitting)"
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
emacs-cvs-window-size-reverse.patch
window.patch (text/plain), 8.12 KB, created by
Ulrich Müller
on 2007-10-25 07:25:57 UTC
(
hide
)
Description:
emacs-cvs-window-size-reverse.patch
Filename:
MIME Type:
Creator:
Ulrich Müller
Created:
2007-10-25 07:25:57 UTC
Size:
8.12 KB
patch
obsolete
>Index: src/window.c >=================================================================== >RCS file: /sources/emacs/emacs/src/window.c,v >retrieving revision 1.575.2.5 >retrieving revision 1.575.2.4 >diff -u -r1.575.2.5 -r1.575.2.4 >--- src/window.c 6 Aug 2007 06:44:31 -0000 1.575.2.5 >+++ src/window.c 25 Jul 2007 05:15:22 -0000 1.575.2.4 >@@ -62,7 +62,6 @@ > static void window_scroll_pixel_based P_ ((Lisp_Object, int, int, int)); > static void window_scroll_line_based P_ ((Lisp_Object, int, int, int)); > static int window_min_size_1 P_ ((struct window *, int)); >-static int window_min_size_2 P_ ((struct window *, int)); > static int window_min_size P_ ((struct window *, int, int, int *)); > static void size_window P_ ((Lisp_Object, int, int, int, int, int)); > static int freeze_window_start P_ ((struct window *, void *)); >@@ -557,15 +556,6 @@ > return make_number (window_box_text_cols (decode_any_window (window))); > } > >-DEFUN ("window-full-width-p", Fwindow_full_width_p, Swindow_full_width_p, 0, 1, 0, >- doc: /* Return t if WINDOW is as wide as its frame. >-WINDOW defaults to the selected window. */) >- (window) >- Lisp_Object window; >-{ >- return WINDOW_FULL_WIDTH_P (decode_any_window (window)) ? Qt : Qnil; >-} >- > DEFUN ("window-hscroll", Fwindow_hscroll, Swindow_hscroll, 0, 1, 0, > doc: /* Return the number of columns by which WINDOW is scrolled from left margin. > WINDOW defaults to the selected window. */) >@@ -2563,6 +2553,7 @@ > *cols = MIN_SAFE_WINDOW_WIDTH; > } > >+ > /* Value is non-zero if window W is fixed-size. WIDTH_P non-zero means > check if W's width can be changed, otherwise check W's height. > CHECK_SIBLINGS_P non-zero means check resizablity of WINDOW's >@@ -2664,33 +2655,6 @@ > return fixed_p; > } > >-/* Return the minimum size for leaf window W. WIDTH_P non-zero means >- take into account fringes and the scrollbar of W. WIDTH_P zero >- means take into account mode-line and header-line of W. Return 1 >- for the minibuffer. */ >- >-static int >-window_min_size_2 (w, width_p) >- struct window *w; >- int width_p; >-{ >- int size; >- >- if (width_p) >- size = max (window_min_width, >- (MIN_SAFE_WINDOW_WIDTH >- + WINDOW_FRINGE_COLS (w) >- + WINDOW_SCROLL_BAR_COLS (w))); >- else if (MINI_WINDOW_P (w)) >- size = 1; >- else >- size = max (window_min_height, >- (MIN_SAFE_WINDOW_HEIGHT >- + (WINDOW_WANTS_MODELINE_P (w) ? 1 : 0) >- + (WINDOW_WANTS_HEADER_LINE_P (w) ? 1 : 0 ))); >- >- return size; >-} > > /* Return the minimum size of window W, not taking fixed-width windows > into account. WIDTH_P non-zero means return the minimum width, >@@ -2760,7 +2724,22 @@ > } > } > else >- size = window_min_size_2 (w, width_p); >+ { >+ if (width_p) >+ size = max (window_min_width, >+ (MIN_SAFE_WINDOW_WIDTH >+ + WINDOW_FRINGE_COLS (w) >+ + WINDOW_SCROLL_BAR_COLS (w))); >+ else >+ { >+ if (MINI_WINDOW_P (w) >+ || (!WINDOW_WANTS_MODELINE_P (w) >+ && !WINDOW_WANTS_HEADER_LINE_P (w))) >+ size = 1; >+ else >+ size = window_min_height; >+ } >+ } > > return size; > } >@@ -3002,6 +2981,11 @@ > Lisp_Object child, *forward, *sideward; > int old_size, min_size, safe_min_size; > >+ /* We test nodelete_p != 2 and nodelete_p != 1 below, so it >+ seems like it's too soon to do this here. ++KFS. */ >+ if (nodelete_p == 2) >+ nodelete_p = 0; >+ > check_min_window_sizes (); > size = max (0, size); > >@@ -3012,23 +2996,22 @@ > { > old_size = WINDOW_TOTAL_COLS (w); > min_size = window_min_width; >- safe_min_size = window_min_size_2 (w, 1); >+ /* Ensure that there is room for the scroll bar and fringes! >+ We may reduce display margins though. */ >+ safe_min_size = (MIN_SAFE_WINDOW_WIDTH >+ + WINDOW_FRINGE_COLS (w) >+ + WINDOW_SCROLL_BAR_COLS (w)); > } > else > { > old_size = XINT (w->total_lines); > min_size = window_min_height; >- safe_min_size = window_min_size_2 (w, 0); >+ safe_min_size = MIN_SAFE_WINDOW_HEIGHT; > } > > if (old_size < min_size && nodelete_p != 2) > w->too_small_ok = Qt; > >- /* Move the following test here since otherwise the >- preceding test doesn't make sense. martin. */ >- if (nodelete_p == 2) >- nodelete_p = 0; >- > /* Maybe delete WINDOW if it's too small. */ > if (nodelete_p != 1 && !NILP (w->parent)) > { >@@ -3725,6 +3708,9 @@ > frames = Qnil; > if (FRAME_MINIBUF_ONLY_P (f)) > XSETFRAME (frames, last_nonminibuf_frame); >+ /* Don't try to create a window if we would get an error. */ >+ if (split_height_threshold < window_min_height << 1) >+ split_height_threshold = window_min_height << 1; > > /* Note that both Fget_largest_window and Fget_lru_window > ignore minibuffers and dedicated windows. >@@ -3747,30 +3733,25 @@ > else > window = Fget_largest_window (frames, Qt); > >- /* If the largest window is tall enough, full-width, and either eligible >- for splitting or the only window, split it. */ >+ /* If we got a tall enough full-width window that can be split, >+ split it. */ > if (!NILP (window) > && ! FRAME_NO_SPLIT_P (XFRAME (XWINDOW (window)->frame)) >- && WINDOW_FULL_WIDTH_P (XWINDOW (window)) >- && (window_height (window) >= split_height_threshold >- || (NILP (XWINDOW (window)->parent))) >- && (window_height (window) >- >= (2 * window_min_size_2 (XWINDOW (window), 0)))) >+ && window_height (window) >= split_height_threshold >+ && WINDOW_FULL_WIDTH_P (XWINDOW (window))) > window = Fsplit_window (window, Qnil, Qnil); > else > { > Lisp_Object upper, lower, other; > > window = Fget_lru_window (frames, Qt); >- /* If the LRU window is tall enough, and either eligible for splitting >- and selected or the only window, split it. */ >+ /* If the LRU window is selected, and big enough, >+ and can be split, split it. */ > if (!NILP (window) > && ! FRAME_NO_SPLIT_P (XFRAME (XWINDOW (window)->frame)) >- && ((EQ (window, selected_window) >- && window_height (window) >= split_height_threshold) >- || (NILP (XWINDOW (window)->parent))) >- && (window_height (window) >- >= (2 * window_min_size_2 (XWINDOW (window), 0)))) >+ && (EQ (window, selected_window) >+ || EQ (XWINDOW (window)->parent, Qnil)) >+ && window_height (window) >= window_min_height << 1) > window = Fsplit_window (window, Qnil, Qnil); > else > window = Fget_lru_window (frames, Qnil); >@@ -4019,11 +4000,9 @@ > > if (NILP (horflag)) > { >- int window_safe_height = window_min_size_2 (o, 0); >- >- if (size_int < window_safe_height) >+ if (size_int < window_min_height) > error ("Window height %d too small (after splitting)", size_int); >- if (size_int + window_safe_height > XFASTINT (o->total_lines)) >+ if (size_int + window_min_height > XFASTINT (o->total_lines)) > error ("Window height %d too small (after splitting)", > XFASTINT (o->total_lines) - size_int); > if (NILP (o->parent) >@@ -4036,11 +4015,10 @@ > } > else > { >- int window_safe_width = window_min_size_2 (o, 1); >- >- if (size_int < window_safe_width) >+ if (size_int < window_min_width) > error ("Window width %d too small (after splitting)", size_int); >- if (size_int + window_safe_width > XFASTINT (o->total_cols)) >+ >+ if (size_int + window_min_width > XFASTINT (o->total_cols)) > error ("Window width %d too small (after splitting)", > XFASTINT (o->total_cols) - size_int); > if (NILP (o->parent) >@@ -4521,7 +4499,7 @@ > > /* Don't make this window too small. */ > if (XINT (CURSIZE (window)) + delta >- < window_min_size_2 (XWINDOW (window), horiz_flag)) >+ < (horiz_flag ? window_min_width : window_min_height)) > { > Fset_window_configuration (old_config); > error ("Cannot adjust window size as specified"); >@@ -6919,7 +6897,7 @@ > vertical_type = Qnil; > } > >- if (!(NILP (vertical_type) >+ if (!(EQ (vertical_type, Qnil) > || EQ (vertical_type, Qleft) > || EQ (vertical_type, Qright) > || EQ (vertical_type, Qt))) >@@ -7524,7 +7502,6 @@ > defsubr (&Swindow_buffer); > defsubr (&Swindow_height); > defsubr (&Swindow_width); >- defsubr (&Swindow_full_width_p); > defsubr (&Swindow_hscroll); > defsubr (&Sset_window_hscroll); > defsubr (&Swindow_redisplay_end_trigger);
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 196996
: 134298