Xah Lee has an excellent post on learning how to program in Emacs Lisp1. His idea is to start with your favorite programming mode, disable it, and program your own. Begin with just doing syntax coloring and then slowly add features as you need them. Over the course of, say, a year you will build a robust mode for your language and learn a ton of Elisp.
I find that the best general method for learning a piece of technology is to use it to solve a problem. If you have some editing problem that needs solving, then try to do it with Elisp (Lee’s Elisp Tutorial can be a huge help here). If you don’t have some problem you need to solve but just want to learn Elisp so that you can make better use of Emacs then Lee’s suggestion of implementing a major mode for your favorite programming language is a good one. It may take some time but you don’t have any problem—urgent or otherwise—to solve so time shouldn’t be an issue. Either way, you’ll end up learning a lot of Elisp and be able to use it to make more effective use of Emacs.
Update: Lee notes in the comments that he has made this post into a separate page that you can find here.
thank you Jon again.
I just separated that page. The independent URL is http://ergoemacs.org/misc/what_to_do_with_emacs_lisp.html
Thanks!
I prefer the Stack Overflow method, personally: Find a question that interests you, and figure out how to answer it.
Benefits are:
1. The tasks will usually be on a smaller scale than implementing a programming mode.
2. You’re less likely to be solving a problem that has already been solved (or at least, you’re not intentionally doing so).
3. You’re helping at least one other person; are very likely helping other people who find it by searching in the future; and may well be implementing something useful for yourself as well.
4. If other people provide better answers to yours, you will learn from those as well as from your own efforts.