Hacking your way around in Emacs
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.
Moving lines around
- The first, naive approach to moving a line down
- Preserving the column
- Moving by more lines
move-line-downwork with undo
- And now for a completely different approach
- And yet another approach
- Supporting different prefix arguments
Reordering parts of a sentence
- Modal versus non-modal design
- The set-up command
- Constructing the reordered sentence
- Bringing the reordered sentence back
- Fixing a bug with region boundaries inside words
- Defaulting to the current sentence
- Introducing a mode
- A shorter definition of the mode’s keymap
- Showing the key for a word
- Generating the list of keys to use
- Showing the keys for all words in the region
- Making the word selection easier – handling the keys
- Dealing with punctuation
- Avoiding duplication in code
- Dealing with capitalization
- Marking words already copied and making copying faster
- Implement a more robust undo feature
- Final touches
- Package information
Counting lines of code
- The skeleton of the counting command
- Counting non-blank lines
- Let’s get more abstract…
- Skipping comments
The Leanpub 60-day 100% Happiness Guarantee
Within 60 days of purchase you can get a 100% refund on any Leanpub purchase, in two clicks.
See full terms
80% Royalties. Earn $16 on a $20 book.
We pay 80% royalties. That's not a typo: you earn $16 on a $20 sale. If we sell 5000 non-refunded copies of your book or course for $20, you'll earn $80,000.
(Yes, some authors have already earned much more than that on Leanpub.)
In fact, authors have earnedover $12 millionwriting, publishing and selling on Leanpub.
Learn more about writing on Leanpub
Free Updates. DRM Free.
If you buy a Leanpub book, you get free updates for as long as the author updates the book! Many authors use Leanpub to publish their books in-progress, while they are writing them. All readers get free updates, regardless of when they bought the book or how much they paid (including free).
Most Leanpub books are available in PDF (for computers) and EPUB (for phones, tablets and Kindle). The formats that a book includes are shown at the top right corner of this page.
Finally, Leanpub books don't have any DRM copy-protection nonsense, so you can easily read them on any supported device.