Skip to main content

Pragtical v3.6.0 Release

ยท 6 min read
Jefferson Gonzalez

Many Enhancements, Fixes, and New Features!

This release includes so many changes that it's a bit hard to summarize โ€” but here we go, so lock your seat belts and enjoy the ride!

๐ŸŽจ A Fresh Lookโ€‹

First of all, this is the first release to ship with a new default color scheme, moving away from the one used by our ancestors to further distinguish our identity:

new-default-scheme

new-default-scheme-syntax

๐Ÿงฉ More Iconsโ€‹

We've added several new icons to our icon font distribution:

new-icons

These are now used in places like the Empty View and the Settings UI:

emptyview

settings

๐Ÿ” Better Search UIsโ€‹

The new icons inspired updates to the document and project-wide search/replace interfaces, making them more ergonomic (yes, we still care about ergonomics ๐Ÿ˜‰):

search-ui-changes

The document search UI also got a minimalist redesign, using less horizontal space in top and bottom modes:

โš™๏ธ Improved Settings UIโ€‹

In addition to the new icons, the Settings GUI now includes color filtering:

settings-filter-colors

Also, labels in the settings view now support word wrapping, making long descriptions much easier to read:

Another UI addition: you can now hide tabs by using the Core: Toggle Tabs or new config option, for a cleaner more zen-like editing experience, especially useful when paired with the centerdoc plugin.

centerdoc-zenmode

๐Ÿง  Smarter Search Replacementsโ€‹

Alongside the visual updates, many functional improvements were made to document and project-wide search/replace. One prominent one is capture groups can now be used in replacement text:

  • For regex, use $[0-9]
  • For Lua patterns, use %[0-9]

๐Ÿงฑ Core Improvementsโ€‹

Thanks to Jan, we've added:

  • Proper slight hinting of fonts (with a pending PR to fetch user font settings directly from the system via Fontconfig (Linux-only))
  • Skip sorting of command view items when no predicate is provided
  • Support for dynamically switching the directory monitoring backend which also adds the settings GUI:

dirmonitor-dynamic-backend

๐Ÿงช New REPL and Run Commandโ€‹

Here come the new features! A basic REPL and Run command were added, making it easier to test Lua snippets directly against the Pragtical runtime:

run-command

These additions should be especially helpful when developing plugins for the editor. In the future we plan to use the new run command to provide Profile Guided Optimized builds of the editor.

๐Ÿ–ฅ๏ธ CLI Improvementsโ€‹

The CLI also received improvements:

  • Better help output formatting
  • Auto-detection of terminal width for smarter padding and line wrapping

๐Ÿ› Bug Fixesโ€‹

Thanks to Amer, the following bugs were fixed:

  • language_python was broken in the previous update โ€” now corrected
  • Line highlighting now defaults to "no_selection"
  • language_xml had a fix where escape sequences were incorrectly defined in strings

There are even more changes that weโ€™ve forgotten to mention โ€” be sure to check the changelog below! Hope you enjoy this release!

Downloads on GitHub.

Changes Logโ€‹

New Featuresโ€‹

  • Add REPL and run commands to the CLI (#280)

Fixesโ€‹

  • Fix crash on out of window mouse events (#231)

  • Fix possible on doc close crash when highlighting (#232)

  • Properly saves a cleared binding from settings ui (#240)

  • Doc search fixes and types documentation. (#243)

  • Fix regex find_offsets not substracting offset (#245)

  • "Properly" handle whole line matches on doc search (#246)

  • Return single value on command.prettify_name (#247)

  • Node: skip hidden tab events (#256)

  • Corrections to language_python (#278)

  • Avoid process thread leak on LuaJIT and better solution to call process __gc on LuaJIT (7c4c1f2c)

  • language_xml: remove escape chars from strings (#286) (#286)

Build Systemโ€‹

  • Bump CI ubuntu containers (#233)

  • CI: Polyfill GLIBC for backward compatibility (#234)

  • Include 'user' directory on portable installs (#250)

  • CI: update Windows to more recent version (#252)

  • Updates for latest plugin manager changes (#255)

  • Silence thirdparty library compiler warnings (#271)

  • Update SDL2 to latest fixes from master (#282)

Enhancementsโ€‹

  • Include additional glyphs on icons.ttf (#236)

  • Capture replacements on regex/patterns search ui (#244)

  • Make DATADIR and USERDIR fonts path portable (#249)

  • Allow spaces in plugins mod-version (#253)

  • projectsearch: add open tab command (#258)

  • restore light lcd filter for slight hinting (#265)

  • align soft indention to indention size (#267)

  • rework dirmonitors to be able to support multiple backends (#266)

  • projectsearch: find current doc selection (#268)

  • projectsearch: on hide focus previous docview (#275)

  • Do not sort fuzzy results on empty needle (#276)

  • Lua doc comment improvements for better API reference generation (#185)

  • cli: always display commands sorted by name (#279)

  • autocomplete: keep previous items on re-trigger (#283)

  • highlight_current_line "no_selection" now default (#284)

GUI and Widgetsโ€‹

  • Updated default color scheme. (#237)

  • Settings: allow filtering colors (#238)

  • Search UI fixes and usage of new icons (#239)

  • Enabled word wrap on settings ui labels (#241)

  • Allow always hiding tabs, great for zen mode! (#242)

  • Show bindings on search ui and empty view tooltips (#248)

  • projectsearch: added built-in controls (#257)

  • settings gui: option to select dirmonitor backend (#270)

  • search_ui: hide replace by default, add toggle (#285)

  • foldingbook: keep tabs updated

  • textbox: added customized highlighter without coroutine

  • colorpicker: update sliders color on every update

  • Fix show animation on strange Node size changes

  • Set textview name same as parent

  • SearchReplaceList: add regex replacing support

  • Allow showing a command binding on tooltip

  • Improved FoldingBook expand calculations

  • Add word wrap support to Label widget

  • Fix on draw_styled_text elements checking

  • Added ToggleButton widget

  • Use new pragtical icons on various widgets

  • Allow customization of line widget color

  • Fix possible endless loop on animations

Performanceโ€‹

  • Wait thread avg time when it exceeds max time (#264)

Lite XL Inherited Changesโ€‹

  • add a __tostring method to every object (#1534)

  • Better wasm support again (#1779)

  • renderer: defer bitmap rendering when possible (#1856)

  • renderer: pass errors via SDL_SetError (#1919)

  • fix: use current char to determine col in DocView:get_x_offset_col (#1946)

  • common: allow / and \ as PATHSEP on Windows when fuzzy matching files (#1992)

  • fix: use correct charmap and glyphmap sizes (#1999)

  • language_cpp: add back digit separators (#2026)

  • syntax: warn against malformed patterns and disable them (#2029)

  • balance computed directory list, remove recursive function invocation (#1991)

  • language_lua: add files with rockspec extenstion (#2083)

  • Coroutine Process Fix (#2099)