aboutsummaryrefslogtreecommitdiff
path: root/helix-term/src/application.rs
Commit message (Collapse)AuthorAge
...
* 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.
* Propagate idle timeout event to components (#3172)Gokul Soumya2022-10-11
|
* 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.
* respond to SIGUSR1 by reloading config (#3952)Karsten Gebbert2022-10-03
| | | | | * respond to SIGUSR1 by reloading config * document USR1 signal handling
* diagnostics: Use Vec<Tag> instead of Option<Vec<Tag>>Blaž Hrastnik2022-09-20
|
* Track source and tags in diagnostics (#3898)Luke Cycon2022-09-20
|
* Remove the .txt suffix from tutorBlaž Hrastnik2022-09-11
| | | | | | | | | | | | The tutor file is loaded as .txt which can potentially spawn a language server. Then the path is unset, but the LS remains active. This can cause panics since updates are now submitted for a doc with no path. As a quick workaround we remove the extension which should avoid detection. Fixes #3730
* Improve error handling for config-reload (#3668)A-Walrus2022-09-10
| | | | | | | * Don't change config to default when refreshing invalid config * Propely handle theme errors with config-reload * Extract refresh theme into seperate function
* fix: lsp: Don't send didOpen events for documents with no URLBlaž Hrastnik2022-09-04
| | | | Fixes #3683
* minor: Simplify another document_mut statementBlaž Hrastnik2022-09-04
|
* Share the restore_term code between panic and normal exits (#3612)Charlie Groves2022-08-31
| | | | | | | | It was starting to diverge as the normal exit code was restoring the prompt but the panic code wasn't, and the panic code was disabling bracketed paste but the normal code wasn't. This changes the panic path slightly in that we won't disable raw mode if exiting alternate screen and disabling bracketed paste fails. If that happens, things are so busted I don't think it matters anyway.
* Discard LSP publishDiagnostic when LS is not initialized (#3403)Michael Davis2022-08-31
| | | | | | | | | | | | | | | | | This is invalid according to the [LSP spec]: > In addition the server is not allowed to send any requests > or notifications to the client until it has responded with an > InitializeResult, with the exception that during the initialize > request the server is allowed to send the notifications > window/showMessage, window/logMessage and telemetry/event as well > as the window/showMessageRequest request to the client. So we should discard the message when the language server is not yet initialized. This can happen if the server sends textDocument/publishDiagnostics before responding to the initialize request. clojure-lsp appears to exhibit this behavior in the wild. [LSP Spec]: https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#initialize
* Add bracketed paste (#3233)Charlie Groves2022-08-29
|
* Add custom event type replacing crossterm's Event (#3169)Gokul Soumya2022-08-09
| | | | | | | | | | Ported over from 61365dfbf3 in the `gui` branch. This will allow adding our own events, most notably an idle timer event (useful for adding debounced input in [dynamic pickers][1] used by interactive global search and workspace symbols). [1]: https://github.com/helix-editor/helix/pull/3110 Co-authored-by: Blaž Hrastnik <blaz@mxxn.io>
* add a CLI flag for specifying config file location (#2666)Michael Davis2022-08-04
|
* Modified restore_term fn in application.rs. Changed '\x1B[2 q' to '\x1B[0 q' ↵Eric K2022-08-02
| | | | to restore cursor to user default after exiting helix (#3289)
* Suport diagnostic code (#3096)Erasin2022-07-26
| | | | | | | * add code for diagnostic. This PR provides a solution to resolve #2994. missing Code Actions for lsp * remote unused import
* Set the selection point of the first file correctly (#3073)Narazaki Shuji2022-07-18
|
* feat(term): uniformize word-wise movement and deletion (#2500)Benoît Cortier2022-07-15
| | | | | | | | | | | | Ctrl-based shortcuts are common in numerous applications. This change: - Adds Ctrl+{Left/Right/Backspace/Delete} for word-wise movement/deletion in prompt, picker, … - Removes Alt-Left and Alt-Right in prompt, picker, … - Adds Alt-Delete in insert mode for forward word deletion In some terminals, Alt-Backspace might not work because it is ambigous. See: https://github.com/helix-editor/helix/pull/2193#issuecomment-1105042501 Hence, Alt alternative is not removed.
* Sub sort diagnostics by line numberGokul Soumya2022-07-06
|
* Add live preview to theme picker (#1798)Joe2022-07-05
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Add theme picker with live preview * Add live theme preview to :theme command * cargo fmt * Fix clippy warnings * Remove picker variant * Remove unused import * Cleanup * Change current_theme to last_theme * Fix accidental comment flash deletion * Typo * Remove theme cache * Add some comments * Refactor some theme handling TIL flatmap on Option is called and_then * Remove unnecessary renames * Constrain last_theme theme preview lifecycle * Switch to bitflag implementation * Better handling of last_theme * Sort theme names * Better memory juggling * Missed a branch * Remove name from theme, switch bitand to & * cargo fmt * Update helix-view/src/editor.rs * Switch boolean to enum * Remove bitflag impl * cargo fmt * Remove un-needed type arg * cargo fmt
* adds --vsplit and --hsplit arguments (#2773)plexom2022-07-01
| | | | | | | | | * adds --vsplit and --hsplit arguments * moved comment * fixed lint (third time's a charm) * changed vsplit and hsplit from two separate bools to type Option<Layout>, and some cleanup
* Add workspace and document diagnostics picker (#2013)Falco Hirschenberger2022-06-30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Add workspace and document diagnostics picker fixes #1891 * Fix some of @archseer's annotations * Add From<&Spans> impl for String * More descriptive parameter names. * Adding From<Cow<str>> impls for Span and Spans * Add new keymap entries to docs * Avoid some clones * Fix api change * Update helix-term/src/application.rs Co-authored-by: Bjorn Ove Hay Andersen <bjrnove@gmail.com> * Fix a clippy hint * Sort diagnostics first by URL and then by severity. * Sort diagnostics first by URL and then by severity. * Ignore missing lsp severity entries * Add truncated filepath * Typo * Strip cwd from paths and use url-path without schema * Make tests a doctest * Better variable names Co-authored-by: Falco Hirschenberger <falco.hirschenberger@itwm.fraunhofer.de> Co-authored-by: Bjorn Ove Hay Andersen <bjrnove@gmail.com>
* factor new Application with file arg to functionSkyler Hawthorne2022-06-19
|
* fix(command): write-quit: do not quit if write failsSkyler Hawthorne2022-06-19
| | | | | | | | | During write-quit, if the file fails to be written for any reason, helix will still quit without saving the changes. This fixes this behavior by introducing fallibility to the asynchronous job queues. This will also benefit all contexts which may depend on these job queues. Fixes #1575
* consolidate idle timer logic, make conditionalSkyler Hawthorne2022-06-19
|
* don't read from stdin for integration testsSkyler Hawthorne2022-06-19
|
* use env var for integration test log levelSkyler Hawthorne2022-06-19
|
* use test terminal backend for integration testsSkyler Hawthorne2022-06-19
|
* Add more context; Editor::open doesn't need to own pathSkyler Hawthorne2022-06-19
|
* use idle timer instead of fixed timeoutSkyler Hawthorne2022-06-19
|
* use main application event loopSkyler Hawthorne2022-06-19
| | | | Use the Application's main event loop to allow LSP, file writes, etc
* reorganize tests into groupsSkyler Hawthorne2022-06-19
|
* Fix initial selection of Document in new viewSkyler Hawthorne2022-06-19
| | | | | | | | | | | When a new View of a Document is created, a default cursor of 0, 0 is created, and it does not get normalized to a single width cursor until at least one movement of the cursor happens. This appears to have no practical negative effect that I could find, but it makes tests difficult to work with, since the initial selection is not what you expect it to be. This changes the initial selection of a new View to be the width of the first grapheme in the text.
* improve test harnessSkyler Hawthorne2022-06-19
| | | | | | | * Use new macro syntax for encoding sequences of keys * Make convenience helpers for common test pattern * Use indoc for inline indented raw strings * Add feature flag for integration testing to disable rendering
* Integration testing harnessBlaž Hrastnik2022-06-19
|
* Simplify handle_terminal_events signatureBlaž Hrastnik2022-06-19
|
* move config parsing back into mainSkyler Hawthorne2022-06-19
|
* Update auto-pairs and idle-timeout when the config is reloaded (#2736)Bjorn Ove Hay Andersen2022-06-15
|
* Don't panic on LSP parsing errorsBlaž Hrastnik2022-05-11
| | | | | | This made sense initially when the implementation was still new (so we got user reports more frequently), but a parsing error now generally signifies a language server isn't properly implementing the spec.
* allow whitespace to be renderedOmnikar2022-04-20
| | | | Co-authored-by: Michael Davis <mcarsondavis@gmail.com>
* Add support for local language configuration (#1249)Kirawi2022-04-18
| | | | | | | * add local configuration * move config loading to Application::new * simplify find_root_impl
* clear terminal after switching to alternate screenRose Hudson2022-04-04
| | | | | | when using helix over mosh, the screen doesn't get cleared and characters get left all over the place until they are overwritten. with this change, the screen gets properly cleared as soon as helix starts
* lsp: Implement support for workspace_folders (currently just one)Blaž Hrastnik2022-04-01
| | | | Refs #1898
* Revert "Resize is not necessary inside SIGCONT, handled by render()"Blaž Hrastnik2022-03-29
| | | | | | Fixes #1877 This reverts commit 85264a861aeda7a002dda548403258620e914b57.
* Split off dap event handlers into helix-view to allow reuseBlaž Hrastnik2022-03-28
|
* Resize is not necessary inside SIGCONT, handled by render()Blaž Hrastnik2022-03-28
|
* Move top level lsp config to editor.lsp (#1868)Gokul Soumya2022-03-28
| | | | | | | | | | | * Move top level lsp config to editor.lsp This is mainly done to accomodate the new lsp.signature-help config option that will be introduced in https://github.com/helix-editor/helix/pull/1755 which will have to be accessed by commands. The top level config struct is split and moved to different places, making the relocation necessary * Revert rebase slipup