Merge pull request #506 from andrewcsmith/patch-2
[supercollider.git] / HelpSource / Guides / SCIde.schelp
blobf250da60b008edc295c1af66549ebef87ef2403d
1 title:: SC-IDE: SuperCollider Integrated Development Environment
2 summary:: A brief overview of the main features of the cross-platform code editor environment introduced in SuperCollider 3.6.
3 categories:: Frontends
4 keyword:: scide
5 keyword:: editor
7 Section:: What is SC-IDE?
9 SC-IDE is a new code-editing environment, developed specifically for SuperCollider and introduced in version 3.6. It's written using the Qt graphic interface framework, meaning that it is compatible with any operating system supported by Qt. In the alpha release, SC-IDE works correctly in Mac OSX, Linux and Windows 7. (Issues with Windows XP remain to be solved.)
11 note:: Throughout this document, Ctrl- indicates the modifier key for keyboard shortcuts that is used in Linux and Windows platforms. In Mac OSX, use Cmd- instead.::
13 Section:: IDE window components
15 The editor window contains several panels, as shown here:
17 image::sc-ide.png::
19 You will spend most of the time in the code editor at right. SC's posted output appears in the emphasis::Post Window:: at left. Underneath the code editor is a emphasis::Tool Panel::, which supports find/replace, go-to line and command-line functions.
21 The Post Window is a emphasis::dock:: widget. You can grab the post window's title bar and drop the post window on any edge of the window you like.
23 Section:: Getting help
25 The help key is Ctrl-D (for Documentation).
27 If the cursor is on a class or method name, the help browser will try to open help for the class or method. Otherwise the main help page will appear.
29 If you want to go directly to help for a specific topic without entering text into the editor, press Ctrl-shift-D and type the identifier into the pop-up box.
31 Section:: Evaluating code
33 definitionlist::
34 ## Ctrl-return || The main key to evaluate code. Its behavior is "intelligent":
35 list::
36 ## If a block of code is manually selected, that block will be executed.
37 ## If no code is selected but the cursor is within a emphasis::region::, the entire region will be executed. See below.
38 ## Otherwise, the current line containing the cursor will be executed.
40 ## Ctrl-shift-return || Always evaluates the single line under the cursor, whether or not a code block is selected.
43 Subsection:: Regions
45 emphasis::Regions:: make it quick and easy to evaluate longer blocks of code. A region is surrounded by parentheses.
47 code::
49 Pbind(
50         \degree, Pseries(0, 1, 8),
51         \dur, 0.25
52 ).play;
56 If the cursor is anywhere between the outermost parentheses, pressing ctrl-return will evaluate the entire block, starting with code::Pbind:: and ending with code::play;::. (This is faster even than SuperCollider.app's method of selecting a block by double-clicking inside the opening parenthesis.)
58 Regions may be more compact visually, provided that the opening and closing parentheses are the first and last elements on their respective lines.
60 code::
61 (Pbind(
62         \degree, Pseries(0, 1, 8),
63         \dur, 0.25
64 ).play)
67 Any other element before or after the () delimiters means that the block will not be interpreted as a region.
69 code::
70 // (1 + 2) is not a region:
71 // the () indicate order of operations instead
72 (1 + 2).postln;
75 Section:: Typing code
77 Subsection:: Automatic indentation
79 While you are typing, SC-IDE keeps track of opening and closing brackets and automatically indents lines accordingly. You don't have to press TAB to indent or Backspace to outdent. When you close a bracket, SC-IDE will automatically push the text to the left to align with the matching opening bracket.
81 Subsection:: Automatic completion of class and method names
83 If you begin to type a class name, the editor will pop up a menu listing the class names that match what you have typed so far. Keep typing, and the list is filtered accordingly. At any point, use the up and down arrows to choose the completion and then press Return to choose the class. The complete class name will be entered into the code.
85 The same happens when typing a method name after a dot. If SC-IDE can determine the class of object that will receive the method call, the list of matching methods will be appropriate for that class. Otherwise, after three characters, the list will include methods from all classes. (This is because it's often impossible to know the class of the result of an expression without evaluating the expression.)
87 If the auto-complete menu does not appear automatically during typing, you can force it using Ctrl-space.
89 Subsection:: Method call aid
91 When you type an opening parenthesis after a method name, the editor will try to produce a floating pop-up listing the method's arguments. The pop-up appears automatically if the class of the receiver can be determined.
93 If not, a pop-up menu appears listing the classes that implement the method. You can choose the desired class implementation that you intend, and then the floating pop-up will appear.
95 If the method call aid does not appear automatically during typing, you can force it using Ctrl-shift-space.
97 Section:: Editor features
99 definitionlist::
100 ## Find/Replace || Ctrl-F brings up the Find tool panel; Ctrl-R brings up Replace. If you started with the Find panel but then want to replace, press Ctrl-R and your search string will be preserved. See also the Options menu at right. Regular expression find/replace is supported, including backreferences.
102 ## Command line || Sometimes, you need to evaluate a temporary expression that does not need to be saved in a code document. Press Ctrl-E, and a one line text box appears. Any expression you type here will be evaluated after you press Return. Up and down arrows navigate through the history of commands entered in this box.
104 ## Go to line || Press Ctrl-G, enter a line number, and the editor will jump to that line.
106 ## Focus post window || Ctrl-L gives focus to the post window. Here, you can use arrow keys and Page Up / Page Down to scroll through output from the interpreter. Press TAB to return to the code editor.
108 ## Implementation-of || Ctrl-I (for Implementation) opens a class or method definition.
110 ## References-to || Ctrl-U (for Uses) produces a list of references to a class or method.
113 Section:: Interacting with the SC language interpreter
115 Unlike SuperCollider.app in OSX, SC-IDE is a separate process from the interpreter. This is good for stability. If you accidentally execute code that causes an infinite loop, you can use the Language menu to Stop SCLang and regain control without losing unsaved code.
117 The Language menu contains commands to start and stop the interpreter and recompile the library.
119 definitionlist::
120 ## Stop activity || Ctrl-., like Cmd-. in SuperCollider.app, stops any executing code and sound from the server.
122 ## Recompile library || Ctrl-shift-L recompiles the library.
125 Section:: Interacting with the audio server
127 The Language menu also includes commands to boot, reboot and quit the server, as well as open a level meter and dump a list of running nodes.
129 Section:: Sessions
131 Sessions preserve the state of the editor environment at the time of quitting the editor, so you can resume with the same arrangement of IDE components and open documents automatically.
133 (More to write later)
135 Section:: Customizing
137 Many customization options are available under Settings >> Configure IDE. In particular, fonts, colors and keyboard shortcuts may be set here.
139 (More to write later)