text_steering
ewig
text_steering | ewig | |
---|---|---|
1 | 3 | |
6 | 522 | |
- | - | |
0.0 | 0.0 | |
over 1 year ago | over 1 year ago | |
C++ | C++ | |
Apache License 2.0 | GNU General Public License v3.0 only |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
text_steering
ewig
-
Text Editor Data Structures
You might be interested in ewig and immer by Juan Pedro Bolivar Puente:
https://github.com/arximboldi/ewig
https://github.com/arximboldi/immer
See the author instantly opening a ~1GB text file with async loading, paging through, copying/pasting, and undoing/redoing in their prototype “ewig” text editor about 27 minutes into their talk here:
https://m.youtube.com/watch?v=sPhpelUfu8Q
It’s backed by a “vector of vectors” data structure called a relaxed radix balanced tree:
https://infoscience.epfl.ch/record/169879/files/RMTrees.pdf
That original paper has seen lots of attention and attempts at performance improvements, such as:
https://hypirion.com/musings/thesis
https://github.com/hyPiRion/c-rrb
-
Ask HN: How to learn about text editor architectures and implementations?
Ewig is an interesting implementation using immutable data structures. https://github.com/arximboldi/ewig Very proof of concept, tries to be a little vi like. Might be worth checking out.
-
Build Your Own Text Editor
For another approach: I built a didactic text editor to teach "value oriented design" and immutable data-structures in C++:
https://github.com/arximboldi/ewig
It's design is covered in these talks:
- Postmodern immutable data structures: https://www.youtube.com/watch?v=sPhpelUfu8Q
- The most valuable values: https://www.youtube.com/watch?v=_oBx_NbLghY
What are some alternatives?
nanoprintf - The smallest public printf implementation for its feature set.
immer - Postmodern immutable and persistent data structures for C++ — value semantics at scale
OpenSteer - OpenSteer is a C++ library to help build steering behaviors for autonomous characters in games and animation.
double-conversion - A fast Haskell library for converting between double precision floating point numbers and text strings. It is implemented as a binding to the V8-derived C++ double-conversion library.
FINAL CUT - A text-based widget toolkit.
lite - A lightweight text editor written in Lua
imtui - ImTui: Immediate Mode Text-based User Interface C++ Library
Adria-DX11 - Graphics engine written in C++ using DirectX11
Beeftext - A text snippet tool for Windows.
bee - (Archived, Incomplete) Text editor written in Bash 3
kilo - A text editor in less than 1000 LOC with syntax highlight and search.
TinyMCE - The world's #1 JavaScript library for rich text editing. Available for React, Vue and Angular