Commit Graph
100 Commits
Author SHA1 Message Date
Guldomanandtakase1121 bddb5e274d Avoid drawing hidden text in DocView:draw_line_text (#1298)
* 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.
2023-08-19 12:28:48 +08:00
Guldomanandtakase1121 a9d8f12cb7 Make empty groups in regex.gmatch return their offset (#1325)
This makes `regex.gmatch` behave like `string.gmatch`.
2023-08-19 12:28:47 +08:00
Guldomanandtakase1121 f00f41b468 linewrapping: Disable horizontal scrolling when enabled (#1309) 2023-08-19 12:28:20 +08:00
Guldomanandtakase1121 138cea45d5 Make dirwatch sorting compatible with what file_bisect expects (#1300)
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`.
2023-08-19 12:28:19 +08:00
Guldomanandtakase1121 bd4e64cc7e Allow command buffer to be expanded (#1297) 2023-08-19 12:28:18 +08:00
Guldoman 74349f8e56 Fix horizontal scroll with touchpad on MacOS 2022-12-28 17:26:57 +01:00
GuldomanandGitHub c29b1c2cb9 Use Lua string length instead of relying on strlen (#1262)
This allows us to render `NULL` byte sequences and not truncate strings 
that contain them.
2022-12-26 13:49:07 -04:00
GuldomanandGitHub 18e3542be0 Allow TreeView file operation commands when focused (#1256)
Impacts `treeview:{rename,new-file,new-folder,open-in-system}`.
Previously those were only available when the mouse was over the 
`TreeView`.
They now use the same predicate as `treeview:delete`.
2022-12-26 13:41:14 -04:00
GuldomanandGitHub 97bfe503a0 detectindent: Limit subsyntax depth (#1253) 2022-12-20 22:28:29 -04:00
GuldomanandGitHub c42f01ed1f Improve IME location updates (#1170)
* Avoid updating IME input rect if it hasn't changed
* Update the IME input rect even when the composition didn't change
* Apply IME input blocking workaround to non-Linux only
2022-12-20 20:11:13 -04:00
GuldomanandGitHub 24179bbb23 Merge pull request #1245 from Jan200101/PR/touch-event
add touch events
2022-12-21 00:13:52 +01:00
GuldomanandGitHub 213dc7142e toolbarview: Remove tooltip when hidden (#1251) 2022-12-20 18:07:29 -04:00
GuldomanandGitHub 9d48441685 Add regex.find_offsets, regex.find, improve regex.match (#1232)
`regex.match` now behaves like `string.match`.
This required changes in the `tokenizer` and in the `detectindent` 
plugin.
2022-12-11 22:25:42 -04:00
GuldomanandGitHub f7ad8753eb Improve regex.gsub performance (#1220) 2022-12-02 19:21:05 -05:00
Guldoman 9f917052ad Add initialization to variable in ren_draw_text 2022-11-27 00:45:57 +01:00
Guldoman 51f2a291d3 Make Scrollbar follow force_status when animations are disabled 2022-11-15 21:08:33 +01:00
GuldomanandGitHub 519b91c2dd Pass the currently selected item to CommandView validation (#1203) 2022-11-15 12:03:13 -04:00
Guldoman 38a8549e71 Replace deprecated meson feature gui_app with win_subsystem 2022-11-15 16:57:50 +01:00
Guldoman c6c485feb0 Use subsyntax info in doc:toggle-{line,block}-comments 2022-11-15 16:11:37 +01:00
Guldoman 0a1b8b6bb1 Set initial tokenizer state to a NULL byte 2022-11-15 16:01:04 +01:00
Guldoman e147a6cb9b Add tokenizer.extract_subsyntaxes 2022-11-15 16:00:48 +01:00
Guldoman 66198eb327 Use a better fallback in case get_exe_filename fails 2022-11-13 19:47:32 +01:00
GuldomanandGitHub 03cc5ffcd1 Add config.keep_newline_whitespace option (#1184)
This option will avoid removing line content when pressing enter in 
lines with only whitespace.
2022-11-03 12:40:27 -04:00
Guldoman b029f5993e Don't sort in Doc:get_selection_idx with an invalid index 2022-11-02 21:11:41 +01:00
GuldomanandGitHub ed226c476e Add more options to Scrollbar (#1174)
* Make `Scrollbar` accept a table for its options

* Add `force_status`, `{expanded,shrinked}_size` options to `Scrollbar`

* Add `Scrollbar:set_forced_status`

* Add `config.force_scrollbar_status` to force `DocView` scrollbars status
2022-11-01 18:38:50 -04:00
GuldomanandGitHub 0f160e614e Improvements to multicursor copy/paste (#1123)
* Add `Doc:get_selection_idx`

* Make multicursor paste add a cursor at the end of each paste

* Better manage paste of multicursor whole line copy

* Document `Doc:get_selection_idx`

* Keep track of last added selection in `Doc`

* Make use of `doc.last_selection` in `Doc` commands

* Make `Doc:get_selection` return the `Doc.last_selection` if possible
2022-11-01 18:16:39 -04:00
Guldoman b52fe1605e Make MacOS core:restart shortcut more in line with other platforms 2022-11-01 21:21:50 +01:00
Guldoman c512d01a68 Fix horizontal scroll with shift+scroll on MacOS
It seems like pressing shift+scroll on MacOS automatically makes it 
shift+horizontal scroll.
2022-11-01 21:20:37 +01:00
Guldoman 8a9bac7de3 Fix drawwhitespace drawing lines with different substitution kinds
When multiple substitution kinds are present in the same line, they're 
placed in the cache in an order that's spatially consistent only between 
items of the same kind.
Because we stopped drawing after we reached the first invisible 
substitution, the subsequent kinds weren't drawn even if they should 
have been.
2022-10-30 02:54:30 +01:00
Guldoman 715411061b Apply doc commands to anything that extends DocView
This fixes a regression caused by 
cf29a6a45f.
2022-10-24 04:47:26 +02:00
Guldoman decbac4ac6 Check if scrollbar is no longer hovered on mouse release 2022-10-16 04:43:15 +02:00
Guldoman 6ca56fee1a Only consider left clicks on the scrollbar 2022-10-16 04:40:03 +02:00
GuldomanandGitHub 6b754eb628 Refactor scrollbar into its own file (#1124)
* Move scrollbar to its own file
* Don't call `Scrollbar` functions if `View` is not scrollable
* Allow horizontal scrolling in `Scrollbar`
* Add horizontal scrollbar to `View`
* Add `root:horizontal-scroll` command with `shift+wheel` keymap
* Prioritize vertical scrollbar hover
* Don't send mouse movement to vertical scrollbar when dragging horizontal one
* Fix clicking on horizontal scrollbar track
* Implement `start` scrollbar alignment
* Add documentation to `Scrollbar`
* Make `DocView` infinitely scrollable horizontally
* Handle horizontal scroll SDL event
2022-10-15 20:12:15 -04:00
GuldomanandGitHub 5c2c95765e Add IME support (#991) 2022-10-15 19:58:51 -04:00
GuldomanandGitHub 334a7da5c9 Use the syntax with the longest match (#919)
This way, for example, a syntax that applies to `docker-compose.yml` 
files will take precedence over one that applies to `*.yml` files.
2022-10-12 18:10:11 -04:00
GuldomanandGitHub e7a575b4c4 Use relative mouse position directly for drop event (#1140)
Previously the relative position was calculated using the window 
position and the global mouse coordinates. In some systems like wayland, 
this operation returns incorrect values.
2022-10-09 20:13:51 -04:00
GuldomanandGitHub a19cfb4f80 Strictly limit find/replace commands to core.docview (#1108)
Without this, find/replace commands applied to the `CommandView` too,
with buggy results.
2022-09-13 22:29:52 -04:00
Guldoman c25f83da90 Make predicate for some TreeView commands stricter
This avoids performing the `treeview:new-folder` command on ctrl + 
double click.
This happens because `ctrl+lclick` (which is the keybinding for 
`treeview:new-folder`) is triggered also by ctrl + double click, which 
isn't captured by anything else.
2022-08-21 20:03:32 +02:00
Guldoman cbe0fd63bf Reduce double click radius
SDL uses 32 pixels by default, which is a bit too much and causes 
problems with, for example, adding multiple close selections too 
quickly.
2022-08-21 19:08:32 +02:00
Guldoman 4c186b07a3 Be more lenient with appending PATHSEP in common.path_suggest in Windows
This allows to use the Unix separator without resulting in ugly 
suggestions that added the Windows separator too.

For example:
Before: `data/` -> `data/\core\`
After: `data/` -> `data/core\`
2022-08-17 00:11:19 +02:00
Guldoman e8ca861512 Remove final PATHSEP in common.normalize_volume 2022-08-16 23:53:03 +02:00
Guldoman a4355c6536 Add PATHSEP before listing the directory in common.path_suggest
Before, in Windows, listing `.` instead of `.\` resulted in unexpected 
results.
2022-08-16 23:51:12 +02:00
Guldoman 6aa96556c0 Replace assert with core.log_quiet on command replace
This caused issues when saving the user module with commands defined
inside it, as it resulted in the user-defined commands trying to
overwrite themselves and failing.
2022-08-16 22:18:50 +02:00
Guldoman d944bd85ec Add predicate memoization to command.get_all_valid 2022-08-16 22:13:25 +02:00
Guldoman 06b9953777 Use Object:is instead of direct metatable comparison in autocomplete 2022-08-16 22:13:25 +02:00
Guldoman cf29a6a45f Allow command predicates to manage parameters passed to the commands
When a command is performed with parameters, those are now passed to the
predicate.
The predicate can then return, after the validity boolean, any other
value that will then be passed to the actual command.
If the predicate only returns the validity boolean, the original
parameters are passed through to the actual command.

This allows predicates to manipulate the received parameters, and allows
them to pass the result of an expensive computation to the actual
command, which won't have to recalculate it.

String and table predicates will now also return `core.active_view`.
2022-08-16 22:13:16 +02:00
Guldoman 4b4c54ba65 Remove dot slash from suggested paths in common.path_suggest
When no `root` is specified and the initial `path` is empty, the initial 
`path` becomes `.`.
This results in returned files/dirs that are prepended with `./`.

Now, in that case, `./` is removed.
2022-08-16 08:08:04 +02:00
Guldoman 63c818ac45 Enable SDL timers 2022-08-03 17:28:43 +02:00
GuldomanandGitHub 4db71836af Clear default Lua require path (#1085)
This is mainly done to avoid requiring from the current working 
directory of the editor.

This also avoids requiring from system paths, as it was already the case 
for the native modules search path.
2022-08-03 11:13:26 -04:00
GuldomanandGitHub 06b2fada07 Merge pull request #1079 from cisoun/master
Add font style options in user module
2022-07-16 04:27:39 +02:00
Guldoman d7f9b30d05 drawwhitespace: Invalidate cache on indent size change 2022-07-15 06:54:03 +02:00
GuldomanandGitHub 2dac3667cb Merge pull request #1073 from ncarrezdev/ncarrezdev/synxtax-corrections
[chore]: Update syntax
2022-07-13 15:05:26 +02:00
Guldoman 9cfa3ecd56 Make StatusView:add_item accept a table 2022-07-13 07:22:42 +02:00
Guldoman 693bd11b22 Don't wrap around if there are no suggestions in CommandView 2022-07-11 23:28:08 +02:00
GuldomanandGitHub 86024586fd Start dirmonitor check thread only after a watch is added (#1072) 2022-07-11 17:14:50 -04:00
Guldoman e7c4bdfe8e Make Doc:get_selection[s] return if the selection was actually sorted 2022-07-11 05:39:55 +02:00
GuldomanandGitHub f5fbdd80f6 Merge pull request #1066 from benwalksaway/match_case_syntax_support
language_python: add syntax support for the match-case statement
2022-07-03 15:28:54 +02:00
Guldoman 7888bf08e9 LogView: Show scrollbar 2022-07-01 05:29:55 +02:00
Guldoman b84a510d42 Increase default maximum number of log items
The low number in some cases resulted in hidden errors.
2022-07-01 05:29:54 +02:00
Guldoman caf106be1d LogView: Don't draw invisible items 2022-07-01 05:29:45 +02:00
Guldoman 79dd8779c4 autocomplete: Fix "Too many symbols" message when Doc has no name
Before, when a `Doc` had no name, an error was thrown.
2022-06-29 05:54:37 +02:00
Guldoman 92c2815aa4 language_md: Limit inline math mode to the current line 2022-06-28 20:09:36 +02:00
Guldoman 259de54c33 Fix opening LogView when reloading customizations
As `reload_customizations` was called during save operations, opening 
the `LogView` changed `core.active_view` which caused some errors to be 
thrown.
2022-06-28 04:21:43 +02:00
Guldoman c792b13666 On doc:newline remove line content if it contains only whitespace 2022-06-25 03:57:47 +02:00
Guldoman d6ce9e1ac6 Don't indent empty lines in a selection 2022-06-25 03:32:47 +02:00
Guldoman 438ed6984a drawwhitespace: Invalidate cache on font size change 2022-06-25 03:30:33 +02:00
Guldoman 9cd47aa12e Fix full line cut when only a single line remains 2022-06-24 05:49:20 +02:00
Guldoman ec0e3018a8 findreplace: Sort last searches 2022-06-23 05:16:47 +02:00
Guldoman 522d8a8094 findreplace: Fix number of total replacements 2022-06-23 00:16:16 +02:00
Guldoman 76c1db97f5 drawwhitespace: Use Docview vertical line offset 2022-06-20 19:56:53 +02:00
GuldomanandGitHub 205e554d87 Merge pull request #1047 from jgmdev/PR/cv-draw-visible
CommandView: improve performance by only drawing visible
2022-06-20 17:35:06 +02:00
Guldoman 2d3abd2533 drawwhitespace: Invalidate cache on config changes 2022-06-16 00:03:25 +02:00
Guldoman d169619f69 Warn if token type is a table when not needed 2022-06-15 21:31:16 +02:00
Guldoman 2e37e85a48 Add helper function to report bad patterns in tokenizer 2022-06-15 21:28:46 +02:00
Guldoman 5027a0f12b Fix malformed pattern check for group patterns in tokenizer
If the token type was a simple string (and not a table), the size of the 
string was used instead of `1`.
2022-06-15 19:33:58 +02:00
Guldoman 5b6b48320f Check if "open" pattern is escaped
Previously this check was only done for "close" patterns.
2022-06-12 04:19:05 +02:00
Guldoman c947e8a4d1 Convert more byte offsets to utf-8 pos in regex tokenizer 2022-06-12 02:55:36 +02:00
Guldoman f38723ea46 drawwhitespace: Cache whitespace location 2022-06-11 06:30:13 +02:00
Guldoman 685956cbdb Add Highlighter:update_notify to keep track of retokenized lines
This is helpful for plugins that need to know when a line has been 
retokenized.
2022-06-11 06:21:55 +02:00
Guldoman 99d328cfd7 Downgrade StatusView:get_items deprecation message to warning 2022-06-11 05:13:37 +02:00
Guldoman ed02a55cc1 language_md: Add math delimiters 2022-06-10 23:55:41 +02:00
Guldoman 237f0c91cb Open LogView on user/project module reload error 2022-06-05 04:29:24 +02:00
Guldoman 0b96be7af2 Make common.merge work with invalid arguments
This is needed because users could try to enable plugins with 
`config.plugins.plugin_name = true`.
Before, this would result in `common.merge` throwing an error; now it 
just returns a copy of the "base" table.
2022-06-05 04:10:51 +02:00
Guldoman ec58b1f0bd Add text and select_text to CommandView options 2022-06-02 19:30:51 +02:00
Guldoman 6c89a3e575 Add show_suggestions to CommandView options 2022-06-02 19:30:22 +02:00
Guldoman 8ce1ecb897 Fix CommandView:enter deprecation log 2022-06-02 06:42:58 +02:00
Guldoman d390eb248e Fix tooltip not getting removed after find-replace:replace 2022-06-01 18:19:33 +02:00
Guldoman 730ea0c91b Make TreeView more multi-project-dir aware 2022-06-01 06:58:04 +02:00
Guldoman e94c996a26 Add TreeView helper functions to get previous/next item 2022-06-01 06:58:04 +02:00
Guldoman 295e6b7e5a Allow common.path_suggest to specify a root directory
This will make relative paths start from `root`.
2022-06-01 06:57:38 +02:00
Guldoman 9a428648a9 Add common.is_absolute_path 2022-06-01 04:42:50 +02:00
Guldoman fae9af96bf Expose function to create custom log entries 2022-05-31 02:35:56 +02:00
Guldoman db2d30caaf Add warn log level 2022-05-31 02:26:42 +02:00
Guldoman c92f6a7b7f Always show backtrace for error log entries 2022-05-31 02:26:18 +02:00
Guldoman d8efb1ab53 Show error if language plugin pattern has mismatching number of groups
The number of results from a pattern with groups must never be greater
than the number of token types for that pattern.

Also if a token type was undefined, it's now pushed as a `normal` one.
2022-05-31 02:05:37 +02:00
Guldoman 7ac776bef6 Fix UTF-8 matches in regex group tokenizer 2022-05-31 01:59:14 +02:00
Guldoman 4f0d45d6ab Don't check unnamed files in autoreload plugin 2022-05-31 01:03:59 +02:00
Guldoman 11e27c6fda Use new CommandView:enter options table 2022-05-30 22:08:13 +02:00
Guldoman e4a806a9d0 Add options to CommandView:enter
Now `CommandView:enter` can accept a table that specifies its behavior.

The old behavior is kept for compatibility.
2022-05-30 22:07:39 +02:00
Guldoman 2a41002355 Allow using regex groups to split tokens
Before, this was only supported by Lua patterns.

This expects the regex to use the same syntax used for patterns. That 
is, the token should be split by empty groups.
2022-05-28 01:38:22 +02:00