Skip to main content

ยท One min read
Jefferson Gonzalez

This quick minor release introduces some more enhancements and fixes for annoyances found while testing other stuff, most of them are triggered in some edge cases but still, they were causing an itch ๐Ÿ˜„

Some nice additions are: better restoration of window size on startup which was causing me headaches on wayland, support for autocompletion of preprocessor symbols on C/C++ and fallback detection of UTF-16/32 when no encoding was detected.

Downloads on GitHub.

Changes Logโ€‹

Fixesโ€‹

  • If no surface return on font_render_glyph (#114)

  • Restore support for tokenizer empty matches with subsyntax (#111)

  • If encoding detect fails check if UTF-16/32 LE/BE (#115)

Enhancementsโ€‹

  • Better matching of placeholder chars (_) on lua (#112)

  • Better restore of window mode/size on startup (#113)

  • Added custom symbols pattern to language c and cpp (#116)

  • autocomplete: strip punctuations from partials (#117)

Full Changelog: https://github.com/pragtical/pragtical/compare/v3.4.0...v3.4.1

ยท 3 min read
Jefferson Gonzalez

After two months finally a release with the accumulated sum of new features, fixes and enhancements!

One notable change is the DocView cache for better performance on files with really long lines, which previously caused the editor to hang when plugins like drawwhitespace, colorpreview or selectionhighlight were enabled.

Also, this release introduces code that moves window management from C to Lua, which breaks most system.{*window*} functions. Updating the following plugins will be necessary for a smooth transition:

  • centerdoc
  • opacity
  • lsp

Downloads on GitHub.

Changes Logโ€‹

New Featuresโ€‹

  • Add ui config to toggle the treeview toolbar (#84)

  • Support multiple projects on the findfile plugin (#100)

  • Multiproject handling for statusview doc:file (#101)

  • Introductory window creation and management using Lua (#108)

Performance Improvementsโ€‹

  • Basic doc/docview cache for better performance (#105)

Fixesโ€‹

  • CLI: lowercase the appname on usage description (#92)

  • Mark common.serializeoptions fields as optional (#95)

  • Render the statusview message on demand (#103)

  • Check doc is still in view before autoreloading it (#104)

  • Handle conversion of \ to ยฅ as reported on #94 (#106)

  • Support for utf-8 text reduction on node title (#107)

Enhancementsโ€‹

  • Add /usr/local/bin, /usr/local/sbin to PATH on Mac OS X (#87)

  • Assign ctrl+, binding to open user module command (#88)

  • Update JetBrains Mono font to latest version 2.304 (#91)

  • Auto chdir to project depending on active document (#93)

  • Improvements to core.visited_files handling (#96)

Workaroundsโ€‹

  • Disable assert on font resizing to allow fonts scanning. (#89)

Build Systemโ€‹

  • Changes to msys build on rolling release workflow (d5811328)

  • Various maintainance changes to github workflows

Widgetsโ€‹

  • Use correct path separator on FilePicker widget (1347e8c3)

  • Update for lua window management (#7)

Lite XL Inherited Changesโ€‹

  • build: fix dirmonitor backend selection (#1790)

  • api/system: fix newlines returned by get_clipboard (#1788)

  • Change co_wait to co_await in language_cpp (#1800)

  • build: fix dirmonitor backend selection (#1790)

  • Handle static constexpr in language_cpp (#1806)

  • improve number highlighting for c (#1752)

  • language_cpp: backport number highlighting from c (#1818)

  • Add support for binary integer literals. (#1819)

  • Update language_python.lua (#1723)

  • rootview: workaround macos weird dnd event timing

  • Expand Process API (#1757)

  • fix(dirmonitor): avoid calling the change callback multiple times in the same notification (#1824)

  • core/rootview: fix dnd multiple folders into dock (#1828)

  • fix(doc): convert Doc:merge_cursors parameter from "selection index" to table index

  • core/doc: fix wrong table index in Doc:merge_cursors

  • Keep font scale updated for RENDERER backend

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

ยท 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