Basilisk
New in core:
- :?~ clears the saved ?? capture statuses; with an argument it keeps
them across commands instead of clearing after each one. Closes the
remaining ?? control gaps. - :m![#marks] unsets line marks; no argument unsets all marks.
- Optimized capture ids: O(1) lookup, kept ~O(1) amortized append,
reduced memory usage with flat char array. - Unlimited alternations and captures in the regex engine: the
compiler no longer uses fixed static arrays. - Substitution with the ^ flag anchors ^ at the start of every search
instead of only the first; it implies g. The vi and vI keybinds use
it to convert a whole indentation run. - Evolved syntax highlight extension system (former led_attsb). Now
extensions are exposed to rendering and its' precomputed state. Extensions
can reflect and build logic on top of existing highlights.
Features efficient triple system with length encoding.
New in builds:
- Build shell scripts (cbuild.sh, build_patch2vi.sh) accept options
shortened to a minimal prefix: b, bu, c, d, i, p all work. - build_patch2vi.sh gained a pgobuild step. Trains the profile by
applying deltas.sh through the embedded editor, then rebuilds with
-fprofile-use. - Fixed the pgo training run in cbuild.sh: the training EXINIT now
quits the session instead of only saving.
Bug fixes:
- Substitution with the g flag no longer substitutes a zero-width match
twice when the engine reports it ahead of the scan start, as with
positional lookarounds like (?=^a). A :grp target group that ends at the
scan start still advances past the match instead of re-matching it. - Zero-length match advances are UTF-8 aware: when a regex match is
empty, the scan skips one whole character instead of one byte, in
substitution, search, file index and directory reorder. - Out-of-range :f>/:f+ search the full range again; single-line
ranges searched nothing at all. - Out-of-range :f< matches the whole pin line, bound at its end
like the in-range cursor offset. - Fixed a memory-corrupting bug when un-indenting with ^d in insert mode
and then deleting — could corrupt memory or crash. - Fixed display corruption and crashes on long lines when characters can
render zero-width (tab width set to 0, zero-width placeholders). - Fixed a small memory leak when the autocomplete pattern asks for a capture
group that doesn't exist. - Hardened redraw during multi-line insert so it can't reuse discarded
line data. - Hardened :p-style range printing with character offsets so it can't
leave discarded text referenced. - Hardened line freeing (undo history, closing buffers) so discarded lines
are dropped from the render cache — protects against rare stale-text glitches
or crashes. - Files that report a size of zero but do have content (e.g. /proc, /sys)
now open with their contents instead of appearing empty. - Fixed stale permanent vi linenumber column used in redraw when switching
to vi/ex prompt modes.
Patch2vi 1.1 changes:
- Compat block bodies start with :m!. Mark ids restart per file per
section and one run's sections share the buffers; a missed phase-1
search fails instead of editing at a previous section's mark. - Failure reports name the section: FAIL lines and the >>> p2v FAIL
banner carry the block's register (path:line:rN:mN), and QF2 repair
placement reads the block's body from its own register.
Patch changes:
- New threaded_redraw.sh:
redraw on thread. Frame joined before next command. Needs pthreads.
linewrap_v2.sh gained compat block for it. - linewrap_v1.sh
and linewrap_v2.sh:
elastic column. :lw no arg tracks terminal width, v1 rewraps buffer
on resize, v2 rescale render. - linewrap_v2.sh:
faster scroll redraw, vi_drawscroll redraws only entering/leaving rows. - New ex_marks.sh:
letter mark ranges, :'a,'bs/foo/bar; - New nvi_status.sh:
nvi style <^G> line. - patch2vi.sh: faster compat_order search, tree snapshot per step,
one awk pass per level. - Division truncation fix: threaded_search.sh
- New spell.sh:
spell checking with an external speller that speaks the ispell pipe
protocol. - visual.sh
Implemented visual column conversion for block select (vb) fixing
misalignment with multi width characters. Fixed [ ] mark offsets
for visual block mode edits. Implemented adaptive chameleon cursor color. - stdin_pipe.sh
Implicit compatibility with patches that use rely on reading stdin, e.g
arrowkeys_insert.sh - Trivial bug fixing in other patches not worth mentioning.
Source commits:
master ef5aa79
manual 144c3db
patches 92dca3d
patch2vi 1a5a7a7
test 3dbcb11