
"This book introduces Emacs Lisp and tells you how to make the editor do whatever you want, whether it's altering the way text scrolls or inventing a whole new "major mode." Topics progress from simple to complex, from lists, symbols, and keyboard commands to syntax tables, macro templates, and error recovery"--Resource description page.
mentioning it here in the hope that it is is useful to others as well...
Inside Emacs, you can:
- "M-x apropos" to search for commands of interest
- "C-h f" to get documentation for particular functions by name
- "M-x find-function" to jump to the definition of a particular function
- "M-x find-library" to load a library into a buffer so you can read and (depending on your permissions) edit it.
The Elisp reference is very good, and most libraries are well documented. Between that, the ability to jump around the code base, and trying things out in the "scratch" buffer (it's an Elisp REPL disguised as an editing buffer), you should be able to get quite far.
So true! When I first tried to get into Emacs it was as a somewhat seasoned programmer who wanted to play with a Lisp other than Scheme. I've read the built-in tutorial and almost ran away in horror. I get it - for non-programmer users, yes, it makes sense to try to teach them the usage of an editor. I lost quite a lot of time trying to remember exotic chords like C-u C-x ^ a and so on, but it was ultimately meaningless - not one such shortcut remains in my config.
Emacs is an IDE for Emacs Lisp written in Emacs Lisp (and it's incredibly powerful at that, BTW). In other words, it's a bunch of APIs you can call, and it also gives you the place where you can interactively execute any elisp code and see the effects immediately in the same instance of the editor. It's obvious in hindsight, but I believe I'd get into Emacs much faster if I started with Emacs Lisp manual or maybe "Writing GNU Emacs Extensions" book instead of going through the Emacs manual (huuuuuge!) first and trying to bend my habits to fit the vanilla Emacs.
I think most programmers who wish to switch to Emacs should try to do it the other way: start with learning Elisp syntax and Paredit, then learn about modes, hooks, and key-maps and start hacking your own config. Everything else - buffers, windows, fringes, faces, what-have-you - you'll learn as needed when you need to implement a particular command which deals with them. Pull in a healthy amount of plugins then read their source - or just read the source of Emacs, as you can jump to definition of any function in one click, even if it's written in C - and before long you'll have a comfortable environment to work in, with all the features you learned to love from your previous editor. And that's when the fun part start: exploring Emacs features that you've never seen or heard about, wrapping external tools and streamlining their workflows, exploring the huge pile of add-ons.
Yesterday as I was fooling around with Writing GNU Emacs Extensions. One of the great things about that book is that Glickstein figures [correctly in my case] that someone learning to write extensions might not have a good handle on other aspects of Emacs...such as help. It hit me how googling tends to drop me into the emacs manual or other high level references and how impossible it is to drill down on specifics in the way the Emacs help system allows. I mean I can google up a list of the top 150 Emacs keyboard shortcut, but I can't google up "C-x n".
While I love StackOverflow, the overhead of "What does 'C-x n' do?" is astronomical...even if such questions were appropriate.
I've trained myself to break flow and look at ads every few minutes because Google seems great. I'll even google knowing it will have some StackOverflow links under the ads at the top instead of going to the site directly. What I won't get is the great local resource that sits on my machine.