in the External Process command lines (see the "File" category
in the "Insert Variable" dialog).
It also adds user-defined variables with nested scopes (but
no closures). A variable can be defined using ${var;name="x";
val="123";cmd="...command line using variable x goes here..."}.
A variable is mutated using ${var.set;name="x";val="456"} and
dereferenced using ${x}.
Now that variables are included, I also implemented a
${for} loop that can automatically split a command line into
shorter pieces.
Executing several processes and piping from one process to
another hasn't been implemented yet, though.
M src/edu/rice/cs/drjava/config/DrJavaProperty.java
A src/edu/rice/cs/drjava/config/VariableProperty.java
M src/edu/rice/cs/drjava/config/DrJavaPropertySetup.java
M src/edu/rice/cs/drjava/config/PropertyMaps.java
M src/edu/rice/cs/drjava/config/RecursiveFileListProperty.java
M src/edu/rice/cs/drjava/config/ConstantProperty.java
M src/edu/rice/cs/drjava/ui/ExternalProcessPanel.java
M src/edu/rice/cs/drjava/ui/ExecuteExternalDialog.java
M src/edu/rice/cs/util/FileOps.java
M src/edu/rice/cs/util/StringOps.java
M src/edu/rice/cs/util/ProcessCreator.java