What's in the Emacs newcomers-presets theme?
| emacs
The development version of Emacs as of Feb 2026 includes a newcomers-presets theme that can be enabled from the splash screen or by using M-x load-theme RET newcomers-presets RET. (Not sure how to run that command? Start with the guided tour/tutorial or choose "Help - Tutorial" from the Emacs menu.)
If you like it and want to make it automatically enabled in future Emacs sessions:
- Use
M-x customize-themes - Select the checkbox next to
newcomer-presetsby either clicking on it or using TAB to navigate to it and then pressing RET. - Click on or use RET to select Save Theme Settings.
I'm not sure if someone else has made notes on what it does yet, so I thought I'd put this together.
Most Emacs newbies aren't running the development version of Emacs at the moment, but it will eventually make its way into Emacs 31. I wonder if it might be a good idea to extract the theme as a package that people can use use-package on if they want. I am not entirely sure about using themes for this, but it's worth an experiment.
Here's a list of what newcomers-presets includes. I'll also include the corresponding Emacs Lisp in case you want to copy just that part, or you can also get it as copy-of-newcomers-presets.el. If you want to load it in your existing Emacs, you can add (load-file "path/to/copy-of-newcomers-presets.el") to your InitFile. You can use C-h f (describe-function) or C-h v (describe-variable) to learn more about the functions or variables it changes. I'm manually making this page, so there might have been some changes to etc/themes/newcomers-presets-theme.el since .
;; -*- lexical-binding: t -*-
;; Based on https://github.com/emacs-mirror/emacs/tree/master/etc/themes/newcomers-presets-theme.el
Keyboard shortcuts
Some commands allow you to use just the last part of the keyboard shortcut in order to repeat them. Related: Repeat Mode: Stop Repeating Yourself | Emacs Redux
(setopt repeat-mode t)
Appearance
Scrolling happens more smoothly instead of jumping by character.
(setq pixel-scroll-mode t)
Line numbers are shown in both text and code buffers.
(add-hook 'prog-mode-hook 'display-line-numbers-mode)
(add-hook 'text-mode-hook 'display-line-numbers-mode)
Column numbers are shown in the mode line.
(setopt column-number-mode t)
If you change your system-wide fixed-width font, Emacs will also update. the system-defined font dynamically.
(setopt font-use-system-font t)
You can resize your frames or windows to any size instead of being limited to whole-character steps.
(setopt frame-resize-pixelwise t)
(setopt window-resize-pixelwise t)
The frame size will stay the same even if you change the font, menu bar, tool bar, tab bar, internal borders, fringes, or scroll bars.
(setopt frame-inhibit-implied-resize t)
If a mode line is wider than the currently selected window, it is compressed by replacing repeating spaces with a single space.
(setopt mode-line-compact 'long)
Saving data between sessions
Minibuffer history is saved between Emacs sessions so you can use M-x and then use
M-p and M-n to navigate your history.
(setopt savehist-mode t)
Your place in a file is saved between Emacs sessions.
(setopt save-place-mode t)
Your recently-opened files are saved between Emacs sessions, so you can use M-x find-file and other commands and then use
M-p and M-n to navigate your history.
Completion
This set of options affects the completion candidates (the suggestions that appear when you press M-x and then TAB, or when you use TAB at other prompts).
You can use the arrow keys to select completion candidates in the minibuffer, and you can use RET to select the highlighted one.
(setopt minibuffer-visible-completions t)
Additional details for completion suggestions are shown before or after the suggestions. For example, M-x describe-symbol (C-h o) shows additional information.
(setopt completions-detailed t)
Completion candidates can be grouped together if the function that sets up the completion specifies it.
(setopt completions-group t)
When you press TAB to see the completion candidates for a prompt (for example, M-x and then TAB), the first TAB will display the completion list, and the second TAB will select the buffer.
(setopt completion-auto-select 'second-tab)
This Completions buffer will update as you type so that you can narrow down the candidates.
(setopt completion-eager-update t)
The following completion styles are set up:
- basic: You can type the start of a candidate. (ex:
abcwill listabcdeandabcxyz) - partial-completion: You can specify multiple words and each word will be considered as the prefix for matching candidates. For example, if you type
a-b, that will matchapple-bananaif it is one of the options. - emacs22: When you move your point to the middle of some text and then complete, the text before your point is used to filter the completion and the text after your point is added to the end of the result.
More info: Completion styles
(setopt completion-styles '(basic emacs22 flex))
Automatically show the completion preview based on the text at point. TAB accepts the completion suggestion and M-i completes the longest common prefix.
(setopt global-completion-preview-mode t)
TAB first tries to indent the current line. If the line
was already indented, then Emacs tries to complete the thing at point.
Some programming language modes have their own variable to control this,
e.g., c-tab-always-indent, so it might need additional customization.
(setopt tab-always-indent 'complete)
Help
If you pause after typing the first part of a keyboard shortcut (ex: C-c), Emacs will display the keyboard shortcuts that you can continue with.
(setopt which-key-mode t)
Tab bar
The tab bar is always shown. Tabs let you save the way you have one or more windows arranged, and which buffers are displayed in those windows. You can click on a tab or use M-x tab-switch to switch to that configuration, or click on the + sign or use M-x tab-new to add another tab. More info: Tab Bars (info "(emacs) Tab Bars")"
(setopt tab-bar-show 0)
The tabs are saved between Emacs sessions.
(setopt tab-bar-history-mode t)
The Dired file manager
Dired buffers are refreshed whenever you revisit a directory.
(setopt dired-auto-revert-buffer t)
You can use the mouse to drag files in Dired. Ctrl+leftdrag copies the file, Shift+leftdrag moves it, Meta+leftdrag links it. You can also drag the to other applications on X11, Haiku, Mac OS, and GNUstep.
(setopt dired-mouse-drag-files t)
Show the current directory when prompting for a shell command.
This affects shell-command and async-shell-command.
(setopt shell-command-prompt-show-cwd t)
Package management
If you open a file for which Emacs has optional packages that provide extra support in GNU ELPA or NonGNU ELPA, Emacs will add [Upgrade?] to the mode line to make it easier to install the appropriate package.
(setopt package-autosuggest-mode t)
When you're working with M-x list-packages, x (M-x package-menu-execute) now requires you to select something instead of acting the current package by default. Press i (package-menu-mark-install) to mark a package for installation, press d (package-menu-mark-delete) to mark a package for deletion, press u (package-menu-mark-unmark) to unmark a package, and press x (package-menu-execute) to execute the operations.
(setopt package-menu-use-current-if-no-marks nil)
Code
In code buffers, Emacs will display errors and warnings by using flymake-mode.
(add-hook 'prog-mode-hook 'flyspell-mode)
If you use M-x compile, the *compilation* window will scroll as new output appears, but it will stop at the first error so that you can investigate more easily.
(setopt compilation-scroll-output 'first-error)
You can Ctrl+leftclick on a function name to jump to its definition using xref-find-definitions-at-mouse.
(setopt global-xref-mouse-mode t)
Emacs will automatically insert matching parentheses, brackets, and braces.
(setopt electric-pair-mode t)
Emacs will generally use spaces instead of tabs when indenting code.
(setopt indent-tabs-mode nil)
If there is a project-specific .editorconfig file, Emacs will follow those settings. (More about EditorConfig)
(setopt editorconfig-mode t)
Tags tables are automatically regenerated whenever you save files. This uses Etags to make it easier to jump to the definitions of functions or variables.
Version control
(setopt etags-regen-mode t)
Files are reloaded from disk if they have been updated by your version control system.
(setopt vc-auto-revert-mode t)
If a directory has changed in version control but you have some modified files, Emacs will ask if you want to save those changed files.
(setopt vc-dir-save-some-buffers-on-revert t)
If you use vc-find-revision to go to a specific version of the file, it is displayed in a temporary buffer and does not replace the copy that you currently have.
(setopt vc-find-revision-no-save t)
If you open a symbolic link to a file under version control, Emacs will open the real file and display a message. That way, it will still be version-controlled.
(setopt vc-follow-symlinks t)
C-x v I and C-x v O now have additional keyboard shortcuts. For example, C-x v I L is vc-root-log-incoming and C-x v O L is vc-root-log-outgoing. Use C-x v I C-h and C-x v O C-h to see other commands.
(setopt vc-use-incoming-outgoing-prefixes t)
The version control system is automatically determined for all buffers. (Standard Emacs just checks it in dired, shell, eshell, or compilation-mode buffers.)
(setopt vc-deduce-backend-nonvc-modes t)
Things I haven't been able to figure out yet
On Linux with X11, Haiku, or macOS / GNUstep: When a buffer has an associated filename, you can drag the filename from the modeline and drop it into other programs. (Haven't been able to get this working.)
(setopt mouse-drag-mode-line-buffer t)

