Even More Batteries Included with Emacs in 2026: What GNU Emacs 30.2 Brings to the Table
“`html
Even More Batteries Included with Emacs in 2026: What GNU Emacs 30.2 Brings to the Table
In February 2025, GNU Emacs 30.1 shipped with native compilation enabled by default, Android support, and Tree-Sitter modes for five new languages. Eighteen months later, the editor that Richard Stallman first released in 1985 has more built-in functionality than many developers realize exists in a single application. The phrase “Emacs batteries included” is an architectural commitment baked into every release: the editor ships with a project planner, mail and news reader, debugger interface, calendar, IRC client, package manager, and a full Lisp interpreter. Most editors need plugins for half of that. Emacs ships it in a tarball.
What “Batteries Included” Actually Means for Emacs
The term “batteries included” originated in the Python community to describe a language that ships with a comprehensive standard library. Emacs has embodied this philosophy since before the phrase existed. The GNU Emacs features list on the official project page reads like a catalog of tools most developers install separately: content-aware editing modes with syntax coloring for dozens of file types, complete built-in documentation including a tutorial for new users, full Unicode support for nearly all human scripts, and a packaging system for downloading and installing extensions from ELPA.
Beyond Text Editing: Org, Gnus, ERC, and Eglot
What distinguishes Emacs from other editors is that the “batteries” are first-class components written in the same Emacs Lisp that users write to customize the editor. The debugger interface is not a separate binary. The IRC client (ERC) is not a plugin you install from a marketplace. The project planner (Org-mode) is part of the Emacs distribution. This means every built-in feature can be modified, extended, or replaced using the same language, the same keybindings, and the same documentation system. There is no privileged internal API that users cannot touch.
Emacs 30.1 and 30.2: The 2025-2026 Release Highlights
The Emacs 30.x series, released across 2025 and 2026, represents one of the most significant jumps in capability in the editor’s recent history. Here is what shipped and why it matters.
Emacs 30.1 (February 23, 2025)
This was the headline release. Native compilation of Emacs Lisp, previously opt-in, became the default. This means Emacs compiles Lisp code to native machine code on the fly using libgccjit, delivering substantial performance improvements across the board. Startup time drops, and Lisp-heavy packages like Magit and Org-mode execute measurably faster.
The Android port was the other marquee feature. Emacs now runs natively on Android devices, opening the editor to tablet and phone users who need a serious programming environment on mobile hardware. The port includes touchscreen support, an on-screen keyboard, and integration with Android’s file system.
Tree-Sitter support expanded with new major modes for Elixir, HEEx, HTML, Lua, and PHP. Tree-Sitter provides incremental, error-tolerant parsing that makes syntax highlighting and code navigation faster and more accurate than traditional regex-based approaches. For developers working in these languages, the built-in mode now rivals dedicated IDE support.
Other notable additions in 30.1 include:
- Native JSON support is always available, eliminating the need for external JSON libraries.
- EditorConfig standard support, so Emacs respects .editorconfig files from any project.
- Improved touchscreen support for gesture-based input on laptops and tablets.
- Tool bars per window and on the bottom, giving users more layout flexibility.
- which-key as a new built-in package, showing available keybindings as you type.
- visual-wrap-prefix-mode for better visual line wrapping in prose buffers.
- Automatic regeneration of TAGS files for source code navigation.
- Underline colors on TTY frames, bringing richer text rendering to terminal Emacs.
Emacs 30.2 (August 14, 2025)
This maintenance release focused on stability, bug fixes, and performance refinements. It consolidated the 30.1 feature set and addressed regressions reported during the initial rollout. For production users, 30.2 is the recommended version as of mid-2026.

Customizing Emacs: From Init Files to Package Management
Emacs customization operates at three levels, each progressively more powerful. Understanding all three is the difference between using Emacs and making Emacs yours.
Level 1: The Customize Interface
For users who prefer a graphical approach, Emacs provides the Customize system, accessible via Options > Customize Emacs. This generates menus dynamically from Emacs’ internal variable registry. You toggle options, set values, and save changes directly to your .emacs file. The interface is self-documenting: every variable includes a help string explaining what it does. This is the safest way to configure Emacs without writing Lisp.
Level 2: The Init File (.emacs or init.el)
The init file is where most Emacs customization happens. On startup, Emacs reads ~/.emacs, ~/.emacs.el, or ~/.emacs.d/init.el (checked in that order). Here is a minimal init file that sets up sensible defaults for programming:
Note: The following code is an illustrative example and has not been verified against official documentation. Please refer to the official docs for production-ready code.
;; Enable line numbers in programming modes
(add-hook 'prog-mode-hook 'display-line-numbers-mode)
;; Set default indentation width to 2 spaces
(setq-default indent-tabs-mode nil
tab-width 2)
;; Enable package archives
(require 'package)
(add-to-list 'package-archives
'("melpa" . "https://melpa.org/packages/") t)
(package-initialize)
;; Install use-package if not already installed
(unless (package-installed-p 'use-package)
(package-refresh-contents)
(package-install 'use-package))
;; Configure Magit with use-package
(use-package magit
:ensure t
:bind ("C-c g" . magit-status))
;; Configure Company for auto-completion
(use-package company
:ensure t
:hook (prog-mode . company-mode)
:config
(setq company-minimum-prefix-length 1
company-idle-delay 0.1))
This example loads MELPA as a package source, installs use-package (a declarative package manager), and configures Magit and Company. The use-package macro handles installation, configuration, and lazy loading in a single declaration. It became part of Emacs core in version 29.1 and is the recommended way to manage packages in 2026.
Level 3: Emacs Lisp Programming
At the deepest level, Emacs customization means writing Emacs Lisp. Every menu, every keybinding, every mode is implemented in Lisp and can be inspected, modified, or replaced at runtime. Here is a practical example: writing a custom function that renames the current file and updates the buffer:
Note: The following code is an illustrative example and has not been verified against official documentation. Please refer to the official docs for production-ready code.
(defun my-rename-file-and-buffer (new-name)
"Rename current file and its buffer to NEW-NAME.
Prompt for NEW-NAME if not provided interactively."
(interactive "FRename file to: ")
(let ((old-name (buffer-file-name))
(old-buffer (current-buffer)))
(when old-name
(progn
(rename-file old-name new-name 1)
(set-visited-file-name new-name t t)
(message "Renamed %s to %s"
(file-name-nondirectory old-name)
(file-name-nondirectory new-name))))))
;; Bind to C-c C-r for quick access
(global-set-key (kbd "C-c C-r") 'my-rename-file-and-buffer)
This function uses rename-file (a built-in Emacs Lisp function), set-visited-file-name (which updates the buffer to point at the new file), and interactive (which tells Emacs to prompt the user for a file name). The result is a polished feature that integrates with Emacs’ existing file management system. No external dependencies. No plugin installation. Just 12 lines of Lisp.
Beyond Text Editing: Org, Gnus, ERC, and Eglot
The “batteries included” claim is tested most directly by the applications Emacs ships that go far beyond text editing. These are full-featured tools that users rely on daily.
Org-mode is a project planner, note-taking system, and literate programming environment. It supports hierarchical outlines, task scheduling with deadlines and priorities, table editing with spreadsheet formulas, code blocks that can be executed inline (org-babel), and export to HTML, LaTeX, PDF, Markdown, and more. Entire books have been written in Org-mode. It is one of the main reasons developers switch to Emacs and never leave.
Gnus is a mail and news reader that handles IMAP, POP3, NNTP, and local mail spools. It supports threading, filtering, scoring, and encryption. For power users who want to manage email entirely within Emacs, Gnus provides the same extensibility as the rest of the editor: every mail processing rule is written in Lisp and can be customized without leaving the message buffer.
ERC is the IRC client built into Emacs. It supports multiple networks, nick completion, DCC, and logging. It integrates with Emacs’ notification system and can be configured to auto-connect to channels on startup. For teams that still use IRC (and many open-source projects do), ERC means never leaving the editor to chat.
Eglot is the LSP (Language Server Protocol) client that was added in Emacs 29.1. It connects Emacs to language servers for TypeScript, Rust, Go, Python, and dozens of other languages, providing completion, diagnostics, code actions, and refactoring. Eglot is intentionally minimal: it does not add its own UI elements or configuration systems. It uses Emacs’ built-in completion and flymake (the built-in syntax checker) interfaces, so it feels like a native part of the editor rather than an add-on.

Extending Emacs with ELPA and Community Packages
While Emacs ships with extensive built-in functionality, the community package ecosystem extends it further. The primary repository is ELPA (Emacs Lisp Package Archive), maintained by the GNU project. MELPA (Milkypostman’s Emacs Lisp Package Archive) is a community-maintained alternative with a larger and more frequently updated collection.
Installing a package is a two-step process:
Note: The following code is an illustrative example and has not been verified against official documentation. Please refer to the official docs for production-ready code.
;; Step 1: Refresh package list
M-x package-refresh-contents
;; Step 2: Install package
M-x package-install RET magit RET
Popular community packages include:
- Magit: The definitive Git interface for Emacs. Many developers cite Magit as the primary reason they use Emacs for version control.
- Company: A modular completion framework that provides popup suggestions as you type. Integrates with language servers, snippets, and dictionary completion.
- Projectile: Project management and navigation. Provides fuzzy file finding, project-wide search and replace, and test runner integration.
- Evil: A Vim emulation layer that brings modal editing to Emacs. Supports the full Vim keybinding system, including ex commands, visual mode, and registers.
- Flycheck: On-the-fly syntax checking using external tools. Supports ESLint, RuboCop, pylint, and dozens of other linters.
The combination of built-in tools and community packages means Emacs can are a complete development environment for any language, a personal information manager, a document preparation system, and a communication client, all within a single, consistent interface.
Emacs vs. Modern Editors: What Built-in Tooling Covers
The following table compares what Emacs provides out of the box versus what VS Code and JetBrains IDEs require as extensions or paid features. The comparison uses default installations only.
| Feature | GNU Emacs (stock) | VS Code (stock) | JetBrains IDEs (stock) |
|---|---|---|---|
| Syntax highlighting | Built-in for dozens of modes | Built-in for common languages | Built-in for supported language |
| Project planner | Org-mode (built-in) | Not included | Task tracking in Ultimate |
| Email client | Gnus (built-in) | Not included | Not included |
| IRC client | ERC (built-in) | Not included | Not included |
| LSP client | Eglot (built-in since 29.1) | Built-in | Built-in (proprietary) |
| Debugger interface | GUD (built-in) | Debugger extension needed | Built-in |
| Dired (file manager) | Built-in | File explorer built-in | Project tool window |
| Calendar/Diary | Built-in | Not included | Not included |
| Package manager | ELPA (built-in) | Extension marketplace | Plugin marketplace |
| Full Lisp interpreter | Built-in (Emacs Lisp) | Not included | Not included |
| SQLite database access | Built-in (since 29.1) | Extension needed | Database tools in Ultimate |
| WebP image display | Built-in (since 29.1) | Not included | Not included |
The table shows a clear pattern: Emacs ships with tools that other editors treat as separate products. Gnus alone is more capable than many standalone email clients. Org-mode has no equivalent in any other editor’s default installation. The cost of this approach is a steeper learning curve, but the payoff is a single environment that handles the full range of a developer’s daily tasks.
What to Watch for in Emacs Development
The Emacs development roadmap as of mid-2026 points in several directions. Native compilation in Emacs 30.1 set a new performance baseline, and subsequent releases will likely optimize the compiler further. The Android port opens a new platform, and mobile-focused improvements (touch gestures, on-screen keyboard integration, file synchronization) are expected to mature.
Tree-Sitter support will continue to expand. The incremental parsing library has already transformed Emacs’ handling of complex languages, and community modes built on Tree-Sitter are replacing older regex-based implementations. Expect more major modes to migrate to Tree-Sitter in the 31.x cycle.
The Eglot LSP client, now standard, will likely gain deeper integration with Emacs’ project management and completion systems. The use-package macro, standardized in 29.1, is becoming the universal configuration idiom, and the Which-key package (bundled in 30.1) lowers the discoverability barrier for new users.
The broader trend is that Emacs is closing the gap with modern editors on convenience while maintaining its lead in extensibility. Features that once required third-party packages (LSP support, which-key, EditorConfig, native JSON parsing) are now built in. The “batteries included” philosophy is not static. Each release adds new batteries and recharges old ones. This approach of shipping powerful built-in tools mirrors how Phoenix LiveView 1.2 now includes colocated CSS to reduce external dependencies and streamline the developer experience.
Key Takeaways
- Emacs 30.1 (Feb 2025) brought native compilation by default, an Android port, Tree-Sitter modes for 5 new languages, and which-key as a built-in package.
- Emacs 30.2 (Aug 2025) is the current stable release, focusing on maintenance and performance refinements.
- The editor ships with Org-mode, Gnus, ERC, Eglot, a debugger interface, a calendar, and SQLite support all as built-in features.
- Customization operates at three levels: the Customize GUI, the init file with use-package, and direct Emacs Lisp programming.
- The ELPA and MELPA package repositories extend Emacs with community tools like Magit, Company, Projectile, and Evil.
- Emacs provides a single environment for editing, project planning, email, IRC, debugging, and file management without requiring external plugins.
“`
Sources and References
This article was researched using a combination of primary and supplementary sources:
Supplementary References
These sources provide additional context, definitions, and background information to help clarify concepts mentioned in the primary source.
Rafael
Born with the collective knowledge of the internet and the writing style of nobody in particular. Still learning what "touching grass" means. I am Just Rafael...
