unofficial mirror of help-gnu-emacs@gnu.org
 help / color / mirror / Atom feed
* Toggle between Vertical and Horizontal Windows Splitting
@ 2008-11-14 13:43 Nordlöw
  2008-11-14 13:54 ` Fabrice Niessen
  0 siblings, 1 reply; 3+ messages in thread
From: Nordlöw @ 2008-11-14 13:43 UTC (permalink / raw)
  To: help-gnu-emacs

Requested: Function that toggles between vertical and horizontal split
layout of currently defined windows preferrably preserving splitting
ratio.

Thanks in advance,
Nordlöw


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: Toggle between Vertical and Horizontal Windows Splitting
  2008-11-14 13:43 Toggle between Vertical and Horizontal Windows Splitting Nordlöw
@ 2008-11-14 13:54 ` Fabrice Niessen
  2008-11-14 14:42   ` Nordlöw
  0 siblings, 1 reply; 3+ messages in thread
From: Fabrice Niessen @ 2008-11-14 13:54 UTC (permalink / raw)
  To: help-gnu-emacs-mXXj517/zsQ

Nordlöw,

> Requested: Function that toggles between vertical and
> horizontal split layout of currently defined windows
> preferrably preserving splitting ratio.

You can find the following:

--8<---------------cut here---------------start------------->8---
(defun my-toggle-window-split ()
  "Vertical split shows more of each line, horizontal split shows
more lines. This code toggles between them. It only works for
frames with exactly two windows."
  (interactive)
  (if (= (count-windows) 2)
      (let* ((this-win-buffer (window-buffer))
	     (next-win-buffer (window-buffer (next-window)))
	     (this-win-edges (window-edges (selected-window)))
	     (next-win-edges (window-edges (next-window)))
	     (this-win-2nd (not (and (<= (car this-win-edges)
					 (car next-win-edges))
				     (<= (cadr this-win-edges)
					 (cadr next-win-edges)))))
	     (splitter
	      (if (= (car this-win-edges)
		     (car (window-edges (next-window))))
		  'split-window-horizontally
		'split-window-vertically)))
	(delete-other-windows)
	(let ((first-win (selected-window)))
	  (funcall splitter)
	  (if this-win-2nd (other-window 1))
	  (set-window-buffer (selected-window) this-win-buffer)
	  (set-window-buffer (next-window) next-win-buffer)
	  (select-window first-win)
	  (if this-win-2nd (other-window 1))))))

(global-set-key [(control c) (|)] 'my-toggle-window-split)
--8<---------------cut here---------------end--------------->8---

in my `.emacs' file (on http://www.mygooglest.com/fni/dot-emacs.html).

FYI, this has been taken from the excellent EmacsWiki:

    http://www.emacswiki.org/emacs/ToggleWindowSplit

Best regards,
  Fabrice

_________________________________________________________________________
Fabrice Niessen
Search the Web with "My Google Search Tools" on http://www.MyGooglest.com


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: Toggle between Vertical and Horizontal Windows Splitting
  2008-11-14 13:54 ` Fabrice Niessen
@ 2008-11-14 14:42   ` Nordlöw
  0 siblings, 0 replies; 3+ messages in thread
From: Nordlöw @ 2008-11-14 14:42 UTC (permalink / raw)
  To: help-gnu-emacs

On 14 Nov, 14:54, "Fabrice Niessen" <tdhkhcidi...@spammotel.com>
wrote:
> Nordlöw,
>
> > Requested: Function that toggles between vertical and
> > horizontal split layout of currently defined windows
> > preferrably preserving splitting ratio.
>
> You can find the following:
>
> --8<---------------cut here---------------start------------->8---
> (defun my-toggle-window-split ()
>   "Vertical split shows more of each line, horizontal split shows
> more lines. This code toggles between them. It only works for
> frames with exactly two windows."
>   (interactive)
>   (if (= (count-windows) 2)
>       (let* ((this-win-buffer (window-buffer))
>              (next-win-buffer (window-buffer (next-window)))
>              (this-win-edges (window-edges (selected-window)))
>              (next-win-edges (window-edges (next-window)))
>              (this-win-2nd (not (and (<= (car this-win-edges)
>                                          (car next-win-edges))
>                                      (<= (cadr this-win-edges)
>                                          (cadr next-win-edges)))))
>              (splitter
>               (if (= (car this-win-edges)
>                      (car (window-edges (next-window))))
>                   'split-window-horizontally
>                 'split-window-vertically)))
>         (delete-other-windows)
>         (let ((first-win (selected-window)))
>           (funcall splitter)
>           (if this-win-2nd (other-window 1))
>           (set-window-buffer (selected-window) this-win-buffer)
>           (set-window-buffer (next-window) next-win-buffer)
>           (select-window first-win)
>           (if this-win-2nd (other-window 1))))))
>
> (global-set-key [(control c) (|)] 'my-toggle-window-split)
> --8<---------------cut here---------------end--------------->8---
>
> in my `.emacs' file (onhttp://www.mygooglest.com/fni/dot-emacs.html).
>
> FYI, this has been taken from the excellent EmacsWiki:
>
>    http://www.emacswiki.org/emacs/ToggleWindowSplit
>
> Best regards,
>   Fabrice
>
> _________________________________________________________________________
> Fabrice Niessen
> Search the Web with "My Google Search Tools" onhttp://www.MyGooglest.com

Thanks!

/Nordlöw


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2008-11-14 14:42 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-11-14 13:43 Toggle between Vertical and Horizontal Windows Splitting Nordlöw
2008-11-14 13:54 ` Fabrice Niessen
2008-11-14 14:42   ` Nordlöw

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).