Notes on Mastering Emacs: Chapter 2: The Way of Emacs
The following notes were taken while discussing Chapter 2 of the book Mastering Emacs by Mickey Petersen (2022 edition) in book discussion group meetings.
An index of notes for all chapters are available at notes.html.
Contents
- Magpie's Nest of Shiny Things
- Cornerstone of Emacs
- Uptime
- RPN Calculator
- Point and Mark
- Returning to Mark
- Font Locking
- Change Major Mode
- Links
Magpie's Nest of Shiny Things
The following commands mentioned in the book invoke some interesting functions:
-
M-x zone RET
: Zone out, completely; a built-in screensaver. -
M-x dunnet RET
: Dungeon text adventure game. -
M-x tetris RET
: Tetris clone. -
M-x lunar-phases RET
: Lunar phases calendar. -
M-x doctor RET
: ELIZA chatterbot.
Cornerstone of Emacs
The chapter mentions the Elisp interpreter as the cornerstone of Emacs. In fact, Emacs is an editor program that runs in the Elisp interpreter. When we start Emacs, what really starts first is an Elisp interpreter. It executes the Elisp code of an editor program. When that program executes, we get Emacs, the editor!
This behaviour is quite the opposite of how Vim and other editors behave. For example, when we start Vim or Visual Studio Code, first the editor runs. The editor then provides an embedded programming language that we can use to write plugins and extend the editor. For example, Vim offers VimScript to let us write code using VimScript and extend the functionality of Vim. However, when we start Emacs, first the Elisp interpreter runs and this interpreter executes a program that results in Emacs, the editor.
Uptime
The key sequence M-x emacs-uptime RET
shows how long
the current instance of Emacs has been running. Many users have
month-long uptimes.
RPN Calculator
To try out the calculator, type C-x * c
or M-x
calc RET
to start the calculator. Then to calculate
something like, say, 1 + (2 * 3), type 1 RET 2 RET 3 RET *
+
.
Point and Mark
To try out point and mark quickly, first open a buffer with some
text in it. For example, open a file, say, foo.txt
using the key sequence C-x C-f foo.txt RET
. Make sure
there are a few lines of text in the buffer. If it is a new buffer,
type some lines of text into it. Then move the point (cursor) to
any arbitrary place within the text. The motion keys
like C-p
, C-n
, C-b
, C-f
,
etc. or simply <up>
, <down>
,
<left>
, <right>
, etc. may be
used to do this.
Then type C-SPC
(i.e., ctrl+space) to set the mark at the
current position of the point. Then move the point around. Emacs
should now be highlighting the region between the mark (set earlier)
and the point. Then type M-w
(i.e., alt+w) to copy the text in the selected
region or type C-w
to cut the text instead. Finally,
move the point around again and type C-y
to paste the
copied/cut text.
Returning to Mark
Marks can also be used to remember a position in the buffer to which
we may wish to return to later. To try it out, first move the point
to some place in the buffer where a mark needs to be set. Then
type C-SPC C-SPC
to set the mark without activating it
(activating a mark causes Emacs to highlight the region as explained
in the previous section). Then move the point to some other place
in the buffer. Finally, type C-u C-SPC
to return to
the marked position.
Font Locking
Font locking (syntax highlighting) in Emacs is made up of faces of
properties (colour, font, size, etc.). Type C-u C-x =
to describe the current character (the character the cursor is on).
The output displays the face details as well. Alternatively,
type M-x describe-face RET
to describe the face of the
character the cursor is on.
Change Major Mode
Emacs almost always sets the appropriate major mode by inspecting
the filename or the content of the buffer. However, sometimes it
can be useful to set the major mode manually. For example, consider
a file named foo.html
which is open in Emacs and has
the following text:
<h1>Euler's Identity</h1>
<p>
In mathematics, <em>Euler's identity</em> is the
equality
\[
e^{i \pi} + 1 = 0.
\]
Euler's identity is a special case of Euler's formula from complex
analysis, which states that for any real number \( x, \)
\[
e^{ix} = \cos x + i \sin x.
\]
</p>
This is an HTML file with some LaTeX snippets that would perhaps be
rendered using a LaTeX rendering tool such as MathJax or KaTeX. By
default, when this file is opened in Emacs, the major mode is set to
HTML+. However, if one wants to focus on editing the embedded LaTeX
content, it is possible to change the major mode to LaTeX by
typing M-x latex-mode RET
. To change the major mode
back to HTML+, type M-x mhtml-mode RET
.
Links
The following list includes some links that were discussed during the book discussion group meetings:
- Org as a spreadsheet system: a short introduction
- The Spreadsheet (The Org Manual)
- Health data journaling and visualization with Org Mode and gnuplot by David O'Toole
- Using Org Mode to keep track of exercise
- scimax: An emacs starterkit for scientists and engineers
- Open Closures: Disclosing lambda's inner monomaniac object! by Stefan Monnier
- Emacs Lisp Animations by Dan Torop
- org-auctex: Better LaTeX previews for org-mode
- Top 10 reasons why you should be using Eshell by Howard Abrams