Add per-buffer selection hooks.
authorChris Hanson <org/chris-hanson/cph>
Sun, 1 Aug 1993 05:27:38 +0000 (05:27 +0000)
committerChris Hanson <org/chris-hanson/cph>
Sun, 1 Aug 1993 05:27:38 +0000 (05:27 +0000)
v7/src/edwin/curren.scm

index 198a5297526851a7ff3b84584659fca268fc3e11..1831b01237ff6be456149725258dc158b627b0d2 100644 (file)
@@ -1,6 +1,6 @@
 ;;; -*-Scheme-*-
 ;;;
-;;;    $Id: curren.scm,v 1.106 1993/01/09 01:16:02 cph Exp $
+;;;    $Id: curren.scm,v 1.107 1993/08/01 05:27:38 cph Exp $
 ;;;
 ;;;    Copyright (c) 1986, 1989-93 Massachusetts Institute of Technology
 ;;;
             (set-window-buffer! window buffer)))
         (set-window-buffer! window buffer)))))
 
-(define-variable select-buffer-hook
-  "An event distributor that is invoked when a buffer is selected.
-The new buffer and the window in which it is selected are passed as arguments.
-The buffer is guaranteed to be selected at that time."
-  (make-event-distributor))
-
 (define (change-selected-buffer window buffer record? selection-thunk)
   (change-local-bindings! (current-buffer) buffer selection-thunk)
   (set-buffer-point! buffer (window-point window))
   (if record?
       (bufferset-select-buffer! (current-bufferset) buffer))
+  (for-each (lambda (hook) (hook buffer))
+           (get-buffer-hooks buffer 'SELECT-BUFFER-HOOKS))
   (if (not (minibuffer? buffer))
       (event-distributor/invoke! (ref-variable select-buffer-hook) buffer)))
 
+(define-integrable (add-select-buffer-hook buffer hook)
+  (add-buffer-hook buffer 'SELECT-BUFFER-HOOKS hook))
+
+(define-integrable (remove-select-buffer-hook buffer hook)
+  (remove-buffer-hook buffer 'SELECT-BUFFER-HOOKS hook))
+
+(define-variable select-buffer-hook
+  "An event distributor that is invoked when a buffer is selected.
+The new buffer and the window in which it is selected are passed as arguments.
+The buffer is guaranteed to be selected at that time."
+  (make-event-distributor))
+
 (define (with-selected-buffer buffer thunk)
   (let ((old-buffer))
     (dynamic-wind (lambda ()