Skip to main content

· 2 min read
Jefferson Gonzalez

This release consist mostly of editor and build system bug fixes with some minor new features and enhancements.

Downloads on GitHub.

Changes Log

New Features

  • settings ui: added max_visible_commands config (#79)

Fixes

  • Fixes to autocomplete re-sizing code (#76)

  • Fix conflicting goto jump on tokenizer which was introduced by the skipping of patterns matching nothing code. (b2d03264)

Enhancements

  • Renamed numpad insert key from 'ins' to 'insert' and empty 5 to 'clear' (#73)

  • Added TextEditor category on linux (#77)

  • plugin language_lua: added unescaped [=string=] support (#78)

  • Alert by default of file changes in autoreload plugin (#82)

Build System

  • Build the plugin manager statically for msys (#80)

  • Fix for mbedtls2 detection on ppm subproject (abc2d93f)

  • Meson subproject updates (6f5ab121)

Lite XL Inherited Changes

  • Improve autocomplete scroll behavior (#1732)

  • Fix language_js regex/comment distinction (#1731)

  • scripts: not hardcode MSYSTEM (#1739)

  • Add SerenityOS platform support (#1745)

  • Limit language_js regex avoidance to numbers, and fix starting /* comments (#1744)

  • Fixed some typos in core.init (#1755)

  • Added Arduino syntax highlighting support alongside C++. (#1767)

  • Fix BufferSize in g_read for Windows (#1722)

  • Skip patterns matching nothing in tokenizer (#1743)

Full Changelog: https://github.com/pragtical/pragtical/compare/v3.3.0...v3.3.1

· One min read
Jefferson Gonzalez

Prominent changes on this release include: adaptive sizing of autocomplete box, TreeView horizontal scrollbar support, TreeList widget and performance improvements.

TreeList Widget for LSP Symbols

symbols-treeview

Adaptive Sizing Autocomplete

Downloads on GitHub.

Changes Log

API

  • Expose renderer.font.get_metadata() as a method, documented it, etc... (#64)

  • Expose get_partial_symbol on autocomplete plugin (for LSP) (#66)

  • Increase mod version from 3.3.1 to 3.4.0 (also because of new system.setenv) (#68)

Fixes

  • Fix modversion matching to align with semver (#71)

Enhancements

  • Enable horizontal scrollbar on treeview plugin (#63)

  • Added adaptive sizing to autocomplete plugin (#67)

Build System

  • Removed no longer needed microtar subproject (#70)

Widgets

  • Optimize SearchReplaceList collapse/uncollapse (#4)

  • FontDialog: use the font metadata preview text if available (#5)

  • Added new TreeList widget (#6)

Performance Improvements

  • Merged: glyphset loading optimization for faster font loading (#1543)

Lite XL Inherited Changes

  • process: fix unitialized variables (#1719)

  • Added .pyi extension to python. (#1728)

Full Changelog: https://github.com/pragtical/pragtical/compare/v3.2.2...v3.3.0

· 2 min read
Jefferson Gonzalez

Some of the changes for this release include: drops findfileimproved plugin merging the threading functionality directly into findfile plugin, introduces code that respects config.file_size_limit on various components of the editor and updates SDL2 meson wrap to latest.

It also incorporates various bug fixes both from upstream and our side.

Downloads on GitHub.

Changes Log

Fixes

  • Fix project module sometimes not loading. (#54)

  • Correct the runtime environment variable (#55)

  • Use unique GUID for the inno setup installer (#58)

  • Null check file_info on core.open_doc (4418bb6c)

Enhancements

  • Merge findfileimproved into findfile plugin and made the loading text update smoother. (#53)

  • Update thread initialization code to match main (#56)

  • Update macOS icons to be more close to apple guidelines (#57)

  • Limit max bytes read when detecting file encoding (#59)

  • Respect config.file_size_limit on some components (#60)

Lite XL Inherited Changes

  • Fix doc:create-cursor-previous/next-line with tabs (#1697)

  • Memory fixes (#1705)

  • Improve number highlighting for python syntax highlighting (#1704)

  • reorder nagview options on doc:save error to be more consistent with other nagview confirmations (#1696)

  • autoreload docs only if their filename matches an actual file (#1698)

  • language_js: support binary and octal representation (#1710)

  • process: style changes (#1709)

  • Add system.setenv (#1706)

Full Changelog: https://github.com/pragtical/pragtical/compare/v3.2.1...v3.2.2

· 2 min read
Jefferson Gonzalez

This release introduces project wide search and replace support:

project-search-replace

It also incorporates various bug fixes both from upstream and our side.

Downloads on GitHub.

Changes Log

New Features

  • Added project wide search and replace support (#48)

  • Added config.line_endings support to settings gui (c487a19f)

Fixes

  • Obtain symbols pattern/nonword-chars for subsyntax (#45)

  • Build: system_iconv is needed on windows fixes #46 (#47)

  • search_ui: set filepicker path on project-search:find (d8e51e54)

  • search_ui: do not set filepicker if path nil (6a5c9547)

  • Use cmalloc instead of malloc on render init (#51)

  • Check tokenizer state to prevent issues with evergreen (#52)

Enhancements

  • Remove recent projects that no longer exists (#49)

  • Prettify the session file output for easy reading (#50) (#50)

  • Reload applicable opened docs on project search/replace (bf471672)

Widgets

  • Added SearchReplaceList widget (#3)

  • SearchReplaceList: truncate long results (e54e8766)

Lite XL Inherited Changes

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

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

  • Fix dirmonitor sorting issues (#1599)

  • Fix language_js regex constant detection (#1581)

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

  • feat(process): allow commands and envs on proces_start (#1477)

  • Use \r\n for new files on Windows (#1596)

  • fix nagbar failed save message (#1678)

  • Fixed a minor bug, should close issue (#1680)

  • turn window_renderer into managed pointer (#1683)

Full Changelog: https://github.com/pragtical/pragtical/compare/v3.2.0...v3.2.1

· 3 min read
Jefferson Gonzalez

This release introduces a new CLI api and bundles the plugin manager by default:

pragtical-cli

It also incorporates various bug fixes both from upstream and our side.

Downloads on GitHub.

Changes Log

New Features

  • CLI parser API (#28)

  • Bundle the plugin manager as a meson subproject and new plugins button as part of the welcome screen (#33)

  • Allow console output on windows (#37)

Fixes

  • Some overwrite mode fixes:

    • Overwrite mode only on single character input (32f23027)
    • Overwrite mode only when no text selected (ae0d3502)
  • Fixed IPC plugin shmem not detected on MacOS (3cb3bf08)

  • Fix node resizing on touch events (lite-xl/lite-xl#1657)

  • Call process.__gc() when restarting on LuaJIT (3066f278)

  • Set a minimum window size to prevent sizing issues (c87ae559)

  • Fix an shmem segfault triggered on macOS (#44)

  • Check in autocomplete plugin if doc cached on symbols iterator (6546ee8c)

  • Fix editor crash on invalid UTF-8 (#38)

Enhancements

  • Improve toggle fullscreen using previous win state (c108b2d0)

  • Added document types and app category to Mac bundle (418e92f8)

  • Added defaults for the 'tag' highlight group (better evergreen support) (cfc96634)

Build System

  • Switch luajit wrap to git branch v2.1 (05e778d1)

  • Do no check for X11 presence on macOS (5e518511)

  • Added luajit meson support for msvc (#43)

Other Changes

Lite XL Inherited Changes

  • fix: dim rendering when antialiasing is turned off (#1641)

  • Mark unsaved named files as dirty (#1598)

  • Improve common.serialize (#1640)

  • Ignore keypresses during IME composition (#1573)

  • Save in the workspace unsaved named files and crlf status (#1597)

  • ci: fix diff files having "wrong" path separator (#1648)

  • Set SDL hint to prefer software render driver (#1646)

  • fix(dirmonitor): deadlock if error handler jumps somewhere else (#1647)

  • Sanitize tab index in Node:add_view (#1651)

  • ease transparency of nagbar dim (#1658)

Full Changelog: https://github.com/pragtical/pragtical/compare/v3.1.2...v3.2.0

· 2 min read
Jefferson Gonzalez

This release introduces a new widgets based welcome screen:

pragtical-welcome

It also features compatibility changes to properly work with the terminal plugin, and includes the accumulated bug fixes listed below as new color schemes.

Downloads on GitHub.

Changes Log

New Features

  • Syntax files symbol_pattern, non_word_chars props (#12)

  • New Welcome Screen - Converted emptyview to widget with additions (e08f1b18)

Fixes

  • Fixes #10 by using the scrollbar expanded size (#11)

  • Fix core:open-file to not be dependant on chdir (47bfcb07)

  • Respect coroutines redraw requests while on focus (f450b612)

  • Do not process clicks on contextmenu divider (#22)

  • Fixed issue with open file command (d8906c21)

  • MacOS: allow combining cmd+ctrl and replace alt with option (0674f1f5)

Enhancements

  • Improvements to language_css (f2a0790d)

  • Better compat math.{tointeger|type|ult} for luajit (80bce6c0)

  • Added Mike Pall bitops library to non jit lua for consistency (5efc02a8)

  • Use native bit operators on Lua >= 5.3 (10cecbec)

  • Highlight CUDA source code the same as C++ (#15)

UI Enhancements

  • statusview: separate item for doc position percent lite-xl/lite-xl#1579

  • Highlight default theme on settings ui, fixes #23 (cd7181df)

  • treeview: do not show hidden files by default (ecda0a0a)

Colors

  • Added new Yaru dark and light theme (5fa3cc13)

  • Improvements to tokyo-night (551c351d)

  • Added solarized_dark theme (b9791efa)

  • Improvements to Monokai themes (79264c47)

Build System

Widgets

  • Widget: delay RootView require
  • ListBox: rendering fixes
  • Skip ctrl+wheel by default, better tooltip remove
  • Fix floating ListBox rows offset
  • ListBox: horizontal scroll support
  • SelectBox: hide list when clicking outside
  • Better handle ctrl modkey state
  • Make widgets inherit name from parent (#2)
  • Give selectbox container same name as the selectbox (#1)

Lite XL Inherited Changes

  • Normalize strokes in fixed order (#1572)

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

  • Fix scrollbar misinterpreting percent (#1587)

  • Fix returned percent when clicking the Scrollbar track (e07ea0fe)

  • Adds super as a modkey. (#1590)

  • Add NaN guard to View:update_scrollbar (aa0d6f6c)

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

  • Fix Scrollbar.{expanded,contracted}_size documentation (70245ba0)

Full Changelog: https://github.com/pragtical/pragtical/compare/v3.1.1...v3.1.2

· 2 min read
Jefferson Gonzalez

This release fixes improper absolutes path treatment when opening files and introduces some other small improvements as new meson setup options. The new meson setup options are extra_colors and extra_languages which are set to true by default and will allow downloading additional languages and color schemes to be included on the meson install step.

Downloads on GitHub.

Changes Log

New Features

  • Merged Windows dark title bar theme support from lite-xl/lite-xl#514 with some changes to make it less invasive (7ca48a83)

  • Introduced new color schemes yaru and yaru_dark

Build System

  • CI Latest Builds: switched from debug to debugoptimized (cf880c5a)

  • Added widget as a meson subproject (bdddc4c6)

  • Added colors and languages as meson subproject (111ca76f)

Documentation

  • Fixed common.relative_path() doc comments (f44f10fa)

UI Enhancements

  • Added GUI for treeview show hidden/ignored (64eee3d3)

Fixes

  • Do not append cwd to absolute files on startup (853e6b76)

Other Changes

  • Added compat for lua 5.4 userdata (uv) functions (e048a9c8)

  • Refactored core.project into a core.object (a5df5be8)

    • Added doc comments
    • Exposed compile_ignore_files() as a method
  • Recompile ignore patterns when changed from gui (c3edcafc)

Lite XL Inherited Changes

  • Normalize stroke before adding keybind (#1334)
  • Make DocView aware of scrollbars sizes (#1177)

Full Changelog: https://github.com/pragtical/pragtical/compare/v3.1.0...v3.1.1

· 2 min read
Jefferson Gonzalez

This release introduces a newer project handling API which breaks compatibility with plugins that interacted with the old one. All affected official plugins were ported to the new API so make sure to update them. Some of them are: lsp, scm, console, editorconfig, gitopen, gitstatus, gofmt, smartopenselected and todotreeview.

Downloads on GitHub.

Changes Log

New Features

  • Merged project rework with fixes and performance improvements (ce5e8db4)

Documentation

  • Merged documentation for core.dirwatch (#1565)

  • Merged documentation for core.contextmenu (#1567)

Backward Incompatible Changes

  • Project handling functions have been completely replaced as explained on (#1455)

Fixes

  • settings: respect disabled plugins on lua modules (c2ffe3e2)

  • plugin workspace: delay workspace loading (41e5caa0)

  • Fix autoreload plugin bugs and performance issues (ec0ae57f)

Other Changes

  • Merged feat(src/renderer): unify fontgroup baseline (#1560)

  • Merged and customized use Lua wrap by default (#1481)

  • Updated all meson wraps to latest versions

  • comment typo in data/core/init.lua (#1549)

Lite XL Inherited Changes

  • Fix #1538 log scrolls automatically (the real PR) (#1546)

  • Skip checking files if no filename was provided to syntax.get (8a8bd2f9)

  • Changed log view settings (#266)

  • Allow setting custom glyphset size (#1542)

  • style(src/renderer): use FreeType header names (#1554)

  • Return state when tokenizing plaintext syntaxes (b6ac4f1e)

  • feat(src/renderer): stream fonts with SDL_RWops on all platforms (#1555)

  • Updated extension for mac. (#1563)

  • Documentation for core.command (#1564)

Full Changelog: https://github.com/pragtical/pragtical/compare/v3.0.0...v3.1.0

· 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)