aboutsummaryrefslogtreecommitdiff
path: root/helix-term/src
Commit message (Collapse)AuthorAge
* add conditional noop render backSkyler Hawthorne2022-10-19
| | | | It makes it much slower without stubbing this out
* update write-quit to wait for savesSkyler Hawthorne2022-10-19
|
* fix buffer-closeSkyler Hawthorne2022-10-19
|
* fix(write): do not set new path on document until write succeedsSkyler Hawthorne2022-10-19
| | | | | | If a document is written with a new path, currently, in the event that the write fails, the document still gets its path changed. This fixes it so that the path is not updated unless the write succeeds.
* fix: buffer-close ensuring writesSkyler Hawthorne2022-10-19
| | | | Make sure buffer-close waits for the document to finish its writes.
* chore(write): serialize write operations within a DocumentSkyler Hawthorne2022-10-19
| | | | | | | | | | | | | | | The way that document writes are handled are by submitting them to the async job pool, which are all executed opportunistically out of order. It was discovered that this can lead to write inconsistencies when there are multiple writes to the same file in quick succession. This seeks to fix this problem by removing document writes from the general pool of jobs and into its own specialized event. Now when a user submits a write with one of the write commands, a request is simply queued up in a new mpsc channel that each Document makes to handle its own writes. This way, if multiple writes are submitted on the same document, they are executed in order, while still allowing concurrent writes for different documents.
* Fix deleting word from end of buffer (#4328)Jonathan LEI2022-10-19
|
* display tree sitter scopes in a popup (#4337)Roberto Vidal2022-10-18
|
* Use the same `WalkBuilder` configuration for the global search file picker ↵Philipp Mildenberger2022-10-18
| | | | | as the default file picker (#4334) Skip searching .git in global search, similar to how file picker skips listing files in .git.
* Replace `in_bounds` with calculation of end_indentA-Walrus2022-10-17
| | | | | | Instead of repeatedly checking if it is in_bounds, calculate the max_indent beforehand and just loop. I added a debug_assert to "prove" that it never tries drawing out of bounds.
* Only draw indent guides within boundsA-Walrus2022-10-17
| | | | | | Better performance, and otherwise very long lines with lots of tabs will wrap around the u16 and come back on the other side, messing up the beginning skip_levels.
* Make skip_levels a u8A-Walrus2022-10-17
|
* Fix rendering of lines longer than 2^16A-Walrus2022-10-17
| | | | | Before things would be cast to u16 earlier than needed, which would cause problems for insanely long lines (longer than 2^16 ~ 65 thousand)
* Change diagnostic picker keybind to <space>d (#4229)Gokul Soumya2022-10-17
| | | | | | | Also changes workspace diagnostic picker bindings to <space>D and changes the debug menu keybind to <space>g, the previous diagnostic picker keybind. This brings the diagnostic picker bindings more in line with the jump to next/previous diagnostic bindings which are currently on ]d and [d.
* Fix debug assertion for diagnostic sort order (#4319)Michael Davis2022-10-16
| | | | | | | The debug assertion that document diagnostics are sorted incorrectly panics for cases like `[161..164, 162..162]`. The merging behavior in the following lines that relies on the assertion only needs the input ranges to be sorted by `range.start`, so this change simplifies the assertion to only catch violations of that assumption.
* fix `:insert-output` doc: inserting output **before** each selection (#4286)ZJPzjp2022-10-15
|
* nit: remove a String allocation that is immediately used as an &str (#4277)Poliorcetics2022-10-14
|
* Changed Selection Yank Message (#4275)Nathaniel Graham2022-10-14
| | | Co-authored-by: Nathaniel Graham <ngraham@protonmail.com>
* Apply transactions to the jumplist for undo/redo (#4227)Michael Davis2022-10-12
| | | | | Undo/redo/earlier/later call `Document::apply_impl` which applies transactions to the document. These transactions also need to be applied to the view as in 0aedef0.
* Fix some commands not showing names in palette (#4223)Armin Ronacher2022-10-12
|
* Fix append cursor location when selection anchor is at end of document (#4147)Graic2022-10-12
|
* Fix confusion with using --hsplit --vsplit on startup at same time (#4202)Brian Orwe2022-10-11
|
* fix: remove unneeded allocations when calling helix_view::Info::newAlexis (Poliorcetics) Bourget2022-10-11
|
* Overlay all diagnostics with highest severity on top (#4113)Michael Davis2022-10-11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Here we separate the diagnostics by severity and then overlay the Vec of spans for each severity on top of the highlights. The error diagnostics end up overlaid on the warning diagnostics, which are overlaid on the hints, overlaid on info, overlaid on any other severity (default), then overlaid on the syntax highlights. This fixes two things: * Error diagnostics are now always visible when overlapped with other diagnostics. * Ghost text is eliminated. * Ghost text was caused by duplicate diagnostics at the EOF: overlaps within the merged `Vec<(usize, Range<usize>)>` violate assumptions in `helix_core::syntax::Merge`. * When we push a new range, we check it against the last range and merge the two if they overlap. This is safe because they both have the same severity and therefore highlight. The actual merge is skipped for any of these when they are empty, so this is very fast in practice. For some data, I threw together an FPS counter which renders as fast as possible and logs the renders per second. With no diagnostics, I see an FPS gain from this change from 868 FPS to 878 (+1.1%) on a release build on a Rust file. On an Erlang file with 12 error diagnostics and 6 warnings in view (233 errors and 66 warnings total), I see a decrease in average FPS from 795 to 790 (-0.6%) on a release build.
* remove filterting with C-space from pickerPascal Kuthe2022-10-11
|
* Treat space as a seperator instead of a character in fuzzy pickerPascal Kuthe2022-10-11
|
* Add a helper function for applying transactionsMichael Davis2022-10-11
| | | | | | It is easy to forget to call `Document::apply` and/or `View::apply` in the correct order. This commit introduces a helper function which closes over both calls.
* Apply transactions to ViewsMichael Davis2022-10-11
| | | | | | This change adds View::apply calls for all Document::apply call-sites, ensuring that changes to a document do not leave invalid entries in the View's jumplist.
* picker: Highlight the document on idle timeoutBlaž Hrastnik2022-10-11
|
* Propagate idle timeout event to components (#3172)Gokul Soumya2022-10-11
|
* Add cursorcolumn (#4084)A-Walrus2022-10-08
| | | | | | | | | | | | | | | * Implement cursorcolumn * Add documentation * Separate column style from line with fallback * Fallback to cursorcolumn first * Switch to non-fallback try_get_exact Add new function `try_get_exact`, which doesn't perform fallback, and use that instead because the fallback behaviour is being handled manually.
* Fix bugs in search wraparound message (#4101)A-Walrus2022-10-04
|
* Exit gracefully when close operation fails (#4081)Skyler Hawthorne2022-10-03
| | | | | | | | If the close method fails, the editor will quit before restoring the terminal. This causes the shell to break if, e.g. the LS times out shutting down. This fixes this by always restoring the terminal after closing, and printing out a message to stderr if there is an error.
* Automatically track pseudo-pending text (#4077)Michael Davis2022-10-03
| | | | | | | | | | | | | | | | | | This change automatically tracks pending text for for commands which use on-next-key callbacks. For example, `t` will await the next key event and "t" will be shown in the bottom right-hand corner to show that we're in a pending state. Previously, the text for these on-next-key commands needed to be hard-coded into the command definition which had some drawbacks: * It was easy to forget to write and clear the pending text. * If a command was remapped in a custom config, the pending text would still show the old key. With this change, pending text is automatically tracked based on the key events that lead to the command being executed. This works even when the command is remapped in config and when the on-next-key callback is nested under some key sequence (for example `mi`).
* respond to SIGUSR1 by reloading config (#3952)Karsten Gebbert2022-10-03
| | | | | * respond to SIGUSR1 by reloading config * document USR1 signal handling
* Keep arrow and special keys in insert (#3915)Ivan Tham2022-10-03
| | | | | | | | | | | | | | | | | | | | | | * Keep arrow and special keys in insert Advanced users won't need it and is useful for beginners. Revert part of #3671. * Change text for insert mode section Co-authored-by: Blaž Hrastnik <blaz@mxxn.io> * Remove ctrl-up/down in insert * Reorganize insert keys and docs * Improve page up experience on last tutor The last tutor page can page down multiple times and it will break the heading on the 80x24 screen paging when reaching the last page, this keeps the style the same and make sure page up and down won't break it. Co-authored-by: Blaž Hrastnik <blaz@mxxn.io>
* Change focus to modified docs on quit (#3872)A-Walrus2022-10-03
| | | | | | | | | | | | | | | | | | * Change focus to modified docs on quit When quitting with modified documents, automatically switch focus to one of them. * Update helix-term/src/commands/typed.rs Co-authored-by: Poliorcetics <poliorcetics@users.noreply.github.com> * Make it work with buffer-close-all and the like * Cleanup Use Cow instead of String, and rename DoesntExist -> DoesNotExist Co-authored-by: Poliorcetics <poliorcetics@users.noreply.github.com>
* Add option to skip the first indent guide (#3819)Robin2022-10-03
| | | | | | | | | | | | | | | | | | | | | | | * Add option to skip the first indent guide * reorder skip_first option * change indent-guides.skip_first to a number * rename skip -> skip_levels * add skip_levels to the book * Update book/src/configuration.md Co-authored-by: A-Walrus <58790821+A-Walrus@users.noreply.github.com> * Update helix-term/src/ui/editor.rs Co-authored-by: Michael Davis <mcarsondavis@gmail.com> Co-authored-by: Robin <robinvandijk@klippa.com> Co-authored-by: A-Walrus <58790821+A-Walrus@users.noreply.github.com> Co-authored-by: Michael Davis <mcarsondavis@gmail.com>
* Rename I/A "Insert at start/end of line" (#3753)Michael Davis2022-10-03
| | | | | | | | | | | * keymap: Rename A "Insert at end of line" The language for the `A` binding is potentially confusing because `A` behaves like `i` done at the end of the line rather than `a`. This change renames the command to match Kakoune's language[^1]. [^1]: https://github.com/mawww/kakoune/blob/021da117cf90bf25b65e3344fa8e43ab4262b714/src/normal.cc#L2229 * keymap: Rename I `insert_at_line_start`
* Find workspace from document path (#3553)ath32022-10-03
|
* Select inserted space after join (#3549)Ivan Tham2022-10-03
| | | | | | | | | * Select inserted space after join * Split join_selections with space selection to A-J Kakoune does that too and some users may still want to retain their selections. * Update join_selections docs
* Add command names to command palette (#4071)nuid322022-10-03
|
* Fix signature help panic when too large (#4030)Ivan Tham2022-10-03
| | | | | When signature help is too large it may cause a panic when it is too large, now I just make the hover do an intersection with surface to make sure it never overflow.
* goto_window_* extends selection (#3985)greg-enbala2022-10-03
| | | | | * goto_window_* extends selection * Don't push to the jumplist
* feat(statusline): add option to show total line numbers in file (#3960)Joshua Pauline2022-10-03
| | | | | * feat(statusline): add option to show total line numbers in file * feat(line numbers): add config to doc book
* Add configureable statusline mode names (#3311)PeepNSheep2022-10-03
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Added 'long-mode' statusline element * Added customizable statusline mode names * Removed a string clone * Added documentation * Updated documentation, moved modenames to a seperate section * Update configuration.md * Documentation update * Documentation update * Documentation update * Update configuration.md * Update configuration.md * Fixed merge error * Update configuration.md * Update configuration.md
* Add `ui.gutter.selected` option for themes (#3303)ChrHorn2022-10-03
| | | | | * add `ui.gutter.selected` * add `ui.gutter`, `ui.gutter.selected` to docs
* Extend textobject selections in select modeMichael Davis2022-10-03
|
* Use Range::with_direction consistentlyMichael Davis2022-10-03
|
* Use requested direction for new textobject selection rangeMichael Davis2022-10-03
| | | | | | | | | | | | | | | | | | This changes the behavior of operations like `]f`/`[f` to set the direction of the new range to the direction of the action. The original behavior was to always use the head of the next function. This is inconsistent with the behavior of goto_next_paragraph and makes it impossible to create extend variants of the textobject motions. This causes a behavior change when there are nested functions. The behavior in the parent commit is that repeated uses of `]f` will select every function in the file even if nested. With this commit, functions are skipped. It's notable that it's possible to emulate the original behavior by using the `ensure_selections_forward` (A-:) command between invocations of `]f`.