Emacs Lisp
The GNU Emacs website is at https://www.gnu.org/software/emacs/.
For information on using Emacs, refer to the Emacs Manual.
To view this manual in other formats, click here.
This is the GNU Emacs Lisp Reference Manual corresponding to Emacs version 30.2.
Copyright © 1990–1996, 1998–2025 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with the Invariant Sections being “GNU General Public License,” with the Front-Cover Texts being “A GNU Manual,” and with the Back-Cover Texts as in (a) below. A copy of the license is included in the section entitled “GNU Free Documentation License.”
(a) The FSF’s Back-Cover Text is: “You have the freedom to copy and modify this GNU manual. Buying copies from the FSF supports it in developing GNU and promoting software freedom.”
Table of Contents
- 2.5.1 Buffer Type
- 2.5.2 Marker Type
- 2.5.3 Window Type
- 2.5.4 Frame Type
- 2.5.5 Terminal Type
- 2.5.6 Window Configuration Type
- 2.5.7 Frame Configuration Type
- 2.5.8 Process Type
- 2.5.9 Thread Type
- 2.5.10 Mutex Type
- 2.5.11 Condition Variable Type
- 2.5.12 Stream Type
- 2.5.13 Keymap Type
- 2.5.14 Overlay Type
- 2.5.15 Font Type
- 2.5.16 Xwidget Type
- 19.1.1 Entering the Debugger on an Error
- 19.1.2 Debugging Redisplay Errors
- 19.1.3 Debugging Infinite Loops
- 19.1.4 Entering the Debugger on a Function Call
- 19.1.5 Entering the debugger when a variable is modified
- 19.1.6 Explicit Entry to the Debugger
- 19.1.7 Using the Debugger
- 19.1.8 Backtraces
- 19.1.9 Debugger Commands
- 19.1.10 Invoking the Debugger
- 19.1.11 Internals of the Debugger
- 22.7.1 Keyboard Events
- 22.7.2 Function Keys
- 22.7.3 Mouse Events
- 22.7.4 Click Events
- 22.7.5 Drag Events
- 22.7.6 Button-Down Events
- 22.7.7 Repeat Events
- 22.7.8 Motion Events
- 22.7.9 Touchscreen Events
- 22.7.10 Focus Events
- 22.7.11 Xwidget events
- 22.7.12 Miscellaneous System Events
- 22.7.13 Event Examples
- 22.7.14 Classifying Events
- 22.7.15 Accessing Mouse Events
- 22.7.16 Accessing Scroll Bar Events
- 22.7.17 Putting Keyboard Events in Strings
- 24.4.1 Mode Line Basics
- 24.4.2 The Data Structure of the Mode Line
- 24.4.3 The Top Level of Mode Line Control
- 24.4.4 Variables Used in the Mode Line
- 24.4.5
%-Constructs in the Mode Line - 24.4.6 Properties in the Mode Line
- 24.4.7 Window Header Lines
- 24.4.8 Window Tab Lines
- 24.4.9 Emulating Mode Line Formatting
24.8 Automatic Indentation of code
24.8.1 Simple Minded Indentation Engine
- 24.8.1.1 SMIE Setup and Features
- 24.8.1.2 Operator Precedence Grammars
- 24.8.1.3 Defining the Grammar of a Language
- 24.8.1.4 Defining Tokens
- 24.8.1.5 Living With a Weak Parser
- 24.8.1.6 Specifying Indentation Rules
- 24.8.1.7 Helper Functions for Indentation Rules
- 24.8.1.8 Sample Indentation Rules
- 24.8.1.9 Customizing Indentation
- 33.19.1 Examining Text Properties
- 33.19.2 Changing Text Properties
- 33.19.3 Text Property Search Functions
- 33.19.4 Properties with Special Meanings
- 33.19.5 Formatted Text Properties
- 33.19.6 Stickiness of Text Properties
- 33.19.7 Lazy Computation of Text Properties
- 33.19.8 Defining Clickable Text
- 33.19.9 Defining and Using Fields
- 33.19.10 Why Text Properties are not Intervals
- 38.1 Tree-sitter Language Grammar
- 38.2 Using Tree-sitter Parser
- 38.3 Retrieving Nodes
- 38.4 Accessing Node Information
- 38.5 Pattern Matching Tree-sitter Nodes
- 38.6 User-defined “Things” and Navigation
- 38.7 Parsing Text in Multiple Languages
- 38.8 Developing major modes with tree-sitter
- 38.9 Tree-sitter C API Correspondence
- 42.12.1 Face Attributes
- 42.12.2 Defining Faces
- 42.12.3 Face Attribute Functions
- 42.12.4 Displaying Faces
- 42.12.5 Face Remapping
- 42.12.6 Functions for Working with Faces
- 42.12.7 Automatic Face Assignment
- 42.12.8 Basic Faces
- 42.12.9 Font Selection
- 42.12.10 Looking Up Fonts
- 42.12.11 Fontsets
- 42.12.12 Low-Level Font Representation
Appendix E GNU Emacs Internals