private/interfaces.ss
(module interfaces mzscheme
  (require (lib "class.ss"))
  (provide (all-defined))
  
  (define range<%>
    (interface ()
      get-start
      set-start
      get-ranges
      add-range
      all-ranges))

  (define syntax-pp-snip-controller<%>
    (interface ()
      on-select-syntax
      ))
  
  (define color-controller<%>
    (interface ()
      get-primary-partition
      get-secondary-partition
      get-administrative-predicate
      ))
  
  (define syntax-pp-snip<%>
    (interface ()
      get-text
      get-selected-syntax
      get-ranges
      get-identifier-list
      show-syntax
      refresh
      ))
  
  (define syntax-pp<%>
    (interface ()
      get-range
      get-identifier-list
      flat=>stx
      stx=>flat))
  
  (define typesetter<%>
    (interface ()
      get-output-port
      get-current-position
      finish))
  
  (define syntax-browser<%>
    (interface ()
      add-syntax
      add-separator
      select-syntax
      ))
  
  ;; syntax-controller<%>
  (define syntax-controller<%>
    (interface ()
      ;; select-syntax : syntax -> void
      select-syntax
      
      ;; on-update-identifier=?
      on-update-identifier=?
      
      ;; add-view : syntax-view<%> -> void
      add-view
      
      ;; get-view : (listof syntax-view<%>)
      get-views
      ))
  
  ;; syntax-view<%>
  (define syntax-view<%>
    (interface ()
      ;; get-text : -> text%
      get-display-text
      
      ;; props:show-syntax : syntax -> void
      props:show-syntax
      ))
  
  )