Markdown

Markdown Numbered List

Turn selected lines into a numbered Markdown list.

OfficialOn-device

Download action

What Markdown Numbered List does

Numbers non-empty lines across standard and rich-text line breaks, preserves nesting in four-space levels, and restarts numbering inside each nested level.

CategoryMarkdown
Action typeJavaScript
Default resultReplace selected text by default
InternetNot required

Action and outcome

Markdown Numbered List example
ActionOutcome
Markdown Numbered ListSelected text: Draft Review Publish1. Draft 1. Review 2. Publish

Use Markdown Numbered List

Follow these steps to turn selected lines into a numbered Markdown list with ActionClip.

  1. Select the text you want to use.
  2. Choose Markdown Numbered List from ActionClip.
  3. In editable text, ActionClip replaces the selection immediately. In read-only text, it opens the result for review and copying.

Requirements and privacy

  • Before you start: No setup required.
  • Your selected text: Runs locally in ActionClip’s JavaScript sandbox. Selected text does not leave your Mac.

Action script

The script below is included so you can inspect how the action works before downloading it.

JavaScript definition
function run(selected_text) {
  const counters = [];
  let previousLevel = 0;
  const output = [];

  selected_text.split(/\r\n|[\n\r\u000B\u000C\u0085\u2028\u2029]/).forEach((line) => {
    if (/^[ \t]*$/.test(line)) return;

    const originalIndent = (line.match(/^[ \t]*/) || [""])[0];
    const expandedIndent = originalIndent.replace(/\t/g, "    ");
    let level = Math.floor(expandedIndent.length / 4);
    level = Math.min(level, previousLevel + 1);

    const content = line
      .slice(originalIndent.length)
      .replace(/^(?:(?:[-+*]|\d+[.)])\s+)?(?:\[[ xX]\]\s+)?/, "")
      .trim();

    counters.length = level + 1;
    counters[level] = (counters[level] || 0) + 1;
    output.push("    ".repeat(level) + counters[level] + ". " + content);
    previousLevel = level;
  });

  return output.join("\n");
}