Skip to content

Commit 9688277

Browse files
committed
refactor atom editor actions
1 parent 2bd94bf commit 9688277

File tree

25 files changed

+268
-248
lines changed

25 files changed

+268
-248
lines changed

lib/atom/actions.js

Lines changed: 0 additions & 39 deletions
This file was deleted.

lib/atom/actions/console.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
"use strict";
2+
var consoleHasOpened = false;
3+
function toggleDevTools() {
4+
if (!consoleHasOpened) {
5+
consoleHasOpened = true;
6+
console.log('Atom-CodeRoad: runs on save');
7+
}
8+
atom.toggleDevTools();
9+
}
10+
exports.toggleDevTools = toggleDevTools;
11+
function openDevTools() {
12+
atom.openDevTools();
13+
consoleHasOpened = true;
14+
}
15+
exports.openDevTools = openDevTools;

lib/atom/actions/editor.js

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
"use strict";
2+
function getEditor() {
3+
return new Promise(function (resolve, reject) {
4+
var getEditorCount = 0;
5+
var editor = atom.workspace.getActiveTextEditor();
6+
while (!editor) {
7+
getEditorCount += 1;
8+
setTimeout(function () {
9+
editor = atom.workspace.getActiveTextEditor();
10+
});
11+
if (getEditorCount > 999) {
12+
console.log('Failed to find active editor');
13+
reject(null);
14+
}
15+
}
16+
resolve(editor);
17+
});
18+
}
19+
exports.getEditor = getEditor;

lib/atom/actions/file.js

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
"use strict";
2+
var fs_1 = require('fs');
3+
var exists_1 = require('../../services/exists');
4+
var editor_1 = require('./editor');
5+
function openFolder() {
6+
atom.open();
7+
}
8+
exports.openFolder = openFolder;
9+
function save() {
10+
editor_1.getEditor().then(function (editor) { return editor.save(); });
11+
}
12+
exports.save = save;
13+
function open(filePath, options) {
14+
if (options === void 0) { options = {}; }
15+
return new Promise(function (resolve, reject) {
16+
if (exists_1.fileExists(filePath)) {
17+
fs_1.unlink(filePath);
18+
}
19+
resolve(atom.workspace.open(filePath, options));
20+
});
21+
}
22+
exports.open = open;

lib/atom/actions/quit.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
"use strict";
2+
function quit() {
3+
}
4+
exports.quit = quit;

lib/atom/actions/tabs.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
"use strict";
2+
function closeAllPanels() {
3+
var editors = atom.workspace.getTextEditors();
4+
editors.forEach(function (editor) {
5+
editor.destroy();
6+
});
7+
}
8+
exports.closeAllPanels = closeAllPanels;

lib/atom/actions/terminal.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
"use strict";
2+
function openTerminal() {
3+
if (atom.packages.isPackageActive('terminal-plus')) {
4+
if (!document.getElementsByClassName('xterm')[0]) {
5+
atom.commands.dispatch(document.getElementsByTagName('atom-workspace')[0], 'terminal-plus:toggle');
6+
}
7+
return true;
8+
}
9+
return false;
10+
}
11+
exports.openTerminal = openTerminal;

lib/atom/actions/write.js

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
"use strict";
2+
var editor_1 = require('./editor');
3+
function write(action, text, options) {
4+
if (options === void 0) { options = {}; }
5+
return editor_1.getEditor().then(function (editor) {
6+
editor.moveToBottom();
7+
editor[(action + "Text")](text, options);
8+
editor.insertNewline();
9+
editor.moveToBottom();
10+
setCursorPosition(editor);
11+
editor.save();
12+
});
13+
}
14+
function set(text) {
15+
return write('set', text);
16+
}
17+
exports.set = set;
18+
function insert(text, options) {
19+
if (options === void 0) { options = {}; }
20+
options = Object.assign(options, {
21+
autoIndent: true,
22+
});
23+
return write('insert', text, options);
24+
}
25+
exports.insert = insert;
26+
var cursor = /::>/g;
27+
function setCursorPosition(editor) {
28+
return editor.scan(cursor, function (scanned) {
29+
editor.setCursorScreenPosition(scanned.range.start);
30+
scanned.replace('');
31+
scanned.stop();
32+
});
33+
}

lib/atom/editor.js

Lines changed: 16 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -1,75 +1,17 @@
11
"use strict";
2-
var fs_1 = require('fs');
3-
var exists_1 = require('../services/exists');
4-
var getEditorCount = 0;
5-
function save() {
6-
var editor = findEditor();
7-
editor.save();
8-
}
9-
exports.save = save;
10-
function findEditor() {
11-
var editor = atom.workspace.getActiveTextEditor();
12-
var max = 1000;
13-
if (!editor) {
14-
getEditorCount += 1;
15-
setTimeout(function () {
16-
return findEditor();
17-
}, 10);
18-
}
19-
else if (getEditorCount > max) {
20-
console.log('Failed to find active editor');
21-
return null;
22-
}
23-
else {
24-
getEditorCount = 0;
25-
return editor;
26-
}
27-
}
28-
exports.findEditor = findEditor;
29-
function getEditor() {
30-
return new Promise(function (resolve, reject) {
31-
resolve(findEditor());
32-
});
33-
}
34-
exports.getEditor = getEditor;
35-
function open(filePath, options) {
36-
if (options === void 0) { options = {}; }
37-
if (exists_1.fileExists(filePath)) {
38-
fs_1.unlink(filePath);
39-
}
40-
atom.workspace.open(filePath, options);
41-
}
42-
exports.open = open;
43-
function set(text) {
44-
return getEditor().then(function (editor) {
45-
editor.setText(text);
46-
editor.insertNewline();
47-
editor.moveToBottom();
48-
editor.save();
49-
setCursorPosition(editor);
50-
});
51-
}
52-
exports.set = set;
53-
function insert(text, options) {
54-
if (options === void 0) { options = {}; }
55-
options = Object.assign(options, {
56-
autoIndent: true,
57-
});
58-
return (getEditor().then(function insertWithEditor(editor) {
59-
editor.moveToBottom();
60-
editor.insertText(text, options);
61-
editor.insertNewline();
62-
editor.moveToBottom();
63-
editor.save();
64-
setCursorPosition(editor);
65-
}));
66-
}
67-
exports.insert = insert;
68-
var cursor = /::\s?>/g;
69-
function setCursorPosition(editor) {
70-
editor.scan(cursor, function (scanned) {
71-
editor.setCursorScreenPosition(scanned.range.start);
72-
scanned.replace('');
73-
scanned.stop();
74-
});
75-
}
2+
var file_1 = require('./actions/file');
3+
exports.save = file_1.save;
4+
exports.open = file_1.open;
5+
exports.openFolder = file_1.openFolder;
6+
var write_1 = require('./actions/write');
7+
exports.set = write_1.set;
8+
exports.insert = write_1.insert;
9+
var console_1 = require('./actions/console');
10+
exports.openDevTools = console_1.openDevTools;
11+
exports.toggleDevTools = console_1.toggleDevTools;
12+
var terminal_1 = require('./actions/terminal');
13+
exports.openTerminal = terminal_1.openTerminal;
14+
var tabs_1 = require('./actions/tabs');
15+
exports.closeAllPanels = tabs_1.closeAllPanels;
16+
var quit_1 = require('./actions/quit');
17+
exports.quit = quit_1.quit;
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
"use strict";
22
var React = require('react');
33
var code_1 = require('material-ui/svg-icons/action/code');
4-
var actions_1 = require('../../../../atom/actions');
4+
var editor_1 = require('../../../../atom/editor');
55
var FlatButton_1 = require('material-ui/FlatButton');
6-
exports.ToggleLog = function () { return (React.createElement(FlatButton_1.default, {icon: React.createElement(code_1.default, null), onTouchTap: actions_1.toggleDevTools})); };
6+
exports.ToggleLog = function () { return (React.createElement(FlatButton_1.default, {icon: React.createElement(code_1.default, null), onTouchTap: editor_1.toggleDevTools})); };

lib/reducers/checks/action-setup.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
"use strict";
22
var path_1 = require('path');
33
var editor_1 = require('../../atom/editor');
4-
var actions_1 = require('../../atom/actions');
4+
var editor_2 = require('../../atom/editor');
55
var store_1 = require('../../store');
6-
var actions_2 = require('../../actions');
6+
var actions_1 = require('../../actions');
77
var packageData = "{\n \"name\": \"demo\",\n \"dependencies\": {\n \"coderoad-functional-school\": \"^0.2.1\"\n }\n}";
88
function createPackageJson() {
99
var dir = store_1.default.getState().dir;
@@ -15,11 +15,11 @@ function createPackageJson() {
1515
});
1616
}).then(function () {
1717
editor_1.set(packageData);
18-
store_1.default.dispatch(actions_2.setupVerify());
18+
store_1.default.dispatch(actions_1.setupVerify());
1919
});
2020
}
2121
exports.createPackageJson = createPackageJson;
2222
function openDirectory() {
23-
actions_1.openFolder();
23+
editor_2.openFolder();
2424
}
2525
exports.openDirectory = openDirectory;

lib/reducers/editor-actions/actions.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
"use strict";
22
var editor_1 = require('../../atom/editor');
3-
var actions_1 = require('../../atom/actions');
43
var action_helpers_1 = require('./action-helpers');
54
var Type = {
65
OPEN: 'open',
@@ -45,7 +44,7 @@ function editorActions(actionString) {
4544
case Type.OPEN_CONSOLE:
4645
if (params.length === 0) {
4746
setTimeout(function () {
48-
actions_1.openDevTools();
47+
editor_1.openDevTools();
4948
resolve(true);
5049
});
5150
}

src/atom/actions.ts

Lines changed: 0 additions & 44 deletions
This file was deleted.

src/atom/actions/console.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
let consoleHasOpened = false;
2+
export function toggleDevTools(): void {
3+
if (!consoleHasOpened) {
4+
// clear console on first run
5+
// atom.executeJavaScriptInDevTools(console.clear());
6+
consoleHasOpened = true;
7+
console.log('Atom-CodeRoad: runs on save');
8+
}
9+
atom.toggleDevTools();
10+
}
11+
12+
export function openDevTools(): void {
13+
atom.openDevTools();
14+
consoleHasOpened = true;
15+
}

src/atom/actions/editor.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
export function getEditor(): Promise<AtomCore.IEditor> {
2+
return new Promise((resolve, reject) => {
3+
let getEditorCount = 0;
4+
let editor = atom.workspace.getActiveTextEditor();
5+
while (!editor) {
6+
getEditorCount += 1;
7+
setTimeout(function() {
8+
editor = atom.workspace.getActiveTextEditor();
9+
});
10+
if (getEditorCount > 999) {
11+
console.log('Failed to find active editor');
12+
reject(null);
13+
}
14+
}
15+
resolve(editor);
16+
});
17+
}

0 commit comments

Comments
 (0)