2 Customizing Expeditor
| (require (submod expeditor configure)) | 
When expeditor-configure is called—
For example, the following module as (expeditor-init-file-path) changes the behavior of Ctl-J and changes the color of literals from green to magenta:
#lang racket/base (require (submod expeditor configure)) (expeditor-bind-key! "^J" ee-newline) (expeditor-set-syntax-color! 'literal 'magenta) 
2.1 Key-Handling Functions
A key-handling function accepts three values: a representation of the terminal state, a representation of the current editor region, and a character. The result is a representation of the editor region (usually the one passed in) or #f to indicate that the current editor region should be accepted as input.
procedure
(expeditor-bind-key! key handler) → void?
key : string? handler : (eestate? entry? char . -> . (or/c #f entry?)) 
The key string encodes either a single key or a sequence of keys:
- The sequence \e (so, in a literal string as "\\e") is treated as Escape, which at the start of a sequence is normally the way terminals report “Meta-” key combinations. 
- A ^ prefix on a character implies a “Ctl-” combination, like "^a" for Ctl-A. 
- The sequence \\ is a backslash (so, in a literal string as "\\\\"). 
- The sequence \^ is the character character. 
- Anything else stands for itself. 
The result of a key binding is a potentially updated entry, where only predefined functions can update an entry, or #f to indicate that the current entry should be accepted as an expeditor-read result.
As examples, here are a few bindings from the default set:
(expeditor-bind-key! "^B" ee-backward-char) ; Ctl-B (expeditor-bind-key! "\\ef" ee-forward-word) ; Esc-f (expeditor-bind-key! "\\e[C" ee-forward-char) ; Right (expeditor-bind-key! "\\e[1;5C" ee-forward-word) ; Ctl-Right 
The Right and Ctl-Right bindings are derived from a typical sequence that a terminal generates for those key combinations. In your terminal, the od program may be helpful in figuring how key presses turn into program input.
procedure
(ee-insert-self/paren ee entry c) → entry?
ee : eestate? entry : entry? c : char? 
Like ee-insert-self, but if c is a “parenthesis” character, flashes its match like ee-flash-matching-delimiter. Furthermore, if c is a closing “parenthesis”, it may be corrected automatically based on its apparently intended match.
procedure
(ee-insert-self ee entry c) → entry?
ee : eestate? entry : entry? c : char? 
procedure
((make-ee-insert-string s) ee entry c) → entry?
s : string? ee : eestate? entry : entry? c : char? 
procedure
(ee-newline ee entry c) → entry?
ee : eestate? entry : entry? c : char? 
procedure
(ee-open-line ee entry c) → entry?
ee : eestate? entry : entry? c : char? 
procedure
(ee-indent-all ee entry c) → entry?
ee : eestate? entry : entry? c : char? 
procedure
(ee-id-completion/indent ee entry c) → entry?
ee : eestate? entry : entry? c : char? 
procedure
(ee-id-completion ee entry c) → entry?
ee : eestate? entry : entry? c : char? 
procedure
(ee-next-id-completion ee entry c) → entry?
ee : eestate? entry : entry? c : char? 
procedure
(ee-backward-char ee entry c) → entry?
ee : eestate? entry : entry? c : char? 
procedure
(ee-forward-char ee entry c) → entry?
ee : eestate? entry : entry? c : char? 
procedure
(ee-next-line ee entry c) → entry?
ee : eestate? entry : entry? c : char? 
procedure
(ee-previous-line ee entry c) → entry?
ee : eestate? entry : entry? c : char? 
procedure
(ee-forward-word ee entry c) → entry?
ee : eestate? entry : entry? c : char? 
procedure
(ee-forward-exp ee entry c) → entry?
ee : eestate? entry : entry? c : char? 
procedure
(ee-backward-word ee entry c) → entry?
ee : eestate? entry : entry? c : char? 
procedure
(ee-backward-exp ee entry c) → entry?
ee : eestate? entry : entry? c : char? 
procedure
(ee-upward-exp ee entry c) → entry?
ee : eestate? entry : entry? c : char? 
procedure
(ee-downward-exp ee entry c) → entry?
ee : eestate? entry : entry? c : char? 
procedure
(ee-backward-page ee entry c) → entry?
ee : eestate? entry : entry? c : char? 
procedure
(ee-forward-page ee entry c) → entry?
ee : eestate? entry : entry? c : char? 
procedure
(ee-beginning-of-line ee entry c) → entry?
ee : eestate? entry : entry? c : char? 
procedure
(ee-end-of-line ee entry c) → entry?
ee : eestate? entry : entry? c : char? 
procedure
(ee-beginning-of-entry ee entry c) → entry?
ee : eestate? entry : entry? c : char? 
procedure
(ee-end-of-entry ee entry c) → entry?
ee : eestate? entry : entry? c : char? 
procedure
(ee-goto-matching-delimiter ee entry c) → entry?
ee : eestate? entry : entry? c : char? 
procedure
(ee-flash-matching-delimiter ee entry c) → entry?
ee : eestate? entry : entry? c : char? 
procedure
(ee-transpose-char ee entry c) → entry?
ee : eestate? entry : entry? c : char? 
procedure
(ee-transpose-word ee entry c) → entry?
ee : eestate? entry : entry? c : char? 
procedure
(ee-transpose-exp ee entry c) → entry?
ee : eestate? entry : entry? c : char? 
procedure
(ee-set-mark ee entry c) → entry?
ee : eestate? entry : entry? c : char? 
procedure
(ee-exchange-point-and-mark ee entry c) → entry?
ee : eestate? entry : entry? c : char? 
procedure
(ee-delete-char ee entry c) → entry?
ee : eestate? entry : entry? c : char? 
procedure
(ee-backward-delete-char ee entry c) → entry?
ee : eestate? entry : entry? c : char? 
procedure
(ee-delete-line ee entry c) → entry?
ee : eestate? entry : entry? c : char? 
procedure
(ee-delete-to-eol ee entry c) → entry?
ee : eestate? entry : entry? c : char? 
procedure
(ee-delete-between-point-and-mark-or-backward ee entry c) → entry? ee : eestate? entry : entry? c : char? 
procedure
(ee-delete-entry ee entry c) → entry?
ee : eestate? entry : entry? c : char? 
procedure
(ee-reset-entry/break ee entry c) → entry?
ee : eestate? entry : entry? c : char? 
procedure
(ee-reset-entry ee entry c) → entry?
ee : eestate? entry : entry? c : char? 
procedure
(ee-delete-word ee entry c) → entry?
ee : eestate? entry : entry? c : char? 
procedure
(ee-delete-exp ee entry c) → entry?
ee : eestate? entry : entry? c : char? 
procedure
(ee-backward-delete-exp ee entry c) → entry?
ee : eestate? entry : entry? c : char? 
procedure
(ee-yank-selection ee entry c) → entry?
ee : eestate? entry : entry? c : char? 
procedure
(ee-yank-kill-buffer ee entry c) → entry?
ee : eestate? entry : entry? c : char? 
procedure
(ee-eof/delete-char ee entry c) → entry?
ee : eestate? entry : entry? c : char? 
procedure
(ee-redisplay ee entry c) → entry?
ee : eestate? entry : entry? c : char? 
procedure
(ee-history-bwd ee entry c) → entry?
ee : eestate? entry : entry? c : char? 
procedure
(ee-history-fwd ee entry c) → entry?
ee : eestate? entry : entry? c : char? 
procedure
(ee-history-bwd-prefix ee entry c) → entry?
ee : eestate? entry : entry? c : char? 
procedure
(ee-history-bwd-contains ee entry c) → entry?
ee : eestate? entry : entry? c : char? 
procedure
(ee-history-fwd-prefix ee entry c) → entry?
ee : eestate? entry : entry? c : char? 
procedure
(ee-history-fwd-contains ee entry c) → entry?
ee : eestate? entry : entry? c : char? 
procedure
(ee-command-repeat ee entry c) → entry?
ee : eestate? entry : entry? c : char? 
procedure
(ee-suspend-process ee entry c) → entry?
ee : eestate? entry : entry? c : char? 
2.2 Colors
procedure
(expeditor-set-syntax-color! category color) → void? 
category : 
(or/c 'error 'paren 'literal 'identifier 'comment) 
color : 
(or/c 'default 'black 'white 'red 'green 'blue 'yellow 'cyan 'magenta 'dark-gray 'light-gray 'light-red 'light-green 'light-blue 'light-yellow 'light-cyan 'light-magenta) 
2.3 History Navigation
parameter
→ (or/c 'start 'top 'bottom 'end) (current-ee-backward-history-point start-at) → void? start-at : (or/c 'start 'top 'bottom 'end) 
- 'start — - at the start of the entry 
- 'top — - at the end of the first line of the entry 
- 'bottom or 'end — - at the end of the last line of the entry 
The default is 'top.
parameter
→ (or/c 'start 'top 'bottom 'end) (current-ee-forward-history-point start-at) → void? start-at : (or/c 'start 'top 'bottom 'end) 
The default is 'bottom.