aboutsummaryrefslogtreecommitdiff
path: root/helix-core/src/graphemes.rs
Commit message (Collapse)AuthorAge
* rework positioning/rendering and enable softwrap/virtual text (#5420)Pascal Kuthe2023-01-31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * rework positioning/rendering, enables softwrap/virtual text This commit is a large rework of the core text positioning and rendering code in helix to remove the assumption that on-screen columns/lines correspond to text columns/lines. A generic `DocFormatter` is introduced that positions graphemes on and is used both for rendering and for movements/scrolling. Both virtual text support (inline, grapheme overlay and multi-line) and a capable softwrap implementation is included. fix picker highlight cleanup doc formatter, use word bondaries for wrapping make visual vertical movement a seperate commnad estimate line gutter width to improve performance cache cursor position cleanup and optimize doc formatter cleanup documentation fix typos Co-authored-by: Daniel Hines <d4hines@gmail.com> update documentation fix panic in last_visual_line funciton improve soft-wrap documentation add extend_visual_line_up/down commands fix non-visual vertical movement streamline virtual text highlighting, add softwrap indicator fix cursor position if softwrap is disabled improve documentation of text_annotations module avoid crashes if view anchor is out of bounds fix: consider horizontal offset when traslation char_idx -> vpos improve default configuration fix: mixed up horizontal and vertical offset reset view position after config reload apply suggestions from review disabled softwrap for very small screens to avoid endless spin fix wrap_indicator setting fix bar cursor disappearring on the EOF character add keybinding for linewise vertical movement fix: inconsistent gutter highlights improve virtual text API make scope idx lookup more ergonomic allow overlapping overlays correctly track char_pos for virtual text adjust configuration deprecate old position fucntions fix infinite loop in highlight lookup fix gutter style fix formatting document max-line-width interaction with softwrap change wrap-indicator example to use empty string fix: rare panic when view is in invalid state (bis) * Apply suggestions from code review Co-authored-by: Michael Davis <mcarsondavis@gmail.com> * improve documentation for positoning functions * simplify tests * fix documentation of Grapheme::width * Apply suggestions from code review Co-authored-by: Michael Davis <mcarsondavis@gmail.com> * add explicit drop invocation * Add explicit MoveFn type alias * add docuntation to Editor::cursor_cache * fix a few typos * explain use of allow(deprecated) * make gj and gk extend in select mode * remove unneded debug and TODO * mark tab_width_at #[inline] * add fast-path to move_vertically_visual in case softwrap is disabled * rename first_line to first_visual_line * simplify duplicate if/else --------- Co-authored-by: Michael Davis <mcarsondavis@gmail.com>
* Improve Readability (#2639)Ryan Russell2022-06-01
|
* 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%.
* fix: ensure_grapheme_boundary_next_byte needs to index at valid charBlaž Hrastnik2022-01-23
|
* Speed up ensure_next_boundary during renderBlaž Hrastnik2022-01-23
| | | | | | | | | | | | | This code: let start = ensure_grapheme_boundary_next(text, text.byte_to_char(start)); let end = ensure_grapheme_boundary_next(text, text.byte_to_char(end)); Would convert byte to char index, but then internally immediately convert back to byte index, operate on it, then convert it to char index. This change reduces the amount of time spent in ensure_grapheme_boundary from 29% to 2%.
* Add hyperlinks to fix `cargo doc` warn (#931)Omnikar2021-10-29
|
* Document more of helix-core (#904)Kirawi2021-10-25
|
* Better validation method APIs for `Range`.Nathan Vegdahl2021-07-01
| | | | | This way they do less work, are more specific to what we actually need, and they compose.
* Add `Range` methods for various kinds of validation.Nathan Vegdahl2021-07-01
|
* Fix silly mistake in previous phantom line bug fix.Nathan Vegdahl2021-06-26
| | | | | Fixes #381. I was trying to change an index value that... wasn't even an index value.
* Fix highlight code splitting graphemes.Nathan Vegdahl2021-06-26
| | | | | | This resulted in phantom blank lines in files with CRLF line endings, but could potentially have manifested with other graphemes as well.
* Handle erroneously ignored case in RopeGraphemes iterator.Nathan Vegdahl2021-06-24
|
* Downgrade `unicode-segmentation`notoria2021-06-10
|
* Derive debug without featureIvan Tham2021-06-10
| | | | Note that this also removed those `finish_non_exhaustive()`.
* Implement Debug for data structure as a featurenotoria2021-06-10
|
* clippy lintBlaž Hrastnik2021-03-24
|
* graphemes: fix nth_prev_grapheme_boundary calculation.Blaž Hrastnik2021-02-26
|
* graphemes: Optimize nth_next/nth_prev operation.Blaž Hrastnik2021-02-24
| | | | | It's used a lot more than it used to in position calculation. Instead of throwing away state between boundary calculation, reuse it.
* more lintsBlaž Hrastnik2021-02-18
|
* treewide: &RopeSlice -> RopeSlice. It's Copy so no reason to pass by refBlaž Hrastnik2021-02-18
|
* clippy lintBlaž Hrastnik2020-06-02
|
* wip: importing to githubBlaž Hrastnik2020-06-01