* Allow empty groups as first match in tokenizer
* Avoid pushing tokens with empty strings
* Allow groups to be used in end delimiter in tokenizer
* Use the first entry of the type table for the middle part of a subsyntax
This applies to delimited matches with a table for `type` and without a
`syntax` field.
* Match only once if using `at_start` in tokenizer `find_text`
* Check if match is escaped in the "close" case too
Also allow continuing matching if the match was escaped.
* Warns user if trying to disable a plugin that is already
enabled when doing `config.plugins.plugin_name = false` and also
prevents replacing the current plugin config table with the false
value to mitigate runtime issues.
* Uses a merge strategy by default when assigning a table to a plugin
config to prevent a user from removing a plugin default config values
as experienced and explained on this issue lite-xl-plugins#158
* This change is basically backwards compatible, but will require a
change on the settings ui plugin on how it checks for already
enabled plugins, since rawget will no longer be a working hack
or workaround for this.
* As suggested by Adam dropped loaded key and switched to package.loaded
* Make mod-version follow semver
Now plugins can optionally specify the minor and patch version they
support.
If no minor or patch version is specified, it's considered 0.
Plugins are only loaded if they have the same major version and a
smaller or equal minor+patch version.
* Add modversion to logging and plugin mismatch nagview
---------
Co-authored-by: Jefferson González <jgmdev@gmail.com>
* fix Doc contextmenu not registering commands if scale plugin is not found
* fix TreeView contextmenu commands not working if the mouse hovers DocView
* add keyboard navigation to TreeView contextmenu
* fix incorrect contextmenu predicate
* refactor: remove sort_positions usage
* refactor: move draw conditional to has_any_selection and other changes
- snake case (sssss)
- break after finding selection
* fix: typo of config plugins
* fix: do check for show selected only properly
* feat: only draw within selection per substitution
* `drawwhitespace`: Make `show_selected_only` work properly
---------
Co-authored-by: Guldoman <giulio.lettieri@gmail.com>
Thanks to Guldoman who discovered the cause for meson failing to
validate SSL certificates which turned out to be MSYS now requiring
ca-certificates package installed for the different architectures.
As discussed with Adam on discord current Lite XL Lua Plugin API was not
working on native plugins with more than 1 source file since imported
symbols were not exposed to other unit files. The issue was tackled on #1332
but the solution introduced another issue when Lite XL was dynamically
linked to the system lua. So we opted to tackle this by using function
wrappers around the function pointers.
* Stop drawing text past the `DocView` edge in `DocView:draw_line_text`
* Don't add draw commands if they fall outside the latest clip
The check was previously done with the window rect, so this will reduce
a bit more the number of commands sent.
The result of `a.filename < b.filename` is sometimes different from
`system.path_compare(a.filename, a.type, b.filename, b.type)` which
causes issues to `file_bisect`, as it expects the sorting to be done
with `system.path_compare`.
* Reintroduce some missing Lua API's from native plugin API
* Add new upvalue functions to header
* Fix things that are actually macros in current lua
* Introduce lua_insert,replace,remove macros from lua5.4
As suggested by Guldoman this change introduces the usage
of pipes to allow blocking the get changes call until any
file system changes are received, which now properly reduces
the cpu usage on idle to 0%.
This change better fixes#1237