Blaž Hrastnik
e80708eba7
Make sure document diagnostics are sorted
3 years ago
Blaž Hrastnik
6431b26a6a
Implement Selection::replace to replace a single range
...
Fixes #985
Co-authored-by: Daniel S Poulin <crimsonmage+github@gmail.com>
3 years ago
Ivan Tham
3eb829e233
Ensure coords in screen depends on char width ( #885 )
...
The issue affected files with lots of tabs at the start as well.
Fix #840
3 years ago
Kirawi
ee889aaa85
Updated tree-sitter query scopes ( #896 )
...
* updated theme scopes
variable.property -> variable.field
property -> variable.field
* updated theme scopes
* update book and themes
updated book and themes to reflect scope changes
* wip
* update more queries
* update dark_plus.toml
3 years ago
cossonleo
befecc8a9a
select smaller range on some case
3 years ago
Omnikar
45fadf6151
Add hyperlinks to fix `cargo doc` warn ( #931 )
3 years ago
Gygaxis Vainhardt
0a38983ee3
Remove three transmutes from helix-core syntax.rs ( #923 )
3 years ago
Kirawi
92c2d5d3bf
Document more of helix-core ( #904 )
3 years ago
Blaž Hrastnik
3edca7854e
completion: fully revert state before apply & insertText common prefix
3 years ago
Blaž Hrastnik
bfb6cff5a9
fix: Compose where changes.compose(empty_other)
3 years ago
Blaž Hrastnik
cee7ad781e
Mark a few functions as `const`
3 years ago
Kirawi
0cb5e0b2ca
log syntax highlighting init errors ( #895 )
3 years ago
Gokul Soumya
4ee92cad19
Add treesitter textobjects ( #728 )
...
* Add treesitter textobject queries
Only for Go, Python and Rust for now.
* Add tree-sitter textobjects
Only has functions and class objects as of now.
* Fix tests
* Add docs for tree-sitter textobjects
* Add guide for creating new textobject queries
* Add parameter textobject
Only parameter.inside is implemented now, parameter.around
will probably require custom predicates akin to nvim' `make-range`
since we want to select a trailing comma too (a comma will be
an anonymous node and matching against them doesn't work similar
to named nodes)
* Simplify TextObject cell init
3 years ago
Michael Davis
1766bdb9d4
clean up combined-injections comment ( #880 )
3 years ago
Ivan Tham
4260b31ec0
Update mdbook style and fix unreadable table head ( #806 )
...
The styles are now pulled from upstream styles, some of the changes I
submitted it back to upstream.
Fix #796
3 years ago
Midnight Exigent
eedcea7e6b
Allow `language.config` (in languages.toml) to be passed in as a toml object ( #807 )
...
* allow language.config (in languages.toml) to be passed in as a toml object
* Change config field for languages from json string to toml object
* remove indents on languages.toml config
* fix: remove patch version from serde_json import in helix-core
* Use same tree-sitter-zig as upstream/master
3 years ago
Blaž Hrastnik
2e0803c8d9
Implement 'remove_primary_selection' as Alt-,
...
This allows removing search matches from the selection
Fixes #713
3 years ago
Blaž Hrastnik
64e8f0017c
...
3 years ago
Blaž Hrastnik
d8b94ba85f
Fix broken test
3 years ago
Blaž Hrastnik
dd0b15e1f1
syntax: Properly handle injection-regex for language injections
3 years ago
Blaž Hrastnik
066367c0a4
fix: Need to reset set_byte_range in case cursor_ref is reused.
3 years ago
Blaž Hrastnik
4ac29434cb
syntax: Add go & rust locals, improve tree-sitter error message
3 years ago
Blaž Hrastnik
585e3ce830
fix: tree-sitter-scopes would infinitely loop
3 years ago
Blaž Hrastnik
3cb95be452
Update tree-sitter to 0.20
...
0.20 includes querying improvements, we no longer have to convert
fragments to strings but can return an iterator of chunks instead.
3 years ago
Brian Shu
fa4caf7e3d
remove unsafe
3 years ago
Yusuf Bera Ertan
dc57f8dc89
feat: merge default languages.toml with user provided languages.toml, add a generic TOML value merge function ( #654 )
...
* feat: merge default languages.toml with user provided languages.toml
* refactor: use catch-all to override all other values for merge toml
* tests: add a test case for merging languages configs
* refactor: change test module name
3 years ago
Blaž Hrastnik
68bf9fdf02
Fix tests broken by the State change
3 years ago
Blaž Hrastnik
9d4c301563
Reduce State use a bit further
...
This is a legacy type that should be fully removed.
3 years ago
Kirawi
b99db7c687
Move path util functions from helix-term to helix-core ( #650 )
3 years ago
langbamit
36095326d0
Fix auto pairs return wrong selection ( #613 )
3 years ago
Cor Peters
ac3c1719c9
Fixes crash on empty rust file. ( #592 )
...
Fixes #591
Co-authored-by: Cor Peters <luctius@gmail.com>
3 years ago
Blaž Hrastnik
b635e35818
Appease clippy
3 years ago
Blaž Hrastnik
fd1eaafff5
Add :tree-sitter-scopes, useful when developing indents.toml
3 years ago
Blaž Hrastnik
7c834d6506
fix: tree sitter rendering glitches with multiple selection edits
3 years ago
Nathan Vegdahl
b5223618ed
Document `pos_at_coords` better.
...
Particularly the effect of the `limit_before_line_ending`
parameter.
3 years ago
Nathan Vegdahl
953125d3f3
Fix around-word text-object selection. ( #546 )
...
* Fix around-word text-object selection.
* Text object around-word: select to the left if no whitespace on the right.
Also only select around when there's whitespace at all.
* Make select-word-around select all white space on a side.
* Update commented-out test case.
* Fix unused import warning from rebase.
3 years ago
Nathan Vegdahl
c9cbc344fc
Fix buggy surround behavior from #376 .
...
Fixes #543 .
3 years ago
Blaž Hrastnik
62eb8c6b40
mouse: Remove verify_screen_coords, refactor primary selection modification
3 years ago
Blaž Hrastnik
0fdb626c2c
Remove embed_runtime feature
...
It's no longer practical to maintain. Closes #451
3 years ago
Nathan Vegdahl
f88d4c1e20
Move indent-style code into `helix_core::indent`.
3 years ago
Nathan Vegdahl
3fda350494
Fixes for new clippy lints in Rust 1.54.
3 years ago
Nathan Vegdahl
cd7302ffd3
Enforce cursor/selection invariants in one place.
...
Rather than per-command like before.
3 years ago
Nathan Vegdahl
aead4e69a6
Minor cleanup of the vertical movement code.
3 years ago
Nathan Vegdahl
84f8167fd1
Use `match` for branching on the `Direction` enum in more places.
3 years ago
Nathan Vegdahl
5229c5387f
Add unit tests for some of the new `Range` methods.
3 years ago
Nathan Vegdahl
b2c76dc627
Improve `Range` documentation and organization.
3 years ago
Nathan Vegdahl
f62ec6e51e
Merge branch 'master' into great_line_ending_and_cursor_range_cleanup
3 years ago
Nathan Vegdahl
5ee6ba5b38
Address some PR comments.
3 years ago
Nathan Vegdahl
0883b4fae0
Collect some common patterns into methods on `Range`.
3 years ago
Ivan Tham
f7c8500797
Fix append newline indent
...
Fix #492
3 years ago
Blaž Hrastnik
63e54e30a7
Implement in-memory prompt history
...
Implementation is similar to kakoune: we store the entries into
a register.
3 years ago
Omnikar
112ae5cffe
Determine whether to use a margin of 0 or 1 when uncommenting ( #476 )
...
* Implement `margin` calculation for uncommenting
* Move `margin` calculation to `find_line_comment`
* Fix comment bug with multiple selections on a line
* Fix `find_line_comment` test for new return type
* Generate a single vec of lines for comment toggle
`toggle_line_comments` collects the lines covered by all selections into
a `Vec`, skipping duplicates. `find_line_comment` now returns the lines
to operate on, instead of returning the lines to skip.
* Fix test for `find_line_comment`
* Reserve length of `to_change` instead of `lines`
The length of `lines` includes blank lines which will be skipped, and as
such do not need space for a change reserved for them. `to_change`
includes only the lines which will be changed.
* Use `token.chars().count()` for token char length
* Create `changes` with capacity instead of reserving
* Remove unnecessary clones in `test_find_line_comment`
* Add test case for 0 margin comments
* Add comments explaining `find_line_comment`
3 years ago
Nathan Vegdahl
f96b8b769b
Switch to a cleaner range-head moving abstraction.
...
Also fix a bunch of bugs related to it.
3 years ago
Nathan Vegdahl
43594049dd
Merge branch 'master' into great_line_ending_and_cursor_range_cleanup
3 years ago
Nathan Vegdahl
ad814b8c2e
Fix append mode, and make insertion always happen at head of range.
3 years ago
Nathan Vegdahl
ffb8057a7f
Fix ocassional panic when matching brackets.
3 years ago
Nathan Vegdahl
fd684ef693
Revert display-width-based vertical cursor movement.
...
Still needs to be done, but should be part of a separate PR.
3 years ago
Nathan Vegdahl
5841954f58
Calculate the line that the range head is on correctly.
3 years ago
fossdd
d4bd5b3766
The item `fmt` was imported redundantly
...
Fixed warning:
```
warning: the item `fmt` is imported redundantly
--> helix-core/src/syntax.rs:98:9
|
16 | fmt,
| --- the item `fmt` is already imported here
...
98 | use std::fmt;
| ^^^^^^^^
|
```
3 years ago
Nathan Vegdahl
bc85c85501
Fix selections not being modified quite correctly with text edits.
3 years ago
Nathan Vegdahl
c848ed7abc
Fixes for misc bugs with view movement.
3 years ago
Nathan Vegdahl
c9300ec35f
Fix comment toggle command also sometimes toggling the next line.
3 years ago
Nathan Vegdahl
1c6b5581f0
Fix various bugs related to goto-end-of-line command.
...
This also fixes a bug with `Selection::normalize()`, that could
result in an out-of-bounds primary index.
3 years ago
Nathan Vegdahl
c400a60377
Fix `Selection::push()` to make the pushed range primary.
...
Apparently I accidentally deleted that behavior in the cleanup.
3 years ago
Nathan Vegdahl
e98d669c30
Handle edge case in `range_to_target()` correctly.
3 years ago
Nathan Vegdahl
b0311f4fc2
Fixed primary cursor position calculation to use 1-width semantics.
...
This had a bunch of knock-on effects that were buggy, such as bracket
match highlighting.
3 years ago
Nathan Vegdahl
e462f32723
Merge branch 'master' into great_line_ending_and_cursor_range_cleanup
3 years ago
Nathan Vegdahl
6c038bb015
Update word selection/navigation to work with gap indexing.
...
Also tweaked some of the existing behavior that seemed inconsistent
and/or buggy. It's mostly identical, just a few corner cases are
different.
3 years ago
Blaž Hrastnik
bf43fabf65
Remove ExactSizeIterator requirement on Transaction::change
...
Size hint is enough.
3 years ago
Cor Peters
cd65a48635
Made toggle_comments language dependent ( #463 )
...
* Made toggle_comments language dependent
* Fixed Test Cases
* Added clippy suggestion
* Small Fixes
* Clippy Suggestion
Co-authored-by: Cor <prive@corpeters.nl>
3 years ago
Cor Peters
0aa43902ca
Added option to provide a custom config file to the lsp. ( #460 )
...
* Added option to provide a custom config file to the lsp.
* Simplified lsp loading routine with anyhow
* Moved config to language.toml
* Fixed test case
* Cargo fmt
* Revert now-useless changes
* Renamed custom_config to config
Co-authored-by: Cor <prive@corpeters.nl>
3 years ago
Nathan Vegdahl
a77274e8bb
Merge branch 'master' into great_line_ending_and_cursor_range_cleanup
3 years ago
Blaž Hrastnik
dd2903ff10
Dynamically load grammar libraries at runtime
3 years ago
Nathan Vegdahl
b4c59b444c
Update surround commands to work with gap indexing.
3 years ago
Kirawi
084a8a9522
Rewritten Rust `highlights.scm` ( #425 )
...
* rewrote Rust highlights.scm
* wip
* wip
* wip
* wip
* fixed type highlighting
* wip
* rewrite again
* moved operators
* missing newline
* missing newline
* update book
* fix constructor highlighting
* fix constructor highlighting
* fix const highlighting
* better constructor highlighting
* remove dup, bug was my locals.scm file
* fixed docs
* merge
* fixed for highlighting
* add yield
* remove yield
* added yield back
* fixed yield highlighting
* unecessary
3 years ago
Nathan Vegdahl
753f7f381b
Implement `Range::put()` which manages range movements and extensions.
...
In particular, this wraps the annoying logic involved in keeping the
cursor width to 1 grapheme.
3 years ago
Nathan Vegdahl
85d5b399de
Merge branch 'master' into great_line_ending_and_cursor_range_cleanup
3 years ago
Nathan Vegdahl
6e15c9b874
Make vertical selection movement work properly.
3 years ago
Ivan Tham
6ccfa229ed
Fix typo on comment in surround
3 years ago
Gokul Soumya
351c1e7e55
Fix surround bug when cursor on same pair
...
For example when the cursor is _on_ the `'` in `'word'`, the cursor
wouldn't move because the search for a matching pair started _from_ the
position of the cursor and simply found itself.
3 years ago
Gokul Soumya
c68fe1f2a3
Add object selection (textobjects) ( #385 )
...
* Add textobjects for word
* Add textobjects for surround characters
* Apply clippy lints
* Remove ThisWordPrevBound in favor of PrevWordEnd
It's the same as PrevWordEnd except for taking the current char
into account, so use a "flag" to capture that usecase
* Add tests for PrevWordEnd movement
* Remove ThisWord* movements
They did not preserve anchor positions and were only used
for textobject boundary search anyway so replace them with
simple position finding functions
* Rewrite tests of word textobject
* Add tests for surround textobject
* Add textobject docs
* Refactor textobject word position functions
* Apply clippy lints on textobject
* Fix overflow error with textobjects
3 years ago
Nathan Vegdahl
28d2d68804
Make horizontal selection movement work properly.
3 years ago
Kirawi
c5b2973739
`:reload` ( #374 )
...
* reloading functionality
* fn with_newline_eof()
* fmt
* wip
* wip
* wip
* wip
* moved to core, added simd feature for encoding_rs
* wip
* rm
* .gitignore
* wip
* local wip
* wip
* wip
* no features
* wip
* nit
* remove simd
* doc
* clippy
* clippy
* address comments
* add indentation & line ending change
3 years ago
Nathan Vegdahl
22dca3b111
Allow last line in file to lack a line break character.
3 years ago
Perry Thompson
e177b27baf
Add missing import
3 years ago
Nathan Vegdahl
230248bbc3
Fix a couple additional `unused` warnings after merge.
3 years ago
Nathan Vegdahl
2224a1527e
Merge branch 'master' into great_line_ending_and_cursor_range_cleanup
3 years ago
Nathan Vegdahl
9f62ad0715
Fixed last `unused` warning.
3 years ago
Nathan Vegdahl
c389f41f14
Fix one of the two remaining warnings.
...
One of them was a lot more obvious than I thought.
3 years ago
Nathan Vegdahl
220bc85821
Fix all remaining warnings in helix-core except for two.
...
I'm not sure how to address them, because they look like they
might be bugs, and code is involved. Will poke the relevant people.
3 years ago
Nathan Vegdahl
b571f28641
Remove #[allow(unused)] from helix-core, and fix unused imports.
...
Still a bunch more warnings to fix in core, but it's a start.
3 years ago
Nathan Vegdahl
e725957704
Ensure a minimum selection width on commands that need it.
3 years ago
Nathan Vegdahl
7c7be6d583
Make `Selection`'s normalize and transform methods self-consuming only.
3 years ago
Nathan Vegdahl
0ae522f3df
Clean up `Selection` to not use so many allocations.
3 years ago
Nathan Vegdahl
77a266e818
Better validation method APIs for `Range`.
...
This way they do less work, are more specific to what we actually
need, and they compose.
3 years ago
Nathan Vegdahl
d07074740b
Add `Range` methods for various kinds of validation.
3 years ago
Nathan Vegdahl
c1b0a71975
Change the `Range` type and associated functions to gap indexing.
3 years ago
Blaž Hrastnik
3007478567
fix: Correctly merge multiple selection ranges together
...
Fixes #391
3 years ago
PabloMansanet
de8745aea7
Incorporate long word commands into keymap
3 years ago
PabloMansanet
73572b7780
Add long word unit tests
3 years ago