import { CommandRuntime, CommandDeclaration, CommandContext } from '@joplin/lib/services/CommandService'; import { stateUtils } from '@joplin/lib/reducer'; import { _ } from '@joplin/lib/locale'; import Setting from '@joplin/lib/models/Setting'; export const declaration: CommandDeclaration = { name: 'toggleMinimalMarkdownEditor', label: () => _('Toggle minimal Markdown editor'), iconName: 'fa-pen', }; export const runtime = (): CommandRuntime => { return { execute: async (context: CommandContext) => { if (stateUtils.hasNotesBeingSaved(context.state)) return; const minimalMarkdown = !Setting.value('editor.minimalMarkdown'); Setting.setValue('editor.minimalMarkdown', minimalMarkdown); // The minimal editor is a Markdown editor, so make sure code view is on // for it to be visible, and that the legacy editor does not take precedence. if (minimalMarkdown) { Setting.setValue('editor.legacyMarkdown', false); if (!Setting.value('editor.codeView')) { Setting.setValue('editor.codeView', true); context.dispatch({ type: 'EDITOR_CODE_VIEW_CHANGE', value: true }); } } }, enabledCondition: '!notesAreBeingSaved && oneNoteSelected', }; };