This file is indexed.

/usr/share/mozart/doc/opi/node4.html is in mozart-doc 1.4.0-8ubuntu1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

1
2
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD><TITLE>4 Running Mozart from the OPI</TITLE><LINK href="ozdoc.css" rel="stylesheet" type="text/css"></HEAD><BODY><TABLE align="center" border="0" cellpadding="6" cellspacing="6" class="nav"><TR bgcolor="#DDDDDD"><TD><A href="node3.html#chapter.editing">&lt;&lt; Prev</A></TD><TD><A href="index.html">- Up -</A></TD><TD><A href="node5.html#chapter.tools">Next &gt;&gt;</A></TD></TR></TABLE><DIV id="chapter.running"><H1><A name="chapter.running">4 Running Mozart from the OPI</A></H1><P> The OPI allows to run Mozart directly from the OPI. A sub-process is started that executes <A name="label110"></A><SPAN class="index"><CODE>ozengine</CODE></SPAN> with a single <A name="label111"></A><A name="label112"></A><SPAN class="index">root functor</SPAN> argument, by default called <A name="label113"></A><SPAN class="index"><CODE>OPI.ozf</CODE></SPAN>. In particular, <A name="label114"></A> <CODE>{Property<SPAN class="keyword">.</SPAN>get&nbsp;argv}</CODE> will always return <CODE>nil</CODE>. </P><DIV class="apropos"><P class="margin">Emulator and Compiler</P><P> <A name="label115"></A><A name="label116"></A> <A name="label117"></A><A name="label118"></A> <A name="label119"></A><A name="label120"></A> The output of the process is redirected into an Emacs buffer called <SPAN class="buffer">*Oz Emulator*</SPAN>. For instance, all output done via <CODE>System<SPAN class="keyword">.</SPAN>show</CODE> etc. will appear in this buffer. Additionally, the <CODE>OPI.ozf</CODE> program instantiates an Oz compiler and attaches its input and output to an Emacs buffer called <SPAN class="buffer">*Oz Compiler*</SPAN>; communication, in this case, is done via a <A name="label121"></A><SPAN class="index">socket</SPAN>. The compiler might also create a new buffer for output of source code, called <SPAN class="buffer">*Oz Temp*</SPAN>. </P></DIV><P> When we speak of the ``Oz Emulator'' and ``Oz Compiler'' buffers in this manual, we mean the buffers called <SPAN class="buffer">*Oz Emulator*</SPAN> and <SPAN class="buffer">*Oz Compiler*</SPAN> respectively. </P><P> <A name="label122"></A> <A name="label123"></A> In order to run the Mozart system, the OPI has to know its installation path. </P><DL><DT class="useroption"><A name="label124"></A><SPAN class="index"><CODE>OZ-HOME</CODE></SPAN> (default: <CODE>/usr/share/mozart</CODE>) <SPAN class="entrycategory"><SPAN class="entrycategorybracket">&nbsp;[</SPAN><I>user option</I><SPAN class="entrycategorybracket">]</SPAN></SPAN></DT><DD><P>Directory where Oz is installed. </P></DD></DL><P> </P><H2><A name="label125">4.1 Running and Halting</A></H2><P> The following commands are used to start and halt the Mozart sub-process. </P><DL><DT class="command"><A name="label126"></A><SPAN class="index"><CODE>run-oz</CODE></SPAN> (<A name="key.run-oz" id="key.run-oz"><SPAN class="key">C-. r</SPAN></A>) <SPAN class="entrycategory"><SPAN class="entrycategorybracket">&nbsp;[</SPAN><I>command</I><SPAN class="entrycategorybracket">]</SPAN></SPAN></DT><DD><P>Start Mozart as a sub-process if it is not already running. Handle input and output via the Oz Emulator buffer. If the current buffer is not running in an Oz mode, create a new buffer in Oz mode. </P></DD><DT class="useroption"><A name="label127"></A><SPAN class="index"><CODE>oz-change-title</CODE></SPAN> (default: <CODE>nil</CODE>) <SPAN class="entrycategory"><SPAN class="entrycategorybracket">&nbsp;[</SPAN><I>user option</I><SPAN class="entrycategorybracket">]</SPAN></SPAN></DT><DD><P>If non-<CODE>nil</CODE>, change the Emacs <A name="label128"></A>frame's title while a Mozart sub-process is running. </P></DD><DT class="useroption"><A name="label129"></A><SPAN class="index"><CODE>oz-frame-title</CODE></SPAN> (default: <CODE><SPAN class="string">&quot;Oz&nbsp;Programming&nbsp;Interface&nbsp;(</SPAN></CODE>...<CODE><SPAN class="string">)&quot;</SPAN></CODE>) <SPAN class="entrycategory"><SPAN class="entrycategorybracket">&nbsp;[</SPAN><I>user option</I><SPAN class="entrycategorybracket">]</SPAN></SPAN></DT><DD><P>String to use as Emacs frame title while a Mozart sub-process is running. In the default shown above, the old frame title will be inserted in place of the ellipsis. </P></DD><DT class="command"><A name="label130"></A><SPAN class="index"><CODE>oz-halt</CODE></SPAN> <CODE>FORCE</CODE> (<A name="key.oz-halt" id="key.oz-halt"><SPAN class="key">C-. h</SPAN></A>) <SPAN class="entrycategory"><SPAN class="entrycategorybracket">&nbsp;[</SPAN><I>command</I><SPAN class="entrycategorybracket">]</SPAN></SPAN></DT><DD><P>Halt the Mozart sub-process. With no prefix argument, feed an <A name="label132"></A>/<CODE>{Application<SPAN class="keyword">.</SPAN>exit&nbsp;0}</CODE> statement and wait for the process to terminate. Waiting time is limited by the user option <CODE>oz-halt-timeout</CODE>; after this delay, the process is sent a SIGHUP if still living. </P><P> With <SPAN class="key">C-u</SPAN> as prefix argument, send the process a SIGHUP without delay. With <SPAN class="key">C-u C-u</SPAN> as prefix argument, send it a SIGKILL instead. </P></DD><DT class="useroption"><A name="label133"></A><SPAN class="index"><CODE>oz-halt-timeout</CODE></SPAN> (default: <CODE>30</CODE>) <SPAN class="entrycategory"><SPAN class="entrycategorybracket">&nbsp;[</SPAN><I>user option</I><SPAN class="entrycategorybracket">]</SPAN></SPAN></DT><DD><P>Number of seconds to wait for shutdown in command <CODE>oz-halt</CODE>. </P></DD></DL><P> </P><H2><A name="label134">4.2 Mozart's Output Buffers</A></H2><P> <A name="label135"></A><A name="label136"></A> <A name="label137"></A><A name="label138"></A> <A name="label139"></A><A name="label140"></A> Several commands make inspecting the Oz Emulator and Oz Compiler buffers easier. </P><DL><DT class="command"><A name="label141"></A><SPAN class="index"><CODE>oz-toggle-emulator</CODE></SPAN> (<A name="key.oz-toggle-emulator" id="key.oz-toggle-emulator"><SPAN class="key">C-. e</SPAN></A>) <SPAN class="entrycategory"><SPAN class="entrycategorybracket">&nbsp;[</SPAN><I>command</I><SPAN class="entrycategorybracket">]</SPAN></SPAN></DT><DT class="command"><A name="label142"></A><SPAN class="index"><CODE>oz-toggle-compiler</CODE></SPAN> (<A name="key.oz-toggle-compiler" id="key.oz-toggle-compiler"><SPAN class="key">C-. c</SPAN></A>) <SPAN class="entrycategory"><SPAN class="entrycategorybracket">&nbsp;[</SPAN><I>command</I><SPAN class="entrycategorybracket">]</SPAN></SPAN></DT><DT class="command"><A name="label143"></A><SPAN class="index"><CODE>oz-toggle-temp</CODE></SPAN> (<A name="key.oz-toggle-temp" id="key.oz-toggle-temp"><SPAN class="key">C-. t</SPAN></A>) <SPAN class="entrycategory"><SPAN class="entrycategorybracket">&nbsp;[</SPAN><I>command</I><SPAN class="entrycategorybracket">]</SPAN></SPAN></DT><DD><P>Toggle visibility of the Oz Emulator, Compiler or Temporary window respectively. If the buffer is not visible in any window, then display it. If it is, then delete the corresponding window. </P></DD><DT class="useroption"><A name="label144"></A><SPAN class="index"><CODE>oz-other-buffer-size</CODE></SPAN> (default: <CODE>35</CODE>) <SPAN class="entrycategory"><SPAN class="entrycategorybracket">&nbsp;[</SPAN><I>user option</I><SPAN class="entrycategorybracket">]</SPAN></SPAN></DT><DD><P>Percentage of screen to use for Oz Compiler, Emulator or Temp window. </P></DD></DL><P> </P><DIV id="section.feeding"><H2><A name="section.feeding">4.3 Feeding Code to the Compiler</A></H2><DIV class="apropos"><P class="margin">Feedable Regions</P><P> The commands that send regions of the current buffer to the Oz Compiler for compilation come in four flavors: </P><UL><LI><P>Feeding the whole buffer. More specifically, the region the buffer has been narrowed to is fed. </P></LI><LI><P>Feeding the currently marked region, i.&nbsp;e., the text contained between point and mark. </P></LI><LI><P>Feeding the line point is in. If a numeric prefix argument is given, that many lines are fed; if the prefix argument is negative, that many preceding lines as well as the current line are fed. </P></LI><LI><P>Feeding the paragraph point is in (or after, if it is not inside any paragraph). A paragraph is a region of text delimited by empty lines, i.&nbsp;e., lines not even containing whitespace. If a numeric prefix argument is given, that many paragraphs are fed; if the prefix argument is negative, that many preceding paragraphs as well as the current paragraph are fed. </P></LI></UL><P> </P><DL><DT class="command"><A name="label145"></A><SPAN class="index"><CODE>oz-feed-buffer</CODE></SPAN> (<A name="key.oz-feed-buffer" id="key.oz-feed-buffer"><SPAN class="key">C-. C-b</SPAN></A>) <SPAN class="entrycategory"><SPAN class="entrycategorybracket">&nbsp;[</SPAN><I>command</I><SPAN class="entrycategorybracket">]</SPAN></SPAN></DT><DT class="command"><A name="label146"></A><SPAN class="index"><CODE>oz-feed-region</CODE></SPAN> <CODE><I>START</I></CODE><CODE>&nbsp;</CODE><CODE><I>END</I></CODE> (<A name="key.oz-feed-region" id="key.oz-feed-region"><SPAN class="key">C-. C-r</SPAN></A>) <SPAN class="entrycategory"><SPAN class="entrycategorybracket">&nbsp;[</SPAN><I>command</I><SPAN class="entrycategorybracket">]</SPAN></SPAN></DT><DT class="command"><A name="label147"></A><SPAN class="index"><CODE>oz-feed-line</CODE></SPAN> <CODE><I>COUNT</I></CODE> (<A name="key.oz-feed-line" id="key.oz-feed-line"><SPAN class="key">C-. C-l</SPAN></A>) <SPAN class="entrycategory"><SPAN class="entrycategorybracket">&nbsp;[</SPAN><I>command</I><SPAN class="entrycategorybracket">]</SPAN></SPAN></DT><DT class="command"><A name="label148"></A><SPAN class="index"><CODE>oz-feed-paragraph</CODE></SPAN> <CODE><I>COUNT</I></CODE> (<A name="key.oz-feed-paragraph-1" id="key.oz-feed-paragraph-1"><SPAN class="key">C-. C-p</SPAN></A>, <A name="key.oz-feed-paragraph-2" id="key.oz-feed-paragraph-2"><SPAN class="key">M-C-x</SPAN></A>) <SPAN class="entrycategory"><SPAN class="entrycategorybracket">&nbsp;[</SPAN><I>command</I><SPAN class="entrycategorybracket">]</SPAN></SPAN></DT><DD><P>The corresponding text region is fed to the compiler and processed with its currently active switches. </P></DD><DT class="command"><A name="label149"></A><SPAN class="index"><CODE>oz-show-buffer</CODE></SPAN> (<A name="key.oz-show-buffer" id="key.oz-show-buffer"><SPAN class="key">C-. s C-b</SPAN></A>) <SPAN class="entrycategory"><SPAN class="entrycategorybracket">&nbsp;[</SPAN><I>command</I><SPAN class="entrycategorybracket">]</SPAN></SPAN></DT><DT class="command"><A name="label150"></A><SPAN class="index"><CODE>oz-show-region</CODE></SPAN> <CODE><I>START</I></CODE><CODE>&nbsp;</CODE><CODE><I>END</I></CODE> (<A name="key.oz-show-region" id="key.oz-show-region"><SPAN class="key">C-. s C-r</SPAN></A>) <SPAN class="entrycategory"><SPAN class="entrycategorybracket">&nbsp;[</SPAN><I>command</I><SPAN class="entrycategorybracket">]</SPAN></SPAN></DT><DT class="command"><A name="label151"></A><SPAN class="index"><CODE>oz-show-line</CODE></SPAN> <CODE><I>COUNT</I></CODE> (<A name="key.oz-show-line" id="key.oz-show-line"><SPAN class="key">C-. s C-l</SPAN></A>) <SPAN class="entrycategory"><SPAN class="entrycategorybracket">&nbsp;[</SPAN><I>command</I><SPAN class="entrycategorybracket">]</SPAN></SPAN></DT><DT class="command"><A name="label152"></A><SPAN class="index"><CODE>oz-show-paragraph</CODE></SPAN> <CODE><I>COUNT</I></CODE> (<A name="key.oz-show-paragraph" id="key.oz-show-paragraph"><SPAN class="key">C-. s C-p</SPAN></A>) <SPAN class="entrycategory"><SPAN class="entrycategorybracket">&nbsp;[</SPAN><I>command</I><SPAN class="entrycategorybracket">]</SPAN></SPAN></DT><DD><P>Feed the corresponding text region to the Oz Compiler. Assuming it to contain an expression, enclose it by an application of the procedure <CODE>Show</CODE>. </P></DD><DT class="command"><A name="label153"></A><SPAN class="index"><CODE>oz-to-coresyntax-buffer</CODE></SPAN> <SPAN class="entrycategory"><SPAN class="entrycategorybracket">&nbsp;[</SPAN><I>command</I><SPAN class="entrycategorybracket">]</SPAN></SPAN></DT><DT class="command"><A name="label154"></A><SPAN class="index"><CODE>oz-to-coresyntax-region</CODE></SPAN> <CODE><I>START</I></CODE><CODE>&nbsp;</CODE><CODE><I>END</I></CODE> <SPAN class="entrycategory"><SPAN class="entrycategorybracket">&nbsp;[</SPAN><I>command</I><SPAN class="entrycategorybracket">]</SPAN></SPAN></DT><DT class="command"><A name="label155"></A><SPAN class="index"><CODE>oz-to-coresyntax-line</CODE></SPAN> <CODE><I>COUNT</I></CODE> <SPAN class="entrycategory"><SPAN class="entrycategorybracket">&nbsp;[</SPAN><I>command</I><SPAN class="entrycategorybracket">]</SPAN></SPAN></DT><DT class="command"><A name="label156"></A><SPAN class="index"><CODE>oz-to-coresyntax-paragraph</CODE></SPAN> <CODE><I>COUNT</I></CODE> <SPAN class="entrycategory"><SPAN class="entrycategorybracket">&nbsp;[</SPAN><I>command</I><SPAN class="entrycategorybracket">]</SPAN></SPAN></DT><DD><P><A name="label157"></A> <A name="label158"></A> The corresponding text region is prefixed by </P><BLOCKQUOTE><PRE><SPAN class="reference">\localSwitches</SPAN>&nbsp;<BR><SPAN class="reference">\switch&nbsp;+core&nbsp;-codegen</SPAN>&nbsp;<BR></PRE></BLOCKQUOTE><P> and fed to the Oz Compiler. If compilation succeeds, the resulting source file will be displayed in the Oz Temporary buffer. </P></DD><DT class="command"><A name="label159"></A><SPAN class="index"><CODE>oz-send-string</CODE></SPAN> <CODE><I>STRING</I></CODE><CODE>&nbsp;<SPAN class="type">&amp;optional</SPAN>&nbsp;</CODE><CODE><I>SYSTEM</I></CODE> <SPAN class="entrycategory"><SPAN class="entrycategorybracket">&nbsp;[</SPAN><I>command</I><SPAN class="entrycategorybracket">]</SPAN></SPAN></DT><DD><P>Feed <CODE><I>STRING</I></CODE> to the Oz Compiler, restarting it if it died. If <CODE><I>SYSTEM</I></CODE> is non-<CODE>nil</CODE>, it is a command for the system and is prefixed by </P><BLOCKQUOTE><PRE><SPAN class="reference">\localSwitches</SPAN>&nbsp;<BR><SPAN class="reference">\switch&nbsp;+threadedqueries&nbsp;-verbose&nbsp;-expression&nbsp;-runwithdebugger</SPAN>&nbsp;<BR></PRE></BLOCKQUOTE><P> </P></DD><DT class="useroption"><A name="label160"></A><SPAN class="index"><CODE>oz-prepend-line</CODE></SPAN> (default: <CODE>t</CODE>) <SPAN class="entrycategory"><SPAN class="entrycategorybracket">&nbsp;[</SPAN><I>user option</I><SPAN class="entrycategorybracket">]</SPAN></SPAN></DT><DD><P><A name="label161"></A> If non-<CODE>nil</CODE>, prepend a <CODE><SPAN class="reference">\line</SPAN></CODE> directive to all Oz queries, specifying the <A name="label162"></A><SPAN class="index">file name</SPAN> (or <A name="label163"></A><SPAN class="index">buffer name</SPAN>, if there's no associated file) and the <A name="label164"></A><SPAN class="index">line number</SPAN>. This information is used by the compiler to output meaningful <A name="label165"></A>error messages and to include debugging information in the generated machine code. </P></DD></DL><P> </P></DIV></DIV><DIV id="section.compiling"><H2><A name="section.compiling">4.4 Running the Command-Line Tools</A></H2><P> </P><DL><DT class="command"><A name="label166"></A><SPAN class="index"><CODE>oz-compile-file</CODE></SPAN> <SPAN class="entrycategory"><SPAN class="entrycategorybracket">&nbsp;[</SPAN><I>command</I><SPAN class="entrycategorybracket">]</SPAN></SPAN></DT><DD><P>Compile an Oz program non-interactively. </P></DD><DT class="useroption"><A name="label167"></A><SPAN class="index"><CODE>oz-compile-command</CODE></SPAN> (default: <CODE><SPAN class="string">&quot;ozc&nbsp;-c&nbsp;%s&quot;</SPAN></CODE>) <SPAN class="entrycategory"><SPAN class="entrycategorybracket">&nbsp;[</SPAN><I>user option</I><SPAN class="entrycategorybracket">]</SPAN></SPAN></DT><DD><P>Default shell command to do a compilation. This may contain at most one occurrence of <CODE>%s</CODE>, which is replaced by the current buffer's file name. Used by <CODE>oz-compile-file</CODE>. </P></DD><DT class="command"><A name="label168"></A><SPAN class="index"><CODE>oz-debug-application</CODE></SPAN> <SPAN class="entrycategory"><SPAN class="entrycategorybracket">&nbsp;[</SPAN><I>command</I><SPAN class="entrycategorybracket">]</SPAN></SPAN></DT><DD><P>Invoke <CODE>ozd</CODE>. </P></DD><DT class="useroption"><A name="label169"></A><SPAN class="index"><CODE>oz-application-command</CODE></SPAN> (default: <CODE><SPAN class="string">&quot;%s&quot;</SPAN></CODE>) <SPAN class="entrycategory"><SPAN class="entrycategorybracket">&nbsp;[</SPAN><I>user option</I><SPAN class="entrycategorybracket">]</SPAN></SPAN></DT><DD><P>Default shell command to do execute an Oz application. This may contain at most one occurrence of <CODE>%s</CODE>, which is replaced by the current buffer's file name, minus the <CODE>.oz</CODE> or <CODE>.ozg</CODE> extension. Used by <CODE>oz-debug-application</CODE>. </P></DD></DL><P> </P></DIV><H2><A name="label170">4.5 Dealing With Errors</A></H2><DIV class="apropos"><P class="margin">Error Messages</P><P> An <A name="label171"></A><EM>error message</EM> is either an error or warning message issued by the Oz Compiler or an <A name="label172"></A><SPAN class="index">exception</SPAN> displayed by the Emulator. </P></DIV><DIV class="apropos"><P class="margin">Error Coordinates</P><P> Where available, <A name="label173"></A><EM>error coordinates</EM> are associated with error messages, consisting of the <A name="label174"></A><SPAN class="index">file name</SPAN> (or <A name="label175"></A><SPAN class="index">buffer name</SPAN>) and <A name="label176"></A><SPAN class="index">line number</SPAN> of the corresponding Oz source code. </P><DL><DT class="useroption"><A name="label177"></A><SPAN class="index"><CODE>oz-popup-on-error</CODE></SPAN> (default: <CODE>t</CODE>) <SPAN class="entrycategory"><SPAN class="entrycategorybracket">&nbsp;[</SPAN><I>user option</I><SPAN class="entrycategorybracket">]</SPAN></SPAN></DT><DD><P>If non-nil, pop up Compiler resp. Emulator buffer upon an error message. </P></DD><DT class="command"><A name="label178"></A><SPAN class="index"><CODE>next-error</CODE></SPAN> <CODE><SPAN class="type">&amp;optional</SPAN>&nbsp;</CODE><CODE><I>ARG</I></CODE> (<A name="key.next-error" id="key.next-error"><SPAN class="key">C-x `</SPAN></A>) <SPAN class="entrycategory"><SPAN class="entrycategorybracket">&nbsp;[</SPAN><I>command</I><SPAN class="entrycategorybracket">]</SPAN></SPAN></DT><DD><P>Visit next compilation error message and corresponding source code. </P><P> A prefix arg specifies how many error messages to move; negative means move back to previous error messages. Just <SPAN class="key">C-u</SPAN> as a prefix means reparse the error message buffer and start at the first error. </P><P> This normally uses the most recently started compilation. To specify use of a particular buffer for error messages, type <SPAN class="key">C-x `</SPAN> in that buffer. </P></DD></DL><P> </P></DIV><DIV id="section.mozart"><H2><A name="section.mozart">4.6 Seeing the OPI from Mozart</A></H2><DIV class="apropos"><P class="margin">Startup</P><P> When the <CODE>OPI.ozf</CODE> file is applied, a <A name="label179"></A><SPAN class="index">startup file</SPAN> is searched and loaded as follows: </P><OL type="1"><LI><P>It is first checked whether the environment variable <A name="label180"></A><A name="label181"></A><CODE>OZRC</CODE> is set. If it is, its contents is interpreted as a file name that is fed to the OPI compiler. </P></LI><LI><P>Else, if the file <A name="label182"></A><SPAN class="index"><CODE>~/.oz/ozrc</CODE></SPAN> exists and is readable, it is fed to the compiler. </P></LI><LI><P>Else, if the file <A name="label183"></A><SPAN class="index"><CODE>~/.ozrc</CODE></SPAN> exists and is readable, it is fed to the compiler. </P></LI></OL><P> </P></DIV><DIV class="apropos"><P class="margin">Compiler Environment</P><P> The environment available when running Mozart from the OPI is an enriched base environment (see <A href="../base/index.html">``The Oz Base Environment''</A>). All of Mozarts system modules and tools are available under variables named like the corresponding modules, e.&nbsp;g., the functionality of the open programming component is available as <CODE>Open</CODE>. Additionally, the following aliases are introduced: </P><TABLE align="center" bgcolor="#f0f0e0"><TR valign="top"><TH><P>Alias</P></TH><TH><P>Long Form</P></TH></TR><TR valign="top"><TD><P><CODE>Show</CODE></P></TD><TD><P><CODE>System<SPAN class="keyword">.</SPAN>show</CODE></P></TD></TR><TR valign="top"><TD><P><CODE>Print</CODE></P></TD><TD><P><CODE>System<SPAN class="keyword">.</SPAN>print</CODE></P></TD></TR><TR valign="top"><TD><P><CODE>Browse</CODE></P></TD><TD><P><CODE>Browser<SPAN class="keyword">.</SPAN>browse</CODE></P></TD></TR><TR valign="top"><TD><P><CODE>Inspect</CODE></P></TD><TD><P><CODE>Inspector<SPAN class="keyword">.</SPAN>inspect</CODE></P></TD></TR><TR valign="top"><TD><P><CODE>Load</CODE></P></TD><TD><P><CODE>Pickle<SPAN class="keyword">.</SPAN>load</CODE></P></TD></TR><TR valign="top"><TD><P><CODE>Save</CODE></P></TD><TD><P><CODE>Pickle<SPAN class="keyword">.</SPAN>save</CODE></P></TD></TR><TR valign="top"><TD><P><CODE>SearchOne</CODE></P></TD><TD><P><CODE>Search<SPAN class="keyword">.</SPAN>base<SPAN class="keyword">.</SPAN>one</CODE></P></TD></TR><TR valign="top"><TD><P><CODE>SearchAll</CODE></P></TD><TD><P><CODE>Search<SPAN class="keyword">.</SPAN>base<SPAN class="keyword">.</SPAN>all</CODE></P></TD></TR><TR valign="top"><TD><P><CODE>SearchBest</CODE></P></TD><TD><P><CODE>Search<SPAN class="keyword">.</SPAN>base<SPAN class="keyword">.</SPAN>best</CODE></P></TD></TR><TR valign="top"><TD><P><CODE>ExploreOne</CODE></P></TD><TD><P><CODE>Explorer<SPAN class="keyword">.</SPAN>one</CODE></P></TD></TR><TR valign="top"><TD><P><CODE>ExploreAll</CODE></P></TD><TD><P><CODE>Explorer<SPAN class="keyword">.</SPAN>all</CODE></P></TD></TR><TR valign="top"><TD><P><CODE>ExploreBest</CODE></P></TD><TD><P><CODE>Explorer<SPAN class="keyword">.</SPAN>best</CODE></P></TD></TR></TABLE><P> </P></DIV><DIV class="apropos"><P class="margin">Compiler Interface</P><P> When Mozart is started from the OPI, an instance of the Mozart compiler is created that listens for queries from the interactive development environment. This interaction is handled via a compiler interface called <CODE>Emacs<SPAN class="keyword">.</SPAN>interface</CODE> (see <A href="../compiler/node4.html#section.api.interfaces">Section&nbsp;4.4 of ``The Mozart Compiler''</A>). </P></DIV><DIV class="apropos"><P class="margin">System Properties</P><P> It is possible to test whether Mozart is currently running under the OPI or as a standalone system via the following system property: </P><BLOCKQUOTE class="code"><CODE>{Property<SPAN class="keyword">.</SPAN>get&nbsp;<SPAN class="string">'oz.standalone'</SPAN>&nbsp;</CODE><CODE>?<I>B</I></CODE><CODE>}</CODE></BLOCKQUOTE><P> This returns <CODE><SPAN class="keyword">false</SPAN></CODE> when Mozart has been started from the OPI. When this is the case, a reference to the compiler interface via which the interaction with the Emacs development environment takes place can be obtained via </P><BLOCKQUOTE class="code"><CODE>{Property<SPAN class="keyword">.</SPAN>get&nbsp;<SPAN class="string">'opi.compiler'</SPAN>&nbsp;</CODE><CODE>?<I>O</I></CODE><CODE>}</CODE></BLOCKQUOTE><P> </P></DIV></DIV></DIV><TABLE align="center" border="0" cellpadding="6" cellspacing="6" class="nav"><TR bgcolor="#DDDDDD"><TD><A href="node3.html#chapter.editing">&lt;&lt; Prev</A></TD><TD><A href="index.html">- Up -</A></TD><TD><A href="node5.html#chapter.tools">Next &gt;&gt;</A></TD></TR></TABLE><HR><ADDRESS><A href="http://www.ps.uni-sb.de/~kornstae/">Leif&nbsp;Kornstaedt</A> and&nbsp;<A href="http://www.ps.uni-sb.de/~duchier/">Denys&nbsp;Duchier</A><BR><SPAN class="version">Version 1.4.0 (20110908185330)</SPAN></ADDRESS></BODY></HTML>