Mercurial > hg > xemacs-beta
diff lisp/vm/tapestry.el @ 70:131b0175ea99 r20-0b30
Import from CVS: tag r20-0b30
author | cvs |
---|---|
date | Mon, 13 Aug 2007 09:02:59 +0200 |
parents | 859a2309aef8 |
children | 0d2f883870bc |
line wrap: on
line diff
--- a/lisp/vm/tapestry.el Mon Aug 13 09:00:04 2007 +0200 +++ b/lisp/vm/tapestry.el Mon Aug 13 09:02:59 2007 +0200 @@ -1,5 +1,5 @@ ;;; Tools to configure your GNU Emacs windows -;;; Copyright (C) 1991, 1993, 1994, 1995, 1997 Kyle E. Jones +;;; Copyright (C) 1991, 1993, 1994, 1995 Kyle E. Jones ;;; ;;; This program is free software; you can redistribute it and/or modify ;;; it under the terms of the GNU General Public License as published by @@ -20,12 +20,7 @@ (provide 'tapestry) -(defvar tapestry-version "1.08") - -;; Pass state information between the tapestry-set-window-map -;; and tapestry-set-buffer-map stages. UGH. The reason for this -;; is explained in tapestry-set-buffer-map. -(defvar tapestry-windows-changed nil) +(defvar tapestry-version "1.07") (defun tapestry (&optional frame-list) "Returns a list containing complete information about the current @@ -74,7 +69,6 @@ coordinates can be found, the window with the greatest overlap of ROOT-WINDOW-EDGES will be used." (let ((sf (tapestry-selected-frame)) - (tapestry-windows-changed nil) frame-list frame-map other-maps other-map) (setq frame-map (nth 0 map) other-maps (nth 1 map)) @@ -201,14 +195,12 @@ (delete-window inside-w))) (t (setq root-window overlap-w)))) (tapestry-apply-window-map map map-width map-height root-window) - (setq tapestry-windows-changed t) root-window ) (if (tapestry-windows-match-map map map-width map-height) (tapestry-first-window) (delete-other-windows) (setq root-window (selected-window)) (tapestry-apply-window-map map map-width map-height root-window) - (setq tapestry-windows-changed t) root-window )))) (defun tapestry-buffer-map () @@ -222,50 +214,16 @@ w-list (cdr w-list))) (nreverse list))) -;; This version of tapestry-set-buffer-map unconditionally set -;; the window buffer. This confused XEmacs 19.14's scroll-up -;; function when scrolling VM presentation buffers. -;; end-of-buffer was never signaled after a scroll. You can -;; duplicate this by creating a buffer that can be displayed -;; fully in the current window and then run -;; -;; (progn -;; (set-window-buffer (selected-window) (current-buffer)) -;; (scroll-up nil)) -;;;;;;;;;;; -;;(defun tapestry-set-buffer-map (buffer-map &optional first-window) -;; (let ((w-list (tapestry-window-list first-window)) wb) -;; (while (and w-list buffer-map) -;; (setq wb (car buffer-map)) -;; (set-window-buffer -;; (car w-list) -;; (if (car wb) -;; (or (get-file-buffer (car wb)) -;; (find-file-noselect (car wb))) -;; (get-buffer-create (nth 1 wb)))) -;; (setq w-list (cdr w-list) -;; buffer-map (cdr buffer-map))))) - (defun tapestry-set-buffer-map (buffer-map &optional first-window) - (let ((w-list (tapestry-window-list first-window)) - current-wb proposed-wb cell) + (let ((w-list (tapestry-window-list first-window)) wb) (while (and w-list buffer-map) - (setq cell (car buffer-map) - proposed-wb (if (car cell) - (or (get-file-buffer (car cell)) - (find-file-noselect (car cell))) - (get-buffer-create (nth 1 cell))) - current-wb (window-buffer (car w-list))) - ;; Setting the window buffer to the same value it already - ;; has seems to confuse XEmacs' scroll-up function. But - ;; _not_ setting after windows torn down seem to cause - ;; window point to sometimes drift away from point at - ;; redisplay time. The solution (hopefully!) is to track - ;; when windows have been rearranged and unconditionally do - ;; the set-window-buffer, otherwise do it only if the - ;; window buffer and the prosed window buffer differ. - (if (or tapestry-windows-changed (not (eq proposed-wb current-wb))) - (set-window-buffer (car w-list) proposed-wb)) + (setq wb (car buffer-map)) + (set-window-buffer + (car w-list) + (if (car wb) + (or (get-file-buffer (car wb)) + (find-file-noselect (car wb))) + (get-buffer-create (nth 1 wb)))) (setq w-list (cdr w-list) buffer-map (cdr buffer-map)))))