anchor.diff:      :initarg :height
       :accessor window-%height
       :type fixnum)
  -   (%buffer
  -    :initarg :%buffer
  +   (buffer
  +    :initarg :buffer
       :accessor window-%buffer
       :type buffer)
      (screen
  -    :initarg :screen
       :reader window-screen)
      (view-point
  -    :initarg :view-point
       :reader window-view-point
       :writer set-window-view-point
       :type point)
      (point
  -    :initarg :point
       :accessor %window-point
       :type point)
      (delete-hook
  
positive.code:     :initform nil
      :accessor window-parameters)))
  
  (defgeneric %delete-window (window))
  
  (defun windowp (x)
    (typep x 'window))
  
  (defun %make-window (class-name buffer x y width height use-modeline-p)
    (make-instance class-name
                   :x x
                   :y y
                   :width width
                   :height height
                   :%buffer buffer
                   :screen (make-screen x y width height use-modeline-p)
                   :view-point (copy-point (buffer-point buffer) :right-inserting)
                   :use-modeline-p use-modeline-p
                   :point (copy-point (buffer-start-point buffer) :right-inserting)))
  
  (defun make-window (buffer x y width height use-modeline-p)
    (%make-window 'window buffer x y width height use-modeline-p))
  
  (defun window-x (&optional (window (current-window)))
    (window-%x window))
  
negative.code: (defclass floating-window (window) ())
  
  (defun make-floating-window (buffer x y width height use-modeline-p)
    (let ((window (make-instance 'floating-window
                                 :buffer buffer
                                 :x x
                                 :y y
                                 :width width
                                 :height height
                                 :use-modeline-p use-modeline-p)))
      (push window *floating-windows*)
      window))
  
  (defmethod %delete-window ((window floating-window))
    (setf *floating-windows*
          (delete window *floating-windows*)))
  
  (defun balloon (orig-window buffer width height)
    (let* ((y (+ (window-y orig-window)
  