summaryrefslogtreecommitdiff
path: root/next-steps.txt
blob: 3546da4282f40bc3d87b7d19534be91405365f57 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
WHAT THIS IS: a wishlist, in the author's own words. The items below are left
exactly as written; this header is the only thing kept in sync with the code,
because a list that reports shipped work as pending is worse than no list.

SHIPPED (verified against the tree, not assumed):
- "version tracking" -> done. `build.zig` reads `.version` from build.zig.zon
  via an untyped `@import`, `gitCommit(b)` reads the commit at configure time,
  both reach `pardes_config`, and `pardes --version` prints them.
- "markdown treesitter highlight with nested codeblocks" -> done; markdown is
  in `src/grammar_manifest.zig`.
- builtin `Changelog` -> done; `src/builtins.zig`.
- builtin `Newtty` -> done; `src/builtins.zig`.
- builtin `Joincol` -> done; `src/builtins.zig`.
- "only create a new column if both panes get at least 100 columns" -> done;
  `pardes.zig` calls `p.columnFitsHalves(from_id, 100)` on the open path.
- "in a tty pane if the leaf process is a shell, ESC behaves as SHIFT-ESC"
  -> done, in c3d0b84. `pardes.zig`: "A shell prompt is a pane you can leave:
  plain Esc there is Shift-Esc", guarded by `takesCommandLine`, which is
  `pane.isTerminal() and !p.hostTtyTaken(id)` — exactly "the leaf is a shell
  and not a full-screen program". I first recorded this as PENDING by reading
  the Shift-Esc CHORD handling thirty lines above it and concluding from the
  absence there; the note is kept because the mistake is instructive.

STILL PENDING, checked rather than guessed:
- `.patch`/`.diff` highlighting: no such grammar or extension in the tree.
- the tty escape-scanning `tests:` item, and the tty-colour bug: neither
  confirmed fixed. The OTHER `tests:` item — "clipboard integration for tty
  escape codes should work" — has shipped in both directions: `src/tty/tty.zig`
  mirrors a yank register out via OSC 52 and reads the other way, the reply
  arriving as an ordinary paste. ("neither" covered three items here until an
  audit counted them.)

meta:
- version tracking
- special coloring algorithms are aplied based on the title of a pane. implemented as just ifs and else ifs. one of those ifs will be the one that choses the color algorithm for tty panes, other will select the treesitter coloring for sourcode files, and the other one will be the new one to highlight .patch and .diff files 
- added markdown treesitter highlight with highlighiting of nested codeblocks

new builtin: 
- Changelog 
- Newtty: Added by default on all pane taglines. It will spawn a new tty pane (at tty mode from the start) on the directory of the pane that called it. The pane struct field for the working directory should be a tagged enum for either .none, .inherited (with a pointer to the pane it inherits) or the dir slice itself. when a pane is deleted in a frame, its allocation will leave until the end of the next. During the next frame the deleted frames will be in a special list of deleted frames. this deleted pane list state will live on a new allocator: the pane allocator which will wrap a regular allocator, and this newly deleted list is passed to the pane tick/update/frame as a pointer so that it can just access it. this new allocator will also have the tick/update function so that it wires de regular allocator dealloc/free to the deleted list and the deferred actual deallocation. the pane struct will have a new function that will visit each kind of field that has a pane pointer in it and decide how to update it based on the field type when the pointer is on the deleted list; it's fine that during the runtime each field visits each pointer O(n*m).  
- Joincol: added by default on the full window tagline. it deletes the column of the current/last focused pane and moves its panes to the column to the right. if there's no other column it should do nothing 

keyboard:
- in a tty pane if the current/leaf process is a shell, ESC will have the same behaviour as SHIFT-ESC


layout behaviour: 
- When opening a new file, it will only create a new column if both panes affected will have at least 100 columns each. Otherwise will just create a new pane.

bug fix: 
- the tty colors are affected by changes to its normal mode 

tests:

- if tty escape scanning is active (chosen when libvaxis is created) it should always use all the features it detects by default.
- clipboard integration for tty escape codes should work.