Made editExternally more robust and report error conditions, and added support for...
authorBrian T. Rice <briantrice@gmail.com>
Fri, 5 Mar 2010 05:51:56 +0000 (21:51 -0800)
committerBrian T. Rice <briantrice@gmail.com>
Fri, 5 Mar 2010 05:51:56 +0000 (21:51 -0800)
src/lib/devsupport.slate
src/lib/module.slate

index fe35542..2fbdd98 100644 (file)
@@ -72,14 +72,30 @@ obj@(Root traits) completeSelectorFrom: s@(String traits)
   obj allRoles select: [|:item| (item value bitAnd: 1) = 1 /\ [item key beginsWith: s]] collect: [|:item| item key]
 ].
 
-m@(Method traits) editExternally &editor: editor
+m@(Method traits) reload
 [
-  editor `defaultsTo: (Environment at: 'EDITOR').
   m sourceTree ifNotNilDo:
-    [| :src fileName lineNumber |
-     fileName: src source resource locator.
-     lineNumber: src lineNumber.
-     fileName isNotNil /\ [lineNumber isNotNil]
-       ifTrue:
-         [Platform run: editor ; ' +' ; (lineNumber as: String) ; ' ' ; (fileName as: String)]]
+    [| :src |
+     (src source resource as: Module) load]
+].
+
+m@(Method traits) editExternally &editor: editor &reload: reload
+[
+  editor `defaultsTo: (Environment at: 'EDITOR').
+  reload `defaultsTo: False.
+  m sourceTree
+    ifNil:
+      [warn: 'No source information available.'. False]
+    ifNotNilDo:
+      [| :src |
+       src source resource locator
+         ifNil:
+           [warn: 'File-based source information unavailable.'. False]
+         ifNotNilDo:
+           [| :fileName result |
+            result: (Platform run: editor
+              ; (src lineNumber ifNil: [''] ifNotNilDo: [| :n | ' +' ; n printString])
+              ; ' ' ; (fileName as: String)).
+            result /\ reload ifTrue: [m reload].
+            result]]
 ].
index eb54c57..7571bd0 100644 (file)
@@ -155,8 +155,9 @@ l@(Load traits) of: file@(File traits)
   l resolvePathOf: file.
   oldLevel: l Level.
   l Level: l Level + 1.
-  [file reader sessionDo: [| :input | l process: input] &mode: file Read] ensure: [l Level: oldLevel]
-    
+  [file sessionDo:
+     [| :input | l process: input reader] &mode: file Read]
+    ensure: [l Level: oldLevel]
 ].
 
 l@(Load traits) resolvePathOf: file@(File traits)