aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAge
...
* Reimplement clipboard commands in terms of special regsMichael Davis2023-07-31
| | | | | | | | | | Since the clipboard provider now lives on the Registers type, we want to eliminate it from the Editor. We can do that and clean up the commands that interact with the clipboard by calling regular yank, paste and replace impls on the clipboard special registers. Eventually the clipboard commands could be removed once macro keybinding is supported.
* Preview the latest value for regular registersMichael Davis2023-07-31
| | | | | | | | | | | | | | | | | | | | | | | This fixes a discrepancy between regular registers which are used for yanking multiple values (for example via `"ay`) and regular registers that store a history of values (for example `"a*`). Previously, the preview shown in `select_register`'s infobox would show the oldest value in history. It's intuitive and useful to see the most recent value pushed to the history though. We cannot simply switch the preview line from `values.first()` to `values.last()`: that would fix the preview for registers used for history but break the preview for registers used to yank multiple values. We could push to the beginning of the values with `Registers::push` but this is wasteful from a performance perspective. Instead we can have `Registers::read` return an iterator that returns elements in the reverse order and reverse the values in `Register::write`. This effectively means that `push` adds elements to the beginning of the register's values. For the sake of the preview, we can switch to `values.last()` and that is then correct for both usage- styles. This also needs a change to call-sites that read the latest history value to switch from `last` to `first`.
* book: Document default and special registersMichael Davis2023-07-31
|
* commands: Allow using selected register where hardcodedMichael Davis2023-07-31
| | | | | These snippets use hardcoded registers but it can be useful to be able to specify a register for these commands.
* Use refactored Registers typeMichael Davis2023-07-31
| | | | | | | This is an unfortunately noisy change: we need to update virtually all callsites that access the registers. For reads this means passing in the Editor and for writes this means handling potential failure when we can't write to a clipboard register.
* Add system & primary clipboards as special registersMichael Davis2023-07-31
| | | | | | | | | | | | | | These special registers join and copy the values to the clipboards with '*' corresponding to the system clipboard and '+' to the primary as they are in Vim. This also uses the trick from PR6889 to save the values in the register and re-use them without joining into one value when pasting a value which was yanked and not changed. These registers are not implemented in Kakoune but Kakoune also does not have a built-in clipboard integration. Co-authored-by: CcydtN <51289140+CcydtN@users.noreply.github.com> Co-authored-by: Pascal Kuthe <pascal.kuthe@semimod.de>
* Add the '%' (current filename) registerMichael Davis2023-07-31
| | | | | | | | | | This register also comes from Kakoune. It's read-only and produces the current document's name, defaulting to the scratch buffer name constant. (Also see PR5577.) Co-authored-by: Ivan Tham <pickfire@riseup.net>
* Add '#' and '.' special registersMichael Davis2023-07-31
| | | | | | | | | | | | | | | | | | These come from Kakoune: * '#' is the selection index register. It's read-only and produces the selection index numbers, 1-indexed. * '.' is the selection contents register. It is also read-only and mirrors the contents of the current selections when read. We switch the iterators returned from Selection's `fragments` and `slices` methods to ExactSizeIterators because: * The selection contents register can simply return the fragments iterator. * ExactSizeIterator is already implemented for iterators over Vecs, so it's essentially free. * The `len` method can be useful on its own.
* Refactor Registers to take EditorMichael Davis2023-07-31
| | | | | | | | | | | | | | | | | | | | | | This sets up a new Registers type that will allow us to expand support for special registers. (See the child commits.) We start simple with the regular (`Vec<String>`) registers and the simplest special register, the black hole. In the child commits we will expand these match arms with more special registers. The upcoming special registers will need a few things that aren't possible with the current Registers type in helix-core: * Access to the `Editor`. This is only necessary when reading from registers, so the `&Editor` parameter is only added to `Registers::read`. * Returning owned values. Registers in helix-core returns references to the values backed by the `Vec<String>` but future special registers will need to return owned values. We refactor the return value of the read operations to give `Cow<str>`s and iterators over those. * Returning a `Result` for write/push functions. This will be used by the clipboard special registers.
* replace new lsp for vlang (#7760)lydiandy2023-07-30
| | | | | | | | | | | | | | | | | | | | | * fix vlang grammar fetch and build fail * update highlights.scm for v-analyzer * Update languages.toml Co-authored-by: Michael Davis <mcarsondavis@gmail.com> * Update runtime/queries/v/highlights.scm Co-authored-by: Michael Davis <mcarsondavis@gmail.com> * update scm for new lsp * gen doc lang-support.md --------- Co-authored-by: Michael Davis <mcarsondavis@gmail.com>
* add new theme based on the default vim dark theme (#7785)Jesse Luehrs2023-07-30
|
* Register .gltf file type for JSON (#7781)Mateusz S. Szczygieł2023-07-29
|
* feat: update prql parser (#7771)Matthias Q2023-07-28
|
* Add wren support (#7765)Jummit2023-07-28
|
* Refactor Nix flake to use crane (#7763)Michael Davis2023-07-28
| | | | | | | | | | | | This resolves a build issue with nci/dream2nix and git dependencies. We can keep most of the helix-specific parts of the flake, we just need to switch from configuring nci to calling craneLib functions. We also switch to flake-utils from flake-parts: * Using rust-overlay with flake-parts directly is unergonomic (see https://github.com/hercules-ci/flake-parts/discussions/83). * Removing flake-parts reduces the overall dependencies: rust-overlay already depends on flake-utils.
* Reformat with nightly rustfmt for better let-else formatting (#7721)Philipp Mildenberger2023-07-27
|
* pin TS to unreleased git revision to fix freezes (#7737)Pascal Kuthe2023-07-27
|
* highlighted_code_block: Take input text as &strMichael Davis2023-07-27
| | | | | | This removes a handful of allocations for functions calling into the function, which is nice because the prompt may call this function on every keypress.
* Prefer RopeSlice to &Rope in helix_core::syntaxMichael Davis2023-07-27
| | | | | | | | | | | | | | | Pascal and I discussed this and we think it's generally better to take a 'RopeSlice' rather than a '&Rope'. The code block rendering function in the markdown component module is a good example for how this can be useful: we can remove an allocation of a rope and instead directly turn a '&str' into a 'RopeSlice' which is very cheap. A change to prefer 'RopeSlice' to '&Rope' whenever the rope isn't modified would be nice, but it would be a very large diff (around 500+ 500-). Starting off with just the syntax functions seems like a nice middle-ground, and we can remove a Rope allocation because of it. Co-authored-by: Pascal Kuthe <pascal.kuthe@semimod.de>
* Tune regex highlights for usage in promptsMichael Davis2023-07-27
| | | | | | | | | | | Since regex is almost always injected into other languages, `pattern_character`s will inherit the highlight for the structure that injects them (for example `/foo/` in JavaScript or `~r/foo/` in Elixir). This removes the string highlight when used in the prompt. We also add `ERROR` node highlighting so that errors in regex syntax appear in the prompt. This resolves a TODO in the `regex_prompt` function about highlighting errors in the regex.
* Syntax-highlight regex promptsMichael Davis2023-07-27
| | | | | | | | | | | We can use tree-sitter-regex highlighting in prompts for entering regexes, like `search` or `global_search`. The `highlighted_code_block` function from the markdown component makes this a very small change. This could be improved in the future by leaving the parsed syntax tree on the prompt, allowing incremental updates. Prompt lines are usually so short though and tree-sitter-regex is rather small and uncomplicated, so that improvement probably wouldn't make a big difference.
* Save an undo checkpoint before accepting completion (#7747)Michael Davis2023-07-27
|
* Theme Pop-Dark: Increase Diagnostics clarity (#7702)eh2023-07-26
|
* Update everforest_dark.toml to add missing color definitions (#7739)saltlakrits2023-07-26
|
* fix incorrect predicate in comment highlights (#7732)Pham Huy Hoang2023-07-25
|
* Update soft-wrap indicator in gruvbox themes (#7736)Federico Stra2023-07-25
|
* build(deps): bump signal-hook from 0.3.16 to 0.3.17 (#7728)dependabot[bot]2023-07-25
| | | | Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* build(deps): bump thiserror from 1.0.43 to 1.0.44 (#7730)dependabot[bot]2023-07-25
| | | | Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* build(deps): bump serde from 1.0.171 to 1.0.175 (#7727)dependabot[bot]2023-07-25
| | | | Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* build(deps): bump tempfile from 3.6.0 to 3.7.0 (#7726)dependabot[bot]2023-07-25
| | | | Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Fix docs for default statusline config (#7720)sigmaSd2023-07-24
|
* Fix selection highlighting in remaining gruvbox derived themes (#7717)Ravi Shekhar Jethani2023-07-23
|
* Drop mut from variable to silence linter (#7704)Jonas Tepe2023-07-22
|
* Add support for LSP DidChangeWatchedFiles (#7665)Ryan Fowler2023-07-21
| | | | | | | | | | | | | | | | | | | * Add initial support for LSP DidChangeWatchedFiles * Move file event Handler to helix-lsp * Simplify file event handling * Refactor file event handling * Block on future within LSP file event handler * Fully qualify uses of the file_event::Handler type * Rename ops field to options * Revert newline removal from helix-view/Cargo.toml * Ensure file event Handler is cleaned up when lsp client is shutdown
* feat: resolve code action (#7677)sigmaSd2023-07-21
|
* Add Kaolin Dark, Light and Valley Dark themes (#7151)Thales Ramos2023-07-19
| | | | | Add some missing keys Inherit themes from kaolin-dark and override diverging keys
* allow for higher F keys to be used (#7672)Christian Holman2023-07-19
|
* build(deps): bump signal-hook from 0.3.15 to 0.3.16 (#7664)dependabot[bot]2023-07-18
| | | | Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* build(deps): bump indoc from 2.0.2 to 2.0.3 (#7663)dependabot[bot]2023-07-18
| | | | Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* build(deps): bump anyhow from 1.0.71 to 1.0.72 (#7662)dependabot[bot]2023-07-18
| | | | Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* build(deps): bump serde_json from 1.0.100 to 1.0.103 (#7661)dependabot[bot]2023-07-18
| | | | Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Remove snap aliasing instructions (#7657)J. Brock2023-07-17
| | | | | | The helix snap now gets aliased to hx by default at installation time, so manual aliasing should no longer be required. Signed-off-by: Joseph Brock <joseph.brock@protonmail.com>
* switch to https://github.com/tree-sitter-perl/tree-sitter-perl (#7644)Jesse Luehrs2023-07-17
|
* Update my name README.md (#7656)Jake Langford2023-07-17
|
* Clear statusline while prompt is visible (#7646)Pascal Kuthe2023-07-17
|
* use a single query for injectionsPascal Kuthe2023-07-17
| | | | In the past we used two separate queries for combined and normal injections. There was no real reason for this (except historical/slightly easier implementation). Instead, we now use a single query and simply check if an injection corresponds to a combined injection or not.
* fix crash when encountering overlapping injectionsPascal Kuthe2023-07-17
|
* Add a more file types for R (#7633)Doug Kelkhoff2023-07-15
|
* Add fsharp language support (#7619)kaashyapan2023-07-15
|
* feat: add Brewfile to Ruby file-types (#7629)Michael Goodness2023-07-14
|