From: <ha...@us...> - 2010-10-21 13:19:35
|
Revision: 14523 http://jmol.svn.sourceforge.net/jmol/?rev=14523&view=rev Author: hansonr Date: 2010-10-21 13:19:28 +0000 (Thu, 21 Oct 2010) Log Message: ----------- version=12.0.19_dev # bug fix: naming functions or variables after Jmol token names fails or acts unexpectedly # (fixing this bug required script compiler changes, and that lead to the # two new features below) # # bug fix: "var chains" does not work -- i.e. a name of a "within" option. # solution was to allow var ANYTHING. # # bug fix: User variables and functions removed from state because they are # no longer necessary and also indeterminant in terms of the "state". # Originally these were needed because ECHO and DEFINE can be dynamic # -- which is still true -- and because certain commands such as ISOSURFACE # were being saved in the state just as their strings instead of their # intepreted code. But that was changed for 12.0, and this fix also changes # ECHO to be saved in its current state, not its dynamic state. While # dynamic DEFINE types may include variables, they aren't really # part of the "state" per se and aren't needed to recreate the state. So # they are dropped from the state with this fix as well. # # new feature: function calls can look like Jmol commands (also added to 12.1.16): # function myfunc(a, b, c, d){....} # myfunc a b c d # -- these are MATHEMATICAL commands # -- use just a b, not @a @b # # new feature: custom overloading of Jmol commands (also added to 12.1.16) # function measure(a, b) { print "measuring " + a + " " + b; measure @a @b } # measure {atomno=2} {atomno=3} # -- within function X, command X is standard Jmol; # -- outside the function, it is a reference to that function # -- overloaded functions are not saved in the state # Modified Paths: -------------- branches/v12_0/Jmol/src/org/jmol/script/ScriptCompilationTokenParser.java branches/v12_0/Jmol/src/org/jmol/script/ScriptCompiler.java Modified: branches/v12_0/Jmol/src/org/jmol/script/ScriptCompilationTokenParser.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/script/ScriptCompilationTokenParser.java 2010-10-21 13:01:15 UTC (rev 14522) +++ branches/v12_0/Jmol/src/org/jmol/script/ScriptCompilationTokenParser.java 2010-10-21 13:19:28 UTC (rev 14523) @@ -48,9 +48,11 @@ * */ - protected String script; protected Viewer viewer; + protected String script; + protected boolean isStateScript; + protected short lineCurrent; protected int iCommand; @@ -210,7 +212,7 @@ protected Map htUserFunctions; protected boolean isUserFunction(String name) { - return viewer.isFunction(name) || htUserFunctions.containsKey(name); + return (!isStateScript && (viewer.isFunction(name) || htUserFunctions.containsKey(name))); } private boolean isExpressionNext() { Modified: branches/v12_0/Jmol/src/org/jmol/script/ScriptCompiler.java =================================================================== --- branches/v12_0/Jmol/src/org/jmol/script/ScriptCompiler.java 2010-10-21 13:01:15 UTC (rev 14522) +++ branches/v12_0/Jmol/src/org/jmol/script/ScriptCompiler.java 2010-10-21 13:19:28 UTC (rev 14523) @@ -259,6 +259,7 @@ htUserFunctions = new Hashtable(); script = script.replace('\u201C', '"').replace('\u201D', '"'); script = cleanScriptComments(script); + isStateScript = (script.indexOf(Viewer.STATE_VERSION_STAMP) >= 0); cchScript = this.script.length(); // these four will be returned: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |