# 1 Introduction

The Mozart Programming System provides a powerful environment for the development of software systems, called the ``Oz Programming Interface'' (OPI). The OPI is built around the extensible Emacs editor and runs (at least) under GNU Emacs, Version 19.24 or greater, and XEmacs, Version 19.14 or greater. Its main features are:

Features

Editing Oz code.

  The OPI automatically indents program lines and colorizes Oz source code to ease reading and writing of Oz programs. Due to its awareness of the syntactical structure of Oz, one can work with programs by applying commands to whole constructs such as procedure or class definitions.

Running Mozart as a sub-process.

  The OPI handles input to and output from a Mozart sub-process, providing a convenient interface for the interactive use of the Mozart system and for explorative programming.

Starting Mozart's development tools.

  The OPI provides menus and shortcuts to interact with the development system's graphical tools, e. g., setting breakpoints for the thread debugger or displaying the current position in the source file being debugged.

The Manual's Structure

This manual is structured as follows. Chapter 2 gives an overview of the OPI's general integration into the standard framework provided by Emacsen1. Chapter 3, Chapter 4, and Chapter 5 are dedicated to the three main features mentioned above respectively. Chapter 6 describes how to manage multiple Oz mode settings using profiles. Appendix A summarizes all Oz-specific key bindings.

The last three appendices provide information for advanced users. Appendix B details how to test Mozart system components locally and how to run Mozart under gdb. Appendix C documents some functions of the OPI that might be useful for users who want to write their own editing commands. Finally, Appendix D lists the known limitations of the OPI with workarounds.

Learning Emacs

This manual assumes some familiarity with the general editing commands of Emacsen and uses standard Emacs terminology. If you want to exploit the full power of the OPI you should get some acquaintance with Emacs. A good place to start is the Emacs on-line tutorial [Sta91], available from the Emacs Help menu; this is also the place to check if you are confused by the terminology used in this manual. You might especially want to look up the following words in the Emacs manual's glossary: point, mark, region, buffer, window, frame, mode line, killing, command, user option, prefix argument.

## Acknowledgements

The Oz Programming Interface of the Mozart system is an extension and partial redesign of the Oz Programming Interface of DFKI Oz, Versions 1.1 and 2.0. Credit has to go to the following people:

- Michael Mehl, for initially providing editing support (indentation, fontification),

- Ralf Scheidhauer, for running Oz as a sub-process,

- Benjamin Lorenz, for the interaction with the Oz debugger,

- Jochen Dörre, for initially providing Oz expression editing commands and jumping to compiler error messages.

Leif Kornstaedt is responsible for most of the current Mozart OPI. Denys Duchier contributed the concept of profiles.

1. ``Emacsen'' is the plural of ``Emacs''. In this manual, we use the term when the feature being described applies to both GNU Emacs and XEmacs.