summaryrefslogtreecommitdiff
path: root/helix-term/src
Commit message (Collapse)AuthorAge
* (Updated) Apply motion API refinements (#6078)Gabriel Hansson2023-07-09
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * _apply_motion generalization where possible API encourages users to not forget setting `editor.last_motion` when applying a motion. But also not setting `last_motion` without applying a motion first. * (rename) will_find_char -> find_char method name makes it sound like it would be returning a boolean. * use _apply_motion in find_char Feature that falls out from this is that repetitions of t,T,f,F are saved with the context extention/move and count. (Not defaulting to extend by 1 count). * Finalize apply_motion API last_motion is now a private field and can only be set by calling Editor.apply_motion(). Removing need (and possibility) of writing: `motion(editor); editor.last_motion = motion` Now it's just: `editor.apply_motion(motion)` * editor.last_message: rm Box wrap around Arc * Use pre-existing `Direction` rather than custom `SearchDirection`. * `LastMotion` type alias for `Option<Arc<dyn Fn(&mut Editor)>>` * Take motion rather than cloning it. Co-authored-by: Michael Davis <mcarsondavis@gmail.com> * last_motion as Option<Motion>. * Use `Box` over `Arc` for `last_motion`. --------- Co-authored-by: Michael Davis <mcarsondavis@gmail.com>
* Initialize log and config files right after parsing arguments (#7585)Alex Vinyals2023-07-09
|
* Implement the wa! command (#7577)Ryan Fowler2023-07-09
|
* Fix `:log-open` when `--log` is specified (#7573)Alex Vinyals2023-07-09
|
* Add filename completer for shell prompt (#7569)Alberto Romero2023-07-08
|
* use redraw handle for debouncing LSP messages (#7538)Pascal Kuthe2023-07-07
|
* LSP: Use negotiated position encoding for workspace edits (#7469)Michael Davis2023-06-29
| | | | Previously this was hard-coded to UTF-8 but we might have negotiated another position encoding.
* LSP: Discard publishDiagnostic from uninitialized servers (#7467)Michael Davis2023-06-28
| | | | | | | | | | | | | | The spec explicitly disallows publishDiagnostic to be sent before the initialize response: > ... the server is not allowed to send any requests or notifications to > the client until it has responded with an InitializeResult ... (https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#initialize) But if a non-compliant server sends this we currently panic because we '.expect()' the server capabilities to be known to fetch the position encoding. Instead of panicking we can discard the notification and log the non-compliant behavior.
* make TS matching fallback to plaintextPascal Kuthe2023-06-22
|
* Fix Component implementations for Picker (#7382)Michael Davis2023-06-19
|
* Completely remove old Picker and rename FilePicker to PickerGokul Soumya2023-06-18
|
* Make file preview callback optionalMichael Davis2023-06-18
| | | | | | | When Picker and FilePicker are merged, not all Pickers will be able to show a preview. Co-authored-by: Gokul Soumya <gokulps15@gmail.com>
* Move FilePicker struct def closer to impl blockGokul Soumya2023-06-18
|
* Render the preview in FilePickerGokul Soumya2023-06-18
|
* Move Picker::render into FilePicker::renderGokul Soumya2023-06-18
|
* Move Component methods except render() to FilePickerGokul Soumya2023-06-18
|
* Move handle_event methods from Picker to FilePickerGokul Soumya2023-06-18
|
* Move navigation methods from Picker to FilePickerGokul Soumya2023-06-18
|
* Move scoring functions from Picker to FilePickerGokul Soumya2023-06-18
|
* Copy struct fields and new() from Picker to FilePickerGokul Soumya2023-06-18
|
* Move FilePicker::render from Component impl to normal implGokul Soumya2023-06-18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Merges the code for the Picker and FilePicker into a single Picker that can show a file preview if a preview callback is provided. This change was mainly made to facilitate refactoring out a simple skeleton of a picker that does not do any filtering to be reused in a normal Picker and a DynamicPicker (see #5714; in particular [mikes-comment] and [gokuls-comment]). The crux of the issue is that a picker maintains a list of predefined options (eg. list of files in the directory) and (re-)filters them every time the picker prompt changes, while a dynamic picker (eg. interactive global search, #4687) recalculates the full list of options on every prompt change. Using a filtering picker to drive a dynamic picker hence does duplicate work of filtering thousands of matches for no reason. It could also cause problems like interfering with the regex pattern in the global search. I tried to directly extract a PickerBase to be reused in Picker and FilePicker and DynamicPicker, but the problem is that DynamicPicker is actually a DynamicFilePicker (i.e. it can preview file contents) which means we would need PickerBase, Picker, FilePicker, DynamicPicker and DynamicFilePicker and then another way of sharing the previewing code between a FilePicker and a DynamicFilePicker. By merging Picker and FilePicker into Picker, we only need PickerBase, Picker and DynamicPicker. [gokuls-comment]: https://github.com/helix-editor/helix/issues/5714#issuecomment-1410949578 [mikes-comment]: https://github.com/helix-editor/helix/issues/5714#issuecomment-1407451963
* Add yank_joined command (#7195)spectre2562023-06-16
| | | | | Resolves issue #6888 by adding a command to join all selections and yank them to the specified register. The typed command takes an argument as the separator to use when joining the selections.
* Preview scratch buffers in jumplist picker (#7331)A-Walrus2023-06-13
|
* Add rl and rla aliasses for reload and reload-all commands (#7158)Zisulin Morbrot2023-06-13
|
* Add reverse_selection_contents (#7329)Robert2023-06-13
|
* Fix underflow when repeating a completion that has a negative shift position ↵Philipp Mildenberger2023-06-12
| | | | (#7322)
* fix: add file argument in help text (#7307)0xHiro / ヒロ2023-06-10
|
* add config option for instant completion entry preview (defaulting to true).Luca Schlecker2023-06-09
| | | | Signed-off-by: Luca Schlecker <luca.schlecker@hotmail.com>
* Add register statusline element (#7222)spectre2562023-06-08
|
* Auto indent on `insert_at_line_start` (#5837)Alex2023-06-08
|
* Bail if no language servers support workspace symbols (#7286)Michael Davis2023-06-08
|
* add move_prev_long_word_end and extend_prev_long_word_end (#6905)vwkd2023-06-07
|
* Propagate the count and register to command palette commandsMichael Davis2023-06-07
| | | | | | Previously a count or register selection would be lost while opening the command palette. This change allows using a register selection or count in any command chosen from the command palette.
* Persist register selection in pending keymapsMichael Davis2023-06-07
| | | | | | | | | | | | | | Previously the register selection (via `"`) would be lost in the middle of any key sequence longer than one key. For example, `<space>f` would clear the register selection after the `<space>` making it inaccessible for the `file_picker` command. This behavior does not currently have any effect in the default keymap but might affect custom keymaps. This change aligns the behavior of the register with count. Making this change allows propagating the register to the `command_palette` (see the child commit) or other pickers should we decide to use registers in those in the future. (Interactive global search for example.)
* commands(toggle): use pattern matching on the Value enum (#7240)Alex Vinyals2023-06-07
|
* Remove Keymap(KeyTrie) and simply use KeyTrie.gibbz002023-06-07
|
* Move `keymap.reverse_keymap()` to `Keytrie`:gibbz002023-06-07
| | | | The plan is let `Keymaps` simply store `KeyTrie`s, as the `Keymap(Keytrie)` wrapping serves little to no purpose.
* Remove pub keymap.name();gibbz002023-06-07
| | | | `keymap.name` is only used internally.
* Place `Info::from_keymap()` contents in `keymap.infobox()`:gibbz002023-06-07
| | | | | This makes it easier later control the order in which the key events are presented.
* Keymap infobox: Idiomatic body tuple.gibbz002023-06-07
| | | | | | | Does not change any behavior other than making the tuple slightly more idiomatic. Keymap infobox shows key events, then the respective description. This commit makes sure that order is used from the get go, rather than flipping it midway.
* Exclude config no_op bindings in command palette.gibbz002023-06-07
|
* Remove superfluous command description pruning for keymap infobox:gibbz002023-06-07
| | | | | Exist under the wrong (possibly just outdated) assumption that command descriptions are written with their `KeyTrie` name prefixed
* `helix_term::keymap`: Remove one-liner solely used for a test.gibbz002023-06-07
|
* Make `Keymap` a tuple struct.gibbz002023-06-07
|
* keymap: Rename KeyTrie::Leaf -> KeyTrie::MapppableCommandgibbz002023-06-07
| | | | The variant Sequence is technically also a leaf.
* keymap: Derive `Default` for KeyTrieNodegibbz002023-06-07
|
* feat(core): add plaintext matching fallback to tree-sitter matching (#4288)Alex Vinyals2023-06-05
|
* Exit gracefully on termination signals (#7236)Michael Davis2023-06-05
|
* feat(commands): allows cycling option values at runtime (#4411)Alex Vinyals2023-06-05
|
* fixed repeat_last_motion extends selection (#7159)Ethan Wilkes2023-05-28
|