ewig
kilo
ewig | kilo | |
---|---|---|
3 | 18 | |
517 | 7,125 | |
- | - | |
0.0 | 0.0 | |
over 1 year ago | 4 months ago | |
C++ | C | |
GNU General Public License v3.0 only | BSD 2-clause "Simplified" License |
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.
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
kilo
-
A nano like text editor built with pure C
Most of that is probably attributable to being based on Kilo: https://github.com/antirez/kilo (kinda strange they didn't link directly in their readme) - a tiny text editor written by antirez who notably also created Redis. Antirez has a bunch of really interesting side projects if you dig into their github repo.
-
Micro – A Modern Alternative to Nano
Yeah, "micro" for an editor would be 11 kilo bytes. I bet it's possible to do a half-decent editor in C in 11KB. Antirez's "kilo" (~1000 lines of C) is 36KB when compiled with standard gcc (https://github.com/antirez/kilo).
That said, for many server-type use cases these days, 11MB isn't a huge deal. Still, I wonder if micro could be compiled on / ported to TinyGo and end up a few hundred KB? It looks like TinyGo can produce some pretty small binaries: https://tinygo.org/docs/guides/optimizing-binaries/
- Ask HN: Does this exist? Courses explaining well written codebases?
-
What happens when you press a key in your terminal?
Anyone interested in the machinations of all of this terminal stuff should look at antirez’ kilo, a terminal text editor in under 1000 lines of code: https://github.com/antirez/kilo
There is a nice tutorial that walks through how one might write it from scratch: https://viewsourcecode.org/snaptoken/kilo/
-
Vim sucks
kilo 1k of C
-
A simple terminal game
I always wondered how people get stuff animated on the terminal but I never had the time to look into it up until a few years ago when someone on the internet released an awesome guide on how to create a text editor in less than 1000 lines of C. What caught my attention about this was that it was based on Antirez' kilo - which is a terminal based editor.
-
Ask HN: How to learn about text editor architectures and implementations?
You could start by looking at something super simple like Kilo:
https://github.com/antirez/kilo
Even I could understand this one pretty well and that's no small matter.
-
Ginkgo: A WIP small text editor built entirely in Rust with cursor control and select Vim features
I just started learning Rust 2 weeks ago, and I wanted to apply my learning towards a project.Ginkgo is a small text editor built entirely in Rust. It takes inspiration from the famous tiny C-based text editor, Kilo. It also includes many Vim inspired keybindings and features such as normal/insert modes. For convenience, it also has added mouse cursor support!
- What would one need to know in order to develop an in-shell VIM like code editor?
-
Any interesting project ideas in c language
Write your own editor. As an example: kilo
What are some alternatives?
immer - Postmodern immutable and persistent data structures for C++ — value semantics at scale
wasm3 - 🚀 A fast WebAssembly interpreter and the most universal WASM runtime
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.
luastatic - Build a standalone executable from a Lua program.
lite - A lightweight text editor written in Lua
luar - Script Kakoune using Lua
Adria-DX11 - Graphics engine written in C++ using DirectX11
wac - WebAssembly interpreter in C
bee - (Archived, Incomplete) Text editor written in Bash 3
visidata - A terminal spreadsheet multitool for discovering and arranging data
TinyMCE - The world's #1 JavaScript library for rich text editing. Available for React, Vue and Angular
sn - Simple Notes using fzf