What's in the Emacs newcomers-presets theme?

Lobsters Hottest Tools

Summary

This article details the features and setup of Emacs's new 'newcomers-presets' theme introduced in Emacs 31, aimed at improving the experience for new users with preset configurations.

<p><a href="https://lobste.rs/s/307nji/what_s_emacs_newcomers_presets_theme">Comments</a></p>
Original Article
View Cached Full Text

Cached at: 09/03/26, 10:02 AM

# What's in the Emacs newcomers-presets theme? :: Sacha Chua Source: [https://sachachua.com/blog/2026/04/what-s-in-the-emacs-newcomers-presets-theme/](https://sachachua.com/blog/2026/04/what-s-in-the-emacs-newcomers-presets-theme/) [« YE24: Sacha and Prot Talk Emacs \- Newbies/Starter Kits](https://sachachua.com/blog/2026/04/yay-emacs-sacha-and-prot-talk-emacs-newbies-starter-kits/)[Working on the Emacs newbie experience »](https://sachachua.com/blog/2026/04/working-on-the-emacs-newbie-experience/)Posted:Apr 29, 2026\- Modified:Aug 31, 2026\|[emacs](https://sachachua.com/blog/category/emacs)\[2026\-08\-31 Mon\]: Added Emacs 31 mention\. Changed code sample for`flyspell\-mode`to`flymake\-mode`\. Thanks, jeenajeena\! Emacs 31 \(released Aug 2026\) as well as development versions of Emacs after 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](https://www.gnu.org/software/emacs/tour/)or choose "Help \- Tutorial" from the Emacs menu\.\) [![2026-04-29_14-19-11.png](https://sachachua.com/blog/2026/04/what-s-in-the-emacs-newcomers-presets-theme/2026-04-29_14-19-11.png)](https://sachachua.com/blog/2026/04/what-s-in-the-emacs-newcomers-presets-theme/2026-04-29_14-19-11.png)Figure 1:Newcomer presets are on the splash screenIf you like it and want to make it automatically enabled in future Emacs sessions: 1. Use`M\-x customize\-themes` 2. Select the checkbox next to`newcomer\-presets`by either clicking on it or using TAB to navigate to it and then pressing RET\. 3. Click on or use RET to select**Save Theme Settings**\. [![2026-04-30_09-47-33.png](https://sachachua.com/blog/2026/04/what-s-in-the-emacs-newcomers-presets-theme/2026-04-30_09-47-33.png)](https://sachachua.com/blog/2026/04/what-s-in-the-emacs-newcomers-presets-theme/2026-04-30_09-47-33.png)Figure 2:Saving the theme settingI'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](https://sachachua.com/blog/2026/04/what-s-in-the-emacs-newcomers-presets-theme/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](https://www.emacswiki.org/emacs/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](https://github.com/emacs-mirror/emacs/tree/master/etc/themes/newcomers-presets-theme.el)since\[2026\-04\-30 Thu\]\. ``` ;; -*- lexical-binding: t -*- ;; Based on https://github.com/emacs-mirror/emacs/tree/master/etc/themes/newcomers-presets-theme.el ``` ### [Editing and navigation](https://sachachua.com/blog/2026/04/what-s-in-the-emacs-newcomers-presets-theme/#what-s-in-the-emacs-newcomers-presets-theme-editing-and-navigation) When you select text by pressing`C\-SPC`\(`set\-mark\-command`\) and then moving to the end of the text you want to select, and then you type, the new text replaces the selection\. ``` (setopt delete-selection-mode t) ``` Copying works better when copying between Emacs and other applications Equivalent: ``` (setopt save-interprogram-paste-before-kill t) ``` If you have a compatible spellchecker installed \([Hunspell](https://github.com/hunspell/hunspell),[Aspell](http://aspell.net/),[Ispell](https://www.cs.hmc.edu/~geoff/ispell.html), or[Enchant](https://rrthomas.github.io/enchant/)\), Emacs will check your spelling and underline errors using`flyspell\-mode`\. You can use`M\-x ispell\-change\-dictionary`to change the language if you have the appropriate dictionary installed\. In code buffers, the spelling is checked in comments and strings\. You can also use`flyspell\-goto\-next\-error`\(`C\-,`\) to go to the next misspelled word and`flyspell\-auto\-correct\-word`\(`C\-M\-i`\) to fix it\. More info:[Spelling](https://www.gnu.org/software/emacs/manual/html_node/emacs/Spelling.html)`\(info "\(emacs\) Spelling"\)`\. [![2026-04-30_09-36-20.png](https://sachachua.com/blog/2026/04/what-s-in-the-emacs-newcomers-presets-theme/2026-04-30_09-36-20.png)](https://sachachua.com/blog/2026/04/what-s-in-the-emacs-newcomers-presets-theme/2026-04-30_09-36-20.png)Figure 3:A wavy red underline shows potentially misspelled words; right\-click on them to correct them or add them to the dictionary``` (add-hook 'text-mode-hook 'flyspell-mode) (add-hook 'prog-mode-hook 'flyspell-prog-mode) ``` [Imenu entries](https://www.gnu.org/s/emacs/manual/html_node/emacs/Imenu.html)are automatically updated based on the structure of the current buffer or file \(ex: outline headings, function names\)\. You can list them with`M\-x imenu`or add them to the menu bar with`M\-x imenu\-add\-to\-menubar`\. ``` (setopt imenu-auto-rescan t) ``` When you visit a read\-only file, it will be in view mode, so you can use`SPC`to scroll\. This affects buffers for files that you don't have permission to change as well as buffers that you make read\-only using`C\-x C\-q`\(`read\-only\-mode`\)\. ``` (setopt view-read-only t) ``` ### [Appearance](https://sachachua.com/blog/2026/04/what-s-in-the-emacs-newcomers-presets-theme/#what-s-in-the-emacs-newcomers-presets-theme-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](https://sachachua.com/blog/2026/04/what-s-in-the-emacs-newcomers-presets-theme/#what-s-in-the-emacs-newcomers-presets-theme-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\. 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](https://sachachua.com/blog/2026/04/what-s-in-the-emacs-newcomers-presets-theme/#what-s-in-the-emacs-newcomers-presets-theme-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:`abc`will list`abcde`and`abcxyz`\) - 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 match`apple\-banana`if 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](https://www.gnu.org/software/emacs/manual/html_node/emacs/Completion-Styles.html) ``` (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](https://sachachua.com/blog/2026/04/what-s-in-the-emacs-newcomers-presets-theme/#what-s-in-the-emacs-newcomers-presets-theme-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](https://sachachua.com/blog/2026/04/what-s-in-the-emacs-newcomers-presets-theme/#what-s-in-the-emacs-newcomers-presets-theme-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](https://www.gnu.org/software/emacs/manual/html_node/emacs/Tab-Bars.html)`\(info "\(emacs\) Tab Bars"\)`" [![2026-04-30_09-15-18.png](https://sachachua.com/blog/2026/04/what-s-in-the-emacs-newcomers-presets-theme/2026-04-30_09-15-18.png)](https://sachachua.com/blog/2026/04/what-s-in-the-emacs-newcomers-presets-theme/2026-04-30_09-15-18.png)Figure 4:The tab bar is displayed at the top of a buffer\.The tabs are saved between Emacs sessions\. ``` (setopt tab-bar-history-mode t) ``` ### [The Dired file manager](https://sachachua.com/blog/2026/04/what-s-in-the-emacs-newcomers-presets-theme/#what-s-in-the-emacs-newcomers-presets-theme-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](https://sachachua.com/blog/2026/04/what-s-in-the-emacs-newcomers-presets-theme/#what-s-in-the-emacs-newcomers-presets-theme-package-management) If you open a file for which Emacs has optional packages that provide extra support in[GNU ELPA](https://elpa.gnu.org/)or[NonGNU ELPA](https://elpa.nongnu.org/nongnu/), Emacs will add**\[Upgrade?\]**to the mode line to make it easier to install the appropriate package\. [![2026-04-30_09-06-18.png](https://sachachua.com/blog/2026/04/what-s-in-the-emacs-newcomers-presets-theme/2026-04-30_09-06-18.png)](https://sachachua.com/blog/2026/04/what-s-in-the-emacs-newcomers-presets-theme/2026-04-30_09-06-18.png)Figure 6:Package autosuggest adds an Upgrade? to the modeline when you open a file for which Emacs has an optional package available``` (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](https://sachachua.com/blog/2026/04/what-s-in-the-emacs-newcomers-presets-theme/#what-s-in-the-emacs-newcomers-presets-theme-code) In code buffers, Emacs will display errors and warnings by using`flymake\-mode`\. ``` (add-hook 'prog-mode-hook 'flymake-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](https://editorconfig.org/)\) ``` (setopt editorconfig-mode t) ``` Tags tables are automatically regenerated whenever you save files\. This uses[Etags](https://www.gnu.org/s/emacs/manual/html_node/emacs/Create-Tags-Table.html)to make it easier to jump to the definitions of functions or variables\. ### [Version control](https://sachachua.com/blog/2026/04/what-s-in-the-emacs-newcomers-presets-theme/#what-s-in-the-emacs-newcomers-presets-theme-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](https://sachachua.com/blog/2026/04/what-s-in-the-emacs-newcomers-presets-theme/#what-s-in-the-emacs-newcomers-presets-theme-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) ``` [« YE24: Sacha and Prot Talk Emacs \- Newbies/Starter Kits](https://sachachua.com/blog/2026/04/yay-emacs-sacha-and-prot-talk-emacs-newbies-starter-kits/)[Working on the Emacs newbie experience »](https://sachachua.com/blog/2026/04/working-on-the-emacs-newbie-experience/)

Similar Articles

Emacs 31 Is Around the Corner: The Changes I'm Daily Driving

Hacker News Top

Emacs 31 is approaching with improvements like simpler tree-sitter setup and a built-in markdown-ts-mode. The article details features the author has been using from the development branch, highlighting reduced configuration overhead.

What's new in Emacs 31.1

Hacker News Top

Emacs 31.1 is released with small quality-of-life improvements, including the deprecation of the old unexec/pdumper system and new features like a user Lisp directory and enhanced minibuffer completions.

Changes in Emacs 31 I'm Already Daily Driving

Lobsters Hottest

Emacs 31 introduces tree-sitter improvements that simplify grammar installation and includes a new built-in markdown-ts-mode. The author has been daily driving these changes from the development branch.

Emacs 31.1 released

Lobsters Hottest

Emacs 31.1, the latest version of the extensible text editor, has been released and is available for download from GNU mirrors.