Email the Author
You can use this page to email Marcin Borkowski about Hacking your way around in Emacs.
About the Book
This is an intermediate textbook on Emacs Lisp. If you are an Emacs user, chances are you may want to learn some Emacs Lisp (also called Elisp) – the language the Emacs editor is (mostly) written in. Emacs is an incredibly flexible tool, but using this flexibility requires learning to express oneself in the language Emacs understands.
This is not a beginner's book. That role is best fulfilled by Robert J. Chassell's fantastic (and free!) book entitled An introduction to programming in Emacs Lisp. This book is intended as the next step after reading that one.
After having studied this book, the reader should be able to program Emacs using some common Elisp idioms, know a fair amount of built-in functions and know how to learn about more of them, read parts of Emacs' source code, and consult the Emacs Lisp Reference whenever needed.
This book is focused on practice. While I introduce all needed concepts and explain them, they are all motivated by practical needs and backed up by actual, working code.
In the first chapter (available for free) we develop commands to move the current line up or down. Perhaps the most important takeaways are ways of using Emacs self-documenting nature to find out about existing functions doing things we need and using prefix arguments.
The second chapter is devoted to a whole package allowing the user to reorder words in a sentence (or other fragment of text). There is a lot to learn from it, from how to write a minor mode, to supporting regions in interactive commands, to using overlays, and more.
In the final, third chapter we write some code to count the lines of code in a program. This is an opportunity to present yet another set of techniques, most notably some elements of functional programming, a very brief introduction to regular expressions and the idea of lexical scoping.
About the Author
I am a mathematician, a blogger, a technical writer, a programmer, and an Emacs user. Also, a part of a multi-generational family of geeks, a boardgamer, amateur translator, a former teacher and more.