- Webrender support (experimental).
- SVG rendering not supported yet.
- xwidget not surpport yet.
- Self-contained Emacs.app application bundle, with no external dependencies.
- Javascript support (coming soon).
- Native compilation (gccemacs), only in Emacs 28.x and later builds.
- Native JSON parsing via libjansson.
- SVG rendering via librsvg.
- Various image formats are supported via macOS native image APIs.
- Xwidget-webkit support is enabled without Webrender, allowing access to a embedded WebKit-based browser with
M-x xwidget-webkit-browse-url
. - Native XML parsing via libxml2.
- Dynamic module loading.
- Includes the fix-window-role, system-appearance, and round-undecorated-frame patches from the excellent emacs-plus project.
- Emacs source is fetched from the emacs-mirror/emacs GitHub repository.
- Build creation is transparent and public through the use of GitHub Actions, allowing anyone to inspect git commit SHAs, full source code, and exact commands used to produce a build.
- Emacs.app is signed with a developer certificate and notarized by Apple.
- Uses build-emacsng-for-macos to build the self-contained application bundle.
- macOS 11.x (Big Sur) or later (uses Rosetta2 on Apple Silicon machines).
- Xcode Command Line Tools for native compilation (Emacs 28.x and later).
See the Releases page to download latest builds, or here for the latest stable release.
The cask installation method sets up CLI usage automatically by exposing a emacs
command. However it will launch Emacs into GUI mode. To instead have emacs
in your terminal open a terminal instance of Emacs, add the following alias to your shell setup:
alias emacs="emacs -nw"
Builds come with a custom emacs
shell script launcher for use from the command line, located next to emacsclient
in Emacs.app/Contents/MacOS/bin
.
The custom emacs
script makes sure to use the main Emacs.app/Contents/MacOS/Emacs
executable from the correct path, ensuring it finds all the relevant dependencies within the Emacs.app bundle, regardless of if it’s exposed via PATH
or symlinked from elsewhere.
To use it, simply add Emacs.app/Contents/MacOS/bin
to your PATH
. For example, if you place Emacs.app in /Applications
:
if [ -d "/Applications/Emacs.app/Contents/MacOS/bin" ]; then
export PATH="/Applications/Emacs.app/Contents/MacOS/bin:$PATH"
alias emacs="emacs -nw" # Always launch "emacs" in terminal mode.
fi
If you want emacs
in your terminal to launch a GUI instance of Emacs, don’t use the alias from the above example.
Building Emacs is done using the emacs-ng/build-emacsng-for-macos build script, executed within a GitHub Actions workflow. This is why macOS 11.x (Big Sur) or later is required, as it’s the oldest version of macOS available in GitHub Actions.
Full history for all builds is available on GitHub Actions here. Build logs are only retained by GitHub for 90 days though.
Builds are scheduled for 0:00 UTC every night, based on the latest commit from the master
branch of the emacs-ng/emacs-ng repository. This means a nightly build will only be produced if there have been new commits since the last nightly build.
Please see Issues for details of things to come, or to report issues.