Skip to content

v0.51.3

Latest

Choose a tag to compare

@github-actions github-actions released this 05 Aug 20:58

Fixed

Request editor autocomplete

Every keystroke refreshed the completion popup (annoying), including keystrokes that clearly ended the word.

  • Space and Enter close the popup instead of reopening it.
  • Backspace and Delete only refilter a popup that is already open. Deleting text no longer opens one.
  • Backspace still narrows an open list as before.

Text wrapping

The wrapper walked text one rune at a time, which broke down on anything past plain ASCII. Most of the time invisible, but it was an real bug. It now works in grapheme clusters.

  • Emoji sequences, combining accents and joined characters no longer get cut in half at a wrap point.
  • Zero-width runes no longer count as a cell, so lines containing combining marks stop wrapping earlier than they should have.
  • Double-width characters (CJK and similar) can no longer push a row past the pane width. A row that overflowed got wrapped a second time by the terminal, which put the cursor and selection on the wrong line.
  • A character too wide to fit beside an indent now moves down whole, and if it still does not fit, the indent is dropped rather than overflowing the row.
  • A character wider than the entire row is placed on a row of its own instead of looping.

Row mapping was counted from the size of the output buffer. Blank lines add no bytes, so they were skipped and the map claimed more rows than existed. Cursor movement and selection in bodies with blank lines landed one or more lines off. Rows are counted directly now.

Color handling had two leaks:

  • A reset arriving after the last visible character on a line was dropped together with the empty continuation row it landed on, so the color carried into everything below it.
  • An escape sequence that appeared inside a run of whitespace was discarded when that whitespace was trimmed at a wrap point.

Also in this area:

  • Pre mode no longer produces rows containing only indentation.
  • CRLF, control bytes and invalid UTF-8 no longer throw off width accounting or get dropped from the output.
  • Extended color codes such as ESC[38;5;0m are read as a color, not as a reset.
  • Cancellation is checked periodically instead of on every byte.