scrapboxのコードを分割する
codeを途中で分割したいことがある
コードをコピペして読んで勉強するときとかに多い
こうじゃなくて
jssomeFunc()
//ここで〜〜を〜〜する
someFunc2()
scrapboxの文字として書きたい
は
ctrl /
に割り当てておいた
キーバインドを覚えるのがつらいのでやりたくない
script.jsaddEventListener('keydown', e => {
if(e.ctrlKey && e.key === "/") _insertComment();
})
const wait = sec => new Promise(res => setTimeout(res,sec));
async function _insertComment() {
const $currentLine = $(".cursor-line");
if($currentLine.length == 0) return;
const curLineNum = $(".line").index($currentLine) - 1;
const curLine = scrapbox.Page.lines[curLineNum];
if(! curLine.codeBlock) return;
const {codeBlock} = curLine;
ctrlE();
ArrowRight();
Enter();
document.execCommand('insertText', null, " ".repeat(codeBlock.indent-1));
const text = "code:" + (codeBlock.filename || codeBlock.lang);
document.execCommand('insertText', null, text);
Enter();
//reactの計算が終わった後にarrowupしないと、目的の行がまだ存在してない
await wait();
ArrowUp();
ArrowUp();
Enter();
await wait();
ArrowUp();
function ctrlA() {
keydown({key: "a", keyCode:65, ctrlKey: true});
}
function ctrlE() {
keydown({key: "e", keyCode:69, ctrlKey: true});
}
function ArrowUp() {
const key = "ArrowUp";
keydown({key, code:key, keyCode:38});
}
function ArrowRight() {
const key = "ArrowRight";
keydown({key, code:key, keyCode:39});
}
function bs() {
keydown({key: "Backspace", keyCode:8});
}
function Enter() {
keydown({key: "Enter", keyCode:13});
}
function keydown(option) {
let e = new KeyboardEvent("keydown", {
bubbles: true,
cancelable:true,
...option
});
$('#text-input')[0].dispatchEvent(e);
}
}
キー入力をdispatchするときはevent.keyCodeいる
indentの下にcodeblockあるとき処理がおかしい
なおした
幸いscrapboxのlineにcodeBlock.indentがあった