Revision: 20597
          http://sourceforge.net/p/jmol/code/20597
Author:   hansonr
Date:     2015-06-20 03:15:06 +0000 (Sat, 20 Jun 2015)
Log Message:
-----------
Jmol.___JmolVersion="14.3.15_2015.06.19c"

bug fix: 1/{a b c} gives 0, not 1/length({a b c})

Modified Paths:
--------------
    trunk/Jmol/src/org/jmol/script/SV.java
    trunk/Jmol/src/org/jmol/script/ScriptCompiler.java
    trunk/Jmol/src/org/jmol/script/ScriptEval.java
    trunk/Jmol/src/org/jmol/script/ScriptTokenParser.java
    trunk/Jmol/src/org/jmol/scriptext/CmdExt.java
    trunk/Jmol/src/org/jmol/viewer/Jmol.properties

Modified: trunk/Jmol/src/org/jmol/script/SV.java
===================================================================
--- trunk/Jmol/src/org/jmol/script/SV.java      2015-06-19 17:14:06 UTC (rev 
20596)
+++ trunk/Jmol/src/org/jmol/script/SV.java      2015-06-20 03:15:06 UTC (rev 
20597)
@@ -542,10 +542,10 @@
     case decimal:
     case varray:
     case string:
-    case point3f:
-    case point4f:
-    case matrix3f:
-    case matrix4f:
+//    case point3f: this makes not sense, and breaks 1/x
+//    case point4f:
+//    case matrix3f:
+//    case matrix4f:
       return (int) fValue(x);
     case bitset:
       return BSUtil.cardinalityOf(bsSelectToken(x));

Modified: trunk/Jmol/src/org/jmol/script/ScriptCompiler.java
===================================================================
--- trunk/Jmol/src/org/jmol/script/ScriptCompiler.java  2015-06-19 17:14:06 UTC 
(rev 20596)
+++ trunk/Jmol/src/org/jmol/script/ScriptCompiler.java  2015-06-20 03:15:06 UTC 
(rev 20597)
@@ -794,7 +794,7 @@
    * @return true if found
    */
   private boolean wasImpliedScript() {
-    if (nTokens >= 2 && tokCommand == T.script && checkImpliedScriptCmd) {
+    if (nTokens >= 2 && (tokCommand == T.script || tokCommand == T.macro) && 
checkImpliedScriptCmd) {
       String s = (nTokens == 2 ? lastToken.value.toString().toUpperCase()
           : null);
       if (nTokens > 2 ? !(tokAt(2) == T.leftparen && ltoken.get(1).value
@@ -983,7 +983,7 @@
           && lastToken.tok != T.inline
           && (tokCommand == T.set && nTokens == 2
               && lastToken.tok == T.defaultdirectory || tokCommand == T.load
-              || tokCommand == T.background || tokCommand == T.script));
+              || tokCommand == T.background || tokCommand == T.script || 
tokCommand == T.macro));
       iHaveQuotedString = true;
       if ((tokCommand == T.load || tokCommand == T.cgo)
           && lastToken.tok == T.data || tokCommand == T.data
@@ -1079,6 +1079,7 @@
       //$FALL-THROUGH$
     case T.load:
     case T.script:
+    case T.macro:
     case T.getproperty:
       if (script.charAt(ichToken) == '@') {
         iHaveQuotedString = true;
@@ -1132,7 +1133,7 @@
       }
       if (!iHaveQuotedString
           && lookingAtImpliedString(tokCommand == T.show, tokCommand == T.load,
-              nTokens > 1 || tokCommand != T.script)) {
+              nTokens > 1 || tokCommand != T.script && tokCommand != T.macro)) 
{
         String str = script.substring(ichToken, ichToken + cchToken);
         if (tokCommand == T.script) {
           if (str.startsWith("javascript:")) {
@@ -1189,7 +1190,7 @@
     // cd echo goto help hover javascript label message pause
     // possibly script
     implicitString &= (nTokens == 1);
-    if (implicitString && !(tokCommand == T.script && iHaveQuotedString)
+    if (implicitString && !((tokCommand == T.script || tokCommand == T.macro) 
&& iHaveQuotedString)
         && lookingAtImpliedString(true, true, true)) {
       String str = script.substring(ichToken, ichToken + cchToken);
       if (tokCommand == T.label
@@ -2458,7 +2459,7 @@
       case '(':
         if (!allowSptParen) {
           // script command
-          if (ichT >= 5
+          if(tokCommand == T.macro || ichT >= 5
               && (script.substring(ichT - 4, ichT).equals(".spt")
                   || script.substring(ichT - 4, ichT).equals(".png") || script
                   .substring(ichT - 5, ichT).equals(".pngj"))) {

Modified: trunk/Jmol/src/org/jmol/script/ScriptEval.java
===================================================================
--- trunk/Jmol/src/org/jmol/script/ScriptEval.java      2015-06-19 17:14:06 UTC 
(rev 20596)
+++ trunk/Jmol/src/org/jmol/script/ScriptEval.java      2015-06-20 03:15:06 UTC 
(rev 20597)
@@ -6199,9 +6199,16 @@
   
   public void cmdScript(int tok, String filename, String theScript)
       throws ScriptException {
+    if (tok == T.javascript) {
+      checkLength(2);
+      if (!chk)
+        vwr.jsEval(paramAsStr(1));
+      return;
+    }
     boolean loadCheck = true;
     boolean isCheck = false;
     boolean doStep = false;
+    boolean isAsync = vwr.async;
     int lineNumber = 0;
     int pc = 0;
     int lineEnd = 0;
@@ -6212,19 +6219,15 @@
     String scriptPath = null;
     Lst<SV> params = null;
 
-    if (tok == T.javascript) {
-      checkLength(2);
-      if (!chk)
-        vwr.jsEval(paramAsStr(1));
-      return;
+    if (tok == T.macro) {
+      i = -2;
     }
-    boolean isAsync = vwr.async;
     if (filename == null && theScript == null) {
       tok = tokAt(i);
       if (tok != T.string)
         error(ERROR_filenameExpected);
       filename = paramAsStr(i);
-      
+
       if (filename.equalsIgnoreCase("async")) {
         isAsync = true;
         filename = paramAsStr(++i);
@@ -6261,7 +6264,8 @@
             remotePath = paramAsStr(++i);
           filename = paramAsStr(++i);
         }
-        if ((vwr.isJS || vwr.testAsync) && (isAsync || 
filename.startsWith("?"))) {
+        if ((vwr.isJS || vwr.testAsync)
+            && (isAsync || filename.startsWith("?"))) {
           filename = loadFileAsync("SCRIPT_", filename, i, true);
           // on first pass a ScriptInterruption will be thrown; 
           // on the second pass we will have the file name, which will be 
cache://local_n__m
@@ -6298,15 +6302,18 @@
               invArg();
           }
         }
-        if (tokAt(i) == T.leftparen) {
-          params = parameterExpressionList(i, -1, false);
-          i = iToken + 1;
-        }
-        checkLength(doStep ? i + 1 : i);
+        i = -i;
       }
     } else if (filename != null && isAsync) {
-        filename = loadFileAsync("SCRIPT_", filename, i, true);
+      filename = loadFileAsync("SCRIPT_", filename, i, true);
     }
+    if (i < 0) {
+      if (tokAt(i = -i) == T.leftparen) {
+        params = parameterExpressionList(i, -1, false);
+        i = iToken + 1;
+      }
+      checkLength(doStep ? i + 1 : i);
+    }
 
     // processing
 
@@ -6337,7 +6344,8 @@
           "_arguments",
           (params == null ? SV.getVariableAI(new int[] {}) : SV
               .getVariableList(params)));
-      contextVariables.put("_argcount", SV.newI(params == null ? 0 : 
params.size()));
+      contextVariables.put("_argcount",
+          SV.newI(params == null ? 0 : params.size()));
 
       if (isCheck)
         listCommands = true;
@@ -6346,7 +6354,7 @@
         Logger.startTimer("script");
       dispatchCommands(false, false, false);
       if (isStateScript)
-        ScriptManager.setStateScriptVersion(vwr,  null);
+        ScriptManager.setStateScriptVersion(vwr, null);
       if (timeMsg)
         showString(Logger.getTimerMsg("script", 0));
       isCmdLine_C_Option = saveLoadCheck;

Modified: trunk/Jmol/src/org/jmol/script/ScriptTokenParser.java
===================================================================
--- trunk/Jmol/src/org/jmol/script/ScriptTokenParser.java       2015-06-19 
17:14:06 UTC (rev 20596)
+++ trunk/Jmol/src/org/jmol/script/ScriptTokenParser.java       2015-06-20 
03:15:06 UTC (rev 20597)
@@ -100,7 +100,8 @@
 
   protected boolean compileExpressions() {
     
-    boolean isScriptExpression = (tokCommand == T.script && tokAt(2) == 
T.leftparen);
+    boolean isScriptExpression = ((tokCommand == T.script || tokCommand == 
T.macro) 
+        && tokAt(2) == T.leftparen);
     isEmbeddedExpression = (isScriptExpression 
         || (tokCommand != T.nada
              && (tokCommand != T.function 

Modified: trunk/Jmol/src/org/jmol/scriptext/CmdExt.java
===================================================================
--- trunk/Jmol/src/org/jmol/scriptext/CmdExt.java       2015-06-19 17:14:06 UTC 
(rev 20596)
+++ trunk/Jmol/src/org/jmol/scriptext/CmdExt.java       2015-06-20 03:15:06 UTC 
(rev 20597)
@@ -205,8 +205,7 @@
       return;
     }
     showString("running " + macro);
-    macro = vwr.getFileAsString3(macro, false, null);
-    e.runScript(macro);
+    e.cmdScript(T.macro, macro, null);
   }
 
   /**

Modified: trunk/Jmol/src/org/jmol/viewer/Jmol.properties
===================================================================
--- trunk/Jmol/src/org/jmol/viewer/Jmol.properties      2015-06-19 17:14:06 UTC 
(rev 20596)
+++ trunk/Jmol/src/org/jmol/viewer/Jmol.properties      2015-06-20 03:15:06 UTC 
(rev 20597)
@@ -15,8 +15,12 @@
 TODO: remove HTML5 dependency on synchronous file loading (check SCRIPT 
command for problems)
 
 
-Jmol.___JmolVersion="14.3.15_2015.06.19b"
+Jmol.___JmolVersion="14.3.15_2015.06.19c"
 
+bug fix: 1/{a b c} gives 0, not 1/length({a b c})
+
+JmolVersion="14.3.15_2015.06.19b"
+
 new feature: MACRO command
  -- runs predefined script, generally defining new functions of general use
  -- contributions welcome!

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.


------------------------------------------------------------------------------
_______________________________________________
Jmol-commits mailing list
Jmol-commits@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jmol-commits

Reply via email to