31 |
|
|
32 |
(defmacro save-selected-window (&rest body) |
(defmacro save-selected-window (&rest body) |
33 |
"Execute BODY, then select the window that was selected before BODY. |
"Execute BODY, then select the window that was selected before BODY. |
34 |
However, if that window has become dead, don't get an error, |
Also restore the selected window of each frame as it was at the start |
35 |
just refrain from switching to it." |
of this construct. |
36 |
`(let ((save-selected-window-window (selected-window))) |
However, if a window has become dead, don't get an error, |
37 |
|
just refrain from reselecting it." |
38 |
|
`(let ((save-selected-window-window (selected-window)) |
39 |
|
(save-selected-window-alist |
40 |
|
(mapcar (lambda (frame) (list frame (frame-selected-window frame))) |
41 |
|
(frame-list)))) |
42 |
(unwind-protect |
(unwind-protect |
43 |
(progn ,@body) |
(progn ,@body) |
44 |
|
(dolist (elt save-selected-window-alist) |
45 |
|
(and (frame-live-p (car elt)) |
46 |
|
(window-live-p (cadr elt)) |
47 |
|
(set-frame-selected-window (car elt) (cadr elt)))) |
48 |
(if (window-live-p save-selected-window-window) |
(if (window-live-p save-selected-window-window) |
49 |
(select-window save-selected-window-window))))) |
(select-window save-selected-window-window))))) |
50 |
|
|
248 |
(setq done nil)))))) |
(setq done nil)))))) |
249 |
'nomini)))))) |
'nomini)))))) |
250 |
|
|
251 |
;;; I think this should be the default; I think people will prefer it--rms. |
;; I think this should be the default; I think people will prefer it--rms. |
252 |
(defcustom split-window-keep-point t |
(defcustom split-window-keep-point t |
253 |
"*If non-nil, split windows keeps the original point in both children. |
"*If non-nil, split windows keeps the original point in both children. |
254 |
This is often more convenient for editing. |
This is often more convenient for editing. |
309 |
(defvar view-return-to-alist) |
(defvar view-return-to-alist) |
310 |
|
|
311 |
(defun split-window-save-restore-data (new-w old-w) |
(defun split-window-save-restore-data (new-w old-w) |
312 |
(save-excursion |
(with-current-buffer (window-buffer) |
|
(set-buffer (window-buffer)) |
|
313 |
(if view-mode |
(if view-mode |
314 |
(let ((old-info (assq old-w view-return-to-alist))) |
(let ((old-info (assq old-w view-return-to-alist))) |
315 |
(setq view-return-to-alist |
(push (cons new-w (cons (and old-info (car (cdr old-info))) t)) |
316 |
(cons (cons new-w (cons (and old-info (car (cdr old-info))) t)) |
view-return-to-alist))) |
|
view-return-to-alist)))) |
|
317 |
new-w)) |
new-w)) |
318 |
|
|
319 |
(defun split-window-horizontally (&optional arg) |
(defun split-window-horizontally (&optional arg) |
525 |
(not (eq frame (window-frame mini-window))) |
(not (eq frame (window-frame mini-window))) |
526 |
(< (nth 3 edges) |
(< (nth 3 edges) |
527 |
(nth 1 (window-edges mini-window))) |
(nth 1 (window-edges mini-window))) |
528 |
(> (nth 1 edges) |
(> (nth 1 edges) |
529 |
(frame-parameter frame 'menu-bar-lines)))))) |
(frame-parameter frame 'menu-bar-lines)))))) |
530 |
(fit-window-to-buffer window (window-height window))))) |
(fit-window-to-buffer window (window-height window))))) |
531 |
|
|
589 |
"Handle select-window events." |
"Handle select-window events." |
590 |
(interactive "e") |
(interactive "e") |
591 |
(let ((window (posn-window (event-start event)))) |
(let ((window (posn-window (event-start event)))) |
592 |
(if (or (not (window-minibuffer-p window)) |
(if (and (window-live-p window) |
593 |
(minibuffer-window-active-p window)) |
(or (not (window-minibuffer-p window)) |
594 |
|
(minibuffer-window-active-p window))) |
595 |
(select-window window)))) |
(select-window window)))) |
596 |
|
|
597 |
(define-key ctl-x-map "2" 'split-window-vertically) |
(define-key ctl-x-map "2" 'split-window-vertically) |