Browse Source

Updates CodeMirror to version 3.20
- use support/codemirror.js to load CodeMirror
- removes custom amber support (in favor of the default smalltalk mode)
- updates IDEs to reflect codemirror changes

Nicolas Petton 12 năm trước cách đây
mục cha
commit
44bc1e247d
10 tập tin đã thay đổi với 82 bổ sung và 242 xóa
  1. 1 1
      bower.json
  2. 14 12
      js/Helios-Workspace.js
  3. 36 36
      js/IDE.js
  4. 2 1
      st/Helios-Workspace.st
  5. 18 18
      st/IDE.st
  6. 0 21
      support/CodeMirror/amber.css
  7. 0 139
      support/CodeMirror/smalltalk.js
  8. 9 0
      support/codemirror.js
  9. 1 7
      support/devel.js
  10. 1 7
      support/helios.js

+ 1 - 1
bower.json

@@ -15,7 +15,7 @@
     "bootstrap": "http://getbootstrap.com/2.3.2/assets/bootstrap.zip",
     "jquery-tabby": "git://github.com/alanhogan/Tabby",
     "es5-shim": "~2.1.0",
-    "codemirror": "~3.13.0",
+    "codemirror": "~3.20.0",
     "showdown": "~0.3.1",
     "require-css": "~0.0.8"
   }

+ 14 - 12
js/Helios-Workspace.js

@@ -395,30 +395,32 @@ protocol: 'accessing',
 fn: function (){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
-var $2,$3,$4,$5,$6,$7,$8,$9,$10,$1;
-$2="theme".__minus_gt("amber");
+var $2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$1;
+$2="theme".__minus_gt("default");
 $ctx1.sendIdx["->"]=1;
-$3="lineNumbers".__minus_gt(true);
+$3="mode".__minus_gt("text/x-stsrc");
 $ctx1.sendIdx["->"]=2;
-$4="enterMode".__minus_gt("flat");
+$4="lineNumbers".__minus_gt(true);
 $ctx1.sendIdx["->"]=3;
-$5="indentWithTabs".__minus_gt(true);
+$5="enterMode".__minus_gt("flat");
 $ctx1.sendIdx["->"]=4;
-$6="indentUnit".__minus_gt((4));
+$6="indentWithTabs".__minus_gt(true);
 $ctx1.sendIdx["->"]=5;
-$7="matchBrackets".__minus_gt(true);
+$7="indentUnit".__minus_gt((4));
 $ctx1.sendIdx["->"]=6;
-$8="electricChars".__minus_gt(false);
+$8="matchBrackets".__minus_gt(true);
 $ctx1.sendIdx["->"]=7;
-$9="keyMap".__minus_gt("Amber");
+$9="electricChars".__minus_gt(false);
 $ctx1.sendIdx["->"]=8;
-$10="extraKeys".__minus_gt(smalltalk.HashedCollection._from_(["Shift-Space".__minus_gt("autocomplete")]));
+$10="keyMap".__minus_gt("Amber");
 $ctx1.sendIdx["->"]=9;
-$1=smalltalk.HashedCollection._from_([$2,$3,$4,$5,$6,$7,$8,$9,$10]);
+$11="extraKeys".__minus_gt(smalltalk.HashedCollection._from_(["Shift-Space".__minus_gt("autocomplete")]));
+$ctx1.sendIdx["->"]=10;
+$1=smalltalk.HashedCollection._from_([$2,$3,$4,$5,$6,$7,$8,$9,$10,$11]);
 return $1;
 }, function($ctx1) {$ctx1.fill(self,"editorOptions",{},smalltalk.HLCodeWidget)})},
 args: [],
-source: "editorOptions\x0a\x09^ #{\x0a\x09\x09'theme' -> 'amber'.\x0a        'lineNumbers' -> true.\x0a        'enterMode' -> 'flat'.\x0a        'indentWithTabs' -> true.\x0a\x09\x09'indentUnit' -> 4.\x0a        'matchBrackets' -> true.\x0a        'electricChars' -> false.\x0a\x09\x09'keyMap' -> 'Amber'.\x0a\x09\x09'extraKeys' -> #{'Shift-Space' -> 'autocomplete'}\x0a\x09}",
+source: "editorOptions\x0a\x09^ #{\x0a\x09\x09'theme' -> 'default'.\x0a\x09\x09'mode' -> 'text/x-stsrc'.\x0a        'lineNumbers' -> true.\x0a        'enterMode' -> 'flat'.\x0a        'indentWithTabs' -> true.\x0a\x09\x09'indentUnit' -> 4.\x0a        'matchBrackets' -> true.\x0a        'electricChars' -> false.\x0a\x09\x09'keyMap' -> 'Amber'.\x0a\x09\x09'extraKeys' -> #{'Shift-Space' -> 'autocomplete'}\x0a\x09}",
 messageSends: ["->"],
 referencedClasses: []
 }),

+ 36 - 36
js/IDE.js

@@ -966,7 +966,7 @@ fn: function (aTextarea){
 var self=this;
 return smalltalk.withContext(function($ctx1) { 
 self['@editor'] = CodeMirror.fromTextArea(aTextarea, {
-		theme: 'amber',
+		theme: 'default',
 				lineNumbers: true,
 				enterMode: 'flat',
 				indentWithTabs: true,
@@ -976,7 +976,7 @@ self['@editor'] = CodeMirror.fromTextArea(aTextarea, {
 	});
 return self}, function($ctx1) {$ctx1.fill(self,"setEditorOn:",{aTextarea:aTextarea},smalltalk.SourceArea)})},
 args: ["aTextarea"],
-source: "setEditorOn: aTextarea\x0a\x09<self['@editor'] = CodeMirror.fromTextArea(aTextarea, {\x0a\x09\x09theme: 'amber',\x0a\x09\x09\x09\x09lineNumbers: true,\x0a\x09\x09\x09\x09enterMode: 'flat',\x0a\x09\x09\x09\x09indentWithTabs: true,\x0a\x09\x09\x09\x09indentUnit: 4,\x0a\x09\x09\x09\x09matchBrackets: true,\x0a\x09\x09\x09\x09electricChars: false\x0a\x09})>",
+source: "setEditorOn: aTextarea\x0a\x09<self['@editor'] = CodeMirror.fromTextArea(aTextarea, {\x0a\x09\x09theme: 'default',\x0a\x09\x09\x09\x09lineNumbers: true,\x0a\x09\x09\x09\x09enterMode: 'flat',\x0a\x09\x09\x09\x09indentWithTabs: true,\x0a\x09\x09\x09\x09indentUnit: 4,\x0a\x09\x09\x09\x09matchBrackets: true,\x0a\x09\x09\x09\x09electricChars: false\x0a\x09})>",
 messageSends: [],
 referencedClasses: []
 }),
@@ -7395,27 +7395,21 @@ var $1;
 variables=_st($Dictionary())._new();
 _st(variables)._at_put_("#self",self);
 $ctx1.sendIdx["at:put:"]=1;
-_st(variables)._at_put_("#home",self._home());
+_st(variables)._at_put_("#keys",self._keys());
 $ctx1.sendIdx["at:put:"]=2;
-_st(variables)._at_put_("#receiver",self._receiver());
-$ctx1.sendIdx["at:put:"]=3;
-_st(variables)._at_put_("#selector",self._selector());
-$ctx1.sendIdx["at:put:"]=4;
-_st(variables)._at_put_("#temps",self._temps());
-$ctx1.sendIdx["at:put:"]=5;
-_st(_st(self._class())._instanceVariableNames())._do_((function(each){
+self._keysAndValuesDo_((function(key,value){
 return smalltalk.withContext(function($ctx2) {
-return _st(variables)._at_put_(each,self._instVarAt_(each));
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
+return _st(variables)._at_put_(key,value);
+}, function($ctx2) {$ctx2.fillBlock({key:key,value:value},$ctx1,1)})}));
 _st(anInspector)._setLabel_(self._printString());
 $1=_st(anInspector)._setVariables_(variables);
-return self}, function($ctx1) {$ctx1.fill(self,"inspectOn:",{anInspector:anInspector,variables:variables},smalltalk.MethodContext)})},
+return self}, function($ctx1) {$ctx1.fill(self,"inspectOn:",{anInspector:anInspector,variables:variables},smalltalk.AssociativeCollection)})},
 args: ["anInspector"],
-source: "inspectOn: anInspector\x0a\x09| variables |\x0a\x09variables := Dictionary new.\x0a\x09variables at: '#self' put: self.\x0a\x09variables at: '#home' put: self home.\x0a\x09variables at: '#receiver' put: self receiver.\x0a\x09variables at: '#selector' put: self selector.\x0a\x09variables at: '#temps' put: self temps.\x0a\x09self class instanceVariableNames do: [ :each |\x0a\x09\x09variables at: each put: (self instVarAt: each) ].\x0a\x09anInspector\x0a\x09\x09setLabel: self printString;\x0a\x09\x09setVariables: variables",
-messageSends: ["new", "at:put:", "home", "receiver", "selector", "temps", "do:", "instanceVariableNames", "class", "instVarAt:", "setLabel:", "printString", "setVariables:"],
+source: "inspectOn: anInspector\x0a\x09| variables |\x0a\x09variables := Dictionary new.\x0a\x09variables at: '#self' put: self.\x0a\x09variables at: '#keys' put: self keys.\x0a\x09self keysAndValuesDo: [ :key :value |\x0a\x09\x09variables at: key put: value ].\x0a\x09anInspector\x0a\x09\x09setLabel: self printString;\x0a\x09\x09setVariables: variables",
+messageSends: ["new", "at:put:", "keys", "keysAndValuesDo:", "setLabel:", "printString", "setVariables:"],
 referencedClasses: ["Dictionary"]
 }),
-smalltalk.MethodContext);
+smalltalk.AssociativeCollection);
 
 smalltalk.addMethod(
 smalltalk.method({
@@ -7423,28 +7417,29 @@ selector: "inspectOn:",
 protocol: '*IDE',
 fn: function (anInspector){
 var self=this;
-var variables;
+var variables,i;
 function $Dictionary(){return smalltalk.Dictionary||(typeof Dictionary=="undefined"?nil:Dictionary)}
 return smalltalk.withContext(function($ctx1) { 
 var $1;
 variables=_st($Dictionary())._new();
 _st(variables)._at_put_("#self",self);
 $ctx1.sendIdx["at:put:"]=1;
-_st(variables)._at_put_("#keys",self._keys());
-$ctx1.sendIdx["at:put:"]=2;
-self._keysAndValuesDo_((function(key,value){
+i=(1);
+self._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
-return _st(variables)._at_put_(key,value);
-}, function($ctx2) {$ctx2.fillBlock({key:key,value:value},$ctx1,1)})}));
+_st(variables)._at_put_(i,each);
+i=_st(i).__plus((1));
+return i;
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
 _st(anInspector)._setLabel_(self._printString());
 $1=_st(anInspector)._setVariables_(variables);
-return self}, function($ctx1) {$ctx1.fill(self,"inspectOn:",{anInspector:anInspector,variables:variables},smalltalk.AssociativeCollection)})},
+return self}, function($ctx1) {$ctx1.fill(self,"inspectOn:",{anInspector:anInspector,variables:variables,i:i},smalltalk.Set)})},
 args: ["anInspector"],
-source: "inspectOn: anInspector\x0a\x09| variables |\x0a\x09variables := Dictionary new.\x0a\x09variables at: '#self' put: self.\x0a\x09variables at: '#keys' put: self keys.\x0a\x09self keysAndValuesDo: [ :key :value |\x0a\x09\x09variables at: key put: value ].\x0a\x09anInspector\x0a\x09\x09setLabel: self printString;\x0a\x09\x09setVariables: variables",
-messageSends: ["new", "at:put:", "keys", "keysAndValuesDo:", "setLabel:", "printString", "setVariables:"],
+source: "inspectOn: anInspector\x0a\x09| variables i |\x0a\x09variables := Dictionary new.\x0a\x09variables at: '#self' put: self.\x0a\x09i := 1.\x0a\x09self do: [ :each |\x0a\x09\x09variables at: i put: each.\x0a\x09\x09i := i + 1 ].\x0a\x09anInspector\x0a\x09\x09setLabel: self printString;\x0a\x09\x09setVariables: variables",
+messageSends: ["new", "at:put:", "do:", "+", "setLabel:", "printString", "setVariables:"],
 referencedClasses: ["Dictionary"]
 }),
-smalltalk.AssociativeCollection);
+smalltalk.Set);
 
 smalltalk.addMethod(
 smalltalk.method({
@@ -7452,28 +7447,33 @@ selector: "inspectOn:",
 protocol: '*IDE',
 fn: function (anInspector){
 var self=this;
-var variables,i;
+var variables;
 function $Dictionary(){return smalltalk.Dictionary||(typeof Dictionary=="undefined"?nil:Dictionary)}
 return smalltalk.withContext(function($ctx1) { 
 var $1;
 variables=_st($Dictionary())._new();
 _st(variables)._at_put_("#self",self);
 $ctx1.sendIdx["at:put:"]=1;
-i=(1);
-self._do_((function(each){
+_st(variables)._at_put_("#home",self._home());
+$ctx1.sendIdx["at:put:"]=2;
+_st(variables)._at_put_("#receiver",self._receiver());
+$ctx1.sendIdx["at:put:"]=3;
+_st(variables)._at_put_("#selector",self._selector());
+$ctx1.sendIdx["at:put:"]=4;
+_st(variables)._at_put_("#temps",self._temps());
+$ctx1.sendIdx["at:put:"]=5;
+_st(_st(self._class())._instanceVariableNames())._do_((function(each){
 return smalltalk.withContext(function($ctx2) {
-_st(variables)._at_put_(i,each);
-i=_st(i).__plus((1));
-return i;
+return _st(variables)._at_put_(each,self._instVarAt_(each));
 }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)})}));
 _st(anInspector)._setLabel_(self._printString());
 $1=_st(anInspector)._setVariables_(variables);
-return self}, function($ctx1) {$ctx1.fill(self,"inspectOn:",{anInspector:anInspector,variables:variables,i:i},smalltalk.Set)})},
+return self}, function($ctx1) {$ctx1.fill(self,"inspectOn:",{anInspector:anInspector,variables:variables},smalltalk.MethodContext)})},
 args: ["anInspector"],
-source: "inspectOn: anInspector\x0a\x09| variables i |\x0a\x09variables := Dictionary new.\x0a\x09variables at: '#self' put: self.\x0a\x09i := 1.\x0a\x09self do: [ :each |\x0a\x09\x09variables at: i put: each.\x0a\x09\x09i := i + 1 ].\x0a\x09anInspector\x0a\x09\x09setLabel: self printString;\x0a\x09\x09setVariables: variables",
-messageSends: ["new", "at:put:", "do:", "+", "setLabel:", "printString", "setVariables:"],
+source: "inspectOn: anInspector\x0a\x09| variables |\x0a\x09variables := Dictionary new.\x0a\x09variables at: '#self' put: self.\x0a\x09variables at: '#home' put: self home.\x0a\x09variables at: '#receiver' put: self receiver.\x0a\x09variables at: '#selector' put: self selector.\x0a\x09variables at: '#temps' put: self temps.\x0a\x09self class instanceVariableNames do: [ :each |\x0a\x09\x09variables at: each put: (self instVarAt: each) ].\x0a\x09anInspector\x0a\x09\x09setLabel: self printString;\x0a\x09\x09setVariables: variables",
+messageSends: ["new", "at:put:", "home", "receiver", "selector", "temps", "do:", "instanceVariableNames", "class", "instVarAt:", "setLabel:", "printString", "setVariables:"],
 referencedClasses: ["Dictionary"]
 }),
-smalltalk.Set);
+smalltalk.MethodContext);
 
 });

+ 2 - 1
st/Helios-Workspace.st

@@ -82,7 +82,8 @@ currentLineOrSelection
 
 editorOptions
 	^ #{
-		'theme' -> 'amber'.
+		'theme' -> 'default'.
+		'mode' -> 'text/x-stsrc'.
         'lineNumbers' -> true.
         'enterMode' -> 'flat'.
         'indentWithTabs' -> true.

+ 18 - 18
st/IDE.st

@@ -210,7 +210,7 @@ selection
 
 setEditorOn: aTextarea
 	<self['@editor'] = CodeMirror.fromTextArea(aTextarea, {
-		theme: 'amber',
+		theme: 'default',
 				lineNumbers: true,
 				enterMode: 'flat',
 				indentWithTabs: true,
@@ -2342,47 +2342,47 @@ inspectOn: anInspector
 	anInspector setLabel: label
 ! !
 
-!MethodContext methodsFor: '*IDE'!
+!AssociativeCollection methodsFor: '*IDE'!
 
 inspectOn: anInspector
 	| variables |
 	variables := Dictionary new.
 	variables at: '#self' put: self.
-	variables at: '#home' put: self home.
-	variables at: '#receiver' put: self receiver.
-	variables at: '#selector' put: self selector.
-	variables at: '#temps' put: self temps.
-	self class instanceVariableNames do: [ :each |
-		variables at: each put: (self instVarAt: each) ].
+	variables at: '#keys' put: self keys.
+	self keysAndValuesDo: [ :key :value |
+		variables at: key put: value ].
 	anInspector
 		setLabel: self printString;
 		setVariables: variables
 ! !
 
-!AssociativeCollection methodsFor: '*IDE'!
+!Set methodsFor: '*IDE'!
 
 inspectOn: anInspector
-	| variables |
+	| variables i |
 	variables := Dictionary new.
 	variables at: '#self' put: self.
-	variables at: '#keys' put: self keys.
-	self keysAndValuesDo: [ :key :value |
-		variables at: key put: value ].
+	i := 1.
+	self do: [ :each |
+		variables at: i put: each.
+		i := i + 1 ].
 	anInspector
 		setLabel: self printString;
 		setVariables: variables
 ! !
 
-!Set methodsFor: '*IDE'!
+!MethodContext methodsFor: '*IDE'!
 
 inspectOn: anInspector
 	| variables |
 	variables := Dictionary new.
 	variables at: '#self' put: self.
-	i := 1.
-	self do: [ :each |
-		variables at: i put: each.
-		i := i + 1 ].
+	variables at: '#home' put: self home.
+	variables at: '#receiver' put: self receiver.
+	variables at: '#selector' put: self selector.
+	variables at: '#temps' put: self temps.
+	self class instanceVariableNames do: [ :each |
+		variables at: each put: (self instVarAt: each) ].
 	anInspector
 		setLabel: self printString;
 		setVariables: variables

+ 0 - 21
support/CodeMirror/amber.css

@@ -1,21 +0,0 @@
-.cm-s-amber span.cm-keyword {color: #7F0000; font-weight: bold;}
-.cm-s-amber span.cm-className {font-weight: bold;}
-.cm-s-amber span.cm-assignment {font-weight: bold;}
-.cm-s-amber span.cm-return {font-weight: bold;}
-.cm-s-amber span.cm-atom {color: #219;}
-.cm-s-amber span.cm-number {color: #7F0000;}
-.cm-s-amber span.cm-def {color: #00f;}
-.cm-s-amber span.cm-variable {color: grey;}
-.cm-s-amber span.cm-variable-2 {color: #05a;}
-.cm-s-amber span.cm-variable-3 {color: #0a5;}
-.cm-s-amber span.cm-property {color: black;}
-.cm-s-amber span.cm-operator {color: #00007F;}
-.cm-s-amber span.cm-comment {color: #007F00;}
-.cm-s-amber span.cm-string {color: #7F007F;}
-.cm-s-amber span.cm-meta {color: #555;}
-.cm-s-amber span.cm-error {color: #f00;}
-.cm-s-amber span.cm-qualifier {color: #555;}
-.cm-s-amber span.cm-builtin {color: #30a;}
-.cm-s-amber span.cm-bracket {color: #cc7;}
-.cm-s-amber span.cm-tag {color: #170;}
-.cm-s-amber span.cm-attribute {color: #00c;}

+ 0 - 139
support/CodeMirror/smalltalk.js

@@ -1,139 +0,0 @@
-CodeMirror.defineMode('smalltalk', function(config, modeConfig) {
-
-	var specialChars = /[+\-/\\*~<>=@%|&?!.:;^]/;
-	var keywords = /true|false|nil|self|super|thisContext/;
-
-	var Context = function(tokenizer, parent) {
-		this.next = tokenizer;
-		this.parent = parent;
-	};
-
-	var Token = function(name, context, eos) {
-		this.name = name;
-		this.context = context;
-		this.eos = eos;
-	};
-
-	var State = function() {
-		this.context = new Context(next, null);
-		this.expectVariable = true;
-		this.indentation = 0;
-		this.userIndentationDelta = 0;
-	};
-
-	State.prototype.userIndent = function(indentation) {
-		this.userIndentationDelta = indentation > 0 ? (indentation / config.indentUnit - this.indentation) : 0;
-	};
-
-	var next = function(stream, context, state) {
-		var token = new Token(null, context, false);
-		var aChar = stream.next();
-
-		if (aChar === '"') {
-			token = nextComment(stream, new Context(nextComment, context));
-
-		} else if (aChar === '\'') {
-			token = nextString(stream, new Context(nextString, context));
-
-		} else if (aChar === '#') {
-			stream.eatWhile(/[^ .]/);
-			token.name = 'string-2';
-
-		} else if (aChar === '$') {
-			stream.eatWhile(/[^ ]/);
-			token.name = 'string-2';
-
-		} else if (aChar === '|' && state.expectVariable) {
-			token.context = new Context(nextTemporaries, context);
-
-		} else if (/[\[\]{}()]/.test(aChar)) {
-			token.name = 'bracket';
-			token.eos = /[\[{(]/.test(aChar);
-
-			if (aChar === '[') {
-				state.indentation++;
-			} else if (aChar === ']') {
-				state.indentation = Math.max(0, state.indentation - 1);
-			}
-
-		} else if (specialChars.test(aChar)) {
-			stream.eatWhile(specialChars);
-			token.name = 'operator';
-			token.eos = aChar !== ';'; // ; cascaded message expression
-
-		} else if (/\d/.test(aChar)) {
-			stream.eatWhile(/[\w\d]/);
-			token.name = 'number';
-
-		} else if (/[\w_]/.test(aChar)) {
-			stream.eatWhile(/[\w\d_]/);
-			token.name = state.expectVariable ? (keywords.test(stream.current()) ? 'keyword' : 'variable') : null;
-
-		} else {
-			token.eos = state.expectVariable;
-		}
-
-		return token;
-	};
-
-	var nextComment = function(stream, context) {
-		stream.eatWhile(/[^"]/);
-		return new Token('comment', stream.eat('"') ? context.parent : context, true);
-	};
-
-	var nextString = function(stream, context) {
-		stream.eatWhile(/[^']/);
-		return new Token('string', stream.eat('\'') ? context.parent : context, false);
-	};
-
-	var nextTemporaries = function(stream, context, state) {
-		var token = new Token(null, context, false);
-		var aChar = stream.next();
-
-		if (aChar === '|') {
-			token.context = context.parent;
-			token.eos = true;
-
-		} else {
-			stream.eatWhile(/[^|]/);
-			token.name = 'variable';
-		}
-
-		return token;
-	};
-
-	return {
-		startState: function() {
-			return new State;
-		},
-
-		token: function(stream, state) {
-			state.userIndent(stream.indentation());
-
-			if (stream.eatSpace()) {
-				return null;
-			}
-
-			var token = state.context.next(stream, state.context, state);
-			state.context = token.context;
-			state.expectVariable = token.eos;
-
-			state.lastToken = token;
-			return token.name;
-		},
-
-		blankLine: function(state) {
-			state.userIndent(0);
-		},
-
-		indent: function(state, textAfter) {
-			var i = state.context.next === next && textAfter && textAfter.charAt(0) === ']' ? -1 : state.userIndentationDelta;
-			return (state.indentation + i) * config.indentUnit;
-		},
-
-		electricChars: ']'
-	};
-
-});
-
-CodeMirror.defineMIME('text/x-stsrc', {name: 'smalltalk'});

+ 9 - 0
support/codemirror.js

@@ -0,0 +1,9 @@
+define(["amber_lib/codemirror/lib/codemirror"], function () {
+	define([
+		'amber_lib/codemirror/mode/smalltalk/smalltalk',
+		'amber_lib/codemirror/addon/hint/show-hint',
+		'css!amber_lib/codemirror/theme/ambiance',
+		'css!amber_lib/codemirror/lib/codemirror',
+		'css!amber_lib/codemirror/addon/hint/show-hint'
+	]);
+});

+ 1 - 7
support/devel.js

@@ -4,13 +4,7 @@ define([
 	'./lang',
 	'jquery-ui',
 	'amber_lib/jquery-tabby/jquery.textarea',
-	'amber_lib/codemirror/lib/codemirror',
-	'amber_inc/CodeMirror/smalltalk',
-	'amber_lib/codemirror/addon/hint/show-hint',
-	'css!amber_lib/codemirror/theme/ambiance',
-	'css!amber_lib/codemirror/lib/codemirror',
-	'css!amber_lib/codemirror/addon/hint/show-hint',
-	'css!amber_inc/CodeMirror/amber',
+	'./codemirror',
 	'css!amber_css/amber',
 	'amber_core/IDE',
 	'amber_core/Examples',

+ 1 - 7
support/helios.js

@@ -6,13 +6,7 @@ define([
 	'amber_lib/jquery-tabby/jquery.textarea',
 	'amber_lib/bootstrap/js/bootstrap',
 	'amber_lib/showdown/compressed/showdown',
-	'amber_lib/codemirror/lib/codemirror',
-	'amber_inc/CodeMirror/smalltalk',
-	'amber_lib/codemirror/addon/hint/show-hint',
-	'css!amber_lib/codemirror/theme/ambiance',
-	'css!amber_lib/codemirror/lib/codemirror',
-	'css!amber_lib/codemirror/addon/hint/show-hint',
-	'css!amber_inc/CodeMirror/amber',
+	'./codemirror',
 	'css!amber_css/helios',
 	'amber_core/IDE',
 	'amber_core/Examples',