Documents: cells keep their row's pipes; long reads finish cell moves
CI / platforms (windows-latest) (push) Failing after 10s
CI / site (push) Successful in 22s
CI / crate (push) Failing after 11m22s
CI / platforms (ubuntu-24.04) (push) Canceled after 0s

An emptied bare edge cell writes a pipe so its column stays. The caret
reads the escaped write-back. A right press beside an edited cell keeps
its place. A move that waits on a long read opens once the read lands.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
ZacharyZhang-NYandClaude Opus 5.5 committed 2026-10-15 02:09:43 -04:00
1 parent 2b6bd1d369
commit f1771b3880
8 files changed
+224 -44

No files matched your search

+6 -1
View File
@@ -109,6 +109,8 @@ pub struct MarkdownDocument {
writes: usize,
/// A match asked before its text was read; its version.
showing: Option<(Range<usize>, u64)>,
/// A block asked open before its text was read.
waiting: Option<(Option<usize>, edit::Landing, u64)>,
look: DocumentLook,
/// Typing in the open block, counted.
typed: u64,
@@ -181,6 +183,7 @@ impl MarkdownDocument {
asks: 0,
writes: 0,
showing: None,
waiting: None,
look: DocumentLook::default(),
typed: 0,
centered: None,
@@ -246,7 +249,9 @@ impl MarkdownDocument {
let written = match open.append {
true if typed.is_empty() => String::new(),
true => format!("{}{typed}", joint(text)),
false if open.cell.is_some() => cells::kept(typed, cells::closed(text, open.range.end)),
false if open.cell.is_some() => {
cells::kept(typed, cells::edges(text, open.range.clone()))
}
false => typed.to_string(),
};
[&text[..open.range.start], &written, &text[open.range.end..]].concat()