Kirawi
02fc52f6d5
Apply recent nightly suggestions ( #1286 )
...
array iterators are now implicit
3 years ago
Skyler Hawthorne
94535fa013
Add auto pairs for same-char pairs ( #1219 )
...
* Add auto pairs for same-char pairs
* Add unit tests for all existing functionality
* Add auto pairs for same-char pairs (quotes, etc). Account for
apostrophe in prose by requiring both sides of the cursor to be
non-pair chars or whitespace. This also incidentally will work for
avoiding a double single quote in lifetime annotations, at least until
<> is added
* Slight factor of moving the cursor transform of the selection to
inside the hooks. This will enable doing auto pairing with selections,
and fixing the bug where auto pairs destroy the selection.
Fixes #1014
3 years ago
ath3
3156577fbf
Open files with spaces in filename, allow opening multiple files ( #1231 )
3 years ago
Gokul Soumya
d08bdfa838
Use same name used in config files for langs in docs
3 years ago
Gokul Soumya
a78b789406
Auto generate docs for language support
3 years ago
Jason Rodney Hansen
539c27e3f5
Remove `Clone` derive
3 years ago
Jason Rodney Hansen
0b7911d921
Remove `FormatError`
3 years ago
Jason Rodney Hansen
584a31cd90
Used checked_add for years and months
3 years ago
Jason Rodney Hansen
c74cd48f38
Cleanup
3 years ago
Jason Rodney Hansen
febee2dc0c
No need to clone format
3 years ago
Jason Rodney Hansen
37e484ee38
Add support for time and more date formats
3 years ago
Jason Rodney Hansen
c9641fcced
Add `Increment` trait
3 years ago
Jason Rodney Hansen
2a0c685a78
Remove dependency on gregorian crate
3 years ago
Jason Rodney Hansen
64afd54654
Cleanup
3 years ago
Jason Rodney Hansen
cc04fabe40
Formatting
3 years ago
Jason Rodney Hansen
57a8e79940
No default features for gregorian
3 years ago
Jason Rodney Hansen
95cfeed2fa
Add support for incrementing year and month
3 years ago
Jason Rodney Hansen
c1f6167e37
Add support for dates for increment/decrement
3 years ago
ath3
70c62530ee
Support env flags in shebang ( #1224 )
3 years ago
Blaž Hrastnik
2dbf966293
dap: Start working on runInTerminal support
3 years ago
Blaž Hrastnik
01f7a312d0
Address new lint on 1.57
3 years ago
Blaž Hrastnik
119dee2980
fix: Correctly detect empty transactions
...
Fixes #1221
3 years ago
Blaž Hrastnik
d14ca05d6b
Simplify some cases that use return None to use ?
3 years ago
George Rodrigues
3e15aead4a
Fix typo on docs ( #1201 )
3 years ago
Blaž Hrastnik
9ed930b233
Merge remote-tracking branch 'origin/master' into debug
3 years ago
Blaž Hrastnik
30171416cb
Gutter functions
3 years ago
Gokul Soumya
dc53e65b9e
Fix surround cursor position calculation ( #1183 )
...
Fixes #1077 . This was caused by the assumption that a block
cursor is represented as zero width internally and simply
rendered to be a single width selection, where as in reality
a block cursor is an actual single width selection in form and
function.
Behavioural changes:
1. Surround selection no longer works when cursor is _on_ a
surround character that has matching pairs (like `'`
or `"`). This was the intended behaviour from the start
but worked till now because of the cursor position
calculation mismatch.
3 years ago
ath3
1d773bcefb
Implement black hole register ( #1165 )
3 years ago
Blaž Hrastnik
d1854d8e6a
Merge remote-tracking branch 'origin/master' into debug
3 years ago
Martin Junghanns
a3a3b0b517
Jump to end char of surrounding pair from any cursor pos ( #1121 )
...
* Jump to end char of surrounding pair from any cursor pos
* Separate bracket matching into exact and fuzzy search
* Add constants for bracket chars
* Abort early if char under cursor is not a bracket
* Simplify bracket char validation
* Refactor node search and unify find methods
* Remove bracket constants
3 years ago
Blaž Hrastnik
2b7c086653
fix: Expand tilde first, then deal with relative paths
...
Otherwise the ~ gets treated as a relative path.
Fixes #1107
3 years ago
ath3
90fd09f2cc
Fix selection remove doc comment ( #1122 )
3 years ago
Jason Hansen
6cb35d28a8
Add command to inc/dec number under cursor ( #1027 )
...
* Add command to inc/dec number under cursor
With the cursor over a number in normal mode, Ctrl + A will increment the
number and Ctrl + X will decrement the number. It works with binary, octal,
decimal, and hexidecimal numbers. Here are some examples.
0b01110100
0o1734
-24234
0x1F245
If the number isn't over a number it will try to find a number after the
cursor on the same line.
* Move several functions to helix-core
* Change to work based on word under selection
* It no longer finds the next number if the cursor isn't already over
a number.
* It only matches numbers that are part of words with other characters
like "foo123bar".
* It now works with multiple selections.
* Add some unit tests
* Fix for clippy
* Simplify some things
* Keep previous selection after incrementing
* Use short word instead of long word
This change requires us to manually handle minus sign.
* Don't pad decimal numbers if no leading zeros
* Handle numbers with `_` separators
* Refactor and add tests
* Move most of the code into core
* Add tests for the incremented output
* Use correct range
* Formatting
* Rename increment functions
* Make docs more specific
* This is easier to read
* This is clearer
* Type can be inferred
3 years ago
Ivan Tham
b7c3877e94
Add movement shortcut for history ( #1088 )
...
alt-u and alt-U
3 years ago
ath3
6fa76d9fe7
Add trim_selections command ( #1092 )
3 years ago
Blaž Hrastnik
1817b7f581
minor: Import Range too
3 years ago
ath3
35c974c9c4
Implement "Goto last modification" command ( #1067 )
3 years ago
Omnikar
bf95a9ed04
Add `remove_selections` command ( #1065 )
...
* Add `remove_selections` command
* Document `remove_selections`
* Update helix-term/src/keymap.rs
Co-authored-by: Blaž Hrastnik <blaz@mxxn.io>
3 years ago
Omnikar
a424ef4e20
Use default `languages.toml` if user's is invalid ( #994 )
3 years ago
Blaž Hrastnik
e18198aeb2
Revert "fix(core): stop merging array toml config values ( #1004 )"
...
It breaks languages.toml merging
This reverts commit 4304b52ff8
.
3 years ago
Blaž Hrastnik
f804ed3192
Make shebangs optional, they don't make sense outside of scripts
3 years ago
Blaž Hrastnik
549cdee561
Refactor shebang detection to reuse the loaded buffer
3 years ago
ath3
77dbbc73f9
Detect filetype from shebang line ( #1001 )
3 years ago
Blaž Hrastnik
82ff5b0ab6
Specify capacity on toggle_line_comments
3 years ago
Daniel S Poulin
1e793c2bbf
Adds single and double quotes to matching pairs ( #995 )
...
This enables `mm` to work on quote characters as well as highlighting of
matching quote when on it.
3 years ago
Omnikar
a252ecd8c8
Add WORD textobject ( #991 )
...
* Add WORD textobject
* Document WORD textobject
3 years ago
Carter Snook
4304b52ff8
fix(core): stop merging array toml config values ( #1004 )
3 years ago
Blaž Hrastnik
f2b709a3c3
Merge branch 'master' into debug
3 years ago
Blaž Hrastnik
f979bdc442
Specify capacity on toggle_line_comments
3 years ago
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
Blaž Hrastnik
f3c7f20dbc
Release v0.5.0
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
Dmitry Sharshakov
6aa9838ea6
dap: support arrays as arguments
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
Blaž Hrastnik
182a59b552
Update to rust 1.56 + 2021 edition
3 years ago
Michael Davis
1766bdb9d4
clean up combined-injections comment ( #880 )
3 years ago
Blaž Hrastnik
83a8167402
Invert core -> dap dependency
3 years ago
Blaž Hrastnik
0a6b60085a
Merge branch 'master' into debug
3 years ago
Dmitry Sharshakov
48cb81eff1
Merge branch 'master' into debug
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
dependabot[bot]
8925fdd6f3
build(deps): bump smallvec from 1.6.1 to 1.7.0 ( #813 )
...
Bumps [smallvec](https://github.com/servo/rust-smallvec ) from 1.6.1 to 1.7.0.
- [Release notes](https://github.com/servo/rust-smallvec/releases )
- [Commits](https://github.com/servo/rust-smallvec/compare/v1.6.1...v1.7.0 )
---
updated-dependencies:
- dependency-name: smallvec
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
3 years ago
dependabot[bot]
97b24fd91e
build(deps): bump similar from 2.0.0 to 2.1.0 ( #812 )
...
Bumps [similar](https://github.com/mitsuhiko/similar ) from 2.0.0 to 2.1.0.
- [Release notes](https://github.com/mitsuhiko/similar/releases )
- [Changelog](https://github.com/mitsuhiko/similar/blob/main/CHANGELOG.md )
- [Commits](https://github.com/mitsuhiko/similar/compare/2.0.0...2.1.0 )
---
updated-dependencies:
- dependency-name: similar
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
3 years ago
Dmitry Sharshakov
d943a51e3e
editor: add Node.js debugger
3 years ago
Dmitry Sharshakov
bf53aff27d
Merge branch 'master' into debug
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
dependabot[bot]
51b7f40da1
build(deps): bump similar from 1.3.0 to 2.0.0 ( #754 )
...
Bumps [similar](https://github.com/mitsuhiko/similar ) from 1.3.0 to 2.0.0.
- [Release notes](https://github.com/mitsuhiko/similar/releases )
- [Changelog](https://github.com/mitsuhiko/similar/blob/main/CHANGELOG.md )
- [Commits](https://github.com/mitsuhiko/similar/compare/1.3.0...2.0.0 )
---
updated-dependencies:
- dependency-name: similar
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
3 years ago
Blaž Hrastnik
066367c0a4
fix: Need to reset set_byte_range in case cursor_ref is reused.
3 years ago
Dmitry Sharshakov
413e477dc2
lldb: use stdio transport by default
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
Blaž Hrastnik
4d24a43651
dap: use smallvec! macro
3 years ago
Blaž Hrastnik
2a7e38a2b4
helix-core doesn't need to import serde_json
3 years ago
Dmitry Sharshakov
b42631942b
Defaults in completions, better schema
3 years ago
Dmitry Sharshakov
e315394631
Merge remote-tracking branch 'origin/master' into debug
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
Dmitry Sharshakov
2ad2838a27
Fix tests
3 years ago
Dmitry Sharshakov
c7759a5aa0
Merge remote-tracking branch 'origin/master' into debug
3 years ago
Kirawi
b99db7c687
Move path util functions from helix-term to helix-core ( #650 )
3 years ago
Dmitry Sharshakov
c463142e5e
Create new debugger config format
3 years ago
Dmitry Sharshakov
56d00fa7f4
Fix tests
3 years ago
Dmitry Sharshakov
b6b99b2487
config: minor fixes
3 years ago
Dmitry Sharshakov
f55a012fb7
editor: add debug session config
3 years ago
Dmitry Sharshakov
c5b210df59
Add debug-adapter field to languages.toml
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
1caedc18ca
Release v0.4.1
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
Blaž Hrastnik
3de40de0a9
fix build...
3 years ago
Blaž Hrastnik
733ee06b7b
Release v0.4.0
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