opened
imagejan
username_0
When trying to run IJ1 macro code in the script interpreter, e.g. `run("Blobs (25K)");`, the following exception is thrown:

```
java.lang.IllegalStateException: Cannot run macro from the EDT!
	at net.imagej.legacy.IJ1Helper.runMacroFriendly(IJ1Helper.java:977)
	at net.imagej.legacy.IJ1Helper.runMacro(IJ1Helper.java:1035)
	at net.imagej.legacy.plugin.IJ1MacroEngine.eval(IJ1MacroEngine.java:97)
	at org.scijava.script.DefaultScriptInterpreter.eval(DefaultScriptInterpreter.java:139)
	at org.scijava.script.DefaultScriptInterpreter.interpret(DefaultScriptInterpreter.java:198)
	at org.scijava.script.ScriptREPL.evaluate(ScriptREPL.java:182)
	at org.scijava.ui.swing.script.PromptPane.execute(PromptPane.java:157)
	at org.scijava.ui.swing.script.PromptPane.access$100(PromptPane.java:55)
	at org.scijava.ui.swing.script.PromptPane$1.keyPressed(PromptPane.java:80)
	at java.awt.Component.processKeyEvent(Component.java:6493)
	at javax.swing.JComponent.processKeyEvent(JComponent.java:2832)
	at java.awt.Component.processEvent(Component.java:6312)
	at java.awt.Container.processEvent(Container.java:2236)
	at java.awt.Component.dispatchEventImpl(Component.java:4891)
	at java.awt.Container.dispatchEventImpl(Container.java:2294)
	at java.awt.Component.dispatchEvent(Component.java:4713)
	at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1954)
	at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:806)
	at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:1074)
	at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:945)
	at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:771)
	at java.awt.Component.dispatchEventImpl(Component.java:4762)
	at java.awt.Container.dispatchEventImpl(Container.java:2294)
	at java.awt.Window.dispatchEventImpl(Window.java:2750)
	at java.awt.Component.dispatchEvent(Component.java:4713)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
	at java.awt.EventQueue.access$500(EventQueue.java:97)
	at java.awt.EventQueue$3.run(EventQueue.java:709)
	at java.awt.EventQueue$3.run(EventQueue.java:703)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
	at java.awt.EventQueue$4.run(EventQueue.java:731)
	at java.awt.EventQueue$4.run(EventQueue.java:729)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
```
IllegalStateException with IJ1 macro code in Script Interpreter
issue
closed
ctrueden
username_1
issue
created
ctrueden
username_1
```

Firstly, all eval statements from the IJ1 macro language return `null`. I am not sure how difficult it would be to change/fix that.

Secondly, when there is an error, the line number is vastly off, because the IJ1 macro language plugin secretly prepends a whole bunch of variable assignments, in order to inject the current variable bindings into each evaluation. Hence, the line numbers are wrong. We could intercept the error messages and fix the numbers, but it would be a little annoying to do. Probably we should change the injection to do everything on a single line, so the line number is at least only off by one, and thus easier to post-process.
comment