This manual attempts to be a full description of Emacs Lisp. This manual presumes considerable familiarity with the use of Emacs for editing. Most of the GNU Emacs text editor is written in the programming language called Emacs Lisp. You can write new code in Emacs Lisp and install it as an extension to the editor. However, Emacs Lisp is more than a mere extension language; it is a full computer programming language in its own right. You can use it as you would any other programming language.
Generally speaking, the earlier chapters describe features of Emacs Lisp that have counterparts in many programming languages, and later chapters describe features that are peculiar to Emacs Lisp or relate specically to editing.
This is edition 3.1 of the GNU Emacs Lisp Reference Manual, corresponding to Emacs version 25.2.
This manual is available online for free at gnu.org. This manual is printed in grayscale.