Skip to content

Choose a tag to compare

@kyx0r kyx0r released this 08 Sep 04:54
· 1504 commits to master since this release

Basilisk

New in core:

  1. :?~ clears the saved ?? capture statuses; with an argument it keeps
    them across commands instead of clearing after each one. Closes the
    remaining ?? control gaps.
  2. :m![#marks] unsets line marks; no argument unsets all marks.
  3. Optimized capture ids: O(1) lookup, kept ~O(1) amortized append,
    reduced memory usage with flat char array.
  4. Unlimited alternations and captures in the regex engine: the
    compiler no longer uses fixed static arrays.
  5. 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.
  6. 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:

  1. Build shell scripts (cbuild.sh, build_patch2vi.sh) accept options
    shortened to a minimal prefix: b, bu, c, d, i, p all work.
  2. build_patch2vi.sh gained a pgobuild step. Trains the profile by
    applying deltas.sh through the embedded editor, then rebuilds with
    -fprofile-use.
  3. Fixed the pgo training run in cbuild.sh: the training EXINIT now
    quits the session instead of only saving.

Bug fixes:

  1. 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.
  2. 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.
  3. Out-of-range :f>/:f+ search the full range again; single-line
    ranges searched nothing at all.
  4. Out-of-range :f< matches the whole pin line, bound at its end
    like the in-range cursor offset.
  5. Fixed a memory-corrupting bug when un-indenting with ^d in insert mode
    and then deleting — could corrupt memory or crash.
  6. Fixed display corruption and crashes on long lines when characters can
    render zero-width (tab width set to 0, zero-width placeholders).
  7. Fixed a small memory leak when the autocomplete pattern asks for a capture
    group that doesn't exist.
  8. Hardened redraw during multi-line insert so it can't reuse discarded
    line data.
  9. Hardened :p-style range printing with character offsets so it can't
    leave discarded text referenced.
  10. Hardened line freeing (undo history, closing buffers) so discarded lines
    are dropped from the render cache — protects against rare stale-text glitches
    or crashes.
  11. Files that report a size of zero but do have content (e.g. /proc, /sys)
    now open with their contents instead of appearing empty.
  12. Fixed stale permanent vi linenumber column used in redraw when switching
    to vi/ex prompt modes.

Patch2vi 1.1 changes:

  1. 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.
  2. 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:

  1. New threaded_redraw.sh:
    redraw on thread. Frame joined before next command. Needs pthreads.
    linewrap_v2.sh gained compat block for it.
  2. linewrap_v1.sh
    and linewrap_v2.sh:
    elastic column. :lw no arg tracks terminal width, v1 rewraps buffer
    on resize, v2 rescale render.
  3. linewrap_v2.sh:
    faster scroll redraw, vi_drawscroll redraws only entering/leaving rows.
  4. New ex_marks.sh:
    letter mark ranges, :'a,'bs/foo/bar;
  5. New nvi_status.sh:
    nvi style <^G> line.
  6. patch2vi.sh: faster compat_order search, tree snapshot per step,
    one awk pass per level.
  7. Division truncation fix: threaded_search.sh
  8. New spell.sh:
    spell checking with an external speller that speaks the ispell pipe
    protocol.
  9. 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.
  10. stdin_pipe.sh
    Implicit compatibility with patches that use rely on reading stdin, e.g
    arrowkeys_insert.sh
  11. Trivial bug fixing in other patches not worth mentioning.

Source commits:
master ef5aa79
manual 144c3db
patches 92dca3d
patch2vi 1a5a7a7
test 3dbcb11