[[PageOutline]] = Integrated Development Environment = '''OpenMCL''' ships with a partially-complete [http://developer.apple.com/cocoa/ Cocoa]-based [http://en.wikipedia.org/wiki/Integrated_Development_Environment Integrated Development Environment] '''(IDE)''', based on [http://www.cons.org/cmucl/ CMUCL]'s [http://www.cons.org/cmucl/hemlock/index.html Hemlock] editor. It was significantly altered by Gary Byers to be a native OS X application with native Cocoa look-and-feel. As great as this is, it's incomplete. Lots of work is needed to realize its full potential. == Getting Started == Starting from a running instance of '''OpenMCL''', you can invoke the Cocoa Hemlock editor like so: {{{ Chaz:~ brent$ openmcl Welcome to OpenMCL Version 1.0 (DarwinPPC32)! ? (require 'Cocoa) COCOA ("FAKE-CFBUNDLE-PATH" "SPLAY-TREE" "NAME-TRANSLATION" "PROCESS-OBJC-MODULES" "OBJC-CLOS" "OBJC-RUNTIME" "BRIDGE" "OBJC-SUPPORT" "COCOA-DEFAULTS" "COCOA-PREFS" "COCOA-TYPEOUT" "COCOA-WINDOW" "HEMLOCK" "COCOA-EDITOR" "PTY" "COCOA-LISTENER" "COCOA-BACKTRACE" "COCOA") }}} An OpenMCL listener window will open, as well as the Hemlock editor. == Basic Editing == OpenMCL's IDE works much like any other OS X application. The File, Edit, Format, and Windows menus are like other OS X editors, such as TextEdit. However, the key bindings are like Emacs (important key strokes are described in the following sections). == Important Key Bindings == In the following {{{C}}} means the {{{control}}} key, and {{{M}}} means the {{{alt}}} or {{{option}}} key. === Searching === ||{{{C-s}}}||Search forward (incremental).|| ||{{{C-r}}}||Search in reverse (incremental).|| ||{{{C-g}}}||If the search is currently unsuccessful, remove sufficient characters to get a successful hit. If the search is current successful, stop searching.|| ||{{{M-%}}}||Search-and-replace.|| === Navigating === The {{{Page Up}}}, {{{Page Down}}}, {{{Tab}}}, cursor keys, and so forth work as expected. ||{{{C-M-F}}}||Goto expression definition.|| === Editing Lisp Sources === ||{{{M-;}}}||Indent for comment|| === Evaluating Lisp Expressions === ||{{{M-Escape}}}||Prompt for a Lisp expression and print its result in the echo area.|| ||{{{C-x C-e}}}||Evaluate the current {{{defun}}}.|| ||{{{C-X c}}}||Compile buffer file. Note that you must load the file to bring it into the environment.||