1
0
mirror of https://github.com/laurent22/joplin.git synced 2024-12-24 10:27:10 +02:00

Mobile: Fix cmd-i no longer italicizes text (#10604)

This commit is contained in:
Henry Heino 2024-06-18 02:02:01 -07:00 committed by GitHub
parent affa620983
commit 1fb392ff4e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 64 additions and 35 deletions

View File

@ -61,6 +61,33 @@ describe('CodeMirrorControl', () => {
expect(command).toHaveBeenCalledTimes(1); expect(command).toHaveBeenCalledTimes(1);
}); });
it.each([
{
before: 'Test',
selection: EditorSelection.range(0, 4),
shortcut: { key: 'i', code: 'KeyI', ctrlKey: true },
expected: '*Test*',
},
{
before: 'Test',
selection: EditorSelection.range(0, 4),
shortcut: { key: 'b', code: 'KeyB', ctrlKey: true },
expected: '**Test**',
},
{
before: 'Testing',
selection: EditorSelection.range(0, 4),
shortcut: { key: 'b', code: 'KeyB', ctrlKey: true },
expected: '**Test**ing',
},
])('markdown keyboard shortcuts should work (case %#)', ({ before, selection, shortcut, expected }) => {
const control = createEditorControl(before);
control.select(selection.anchor, selection.head);
pressReleaseKey(control.editor, shortcut);
expect(control.getValue()).toBe(expected);
});
it('should support overriding default keybindings', () => { it('should support overriding default keybindings', () => {
const control = createEditorControl('test'); const control = createEditorControl('test');
control.execCommand(EditorCommandType.SelectAll); control.execCommand(EditorCommandType.SelectAll);

View File

@ -63,7 +63,7 @@ const configFromSettings = (settings: EditorSettings) => {
} }
if (!settings.ignoreModifiers) { if (!settings.ignoreModifiers) {
extensions.push(keymap.of(defaultKeymap)); extensions.push(Prec.low(keymap.of(defaultKeymap)));
} }
return extensions; return extensions;

View File

@ -181,11 +181,47 @@ const createEditor = (
const historyCompartment = new Compartment(); const historyCompartment = new Compartment();
const dynamicConfig = new Compartment(); const dynamicConfig = new Compartment();
// Give the default keymap low precedence so that it is overridden
// by extensions with default precedence.
const keymapConfig = Prec.low(keymap.of([
// Custom mod-f binding: Toggle the external dialog implementation
// (don't show/hide the Panel dialog).
keyCommand('Mod-f', (_: EditorView) => {
if (searchVisible) {
hideSearchDialog();
} else {
showSearchDialog();
}
return true;
}),
// Markdown formatting keyboard shortcuts
keyCommand('Mod-b', toggleBolded),
keyCommand('Mod-i', toggleItalicized),
keyCommand('Mod-$', toggleMath),
keyCommand('Mod-`', toggleCode),
keyCommand('Mod-[', decreaseIndent),
keyCommand('Mod-]', increaseIndent),
keyCommand('Mod-k', (_: EditorView) => {
notifyLinkEditRequest();
return true;
}),
keyCommand('Tab', insertOrIncreaseIndent, true),
keyCommand('Shift-Tab', decreaseIndent, true),
keyCommand('Mod-Enter', (_: EditorView) => {
insertLineAfter(_);
return true;
}, true),
...standardKeymap, ...historyKeymap, ...searchKeymap,
]));
const editor = new EditorView({ const editor = new EditorView({
state: EditorState.create({ state: EditorState.create({
// See https://github.com/codemirror/basic-setup/blob/main/src/codemirror.ts // See https://github.com/codemirror/basic-setup/blob/main/src/codemirror.ts
// for a sample configuration. // for a sample configuration.
extensions: [ extensions: [
keymapConfig,
dynamicConfig.of(configFromSettings(props.settings)), dynamicConfig.of(configFromSettings(props.settings)),
historyCompartment.of(history()), historyCompartment.of(history()),
@ -238,40 +274,6 @@ const createEditor = (
notifySelectionChange(viewUpdate); notifySelectionChange(viewUpdate);
notifySelectionFormattingChange(viewUpdate); notifySelectionFormattingChange(viewUpdate);
}), }),
// Give the default keymap low precedence so that it is overridden
// by extensions with default precedence.
Prec.low(keymap.of([
// Custom mod-f binding: Toggle the external dialog implementation
// (don't show/hide the Panel dialog).
keyCommand('Mod-f', (_: EditorView) => {
if (searchVisible) {
hideSearchDialog();
} else {
showSearchDialog();
}
return true;
}),
// Markdown formatting keyboard shortcuts
keyCommand('Mod-b', toggleBolded),
keyCommand('Mod-i', toggleItalicized),
keyCommand('Mod-$', toggleMath),
keyCommand('Mod-`', toggleCode),
keyCommand('Mod-[', decreaseIndent),
keyCommand('Mod-]', increaseIndent),
keyCommand('Mod-k', (_: EditorView) => {
notifyLinkEditRequest();
return true;
}),
keyCommand('Tab', insertOrIncreaseIndent, true),
keyCommand('Shift-Tab', decreaseIndent, true),
keyCommand('Mod-Enter', (_: EditorView) => {
insertLineAfter(_);
return true;
}, true),
...standardKeymap, ...historyKeymap, ...searchKeymap,
])),
], ],
doc: initialText, doc: initialText,
}), }),