Action
Markdown Todo
Powerful drafts4 script rewritten for drafts5. Originally created by “elstudio”.
https://drafts4-actions.agiletortoise.com/k/1Mz
Appends “[ ]” to current line or multiple selected line.
If “[ ]” already exists, change to “[x]”.
Alternatively, tap inside the brackets to add “x”.
Useful for ad-hoc todo lists.
Originally titled “Markdown todo”
Steps
-
script
// Prefix selected lines with Markdown to-do checkboxes // A plain Markdown checkbox, unckecked: var prefix = "- [ ] "; var lineRange = editor.getSelectedLineRange(); var ln = editor.getTextInRange(lineRange[0], lineRange[1]); var selectedRange = editor.getSelectedRange(); function chkLine(line) { // These regexp match various checkbox states chkd = /^(\s*[-*+]\s)\[x]/i // checked: "- [x]" unchkd = /^(\s*[-*+]\s)\[\s?]/ // unchecked: "- [ ]" li = /^(\s*[-*+]\s)/ // list item: "- " added = 0; if (chkd.test(line)) { line = line.replace(chkd, "$1[ ]"); } else if (unchkd.test(line)) { line = line.replace(unchkd, "$1[x]"); } else if (li.test(line)) { line = line.replace(li, "$1[ ] "); added = 4; } else { line = prefix + line; added = 6; } return { text: line, added: added } } if (ln && ln != "") { var lines = ln.split('\n'); var charsAdded = 0; for (var ix=0; ix < lines.length; ix++) { if (lines[ix].length > 0) { line = chkLine(lines[ix]); lines[ix] = line.text; charsAdded += line.added; } } // Replace text in draft editor.setTextInRange(lineRange[0], lineRange[1],lines.join("\n")); // Reset selection if (lines.length > 2) { editor.setSelectedRange(lineRange[0]+lineRange[1]+charsAdded, 0); } else { editor.setSelectedRange(selectedRange[0]+charsAdded, selectedRange[1]); } } else { // If the current line is blank, just add a checkbox editor.setSelectedText(prefix); charsAdded = prefix.length; editor.setSelectedRange(selectedRange[0]+charsAdded, 0); }
Options
-
After Success Default Notification None Log Level Info
Items available in the Drafts Directory are uploaded by community members. Use appropriate caution reviewing downloaded items before use.