Emacs provides an extremely comprehensive set of text editing features. These standard features will provide most novice Emacs users with all the editing capability they require. When a new user has had some experience with Emacs, they will often want to change the way that Emacs does certain things, or will want features that are not built in to the standard Emacs. The great thing about Emacs is that you can customise the manner in which standard features function or appear, or you can create new features that do not exist in the standard Emacs.
Simple Emacs extensions can be created using macros. These are key sequences remembered by Emacs which can be replayed at any time during the editing session. These so-called keyboard macros can be saved in a buffer and stored in a file, so you can save macro definitions and reload them in a subsequent editing session. Macros are described in detail in Macros on page 7.
Macros do not provide the generality required to perform complex operations. To create complex Emacs extensions, you must write programs in the Emacs programming language Mock Lisp (MLisp). As the name suggests, MLisp is a dialect of the Lisp programming language. The MLisp language itself is described in detail in Mock Lisp on page 9. Emacs provides a complete MLisp program development environment to aid programmers developing MLisp code. This environment includes debugging, online documentation, database access and process control facilities. These extension facilities are described in detail in Extension Facilities on page 25.
It is also possible for external applications written in other programming languages to make use of Emacs' powerful editing facilities, and for Emacs to execute code in executable images outside Emacs itself. These advanced facilities are described in Programming Emacs From Other Languages on page 35.