

Emacs, naked - bzg
http://bzg.fr/emacs-strip-tease.html
Configure GNU Emacs (24.3 or above) to avoid distraction.
======
terhechte
Coming from Vim, when I switched to Emacs, I found the starting aesthetic
experience more than lacking (or, ugly). It took me some time (and a helpful
HN discussion) until I found good themes and good plugins to make it look
aesthetically pleasing (to my eyes, at least, after all people's tastes
differ).

If somebody is looking for a nice Emacs theme and feels that the OP is a bit
too minimal, have a look at my Emacs conf (I know, shameless plug) here [1]

There's also a screenshot [2]

This configuration is kinda optimized for Emacs+Evil to be more like Vim, so
you may just want to have a look at the theme / plugins.

[1]
[https://github.com/terhechte/emacs.d](https://github.com/terhechte/emacs.d)
[2]
[https://raw2.github.com/terhechte/emacs.d/master/screenshot....](https://raw2.github.com/terhechte/emacs.d/master/screenshot.png)

~~~
mercurial
I try out emacs every few years. Every time, I get discouraged whenever I
attempt to do something simple (change the theme, etc) by the amount of
configuration necessary. I may try your repo, since it seems to have a lot of
stuff already configured.

The other thing is that Emacs is really slow to start as soon as you have a
few plugins, compared to vim.

~~~
saulrh
Slow emacs startup isn't a problem thanks to the new emacs-server stuff.
Running emacs with the "\--daemon" flag will cause it to do initialization,
fork into the background, and become persistent; now edit files using commands
like "emacsclient $filename". Eamcsclient will connect to the daemonized emacs
server and have it open $filename, bringing it forward either in an existing
frame or (using the "-nw" or "-nc" flags) creating a convenient new frame to
edit with. Not only does this give you the ability to get into emacs without
going through init, the server will maintain all of your editing in the same
process so you don't have to manage editor instances.

~~~
sdegutis
There are serious problems trying to run it as a server on Mac OS X. Basically
it's not a real option on this platofrm.

~~~
jlatt
I've been running emacs server for at least a year or two now on OSX using
homebrew.

    
    
      "$(brew --prefix)/opt/emacs/Emacs.app/Contents/MacOS/Emacs" --daemon

~~~
ics
If you accidentally quit the Emacs GUI, does it still kill the daemon?

~~~
aaronem
If you run it with --daemon, the server process doesn't create a frame of its
own, but only listens for connections from emacsclient instances; IIRC it also
rebinds C-x C-c to delete-frame (also available at C-x 5 0), and the daemon
process stays alive through everything short of M-x kill-emacs or similar.

~~~
klibertp
I have this:

    
    
        ;; schedule starting of Emacs server after everything else is loaded (5 min
        ;; *should* be anough for startup :))
        (run-at-time "5 min" nil 'server-start)
    

in my .emacs - this way I get both a window and a "daemon" server for use with
emacsclient. I think it dies if the first frame is closed, though.

~~~
aaronem
You can actually just put

    
    
        (server-start)
    

at the end of your init file, and it'll behave more or less as you intend; if
you've got a lot of stuff hanging off after-init-hook, you might do well to
hang server-start off it as well.

That said, yeah, it will create a window which if killed will shut down Emacs,
so I tend to prefer invoking it with the --daemon option instead; that way, I
don't have to worry about accidentally killing Emacs if I kill the wrong
frame. (I also call server-start in my init file, but I'm not actually sure
that is necessary when invoking Emacs with --daemon.)

------
sdegutis
I switched to Emacs a year and a half ago when I started using Clojure, and
customized it heavily for the first few months. But I avoid customizing it any
more. I'm never truly satisfied with what I end up with, and I hit too many
frustrating walls trying to make it just right.

One major problem for me is the plugin ecosystem. There's Melpa which is easy
to use and has the most up-to-date packages, but they're built off of HEAD
which makes them extremely brittle. Many plugin authors decry Melpa and say
that if you installed their package from it, then you're on your own. There's
also Marmalade but I haven't found it to have nearly the same scope of
packages.

~~~
NigelTufnel
I walked almost the same path.

For the first couple of months I was customizing the hell out of Emacs. Then
the things started falling apart and I've switched to the 20-line long .emacs
and empty .emacs.d (well, almost empty if you don't count key-chord/ace-jump-
mode combo which makes file navigation a mindreading experience)

~~~
kirubakaran
Thanks for mentioning ace-jump-mode. I thought that I had a pretty extensive
Emacs setup, but it is now much better with ace-jump-mode.

------
TeMPOraL
(shameless plug)

Don't you want a nice Nyan Cat in that modeline in the sky? ;).

[http://nyan-mode.buildsomethingamazing.com/](http://nyan-
mode.buildsomethingamazing.com/)

~~~
aaronem
(shameless plug)

And don't you want the current weather to go alongside your Nyan, thanks to an
Emacs minor mode inspired by a Hacker News comment?

[https://github.com/aaron-em/weatherline-mode.el](https://github.com/aaron-
em/weatherline-mode.el)

~~~
TeMPOraL
Nyan Cat endorses this plugin!

[https://dl.dropboxusercontent.com/u/216352/weather.png](https://dl.dropboxusercontent.com/u/216352/weather.png)

~~~
aaronem
Awesome!

Mind if I grab a copy of this image, to use with whatever attribution you
like, on the repo README? I don't use nyan-mode myself, and it'd be nice to
have the screenshot to show people who find the repository.

~~~
TeMPOraL
Sure, go ahead :).

I'll put link to and/or a screenshot of your project somewhere in the Nyan
Mode page/readme, as you wrote it was inspired by a comment about Nyan Mode
;).

~~~
aaronem
Thanks -- but you might want to wait a little while; someone opened a Github
issue pointing out that the API offers better weather info than I'm using, and
also linking a weather icon font I didn't know existed, so I'm mid-rewrite
right now. It'll look a lot better once it's done. :)

------
swah
Ì wonder if some Emacs people intend to migrate to LightTable in a few years?

~~~
sdegutis
I love the concept of LightTable, basically a new Emacs with a redesigned
architecture and plugin system.

I don't love that it's written inside a WebView. I don't love that the best
cross-platform graphics library we have is the mess we call HTML+CSS+JS. I
don't love that I have to compile Clojure to JavaScript and run it inside a
WebView in order to do anything to customize it.

On the other hand, I love the simplicity of the UI of emacs. But I don't love
how it's decidedly focused on text-only and its GUI is a second-class citizen.
(Try scrolling per-pixel rather than per-line, and consider that tabs can only
be implemented as a complete hack based on the ruler area.)

I love that Emacs Lisp compiles to bytecode and is interpreted natively. I
love the simplicity of the language and its implementation and how it's
integrated with Emacs. But I don't love the language itself.

~~~
dilap
If you're on a mac, the railwaycat port of emacs has pixel scrolling with the
trackpad/mouse out-of-the-box. It's not as crystal smooth as you'd hope for,
but it's decent.

[http://snag.gy/g8NIF.jpg](http://snag.gy/g8NIF.jpg)

~~~
sdegutis
Oooh, neat! Might have to check it out, thanks!

------
vsbuffalo
As a long time emacs user (and lover) I wish RMS and other emacs developers
would take his quote to heart more in emacs development. Emacs is shipped with
too many things.

Emacs finally has a really nice package manager, so I'd love to see a version
with minimal default packages. Do I really need java-mode if I never, ever
will use Java? Calc when I have R? SMTP support? No, I need absolutely none of
this.

~~~
bza
The current policy (as enunciated by Stefan Monnier, who took over as
maintainer from RMS a few years ago) is for new packages to be added to the
package archive unless there's a very strong argument for their providing core
functionality. (Packages that already ship with Emacs are unlikely to be
removed from the core, though.)

~~~
technomancy
I've heard it's actually being considered to move org-mode and eshell into
packages, provided the release process can be ammended to generate releases
which include packages by default.

------
kabdib
I've found the latest revisions of Emacs to be incredibly ugly, and I have to
turn off most of the crap (menus, etc.) to be comfortable.

Stock Emacs also seems to want to open up a minibuffer when I've told it
"please just edit this set of files". It's also got some idea that I want to
to suspend the shell I launched it from (er, no, not ever).

The argument I see on forums is: "Well, the _right_ way to use Emacs is to
just start it and then never leave, so you only have to get that stuff out of
the way once."

So I spend 30 minutes figuring out the right elisp stuff to disable so I can
get rid of the crapware.

Crapware in Emacs. What's next, AOL sponsorship splash screens?

~~~
Karunamon
This is the same problem I've run into. I _want_ to try living in Emacs,
because there's pretty much a mode or package for everything, but a few of the
basics don't work quite right to a point where that is usable yet. For
instance, terminal emulation. There's terminal mode and eshell, but if you
have even a mildly complicated PS1, all you get are control codes everywhere.
Just strange, off-kilter behavior.

At this point, I'd be happy if I could just embed iTerm2 in a buffer and be
done with it.

~~~
cag_ii
Have you tried "M-x ansi-term" ?

~~~
Karunamon
Yup. It only looks slightly less weird than eshell or regular term mode. Still
makes my ZSH prompt look screwy and still causes strange breakage with apps
(iotop was completely unusable, for instance, as was anything ncurses based)

------
jaseemabid
I have a moderately well written emacs.d, and I'd be happy to see a few use
it/learn from it/correct me/give feedback.

Just startup emacs (24+) with the init.el and it will download dependencies
from elpa. Will have to restart once afterwards to make the theme right.

Screeshot : [http://i.imgur.com/2wmxir5.png](http://i.imgur.com/2wmxir5.png)
Source:
[https://github.com/jaseemabid/emacs.d](https://github.com/jaseemabid/emacs.d)

------
drdaeman
I hoped the article would be not about look-and-feel, but about building a
stripped-down version of Emacs without obsolete parts like TRAMP or LEIM
(because there are system-global subsystems for those nowadays), or maybe even
trying to tear chunks from MULE.

In a perfectionist "must be a pure gem, no imperfections allowed" sense, ton
of seemingly unnecessary libraries is the only thing that actually bothers me
about The Editor.

------
npsimons
Many of these suggestions seem similar to Steve Yegge's "Effective Emacs"
which I can recommend if you are a new Emacs user (or even if you've just not
seen it before):

[https://sites.google.com/site/steveyegge2/effective-
emacs](https://sites.google.com/site/steveyegge2/effective-emacs)

I like getting rid of toolbars and such, but still like to keep the modeline
and gutters.

------
brickcap
Here is a screenshot of my emacs.

[http://farm8.staticflickr.com/7346/12104669276_154ae3d98f_o....](http://farm8.staticflickr.com/7346/12104669276_154ae3d98f_o.png)

Scroll bars and menu turned off. Theme solarized and transparent background. I
feel good when I am programming :)

~~~
fafner
A transparent background adds too much visual noise in my opinion. The same is
true for line numbers.

~~~
brickcap
Line numbers can be handy to locate compiler errors. I removed it once but
then it became a lot harder to locate where the program was causing problems
or where the compiler errors occurred. I would like to remove them but I guess
I am stuck with it ....

~~~
fafner
You should run the compiler inside Emacs (M-x compile). That way you can
easily jump to error locations. (You can also use M-x goto-line to quickly
jump to a specific line)

~~~
laichzeit0
Serious question, are Emacs users seriously in the habbit of typing things
like M-x some-long-command-with-minuses? In Vim to go to a line number it's
just colon line number, e.g. ":34" goes to line 34. I mean that's the default,
not something that's been keymapped. Or do you guys end up keymapping things
like that frequently aswell? Then again you guys don't have modal editing so I
can see why it's always M-x before doing something non-edity, so it might seem
assbackwards for a Vim user :)

I take for instance the most common commands I use in Vim to edit with that I
use 95% of the day and they're rarely more than a single character or 3 at the
most.

~~~
krupan
If it's a command we start to use often we bind it to a shortcut (If I may
presume to speak for emacs users). It's not much different than shell
commands. Some you just type, some you create an alias/function shortcut for.

I recently discovered an emacs package that lets me type M-x and then the
first letter or two of a command that I used recently and it completes it for
me from there (smex.el). That's even easier than coming up with a new
keybinding.

Just to try and help you understand how emacs users see it, your most common
vim commands that are a single character are actually sometimes a single
character and sometimes they need to be prefixed by an ESC to get you into the
right mode. That inconsistency is what killed me when I tried to use vim. In
emacs every command is always the same, no need to keep track of what mode I'm
in.

------
phkn1
Why go to all that trouble? There's always "emacs -nw" to get pretty minimal
in an xterm...

~~~
__david__
You don't get as many color choices and you don't get as many key bindings.

"C-M-%" is pretty much impossible in the terminal. You have to do "M-x query-
replace-regexp", or make some other custom binding.

~~~
claudius
You can hit Esc before the combination to fill in for M and then it is just
C-S-5 for me, which is certainly doable?

~~~
breadbox
In some (most, I thought, but maybe I'm wrong) terminals, you can only use the
control key to generate an actual control character -- i.e. one of ASCII 0-31.
The ctrl key basically unsets bit 64 from the typed key, so ctrl-A through
ctrl-Z generate ASCII 1-26, ctrl-@ generates ASCII 0 (though traditionally
ctrl-spc gives this as well), and ctrl with [ \ ] ^ _ generate the remaining
ASCII 27-31. Ctrl-? sometimes generates ASCII 127 (pretending that ctrl
actually subtracts 64 instead of unsetting the bit), but otherwise there are
no remaining ASCII values left for such extensions as ctrl-%.

~~~
__david__
No, you're right. As far as I know, standard vt100/ANSI terminals do not have
any special escape sequences for control key combinations that don't map
directly into ASCII.

------
lispm
Like Zmacs of the Lisp Machine. Mostly full screen, with a mini buffer and the
status line at the bottom.

A lot of interaction then happens with a type-out buffer which comes down from
the top and disappears when not needed.

------
yamaneko
Rule 34, what have you done?

------
kinleyd
-1, 1 and t have worked for me in setting most modes except that blasted scroll-bar-mode, which it turns out calls for a 0 - what the heck! Thanks for a super post.

~~~
fafner
(scroll-bar-mode -1) and M-- 1 M-x scroll-bar-mode RET both work for me.

~~~
kinleyd
Yeah, when 0 also didn't work, I took another look at it. Turns out I needed
to call (add-hook 'server-visit-hook 'my-custom-function) with the call to
scroll-bar-mode inside my custom function, because I'm working off an
emacsclient. Now I have my choice of -1, 0, nil, etc. Finally sorted out. :)

------
throwaway_yy2Di
If you reflect for a moment, obviously a minority of HN will be made alienated
and uncomfortable by this sexualized humor. Do you really want this?

~~~
yetanotherphd
Well another minority might view strip teases as an act of empowerment and
self expression, and be made alienated and uncomfortable by your sex-negative
viewpoint. How would you balance the interests of these two minorities?

~~~
throwaway_yy2Di
Obviously the professional way! By inviting them to the center of the office
to discuss frankly their viewpoints on sex until everyone quits from misery.
I'd also scatter conservative religious pamphlets and dildos around the office
to encourage _everyone_ to participate.

Because _obviously_ it would _deprive_ a reader to explain how to remove GUI
widgets from an emacs frame [window], without making a metaphor of the window
as a naked female, and the widgets as clothing, and the process as a
striptease. This is _exactly_ how a mature team of mixed-sex professionals
discuses emacs widgets. An HN thread on removing emacs widgets _without_ overt
sexual analogies [0] would be a unnatural, stilted place full of repressed sad
people.

[0]
[https://news.ycombinator.com/item?id=6983088](https://news.ycombinator.com/item?id=6983088)

~~~
vezzy-fnord
Mind explaining where it was implied that the window represents a nude female?
Just because the post uses some racy humor with the striptease metaphor,
doesn't mean it implies any particular sex.

This could just as easily be a man, woman, android or RMS himself stripping
(and considering that the whole post is at the backdrop of an RMS quote taken
deliberately out of context, I wouldn't be surprised if it was meant to evoke
the latter).

~~~
skylan_q
_RMS himself stripping_

When I started reading, I was worried that this is what the article was going
to be about.

------
ams6110
nice stuff. My .emacs keeps the mode line, which I like, but turns off the
scrollbars and menu bars, and sets a wide fringe (though not quite as wide as
shown). I don't like text jammed right up to the edge of the window.

Anyone know how to achieve a "fringe" on the top and bottom? And also how to
do it in xterm windows?

~~~
ams6110
Just discovered, you can create a "fringe" in xterm by the -b option:

    
    
      -b number
          This option specifies the size of the inner border (the
          distance between the outer edge of the characters and the
          window border) in pixels.  That is the vt100 internalBorder
          resource.  The default is ``2''.

------
nayefc
If you use Emacs in the terminal, almost none of this applies as they are
there by standard.

------
adorton
That fringe is neat. Anybody know if Vim supports something like that? I've
never been able to make complete sense of vim's line length options. They
never seem to work quite "right".

~~~
girvo
There are a number of hacks to do it as plugins, but I can never get them to
play nice with other plugins :(

------
skywhopper
It's very unfortunate that Emacs' default appearance is so terrible. I slogged
through figuring most of this stuff out myself a few years ago.

------
bitwize
emacs -nw

:)

It looks great when it combine it with amber-on-black Glass Tty in my xterm.

~~~
SimHacker
:TCTYP GLASS

------
shocks
Nice!

For vim I like to use

    
    
        " remove the toolbar
        set guioptions-=T
    
        " remove scrollbars
        set guioptions-=L
        set guioptions-=r

~~~
euoia
And in macvim:

    
    
      if has("gui_macvim")
        autocmd GUIEnter * set fullscreen
      endif

~~~
shocks
Ohh! I've been using Cmd-Ctrl-f like a loser all this time!

------
lucidguppy
[http://www.gnu.org/fun/jokes/ed-msg.html](http://www.gnu.org/fun/jokes/ed-
msg.html)

------
mixedbit
Are there usability reasons for a dark text on a light background being
default in almost all editors?

~~~
technomancy
It depends on the lighting of the room you're in. In a well-lit room or
outside (I love hacking outdoors) a light background will reduce eye strain,
but when it's darker around it's less suitable. In any case, it's always
easier to darken a light screen than to make a dark screen brighter given that
you rarely see laptop screens brighter than 300 nits.

------
Myrmornis
plug: I wrote a minor mode that's similar to this:
[https://github.com/dandavison/minimal](https://github.com/dandavison/minimal)
(hi bzg!)

------
annasaru
I sleep with emacs regularly, yet I am seduced ...

~~~
gavinpc
Wait, do you mean fall asleep on emacs?

Until I break the habit, thank God for undo.

------
jbeja
For some who works with split windows, i don't like the idea to trim the space
and hide the status-bar, but everything else is great.

------
dschiptsov

       ./configure --prefix=/usr/local --program-prefix=t --without-x11 --without-all \
       && make -s bootstrap && sudo make -s install

