Skip to content

Lite XL v2.1.2 Release Candidate 3

Pre-release
Pre-release
Compare
Choose a tag to compare
@github-actions github-actions released this 05 Dec 00:12
· 223 commits to master since this release
3fb19f0

This release addresses some issues present in the previous release.

Notes

  • macOS users no longer need to run xattr -cr /Applications/Lite\ XL.app before running Lite XL. Instead, locate Lite XL in Finder, right-click the application and select "Open".
  • The Addons package is no longer the recommended way for extra plugins out-of-the-box. Users should use lpm to install and manage their plugins. lpm will be bundled in a future release of Lite XL.

New Features

  • The context menu in TreeView is now navigable with a keyboard.
    (#1338)

  • A universal build of Lite XL is now available for macOS.
    This build runs natively on both Intel and Apple Silicon macs.
    (#1458)

  • Most Unicode characters should be displayed properly
    if your fonts support them.
    (#1524)

  • LogView will no longer scroll automatically if the user had scrolled.
    The LogView will only scroll automatically when the user scrolls up
    to the last entry.
    (#1546)

  • When using different fonts (especially fonts that render different scripts),
    the letters will be aligned vertically.
    (#1560)

  • Unsaved named files are now saved in the workspace.
    (#1597)

  • macOS builds are now signed with a developer certificate.
    This allows the user to right click the application in Finder and execute
    it directly.
    (#1656)

Backward Incompatible Changes

  • The native plugin API is now usable on multiple source files,
    without causing any duplicated symbol errors during compilation.
    Plugins using the new plugin API header must define LITE_XL_PLUGIN_ENTRYPOINT
    before importing the header, in one of their source files.
    (#1335)

  • The native plugin API header now follows the Lua 5.4 API.
    Previously, the plugin API header follows the Lua 5.2 API.
    (#1436)

  • On Linux, process.start() will now throw an error if execv() fails.
    Previously, the function will return a valid Process object and the error message
    can be obtained by reading the standard output.
    (#1363)

  • Lite XL will use the default SCALE of 1 due to unreliable display
    scale detection. This may be fixed in a later version of Lite XL.

Performance Improvements

  • Allow command buffer to be expanded.
    (#1297)

  • Use table.move to implement common.splice.
    (#1324)

  • Create renderer only when it doesn't exist.
    (#1315)

  • Avoid drawing hidden text in DocView:draw_line_text.
    (#1298)

  • Don't calculate widths per-uft8-char when not needed.
    (#1409)

  • Allow tokenizer to pause and resume in the middle of a line.
    (#1444)

  • Optimize CI build times on MSYS2.
    (#1435)

  • Significant memory usage improvements when using huge fonts on Windows.
    (#1555)

  • The program should be much more responsive when running background tasks.
    (#1601)

Fixes and other changes

Fixes

  • Fix minor typos in user module
    (#1289)

  • Do not allow users to create an empty font group
    (#1303)

  • Fix a memory leak
    (#1305)

  • Make dirwatch sorting compatible with what file_bisect expects
    (#1300)

  • Handle readlink errors
    (#1292)

  • Disable horizontal scrolling when linewrapping is enabled
    (#1309)

  • Update widgets install location

  • Add missing luaL_typeerror symbol to plugin API
    (#1313)

  • Defer lua error until after cleanup
    (#1310)

  • Make empty groups in regex.gmatch return their offset
    (#1325)

  • Add missing header declaration

  • Fix msys build now requiring ca-certificates
    (#1348)

  • Fix path to macOS arm64 cross file in GItHub workflows

  • Fix Doc contextmenu not registering commands if scale plugin is not found
    (#1338)

  • Fix TreeView contextmenu commands not working if the mouse hovers DocView
    (#1338)

  • Fix incorrect contextmenu predicate
    (#1338)

  • Properly rescale NagView on scale change
    (#1379)

  • Scale plugin also rescales style.expanded_scrollbar_size
    (#1380)

  • Improve DocView:get_visible_line_range precision
    (#1382)

  • Fix up some post 5.1/JIT Symbols
    (#1385)

  • Fix incorrect x_offset if opened docs have different tab sizes
    (#1383)

  • Use correct view for scrolling to find-replace:repeat-find results
    (#1400)

  • Improve text width calculation precision
    (#1408)

  • Add asynchronous process reaping
    (#1412)

  • fix cursors positions when deleting multiple selections
    (#1393,
    #1463)

  • Fix invalid EXEFILE and EXEDIR on Windows
    (#1396)

  • Fix os.getenv() not supporting UTF-8 output
    (#1397)

  • Fix differing stacktrace on stdout and file
    (#1404)

  • Update api_require to expose more symbols
    (#1437)

  • Make system.path_compare more case-aware
    (#1457)

  • Fix for api_require wrong macro && conditions
    (#1465)

  • Merge carets after doc:move-to-{previous,next}-char
    (#1462)

  • Process API improvements (again)
    (#1370)

  • Make system.path_compare more digit-aware
    (#1474)

  • Check for HANDLE_INVALID in Process API
    (#1475)

  • Fix linewrapping bug to do with wordwrapping

  • Fix compiler warning for printing size_t in rencache.c

  • Return error string from C searcher

  • Restore horizontal scroll position after scale change
    (#494)

  • Fix memory leak in renderer.c when freeing glyphsets

  • Move lineguide below blinking cursor
    (#1511)

  • Close lua state when exiting on a runtime error
    (#1487)

  • Mark linewrapping open_files table as weak

  • Don't use core.status_view if not yet initialized when logging

  • Revert "core syntax: strip the path from filename on syntax.get (#1168)"
    (#1322)

  • Make Doc:sanitize_position return a more appropriate col
    (#1469)

  • Skip checking files if no filename was provided to syntax.get

  • Normalize stroke before adding keybind
    (#1334)

  • Make DocView aware of scrollbars sizes
    (#1177)

  • Normalize strokes in fixed order
    (#1572)

  • Defer core:open-log until everything is loaded
    (#1585)

  • Fix returned percent when clicking the Scrollbar track

  • Fixed C++14 digit separators
    (#1593)

  • Make linewrapping consider the expanded Scrollbar size

  • Fix dimmed text when antialiasing is turned off
    (#1641)

  • Mark unsaved named files as dirty
    (#1598)

  • Make common.serialize() locale-independent and nan/inf compatible
    (#1640)

  • Ignore keypresses during IME composition
    (#1573)

  • Fix deadlock if error handler jumps somewhere else
    (#1647)

  • Avoid considering single spaces in detectindent
    (#1595)

  • Fix deleting indentation with multiple cursors
    (#1670)

  • Fix `set_target_size`` passing the wrong value to plugins
    (#1657)

  • Limit system.{sleep,wait_event} to timeouts >= 0
    (#1666)

  • Fix running core.step when receiving an event while not waiting

  • Fix dirmonitor sorting issues
    (#1599)

  • Scale mouse coordinates by window scale
    (#1630)

  • Made coroutines make more sense, and fixed a bug.
    (#1381)

  • Fix selecting newlines with `find-replace:select-add-{next,all}``
    (#1608)

  • Fix editing after undo not clearing the change id
    (#1574)

  • Fix language_js regex constant detection
    (#1581)

  • Fix patterns starting with ^ in tokenizer
    (#1645)

  • Use x offset to define render command rect in rencache_draw_text
    (#1618)

  • Improve font/color change detection in language_md
    (#1614)

  • Allow long commands and envs on process_start
    (#1477)

Other Changes

  • Make api_require's nodes const
    (#1296)

  • Don't set a value twice
    (#1306)

  • Center title and version in emptyview
    (#1311)

  • Use master branch for packaging plugins for addons release

  • Reorganize resources folder and add wasm target
    (#1244)

  • Replace uses of SDL_Window with RenWindow
    (#1319)

  • Update dummy dirmonitor method signature to match prototypes

  • Remove static libgcc from meson
    (#1290)

  • Pass RenWindow by argument
    (#1321)

  • Get rid of annoying forward slash on windows
    (#1345)

  • Improved plugins config table handling
    (#1356)

  • Add manifest on Windows
    (#1405)

  • Split Command struct into different structs for each command type
    (#1407)

  • Move SetProcessDPIAware to manifests
    (#1413)

  • Use clipping functions provided by SDL
    (#1426)

  • Aggregate SDL_Surfaces and their scale in RenSurface
    (#1429)

  • Disable trimwhitespace and drawwhitespace via their configs
    (#1446)

  • Bump dependency versions
    (#1434)

  • Improvements to cross-compilation
    (#1458)

  • Move native plugin API header into include/
    (#1440)

  • Build releases with Ubuntu 18.04 container
    (#1460)

  • Update GitHub Actions dependencies

  • Make all parameters for set_window_hit_test optional in documentation

  • Attach command buffer to Renderer Window
    (#1472)

  • Fix comment typo in object.lua
    (#1541)

  • Allow setting custom glyphset size
    (#1542)

  • Use FreeType header names in renderer.c
    (#1554)

  • Add documentation for core.common
    (#1510)

  • Document missing parameter for system.path_compare
    (#1566)

  • Add documentation for core.command
    (#1564)

  • Update the Installing prebuild section in README.md
    (#1548)

  • Updated README.md to remove previously installed files
    prior to installing a new version

  • Use lite-xl Build Box to build releases
    (#1571)

  • Use Lua wrap by default
    (#1481)

  • Add documentation for contextmenu
    (#1567)

  • Use dmgbuild to create DMGs
    (#1664)

  • Un-hardcode lua subproject detection and update dependencies
    (#1676)

  • Make license time-independent
    (#1655)

Full Changelog: v2.1.1...v2.1.2-rc3