dequoter/frontend/src/cmplugins.js

40 lines
1,007 B
JavaScript
Raw Normal View History

import {EditorSelection} from "@codemirror/state";
import {keymap} from "@codemirror/view";
function spawnNewCursor(view, forward) {
const { state } = view
const selection = state.selection
const newRanges = []
for (let range of selection.ranges) {
// Keep existing cursor
newRanges.push(range)
newRanges.push(view.moveVertically(range, forward, 1));
}
view.dispatch({
selection: EditorSelection.create(newRanges)
})
return true
}
export const multiCursorKeymap = keymap.of([
{
key: "Ctrl-Alt-ArrowDown", // Control+Option+Down on Mac
run: (view) => spawnNewCursor(view, true),
},
{
key: "Ctrl-Alt-ArrowUp", // Control+Option+Down on Mac
run: (view) => spawnNewCursor(view, false),
}
])
export const commandPalette = keymap.of([{
key: "Cmd-p",
run: () => {
let event = new CustomEvent('dq-showcommands');
window.dispatchEvent(event);
return true;
}
}]);