mirror of
https://github.com/naturalcrit/homebrewery.git
synced 2026-05-07 18:48:39 +00:00
repair shortcuts to put the cursor at the center if there is no selection
This commit is contained in:
@@ -20,72 +20,142 @@ const indentLess = (view)=>{
|
||||
const makeBold = (view)=>{
|
||||
const { from, to } = view.state.selection.main;
|
||||
const selected = view.state.doc.sliceString(from, to);
|
||||
const text = selected.startsWith('**') && selected.endsWith('**')
|
||||
? selected.slice(2, -2)
|
||||
: `**${selected}**`;
|
||||
|
||||
let text, cursor;
|
||||
|
||||
if(from === to) {
|
||||
text = '****';
|
||||
cursor = from + 2;
|
||||
} else if(selected.startsWith('**') && selected.endsWith('**')) {
|
||||
text = selected.slice(2, -2);
|
||||
cursor = from + text.length;
|
||||
} else {
|
||||
text = `**${selected}**`;
|
||||
cursor = from + text.length;
|
||||
}
|
||||
|
||||
view.dispatch({
|
||||
changes : { from, to, insert: text },
|
||||
selection : { anchor: from + text.length },
|
||||
selection : { anchor: cursor },
|
||||
});
|
||||
|
||||
return true;
|
||||
};
|
||||
|
||||
const makeItalic = (view)=>{
|
||||
const { from, to } = view.state.selection.main;
|
||||
const selected = view.state.doc.sliceString(from, to);
|
||||
const text = selected.startsWith('*') && selected.endsWith('*')
|
||||
? selected.slice(1, -1)
|
||||
: `*${selected}*`;
|
||||
|
||||
let text, cursor;
|
||||
|
||||
if(from === to) {
|
||||
text = '**';
|
||||
cursor = from + 1;
|
||||
} else if(selected.startsWith('*') && selected.endsWith('*')) {
|
||||
text = selected.slice(2, -2);
|
||||
cursor = from + text.length;
|
||||
} else {
|
||||
text = `*${selected}*`;
|
||||
cursor = from + text.length;
|
||||
}
|
||||
|
||||
view.dispatch({
|
||||
changes : { from, to, insert: text },
|
||||
selection : { anchor: from + text.length },
|
||||
selection : { anchor: cursor },
|
||||
});
|
||||
|
||||
return true;
|
||||
};
|
||||
|
||||
const makeUnderline = (view)=>{
|
||||
const { from, to } = view.state.selection.main;
|
||||
const selected = view.state.doc.sliceString(from, to);
|
||||
const text = selected.startsWith('<u>') && selected.endsWith('</u>')
|
||||
? selected.slice(3, -4)
|
||||
: `<u>${selected}</u>`;
|
||||
|
||||
let text, cursor;
|
||||
|
||||
if(from === to) {
|
||||
text = '<u></u>';
|
||||
cursor = from + 3;
|
||||
} else if(selected.startsWith('<u>') && selected.endsWith('</u>')) {
|
||||
text = selected.slice(3, -4);
|
||||
cursor = from + text.length;
|
||||
} else {
|
||||
text = `<u>${selected}</u>`;
|
||||
cursor = from + text.length;
|
||||
}
|
||||
|
||||
view.dispatch({
|
||||
changes : { from, to, insert: text },
|
||||
selection : { anchor: from + text.length },
|
||||
selection : { anchor: cursor },
|
||||
});
|
||||
|
||||
return true;
|
||||
};
|
||||
|
||||
const makeSuper = (view)=>{
|
||||
const { from, to } = view.state.selection.main;
|
||||
const selected = view.state.doc.sliceString(from, to);
|
||||
const text = selected.startsWith('^') && selected.endsWith('^')
|
||||
? selected.slice(1, -1)
|
||||
: `^${selected}^`;
|
||||
|
||||
let text, cursor;
|
||||
|
||||
if(from === to) {
|
||||
text = '^^';
|
||||
cursor = from + 1;
|
||||
} else if(selected.startsWith('^') && selected.endsWith('^')) {
|
||||
text = selected.slice(1, -1);
|
||||
cursor = from + text.length;
|
||||
} else {
|
||||
text = `^${selected}^`;
|
||||
cursor = from + text.length;
|
||||
}
|
||||
|
||||
view.dispatch({
|
||||
changes : { from, to, insert: text },
|
||||
selection : { anchor: from + text.length },
|
||||
selection : { anchor: cursor },
|
||||
});
|
||||
|
||||
return true;
|
||||
};
|
||||
|
||||
const makeSub = (view)=>{
|
||||
const { from, to } = view.state.selection.main;
|
||||
const selected = view.state.doc.sliceString(from, to);
|
||||
const text = selected.startsWith('^^') && selected.endsWith('^^')
|
||||
? selected.slice(2, -2)
|
||||
: `^^${selected}^^`;
|
||||
|
||||
let text, cursor;
|
||||
|
||||
if(from === to) {
|
||||
text = '^^^^';
|
||||
cursor = from + 2;
|
||||
} else if(selected.startsWith('^^') && selected.endsWith('^^')) {
|
||||
text = selected.slice(2, -2);
|
||||
cursor = from + text.length;
|
||||
} else {
|
||||
text = `^^${selected}^^`;
|
||||
cursor = from + text.length;
|
||||
}
|
||||
|
||||
view.dispatch({
|
||||
changes : { from, to, insert: text },
|
||||
selection : { anchor: from + text.length },
|
||||
selection : { anchor: cursor },
|
||||
});
|
||||
|
||||
return true;
|
||||
};
|
||||
|
||||
const makeNbsp = (view)=>{
|
||||
const { from, to } = view.state.selection.main;
|
||||
view.dispatch({ changes: { from, to, insert: ' ' } });
|
||||
return true;
|
||||
const makeNbsp = (view) => {
|
||||
const { from } = view.state.selection.main;
|
||||
|
||||
const prev2 = from >= 2
|
||||
? view.state.doc.sliceString(from - 2, from)
|
||||
: '';
|
||||
|
||||
const insert = (prev2 === ':>' || prev2 === '>>') ? '>' : ':>';
|
||||
|
||||
view.dispatch({
|
||||
changes: { from, to: from, insert },
|
||||
selection: { anchor: from + insert.length },
|
||||
});
|
||||
|
||||
return true;
|
||||
};
|
||||
|
||||
const makeSpace = (view)=>{
|
||||
@@ -193,7 +263,7 @@ export const generalKeymap = Prec.high(keymap.of([
|
||||
{ key: 'Mod-z', run: undo }, //i think it may be unnecessary
|
||||
{ key: 'Mod-Shift-z', run: redo },
|
||||
{ key: 'Mod-y', run: redo },
|
||||
{ key: 'Mod-d', run: deleteLine},
|
||||
{ key: 'Mod-d', run: deleteLine },
|
||||
]));
|
||||
|
||||
export const markdownKeymap = Prec.highest(keymap.of([
|
||||
|
||||
Reference in New Issue
Block a user