[comp.emacs] GNU Emacs POLL: where should killed window space go?

tower@WHEATIES.AI.MIT.EDU (Leonard H. Tower Jr.) (01/12/89)

   From: rms@wheaties.ai.mit.edu (Richard Stallman)

   Could you conduct another poll asking whether people would prefer it
   if C-x 0 gave all its space to one other immediately adjacent window?
   Right now the space of the window being deleted is distributed
   among all the sibling windows in proportion to their current size.

Please reply via electronic mail to me:
	tower@wheaties.ai.mit.edu 
do NOT post your reply to either of the newsgroups or the mailing list. 

I prefer that the Subject: heade lines be either
   Subject: kws poll: prefer PRESENT V 18 all sibling windows
OR
   Subject: kws poll: prefer NEW all space to immediately adjacent window
Substanial comments welcome (of course ;-).

thanx -len 

wolfgang@mgm.mit.edu (Wolfgang Rupprecht) (01/14/89)

I would like to see ideas tossed around on the net on this topic,
hence the posting instead of a reply to tower@prep.ai.mit.edu ...

>   Could you conduct another poll asking whether people would prefer it
>   if C-x 0 gave all its space to one other immediately adjacent window?
>   Right now the space of the window being deleted is distributed
>   among all the sibling windows in proportion to their current size.

Emacs is really only a (great) two window editor.  Managing 3 or more
windows is always a real pain.  One problem case is in parsing lint(1)
output for cases like:

	"function x used inconsistently foo.c(7) :: bar.c(7)" 

I would really like to have 3 windows for foo.c, bar.c and
*compilation*.  Choosing a window to go to is a serial access
nightmare.  Deleting a window is even more painful, as the resulting
windows usually have to be resized individually.

Usually when I delete 1 of 3 windows, I usually end up resizing the 2
resulting windows to be equal size again.  I therefor would vote for
\C-x 0 to resize all remaining windows to be *equally* sized.

A "resize-windows-to-ratio <x> <y> ... <z>" command would also be
useful here for adjusting the relative size of more than two windows.

In addition to the above, I would also like to see an "absolute
addressed" window-selection command.  Right now, one has to \C-x o to
the desired window.  A "goto-window <buffer-name>" command would be
handy.  Or perhaps a window-number on the mode-line and a "\C-x j <n>"
command to get to it?

-wolfgang
Wolfgang Rupprecht	ARPA:  wolfgang@mgm.mit.edu (IP 18.82.0.114)
TEL: (617) 267-4365	UUCP:  mit-eddie!mgm.mit.edu!wolfgang

rk@lexicon.UUCP (Bob Kukura) (01/16/89)

In article <8758@bloom-beacon.MIT.EDU> wolfgang@mgm.mit.edu (Wolfgang Rupprecht) writes:

   I would like to see ideas tossed around on the net on this topic,
   hence the posting instead of a reply to tower@prep.ai.mit.edu ...

   >   Could you conduct another poll asking whether people would prefer it
   >   if C-x 0 gave all its space to one other immediately adjacent window?
   >   Right now the space of the window being deleted is distributed
   >   among all the sibling windows in proportion to their current size.

[...]

   Usually when I delete 1 of 3 windows, I usually end up resizing the 2
   resulting windows to be equal size again.  I therefor would vote for
   \C-x 0 to resize all remaining windows to be *equally* sized.

   A "resize-windows-to-ratio <x> <y> ... <z>" command would also be
   useful here for adjusting the relative size of more than two windows.

A command that declared the maximum size buffer that a window needs
would be useful in these kinds of situations, and wouldn't require the
user to resize the windows manually as often.  Some modes might set
the size limit automatically.

   In addition to the above, I would also like to see an "absolute
   addressed" window-selection command.  Right now, one has to \C-x o to
   the desired window.  A "goto-window <buffer-name>" command would be
   handy.  Or perhaps a window-number on the mode-line and a "\C-x j <n>"
   command to get to it?

Me too.  I like the window number idea.

   -wolfgang
   Wolfgang Rupprecht	ARPA:  wolfgang@mgm.mit.edu (IP 18.82.0.114)
   TEL: (617) 267-4365	UUCP:  mit-eddie!mgm.mit.edu!wolfgang

-- 
-Bob Kukura		uucp: {husc6,linus,harvard,bbn}!spdcc!lexicon!rk
			phone: (617) 891-6790

jr@bbn.com (John Robinson) (01/16/89)

In article <8758@bloom-beacon.MIT.EDU>, wolfgang@mgm (Wolfgang Rupprecht) writes:
>I would like to see ideas tossed around on the net on this topic,
Sure, me too.

>Usually when I delete 1 of 3 windows, I usually end up resizing the 2
>resulting windows to be equal size again.  I therefor would vote for
>\C-x 0 to resize all remaining windows to be *equally* sized.
>
>A "resize-windows-to-ratio <x> <y> ... <z>" command would also be
>useful here for adjusting the relative size of more than two windows.
Maybe there could be a vector of numbers whose ratios would be used to
size the remaining windows.  Setting the numbers equal would result in
equal size windows, etc.  When N windows are visible, look at the
first N entries, etc.

Or maybe a vector of vectors...

This would be easy to prototype by redefinition of (delete-window).

>In addition to the above, I would also like to see an "absolute
>addressed" window-selection command.  Right now, one has to \C-x o to
>the desired window.
You know about prefix args to \C-x o ?
--
/jr
jr@bbn.com or bbn!jr

raible@orville.nas.nasa.gov (Eric L. Raible) (01/18/89)

In article <8758@bloom-beacon.MIT.EDU> wolfgang@mgm.mit.edu.UUCP (Wolfgang Rupprecht) writes:
>Usually when I delete 1 of 3 windows, I usually end up resizing the 2
>resulting windows to be equal size again.  I therefor would vote for
>\C-x 0 to resize all remaining windows to be *equally* sized.
>

I got an initial copy of this code from someone else (but can't remember who).
It doesn't work too well with horizontally-split windows, but is quite useful
otherwise.

(global-set-key "\eB"      'balance-windows)

(defun balance-windows ()
  "Makes all visible windows the same size."
  (interactive)
  (let ((size (/ (screen-height) (count-windows))))
    (walk-windows (function (lambda ()
			      (enlarge-window (- size (window-height)))))
		  'no-mini)))

(defun walk-windows (proc &optional no-mini)
   "Applies PROC to each visible window (after selecting it, for convenience).
Optional arg NO-MINI non-nil means don't apply PROC to the minibuffer
even if it is active."
   (let* ((start (selected-window))
	  (current start)
	  (done nil))
     (while (not done)
       (select-window current)
       (funcall proc)
       (setq current (next-window current no-mini))
       (setq done (eq current start)))
     (select-window start)))

(defun count-windows (&optional no-mini)
   "Returns the number of visible windows.
Optional arg NO-MINI non-nil means don't count the minibuffer
even if it is active."
   (let ((count 0))
     (walk-windows (function (lambda ()
			       (setq count (+ count 1))))
		   no-mini)
     count))