summaryrefslogtreecommitdiff
path: root/helix-term
Commit message (Collapse)AuthorAge
* Fix bug with auto replacing components in compositor (#1711)Gokul Soumya2022-03-03
| | | | | | | | | | | | | | | | | | | | | | | | | | | * Fix bug with auto replacing components in compositor This was last known to be working with 5995568c at the time of commit, but now doesn't work with latest rust stable. The issue probably stems from using std::any::type_name() for finding a component in the compositor, for which the docs explicitly warn against considering it as a unique identifier for types. `replace_or_push()` takes a boxed `Component` and passes it to `find_id()` which compares this with a bare Component. `type_name()` returns `Box<T>` for the former and `T` for latter and we have a false negative. This has been solved by using a generics instead of trait objects to pass in a `T: Component` and then use it for comparison. I'm not exactly sure how this worked fine at the time of commit of 5995568c; maybe the internal implementation of `type_name()` changed to properly indicate indirection with Box. * Do not compare by type name in compositor find_id
* Add jumplist support for the search (closes #1625) (#1718)Philipp Mildenberger2022-03-01
|
* Make repeat operator work with completion edits (#1640)Mateusz S. Szczygieł2022-03-01
| | | | | | | | | | | * add basic completion replay * use transaction as the last completion * completion replay only on trigger position * cache changes in CompletionAction Co-authored-by: Blaž Hrastnik <blaz@mxxn.io>
* Implement bulk buffer closing commands (#1677)Daniel S Poulin2022-03-01
| | | | | | | | | | | | | | | | | | | | * Implement buffer-close-all * Implement buffer-close-others * Refactor all buffer close variants to use shared logic * Fix clippy lint * Docgen for new commands * Shorten error message for attempting to close buffers that don't exist * Refactor shared buffer methods to pass only editor, not whole compositor * Switch signature of bulk buffer closing to use slice of DocumentIds Addresses feedback that accepting an IntoIterator implementor is too much for an internal. Also possibly saves some moving?
* Highlight matching text in file picker suggestions (#1635)Ludwig Stecher2022-03-01
| | | | | | | * Highlight matching text in file picker suggestions * Remove cache, specialize highlighting code * Fix outdated comments
* Show infobox to hint textobjects with `mi` and `ma` (#1686)Daniel S Poulin2022-03-01
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Show infobox to hint textobjects with `mi` and `ma` * Add note to infobox than any pair of characters will work too The wording could probably be a little more clear, but I wanted to keep it short but still accurate. * Don't allocate a vec for the static help text * Fix bug where `mi<esc>` would swallow next input and persist infobox * Better help text for arbitrary pair matching in textobject selection * Add way to add fake pending key data below status, use with `mi`/`ma` This is a bit hacky as it makes use of global state which will end up managed in multiple places, but has precedent in the way autoinfo works. There should probably be a bigger refactor to handle this kind of state better. * Return early on anything other than `mi` and `ma` for autoinfo * Remove "ascii" from help text with `mi` and `ma` * Update helix-term/src/ui/editor.rs Co-authored-by: Blaž Hrastnik <blaz@mxxn.io>
* Minor cleanup of file picker file gathering logic (#1683)Daniel S Poulin2022-03-01
| | | | | | | | | | | | | * Refactor file picker filetype filter logic to remove panic, make clearer An unwrap was unneccesarily present due to a prior contribution of mine which was before I had any understanding of error handling in Rust. I've also swapped a match for an if let, as was originally suggested in the original pull request adding filetype filtering, but was merged before I could address. * Add some comments to the file picker code for clarity * Switch to expect instead of ignoring type def error
* Implement LSP `workspace/configuration` and ↵Triton1712022-02-28
| | | | | | | | | | | | | `workspace/didChangeConfiguration` (#1684) * Implement LSP `workspace/configuration` request * Implement LSP `workspace/didChangeConfiguration` notification. * Simplify retrieval of LSP configuration * Implement suggestions from PR discussion Co-authored-by: Triton171 <triton0171@gmail.com>
* Show surround delete and replace errors in editor (#1709)Gokul Soumya2022-02-28
| | | | | * Refactor surround commands to use early returns * Show surround delete and replace errors in editor
* ignore Enter keypress when menu has no selection (#1704)Michael Davis2022-02-27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * ignore Enter keypress when menu has no selection supersedes #1622 Builds on the work in #1285. I want to allow Enter to create a newline when there is no selection in the autocomplete menu. This occurs somewhat often when using LSP autocomplete in Elixir which uses `do/end` blocks (and I set the autocomplete menu delay to 0 which exacerbates the problem): ```elixir defmodule MyModule do def do_foo(x) do x end def other_function(y) do| end ``` Here the cursor is `|` in insert mode. The LSP suggests `do_foo` but I want to create a newline. Hitting Enter currently closes the menu, so I end up having to hit Enter twice when the module contains any local with a `do` prefix, which can be inconsistent. With this change, we ignore the Enter keypress to end up creating the newline in this case. * pop compositor layer when ignoring Enter keypress * move closing function out of consumed event result closure * explicitly label close_fn as an 'Option<Callback>'
* Alert if LSP is inactive when command is invoked (#1703)Gokul Soumya2022-02-25
|
* fix(commands): don't indent empty lines (#1653)Matouš Dzivjak2022-02-25
| | | | | | | | | | | | | * fix(commands): don't indent empty lines Fixes: https://github.com/helix-editor/helix/issues/1642 * Apply suggestions * Update helix-term/src/commands.rs * Update helix-term/src/commands.rs Co-authored-by: Blaž Hrastnik <blaz@mxxn.io>
* Configurable auto pairs (#1624)Skyler Hawthorne2022-02-25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * impl auto pairs config Implements configuration for which pairs of tokens get auto completed. In order to help with this, the logic for when *not* to auto complete has been generalized from a specific hardcoded list of characters to simply testing if the next/prev char is alphanumeric. It is possible to configure a global list of pairs as well as at the language level. The language config will take precedence over the global config. * rename AutoPair -> Pair * clean up insert_char command * remove Rc * remove some explicit cloning with another impl * fix lint * review comments * global auto-pairs = false takes precedence over language settings * make clippy happy * print out editor config on startup * move auto pairs accessor into Document * rearrange auto pair doc comment * use pattern in Froms
* Fix 1.60 lintsBlaž Hrastnik2022-02-25
|
* Use which to resolve lsp/dap binariesBlaž Hrastnik2022-02-24
| | | | This resolves the following issue: https://github.com/helix-editor/helix/discussions/962#discussioncomment-1580046
* Close some popups automatically (#1285)Bram2022-02-23
| | | | | | | | | | | | | | | | | | | * Add Event::Used to use event callback without consuming * Close popup if contents ignored event * collect event results before executing callbacks * don't add new result variant, use Ignored(..) instead * break in match cases * Make auto_close configurable * fix merge * auto close hover popups * fix formatting
* fix: ui: Markdown popups stopped taking vertical padding into accountBlaž Hrastnik2022-02-21
| | | | Fix #1688
* Simplify some codeBlaž Hrastnik2022-02-21
|
* Allow separate styles for markup headings (#1618)Alex2022-02-21
| | | | | * update markdown highlighting to use separate heading themes * remove markdown theme scopes in ui
* Always ignore the .git directory in file picker (#1604)Daniel S Poulin2022-02-20
| | | | | Some users (including myself) want to turn off filtering of files prefixed with `.`, as they are often useful to edit. For example, `.env` files, configuration for linters `.eslint.json` and the like.
* ui: prompt: Render aliases + border on the docBlaž Hrastnik2022-02-20
|
* fix: Allow multi-line prompt documentationBlaž Hrastnik2022-02-20
|
* Extract a lsp position helperBlaž Hrastnik2022-02-18
|
* Extract some duplication in lsp goto_ callsBlaž Hrastnik2022-02-18
|
* Extract jump_to_locationBlaž Hrastnik2022-02-18
|
* Extract a common "language server or return" macroBlaž Hrastnik2022-02-18
|
* Extract a helper function for lsp::LocationBlaž Hrastnik2022-02-18
|
* Move most LSP specific commmands to commands::lspBlaž Hrastnik2022-02-18
|
* dap: fix runInTerminal with lldb-vscodeBlaž Hrastnik2022-02-18
|
* Refactor symbol picker to share codeBlaž Hrastnik2022-02-18
|
* filter git revision on git command success exit code (#1674)Michael Davis2022-02-18
| | | | | | | | | | | | | | The unwrap (or '.ok()' rather) triggers for some errors but not negative status codes. In the case where helix is being packaged in an empty git repository, the existing mechanism will fail because git init git rev-parse HEAD gives a negative exit code and prints to stderr stderr: "fatal: ambiguous argument 'HEAD': unknown revision or path not in the working tree.... with a stdout of "HEAD\n" (too short to slice with [..8]).
* Fix bug when launching hx file.rs:10 (#1676)tomKPZ2022-02-18
|
* feat(commands): command palette (#1400)Matouš Dzivjak2022-02-17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * feat(commands): command palette Add new command to display command pallete that can be used to discover and execute available commands. Fixes: https://github.com/helix-editor/helix/issues/559 * Make picker take the whole context, not just editor * Bind command pallete * Typable commands also in the palette * Show key bindings for commands * Fix tests, small refactor * Refactor keymap mapping, fix typo * Ignore sequence key bindings for now * Apply suggestions * Fix lint issues in tests * Fix after rebase Co-authored-by: Blaž Hrastnik <blaz@mxxn.io>
* Manually recalculate initial completion where it mattersBlaž Hrastnik2022-02-17
|
* Pass through Editor instead of ContextBlaž Hrastnik2022-02-17
|
* WIP: show all buffers that couldn't be closedCole Helbling2022-02-17
|
* helix-term: implement buffer completerCole Helbling2022-02-17
| | | | | | In order to implement this completer, the completion function needs to be able to access the compositor's context (to allow it to get the list of buffers currently open in the context's editor).
* helix-term/commands: display buffer id in pickerCole Helbling2022-02-17
|
* Allow static strings in set_status/set_error so API is nicerBlaž Hrastnik2022-02-15
|
* dap: Reduce amount of block_on usesBlaž Hrastnik2022-02-15
|
* Add tree-sitter based function, class navigationGokul Soumya2022-02-15
|
* ..Blaž Hrastnik2022-02-15
|
* Fix build on masterBlaž Hrastnik2022-02-15
|
* Add `PageUp`, `PageDown`, `Ctrl-u`, `Ctrl-d`, `Home`, `End` keyboard ↵Ludwig Stecher2022-02-15
| | | | | | | | | | | | | | | shortcuts to file picker (#1612) * Add `PageUp`, `PageDown`, `Ctrl-u`, `Ctrl-d`, `Home`, `End` keyboard shortcuts to file picker * Refactor file picker paging logic * change key mapping * Add overlay component * Use closure instead of margin to calculate size * Don't wrap file picker in `Overlay` automatically
* use PathBuf::to_string_lossy() instead of to_str() (#1655)Kirawi2022-02-15
|
* Refactor language config loading (#1658)Gokul Soumya2022-02-14
|
* Mark DAP as experimentalBlaž Hrastnik2022-02-13
|
* Merge remote-tracking branch 'origin/master' into debugBlaž Hrastnik2022-02-13
|\
| * postpone clone after found (#1656)Cydiater2022-02-13
| |
| * Instant is more suitable than SystemTime for spinnersBlaž Hrastnik2022-02-10
| |