
Buttery Smooth Emacs - cheiVia0
https://www.facebook.com/notes/daniel-colascione/buttery-smooth-emacs/10155313440066102/
======
AceJohnny2
Related to the topic of "Emacs is a terminal program with lots of clever hacks
to run in a GUI", I recently encountered a big problem on macOS 10.12
"Sierra", which I found reported at [1]

The crux of it is that macOS became more strict about what you were doing in
GUI- vs non-GUI-threads, and now asserts if you fetch GUI events (I think?) in
not the main thread, because of the risk of memory corruption. Ostensibly.

This bug only manifests if you compile Emacs on 10.12 (so if you install the
"emacs-app" in MacPorts, for example), because then it'll link against the
asserting framework. If you use Emacs from another source that compiles it on
10.11 (such as from
[https://emacsformacosx.com/](https://emacsformacosx.com/)), then it links
against an older framework that doesn't have the assert, and it'll work
"fine".

Considering the fractal accumulation of "clever hacks" that make Emacs work on
modern GUI systems, I'm curious to see how this issue will be resolved,
because I doubt it's something so simple where Emacs has proper separation of
GUI vs non-GUI threads, as QED by the article ;)

[1]
[https://debbugs.gnu.org/cgi/bugreport.cgi?bug=24678](https://debbugs.gnu.org/cgi/bugreport.cgi?bug=24678)

~~~
armitron
This issue is aleady solved in Yamamoto Mitsuharu's Emacs OSX port
([https://bitbucket.org/mituharu/emacs-
mac](https://bitbucket.org/mituharu/emacs-mac)) which if you use Emacs on OSX
is what you should be running (rather than the "official" OSX branch).

The OSX support in the mainline Emacs repo (which emacsformacosx.com and
aquamacs use) is a third class citizen, since very few people work on it and
Stallman is always quick to remind the rest that Linux (sorry GNU/Linux)
remains the priority rather than those pesky non-free OSes. The end result is
that the official OSX Emacs is perpetually buggy (check emacs-devel, it breaks
all the time) and lacks a lot of useful features that are available through
new OSX APIs. To make matters worse, Stallman has demanded that _useful
features be removed_ from the OSX branch, because _Linux doesn't have
equivalent APIs_. It was disappointing to see them following through with
these removals.

On the other hand, the Yamamoto Mitsuharu port is rock-solid, functionality is
not removed cause Stallman said so, is actively worked on (Yamamoto was the
old Carbon Emacs maintainer and knows what he's doing) and uses the latest OSX
APIs. It has had flicker-free double-buffering for years, smooth (pixel-based)
scrolling with inertia, integrated AppleScript bridge, integrated Apple event
support, HiDPI, ligatures, graphics/SVG/animations through ImageKit, proper
C-g handling, dictionary service support, proper fullscreen, and I could go on
and on and on [1] ..

TL;DR

If you're using Emacs on OSX, you should be running Yamamoto's port.

[1] [https://bitbucket.org/mituharu/emacs-
mac/raw/892fa7b2501a403...](https://bitbucket.org/mituharu/emacs-
mac/raw/892fa7b2501a403b4f0aea8152df9d60d63f391a/README-mac)

~~~
rurban
No. You should be using the official emacs-x, not emacs-app, not Aquamacs, not
Carbon or emacs-mac. I tried to work with them, but after a week I'll get
terrible hand aches for their problematic keybindings.

The traditional x port flickers a bit, (dan just fixed it via xdbe, great!)
but proper Ctrl-x, Command-x and just works as everywhere else. RMS politics
are stupid, yes, but overall the official port is still the best.

~~~
hollerith
Just to make sure everyone reading this can follow along: you are probably
suggesting using Emacs on the X windowing system on OS X (which would of
course require XQuartz to be running).

And by "problematic keybindings" you probably mean how most graphical Emacs
packages on OS X use the Command modifier key to set the meta bit.

But Mitsuhara Emacs (or emacs-mac as you refer to it) lets you assign any
"Emacs modifier bit" (control, meta, alt, hyper or super) to any of OS X's
modifier keys (namely, control, option, command or fn) except for the shift
key.

So for example if you're on a Macbook, but you are used to the key on the
bottom left's being a control key, you would add (setq mac-function-modifier
'control) to your .emacs.

To use the option key as your meta key, (setq mac-option-modifier 'meta).

>The traditional x port flickers a bit

None of the other ports you mention have ever flickered in my experience. And
running Emacs under X has the disadvantage that Emacs ends up looking quite
different typographically than native OS X apps do.

~~~
andreareina
I'm using an rMBP and the XQuartz treatment of text on there is literally
painful -- simultaneously blurred and pixellated if that makes any sense. This
isn't the hedonic treadmill effect with regards to the retina display as I
have no problems using other systems with "standard" displays.

~~~
rurban
I agree that the latest XQuartz update forced me to try out the native emacs-
app which had nicely looking fonts. But I couldn't store my selection of a
good font, and the overall experience was awful. My hand still hurts.

With the latest XQuartz and emacs 25 only "Use System Font" looks good, before
we had much more good fonts. Wonder what caused this regression.

------
bonquesha99
What are some good resources to learn more about the inner workings of text
editors or building one from scratch? So far I've found and enjoyed
reading/watching the resources below and would love to learn more.

* The Craft of Text Editing: [https://www.finseth.com/craft/](https://www.finseth.com/craft/)

* Writing a Text Editor From Scratch: [https://www.twitch.tv/gary_bernhardt/v/90796516](https://www.twitch.tv/gary_bernhardt/v/90796516)

* A Modern Text Editor Built in Rust: [https://www.youtube.com/watch?v=SKtQgFBRUvQ](https://www.youtube.com/watch?v=SKtQgFBRUvQ)

~~~
dguaraglia
One of the best docs describing how to write an editor I've ever read was the
old documentation for the lcc-win32 compiler. It touches on the practical
aspects of developing an editor (and the pipelining compiler as well.) Some
understanding on how the Windows API works might be of value for the editor
part, but the compiler part should be understandable to anyone:

[https://docs.google.com/document/d/1_S7gv6UGLAKuo9g1tNoNbU2O...](https://docs.google.com/document/d/1_S7gv6UGLAKuo9g1tNoNbU2OR_5DBYEdquvYeqgkPMk/edit?usp=sharing)

(I won't go into jus how hard it was to find this version of the docs and
extract the file on a non-Windows computer. Luckily I just did that a few
months ago for unrelated reasons!)

~~~
Lx1oG-AWb6h_ZG0
Thanks, this is fascinating! This is the sort of thing that makes me think
Vernor Vinge wasn't so far off when he described the concept of programmer
archaeologists.

BTW, can you upload the original doc file somewhere? Google Docs appears to be
mangling the formatting in a few places (page 28, for example).

~~~
dguaraglia
Hey, absolutely. Here they are, zipped with the original installer:
[https://drive.google.com/file/d/0BxF_x9mBC-n1eEduWVRmV3ZJTUU...](https://drive.google.com/file/d/0BxF_x9mBC-n1eEduWVRmV3ZJTUU/view?usp=sharing)

I hadn't heard of Vernon Vinge before, but the concept resonates. There's so
much lore and knowledge to be found in old software packages. When I was
learning how to program, I randomly found this pseudo-BASIC compiler called
ASIC, which was amazing for what it could do. It provided low-level
functionality that normal QBASIC wouldn't give you. I remember spending a
whole summer playing with that and a free tutorial on 3D programming called
"3DICA" written by some Finish students. Good times.

BTW, [http://www.textfiles.com](http://www.textfiles.com) is a great place to
start looking for oldies but goodie :)

~~~
NotSammyHagar
Well, if you like science fiction, you should read some of his works. He is a
mathematician and computer scientist who has written some fascinating science
fiction. "A Fire Upon the Deep" is probably his best and most famous work.
Imagine that in different parts of the universe people can have different
intellectual abilities because of different physical laws. And we are living
in the slow zone.

~~~
dguaraglia
Thanks for the book recommendation! I'll add it to my queue, for when I finish
Abaddon's Gate (The Expanse, BTW, is a pretty solid sci-fi series, although I
think I'm ready to take a little break after three books in a row.)

~~~
NotSammyHagar
Loved the Expanse. Read the first few books, need to get back to it. It feels
like our future world more and more.

------
maxander
Windowing systems and GUI modules and so on and so on, all give us powerful
capabilities but also come with their own conceptual frameworks that need to
be understood and plugged into each other. If both the module designers and
the engineer of the larger system are working from roughly the same mindset,
this is routine work. But if the former and the latter worked on entirely
different machines, trained by computer science in wildly different stages of
its development, I'm sure things can get much more "fun."

 _Intergenerational software development_ will someday be its own sub-
discipline, with professors and specialized techniques and everything.

~~~
aboodman
See also "software archeology" in the sci fi book _A Fire Upon the Deep_. God
I love that book.

~~~
mrob
Software archaeology is from the prequel, "A Deepness in the Sky".

~~~
aboodman
Ah. Well, I love them both.

~~~
TheEzEzz
Software archaeology is in both =D

------
rayiner
On the flip side, it's pretty cool what Emacs can still do on a text terminal.
Multiple windows, mouse, auto completion pop-ups--all work comfortably over an
SSH session.

~~~
gkya
I use tramp for all things ssh these days. Becomes very practical w/ ssh-agent
and Emacs bookmarks.

~~~
wcummings
You can even use eshell w/ tramp... sorta

~~~
taeric
What do you mean sorta? The eshell integration is amazing in later versions.
Can cd into docker instances. Is glorious.

~~~
systemfreund
Could you share details, please? Does it work out-of-the box or what do I need
do do this?

Edit: Found it out myself. Install docker-tramp.el [1], `C-x C-f` to
`/user@myserver|docker:mycontainer:/`

[1]: [https://github.com/emacs-pe/docker-tramp.el](https://github.com/emacs-
pe/docker-tramp.el)

~~~
taeric
Apologies, having a day mostly out. That is indeed the package I am using.
Glad you found it.

------
ekr
This is the commit in question: [https://github.com/emacs-
mirror/emacs/commit/c29071587c64efb...](https://github.com/emacs-
mirror/emacs/commit/c29071587c64efb30792bd72248d3c791abd9337) for those
interested.

~~~
anarazel
I really hate that commit message style. Lots of content that can be auto
generated, little explanation :(. Not the authored fault, but I really don't
understand why so many gnu projects still do this.

------
twsted
"One day, a fool wanted to run Emacs in a GUI as a native GUI program. The
rest is ChangeLog."

~~~
marai2
"Internally, Emacs still belives it’s a text program, and we pretend Xt is a
text terminal, and we pretend GTK is an Xt toolkit. It’s a fractal of
delusion."

~~~
qwertyuiop924
...Well then how do fonts, images, and embedded X widgets work? Are they elisp
hooks into the lie?

~~~
swhipple
They're propertized text. For example, on the splash screen, you can move the
point on the logo and M-x describe-char to see that it has:

    
    
          display   (image :type svg :file "splash.svg")
    

[https://www.gnu.org/software/emacs/manual/html_node/elisp/Di...](https://www.gnu.org/software/emacs/manual/html_node/elisp/Display-
Property.html)

~~~
qwertyuiop924
That makes sense.

Frankly, Emacs is a fractal of hacks, but it's incredibly powerful, consistent
enough from a user perspective, and usually works, so we tend to ignore it.

------
NoGravitas
There a discussion on the mailing list about pulling GTK support out into its
own front end (like mswin or ns) that never uses X directly. This would allow
simplifying the X front-end, and also running graphical emacs on a pure
Wayland system.

I wonder if something analogous this hack would be required in the new GTK
front-end.

~~~
jabl
So for those of us not in the inside loop, what does "pulling out into its own
frontend" mean?

Also, are the Xt and motif versions still maintained? Surely the user base of
those must be pretty close to 0 these days?

~~~
quotemstr
You'd be surprised how many people use non-GTK X11 Emacs. The reasons they
give include being able to connect and disconnect from multiple X servers (GTK
has longstanding unfixed bugs here) and being generally lighter on the system
than GTK is.

"Pulling [GTK] out into its own frontend" means taking GTK support out of
where it is now, Emacs' general-purpose X11 code (where GTK is one of many
supported X11 toolkits) and putting it in a new top-level window-system that's
a peer of NS (for OS X) and Windows support. The new GTK window system
wouldn't be allowed to use X11 functions directly. Under this architecture,
Emacs would be much closer to a well-behaved GTK program and could take
advantage of cool GTK tricks like Broadway support.

~~~
cm3
I am one of those X11-only, no-toolkit Emacs users. The only times I need gtk
support is when I run a variant build with gtk3 support in order to have a
native Wayland window which doesn't require Xwayland. But I primarily use X11
so the no-toolkit, X11-only build.

~~~
audidude
It does X11 specific calls unconditionally, so it is not currently possible to
run emacs as a native Wayland client.

~~~
quotemstr
One of the big advantages of the new GTK-only backend I propose in [1] is the
ability to use non-X GTK back-ends, like Wayland and Broadway.

But SHTDI. Volunteering?

[1] [https://lists.gnu.org/archive/html/emacs-
devel/2016-10/msg00...](https://lists.gnu.org/archive/html/emacs-
devel/2016-10/msg00956.html)

~~~
audidude
I already spend most of my day writing an IDE (GNOME Builder) and making it
Wayland ready out of the box.

However, I am responsive on #gtk+ answering questions to people working on
this.

------
jefurii
Emacs flickers? I've never noticed this, but I've only ever used it on Linux.
Maybe it flickers in OSX?

~~~
dom0
Perhaps using a compositing desktop manager mitigates it, since those are
almost always vsync'd and double buffered.

Edit: Hm, no there is no synchronization between the WM and emacs in any way.
So this can't be it.

~~~
to3m
It definitely flickers a bit when running in XQuartz.

(I hope this change doesn't make it run crappily in XQuartz! X-Windows
programs that do double buffering draw to an offscreen buffer often perform
really poorly, poorly enough that I'd definitely rather have the flicker, not
least because I don't mind the flicker too much anyway.

(I assume a lot of them have a client-side pixmap that's written to manually,
and then has to be sent over the network link. )

~~~
quotemstr
One of the advantages of using the X double buffer extension or XRender or
something like that is you don't need to send raster image data over the
network. You're still sending ordinary drawing commands, and it's the server
that accumulates the results into a pixmap somewhere.

If it _is_ slow for you, you can turn off the new stuff:

    
    
        (modify-frame-parameters nil '((inhibit-double-buffering . t)))

~~~
rurban
But why inhibit-double-buffering and not just the simple no-double-buffering?

~~~
to3m
There are only 3 variables with a "no-" prefix, but 30+ starting with
"inhibit-"...

------
raindev
I cannot read a blog post without seeing who of my fiends is online. Now, this
is progress!

~~~
noobermin
I had the same feeling. I often want to keep facebook apart from my hacker
reading, for some reason.

------
smnscu
I'm back on emacs after a couple of (fun) months with vim, and one of the
things I miss is smooth scrolling in terminal. Enabling mouse in vim is enough
for the scrolling to work pretty great in iterm2, while in emacs (also in
iterm2) even after numerous hacks and trial and error I'm still not happy with
the result.

~~~
catern
You should be able to just (setq scroll-conservatively 1000). As you no doubt
have guessed, the page-by-page scrolling default in Emacs is to reduce the
amount of redrawing necessary.

------
hobo_mark
Sorry if it's off-topic, but since when can you publish formatted "blog posts"
on facebook?

~~~
shp0ngle
It's called Notes.

For about 6 months.

~~~
erelde
Actually there was a similar feature almost since the beginning.

~~~
shp0ngle
Yes, but the Medium-inspired formatting is quite new.

------
ddp
Prerequisites: XCode 8.1, brew, autoconf, automake, libxml2

Here's the .configure you'll need: ./configure
LDFLAGS=-L/usr/local/opt/libxml2/lib CPPFLAGS=-I/usr/local/opt/libxml2/include
PKG_CONFIG_PATH=/usr/local/opt/libxml2/lib/pkgconfig

~~~
jordigh
> Prerequisites: XCode 8.1

There are more things in Heaven and Earth, Horatio, than are dreamed of in
your iPhilosophy. ;-)

------
pjmlp
If I remember correctly this was actually one of the main differences with the
XEmacs fork.

Some of the features are already fuzzy on my mind, but I think one reason I
used to use it instead of the original Emacs was the improved GUI experience.

Last time I have used it was around 10 years ago.

~~~
jabl
IIRC a couple of decades ago XEmacs used the new and fancy Athena widget set
(Xt), whereas Gnu emacs used, uh(?), raw Xlib.

Though I think XEmacs is mostly dead nowadays..

~~~
pjmlp
I would need to search for it.

Around 10 years ago is when I moved back into Windows on my main computer, so
eventually I settled on using whatever Emacs version is installed, if any,
when accessing GNU/Linux environments.

Another aspect was I think only XEmacs had nice menus and toolbar, until
eventually Emacs added them.

------
late2part
Thank you for taking the time to make things better.

------
rwmj
Surely with modern compositing window systems, the Emacs approach of _" I'll
draw whenever I like"_ is actually the right one?

~~~
ianlevesque
He was modernizing it on top of X11, which is still pretty far from a modern
compositing window system. Also it looks like much of the challenge was even
just identifying when drawing was truly complete. That problem doesn't go away
by just putting a compositor in front.

------
cm3
Can we get this in 25.1.2 or in a branch/commit on top of 25.1 for those of
use who don't want to track trunk's development, given how long the reschedule
schedule is? The patch from the list didn't the apply cleanly, but I haven't
tried to merge it in a git repo (yet).

~~~
quotemstr
M-x report-emacs-bug. We can talk about it there. Doubtful, though, since this
work is both 1) brand new, and 2) not a regression fix.

"But I wants it!" is not a reason to backport fixes or issue new releases. You
can always run from master for now.

~~~
cm3
Sure, that's why I asked if there's topic branch, even if now obsolete, which
I could merge into the 25.1 branch. I'll do some digging, since this seems to
be a single commit from what I can tell.

------
harrygeez
How much effort would it take to rewrite a modern GUI for Emacs?

~~~
kwhitefoot
What would a modern GUI look like for Emacs? And how would it be an
improvement?

Every time someone releases a new IDE or text editor or word processor I take
a look and then return to Emacs. I don't mean that it is perfect, just, for
me, better than the rest.

~~~
harrygeez
Currently per the article states, the Emacs GUI uses a lot of hacks to display
like a terminal. Because of this a lot of things like real smooth scrolling
doesn't work like most text editors. Highlighting text with a mouse for
example just doesn't feel right. I know people will say who uses a mouse to
operate Emacs anyway but there are plenty of other scenarios that makes Emacs
feel somewhat ancient, which it doesn't have to be. I don't use Linux DE a lot
to know all of the quirks but on OS X when Emacs go full screen there are
still black borders, etc. Imagine the possibilities of having a non-text only
modeline for example, the ability to render pdf and modern JS/CSS websites,
etc.

~~~
kwhitefoot
In what way does highlighting with the mouse not feel right?

Seems to work pretty much the same as in Visual Studio to me. Mind you I
hardly ever use it, I prefer to mark the region instead.

If you can add what you want to Emacs without making the new features
compulsory and without removing the existing ones then by all means go for it.
But I suspect that the lack of some features is simply down to no one with
enough enthusiasm and expertise to build them actually wanting them. Most of
Emacs' features were built by people who wanted to use them so a lot of stuff
ends up being worked on just until it is good enough for the creator's own
purposes.

------
db48x
The C side of Emacs is pretty bad, and his description makes it sound worse,
but honestly I've never seen Emacs flicker or draw white boxes at any time in
my life.

~~~
quotemstr
I wouldn't call it "bad". Is it different from most modern programs?
Certainly. But it does a lot of clever things well. A program that I use every
day can't be all bad.

~~~
xenobioticants
I think he meant bad as in this:
[http://geoff.greer.fm/vim/](http://geoff.greer.fm/vim/). 400 lines of code to
wait for keyboard input.. sweet Jesus. Thankfully Neovim exists now.

Granted, that's a VIM example, but I can't imagine Emacs being much better in
terms of code.

~~~
quotemstr
FWIW, I've hacked a little bit on bash, and IMHO, Emacs internals are _much_
cleaner than bash's.

------
kickingvegas
Somehow I suspect this is a gambit to pull Jamie Zawinski out of coding
retirement.

~~~
bvttf
Don't believe Debian's lies, xscreensaver just got an update this month.

------
kanbannoman
I always wondered why Emacs struggled to render certain visual elements as
quickly as other editors (e.g. Sublime). For example, load in a relatively
long line (not even ridiculously long), and it comes grinding to a halt, can't
even edit text _near_ the long lines, if its in view! Same goes for linum mode
being resource heavy. Why is this? I would have expected that a text editor
built in the 70s should excel at rendering text quickly and efficiently?

Is the reason related to this blog post? Every time I tried to profile emacs
it led me to the redisplay function, and from there i was lost..

Is there any hope that emacs will ever render code as quickly as modern
'native' apps (e.g sublime)??

~~~
hollerith
I'm pretty fussy, and I haven't noticed any slowness when editing long lines
on Emacs on OS X or Windows. Might be specific to the GTK port.

------
dvcrn
Every time I'm reading about emacs I'm thinking if it might be worth porting
my vimrc to emacs+evil. What do you think? Anyone done the switch? Are there
any significant benefits I get from doing it?

(Please don't suggest spacemacs)

~~~
iLemming
Diehard Vim user here. I use Vim-motions everywhere, system-wide. You should
at least try Spacemacs, learn the layers system and then based on that build
your on configuration. Trust me - it just makes things a lot easier. Spacemacs
comes in different "flawors" you can choose bare-bones, instead of default and
then add anything you want on top of that.

~~~
aldanor
Ditto. Spacemacs is awesome and very configurable (but in a good way).

------
unhammer
There's a great blog at [http://emacshorrors.com/](http://emacshorrors.com/)
if you need to satisfy your roadkill-fascination with the layers of hacks we
call Emacs. See
[https://hn.algolia.com/?query=emacshorrors&sort=byPopularity...](https://hn.algolia.com/?query=emacshorrors&sort=byPopularity&prefix&page=0&dateRange=all&type=all)
for some highlights :-)

------
Xcelerate
Now we just need something like this for Vim. I don't know why, but iTerm 2 +
Vim is very slow for me. Holding "j" or "Ctrl + Y" for instance is jerky and
slow. Maybe it's just my computer and no one else has this problem, but it's a
relatively recent MacBook Pro. I've checked all my settings in .vimrc and
Googled the problem, but I can't seem to figure out what is making it so slow.

~~~
spacehacker
Try Spacemacs. It gives you VIM in Emacs.

~~~
joeevans1000
So do viper or evil modes. Right in a terminal version, too, if that's your
thing.

~~~
iLemming
Spacemacs is not just a mode or a bunch of modes. Building decent evil-based
config is not easy and may take years. Every Vimmer I believe should at least
try Spacemacs.

------
yellowapple
"My diff turns scrollbars and other widgets that share screen space with the
double-buffered region into independent X windows. Overall, it’s a giant
hack."

Ain't that how X11 was originally envisioned? You'd create a bunch of windows
made of many smaller windows. At least, that's the impression I got when I
started playing around in X11 (mostly for StumpWM hacking).

------
reedlaw
It's great to see improvements in Emacs. Are there any developments on getting
a decent terminal emulator? I use term but occasionally have to open GNOME
terminal when Emacs' term can't display something properly (like ncurses-based
programs).

~~~
armitron
I tried writing one in pure Elisp some time ago, but it was too slow. Maybe
I'll give it another shot in C this time, on top of the new dynamic module
support.

The built-in terminal emulator is atrocious, both code-quality and feature-
wise.

~~~
sooheon
I agree with you as an end user that the features of all terminal emulators
available in emacs are atrocious. Have my up vote, and silent support should
you decide to really put some time into a better terminal for emacs.

------
Jasper_
Any reason you chose to use DBE instead of just creating two drawables and
swapping with Present / CopyArea? DBE is considered deprecated over the newer
techniques since it's not accelerated.

------
fiatjaf
Now people are publishing on Facebook pages that look like modern blogs?

~~~
bandrami
Facebook employees are

~~~
chris_wot
I'd be tempted to do this. Not work for Facebook, but blog using Facebook.

~~~
fiatjaf
Because you're insane?

~~~
chris_wot
It's quite possible.

------
plg
How do I install this version? (On a mac, preferably using homebrew)

------
raldi
I love how the solution was to add another layer of emulation.

~~~
emmett
A famous aphorism of David Wheeler goes: "All problems in computer science can
be solved by another level of indirection" (the "fundamental theorem of
software engineering"). This is often deliberately mis-quoted with
"abstraction layer" substituted for "level of indirection". Kevlin Henney's
corollary to this is, "...except for the problem of too many layers of
indirection."

[https://en.wikipedia.org/wiki/Indirection](https://en.wikipedia.org/wiki/Indirection)

------
smonff
I am chocked that somebody that can be so involved in Emacs can share it's
ideas on Facebook.

It would be a big failure for Emacs.

~~~
United857
Dan is an ex-Facebook engineer.

------
honkhonkpants
Emacs' redisplay architecture is an adaptation for ancient serial terminals
with very low rates. On those terminals emacs has always been "buttery smooth"
compared to other editors! Of course very few people have any reason to use
those terminals these days.

------
Scarbutt
Now we need true color terminal support.

------
mrcactu5
I have heard that double-buffering is an excellent solution to a number of
data-stream problems. Are there any resources on StackOverflow explaining such
things?

~~~
lisper
What's to explain? You allocate two image buffers. At any particular time, one
is displayed and the other is hidden. You draw to the hidden buffer. When
you're done drawing, you swap the buffers. Lather, rinse, repeat.

------
smt88
I've never understood why anyone uses Emacs over purpose-built IDEs. This
article made me even more confused.

Can anyone explain?

~~~
__s
One editor to rule them all, then you don't have to individually configure
every IDE with various idiosyncratic preferences. & learn new sets of commands
which you can't take with you elsewhere. Reuse muscle memory between all
situations. Reuse over SSH. Low resource requirements. Infinite scriptability

~~~
smt88
Multiple editors would have been an issue for me a few years ago, but
JetBrains has changed that (for the set of languages I use, anyway). I can use
the same IDE for a bunch of different ecosystems.

Reuse over SSH is a compelling reason. Do you still have low resource
requirements if using things like linting, hinting, and full graphical
debugging?

~~~
wtbob
> Multiple editors would have been an issue for me a few years ago, but
> JetBrains has changed that (for the set of languages I use, anyway). I can
> use the same IDE for a bunch of different ecosystems.

Exactly. Now, imagine being able to use that same IDE for everything JetBrains
supports, and to read man pages, and to read info pages, and to read & compose
email, and to list the processes running on your computer, and to manage files
in directories, and to emulate a terminal, and to browse the web, and to play
NetHack, and to use IRC, and to manage git repos, and to do _every other thing
you want_. And all the keybindings remain consistent throughout all of those
modes. And you can easily schlep data back & forth between them. And it's
extensible in a relatively sane language (sane compared to Java, JavaScript,
C, C++ and Python, anyway).

That's why we use emacs. That's why it's very difficult to understand why
anyone else _doesn 't_ use emacs.

> Do you still have low resource requirements if using things like linting,
> hinting, and full graphical debugging?

Emacs can be pretty amazingly fast even with all of that running. There are
advantages to having first been written back when computers were small.

------
zython
can we please refrain from posting facebook links unless the circumstances
dont allow any other blog host ? call me a privacy fetishist but it is in the
best interest of everyone to avoid this site like the plague.

~~~
smonff
Talking about Emacs on Facebook is awful. As if the thing was "only a text
editor" and not a symbol of freedom...

~~~
iLemming
Author also worked at Facebook. According to your logic it would be awful if
North Korean journalists would talk about freedom of speech.

~~~
smonff
For a Facebook employee, there is many other ways to speak about Emacs than on
a closed platform.

In North Korea, I am not sure they have many alternative if they want to chat
about freedom of speech.

Though, I appreciate that you compare Facebook to North Korea.

------
gkya
I really dislike this style of writing. When I came to the actual important
part I was exhausted already having read paragraphs of much-ado-about-nothing.
GNU Emacs is older than me, and it's probably older than X Windows, certainly
it'll have some weird things here and there. Why the shock?

I haven't ever experienced any flickering on emacs myself, but thanks to the
author for the patch anyways. One thing I'm looking forward to is the
concurrency patch.

~~~
krschultz
Then don't read it. Surely there will be a summary blog post written for those
that don't like long form. I personally enjoy the meandering sometimes. It's
the difference between reading a book and reading the cliff notes, they each
have their place.

~~~
eeks
Usually, one must read a piece to build an opinion on its style and comment
about it. Just sayin'.

~~~
gkya
As you see you better keep them comments to yourself. This guy wrote that I'm
"shitting on" things and "nobody cares about [my] opinions", and no mod
intervention. A couple months ago I told a guy he was being too pedantic and
my thread was detached.

