Skip to content

TwTable: make rows editable in place #11

Description

@MattHandzel

:TwTable (added in #10) is currently read-only — <CR> bounces you to a :Tw markdown buffer to edit the task under the cursor.

It would be better to edit directly in the table: change a cell, :w, and have it apply like the markdown buffer does.

Design notes / open questions:

  • The apply path (taskmd.compute_diff + apply.on_write) is driven by the markdown line format and a <!-- taskmd filter: … | rendered_at: … --> header. A table would need an equivalent parse-back: column positions → field values, plus a per-row UUID anchor (the view already tracks row_uuids).
  • Column widths are computed per render against the window's text area, so a cell's byte range shifts between renders. Parsing back needs to use the widths from the render that produced the buffer, not recompute them.
  • Truncated cells () must not be written back as the truncated text — either mark them non-editable or keep the full value alongside the display value.
  • External-change protection (the rendered_at / conflict machinery in compute_diff) should apply here too; a table that silently clobbers a concurrent task modify would be worse than the read-only version.

Until then, <CR> → edit in the markdown buffer → :w is the supported path.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions