summaryrefslogtreecommitdiff
path: root/helix-term/src/ui
Commit message (Collapse)AuthorAge
* deletion of lines affecting popup scrolling (#2497)Alexis Kalabura2022-05-20
|
* Auto-complete directory members (#1801) (#1907)Roland Kovacs2022-05-02
| | | | | | Allow tab-completion to continue when there is only a single, unambigous completion target which is a directory. This allows e.g. nested directories to be quickly drilled down just by hitting <tab> instead of first selecting the completion then hitting <enter>.
* feat(ui): add nbsp (non-breaking space) to rendered whitespace (#2322)unrelentingtech2022-04-30
|
* prevent rendering visible whitespace on trailing cursor (#2331)Michael Davis2022-04-30
|
* feat(ui): treat slashes as word separators in prompt (#2315)unrelentingtech2022-04-30
| | | | When fiddling with paths in a :o prompt, one usually would want Ctrl-W to erase a path segment rather than the whole path. This is how Ctrl-W works in e.g. (neo)vim out of the box.
* fix typos (#2304)chunghha2022-04-27
|
* allow whitespace to be renderedOmnikar2022-04-20
| | | | Co-authored-by: Michael Davis <mcarsondavis@gmail.com>
* Added ability to remap 0 if it is not part of a count (#2174)adaliaramon2022-04-20
| | | | | * Added ability to remap 0 * Removed duplicated match body
* Add rulers option (#2060)Thomas2022-04-20
| | | | | | | * Add color_column option * Rename to ruler Co-authored-by: DeviousStoat <devious@stoat.com>
* Restore document state on completion cancel (#2096)Andrey Tkachenko2022-04-20
|
* Fixes #1991 LSP Auto-import (#2088)Andrey Tkachenko2022-04-16
|
* Make gutters configurable (#1967)Dr. David A. Kunz2022-04-16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * config option line numbers none * view tests * added tests * doc * comment * Make gutters configurable * docu * docu * rm none docu * order * order * precedence * simpler * rm todo * fixed clippy * order * double quotes * only allow diagnostics and line-numbers * tests * docu * format * rm short variant and more docu * performance improvements * typo * rename
* fix: prompt: pass through unmapped keys regardless of modifiersBlaž Hrastnik2022-04-13
| | | | | | | | Ctrl + Alt is apparently another common sequence for AltGr: https://devblogs.microsoft.com/oldnewthing/20040329-00/?p=40003 Fixes #595 Fixes #2080
* Apply ui.gutter style to empty gutters (#2032)unrelentingtech2022-04-12
| | | | The unstyled column on the left from the diagnostics_or_breakpoints gutter looks sad if you want to add a background to all gutters. Let's fix this.
* Compute style only once per source highlight event (#1966)Gokul Soumya2022-04-08
| | | | | During a single HighlightEvent::Source, the highlight spans do not change and we can merge them into a single style at the beginning of the event and use it instead of re-computing it for every grapheme
* Add runtime language configuration (#1794) (#1866)Roland Kovacs2022-04-05
| | | | | | | | | | | | | | | | | | | | | * Add runtime language configuration (#1794) * Add set-language typable command to change the language of current buffer. * Add completer for available language options. * Update set-language to refresh language server as well * Add language id based config lookup on `syntax::Loader`. * Add `Document::set_language3` to set programming language based on language id. * Update `Editor::refresh_language_server` to try language detection only if language is not already set. * Remove language detection from Editor::refresh_language_server * Move document language detection to where the scratch buffer is saved. * Rename Document::set_language3 to Document::set_language_by_language_id. * Remove unnecessary clone in completers::language
* Resolve conflicts between prompt/picker bindings (#1792)Rohan Jain2022-03-31
| | | | | | | | | | | | | | Currently, the picker's re-using a few bindings which are also present in the prompt. This causes some editing behaviours to not function on the picker. **Ctrl + k** and **Ctrl + j** This should kill till the end of the line on prompt, but is overridden by the picker for scrolling. Since there are redundancies (`Ctrl + p`, `Ctrl + n`), we can remove it from picker. **Ctrl + f** and **Ctrl + b** This are used by the prompt for back/forward movement. We could modify it to be Ctrl + d and Ctrl + u, to match the `vim` behaviour.
* Make truncate_start a builder method insteadBlaž Hrastnik2022-03-28
|
* Make line a private propertyBlaž Hrastnik2022-03-28
|
* Remove more push_layer callsBlaž Hrastnik2022-03-28
|
* Make regex_prompt directly call cx.push_layerBlaž Hrastnik2022-03-28
|
* This doesn't need to be mutBlaž Hrastnik2022-03-28
|
* Add refresh-config and open-config command (#1803)Joe2022-03-25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Add refresh-config and open-config command * clippy * Use dynamic dispatch for editor config * Refactor Result::Ok to Ok * Remove unused import * cargo fmt * Modify config error handling * cargo xtask docgen * impl display for ConfigLoadError * cargo fmt * Put keymaps behind dyn access, refactor config.load() * Update command names * Update helix-term/src/application.rs Co-authored-by: Blaž Hrastnik <blaz@mxxn.io> * Switch to unbounded_channel * Remove --edit-config command * Update configuration docs * Revert "Put keymaps behind dyn access", too hard This reverts commit 06bad8cf492b9331d0a2d1e9242f3ad4e2c1cf79. * Add refresh for keys * Refactor default_keymaps, fix config default, add test * swap -> store, remove unneeded clone * cargo fmt * Rename default_keymaps to default Co-authored-by: Blaž Hrastnik <blaz@mxxn.io>
* No need for KeymapResult anymore since we can query .sticky()Blaž Hrastnik2022-03-20
|
* keymap: Store pending/sticky on the root levelBlaž Hrastnik2022-03-20
|
* Optimize rendering by using Ropey::byte_sliceBlaž Hrastnik2022-03-17
| | | | | | | This avoids costly conversions via byte_to_char (which are then reversed back into bytes internally in Ropey). Reduces time spent in slice/byte_to_char from ~24% to ~5%.
* Handle panic on move within empty picker (#1786)Rohan Jain2022-03-14
| | | | | | | | | When the picker results output is empty, movement actions result in a panic: ``` thread 'main' panicked at 'attempt to calculate the remainder with a divisor of zero', helix-term/src/ui/picker.rs:420:31 note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace ``` This could be a no-op instead when the matches length is zero.
* Use `^` and `$` to match the beginning and end of a line when searching (#1790)nibon72022-03-12
| | | | | Fixes #1737 Signed-off-by: nibon7 <nibon7@163.com>
* migrate grammar fetching/building code into helix-loader crateMichael Davis2022-03-10
| | | | | | | | | This is a rather large refactor that moves most of the code for loading, fetching, and building grammars into a new helix-loader module. This works well with the [[grammars]] syntax for languages.toml defined earlier: we only have to depend on the types for GrammarConfiguration in helix-loader and can leave all the [[language]] entries for helix-core.
* Allow highlighting additional spans in md rendererGokul Soumya2022-03-08
|
* Extract markdown code block highlighting functionGokul Soumya2022-03-08
|
* Fix tab rendering to use dynamic tab widthBlaž Hrastnik2022-03-04
| | | | | | Each tab is just wide enough to round to the nearest tab stop. Refs #1243
* Fallback to broader scope if theme scope not found (#1714)Gokul Soumya2022-03-04
|
* Rename infobox theme scopes (#1741)Gokul Soumya2022-03-04
| | | This makes it play nicely with https://github.com/helix-editor/helix/pull/1714
* minor: Remove some outdated commentsBlaž Hrastnik2022-03-03
|
* Extract idle timeout code into ui/editor.rsBlaž Hrastnik2022-03-03
|
* Picker performance improvementsBlaž Hrastnik2022-03-03
|
* 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>
* 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
* 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>'
* Fix 1.60 lintsBlaž Hrastnik2022-02-25
|
* 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
|