The Emacs Editor
Emacs is the advanced, extensible, customizable, self-documenting editor. This manual describes how to edit with Emacs and some of the ways to customize it; it corresponds to GNU Emacs version 30.2.
The GNU Emacs website is at https://www.gnu.org/software/emacs/.
To view this manual in other formats, click here.
You can also purchase a printed copy from the FSF store.
For information on extending Emacs, see Emacs Lisp in The Emacs Lisp Reference Manual.
This is the GNU Emacs Manual, updated for Emacs version 30.2.
Copyright © 1985–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 “The GNU Manifesto,” “Distribution” and “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
23 Frames and Graphical Displays
- 23.1 Mouse Commands for Editing
- 23.2 Mouse Commands for Words and Lines
- 23.3 Following References with the Mouse
- 23.4 Mouse Clicks for Menus
- 23.5 Mode Line Mouse Commands
- 23.6 Creating Frames
- 23.7 Frame Commands
- 23.8 Fonts
- 23.9 Speedbar Frames
- 23.10 Multiple Displays
- 23.11 Frame Parameters
- 23.12 Scroll Bars
- 23.13 Window Dividers
- 23.14 Drag and Drop
- 23.15 Menu Bars
- 23.16 Tool Bars
- 23.17 Tab Bars
- 23.18 Using Dialog Boxes
- 23.19 Tooltips
- 23.20 Mouse Avoidance
- 23.21 Text Terminals
- 23.22 Using a Mouse in Text Terminals
24 International Character Set Support
- 24.1 Introduction to International Character Sets
- 24.2 Language Environments
- 24.3 Input Methods
- 24.4 Selecting an Input Method
- 24.5 Coding Systems
- 24.6 Recognizing Coding Systems
- 24.7 Specifying a File’s Coding System
- 24.8 Choosing Coding Systems for Output
- 24.9 Specifying a Coding System for File Text
- 24.10 Coding Systems for Interprocess Communication
- 24.11 Coding Systems for File Names
- 24.12 Coding Systems for X Keyboard Input
- 24.13 Coding Systems for Terminal I/O
- 24.14 Fontsets
- 24.15 Defining Fontsets
- 24.16 Modifying Fontsets
- 24.17 Undisplayable Characters
- 24.18 Unibyte Editing Mode
- 24.19 Charsets
- 24.20 Bidirectional Editing
27 Commands for Human Languages
30.1.1 Introduction to Version Control
- 30.1.1.1 Understanding the Problems it Addresses
- 30.1.1.2 Supported Version Control Systems
- 30.1.1.3 Concepts of Version Control
- 30.1.1.4 Merge-based vs Lock-based Version Control
- 30.1.1.5 Changeset-based vs File-based Version Control
- 30.1.1.6 Decentralized vs Centralized Repositories
- 30.1.1.7 Types of Log File
30.4 Find Identifier References
32 Dired, the Directory Editor
- 32.1 Entering Dired
- 32.2 Navigation in the Dired Buffer
- 32.3 Deleting Files with Dired
- 32.4 Flagging Many Files at Once
- 32.5 Visiting Files in Dired
- 32.6 Dired Marks vs. Flags
- 32.7 Operating on Files
- 32.8 Shell Commands in Dired
- 32.9 Shell Command Guessing
- 32.10 Transforming File Names in Dired
- 32.11 File Comparison with Dired
- 32.12 Subdirectories in Dired
- 32.13 Subdirectory Switches in Dired
- 32.14 Moving Over Subdirectories
- 32.15 Hiding Subdirectories
- 32.16 Updating the Dired Buffer
- 32.17 Dired and
find - 32.18 Editing the Dired Buffer
- 32.19 Viewing Image Thumbnails in Dired
- 32.20 Other Dired Features
33.13 More advanced features of the Calendar and Diary
- 33.13.1 Customizing the Calendar
- 33.13.2 Customizing the Holidays
- 33.13.3 Converting from the Mayan Calendar
- 33.13.4 Date Display Format
- 33.13.5 Time Display Format
- 33.13.6 Customizing the Diary
- 33.13.7 Diary Entries Using non-Gregorian Calendars
- 33.13.8 Diary Display
- 33.13.9 Fancy Diary Display
- 33.13.10 Sexp Entries and the Fancy Diary Display
40 Running Shell Commands from Emacs
- 51.3.1 Keymaps
- 51.3.2 Prefix Keymaps
- 51.3.3 Local Keymaps
- 51.3.4 Minibuffer Keymaps
- 51.3.5 Changing Key Bindings Interactively
- 51.3.6 Rebinding Keys in Your Init File
- 51.3.7 Modifier Keys
- 51.3.8 Rebinding Function Keys
- 51.3.9 Named ASCII Control Characters
- 51.3.10 Rebinding Mouse Buttons
- 51.3.11 Disabling Commands
Appendix C Command Line Arguments for Emacs Invocation
- H.1 Android History
- H.2 Starting Emacs on Android
- H.3 What Files Emacs Can Access on Android
- H.4 Accessing Files from Other Programs on Android
- H.5 Running Emacs under Android
- H.6 The Android Window System
- H.7 Font Backends and Selection under Android
- H.8 Troubleshooting Startup Problems on Android
- H.9 Installing Extra Software on Android