aboutsummaryrefslogtreecommitdiff
path: root/helix-core
Commit message (Collapse)AuthorAge
* migrate helix-syntax crate into helix-core and helix-termMichael Davis2022-03-10
| | | | | | | | | | | | helix-syntax mostly existed for the sake of the build task which checks and compiles the submodules. Since we won't be relying on that process anymore, it doesn't end up making much sense to have a very thin crate just for some functions that we could port to helix-core. The remaining build-related code is moved to helix-term which will be able to provide grammar builds through the --build-grammars CLI flag.
* add tree-sitter sources to languages.tomlMichael Davis2022-03-10
| | | | | | | | | | | | | | | | | | | | | | | | | Here we add syntax to the languages.toml languge [[grammar]] name = "<name>" source = { .. } Which can be used to specify a tree-sitter grammar separately of the language that defines it, and we make this distinction for two reasons: * In later commits, we will separate this code from helix-core and bring it to a new helix-loader crate. Using separate schemas for language and grammar configurations allows for a nice divide between the types needed to be declared in helix-loader and in helix-core/syntax * Two different languages may use the same grammar. This is currently the case with llvm-mir-yaml and yaml. We could accomplish a config that works for this with just `[[languages]]`, but it gets a bit dicey with languages depending on one another. If you enable llvm-mir-yaml and disable yaml, does helix still need to fetch and build tree-sitter-yaml? It could be a matter of interpretation.
* Add --health command for troubleshooting (#1669)Gokul Soumya2022-03-08
| | | | | | | | | | | | | | | * Move runtime file location definitions to core * Add basic --health command * Add language specific --health * Show summary for all langs with bare --health * Use TsFeature from xtask for --health * cargo fmt Co-authored-by: Blaž Hrastnik <blaz@mxxn.io>
* build(deps): bump once_cell from 1.9.0 to 1.10.0 (#1768)dependabot[bot]2022-03-08
| | | | | | | | | | | | | | | | | Bumps [once_cell](https://github.com/matklad/once_cell) from 1.9.0 to 1.10.0. - [Release notes](https://github.com/matklad/once_cell/releases) - [Changelog](https://github.com/matklad/once_cell/blob/master/CHANGELOG.md) - [Commits](https://github.com/matklad/once_cell/compare/v1.9.0...v1.10.0) --- updated-dependencies: - dependency-name: once_cell 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>
* Fix tab rendering to use dynamic tab widthBlaž Hrastnik2022-03-04
| | | | | | Each tab is just wide enough to round to the nearest tab stop. Refs #1243
* Reuse visual_coords_at_pos function in viewBlaž Hrastnik2022-03-04
|
* core: transaction: Resolve some TODOsBlaž Hrastnik2022-03-03
|
* Ensure non empty grouped nodes in textobject queriesGokul Soumya2022-03-01
|
* Allow capturing multiple nodes in textobject queriesGokul Soumya2022-03-01
| | | | | | | | | | | | | | Treesitter captures can contain multiple nodes like so: ``` (line_comment)+ @comment ``` This would match each line in a comment as a separate `@comment` capture when what we actually want is the whole set of contiguous `line_comment` nodes to be captured under the `@comment` capture. This commit enables this behaviour.
* build(deps): bump smartstring from 0.2.10 to 1.0.0 (#1722)dependabot[bot]2022-03-01
| | | | | | | | | | | | | | | | | Bumps [smartstring](https://github.com/bodil/smartstring) from 0.2.10 to 1.0.0. - [Release notes](https://github.com/bodil/smartstring/releases) - [Changelog](https://github.com/bodil/smartstring/blob/master/CHANGELOG.md) - [Commits](https://github.com/bodil/smartstring/compare/v0.2.10...v1.0.0) --- updated-dependencies: - dependency-name: smartstring 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>
* Show surround delete and replace errors in editor (#1709)Gokul Soumya2022-02-28
| | | | | * Refactor surround commands to use early returns * Show surround delete and replace errors in editor
* Configurable auto pairs (#1624)Skyler Hawthorne2022-02-25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * impl auto pairs config Implements configuration for which pairs of tokens get auto completed. In order to help with this, the logic for when *not* to auto complete has been generalized from a specific hardcoded list of characters to simply testing if the next/prev char is alphanumeric. It is possible to configure a global list of pairs as well as at the language level. The language config will take precedence over the global config. * rename AutoPair -> Pair * clean up insert_char command * remove Rc * remove some explicit cloning with another impl * fix lint * review comments * global auto-pairs = false takes precedence over language settings * make clippy happy * print out editor config on startup * move auto pairs accessor into Document * rearrange auto pair doc comment * use pattern in Froms
* build(deps): bump smartstring from 0.2.9 to 0.2.10 (#1692)dependabot[bot]2022-02-22
| | | | | | | | | | | | | | | | | Bumps [smartstring](https://github.com/bodil/smartstring) from 0.2.9 to 0.2.10. - [Release notes](https://github.com/bodil/smartstring/releases) - [Changelog](https://github.com/bodil/smartstring/blob/master/CHANGELOG.md) - [Commits](https://github.com/bodil/smartstring/compare/v0.2.9...v0.2.10) --- updated-dependencies: - dependency-name: smartstring dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Add object.movement for tree-sitter navigationGokul Soumya2022-02-15
|
* Add tree-sitter based function, class navigationGokul Soumya2022-02-15
|
* Refactor language config loading (#1658)Gokul Soumya2022-02-14
|
* Merge remote-tracking branch 'origin/master' into debugBlaž Hrastnik2022-02-13
|\
| * Replace tendril with smartstringBlaž Hrastnik2022-02-10
| | | | | | | | Slightly smaller API surface, less dependencies.
| * Show infobox with register contentsGokul Soumya2022-02-10
| |
| * build(deps): bump unicode-segmentation from 1.8.0 to 1.9.0 (#1632)dependabot[bot]2022-02-07
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Bumps [unicode-segmentation](https://github.com/unicode-rs/unicode-segmentation) from 1.8.0 to 1.9.0. - [Release notes](https://github.com/unicode-rs/unicode-segmentation/releases) - [Commits](https://github.com/unicode-rs/unicode-segmentation/commits) --- updated-dependencies: - dependency-name: unicode-segmentation 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>
| * build(deps): bump unicode-general-category from 0.4.0 to 0.5.1 (#1609)dependabot[bot]2022-02-01
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Bumps [unicode-general-category](https://github.com/yeslogic/unicode-general-category) from 0.4.0 to 0.5.1. - [Release notes](https://github.com/yeslogic/unicode-general-category/releases) - [Commits](https://github.com/yeslogic/unicode-general-category/compare/0.4.0...0.5.1) --- updated-dependencies: - dependency-name: unicode-general-category 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>
| * Allow specifying file start position (#445)Ivan Tham2022-01-23
| | | | | | Like helix-term/src/commands.rs:3426:15
| * Fix Clippy lints in tests (#1563)Omnikar2022-01-23
| | | | | | Co-authored-by: Blaž Hrastnik <blaz@mxxn.io>
| * cargo fmt + clippy lintBlaž Hrastnik2022-01-23
| |
| * Remove some TODOsBlaž Hrastnik2022-01-23
| |
| * cleanupBlaž Hrastnik2022-01-23
| |
| * fix: ensure_grapheme_boundary_next_byte needs to index at valid charBlaž Hrastnik2022-01-23
| |
| * Speed up ensure_next_boundary during renderBlaž Hrastnik2022-01-23
| | | | | | | | | | | | | | | | | | | | | | | | | | This code: let start = ensure_grapheme_boundary_next(text, text.byte_to_char(start)); let end = ensure_grapheme_boundary_next(text, text.byte_to_char(end)); Would convert byte to char index, but then internally immediately convert back to byte index, operate on it, then convert it to char index. This change reduces the amount of time spent in ensure_grapheme_boundary from 29% to 2%.
| * Make Layer::parse take &mut tree_sitter::ParserBlaž Hrastnik2022-01-23
| |
| * Use filter_map rather than flat_mapBlaž Hrastnik2022-01-23
| |
| * Set byte range on cursor againBlaž Hrastnik2022-01-23
| |
| * Only call scopes.load() onceBlaž Hrastnik2022-01-23
| |
| * Resolve some outdated commentsBlaž Hrastnik2022-01-23
| |
| * fix: Skip modifying the root layer range, it always covers 0..maxBlaž Hrastnik2022-01-23
| |
| * Update range markers so we can determine which layers can be reusedBlaž Hrastnik2022-01-23
| |
| * Try to reuse an existing layer based on layer.rangesBlaž Hrastnik2022-01-23
| |
| * Ignore layers without highlight captures, avoid cloning rangesBlaž Hrastnik2022-01-23
| |
| * Reuse the source slice between layersBlaž Hrastnik2022-01-23
| |
| * Store theme scopes on the loader, this way theme isn't passed aroundBlaž Hrastnik2022-01-23
| |
| * syntax: Split parsing and highlightingBlaž Hrastnik2022-01-23
| |
| * add select_next_sibling and select_prev_sibling commands (#1495)Michael Davis2022-01-20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * add select_next_sibling and select_prev_sibling commands * refactor objects to use higher order functions * address clippy feedback * move selection cloning into commands * add default keybindings under left/right brackets * use [+t,]+t for selecting sibling syntax nodes * setup Alt-{j,k,h,l} default keymaps for syntax selection commands * reduce boilerplate of select_next/prev_sibling in commands * import tree-sitter Node type in commands
| * build(deps): bump smallvec from 1.7.0 to 1.8.0 (#1532)dependabot[bot]2022-01-18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Bumps [smallvec](https://github.com/servo/rust-smallvec) from 1.7.0 to 1.8.0. - [Release notes](https://github.com/servo/rust-smallvec/releases) - [Commits](https://github.com/servo/rust-smallvec/compare/v1.7.0...v1.8.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>
| * fix(auto_pairs): fix auto pairs with crlf (#1470)Skyler Hawthorne2022-01-17
| | | | | | | | | | | | | | | | | | | | | | Auto pairs were resulting in incorrect ranges in the resulting when the line terminators are CRLF (i.e. Windows). It turns out this is because when we were checking if the selection was a single-width cursor, it incorrectly assumed that this would be a single char. This is not the case, as a cursor can cover a multi-code point grapheme. Therefore, we must instead explicitly work with and check graphemes to determine if the cursor should move or extend the selection. Fixes #1436
| * Update to rust 1.58, fix a bunch of optional lintsBlaž Hrastnik2022-01-16
| |
| * Use the correct language ID for JavaScript & TypeScript (#1466)Kevin Sjöberg2022-01-15
| | | | | | | | | | | | | | * Use correct language ID for JavaScript/TypeScript * Add missing slash * Only calculate fallback when needed
| * remove outdated note (#1485)Kirawi2022-01-12
| |
| * expand_selection to current node with no children (#1454)Michael Davis2022-01-08
| |
| * feat(commands): shrink_selection (#1340)Matouš Dzivjak2022-01-06
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * feat(commands): shrink_selection Add `shrink_selection` command that can be used to shrink previously expanded selection. To make `shrink_selection` work it was necessary to add selection history to the Document since we want to shrink the selection towards the syntax tree node that was initially selected. Selection history is cleared any time the user changes selection other way than by `expand_selection`. This ensures that we don't get some funky edge cases when user calls `shrink_selection`. Related: https://github.com/helix-editor/helix/discussions/1328 * Refactor shrink_selection, move history to view * Remove useless comment * Add default key mapping for extend&shrink selection * Rework contains_selection method * Shrink selection without expand selects first child
| * Release 0.6Blaž Hrastnik2022-01-04
| |
| * Add llvm-mir highlighting (#1398)Sebastian Neubauer2022-01-04
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Add injection regex for more languages To support embedding them in other languages like markdown. * Add llvm-mir highlighting LLVM Machine IR is dumped as yaml files that can embed LLVM IR and Machine IR. To support this, add a llvm-mir-yaml language that uses the yaml parser, but uses different injections to highlight IR and MIR. * Update submodule with fixed multiline comments Co-authored-by: Blaž Hrastnik <blaz@mxxn.io>