- Add
cmake-modepackage toprelude-c. - Set
c-ts-mode-indent-styletok&rso tree-sitter C/C++ modes match the classic cc-mode indentation style. - Add
auto-mode-alistentries for Eask and Eldev build tool files inprelude-emacs-lisp. - Add Super-based (
s-) keybindings on macOS for smartparens structural editing commands (splice, slurp, barf, splice-killing).
- Switch smartparens from paredit to default keybinding set. This frees
M-s(wassp-splice-sexp, shadowedsearch-map) andM-?(wassp-convolute-sexp, shadowedxref-find-references). Splice is now onM-D, convolute is unbound, splice-killing moves toC-M-<backspace>/C-M-<delete>. - Convert all language modules to
use-package: C, Clojure, Common Lisp, CSS, Dart, Elixir, Erlang, Emacs Lisp, F#, Go, Haskell, LaTeX, Lua, OCaml, Racket, Ruby, Rust, Scala, Scheme, SCSS, Web, YAML. - Remove
prelude-coffeemodule (CoffeeScript is no longer actively developed). The module file is kept as a deprecation stub so existing configs don't break. - Remove
duneandutoppackages fromprelude-ocaml(both are provided byneocamlout of the box). - Load
ocaml-eglotinprelude-ocamlonly whenprelude-lsp-clientis set toeglot. - Default to SBCL on all platforms in
prelude-common-lisp(was Clozure CL on macOS). - Disable
slime-enable-evaluate-in-emacsby default inprelude-common-lisp(security risk). - Add missing
prelude-lsp-enablecall inprelude-fsharp. - Guard
eglot-fsharpbehindprelude-lsp-clientcheck inprelude-fsharp. - Use
major-mode-remap-alistinstead ofdefaliasfor cperl-mode inprelude-perl. - Remove
C-c C-lbinding fromprelude-lua(conflicts with Eglot prefix). - Load
company-auctexonly when company is present inprelude-latex. - Move Makefile configuration from
prelude-ctoprelude-programming(benefits all programming modules). - Install
dart-modeexplicitly inprelude-dartinstead of relying on auto-install.
- #1400: Fix
M-s(search-map) andM-?(xref-find-references) being shadowed by smartparens paredit keybindings.
- Prelude now requires Emacs 29.1 or newer. This unlocks built-in tree-sitter, Eglot,
use-package, and many other modern Emacs features. - Add
prelude-lsp-clientuser option to switch between Eglot (default, built-in) and lsp-mode as the LSP client. All language modules use the configured client automatically. - Add tree-sitter support for C/C++, Go, Python, JavaScript, TypeScript (including TSX), Ruby, Elixir, Shell, YAML, and CSS. Tree-sitter modes are used automatically when the grammar is available, with graceful fallback to legacy modes.
- Add
prelude-treesit-remaphelper to safely remap modes to their tree-sitter equivalents, with proper guards for grammar availability. - Add LSP support to Python, JavaScript, TypeScript, C/C++, Ruby, Elixir, Haskell, Lua, and Erlang modules.
- Add Eglot keybindings under
C-c C-lprefix (rename, code actions, format, organize imports), consistent with lsp-mode bindings. - Add
prelude-verticomodule. Vertico is a simpler alternative toivy-modeand supersedes Selectrum. - Add
marginaliatoprelude-verticofor rich annotations in the minibuffer. - Add a Racket module.
- Add a Lua module.
- Add a F# module.
- Add a module to enable Literate Programming (
prelude-literal-programming.el). - PR 1432: Allow directories of custom Emacs Lisp files in
personal/preload. - Add
prelude-projectileuser option, allowing Projectile integration to be disabled. - Add
prelude-hippie-expanduser option, allowing hippie-expand support to be disabled. - #1421: Make it possible to configure the TypeScript format action using
prelude-ts-format-action. - #1354: Remove default
C--andC-+keybindings to increase/decrease the font size. - Enable
pixel-scroll-precision-modefor smooth scrolling on graphical displays. - Enable
isearch-lazy-countfor showing match counts during search and query-replace. - Enable
org-habits. - Add
org-capturebinding (C-c c) and enableorg-indent-modeby default. - Neatly track
TODOstate changes in a drawer (LOGBOOK), thereby improving readability. - Enable
subword-modein C, Dart, F#, LaTeX, OCaml, and Perl modules for better CamelCase navigation. - Add indentation defaults and modern template file extensions (
.vue,.svelte,.astro, etc.) toprelude-web. - Auto-install
racket-modeif needed.
- Modernize
prelude-ocamlto useneocaml(tree-sitter),eglot, andocaml-eglotinstead oftuareg,merlin, andflycheck-ocaml. - Modernize
prelude-pythonto use LSP instead ofanaconda-mode. - Modernize
prelude-jsto usejs-ts-modeand LSP instead ofjs2-mode. - Modernize
prelude-tsto usetypescript-ts-modeand LSP instead oftide. - Rename
prelude-lspmodule toprelude-lsp-modefor clarity. It is now loaded on demand only whenprelude-lsp-clientis set tolsp-mode. - Remove
prelude-selectrummodule (Selectrum is unmaintained, use Vertico instead). - Remove
nlinumpackage in favor of built-indisplay-line-numbers-mode. - Remove
anzupackage in favor of built-inisearch-lazy-count. - Remove
eplpackage in favor of built-inpackage-upgrade-all/package-upgrade. - Remove
alchemistfromprelude-elixir(unmaintained since 2018). - Remove
go-projectilefromprelude-go(unmaintained). - Replace
defadvicewith moderndefine-advice/advice-addthroughout. - Replace deprecated
point-at-eolwithline-end-positioninprelude-evil. - Replace deprecated
linum-modeex command withdisplay-line-numbers-modeinprelude-evil. - Remove obsolete magit keymaps from
prelude-evil(magit-commit-mode-map,magit-branch-manager-mode-map). - Switch SLIME completion from
slime-fuzzytoslime-flexinprelude-common-lisp. - Use
use-short-answersinstead offsethack for y/n prompts. - Use built-in
ansi-color-compilation-filterfor compilation buffer colorization. - Use built-in
use-package(no longer installed as a package). - Use
use-packageto defer loading of interactive packages, improving startup time. - Remove redundant
requirecalls to improve startup time. - Remove
C-x pbinding toproced(conflicts with built-inproject.elprefix). - Bind
C-x C-mtoexecute-extended-commandinstead ofsmex. - Remove redundant addition to
auto-mode-alistfor Markdown (note: this reverts the default tomarkdown-modeinstead ofgfm-mode). - Bind all essential
avycommands to their recommended keybindings. - Remove
company-lsp. - Replace
yank-popkey-binding tocounsel-yank-popforivy-mode. - Replace prelude-go backend with
lspinstead of unmaintained tools. - Restore format-on-save for Go via
gofmt-before-save. - Use
rust-analyzeras language server for prelude-rust and provide nicer syntax highlighting withtree-sitter. - Add
prelude-undo-treecustom variable: allows user disable undo-tree integration. Enabled by default to maintain backward-compatibility. - Disable ERC module by default and remove Freenode reference.
- Use HTTPS for MELPA on all platforms.
- Guard
set-fontset-fontwithdisplay-graphic-pto avoid errors in terminal Emacs. - Switch docs theme from ReadTheDocs to Material for MkDocs.
- CI now tests on multiple Emacs versions (29.x, 30.x).
- Fix hook variable name mismatch in
prelude-fsharp(prelude-sharp-mode-hook→prelude-fsharp-mode-hook). - Fix duplicate
zloginentry and wrong comment inprelude-shell. - Fix wrong header comment in
prelude-ocaml(said "Perl"). - Fix spurious
(interactive)inprelude-ts-mode-defaults. - Fix duplicate
auto-mode-alistentries inprelude-racket. - #1445: Fix
prelude-rustfailing to load due to tree-sitter dependency issue. - Fix wrong hook name in
prelude-rust. - PR 1433: Remove a duplicate
whencall inmodules/prelude-helm-everywhere.elcausing an emacs init error whenprelude-helm-everywhereis enabled. - Fix
companystill being visible in the mode line. - #1335: Workaround
for
which-keybug causing display issues in clients toemacs --daemon. - Fix Edit on GitHub link in ReadTheDocs site.
- Fix fall back to sample
prelude-modules.elnot working if user has installed to non-default location. - Stop requiring
helm-configsince upstream has removed the module. - Turn off
super-saveinrust-modeto prevent severe hangs during autocomplete. - Update
prelude-dart.elto uselsp-dart-dap-setupinstead of deprecateddap-dart-setupfunction. - Fix stale references and broken config across modules.
- Enable
nlinum-modeordisplay-line-numbers-modeby default. Can be disabled by settingprelude-minimalistic-uitot. - Enable site-wide installation for Prelude.
- Auto-installs
julia-modeif needed. - Auto-install
adoc-modefor AsciiDoc files. - Add the
agpackage. It provides a nice alternative togrepand has nice Projectile integration. - Added additional configuration modules for WSL (
prelude-wsl) and Windows (prelude-windows). - Add
prelude-selectrummodule. Selectrum a simpler alternative toivy-mode.
- #1292: Add
prelude-python-mode-set-encoding-automaticallydefcustom innprelude-python.elmodule with nil default value. - #1278: Don't disable
menu-bar-modeunlessprelude-minimalistic-uiis enabled. - #1277: Make it possible to disable the creation of
Super-based keybindings viaprelude-super-keybindings. - Removed deprecated alias
prelude-ensure-module-deps. - Remove
prelude-fullscreen, as these days people can usetoggle-frame-fullscreeninstead. (it was introduced in Emacs 24.4) - Removed
beacon-mode. - Added
transient/to.gitignore. - Fallback to
sample/prelude-modules.elin the absence of aprelude-modules.elin one's personal folder. - [Ruby] Don't auto-insert coding comments.
- Hide (via
diminish)editorconfig-mode,super-save,company,abbrevandivyin the modeline. - Use
lsp-workspace-restartfunction instead of deprecatedlsp-restart-workspace. - Bind all online search commands under
C-c C-/to avoid a conflict withcounsel-gitormagit-file-dispatch. - Bound
magit-file-modetoC-c g(it's also bound toC-c M-gif you decide to utilize this keybinding for something else. - Added
.cache/andlsp-session*to.gitignore. These are generated bylsp.
- #1445: prelude-rust fails to load due to tree-sitter dependency issue
- #1302:
C-ashould be bound toorg-beginning-of-linein org-mode buffers.
Initial "stable" release after 9 years of development.