2021-09-21, updated: 2021-09-22

Tags: release.

Nyxt 2.2.0

Nyxt 2.2.0

We are happy to announce Nyxt 2.2.0. Lot's of new features and architectural changes!

Change log:

2.2.0

  • New changelog command.
  • New show-qrcode-of-current-url command. (Thanks to @ag91!)
  • New view-source command.
  • New edit-user-file-with-external-editor command.
  • New summarize-buffer command.
  • Macro editor: interactively record command macros with edit-macro . Macros can be saved to the auto-config.lisp file.
  • New action for the switch-buffer command to delete selected buffers.
  • Support for GTK clipboard. (Thanks to @shamazmazum!)
  • Deprecated commands no longer show in the execute-command list.
  • New titler window slot to allow customizing the window title.
  • jump-to-heading now also lists content keywords.
  • Various manual and tutorial improvements and fixes. (Thanks to @pdelfino!)
  • Deprecate paste-or-set-url .
  • Replace copy-system-information with show-system-information .
  • Don't forward printable characters in vi-normal-mode.

    Concretely, pressing an unbound letter won't insert it in an HTML input.

  • New VI status and prompt buffer indicator. (Thanks to @edgar-vincent!)

    Both the status area and the prompt buffer now display a colored indicator for vi-normal-mode and vi-insert-mode .

  • New navigation commands: go-previous , go-next , go-up , go-to-homepage .
  • Password commands set the default input to the current host.
  • Anonymous commands are now allowed in keybindings (e.g. with make-command ).
  • describe-variable can now describe compound values recursively, such as lists of variables.
  • execute-extended-command performs type checking and prefills default values.

Backward-incompatible changes

  • Updated cl-webkit to version 3.0.0.

    webkit2:webkit-web-view-evaluate-javascript lambda list changed.

  • We've introduced an API-breaking change to the nyxt/history-tree library: now all its call points take an owner as parameter. This has allowed us to fix the constant history corruptions.

Element hinting overhaul

It should be now faster, better integrated and more exhaustive (such as drop-down buttons).

A new DOM parser has been developed. As a result, much of the former Parenscript code has been replaced by pure Lisp code.

New 'panel' buffers.

Panel buffers can be used to display arbitrary information on the side of a window. A few new commands are thus introduced:

  • show-bookmarks-panel
  • show-buffers-panel
  • delete-panel-buffer

Prompt buffer

  • Input area no longer stutters when updating the display.
  • Key press responsiveness has been dramatically improved.
  • The prompt is properly refreshed when pasting to it.
  • Bind M-space to resume-prompt to make it more useful.

    It's particularly useful to resume a search.

  • Bind C-M-space to execute-extended-command .

    It makes it easier for users to execute commands and supply parameters.

Status area

  • Clicking on modes now describes them.
  • New '+' button to toggles modes.
  • Arbitrary HTML is now allowed for mode glyphs.

Support for buffer tree relationships

  • switch-buffer-previous and switch-buffer-next browse the buffer tree in a depth-first fashion.
  • New switch-buffer-last command to easily switch back and forth between the 2 most recent buffers.
  • list-buffers can now display the the buffers as a tree.

Platform support

  • Fix slow buffer and prompt-buffer creation on FreeBSD. (Thanks to @shamazmazum!)

Bug fixes

  • Various fixes with the password manager commands.
  • Don't crash when an error occurs in a GTK signal.
  • Start up errors due to flawed user init files now lead to a restart of Nyxt without init file.
  • Fix endless compilation of =tutorial.lisp= when SBCL dynamic space size to low.

    cl-markup was replaced by spinneret .

  • Fix potential dead-lock in restore-history-buffers .
  • Fix buffer-history-tree that showed a truncated tree.

Did you enjoy this article? Register for our newsletter to receive the latest hacker news from the world of Lisp and browsers!