On February 25, I got attributes working; they modify the output of variables. For instance, you can tell a variable that returns a file to make that file relative to some directory.
I spent the remaining days fixing small things that had gone wrong, like the escaping behavior for the quote-balancing tokenizer. I changed the escape character from backslash (\) to dollar ($), and then reversed the behavior of quotes and keywords that start with the escape character: Some text is considered a quote or a keyword unless it is prefixed with the escape character (e.g. ${foo}
). Before, the first character was considered an escape character, so to get the quote ${foo}
, you had to write $${foo}
, and that’s just dumb. This problem is similar to the grep vs. egrep situation.
I also changed the way makeRelativeTo
works on Windows: If the file is on a different drive than the directory it should be made relative to, then the absolute path of the file on its drive is returned. That’s not a relative path, but it’s as relative as it can get. The “Execute External Process” variables now work correctly on Windows, too.
Over Spring break, unfortunately I got sick, so I didn’t get as much done as I had wanted. On Tuesday, March 4, I think I finally got the behavior for properties and attributes right.
I then embarked on a small side project: I separated the “maximum heap size” settings for the Main and the Interactions VM from the JVM\_ARGS settings and created settings for the sizes of their own. This also involves “sanitizing” the JVM\_ARGS lines and removing or copying the size into the correct property. I just committed this.
Now we can catch exceptions like com.sun.jdi.VMOutOfMemoryException
and java.lang.OutOfMemoryError
and directly ask the user to increase the memory size.