A few words on emacs lisp

Emacs lisp is what makes Emacs as extensible as it is. Everything you do in Emacs, is, in fact, written in emacs-lisp, even moving the cursor.

As it name says, Emacs lisp is part of the family of Lisp programming languages. Meaning it has their “weird” syntax:

(setq y 3)
(defun square (x) (* x x))
(square y)

This is a simple lisp function. which first, defines a variable using setq, in this case, sets y to 3.

Then, it defines a square function, which takes x as parameter, then, in the function body, it multiplies x by x.

In the third line, we call the square function with the value of the variable y. which is the same as doing (square 3). Calling this function will return the value 9.

As Emacs is a Emacs Lisp interpeter, you can execute Emacs-lisp code whenever which any of this functions:

You do not neet to save the file to evaluate.

Hello world

If you want to use Emacs Lisp, open your scratch buffer, whith C-x b and select *scratch* and begin typing your emacs lisp expressions. For example:

(princ "Hello world!")

This will print “Hello world” in the minibuffer. Which is what we wanted.

Now try:

(insert "Hello world")

This will insert “Hello world” in the buffer you’re in.

Variables

Emacs lisp has no types. Meaning you can use the same function to define variables.

Emacs Lisp, like Common Lisp, has a gorillion ways to define a variable:

(setq x 3)
(defvar y x)

You can also define variables with operations. Which have polish notation.

(defvar z (+ 3 4)) ;; z = 7

Exercises

4.1: Define z using (define) and operations, then insert the value in the buffer, using (insert)