Home News Features Screenshots Tutorials Community Documentation Module System Jazz Platform Jedi IDE Samples Reference Download Installation Development FAQ

Jedi IDE

1. Working with the IDE

1.1. Login

1.2. Workspaces

Workspaces are groups of related windows, tools, ... that are activated together.

The buttons located at the right-hand side of the Jedi toolbar can be used to switch the active workspace.

Jedi comes with the following workspaces installed:

1.3. Bindings

The following bindings are predefined:

Bindings Manager

Bindings Viewer

1.4. Properties

This window is used to visually edit properties of components.

Mainly used by the workbench at the moment.

1.5. Preferences

1.6. Getting Help

1.7. Eclipse Glossary

Here is a very informal correspondance between some Eclipse and Jazz concepts where applicable.

Eclipse Jazz
workspace profile
feature package
project project
perspective workspace

2. Managing Projects

2.1. Workbench

The workbench is the window used to manage source files.

2.2. Project

Projects are workbench entities that contain source files and resources.

For every project, Jedi will build a full cross-reference database (its catalog) of every source file in that project.

You update your project's catalog either by using the 'Update Catalog' context menu item or through the 'Catalogs Manager' window found in the 'Tools' menu.

Once you catalog is up-to-date, you can:

Note that projects can contain source code from any language. Jedi will only catalog the source files that it knows about.

At the moment the following languages are fully supported:

Those are partially supported:

2.3. Language Specific Project

In addition to plain projects, Jedi supports language specific projects that can be used to build and run code in that language.

Two languages are supported at the moment:

2.3.1. Configuration

2.3.2. Building

2.3.3. Testing

2.3.4. Debugging

2.3.5. Running

2.3.6. Gambit Development

2.3.7. Jazz Development

2.4. Catalog

A catalog is a full cross-reference database of a set of source files. Catalogs can be created manually but the easiest way to manage catalogs is through projects as each project automatically creates a catalog of it's source files.

Note that a new profile comes with projects for all Jazz packages pre-installed in the workbench. An easy way to update the catalogs of all these projects is through the Catalogs Manager window that can be invoked using Tools / Catalogs / Catalogs Manager. In the catalog manager, if no project is selected, pressing the Update button will update all catalogs.


Languages supported at the moment:
  • CommonLisp
  • Scheme
  • Jazz
  • C (very basic)
  • CSS (very basic)
  • Java (very basic)
  • JavaScript (very basic)
  • Lua-Parser (very basic)
  • Properties (very basic)
  • Python (very basic)

Catalogs Manager

3. Source Code

3.1. Text

3.1.1. Scrolling

3.1.2. Syntax Coloring

3.1.3. Evaluating Code

In a Jazz text, use ctrl-enter to evaluate the current definition. Note that Jazz will need to know to what debuggee to send the code for evaluation. You can right-click on any debuggee in the Processed window and select 'Focus' to focus this debuggee so it will be the one that gets the code evaluations.

3.1.4. Cataloging Code

3.1.5. Printing

3.2. Exploring

3.2.1. Chapters

3.2.2. Hierarchy

3.2.3. Find Definitions

3.2.4. Find References

3.2.5. History Navigation

3.2.6. Class Browser

3.3. Searching

3.3.1. Incremental Search

3.3.2. Search






Shortcut Description
Alt-W Toggle Whole Words
Alt-I Toggle Ignore Case
Alt-C Toggle Preserve Case
Alt-R Toggle Play Recording

3.4. Editing

3.4.1. Navigation

3.4.2. Clipboard Stack

3.4.3. Mouse Copy

3.4.4. Symbol Completion

3.4.5. Code Tabulation

3.4.6. Macro Recording

3.4.7. Undo / Redo

3.5. Editing Lisp Code

3.5.1. Select Outer Expression

3.5.2. Flash Matching Character

4. Debugging

4.1. Debugger

The Jazz debugger is a remote debugger. This means that the debugger will debug one or more remote 'debuggee' that are automatically connected to it via TCP/IP. Note that Jedi also a debuggee that is debugged by itself so that should an error occur inside the IDE, the debugger can be used to debug it.

A great advantage of remote debugging is that you are debugging your application exactly as itself with all its features: windows, menus, connections, ports, threads, ... instead of simulating inside the IDE it's various features. With a remote debugger it is even possible to debug a game running remotely on a gaming console.

The Jazz kernel supports debugging of Jazz code. But it really is a Gambit debugger and can be used to debug any Gambit code. All you need to do is create a product that will load your Gambit code and then run your product using the Debug command.

4.1.1. Terminal

The terminal represent's Gambit console. The terminal name was choose to distinguish it from Jedi's own console.

4.1.2. Console

The console is where the debuggee interact with the debugger usually through a read-eval-print loop.

Each thread that throws an exception will open it's own console and start a repl at that point.

Note that Jedi automatically opens a console when it starts to enable experimenting. Expression entered in that console are evaluation inside the IDE's primordial thread. Beware that if you built Jedi in release safety, Gambit's safe mode is disabled so that code entered in that console can crash the IDE.

Evaluation Context

Enclosing REPL

4.1.3. Processes

4.1.4. Threads

4.1.5. Frames

4.1.6. Detail

4.1.7. Variables

4.1.8. Inspector

4.1.9. View Explorer

4.1.10. Test Functions

4.2. Debuggee

4.2.1. Restart

Jazz supports a concept of restarts similar to CommonLisp. The debugger will automatically propose all restarts when displaying an exception or break point.

4.2.2. Crash Handler

5. Profiling

5.1. Profiler

6. Collaborative Work

6.1. Compare Directories

6.2. Compare Files

6.3. Screen Captures

7. Web Development

8. User Preferences

8.1. Launch Parameters

Jedi supports the following launch parameters in addition to the ones supported by the kernel:

Parameter Description
/profile automatic profile name used for loggin


kernel.exe -run jedi -profile Guillaume

8.2. Profile

A profile is a set of Jedi preferences.

Profiles are located inside the Profiles repository. For example, if a 'Me' profile is created, it will contain the following files:

HOME .jazz .jazzini lib jedi.profiles profile Me _Me.jazz Me-Project.jazz settings Bindings.jml Preferences.jml Servers.jml Workbench.jml

The reason profiles reside inside a package is that they contain Jazz code. In the example above, the _Me.jazz unit contains a Me class that can be used to customize the IDE, experiment with code, ...

One nice way of using your profile is to test your code there is a very Lispish interactive fashion and when it is functional, migrate it to it's own unit.

8.3. Settings

8.3.1. Preferences

Table of Contents