- commit
- 75179dabab27931f63cf9e821fab462e946c1885
- parent
- 07daf2026e056aadd000ffcb8c934cb7b32848b0
- author
- Dami <dami.etoile@gmail.com>
| M | ROADMAP.md | 6 | +++--- |
| M | docs/ | 5 | +++++ |
| M | docs/ | 15 | ++++++++++++++- |
| M | docs/ | 4 | ++-- |
| M | docs/ | 7 | +++++++ |
| M | docs/ | 4 | ++++ |
@@ -103,11 +103,11 @@ work left open. Sizes: S (a day or two), M (about a week), L (weeks).
103103 | Item | Why | Size |104104 |---|---|---|105105 | Open 012's XLSX output in real Excel and LibreOffice (a round-trip corpus, run by hand before releases). In progress: a first sample is being checked in Excel | The new writer is checked only by excelize and 012's reader | S |106-| Column and row formats travel with copy, cut and move; formulas reading blanks of a newly formatted column re-infer at once | Left open by step A | S |106+| Column and row formats travel with copy, cut and move; formulas reading blanks of a newly formatted column re-infer at once. Done: pastes and moves carry what cells show, whole lines their line formats; see [data.md](docs/data.md#copy-paste-and-fill) | Left open by step A | S |107107 | Save as onto another existing file asks before replacing (local and `012 serve`) | Only the open file is checked today | S |108108 | XLSX sheet names with characters Excel forbids: rewrite formulas that name them, not just the sheet | Formulas keep the old name today | S |109-| Replace current sheet keeps its charts; Insert new sheet(s) goes after the current tab | Import location details | S |110-| Precedent tracing explains when every precedent is on a hidden sheet | Says "no formula" today | S |109+| Replace current sheet keeps its charts; Insert new sheet(s) goes after the current tab. Done: charts of a whole table are re-pointed to the new one when it has as many series, and the note says which; see [files.md](docs/files.md) | Import location details | S |110+| Precedent tracing explains when every precedent is on a hidden sheet. Done, for dependents too | A generic "no formula" hides why nothing shows | S |111111 | Settings > JEV API key checks the key with a test call | Left open by the config work | S |112112 | `012 serve`: open a file from the ssh command line (`ssh -t host file.012` as a request, not exec), and save unsaved work to a recovery file on shutdown or idle timeout | Sessions start empty; unsaved work is lost today | M |113113 @@ -93,6 +93,11 @@ style.
9393 which have contents, so a range of the million-row grid is read at the9494 cost of what it holds. Formats of whole columns and rows, and of the9595 whole sheet, live on the lines (`lines.go`); a cell falls back on them.96+ Copy, paste and move carry the formatting cells show (`clipfmt.go`):97+ whole lines as line formats, blocks as the cells' own. A line's format98+ changing recalculates the formulas reading any cell of it, found through99+ the dependency indexes (`linereaders.go`), so they infer their format100+ from blank cells too.96101 - **Parsing.** `internal/formula`'s hand-written Pratt parser turns97102 formulas into an AST, keeping absolute markers so references can be98103 rewritten when cells move. Its printer turns ASTs back into text in@@ -13,7 +13,20 @@ ones that don't fit on a narrow terminal.
1313 1414 Ctrl+C, Ctrl+X and Ctrl+V work as in Sheets: relative references shift,1515 absolute ones don't, cut and paste moves cells and the formulas that point16-at them follow. Ctrl+Shift+V pastes values only. Copies also go to the16+at them follow. Ctrl+Shift+V pastes values only, keeping the destination's17+formats.18+19+Formats travel with the cells. A pasted or moved cell shows what its20+source showed, whether the format was the cell's own or came from its21+row, its column or the whole sheet, and pasting plain cells into a22+currency column leaves them plain. Whole columns or rows (Ctrl+Space,23+Shift+Space) copied and pasted at the top of a column, or the start of a24+row, take their column or row formats along, so a pasted column is25+currency all the way down, not only where it had data; cut and pasted,26+they move them, leaving the source columns plain. Pasted anywhere else,27+they paste as a block of the cells that hold something. Formulas reading28+a column whose format changes, blank cells included, show the new format29+at once (`=B5*2` shows currency when column B becomes currency). Copies also go to the1730 system clipboard as tab-separated text (OSC 52, so it works over SSH), and1831 pasting tab-separated or multi-line text from the terminal fills a block.1932 @@ -12,8 +12,8 @@ File > Import asks where the data goes, as Sheets' Import location does
1212 1313 | Location | Does |1414 |---|---|15-| Insert new sheet(s) | Adds the file's sheets after the others: every sheet of an `.xlsx`, named after the file for other formats. A name already taken gets a number (`Sales 2`) and the file's formulas follow it; named ranges come along unless their name is taken. One undo step, and the spreadsheet stays the file you're editing |16-| Replace current sheet | Puts the data in place of the sheet shown, keeping its name and position, so formulas and named ranges that read it read the new data. One undo step. Not offered for `.xlsx`, which holds several sheets |15+| Insert new sheet(s) | Adds the file's sheets after the sheet shown: every sheet of an `.xlsx`, named after the file for other formats. A name already taken gets a number (`Sales 2`) and the file's formulas follow it; named ranges come along unless their name is taken. One undo step, and the spreadsheet stays the file you're editing |16+| Replace current sheet | Puts the data in place of the sheet shown, keeping its name and position, so formulas and named ranges that read it read the new data. Its charts stay: a chart that drew a whole table is re-pointed to the table the file has at the same corner when it has as many columns (rows for a chart by row), so last month's chart draws this month's rows; any other chart keeps its range. The context line says which chart was re-pointed, which kept its range, and which range is empty now. One undo step. Not offered for `.xlsx`, which holds several sheets |1717 | Replace spreadsheet | Opens the file instead, as File > Open and the command line do, asking first when there are unsaved changes |1818 1919 | Format | Import | Download |@@ -61,6 +61,13 @@ caret on the problem and says what's wrong on the context line, e.g.
6161 the current argument marked, e.g. `SUMIF(range, criterion, [sum_range])`.6262 - Alt+, and Alt+. trace precedents and dependents: the cells a formula reads6363 and the formulas that read a cell. Press again to step through them.64+ Cells on hidden sheets are skipped; when that leaves nothing, the65+ context line names the hidden sheets ("Reads only Data, a hidden sheet;66+ View > Hidden sheets shows it").67+- A formula left Automatic shows the format of what it reads: `=B5*2` of68+ a currency cell shows currency, and so does `=SUM(B2:B9)`. A blank cell69+ counts with its column's, row's or sheet's format, and changing those70+ formats changes what the formulas show at once.6471 6572 ## Operators6673 @@ -414,6 +414,10 @@ ten visits. Formats of whole columns, rows and the sheet live on the
414414 lines. `TestCommandsCostTheDataNotTheGrid` (`internal/ui`) runs every415415 command with the whole sheet, a whole column and a whole row selected on416416 the full grid and fails past 250 ms or 8 MB; each takes 0.1 to 4 ms.417+Pasting whole columns or rows sets line formats; a pasted block whose418+source or destination has line formats gives its blank cells formatting419+of their own up to 65,536 cells, as formatting a block does, and past420+that only the cells stored.417421 418422 Code that cost the grid, and what it does now:419423