generated at
scrapboxのコードを分割する
codeを途中で分割したいことがある
コードをコピペして読んで勉強するときとかに多い
のでuserscript作った

こうじゃなくて
js
someFunc() //ここで〜〜を〜〜する someFunc2()
scrapboxの文字として書きたい


moyamin ctrl / に割り当てておいた
キーバインドを覚えるのがつらいのでやりたくない

script.js
addEventListener('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があった