Skip to content

TwTable: make rows editable in place #11

Open

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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