Skip to content

Commit 069865e

Browse files
hpohlmeyerlukemelia
authored andcommitted
Split shortcuts by platform and name them
1 parent 942bc72 commit 069865e

File tree

2 files changed

+102
-87
lines changed

2 files changed

+102
-87
lines changed

src/js/editor/key-commands.ts

Lines changed: 57 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -46,121 +46,130 @@ function deleteToEndOfSection(editor: Editor) {
4646
})
4747
}
4848

49-
export const DEFAULT_KEY_COMMANDS: KeyCommand[] = [
49+
const MAC_KEY_COMMANDS: KeyCommand[] = [
5050
{
5151
str: 'META+B',
52+
name: 'default-bold',
5253
run(editor) {
5354
editor.toggleMarkup('strong')
5455
},
5556
},
5657
{
57-
str: 'CTRL+B',
58+
str: 'META+I',
59+
name: 'default-italic',
5860
run(editor) {
59-
editor.toggleMarkup('strong')
61+
editor.toggleMarkup('em')
6062
},
6163
},
6264
{
63-
str: 'META+I',
65+
str: 'META+U',
66+
name: 'default-underline',
6467
run(editor) {
65-
editor.toggleMarkup('em')
68+
editor.toggleMarkup('u')
6669
},
6770
},
6871
{
69-
str: 'CTRL+I',
72+
str: 'META+K',
73+
name: 'default-link',
7074
run(editor) {
71-
editor.toggleMarkup('em')
75+
return toggleLink(editor)
7276
},
7377
},
7478
{
75-
str: 'META+U',
79+
str: 'META+A',
80+
name: 'default-select-all',
7681
run(editor) {
77-
editor.toggleMarkup('u')
82+
selectAll(editor)
7883
},
7984
},
8085
{
81-
str: 'CTRL+U',
86+
str: 'CTRL+A',
87+
name: 'default-goto-line-start',
8288
run(editor) {
83-
editor.toggleMarkup('u')
89+
gotoStartOfLine(editor)
8490
},
8591
},
8692
{
87-
str: 'CTRL+K',
93+
str: 'CTRL+E',
94+
name: 'default-goto-line-end',
8895
run(editor) {
89-
if (Browser.isMac()) {
90-
return deleteToEndOfSection(editor)
91-
} else if (Browser.isWin()) {
92-
return toggleLink(editor)
93-
}
96+
gotoEndOfLine(editor)
9497
},
9598
},
9699
{
97-
str: 'CTRL+A',
100+
str: 'META+Z',
101+
name: 'default-undo',
98102
run(editor) {
99-
if (Browser.isMac()) {
100-
gotoStartOfLine(editor)
101-
} else {
102-
selectAll(editor)
103-
}
103+
editor.run(postEditor => postEditor.undoLastChange())
104104
},
105105
},
106106
{
107-
str: 'META+A',
107+
str: 'META+SHIFT+Z',
108+
name: 'default-redo',
108109
run(editor) {
109-
if (Browser.isMac()) {
110-
selectAll(editor)
111-
}
110+
editor.run(postEditor => postEditor.redoLastChange())
112111
},
113112
},
114113
{
115-
str: 'CTRL+E',
114+
str: 'CTRL+K',
115+
name: 'default-delete-line',
116116
run(editor) {
117-
if (Browser.isMac()) {
118-
gotoEndOfLine(editor)
119-
}
117+
return deleteToEndOfSection(editor)
120118
},
121119
},
120+
]
121+
const WINDOWS_ETC_KEY_COMMANDS: KeyCommand[] = [
122122
{
123-
str: 'META+K',
123+
str: 'CTRL+B',
124+
name: 'default-bold',
124125
run(editor) {
125-
return toggleLink(editor)
126+
editor.toggleMarkup('strong')
126127
},
127128
},
128129
{
129-
str: 'META+Z',
130+
str: 'CTRL+I',
131+
name: 'default-italic',
130132
run(editor) {
131-
editor.run(postEditor => {
132-
postEditor.undoLastChange()
133-
})
133+
editor.toggleMarkup('em')
134134
},
135135
},
136136
{
137-
str: 'META+SHIFT+Z',
137+
str: 'CTRL+U',
138+
name: 'default-underline',
138139
run(editor) {
139-
editor.run(postEditor => {
140-
postEditor.redoLastChange()
141-
})
140+
editor.toggleMarkup('u')
141+
},
142+
},
143+
{
144+
str: 'CTRL+K',
145+
name: 'default-link',
146+
run(editor) {
147+
return toggleLink(editor)
148+
},
149+
},
150+
{
151+
str: 'CTRL+A',
152+
name: 'default-select-all',
153+
run(editor) {
154+
selectAll(editor)
142155
},
143156
},
144157
{
145158
str: 'CTRL+Z',
159+
name: 'default-undo',
146160
run(editor) {
147-
if (Browser.isMac()) {
148-
return false
149-
}
150161
editor.run(postEditor => postEditor.undoLastChange())
151162
},
152163
},
153164
{
154165
str: 'CTRL+SHIFT+Z',
166+
name: 'default-redo',
155167
run(editor) {
156-
if (Browser.isMac()) {
157-
return false
158-
}
159168
editor.run(postEditor => postEditor.redoLastChange())
160169
},
161170
},
162171
]
163-
172+
export const DEFAULT_KEY_COMMANDS = (Browser.isMac() && MAC_KEY_COMMANDS) || WINDOWS_ETC_KEY_COMMANDS
164173
function modifierNamesToMask(modiferNames: string[]) {
165174
let defaultVal = 0
166175
return reduce(

tests/acceptance/editor-key-commands-test.js

Lines changed: 45 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -122,47 +122,53 @@ function testStatefulCommand({modifierName, key, command, markupName}) {
122122
});
123123
}
124124

125-
testStatefulCommand({
126-
modifierName: 'META',
127-
key: 'B',
128-
command: 'command-B',
129-
markupName: 'strong'
130-
});
131-
132-
testStatefulCommand({
133-
modifierName: 'CTRL',
134-
key: 'B',
135-
command: 'ctrl-B',
136-
markupName: 'strong'
137-
});
138-
139-
testStatefulCommand({
140-
modifierName: 'META',
141-
key: 'I',
142-
command: 'command-I',
143-
markupName: 'em'
144-
});
145-
146-
testStatefulCommand({
147-
modifierName: 'CTRL',
148-
key: 'I',
149-
command: 'ctrl-I',
150-
markupName: 'em'
151-
});
125+
if (Browser.isMac()) {
126+
testStatefulCommand({
127+
modifierName: 'META',
128+
key: 'B',
129+
command: 'command-B',
130+
markupName: 'strong'
131+
});
132+
} else {
133+
testStatefulCommand({
134+
modifierName: 'CTRL',
135+
key: 'B',
136+
command: 'ctrl-B',
137+
markupName: 'strong'
138+
});
139+
}
152140

153-
testStatefulCommand({
154-
modifierName: 'META',
155-
key: 'U',
156-
command: 'command-U',
157-
markupName: 'u'
158-
});
141+
if (Browser.isMac()) {
142+
testStatefulCommand({
143+
modifierName: 'META',
144+
key: 'I',
145+
command: 'command-I',
146+
markupName: 'em'
147+
});
148+
} else {
149+
testStatefulCommand({
150+
modifierName: 'CTRL',
151+
key: 'I',
152+
command: 'ctrl-I',
153+
markupName: 'em'
154+
});
155+
}
159156

160-
testStatefulCommand({
161-
modifierName: 'CTRL',
162-
key: 'U',
163-
command: 'ctrl-U',
164-
markupName: 'u'
165-
});
157+
if (Browser.isMac()) {
158+
testStatefulCommand({
159+
modifierName: 'META',
160+
key: 'U',
161+
command: 'command-U',
162+
markupName: 'u'
163+
});
164+
} else {
165+
testStatefulCommand({
166+
modifierName: 'CTRL',
167+
key: 'U',
168+
command: 'ctrl-U',
169+
markupName: 'u'
170+
});
171+
}
166172

167173
if (Browser.isMac()) {
168174
test(`[Mac] ctrl-k clears to the end of a line`, (assert) => {

0 commit comments

Comments
 (0)