Commit Graph

1318 Commits

Author SHA1 Message Date
Guldoman c92d7dc239
Don't calculate widths per-uft8-char when not needed (#1409) 2023-03-28 01:17:11 +02:00
Guldoman d15108309c
Make `TreeView` follow the current tab (#1411)
* Make `TreeView` follow the current tab

* Use `TreeView:toggle_expand` in `TreeView:set_selection_to_path`

We can't use `item.expanded` directly because we need to update the 
cached tree structure.
2023-03-16 17:29:33 -04:00
Guldoman 1ec3d28ff6
Use correct view for scrolling to `find-replace:repeat-find` results (#1400) 2023-03-03 11:42:31 +01:00
Adam 2035886fcd
Added in ability to specify prefix via env variable. (#1388) 2023-02-15 21:48:09 -04:00
vqn a07a4e3706
fix incorrect x_offset if opened docs have different tab sizes (#1383) 2023-02-09 13:26:32 -04:00
Guldoman 195520ea12
Make tab scrolling more flexible (#1384)
* Add `Object:{is_class_of,is_extended_by}` to check inverse relationships

* Make tab scrolling more flexible

This adds tab scrolling commands and connects them to mouse scroll
events.
This way scrolling behavior can be customized more easily.

For example an alternative behavior could be:
```lua
keymap.add({
  ["wheelup"] = "root:switch-to-hovered-previous-tab",
  ["wheeldown"] = "root:switch-to-hovered-next-tab"
})
```
2023-02-09 12:51:41 -04:00
jgmdev 02a99b17fe Correct the inverted tabs scrolling 2023-02-06 15:44:19 -04:00
Eric Gaudet a2acc6d770
Make mouse scrollwheel hovering tabs scroll the tab bar (#1314) 2023-02-06 15:40:04 -04:00
Guldoman 841a456106
Allow groups to be used in end delimiter patterns in tokenizer (#1317)
* 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.
2023-02-06 15:24:40 -04:00
Guldoman c6d269d35e
Improve `DocView:get_visible_line_range` precision (#1382) 2023-02-06 14:03:29 -04:00
Jefferson González 0495ac28a6
plugins scale: also rescale style.expanded_scrollbar_size (#1380) 2023-02-06 13:40:12 -04:00
Jefferson González d784133777
NagView: properly rescale on scale change (#1379)
* drop font option since style.font is always used
2023-02-06 13:38:00 -04:00
Jefferson González e800a5de3c
Restore in-selection replace as discussed in #1331 (#1368) 2023-02-06 13:34:59 -04:00
Jefferson González 5b2538e856
Improved plugins config table handling (#1356)
* 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
2023-02-06 13:32:44 -04:00
Guldoman 2e02aede7c
Make mod-version follow semver (#1036)
* 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>
2023-02-01 20:28:21 -04:00
vqn d207adc230
Context menu fixes and keyboard navigation (#1338)
* 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
2023-01-30 13:36:17 -04:00
Himura Kazuto 0a0754d1c3
Replace globally when replacing from selection (#1331) 2023-01-30 13:00:48 -04:00
sammyette 719540e73d
feat: add option to only draw whitespace if it is within selection (#1312)
* 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>
2023-01-30 12:43:26 -04:00
Adam ad272fce53
Abstracted open_doc out to allow for more easy overriding. (#1344) 2023-01-30 12:12:44 -04:00
Adam 813b8b278b
Getting rid of annoying forward slash on windows. (#1345) 2023-01-30 12:10:11 -04:00
Adam aa627d4023
Added in Config Postload (#1336)
* Added in an `onload` variable to configs which is called by the plugin loader.

* Used appropriate parameter.

* Fixed tabbing.
2023-01-19 10:14:45 -05:00
Guldoman 9308dfdd66
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-01-18 22:15:26 -05:00
xwii 6e04a4f970
Use `table.move` to implement `common.splice` (#1324)
* Use `table.move` to implement `common.splice`

* Disallow negative `remove` in `common.splice`
2023-01-13 19:33:13 +01:00
Merlin Volkmer 673c564e09
language_md: add nix code block highlighting (#1323) 2023-01-12 15:12:55 +01:00
sammyette 1504ad7f4c
fix: center title and version in emptyview (#1311)
* fix: divide by amount of lines
2023-01-06 15:27:05 -04:00
Guldoman 385ee69f94
`linewrapping`: Disable horizontal scrolling when enabled (#1309) 2023-01-05 16:02:12 -05:00
Guldoman 72c0ad768e
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-01-05 15:59:15 -05:00
Dave 4e272c33de Minor typos in init text 2022-12-30 13:32:20 +01:00
Guldoman 74349f8e56
Fix horizontal scroll with touchpad on MacOS 2022-12-28 17:26:57 +01:00
Jefferson González 870d685b59
contextmenu: adjust y positioning if less than zero (#1268)
* use clamp for both x and y coords
2022-12-28 02:51:24 -04:00
xwii 271a804986
Fix popping subsyntaxes that end consecutively (#1246) 2022-12-27 20:24:52 -04:00
Simon Krauter 8603644726
Fix two typos in data/init.lua (#1272) 2022-12-27 19:56:30 -04:00
Martin Ashby d4989d98bd
Add example settings to _overwrite_ an existing key binding (#1270) 2022-12-27 18:40:22 -05:00
Guldoman 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
Guldoman 97bfe503a0
`detectindent`: Limit subsyntax depth (#1253) 2022-12-20 22:28:29 -04:00
sammyette 1810db0705
fix: move tab scroll buttons to remove spacing before 1st tab (#1231)
* fix: move tab scroll buttons to remove spacing before 1st tab
* fix: always show tab scroll buttons
* fix: cleanup code, get scroll button rect for correct button
* fix: expand to full size for tabs if scroll buttons arent visible
* fix: define n as visible tabs number
2022-12-20 22:06:53 -04:00
Guldoman 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
Jefferson González 902539b97a
trimwhitespace: expose functionality and extra features (#1238) 2022-12-20 18:13:56 -04:00
Guldoman 213dc7142e
`toolbarview`: Remove tooltip when hidden (#1251) 2022-12-20 18:07:29 -04:00
Jefferson González 3c64c32379
core: ported regex.gsub to faster native version (#1233)
* added regex.gmatch iterator and other fixes
* fixed issues reported by Guldoman
* push strings with fixed len just in case for binary safety
* added limit to regex.gsub and use pushinteger
* added description to regex.gsub limits param
* replaced substitutions regex description for correctness
* ignore negative limits on regex.gsub
2022-12-20 17:46:37 -04:00
Cyriaque Skrapits 5b5b5fd3e3
contextmenu: make divider less aggressive (#1228)
Following changes are applied:
- use divider color instead of caret;
- add a vertical padding on the divider.
2022-12-20 17:29:53 -04:00
Jefferson González e152db2cce
plugins projectsearch: expose its functionality (#1235) 2022-12-14 11:53:20 -04:00
Guldoman 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
sammyette e13f265fac
feat: alert user via nagview if file cannot be saved (#1230)
* feat: alert user via nagview if file cannot be saved
it will prompt the user to choose whether they
want to save to another location and perform
the save as command
* refactor: change defer draw call to thread
* feat: log error when attempting to save doc
2022-12-11 21:38:58 -04:00
Techie Guy 68595e4c7c
autocomplete: wrap the autocomplete results around (#1223) 2022-12-06 06:21:14 -04:00
sammy dfa2f93d9c
feat: encode home in statusview file path (#1224) 2022-12-06 06:19:52 -04:00
Guldoman f7ad8753eb
Improve `regex.gsub` performance (#1220) 2022-12-02 19:21:05 -05:00
jgmdev 0373d29f99 statusview: respect right padding of item tooltip
When the tooltip was rendered on the last item of right items the right
padding was not properly getting accounted as part of the tooltip width.

This commit also fixes:

* Passing StatusView to item.get_item() instead of StatusView.item
* Some adjustments to annotations.
2022-11-24 12:34:49 -04:00
Guldoman 51f2a291d3
Make `Scrollbar` follow `force_status` when animations are disabled 2022-11-15 21:08:33 +01:00
Guldoman 519b91c2dd
Pass the currently selected item to `CommandView` validation (#1203) 2022-11-15 12:03:13 -04:00