The -run command line switch specifies a
        BeanShell script to run on startup:
$jedit -run=test.bsh
Note that just like with startup scripts, the
        view, textArea,
        editPane and buffer variables are
        not defined.
If another instance is already running, the script will be run in
        that instance, and you will be able to use the
        jEdit.getLastView() method to obtain a view.
        However, if a new instance of jEdit is being started, the script will be
        run at the same time as all other startup scripts; that is, before the
        first view is opened.
If your script needs a view instance to operate on, you can use the following code pattern to obtain one, no matter how or when the script is being run:
void doSomethingUseful()
{
    void run()
    {
        view = jEdit.getLastView();
        // put actual script body here
    }
    if(jEdit.getLastView() == null)
        VFSManager.runInAWTThread(this);
    else
        run();
}
doSomethingUseful();If the script is being run in a loaded instance, it can be invoked
        to perform its work immediately. However, if the script is running at
        startup, before an initial view exists, its operation must be delayed to
        allow the view object first to be created and displayed. In order to
        queue the macro's operation, the scripted “closure” named
        doSomethingUseful() implements the
        Runnable interface of the Java platform. That
        interface contains only a single run() method that
        takes no parameters and has no return value. The macro's implementation
        of the run() method contains the
        “working” portion of the macro. Then the scripted object,
        represented by a reference to this, is passed to the
        runInAWTThread() method. This schedules the macro's
        operations for execution after the startup routine is complete.
As this example illustrates, the
        runInAWTThread() method can be used to ensure that
        a macro will perform operations after other operations have completed.
        If it is invoked during startup, it schedules the specified
        Runnable object to run after startup is complete.
        If invoked when jEdit is fully loaded, the
        Runnable object will execute after all pending
        input/output is complete, or immediately if there are no pending I/O
        operations. This will delay operations on a new buffer, for example,
        until after the buffer is loaded and displayed.