@cartamd/plugin-slash
Version:
This plugin adds support for **Slash** commands. Install it using:
82 lines (81 loc) • 2.26 kB
JavaScript
function insertLine(input, string) {
const line = input.getLine();
if (line.value !== '') {
input.insertAt(line.end, `\n${string}`);
const newPos = line.end + string.length + 1;
input.textarea.selectionStart = newPos;
input.textarea.selectionEnd = newPos;
}
else {
input.insertAt(line.end, `${string}`);
const newPos = line.end + string.length;
input.textarea.selectionStart = newPos;
input.textarea.selectionEnd = newPos;
}
}
/**
* Default slash snippets.
*/
export const defaultSnippets = [
{
id: 'bigHeading',
title: 'Heading 1',
description: 'Big section heading',
group: 'Basic',
action: (input) => insertLine(input, '# ')
},
{
id: 'mediumHeading',
title: 'Heading 2',
description: 'Medium section heading',
group: 'Basic',
action: (input) => insertLine(input, '## ')
},
{
id: 'smallHeading',
title: 'Heading 3',
description: 'Small section heading',
group: 'Basic',
action: (input) => insertLine(input, '### ')
},
{
id: 'numberedList',
title: 'Numbered List',
description: 'Create a list with numbering',
group: 'Basic',
action: (input) => insertLine(input, '1. ')
},
{
id: 'bulletedList',
title: 'Bulleted List',
description: 'Create a bulleted list',
group: 'Basic',
action: (input) => insertLine(input, '- ')
},
{
id: 'taskList',
title: 'Task List',
description: 'Create a task list',
group: 'Basic',
action: (input) => insertLine(input, '- [ ] ')
},
{
id: 'quote',
title: 'Quote',
description: 'Create a quote',
group: 'Basic',
action: (input) => insertLine(input, '> ')
},
{
id: 'code',
title: 'Code',
description: 'Add a code block',
group: 'Basic',
action: (input) => {
insertLine(input, '```\n');
const pos = input.textarea.selectionStart;
insertLine(input, '\n```');
input.textarea.setSelectionRange(pos, pos);
}
}
];