Skip to content

Instantly share code, notes, and snippets.

@Gurrium
Last active June 14, 2022 09:46
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Gurrium/84030b15173c830d962292435c0c2e63 to your computer and use it in GitHub Desktop.
Save Gurrium/84030b15173c830d962292435c0c2e63 to your computer and use it in GitHub Desktop.
Scrapboxで見出しのレベルを変えるショートカット
const pattern = /\[(\*+) +([^ ].*)\]/
function deleteLine() {
var eventToMoveToStartOfLine = new KeyboardEvent('keydown', {
ctrlKey: true,
keyCode: '69', // e
bubbles: true,
cancelable: true,
})
document.getElementById('text-input').dispatchEvent(eventToMoveToStartOfLine)
var eventToMoveToEndOfLine = new KeyboardEvent('keydown', {
ctrlKey: true,
shiftKey: true,
keyCode: '65', // a
bubbles: true,
cancelable: true,
})
document.getElementById('text-input').dispatchEvent(eventToMoveToEndOfLine)
var eventToDelete = new KeyboardEvent('keydown', {
keyCode: '8', // Backspace
bubbles: true,
cancelable: true,
})
document.getElementById('text-input').dispatchEvent(eventToDelete)
}
document.addEventListener('keydown', e => {
if (e.ctrlKey && e.key == '8') {
const currentContent = document.querySelector('.lines div.line.cursor-line').textContent
var content
if (e.shiftKey) {
if (!pattern.test(currentContent)) { return }
const [, asterisks, title] = currentContent.match(pattern)
const slicedAsterisks = asterisks.slice(1, asterisks.length)
if (asterisks.length == 1) {
content = title
} else {
content = `[${asterisks.slice(1, asterisks.length)} ${title}]`
}
} else {
if (pattern.test(currentContent)) {
const [, asterisks, title] = currentContent.match(pattern)
content = `${asterisks}* ${title}`
} else {
content = `* ${currentContent}`
}
content = `[${content}]`
}
deleteLine()
const textInput = document.getElementById('text-input')
textInput.value = content
textInput.focus()
const inputEvent = new InputEvent('input', { bubbles: true, cancelable: true })
textInput.dispatchEvent(inputEvent)
}
})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment