A lightweight text editor written in Lua
MIT License
Bot releases are visible (Hide)
This release addresses severe bugs not found in previous releases, and improves the usability of the editor.
Other downloads such as ZIP files for Windows and lightweight releases are available below.
For OS requirements, please refer to the relevant section in the README.
.pyi
extension to language_python
(#1728)CommandView
and autocomplete scroll behavior (#1732)from
symbol to support ESM (#1754)language_cpp
(#1767)src/api/process.c
(#1719)language_js
regex/comment distinction (#1731)language_js
regex avoidance to numbers, and fix starting /*
comments (#1744)buffer_size
in g_read
for Windows (#1722)Changes: https://github.com/lite-xl/lite-xl/compare/v2.1.3...v2.1.4
Published by github-actions[bot] 6 months ago
This release addresses severe bugs not found in previous releases, and improves the usability of the editor.
Other downloads such as ZIP files for Windows and lightweight releases are available below.
For OS requirements, please refer to the relevant section in the README.
.pyi
extension to language_python
(#1728)CommandView
and autocomplete scroll behavior (#1732)from
symbol to support ESM (#1754)language_cpp
(#1767)src/api/process.c
(#1719)language_js
regex/comment distinction (#1731)language_js
regex avoidance to numbers, and fix starting /*
comments (#1744)buffer_size
in g_read
for Windows (#1722)Changes: https://github.com/lite-xl/lite-xl/compare/v2.1.3...v2.1.4-rc1
Published by github-actions[bot] 9 months ago
This release addresses severe bugs not found in previous releases.
Other downloads such as ZIP files for Windows and lightweight releases are available below.
For OS requirements, please refer to the relevant section in the README.
Lite XL will use the default SCALE
of 1 due to unreliable display scale detection,
causing UI elements to have incorrect sizing in High DPI displays.
To workaround this issue, set the LITE_SCALE
environment variable to your desired display scale.
macOS users should not run xattr -C /Applications/Lite\ XL.app
anymore,
instead they could right-click the program in Finder and click "Open".
This should allow the user to run Lite XL directly.
Fix doc:create-cursor-{previous,next}-line
with tabs
(#1697)
Fix heap buffer overflow and memory leaks in process and renderer API
(#1705)
Improve Python number syntax highlighting
(#1704)
Fix inconsistent NagView options on doc:save
(#1696)
Fix crashes with autoreload when files are deleted externally and replaced with a directory
(#1698)
Improve JavaScript number syntax highlighting
(#1710)
Changes: https://github.com/lite-xl/lite-xl/compare/v2.1.2...v2.1.3
Published by github-actions[bot] 9 months ago
This release addresses severe bugs not found in previous releases.
Other downloads such as ZIP files for Windows and lightweight releases are available below.
For OS requirements, please refer to the relevant section in the README.
Lite XL will use the default SCALE
of 1 due to unreliable display scale detection,
causing UI elements to have incorrect sizing in High DPI displays.
To workaround this issue, set the LITE_SCALE
environment variable to your desired display scale.
macOS users should not run xattr -C /Applications/Lite\ XL.app
anymore,
instead they could right-click the program in Finder and click "Open".
This should allow the user to run Lite XL directly.
Fix doc:create-cursor-{previous,next}-line
with tabs
(#1697)
Fix heap buffer overflow and memory leaks in process and renderer API
(#1705)
Improve Python number syntax highlighting
(#1704)
Fix inconsistent NagView options on doc:save
(#1696)
Fix crashes with autoreload when files are deleted externally and replaced with a directory.
(#1698)
Improve JavaScript number syntax highlighting
(#1710)
Changes: https://github.com/lite-xl/lite-xl/compare/v2.1.2...v2.1.3-rc2
Published by github-actions[bot] 10 months ago
This release addresses some issues present in the previous release, and improves the performance and stability.
Other downloads such as ZIP files for Windows and lightweight releases are available below.
Lite XL will use the default SCALE
of 1 due to unreliable display scale detection,
causing UI elements to have incorrect sizing in High DPI displays.
To workaround this issue, set the LITE_SCALE
environment variable to your desired display scale.
macOS users should not run xattr -C /Applications/Lite\ XL.app
anymore,
instead they could right-click the program in Finder and click "Open".
This should allow the user to run Lite XL directly.
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)
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)
Optimize background tasks response time. (#1601)
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 followed the Lua 5.2 API.
(#1436)
On Linux, process.start()
will now throw an error if execv()
fails.
(#1363)
Please refer to the changelog for bugfixes and other changes.
Changes: https://github.com/lite-xl/lite-xl/compare/v2.1.1...v2.1.2
Published by github-actions[bot] 10 months ago
This release addresses some issues present in the previous release.
Other downloads such as ZIP files for Windows and Base releases are available below.
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)
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)
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 followed the Lua 5.2 API.
(#1436)
On Linux, process.start()
will now throw an error if execv()
fails.
(#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.
Set the LITE_SCALE
environment variable to override this value.
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
Fix 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
(#1667)
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)
Fix typo in drawwhitespace.lua
Fix NagBar save failed message
(#1678)
Fix typo in drawwhitespace.lua
Add autocompletion to multicursor
(#1394)
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)
Improve 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)
Update 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: https://github.com/lite-xl/lite-xl/compare/v2.1.2-rc3...v2.1.2-rc4
Published by github-actions[bot] 11 months ago
This release addresses some issues present in the previous release.
xattr -cr /Applications/Lite\ XL.app
before running Lite XL. Instead, locate Lite XL in Finder, right-click the application and select "Open".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)
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.
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)
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)
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: https://github.com/lite-xl/lite-xl/compare/v2.1.1...v2.1.2-rc3
Published by github-actions[bot] almost 2 years ago
.dmg
file (since Lite XL is not signed anymore) you will need to clear the App attributes in order to be able to launch it. To do so open the terminal and run xattr -cr /Applications/Lite\ XL.app
, afterwards you should be able to launch Lite XL normally.The addon packages besides including the Lite XL binary also include additional plugins to make the initial experience more accesible. The extra features the addon packages include are:
Add config.keep_newline_whitespace option (#1184)
Add regex.find_offsets, regex.find, improve regex.match (#1232)
Added regex.gmatch (#1233)
add touch events (#1245)
highlighter: autostop co-routine when not needed (#881)
core: ported regex.gsub to faster native version (#1233)
For correctness, the behaviour of regex.match
was changed to more closely behave like string.match
.
regex.find_offsets
now provides the previous functionality of regex.match
with a more appropriate function name.
regex.gsub
doesn't provides the indexes of matches and replacements anymore, now it behaves more similar to string.gsub
(the only known affected plugin was regexreplacepreview
which has already been adapted)
statusview: respect right padding of item tooltip (0373d29f)
feat: encode home in statusview file path (#1224)
autocomplete: wrap the autocomplete results around (#1223)
feat: alert user via nagview if file cannot be saved (#1230)
contextmenu: make divider less aggressive (#1228)
Improve IME location updates (#1170)
fix: move tab scroll buttons to remove spacing before 1st tab (#1231)
Allow TreeView file operation commands when focused (#1256)
contextmenu: adjust y positioning if less than zero (#1268)
Don't sort in Doc:get_selection_idx with an invalid index (b029f599)
tokenizer: remove the limit of 3 subsyntaxes depth (#1186)
dirmonitor: give kevent a timeout so it doesn't lock forever (#1180)
dirmonitor: fix win32 implementation name length to prevent ub (5ab8dc0)
Make linewrapping plugin recompute breaks before scrolling (#1190)
Add missing get_exe_filename() implementation for FreeBSD (#1198)
(Windows) Load fonts with UTF-8 filenames (#1201)
Use subsyntax info to toggle comments (#1202)
Pass the currently selected item to CommandView validation (#1203)
Windows font loading hotfix (#1205)
better error messages for checkcolor (#1211)
Fix native plugins not reloading upon core:restart (#1219)
Converted from bytes to characters, as this is what windows is expecting (5ab8dc02)
Fix some syntax errors (#1243)
toolbarview: Remove tooltip when hidden (#1251)
detectindent: Limit subsyntax depth (#1253)
Use Lua string length instead of relying on strlen (#1262) (#1262)
Fix popping subsyntaxes that end consecutively (#1246)
Fix userdata APIs for Lua 5.4 in native plugin interface (#1188)
Fix horizontal scroll with touchpad on MacOS (74349f8e)
(Windows) MSVC Support (#1199)
meson: updated all subproject wraps (#1214)
set arch tuple in meson (#1254)
update documentation for system (#1210)
docs api: added dirmonitor (7bb86e16)
trimwhitespace: expose functionality and extra features (#1238)
plugins projectsearch: expose its functionality (#1235)
Simplify SDL message boxes (#1249)
Add example settings to overwrite an existing key binding (#1270)
Fix two typos in data/init.lua (#1272)
Updated meson wraps to latest (SDL v2.26, PCRE2 v10.42)
Full Changelog: https://github.com/lite-xl/lite-xl/compare/v2.1.0...v2.1.1
Published by github-actions[bot] about 2 years ago
.dmg
file (since Lite XL is not signed anymore) you will need to clear the App attributes in order to be able to launch it. To do so open the terminal and run xattr -cr /Applications/Lite\ XL.app
, afterwards you should be able to launch Lite XL normally.The addon packages besides including the Lite XL binary also include additional plugins to make the initial experience more accesible. The extra features the addon packages include are:
Make distinction between line and block comments, and added all appropriate functionality to the commenting/uncommenting lines.
Added in line paste mode, if you copy without a selection.
Many improvements to treeview, including keyboard navigation of treeview, and ability to specify single vs. double-click behavior.
Added in soft line wrapping as core plugin, under linewrapping.lua
, use F10
to activate.
Revamped StatusView API with new features that include:
Added renderer.font.group
interface to set up font fallback groups in the font renderer, if a token doesn't have a corresponding glyph.
Example:
local emoji_font = renderer.font.load(USERDIR .. "/fonts/NotoEmoji-Regular.ttf", 15 * SCALE)
local nonicons = renderer.font.load(USERDIR .. "/fonts/nonicons.ttf", 15 * SCALE)
style.code_font = renderer.font.group({style.code_font, nonicons, emoji_font})
Added in the ability to specify mouse clicks in the keymap, allowing for easy binds of ctrl+lclick
, and the like.
Example:
keymap.add { ["ctrl+shift+3lclick"] = "core:open-log" }
Improved ability for plugins to be loaded at a given time, by making the convention of defining a config for the plugin using common.merge
to merge existing hashes together, rather than overwriting.
Releases will now include all language plugins and the settings gui plugin.
New core.warn was introduced.
Added suggestions warping for CommandView
.
Allow regexes in tokenizer to split tokens with group.
Added settings gui support to core plugins.
Support for stricter predicates by appending a !
, eg: "core.docview!"
.
UTF8 support in tokenizer and new utf8 counter parts of string functions, eg: string.ulen
, string.ulower
, etc...
Added utf8 support on doc lower and upper commands.
Allow syntax patterns to match with the beginning of the line.
Example:
{ pattern = "^my_pattern_starting_at_beginning", type="symbol" }
Implemented new function to retrieve current process id of lite-xl system.get_process_id().
Add syntax symbols to auto-complete.
Add animation categories to enable finer transitions control.
Added in a native plugin interface that allows for C-level interfacing with a statically-linked lite-xl. The implementation of this may change in future.
Config: added new development option to prevent plugin version checking at startup named skip_plugins_version
Added a smoothing and strikethrough option to font loading (#1087)
Allow command predicates to manage parameters, allow overwriting commands (#1098)
Added in simple directory search to treeview. (#1110)
Added in native modules suffixes. (#1111)
plugin scale: added option to set default scale (#1115)
Added in ability to have init.so as a require for cpath. (#1126)
Added system.raise_window() (#1131)
Initial horizontal scrollbar support (#1124)
IME support (#991)
Performance improvement of detect indent plugin.
Improve performance of ren_draw_rect.
Improved tokenizer performance.
drawwhitespace: Cache whitespace location
CommandView: improve performance by only drawing visible
Upgraded Lua to 5.4, which should improve performance, and provide useful extra functionality. It should also be more available out of the box with most modern linux/unix-based package managers.
Bumped plugin mod-version number as various interfaces like: DocView
, StatusView
and CommandView
have changed which should require a revision from plugin developers to make sure their plugins work with this new release.
Changed interface for key handling; now, all components should return true if they've handled the event.
For plugin developers, declaring config options by directly assigning to the plugin table (eg: config.plugins.plugin_name.myvalue = 10
) was deprecated in favor of using common.merge
.
Example:
config.plugins.autowrap = common.merge({
enabled = false,
files = { "%.md$", "%.txt$" }
}, config.plugins.autowrap)
DocView:draw_text_line
and related functions been used by plugin developers require a revision, since some of this interfaces were updated to support line wrapping.
Removed cp_replace
, and replaced this with a core plugin, drawwhitespace.lua.
For plugins the usage of the --lite-xl
version tag was dropped in favor of --mod-version
.
Overriding StatusView:get_items()
has been deprecated in favor of the new dedicated interface to insert status bar items:
New Interface:
------@return StatusView.Item
function StatusView:add_item(
{ predicate, name, alignment, get_item, command, position, tooltip, separator }
) end
Example:
core.status_view:add_item({
predicate = nil,
name = "status:memory-usage",
alignment = StatusView.Item.RIGHT,
get_item = function()
return {
style.text,
string.format(
"%.2f MB",
(math.floor(collectgarbage("count") / 10.24) / 100)
)
}
end,
command = nil,
position = 1,
tooltip = "lua memory usage",
separator = core.status_view.separator2
})
CommandView:enter now accepts a single options table as a parameter, meaning that the old way of calling this function will now show a deprecation message. Also CommandView:set_text
and CommandView:set_hidden_suggestions
has been deprecated.
Example:
core.command_view:enter("Title", {
submit = function() end,
suggest = function() return end,
cancel = function() end,
validate = function() return true end,
text = "",
select_text = false,
show_suggestions = true,
typeahead = true,
wrap = true
})
Removed dmon
, and implemented independent backends for dirmonitoring. Also more cleanly split out dirmonitoring into its own class in lua, from core.init. We should now support FreeBSD; and any other system that uses kqueue
as their dir monitoring library. We also have a dummy-backend, which reverts transparently to scanning if there is some issue with applying OS-level watches (such as system limits).
Removed libagg
and the font renderer; compacted all font rendering into a single renderer.c file which uses libfreetype
directly. Now allows for ad-hoc bolding, italics, and underlining of fonts.
Removed reproc
and replaced this with a simple POSIX/Windows implementation in process.c
. This allows for greater tweakability (i.e. we can now break
for debugging purposes), performance (startup time of subprocesses is noticeably shorter), and simplicity (we no longer have to link reproc, or winsock, on windows).
Split out Node
and EmptyView
into their own lua files, for plugin extensibility reasons.
Improved fuzzy_matching to probably give you something closer to what you're looking for.
Improved handling of alternate keyboard layouts.
Added in a default keymap for core:restart
, ctrl+shift+r
.
Improvements to the C and C++ syntax files.
Improvements to markdown syntax file.
Improvements to borderless mode on Windows.
Fixed a bunch of problems relating to multi-cursor.
NagView: support vscroll when message is too long.
Meson improvements which include:
Always check if the beginning of the text needs to be clipped.
Added git commit on development builds.
Update autocomplete with changes needed for latest LSP plugin.
Use SDL to manage color format mapping in ren_draw_rect.
Various code clean ups.
Set the correct working directory for the AppImage version.
Core: fixes and changes to temp file functions.
TreeView improvements for multi-project.
Open LogView on user/project module reload error.
Check if "open" pattern is escaped
Support UTF-8 on Windows (Lua)
Make system.* functions support UTF8 filenames on windows
Fix memory leak and wrong check in font_retrieve
CommandView: do not change caret size with config.line_height (#1080)
Fixed process layer argument quoting; allows for strings with spaces (#1132)
Draw lite-xl icon in TitleView (#1143)
Add parameter validation to checkcolor and f_font_group (#1145)
Many, many, many more changes that are too numerous to list.
Full Changelog: https://github.com/lite-xl/lite-xl/compare/v2.0.5...v2.1.0
Published by franko over 2 years ago
This new release fixes some outstanding problem with the directory monitoring and add some minor improvements.
Now any modification to the project's module is immediately applied when the file is saved.
This is very useful to configure a config.ignore_files
and have an immediate feedback.
As an additional improvement, now when reloading the project's module, we check again if the project fits within the maximum number of files and the application acts accordingly.
This means that if a project exceeds the max project files limit and we act by ignoring some large directories we immediately get back the usual behavior with all the project files indexed and easily reachable.
To be also more beginner friendly now, when creating a new project's module, we propose a template with some useful instructions.
Until now the ìgnore_files`mechanism was limited to the name of the file or directory and it was not possible to look at its path within the project folder.
We solved the problem by implementing two new mechanisms inspired by gitignore.
Essentially there are two new rules:
In the first case, when the pattern corresponds to a directory, a '/' will be
appended to the name of the directory before checking the pattern.
In the second case, when the pattern corresponds to a path, the complete path of
the file or directory will be used with an initial '/' for the project's root.
The new mechanisms are backward compatible so existing project's module should work as before.
Fix several problems with the directory monitoring library.
Now the application should no longer assert when some related system call fails and we fallback to rescan when an error happens.
On linux we no longer use the recursive monitoring which was a source of problem.
Directory monitoring is now aware of symlinks and treat them appropriately.
Fix problem when encountering special files type on linux.
Improve directory monitoring so that the related thread actually waits without using
any CPU time when there are no events.
Improve the suggestion when changing project folder or opening a new one.
Now the previously used directory are suggested but if the path is changed the actual existing directories that match the pattern are suggested.
In addition always use the text entered in the command view even if a suggested entry is highlighted.
With the new implementation it is to switch to a recently used project but you can also navigate the filesystem to easily find any directory.
The NagView warning window now no longer moves the documents' content.
The message is now completely drawn over the existing content to be less intrusive.
Published by franko almost 3 years ago
Fix some bugs related to newly introduced directory monitoring using the dmon library.
Fix a problem with plain text search using Lua patterns by error.
Fix a problem with visualization of UTF-8 characters that caused garbage characters
visualization.
Other fixes and improvements contributed by @Guldoman and @adamharrison.
Published by franko almost 3 years ago
Replace periodic rescan of project folder with a notification based system using the dmon library. Improves performance especially for large project folders since the application no longer needs to rescan.
The application also reports immediately any change in the project directory even when the application is unfocused.
Provide out-of-branch LuaJIT-based version of the application.
Improved find-replace reverse and forward search.
Fixed a bug in incremental syntax highlighting affecting documents with multiple-lines comments or strings.
The application now always shows the tabs in the documents' view even when a single document is opened. Can be changed with the option config.always_show_tabs
.
Fix problem with numeric keypad function keys not properly working.
Fix problem with pixel not correctly drawn at the window's right edge.
Treat correctly and open network paths on Windows.
Add some improvements for very slow network filesystems.
Fix problem with python syntax highlighting.
Published by franko about 3 years ago
These release includes mainly fixes for known problems but also a few nice improvements.
Long time Lite XL users should not miss a change in the behavior of ctrl+d
that now add the next occurrence of the current selection in mutli-cursor mode.
Below the details of the changes.
-psn
argument passed to the application on macOS.treeview:open-in-system
command on Windows.ctrl+d
to add a multi-cursor selection to the next occurrence. The old behavior to move the selection to the next occurrence is now done using the shortcut ctrl+f3
.ctrl+shift+l
.With many thanks to the contributors: @adamharrison, @takase1121, @Guldoman, @redtide, @Timofffee, @boppyt, @Jan200101.
Published by franko about 3 years ago
With this release we fix a few bugs and we mandate the mod-version 2 for plugins. This means that users should ensure they have up-to-date plugins for Lite XL 2.0.
Here some details about the bug fixes:
This major release introduce some important new features:
Published by franko about 3 years ago
This major release introduce some important new features:
Published by franko over 3 years ago
First beta release for new 2.0 version.
Published by franko over 3 years ago
Include syntax support for C++ from lite-plugins repository, adapted to use new multi-part patterns.
Respect the XDG_CONFIG_HOME
variable if set to define the USERDIR.
Fix an error that prevented navigating large repositories in some rare situations.
Minor performance improvements for drawing operations and events handling.
Improve macOS keybindings thanks to @bjornbm and @prantlf.
Improve behavior of applications when restoring workspaces to avoid displaying empty documents.
Published by franko over 3 years ago
When opening directories with too many files lite-xl now keep displaying files and directories in the treeview.
The application remains functional and the directories can be explored without using too much memory.
In this operating mode the files of the project are not indexed so the command "Core: Find File" will act as the "Core: Open File" command.
The "Project Search: Find" will work by searching all the files present in the project directory even if they are not indexed.
Implemented changing fonts per syntax group by @liquidev.
Example user module snippet that makes all comments italic:
local style = require "core.style"
-- italic.ttf must be provided by the user
local italic = renderer.font.load("italic.ttf", 14)
style.syntax_fonts["comment"] = italic
Improved indentation and comment/uncomment behavior by @adamharrison.
Fix problem when starting session in maximized mode by @redtide.
Fix bug with close button not working in borderless window mode.
Fix problem with normalization of filename for opened documents.
Improve detectindent plugin to avoid excessive usage of CPU affecting editing commands.
Published by franko over 3 years ago
Improved syntax highlight system thanks to @liquidev and @adamharrison.
Using the new system we provide more a accurate syntax highlighting for Lua, C and C++.
Other syntax improvements contributed by @vincens2005.
On macOS declare minimum OS version as 10.13 and request permission to access Documents folder.
Move to JetBrains Mono and Fira Sans fonts for code and UI respectively.
Thet are provided under the SIL Open Font License, Version 1.1.
See doc/licenses.md
for license details.
Fixed bug with fonts and rencache module.
Under very specific situations the application was crashing due to invalid memory access.
Add documentation for keymap binding, thanks to @Janis-Leuenberger.
Added a contributors page in doc/contributors.md
.
Published by franko over 3 years ago
Testing support for macOS 10.13.