anchor.diff:      ()
     (:interface +core-interface+)
     (:name "window_will_close")
  -  (let ((windows (windows *interface*)))
  +  (let* ((windows (windows *interface*))
  +         (window (gethash window-id windows)))
       (log:debug "Closing window ID ~a (new total: ~a)" window-id
  -               (1- (length (alexandria:hash-table-values windows))))
  +               (1- (hash-table-count windows)))
  +    (hooks:run-hook (hooks:object-hook window 'window-delete-hook)
  +                    window)
       (remhash window-id windows))
     (values))
   
  
positive.code:                                   :documentation "Hook run before `rpc-window-set-active-buffer' takes effect.
  The handlers take the window and the buffer as argument.")
     (window-delete-hook :accessor window-delete-hook :initform '() :type list
                         :documentation "Hook run before `rpc-window-delete' takes effect.
  The handlers take the window as argument.")))
  
  @export
  
negative.code: @export
  (defun rpc-window-delete (window)
    "Delete a window object and remove it from the hash of windows.
  Once deleted, the `window-will-close' RPC endpoint will be called, running
  INTERFACE's `window-delete-hook' over WINDOW."
    (%rpc-send "window_delete" (id window)))
  
  @export
  (defun rpc-window-active ()
  