PageRenderTime 88ms CodeModel.GetById 79ms app.highlight 5ms RepoModel.GetById 1ms app.codeStats 1ms

/www/tags/NOV_07_2009/htdocs/42docs/users-guide/scripts-command-line.html

#
HTML | 66 lines | 63 code | 3 blank | 0 comment | 0 complexity | 15318d4edb3e270cc31ff678f988aa50 MD5 | raw file
 1<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Running Scripts from the Command
 2Line</title><meta name="generator" content="DocBook XSL Stylesheets V1.65.1"><link rel="home" href="index.html" title="jEdit 4.2 User's Guide"><link rel="up" href="macro-tips.html" title="Chapter 15. Macro Tips and Techniques"><link rel="previous" href="startup-scripts.html" title="Startup Scripts"><link rel="next" href="macro-tips-BeanShell.html" title="Advanced BeanShell Techniques"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Running Scripts from the Command
 3Line</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="startup-scripts.html">Prev</a> </td><th width="60%" align="center">Chapter 15. Macro Tips and Techniques</th><td width="20%" align="right"> <a accesskey="n" href="macro-tips-BeanShell.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="scripts-command-line"></a>Running Scripts from the Command
 4Line</h2></div></div><div></div></div><p>
 5  The <b class="userinput"><tt>-run</tt></b> command line switch specifies a BeanShell
 6  script to run on startup:
 7</p><table border="0" bgcolor="#E0E0E0"><tr><td><pre class="screen"><tt class="prompt">$ </tt><b class="userinput"><tt>jedit -run=test.bsh</tt></b></pre></td></tr></table><p>
 8  Note that just like with startup scripts, the <tt class="varname">view</tt>,
 9  <tt class="varname">textArea</tt>, <tt class="varname">editPane</tt> and
10  <tt class="varname">buffer</tt> variables are not defined.
11</p><p>
12  If another instance is already running, the script will be run in that
13  instance, and you will be able to use the
14  <tt class="function">jEdit.getLastView()</tt> method to obtain a view.
15  However, if a new instance of jEdit is being started, the script will
16  be run at the same time as all other startup scripts; that is, before
17  the first view is opened.
18</p><p>
19  If your script needs a view instance to operate on, you can use the
20  following code pattern to obtain one, no matter how or when the script is
21  being run:
22</p><table border="0" bgcolor="#E0E0E0"><tr><td><pre class="programlisting">void doSomethingUseful()
23{
24    void run()
25    {
26        view = jEdit.getLastView();
27
28        // put actual script body here
29    }
30
31    if(jEdit.getLastView() == null)
32        VFSManager.runInAWTThread(this);
33    else
34        run();
35}
36
37doSomethingUseful();</pre></td></tr></table><p>
38  If the script is being run in a loaded
39  instance, it can be invoked to perform its work immediately.
40  However, if
41  the script is running at startup, before an initial view exists, its
42  operation must be delayed to allow the view object first to be created
43  and displayed.
44  In order to queue the macro's operation, the scripted &#8220;<span class="quote">closure</span>&#8221;
45  named <tt class="function">doSomethingUseful()</tt> implements the
46  <tt class="classname">Runnable</tt> interface of the Java platform.
47  That interface contains only
48  a single <tt class="function">run()</tt> method that takes no parameters
49  and has no return value. The macro's implementation of the
50  <tt class="function">run()</tt> method contains the &#8220;<span class="quote">working</span>&#8221;
51  portion of the macro.  Then the scripted object, represented by a
52  reference to <tt class="varname">this</tt>, is passed to the
53  <tt class="function">runInAWTThread()</tt> method. This schedules the
54  macro's operations for execution after the startup routine is complete.
55</p><p>
56  As this example illustrates, the <tt class="function">runInAWTThread()</tt>
57  method can be used to ensure that a macro will perform operations
58  after other operations have
59  completed. If it is invoked during startup, it schedules the specified
60  <tt class="classname">Runnable</tt> object to run after startup is complete.
61  If invoked when jEdit is fully loaded, the <tt class="classname">Runnable</tt>
62  object will execute after
63  all pending input/output is complete, or immediately if there are no
64  pending I/O operations. This will delay operations on a new buffer,
65  for example, until after the buffer is loaded and displayed.
66</p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="startup-scripts.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="macro-tips.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="macro-tips-BeanShell.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Startup Scripts </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Advanced BeanShell Techniques</td></tr></table></div></body></html>