krz/orgstar

A native macOS editor for org-mode files. editor org-mode swift

docs/plans/2026-10-05-options.md

191ddb506f3a91b93c755ba6e8123a4e8ac4f90d
orgstar/docs/plans/2026-10-05-options.md rendered · source · history · blame · raw

33 lines · 2144 bytes

Editing Options Implementation Plan

For agentic workers: REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (- [ ]) syntax for tracking.

Goal: The org options that change what commands write become settings, so Orgstar can follow the user's Emacs: org-tags-column, org-insert-heading-respect-content, org-M-RET-may-split-line, org-list-allow-alphabetical, and the default TODO keywords.

Architecture: EditingOptions travels in EditContext and EmacsBuffer; tag alignment, heading and item insertion, and list bullets read it. Alphabetical lists add org-list-use-alpha-bul-p and the alphabetical branches of org-list-struct-fix-bul. Default TODO keywords come from a #+TODO-syntax line (OrgSettings.withTodoKeywords); the index settings version follows them, so changing them reindexes. The app keeps all of it in Settings.

Tech Stack: Swift 6.2 tools, SwiftUI, Swift Testing, Emacs 31.1 / Org 9.8.7 oracle.

Spec: docs/design.md, "Commands and keymaps".

Why

The user's Emacs is Doom, which sets tags column 0, M-RET after the subtree without splitting, alphabetical lists, and the keywords TODO PROJ LOOP STRT WAIT HOLD IDEA | DONE KILL. Their notes use KILL and have no #+TODO lines; 499 of 522 tagged headings end their tags at column 77.

Defaults chosen (user may change)

  • Tags aligned to column 77 (as the files are), not Doom's 0.
  • M-RET after the subtree, no splitting, alphabetical lists, and Doom's main keyword sequence, as the user's Emacs does today.

Task 1: Options in commands

  • EditingOptions; plumb through every command; alphabetical bullets.
  • Oracle: heading, structure and list suites again under the Doom options (withOptions binds the variables around each case), plus alphabetical list variants.
  • Commit "Make org editing options settings".

Task 2: App

  • Settings section; options to the editor and session; default keywords to documents and the index at launch.
  • Commit "Org options in Settings".