
Learn Emacs and Lisp with simple, bite-sized screencasts - ColinWright
http://www.emacsbites.com/
======
eyko
I like the approach (two birds with one stone) but the first bitecast has left
me the impression that I've learnt some emacs lisp and very little emacs.
Since total newbies are supposed to be the audience of this first bitecast,
I'll give my opinion as a total newbie...

From the video, here are the features of emacs that I've learnt by just
watching:

1\. Emacs will read your environment variables. You can override them as you'd
expect.

2\. You can override your HOME directory by setting the environment variable
to any path. From my point of view, it seems like too much work - will emacs
use your current working directory? Seems like it doesn't.

3\. C-x C-e evaluates.

Here's what I would have liked to learn, that I didn't:

1\. What shortcuts is the author using throughout the video?

2\. Basic emacs functionality: moving around, opening / closing files, saving
files... Granted I know some movement shortcuts because they're commonly used
in other contexts (C-a / C-e for begin/end of line, C-f, C-b to move cursor
forward/back, etc), there are many other tips we could use as newbies.

3\. Does emacs only evaluate lisp? Will it evaluate Python? Javascript?

4\. Although I know I can extend functionality, I'd love to learn about the
ecosystem (plugins or modules, what tools, if any, exist for plugin
management, etc).

~~~
forgotmyoldacct
2\. There's a built-in tutorial like Vimtutor for this, it's under the help
menu.

3\. Looks like you can use Python[1], but you'd better just bite the bullet
and learn a bit of Emacs Lisp, it's how you'll be configuring it anyway, and
it's unlikely that you'll need to program something too complex if you can
just fetch a bunch of Elisp from the net which does sort of what you want.

4\. Yes, from Emacs 24 and on it has a built-in package manager and
repositories.

You know what a good way to learn Emacs is? Reading the docs. No, really!
Anytime you request documentation for your buffer (C-h m by default), it will
be based on your current key bindings and modes, so it's a great starting
point to explore, as it'll tell you of all the shortcuts your active plugins
have defined.

As of late, I've learned more of the capabilities of the modes I use by
dicking around than by searching the web or reading manuals, as I sometimes
just start typing in the extended command shell (M-x), using IDO mode's[2]
fuzzy completion, and seeing what comes up. For instance, by typing "replace",
I just learned of query-replace, which prompts you before each substitution
for a string. Afterwards, I can run "M-x where-is" to see if the command is
bound to any shortcut right now, as I did with query-replace, which turned out
to be bound to M-%.

_______________________________

1\. [http://pymacs.progiciels-bpi.ca/index.html](http://pymacs.progiciels-
bpi.ca/index.html)

2\.
[http://www.emacswiki.org/emacs/InteractivelyDoThings](http://www.emacswiki.org/emacs/InteractivelyDoThings)

~~~
gavinpc
The built-in tutorial (C-h t) was extremely useful for me in learning emacs.

First, it's just a document that you can edit. You start at the very beginning
by navigating the document itself. You can save or discard your changes to it.

Second, it's marked up to show you when the key bindings it's talking about
have been re-bound. This wouldn't be an issue for a "vanilla" emacs, but is
useful with preconfigured packages.

By the time you get through the tutorial, the basics are second-nature.

More power to the videos -- just agreeing that the built-in docs are ample.

------
terhechte
I'm still in the process of switching from Vim+Extensions to
Emacs+Evil+Extensions. What I say now mostly applies to the Cocoa version of
both editors, such as MacVim and Emacs/Cocoa: What I like so much about Emacs
so far is the better editor component: Text can be a little bit rich:

\- Inline images are kinda supported \- There can be different font sizes \-
There can be styled (bold / italic) text.

So a good syntax definitions could have different background colors for code,
different foreground colors, different text sizes, different text weight /
italics.

I find this much more pleasant for the eye. In vim, all text has to be the
same size and all text has to be the same font. In emacs, you can even (with
some hacking, as I remember) have different color themes for different
windows/views.

If I'm looking at an editor all day long, I want it to look pleasant. Period.
Have a look at [https://github.com/jasonm23/emacs-soothe-
theme](https://github.com/jasonm23/emacs-soothe-theme) to see how beautiful it
can look.

Apart from that, the other reason why I'm trying to switch is that I wanted to
become better at lisp and I really wanted to have an editor that I can shape
like a tool to suit my needs. And I could never get the hang of vimscript. So
if I already learn a new language Lisp sounds like a better investment than
vimscript.

So far, I'm happy with emacs, though I can't use it for all my coding yet.
Most notably, it lacks a good Objective-C code completion. On vim, there's
YouCompleteMe, which does a formidable job of connecting with clang complete.
I started porting youcomplete me over to emacs a couple of weeks ago but had
to stop due to other priorities. I'm at a point now where I can get the
correct completions in emacs in a popup when I'm over a symbol or at the end
of a property (self.???). However, I still have to solve a couple of issues
and it is not ready for usage yet which is why I've never shared it. If
somebody knows a bit of emacs lisp, python, and objective-c and wants to help
out here, I'd be glad to share this project on Github.

~~~
fein
I rock emacs 24/7 for all code outside of xcode or android studio (php,
phantomjs scripts... anything not java or
objectiveCMethodWithAnIncrediblyDescriptiveButEffingLongName), and I've found
"calm forest" in the color themes package to be a wonderful general theme.
It's a great place to start for building in custom syntax settings for "less
supported" languages.

Godspeed on the project, and perhaps if I can get some time to force myself
into ob-c in emacs at work, I can help.

How does storyboarding work out, or are you just writing the markup directly?

~~~
terhechte
I'm currently only interested in native code auto completion as good as in
XCode where it understands the complete class hierachy and types half the
boilerplate for you. For Storyboards or Xibs you'd still need XCode. I've long
thought about a nice compiler from a simple text format to xib in order to
have better version management capabilities, and it may be reasonable now with
layout constraints to implement something like that, but I think storyboards
would be best done in XCode.

I'll comment on this thread again once I've shared the objective-c emacs code.

------
btipling
One problem for a vim user like me is emac's terrible first use experience.
The delete key doesn't delete, it opens up help [1] and quitting is very
difficult [2]. Also what people don't know at first start is which key is
their meta key. A key that is super important in emacs. That it gets this
first basic experience so terribly terribly wrong turns a lot of people off
within a few critical settings of having run the thing.

[1]
[http://www.gnu.org/software/emacs/manual/html_node/emacs/DEL...](http://www.gnu.org/software/emacs/manual/html_node/emacs/DEL-
Does-Not-Delete.html)

[2] [http://www.ugrad.cs.ubc.ca/~cs219/CourseNotes/Unix/emacs-
sta...](http://www.ugrad.cs.ubc.ca/~cs219/CourseNotes/Unix/emacs-
startQuit.html)

~~~
fafner
[1]

> In some unusual cases, Emacs gets the wrong information from the system, and
> <Backspace> ends up deleting forwards instead of backwards.

[2]

That's not the case with the GUI version because it works like any other
application (File->Quit or the [x] button). In terminal it's a bit different
but it's not like vim is any easier here.

------
diminish
Does this run on elnode, the web dev based on elisp?

~~~
nic-ferrier
Yes. The github is here:
[http://github.com/nicferrier/emacsbites](http://github.com/nicferrier/emacsbites)

------
unknownian
Does Emacs support or have any extension that "tabs" the right amount of
spaces based on the programming language/filetype? I use Vim and it annoys me
that this isn't built-in, nor can I find any good script for it. I know I can
write it manually, but I want it for all languages.

~~~
6d0debc071
> Does Emacs support or have any extension that "tabs" the right amount of
> spaces based on the programming language/filetype?

Probably - I mean it depends what you want. Emacs is almost infinitely
programmable. If you want to set it up as a Python IDE then there're sites
like this telling you how:

[http://www.emacswiki.org/emacs/?action=browse;oldid=PythonMo...](http://www.emacswiki.org/emacs/?action=browse;oldid=PythonMode;id=PythonProgrammingInEmacs)

This is a quick clip of Emacs using Rope for instance:

[http://youtu.be/OMi-uN-6O1Q](http://youtu.be/OMi-uN-6O1Q)

If you want to set it up as a Lisp IDE then you're probably wanting to go and
install SLIME:

[http://common-lisp.net/project/slime/](http://common-lisp.net/project/slime/)

It depends what you want it to do, but emacs is an incredibly powerful program
and learning it pays off massively, in my experience. :)

------
wging
fyi, the 'why' link is broken due to a naming mismatch.

~~~
nic-ferrier
thanks! I've fixed that. Good catch.

~~~
ColinWright
Actually, the "contact" and "terms" links seemed also to come back to the same
page - you might want to check all your links thoroughly.

~~~
nic-ferrier
And again thanks. Fixed. The reason for this breakage is that I had to change
the name after it was launched (in a hurry).

