[e-cvs] cvs commit: e/src/jsrc/org/erights/e/ui/elmer EInterpAdapter.java ElmerMain.java
markm@eros.cs.jhu.edu
markm@eros.cs.jhu.edu
Sat, 18 Aug 2001 01:19:38 -0400
markm 01/08/18 01:19:38
Modified: src/esrc/org/erights/e/elang/cmd cmdMakerMaker.updoc
src/esrc/scripts eBrowser.e elmer.e
src/jsrc/org/erights/e/elang/evm Evaluator.java
src/jsrc/org/erights/e/elib/ref Ref.java
src/jsrc/org/erights/e/elib/serial Serializer.java
src/jsrc/org/erights/e/elib/tables ConstMap.java
FlexList.java FlexMap.java
src/jsrc/org/erights/e/ui/elmer EInterpAdapter.java
ElmerMain.java
Added: src/esrc/scripts elmer2.e
Log:
cmdLoop based elmer2 begins
Revision Changes Path
1.2 +0 -13 e/src/esrc/org/erights/e/elang/cmd/cmdMakerMaker.updoc
Index: cmdMakerMaker.updoc
===================================================================
RCS file: /cvs/e/src/esrc/org/erights/e/elang/cmd/cmdMakerMaker.updoc,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- cmdMakerMaker.updoc 2001/08/17 05:48:57 1.1
+++ cmdMakerMaker.updoc 2001/08/18 05:19:38 1.2
@@ -56,16 +56,3 @@
# e`3 floorDivide(0)` eval([org.erights.e.elang.scope.ScopeImpl@5dffbd])
?
-
-
-
-
-
-
-
-
-
-
-
-
-
1.31 +12 -9 e/src/esrc/scripts/eBrowser.e
Index: eBrowser.e
===================================================================
RCS file: /cvs/e/src/esrc/scripts/eBrowser.e,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -r1.30 -r1.31
--- eBrowser.e 2001/08/13 22:07:52 1.30
+++ eBrowser.e 2001/08/18 05:19:38 1.31
@@ -154,7 +154,7 @@
if (strippedLine size() == 0) {
buf push('\n')
continuationIndent := ""
- } else if (strippedLine startsWith("//") ||
+ } else if (strippedLine startsWith("//") ||
strippedLine startsWith("#")) {
buf append(continuationIndent)
buf append(tab * flowIndentLevel)
@@ -274,9 +274,10 @@
def eui__uriGetter := <unsafe:org.erights.e.ui.*>
def EditGroupMaker := <eui:jed.EditGroup>
def ElmerMainMaker := <eui:elmer.ElmerMain>
+ def EInterpAdapterMaker := <eui:elmer.EInterpAdapter>
def group := EditGroupMaker new(false)
- def first := ElmerMainMaker new(group)
+ def first := ElmerMainMaker new(group, EInterpAdapterMaker)
first setVisible(true)
}
@@ -375,8 +376,8 @@
traceln("floating syntax exception")
}
} else {
- resultPane append("\n# problem: " + problem + "\n\n" +
- problem eStack() + "\n\n" +
+ resultPane append("\n# problem: " + problem + "\n\n" +
+ problem eStack() + "\n\n" +
problem javaStack())
}
traceln("problem shown")
@@ -484,7 +485,7 @@
# "Sync Outline","refreshFuncs",eBrowser)
def elmerButton := newToolButton(
<icons:elmer.gif>,
- "Scratchpad","scratchpad",eBrowser)
+ "Elmer scratchpad","scratchpad",eBrowser)
def runHiLiteButton := newToolButton(
<icons:runhilite.gif>,
"Run HiLite","executeHiLite",eBrowser)
@@ -755,7 +756,7 @@
#make the menus
def mm := <import:com.skyhunter.ex.swing.menuMakerAuthor> (
- swing__uriGetter,
+ swing__uriGetter,
<unsafe:org.erights.e.ui.jed.EAction>,
menuReactor)
def menuBar := mm menuBar([
@@ -766,7 +767,7 @@
mm action("Save &As...")
]),
mm menu("For&mat", [
- defaultIndentItem :=
+ defaultIndentItem :=
mm radio(indentGroup, mm action("Use Spaces")),
mm radio(indentGroup, mm action("Use Tabs")),
"--",
@@ -1056,7 +1057,7 @@
def source := "<import:com.skyhunter.eBrowser.syncServerMakerAuthor> run(unsafe__uriGetter, stdout)"
def vat := vatMaker new(source, [], interp getProps(), "Sync Server Maker")
def farSyncServerMaker := vat promisePrimorialObj()
- farBrowseServerResolver resolve(farSyncServerMaker)
+ farBrowseServerResolver resolve(farSyncServerMaker)
}
makeFarSyncServer()
@@ -1067,6 +1068,8 @@
optBrowseFile := <file: name>
}
def browser := eBrowserMaker new(textModelMaker new(optBrowseFile))
-if (optBrowseFile != null) {openFiles[optBrowseFile getCanonicalPath()] := browser}
+if (optBrowseFile != null) {
+ openFiles[optBrowseFile getCanonicalPath()] := browser
+}
interp blockAtTop()
1.9 +2 -1 e/src/esrc/scripts/elmer.e
Index: elmer.e
===================================================================
RCS file: /cvs/e/src/esrc/scripts/elmer.e,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- elmer.e 2001/03/11 04:32:57 1.8
+++ elmer.e 2001/08/18 05:19:38 1.9
@@ -3,9 +3,10 @@
def eui__uriGetter := <unsafe:org.erights.e.ui.*>
def EditGroupMaker := <eui:jed.EditGroup>
def ElmerMainMaker := <eui:elmer.ElmerMain>
+def EInterpAdapterMaker := <eui:elmer.EInterpAdapter>
def group := EditGroupMaker new(true)
-def first := ElmerMainMaker new(group)
+def first := ElmerMainMaker new(group, EInterpAdapterMaker)
for arg in interp getArgs() {
first menuOpen(<file: arg>)
}
1.1 e/src/esrc/scripts/elmer2.e
Index: elmer2.e
===================================================================
#!/usr/bin/env e
def StringWriterMaker := <unsafe:java.io.StringWriter>
def TextWriterMaker := <import:org.erights.e.elib.base.TextWriter>
def EParserMaker := <import:org.erights.e.elang.syntax.EParser>
def SyntaxException :=
<import:org.erights.e.elang.syntax.SyntaxException> asType()
def eui__uriGetter := <unsafe:org.erights.e.ui.*>
def EditGroupMaker := <eui:jed.EditGroup>
def ElmerMainMaker := <eui:elmer.ElmerMain>
def cmd__uriGetter := <import:org.erights.e.elang.cmd.*>
def cmdMakerMaker := <cmd:cmdMakerMaker>
def QueueMaker := <unsafe:org.erights.e.elib.prim.Queue>
def ScopeSetupMaker := <unsafe:org.erights.e.elang.interp.ScopeSetup>
def SystemGC {
to gc() {
println("System.gc()")
<unsafe:java.lang.System> gc()
}
}
def cmdLoopMaker := <cmd:cmdLoopMakerAuthor>(QueueMaker, SystemGC)
class cmdAdapterMaker(elmer) :any {
def textArea := elmer textArea()
def stringWriter := StringWriterMaker new()
def outBuf := stringWriter getBuffer()
def outs := TextWriterMaker new(stringWriter)
def cmdLoop
def scope := ScopeSetupMaker privileged(true,
outs,
outs,
cmdLoop)
def bind cmdLoop := cmdLoopMaker new(["elmer2"],
interp getProps(),
scope)
def cmdMaker := cmdMakerMaker new(cmdLoop, outs, outs, outs)
def getOptSource(text, var pos) :any {
escape return {
var result := ""
while (true) {
def prev := text lastIndexOf("\n", pos -1)
def line := text(prev +1, pos)
def trimmed := line trim()
if (trimmed =~ ``) {
return(null)
}
def first := trimmed[0]
if (first != '?' && first != '>') {
return(null)
}
result := trimmed(1, trimmed size()) + "\n" + result
if (first == '?') {
return(result)
}
pos := prev
}
}
}
def leadingWhiteSpace(text, pos) :any {
def prev := text lastIndexOf("\n", pos -1)
def line := text(prev +1, pos)
def trimmed := line trim()
if (line =~ `@result$trimmed@_`) {
result
} else {
""
}
}
def cmdAdapter {
to keyTyped(e) {
escape return {
def c := e getKeyChar()
if (c == '\n' && c == '\r') {
return()
}
def text := textArea getText()
def pos := textArea getCaretPosition() -1
def optSource := getOptSource(text, pos)
if (optSource == null) {
return()
}
def left := leadingWhiteSpace(text, pos)
def optExpr := try {
EParserMaker(optSource)
} catch sex :SyntaxException {
outs indent("# ") print("# ", sex)
null
}
# XXX needs to deal with NeedMoreException
if (optExpr != null) {
def cmd := cmdMaker new(optExpr)
cmdLoop enqueue(cmd)
}
# XXX what to do about later output?
}
}
}
}
def group := EditGroupMaker new(true)
def first := ElmerMainMaker new(group)
for arg in interp getArgs() {
first menuOpen(<file: arg>)
}
first setVisible(true)
interp blockAtTop()
1.7 +1 -1 e/src/jsrc/org/erights/e/elang/evm/Evaluator.java
Index: Evaluator.java
===================================================================
RCS file: /cvs/e/src/jsrc/org/erights/e/elang/evm/Evaluator.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- Evaluator.java 2001/04/13 08:08:34 1.6
+++ Evaluator.java 2001/08/18 05:19:38 1.7
@@ -140,7 +140,7 @@
*
* def [powOverThere, powOverThere__Resolver] := PromiseMaker()
* remoteEvaluator <- eval(e`def powOverThere(x) { x**2 }`,
- * [] asMap,
+ * [] asMap(),
* false,
* ["powOverThere" => powOverThere__Resolver])
* def y := powOverThere <- (3)
1.21 +26 -1 e/src/jsrc/org/erights/e/elib/ref/Ref.java
Index: Ref.java
===================================================================
RCS file: /cvs/e/src/jsrc/org/erights/e/elib/ref/Ref.java,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -r1.20 -r1.21
--- Ref.java 2001/08/17 03:11:33 1.20
+++ Ref.java 2001/08/18 05:19:38 1.21
@@ -472,11 +472,36 @@
}
/**
+ *
+ */
+ /*static public boolean isPersistent(Object ref) {
+ ref = resolution(ref);
+ if (! isNear(ref)) {
+ return false;
+ }
+ if (null == ref) {
+ //null is trivially PassByCopy
+ return true;
+ }
+ Class clazz = ref.getClass();
+ if (Persistent.class.isAssignableFrom(clazz)) {
+ return true;
+ }
+ if (clazz.isArray()) {
+ //Because we try to pretend that arrays are ConstLists, we treat
+ //them as Persistent.
+ return true;
+ }
+ return Persistent.HONORARY.has(clazz);
+ }
+ */
+ /**
* Being PassByCopy == being Selfless && being PassByConstruction. <p>
*/
- static public boolean isPassByCopy(Object ref) {
+ /*static public boolean isPassByCopy(Object ref) {
return isSelfless(ref) && isPBC(ref);
}
+ */
/**
* If two object references are the same(), they are indistinguishable up
1.6 +4 -5 e/src/jsrc/org/erights/e/elib/serial/Serializer.java
Index: Serializer.java
===================================================================
RCS file: /cvs/e/src/jsrc/org/erights/e/elib/serial/Serializer.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- Serializer.java 2001/08/17 20:59:26 1.5
+++ Serializer.java 2001/08/18 05:19:38 1.6
@@ -31,12 +31,11 @@
* Made usable from E by parameterization rather than subclassing.
* This stream should be used at least for persistence and pluribus. It will
* probably need more parameters, but we should add them as we find we need
- * them, rather than create another subclass. <p>
- *
+ * them, rather than create another subclass.
+ * <p>
* Note that reset() is considered legitimate usage of a Serializer.
- *
- * Likely additional parameters:
- * version string
+ * <p>
+ * Likely additional parameters: version string
*
* @author <a href="mailto:markm@erights.org">Mark S. Miller</a>
*/
1.19 +1 -1 e/src/jsrc/org/erights/e/elib/tables/ConstMap.java
Index: ConstMap.java
===================================================================
RCS file: /cvs/e/src/jsrc/org/erights/e/elib/tables/ConstMap.java,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -r1.18 -r1.19
--- ConstMap.java 2001/04/01 08:13:42 1.18
+++ ConstMap.java 2001/08/18 05:19:38 1.19
@@ -161,7 +161,7 @@
*/
public void printOn(TextWriter out) throws IOException {
if (size() == 0) {
- out.print("[] asMap");
+ out.print("[] asMap()");
} else {
printOn("[", " => ", ", ", "]", out);
}
1.14 +3 -2 e/src/jsrc/org/erights/e/elib/tables/FlexList.java
Index: FlexList.java
===================================================================
RCS file: /cvs/e/src/jsrc/org/erights/e/elib/tables/FlexList.java,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- FlexList.java 2001/04/13 08:08:35 1.13
+++ FlexList.java 2001/08/18 05:19:38 1.14
@@ -146,10 +146,11 @@
}
/**
- * Prints use E list syntax followed by "diverge" (to indicate flexible).
+ * Prints use E list syntax followed by "diverge()" (to indicate
+ * flexible).
*/
public void printOn(TextWriter out) throws IOException {
- printOn("[", ", ", "] diverge", out);
+ printOn("[", ", ", "] diverge()", out);
}
/**
1.24 +2 -2 e/src/jsrc/org/erights/e/elib/tables/FlexMap.java
Index: FlexMap.java
===================================================================
RCS file: /cvs/e/src/jsrc/org/erights/e/elib/tables/FlexMap.java,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -r1.23 -r1.24
--- FlexMap.java 2001/05/01 08:42:04 1.23
+++ FlexMap.java 2001/08/18 05:19:38 1.24
@@ -175,9 +175,9 @@
*/
public void printOn(TextWriter out) throws IOException {
if (size() == 0) {
- out.print("[] asMap diverge");
+ out.print("[] asMap() diverge()");
} else {
- printOn("[", " => ", ", ", "] diverge", out);
+ printOn("[", " => ", ", ", "] diverge()", out);
}
}
1.30 +3 -2 e/src/jsrc/org/erights/e/ui/elmer/EInterpAdapter.java
Index: EInterpAdapter.java
===================================================================
RCS file: /cvs/e/src/jsrc/org/erights/e/ui/elmer/EInterpAdapter.java,v
retrieving revision 1.29
retrieving revision 1.30
diff -u -r1.29 -r1.30
--- EInterpAdapter.java 2001/08/05 07:01:25 1.29
+++ EInterpAdapter.java 2001/08/18 05:19:38 1.30
@@ -112,9 +112,10 @@
int indentPos = line.indexOf(trimmed);
if (indentPos < 0) {
- indentPos = 0;
+ return "";
+ } else {
+ return line.substring(0, indentPos);
}
- return line.substring(0, indentPos);
}
/**
1.19 +10 -3 e/src/jsrc/org/erights/e/ui/elmer/ElmerMain.java
Index: ElmerMain.java
===================================================================
RCS file: /cvs/e/src/jsrc/org/erights/e/ui/elmer/ElmerMain.java,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -r1.18 -r1.19
--- ElmerMain.java 2001/08/13 21:03:21 1.18
+++ ElmerMain.java 2001/08/18 05:19:38 1.19
@@ -20,9 +20,11 @@
*/
import java.awt.Image;
+import java.awt.event.KeyListener;
import java.net.URL;
import javax.swing.ImageIcon;
import javax.swing.JOptionPane;
+import org.erights.e.elib.prim.E;
import org.erights.e.ui.jed.EditGroup;
import org.erights.e.ui.jed.JedMain;
@@ -36,6 +38,8 @@
static private Image OurLogo = null;
+ private Object myKeyListenerMaker;
+
static private Image TheLogo() {
if (null == OurLogo) {
String rName = "org/erights/e/icons/carrot2.gif";
@@ -49,9 +53,12 @@
/**
*
*/
- public ElmerMain(EditGroup group) {
+ public ElmerMain(EditGroup group, Object keyListenerMaker) {
super(group);
- textArea().addKeyListener(new EInterpAdapter(this));
+ myKeyListenerMaker = keyListenerMaker;
+ KeyListener listener =
+ (KeyListener)E.call(keyListenerMaker, "new", this);
+ textArea().addKeyListener(listener);
setIconImage(TheLogo());
}
@@ -81,6 +88,6 @@
*
*/
public JedMain newJed(EditGroup group) {
- return new ElmerMain(group);
+ return new ElmerMain(group, myKeyListenerMaker);
}
}