aboutsummaryrefslogtreecommitdiff
path: root/helix-term/src
Commit message (Collapse)AuthorAge
* 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
* Switch to Result for invalid languageA-Walrus2022-09-10
|
* Add error handling to set language commandA-Walrus2022-09-10
| | | | | If you type a nonexistant language an appropriate message will show, and the language won't be changed.
* Add `text` to language completerA-Walrus2022-09-10
|
* Remove default insert mode movement bindingsSkyler Hawthorne2022-09-08
| | | | | | | | | | Helix is first and foremost a modal editor. Willingness to support non-modal editing is there, but it is not one that should be encouraged with the default settings. There are an increasing number of users who are stumbling because they are trying to use Helix as a non-modal editor, so this is an effort to encourage new users to stop and take notice that Helix has a different paradigm than VSCode, Sublime, etc. Users can still add these bindings back to their own configs if they wish.
* Fix :reflow panic by enusring cursor in view (#3733)A-Walrus2022-09-07
|
* Remove LspNotDefined, instead return an Option<>Blaž Hrastnik2022-09-07
|
* fix: View needs to retain the original scroll offset on splitBlaž Hrastnik2022-09-05
|
* Fix off-by-one in extend_line_above (#3689)Michael Davis2022-09-05
| | | | | | | | | | | | | | | | | | | | | | | | | | | `extend_line_above` (and `extend_line` when facing backwards) skip a line when the current range does not fully cover a line. Before this change: foo b#[|a]#r baz With `extend_line_above` or `extend_line` selected the line above. #[|foo bar]# baz Which is inconsistent with `extend_line_below`. This commit changes the behavior to select the current line when it is not already selected. foo #[|bar]# baz Then further calls of `extend_line_above` extend the selection up line-wise.
* 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
|
* Fix cargo doc warnings, and add GitHub action to ensure it (#3650)A-Walrus2022-09-03
|
* Expand doc/view macros to allow fetching specific idBlaž Hrastnik2022-09-03
| | | | This simplifies the code and hides away unwraps
* initial implementation of bufferline (#2759)aaron4042022-09-02
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * initial implementation of bufferline * fixed lint * changed to 'bufferline', added enum for config modes, some cleanup * fixed lint * added file modification indicator * removed redundant code, added proper themeing with fallback, changed 'file modified' indicator * remove commented code * Update helix-term/src/ui/editor.rs simplify text and offset computation Co-authored-by: Gokul Soumya <gokulps15@gmail.com> * add ui.bufferline.background key for themes Co-authored-by: lazytanuki <43273245+lazytanuki@users.noreply.github.com> * address PR comments * Update helix-term/src/ui/editor.rs * simplify computation of editor area: * change to set_stringn to avoid overflow * Update configuration.md Updates documentation to reflect decision re: defaulting to never showing bufferline. * addressed pr comments * fix build error * address pr comments * revert accidental change Co-authored-by: Gokul Soumya <gokulps15@gmail.com> Co-authored-by: lazytanuki <43273245+lazytanuki@users.noreply.github.com> Co-authored-by: Seth Bromberger <sbromberger@users.noreply.github.com>
* Fix closing buffer with custom keymap (#3633)A-Walrus2022-09-01
| | | | | * Fix closing buffer with custom keymap * Add comment explaining if
* Make mode editor-wide rather than per-documentBlaž Hrastnik2022-09-01
|
* fix: prevents storing last prompt if is top of stack (#3609)Saber Haj Rabiee2022-09-01
|
* Fix Prompt::handle_event compilationMichael Davis2022-08-31
|
* fix: Recalculate completion when going through prompt history (#3193)Frojdholm2022-08-31
| | | | | | | | | | | | | | | | | | | | | | | | * fix: Recalculate completion when going through prompt history * Update completion when the prompt line is changed It should not be possible to update the line without also updating the completion since the completion holds an index into the line. * Fix Prompt::with_line recalculate completion with_line was the last function where recalculate completion had to be done manually. This function now also recalculates the completion so that it's impossible to forget. * Exit selection when recalculating completion Keeping the selection index when the completion has been recalculated doesn't make sense. This clears the selection automatically, removing most needs to manually clear it. * Remove &mut on save_filter Co-authored-by: Blaž Hrastnik <blaz@mxxn.io>
* Show clipboard info in --health output (#2947)Gokul Soumya2022-08-31
| | | | | | | * Show clipboard info in --health output * health: Separate 'languages' category from 'all' Co-authored-by: Michael Davis <mcarsondavis@gmail.com>
* 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.
* Avoid command execution hooks on closed docs (#3613)Michael Davis2022-08-31
| | | | | | | | | Fixes a panic with a config like: [keys.normal.space] x = [":buffer-close"] by bailing out of the command-execution handling if the document doesn't exist after handling a command.
* Refactor goto_ts_object_impl as a motion (#3264)Michael Davis2022-08-31
| | | | | | | | | This refactor changes the overall structure of the goto_ts_object_impl command without removing any functionality from its behavior. The refactored motion: * acts on all selections instead of reducing to one selection * may be repeated with the `repeat_last_motion` (A-.) command * informs the user when the syntax-tree is not accessible in the current buffer
* 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
* jumplist: Add documents to view history (#3593)Michael Davis2022-08-31
| | | | | | | | | | | | | | This change adds documents to the view's document history Vec. (This is used by `ga` for example to access the last buffer.) Previously, a sequence like so would have confusing behavior: 1. Open file A: any document with an active language server 2. Find some definition that lives in another file - file B - with `gd` 3. Jump back in the jumplist with `C-o` to file A 4. Use `ga` intending to switch back to file B The behavior prior to this change was that `ga` would switch to file A: you could not use `ga` to switch to file B.
* Move mode transition logic to handle_keymap_event() (#2634)Lucy2022-08-31
| | | | | Co-authored-by: Blaž Hrastnik <blaz@mxxn.io> Co-authored-by: Blaž Hrastnik <blaz@mxxn.io>
* Use the original document and view for mode transition hooks (#3508)Michael Davis2022-08-31
| | | | | | | When changing focus, the lookup with `current!` may change the view and end up executing mode transition hooks on the newly focused view. We should use the same view and document to execute mode transition hooks so that switching away from a view triggers history save points.
* fix: Recalculate completion after pasting into promptBlaž Hrastnik2022-08-30
|
* completion: remove_follow links on filename_implBlaž Hrastnik2022-08-30
| | | | | We don't need to follow links since we're only scanning the current directory level (non-recursive).
* Fix process spawning error handling (#3349)PiergiorgioZagaria2022-08-30
| | | | | * Fix process spawning error handling * Log stderr in any case
* Derive Document language name from languages.toml name key (#3338)Michael Davis2022-08-30
| | | | | | | | | | | | | | | | | | | | | | | | | | | * Derive Document language name from `languages.toml` `name` key This changes switches from deriving the language name from the `languages.toml` `scope` key to `name` (`language_id` in the `LanguageConfiguration` type). For the most part it works to derive the language name from scope by chopping off `source.` or `rsplit_once` on `.` but for some languages we have now like html (`text.html.basic`), it doesn't. This also should be a more accurate fallback for the `language_id` method which is used in LSP and currently uses the `rsplit_once` strategy. Here we expose the language's name as `language_name` on `Document` and replace ad-hoc calculations of the language name with the new method. This is most impactful for the `file-type` statusline element which is using `language_id`. * Use `Document::language_name` for the `file-type` statusline element The `file-type` indicator element in the statusline was using `Document::language_id` which is meant to be used to for telling Language Servers what language we're using. That works for languages with `language-server` configurations in `languages.toml` but shows text otherwise. The new `Document::language_name` method from the parent commit is a more accurate way to determine the language.
* let extend-line respect range direction (#3046)Bob2022-08-29
| | | | | | | | | | | | | * let extend-line respect range direction * fix extend above logic * keep `x` existing binding * Update book/src/keymap.md Co-authored-by: Ivan Tham <pickfire@riseup.net> Co-authored-by: Ivan Tham <pickfire@riseup.net>
* Add bracketed paste (#3233)Charlie Groves2022-08-29
|
* Fix markdown indented code block rendering (#3503)Clay2022-08-24
|
* fix: Reset document mode when losing focusBlaž Hrastnik2022-08-23
| | | | Fixes #3090
* Editor: remove duplication for view focus/swap commandsBlaž Hrastnik2022-08-23
|
* Reduce health tick widthIvan Tham2022-08-23
| | | | Use the same tick as book to reduce margin of whitespace errors.
* Update to crossterm-0.25 (#3390)Charlie Groves2022-08-22
|
* Switch to `tabpad` configuration option (#3458)A-Walrus2022-08-21
| | | | Virtual whitespace tabs are created from the `tab` character padded with `tabpad` up to the tab width.
* style: fixes `unused_parens` warnings on nightly builds (#3471)Saber Haj Rabiee2022-08-18
|
* Adjust `m` textobject description and minor code clarification (#3343)Daniel S Poulin2022-08-17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | * Update description of `m` textobject to its actual functionality Sometime recently the functionality of `m` was changed to match the nearest pair to the cursor, rather than the former functionality of matching the pair only if the cursor was on one of the brace characters directly. * Rename surround methods to reflect that they work on pairs The current naming suggests that they may work generally on any textobject, whereas their implementation really focuses on pairs. * Change description of m textobject to match actual functionality The current implementation of `m` no longer merely looks at the pair character the cursor is on, but actually will search for the pair (defined in helix-core/src/surround.rs) that encloses the cursor, and not the entire selection. * Accept suggested wording change Co-authored-by: Michael Davis <mcarsondavis@gmail.com> * Prefix pair surround for consistency Co-authored-by: Michael Davis <mcarsondavis@gmail.com>
* remove duplicate entries from theme picker (#3439)ChrHorn2022-08-15
|
* Fix conditional setting of stdin handle on Windows (#3379)Kyle L. Davis2022-08-12
| | | | | | | | | * Revert 3121353c6ab2fbc5fced28f075c7fc45b53b661e * Switch to conditional compilation * Run formatter * Switch from conditional compilation to compile-time bool
* 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 completion for nested settings (#3183)A-Walrus2022-08-06
| | | Co-authored-by: Michael Davis <mcarsondavis@gmail.com>
* Remove C-n and C-p from the insert mode keymap (#3340)Michael Davis2022-08-06
| | | | | | | | | | | | | | These are read-line-like bindings which we'd like to minimize in insert mode in general. In particular these two are troublesome if you have a low `editor.idle-timeout` config and are using LSP completions: the behavior of C-n/C-p switches from moving down/up lines to moving down/up the completion menu, so if you hit C-n too quickly expecting to be in the completion menu, you'll end up moving down a line instead. Using C-p moves you back up the line but doesn't re-trigger the completion menu. This kind of timing related change to behavior isn't realistically that big of a deal but it can be annoying.
* Fix tab highlight when tab is partially visible (#3313)A-Walrus2022-08-06
| | | | | | | | | | * Fix tab highlight when tab is partially visible * Make it style based, and not truncation based Dealing with truncating is a mess, especially when it comes to wide unicode graphemes. This way it should work no matter what. * Inline style calculation into branches
* Fix indent guide styling (#3324)A-Walrus2022-08-06
| | | | | | | | | | | | | | * Fix incorrect indent guide styling Before the indent guides on top of whitespace inherited the theme from them. Now they do not. * Fix dark_plus theme indent_guides * Use whitespace style as fallback for indent-guide * Fix dark_plus theme indent_guides * Move indent_guide style patching out of loop
* Avoid setting stdin handle when not necessary (#3248)Dario Oddenino2022-08-05
| | | | | | | | | | | | | | * Avoid setting stdin handle when not necessary Avoid setting the stdin handle in `shell_impl` when the input argument is None. This permits to run commands with no stdin with :sh * refactoring to avoid code duplication * making clippy happy * Process variable name fix