* Send `mouseleft` event when the mouse leaves the window
* Call `View:on_mouse_left` when the mouse leaves the `View`
Previously `View:on_mouse_left` was called only when the mouse left the
window, and it was called on every visible `View`.
Now it gets also called when the mouse "changes" `View`, and only the
last `View` the mouse was on will receive the event.
* Change to 1 click as per RFC on discord, with 100% in favour.
* Added in the ability to specify as a view name, so it doesn't modify the title, and also fixed a bug where if you clicked *over* the amount of times your config says, it wouldn't regsiter.
* Changed plugin to use keymap.
* fix delete_temp_files() deleting in EXEDIR but temp_filename() was
creating temp files in USERDIR
* make delete_temp_files() public so it can be used by plugins
* add optional `dir` parameter to both delete_temp_files() and
temp_filename() to allow specifying a different directory, this is
for example useful when generting markdown previews, the temp file
should be generated in the project dir in case the readme references
images that are relative to it, so the web browser can find them.
This new config flag ignores the plugins version check at startup
which helps a lot when working on new or old plugins that doesn't match
the mod or lite-xl version and you still desire to load them to fix them
by checking with lite-xl it self which errors need to be corrected.
When a user modifies and saves the init.lua or a project module file the
reload_customizations() function was performing unnecessary reloading
of core.config and core.style. This resulted on the replacement of config
tables with new tables, breaking all active references been used by
the consumers of this config options. Been redundant this means
that every consumer was using its own copy of a configuration table
different from the one referenced on core.config and user changes not
taking place.
* Fixed some issues with inotify and multiple events at the same time. Seems to be working now.
* Cleaned up and simplified function, and commented, and fixed a number of bugs.
* Simplifying and fixing further.
* Improved performance for skipping large amounts of files.
* Added in extra checks, and changed paths. We should probably unify these path styles.
* Fixed stutter.
* Removed extraneous functions.
* Cleaned up more, added more testing; dealt with multiple sequential events correctly.
Removed dmon, and replaced with logic that works across Linux, Mac, FreeBSD and Windows. Have tested on all platforms, and seems to work.
Co-authored-by: Jan200101 <sentrycraft123@gmail.com>
The pattern cannot be tested in advance as it seems that Lua inspect
the pattern only partially, the part that is actually used.
We resort to use pcall to catch any error when using the pattern.
Evolve the rule for directory in ignore_files to be more natural
and easy to understand.
When a final '/' or '/$' is found we consider the pattern to match
a directory and the pattern is not modifed. In turns, is used, before
matching a directory's name a final '/' is appended to its name
before checking if it matches the pattern.
With the previous rule a final '/' in the pattern meant also a directory
but the '/' was removed from the pattern.
When a user's or project's module configuration file is changed we
make sure that the config.plugins fields are all restored so that
all plugins already loaded can continue to work.
Some asserts are placed in case that can effectively occur
so we remove the assertion and we return false. In turn we
adapt the logic accordingly so when false is returned to add
a watch we do not open that directory.
Works correctly and the logic seems sound even if somewhat quirky.
`^%.` match any file of directory whose basename begins with a dot.
`^/node_modules$/"` match a directory named `node_modules` at the project's root.
Note that the final '/' needs to be at the end. The '/' after the '^' needs to be there to trigger
a match of the full path filename so we are sure it is at the root.
PROBLEM: the '/' to trigger full path match could be in a pattern's special expression like:
[^/]
`^%.git$/` match any directory name '.git' anywhere in the project.
`^/%.git$/` match a directory named '.git' only at the project's root.
`^/subprojects/.+/` match any directory in a top-level folder named "subprojects".
`^/build/` match any top level directory whose name begins with "build"
PROBLEM: may be surprising, one may expects it matches only a directory named 'build'. It actually acts like
it was `^/build.*/`.
For special file types like the ones in /dev/ the info
entry's type is neither file neither dir.
We prevent these kind of files from being listed in the
project.