ewig
vlfi
ewig | vlfi | |
---|---|---|
3 | 9 | |
517 | 443 | |
- | - | |
0.0 | 0.0 | |
over 1 year ago | over 2 years ago | |
C++ | Emacs Lisp | |
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.
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
vlfi
-
Text Editor Data Structures
That is essentially what VLF[1] does in Emacs. It reads in discrete chunks of the file at a time and doesn’t load the next one till you try to display it. Doesn’t require any fancy data structures, just some extra book keeping and mechanics.
[1] https://github.com/m00natic/vlfi
-
Can't learn emacs, can't use anything else (rant)
That is an issue both related to Emacs' internal representation of buffers and modes working in the background on the data in buffers of very large files, for which there are some workarounds like vlf-mode. See for example (info "(emacs) Long Lines") for similar issues with long lines and a solution more similar to what all those other editors you mention are doing to mitigate the issue of large files and large lines.
-
Commercial-Emacs
You can edit gigabyte-large files with no trouble vlf.el https://github.com/m00natic/vlfi – though it's a bit of a separate universe, you have to use vlf-occur instead of occur to find matches over all gigabytes of the file
;; To have it offered when opening large files:
-
so-long mode slow
For arbitrarily large files (think GB) in terms of size of the data stored you may use e.g. vlfi.
-
How to speed up opening of large files in Doom Emacs?
You can use vlf package to open large files
-
Using Emacs in an IDE World
You know how "there's an app for that" used to be a thing? Well, there's an elisp package for that: https://github.com/m00natic/vlfi
-
What do you miss the most from your previous editor/IDE after you moved to Emacs?
Theres always: https://github.com/m00natic/vlfi
-
Tips for Avoiding Hangups
I’m aware of a few potential solutions including: dired-async and async-shell-command. There’s also https://github.com/m00natic/vlfi for viewing large files, but I don’t know how to address GPG pinentry and TRAMP issues very well.
-
Got rid of every other text editor on my Mac
I think you might enjoy this mode: vlfi. It is available in the standard Elpa package listing.
What are some alternatives?
immer - Postmodern immutable and persistent data structures for C++ — value semantics at scale
emacs-libvterm - Emacs libvterm integration
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.
good-scroll.el - Attempt at good pixel-based smooth scrolling in Emacs
lite - A lightweight text editor written in Lua
commercial-emacs - "Evil will always triumph, because good is dumb." -- Spaceballs (1987)
Adria-DX11 - Graphics engine written in C++ using DirectX11
helm-ag - The silver searcher with helm interface
bee - (Archived, Incomplete) Text editor written in Bash 3
iscroll - Smooth scrolling over images in Emacs
kilo - A text editor in less than 1000 LOC with syntax highlight and search.
emacs-from-scratch - An example of a fully custom Emacs configuration developed live on YouTube!