On this page:
drracket:  get/  extend:  extend-unit-frame
drracket:  get/  extend:  get-unit-frame
drracket:  get/  extend:  extend-tab
drracket:  get/  extend:  get-tab
drracket:  get/  extend:  extend-definitions-text
drracket:  get/  extend:  get-definitions-text
drracket:  get/  extend:  extend-interactions-text
drracket:  get/  extend:  get-interactions-text
drracket:  get/  extend:  extend-definitions-canvas
drracket:  get/  extend:  get-definitions-canvas
drracket:  get/  extend:  extend-interactions-canvas
drracket:  get/  extend:  get-interactions-canvas
drracket:  get/  extend:  disallow-re-extension!
drracket:  get/  extend:  allow-re-extension!

13 drracket:get/extend

procedure

(drracket:get/extend:extend-unit-frame 
  mixin 
  [before 
  #:name-for-changes name-for-changes]) 
  void?
  mixin : (make-mixin-contract drracket:unit:frame%)
  before : boolean? = #t
  name-for-changes : (or/c #f symbol?) = #f
Extends the class that is used for the frame that implements the main DrRacket window.

The before argument controls if the mixin is applied before or after already installed mixins.

If name-for-changes is a symbol and drracket:get/extend:allow-re-extension! has been called (without a subsequent call to drracket:get/extend:disallow-re-extension!) then calling this function replaces any earlier mixins that have been added that have the same name. Otherwise, calling this with the same name twice is an error and calling it once drracket:get/extend:get-frame has been called is an error.
Returns a class whose objects are used for the DrRacket frames.

Once this function is called, drracket:get/extend:extend-unit-frame raises an error, disallowing any more extensions.

procedure

(drracket:get/extend:extend-tab 
  mixin 
  [before 
  #:name-for-changes name-for-changes]) 
  void?
  mixin : (make-mixin-contract drracket:unit:tab<%>)
  before : boolean? = #t
  name-for-changes : (or/c #f symbol?) = #f
Like drracket:get/extend:extend-unit-frame, except it extends the class that implements the tabs in DrRacket. One is created for each tab in a frame (each frame always has at least one tab, even if the tab bar is not shown).
Like drracket:get/extend:get-unit-frame, except it returns the class used for tabs.

procedure

(drracket:get/extend:extend-definitions-text 
  mixin 
  [before 
  #:name-for-changes name-for-changes]) 
  void?
  mixin : 
(make-mixin-contract drracket:unit:definitions-text<%>
                     editor:standard-style-list<%>
                     editor:info<%>
                     racket:text<%>
                     text:all-string-snips<%>
                     text:file<%>
                     text:info<%>
                     text:wide-snip<%>)
  before : boolean? = #t
  name-for-changes : (or/c #f symbol?) = #f
Like drracket:get/extend:extend-unit-frame, except this text is used in the top window of DrRacket frames.
Like drracket:get/extend:get-unit-frame, except for the text that is used in the top window of DrRacket frames.

procedure

(drracket:get/extend:extend-interactions-text 
  mixin 
  [before 
  #:name-for-changes name-for-changes]) 
  void?
  mixin : (make-mixin-contract drracket:rep:text<%>)
  before : boolean? = #t
  name-for-changes : (or/c #f symbol?) = #f
Like drracket:get/extend:extend-unit-frame, except it extends the class that implements the the editor in the interactions window.
Like drracket:get/extend:get-unit-frame except it returns the class that implements the editor in the interactions window.

procedure

(drracket:get/extend:extend-definitions-canvas 
  mixin 
  [before 
  #:name-for-changes name-for-changes]) 
  void?
  mixin : (make-mixin-contract drracket:unit:definitions-canvas%)
  before : boolean? = #t
  name-for-changes : (or/c #f symbol?) = #f
Like drracket:get/extend:extend-unit-frame, except it extends the class that implements the definitions window’s editor-canvas%.
Like drracket:get/extend:get-unit-frame except it returns the class that implements the definitions window’s editor-canvas%.

procedure

(drracket:get/extend:extend-interactions-canvas 
  mixin 
  [before 
  #:name-for-changes name-for-changes]) 
  void?
  mixin : (make-mixin-contract drracket:unit:interactions-canvas%)
  before : boolean? = #t
  name-for-changes : (or/c #f symbol?) = #f
Like drracket:get/extend:extend-unit-frame, except it extends the class that implements the interactions window’s editor-canvas%.
Like drracket:get/extend:get-unit-frame except it returns the class that implements the definitions window’s editor-canvas%.
Once this is called, re-extension of the mixins described in this section is not allowed. This is the default state of mixin extension, but it can be changed by drracket:get/extend:allow-re-extension!.
Once this is called, re-extension of the mixins described in this section are now allowed (see drracket:get/extend:extend-unit-frame for details of how to effect a re-extension).

This mode is intended to support a faster development cycle, not for production code. Specifically, the issue is that replacing mixins in this manner does not affect any objects that have already been create and thus there can, in general, be a mixture of old and new objects in a single DrRacket. If some kind of systematic change to the classes is wanted, consider instead using the racket/surrogate library.

Once an extension happens, newly created objects will use the new mixins. Mostly, however, creating a new frame will create a new set of all of the objects that are extended in this section, so that can be used to experiment more quickly with changes.