diff --git a/HTML/atomicity.coffee b/HTML/atomicity.coffee
new file mode 100644
index 000000000..9a47efa69
--- /dev/null
+++ b/HTML/atomicity.coffee
@@ -0,0 +1,35 @@
+console.log = OSX.NSLog
+
+editor = ace.edit "editor"
+editor.setTheme "ace/theme/twilight"
+JavaScriptMode = require("ace/mode/javascript").Mode
+editor.getSession().setMode new JavaScriptMode()
+
+canon = require 'pilot/canon'
+
+bindKey = (name, shortcut, callback) ->
+ canon.addCommand
+ name: name
+ exec: callback
+ bindKey:
+ win: null
+ mac: shortcut
+ sender: 'editor'
+
+bindKey 'open', 'Command-O', (env, args, request) ->
+ panel = OSX.NSOpenPanel.openPanel
+
+ if panel.runModal isnt OSX.NSFileHandlingPanelOKButton
+ return null
+
+ if file = panel.filenames.lastObject
+ env.editor.getSession().setValue OSX.NSString.stringWithContentsOfFile file
+
+bindKey 'eval', 'Command-R', (env, args, request) ->
+ eval env.editor.getSession().getValue()
+
+bindKey 'togglecomment', 'Command-/', (env) ->
+ env.editor.toggleCommentLines()
+
+bindKey 'fullscreen', 'Command-Return', (env) ->
+ OSX.NSLog 'coming soon'
\ No newline at end of file
diff --git a/HTML/atomicity.js b/HTML/atomicity.js
index 2931a2d71..ea326bce8 100644
--- a/HTML/atomicity.js
+++ b/HTML/atomicity.js
@@ -1,6 +1,39 @@
-window.onload = function() {
- var editor = ace.edit("editor");
+(function() {
+ var JavaScriptMode, bindKey, canon, editor;
+ console.log = OSX.NSLog;
+ editor = ace.edit("editor");
editor.setTheme("ace/theme/twilight");
- var JavaScriptMode = require("ace/mode/javascript").Mode;
+ JavaScriptMode = require("ace/mode/javascript").Mode;
editor.getSession().setMode(new JavaScriptMode());
-};
+ canon = require('pilot/canon');
+ bindKey = function(name, shortcut, callback) {
+ return canon.addCommand({
+ name: name,
+ exec: callback,
+ bindKey: {
+ win: null,
+ mac: shortcut,
+ sender: 'editor'
+ }
+ });
+ };
+ bindKey('open', 'Command-O', function(env, args, request) {
+ var file, panel;
+ panel = OSX.NSOpenPanel.openPanel;
+ if (panel.runModal !== OSX.NSFileHandlingPanelOKButton) {
+ return null;
+ }
+ if (file = panel.filenames.lastObject) {
+ return env.editor.getSession().setValue(OSX.NSString.stringWithContentsOfFile(file));
+ }
+ });
+ bindKey('eval', 'Command-R', function(env, args, request) {
+ return eval(env.editor.getSession().getValue());
+ });
+ bindKey('togglecomment', 'Command-/', function(env) {
+ return env.editor.toggleCommentLines();
+ });
+ bindKey('fullscreen', 'Command-Return', function(env) {
+ return OSX.NSLog('coming soon');
+ });
+}).call(this);