Skip to main content

Pragtical v3.0.0 Release

· 6 min read
Jefferson Gonzalez

This is the first official pragtical release that includes various new features and fixes not available on its ancestors as listed below. This release can be downloaded from GitHub.

Changes Log

New Features

  • Add more syntax symbols (00a0e9ca)

    • Added core functions to lighten or darken colors using pixel blending.
  • Support custom symbol types on language plugins (c348be99)

  • Added font metadata support lite-xl/lite-xl#1028

  • Added encoding support lite-xl/lite-xl#1161

  • Added shared memory support lite-xl/lite-xl#1486

    • Added IPC plugin with shared memory backend (87fc7105)
      • force draw on core.tab_drag_received (e5709850)
  • Added widgets as a git submodule (a4681a62)

  • language_lua: doc comments highlighting lite-xl/lite-xl#1019

  • language_js: support for embedded html syntax (like the one used on ReactJS) (#4)

  • Added support for background threads (co-routines) that keep running even when the window has no focus (#5)

    • core.add_background_thread(...)
  • Merged text overwriting lite-xl/lite-xl#1495

Performance Improvements

Documentation

Backward Incompatible Changes

  • Language plugins file match pattern will no longer support using the ^ pattern to match the beginning of a file, PATHSEP should be used instead

UI Enhancements

  • Add icons support to autocomplete plugin (0559cd7a)

  • Added initial commandview suggestions mouse support (276d92a6)

  • Added improved scaling support from lite-xl/lite-xl#1347

  • Added settings plugin (d5327a8d)

    • added config for tabs top margin (90150bf6)
  • Scale the entire UI by default on scale plugin (a5096b47)

  • Added friendlier search/replace user interface (518226eb)

  • Add missing config spec settings to treeview (d71175d1)

  • Better coroutine handling on no focus (456b8b25)

Fixes

  • Fix node resizing on mouse drag (c2733928)

Other Changes

  • Autocomplete plugin improvements (81b45706)

    • Support suggestion symbols scoping
      • global: all open documents
      • local: current document
      • related: all open documents with same syntax
      • none: language syntax symbols only
    • Register style.syntax[] entries as icons
    • Other related fixes
  • Attach command buffer to Renderer Window (#3)

  • Unified non-addons and addons releases (35d01f5f)

  • Removed lhelper as a build option (56b3a6c0)

  • Single pattern for common.utf8_chars (9ccfade6)

  • innosetup: installation path to environment task (allows command line access) (ce995eb2)

  • LuaJIT compat: allow nil msg on debug.traceback (ca0791a8)

  • Fix LuaJIT build on MacOS crosscompile (7d8340c4)

  • Updated MOD_VERSION_MINOR (4ea0da57)

  • Added workflow to produce setup and portable builds on every commit.

  • Rebranding of project name and assets.

Lite XL Inherited Changes

  • Allow command buffer to be expanded (#1297)
  • do not allow users to create an empty font group (#1303)
  • Make api_require's nodes const (#1296)
  • Fix a memory leak (#1305)
  • Don't set a value twice (#1306)
  • Make dirwatch sorting compatible with what file_bisect expects (#1300)
  • Handle readlink errors (#1292)
  • linewrapping: Disable horizontal scrolling when enabled (#1309)
  • plugin api: added missing luaL_typeerror (#1313)
  • defer lua error until after cleanup (#1310)
  • fix: center title and version in emptyview (#1311)
  • Reorganize resources/ + wasm target (#1244)
  • replace uses of SDL_Window with RenWindow (#1319)
  • Create Renderer Only When It Doesn't Exist (#1315)
  • language_md: add nix code block highlighting (#1323)
  • Use table.move to implement common.splice (#1324)
  • Make empty groups in regex.gmatch return their offset (#1325)
  • remove static libgcc from meson (#1290)
  • Avoid drawing hidden text in DocView:draw_line_text (#1298)
  • Added in Config Postload (#1336)
  • plugin api: allow usage on multiple source files (#1335)
  • Add "Open with Lite XL" to windows' context menu (#1333)
  • pass RenWindow by argument (#1321)
  • ci: fix msys build now requiring ca-certificates (#1348)
  • Getting rid of annoying forward slash on windows. (#1345)
  • Abstracted open_doc out to allow for more easy overriding. (#1344)
  • feat: add option to only draw whitespace if it is within selection (#1321)
  • Replace globally when replacing from selection (#1331)
  • Context menu fixes and keyboard navigation (#1338)
  • fix: exec() error not returned to parent (#1363)
  • Make mod-version follow semver (#1036)
  • Improved plugins config table handling (#1356)
  • Restore in-selection replace as discussed in #1331 (#1368)
  • NagView: properly rescale on scale change (#1379)
  • plugins scale: also rescale style.expanded_scrollbar_size (#1380)
  • Improve DocView:get_visible_line_range precision (#1382)
  • Allow groups to be used in end delimiter patterns in tokenizer (#1317)
  • Make mouse scrollwheel hovering tabs scroll the tab bar (#1314)
  • Correct the inverted tabs scrolling (02a99b17)
  • Make tab scrolling more flexible (#1384)
  • fix incorrect x_offset if opened docs have different tab sizes (#1383)
  • Added in ability to specify prefix via env variable. (#1388)
  • Use correct view for scrolling to find-replace:repeat-find results (#1400)
  • Add manifest on Windows (#1405)
  • Split Command struct into different structs for each command type (#1407)
  • refactor(main): move SetProcessDPIAware to manifests (#1413)
  • Improve text width calculation precision (#1408)
  • Use clipping functions provided by SDL (#1426)
  • Make TreeView follow the current tab (#1411)
  • Asynchronous process reaping (#1412)
  • Made coroutines make more sense, and fixed a bug. (#1381)
  • Disable trimwhitespace and drawwhitespace via their configs (#1446)
  • Allow tokenizer to pause and resume in the middle of a line (#1444)
  • Added in explicit touchscreen keyboard support. (#1389)
  • fix cursors positions when deleting multiple selections (#1393)
  • add autocompletion to multicursor (#1394)
  • Added in support for foreground and background events. (#1395)
  • Fix invalid EXEFILE and EXEDIR on Windows (#1396)
  • fix(windows-utf8-patch): fix os.getenv() not supporting UTF-8 output (#1397)
  • Add View dragging (#1402)
  • fix: fix differing stacktrace on stdout and file (#1404)
  • fix(CI): bump dependency versions (#1434)
  • Optimizing MSYS2 CI (#1435)
  • Update api_require to expose more symbols (#1437)
  • Make system.path_compare more case-aware (#1457)
  • feat: add statusview item to show selections (#1445)
  • Fix for api_require wrong macro && conditions (#1465)
  • upgrade header files to Lua 5.4 (#1436)
  • Cross compiling improvements + macOS universal binary (#1458)
  • Show error message in crash message box (#1461)
  • refactor(plugin_api): move the header into include/ (#1440)
  • Merge carets after doc:move-to-{previous,next}-char (#1462)
  • StatusView compat fix with older Lua runtimes (8cb84254)
  • Make system.path_compare more digit-aware (#1474)
  • fix(process): check for HANDLE_INVALID (#1475)
  • Added in double-clicking on emptyview and tab bar. (#1478)
  • Restore horizontal scroll position after scale change (#494)
  • Allowed for overrides of toolbar items (#1157)
  • detectindent: fix wrong detection reported by Adam (#1500)
  • Move lineguide below blinking cursor, fixes #1488 (#1511)
  • Close lua state when exiting on a runtime error (#1487)
  • Add mouse grab (#1501)
  • Add top tab margins (#1479)
  • Increase number of loadable glyphsets (#1524)