In the last few chapters we have introduced a macro and a fair number of functions and special forms. Here they are described in brief, along with a few similar functions that have not been mentioned yet.
For example, in an early version of Emacs, the function definition was as follows. (It is slightly more complex now that it seeks the first non-whitespace character rather than the first visible character.)
(defun back-to-indentation () "Move point to first visible character on line." (interactive) (beginning-of-line 1) (skip-chars-forward " \t"))
Common code characters are:
See Code Characters for ‘interactive’, for a complete list of
letand give them an initial value, either
nilor a specified value; then evaluate the rest of the expressions in the body of the
letand return the value of the last one. Inside the body of the
let, the Lisp interpreter does not see the values of the variables of the same names that are bound outside of the
(let ((foo (buffer-name)) (bar (buffer-size))) (message "This buffer is %s and has %d characters." foo bar))
(message "We are %d characters into this buffer." (- (point) (save-excursion (goto-char (point-min)) (point))))
if special form is called a conditional. There are
other conditionals in Emacs Lisp, but
if is perhaps the most
(if (= 22 emacs-major-version) (message "This is version 22 Emacs") (message "This is not version 22 Emacs"))
<function tests whether its first argument is smaller than its second argument. A corresponding function,
>, tests whether the first argument is greater than the second. Likewise,
<=tests whether the first argument is less than or equal to the second and
>=tests whether the first argument is greater than or equal to the second. In all cases, both arguments must be numbers or markers (markers indicate positions in buffers).
=function tests whether two arguments, both numbers or markers, are equal.
equaluses one meaning of the word `same' and
equalreturns true if the two objects have a similar structure and contents, such as two copies of the same book. On the other hand,
eq, returns true if both arguments are actually the same object.
string-lesspfunction tests whether its first argument is smaller than the second argument. A shorter, alternative name for the same function (a
The arguments to
string-lessp must be strings or symbols; the
ordering is lexicographic, so case is significant. The print names of
symbols are used instead of the symbols themselves.
An empty string, ‘""’, a string with no characters in it, is smaller than any string of characters.
string-equal provides the corresponding test for equality. Its
shorter, alternative name is
string=. There are no string test
functions that correspond to >,
setqfunction sets the value of its first argument to the value of the second argument. The first argument is automatically quoted by
setq. It does the same for succeeding pairs of arguments. Another function,
set, takes only two arguments and evaluates both of them before setting the value returned by its first argument to the value returned by its second argument.
other-bufferas an argument and other than the current buffer).