Emacs config utilizing prelude as a base
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

152 lines
5.5 KiB

  1. # Emacs Prelude
  2. Prelude is an Emacs distribution that aims to enhance the default
  3. Emacs experience. Prelude alters a lot of the default settings,
  4. bundles a plethora of additional packages and adds its own core
  5. library to the mix. The final product offers an easy to use Emacs
  6. configuration for Emacs newcomers and lots of additional power for
  7. Emacs power users.
  8. !!! Important
  9. Prelude is compatible **ONLY with GNU Emacs 25.1+**. In general you're
  10. advised to always run Prelude with the latest stable Emacs release.
  11. You can support the development of Prelude via
  12. [GitHub Sponsors](https://github.com/sponsors/bbatsov),
  13. [ko-fi](https://www.ko-fi.com/bbatsov),
  14. [PayPal](https://www.paypal.me/bbatsov) and
  15. [Patreon](https://www.patreon.com/bbatsov).
  16. ## Features
  17. * Improved UX, that's still in line with Emacs traditions
  18. * Sane defaults of baseline Emacs functionality
  19. * Automatic installation of many major programming modes on demand
  20. * A curated set of 3rd party packages to enhance the base functionality
  21. * Simple modular architecture
  22. * Easy customization
  23. ## Package Highlights
  24. Here are some of the essential 3rd party packages that Prelude adds to Emacs:
  25. * [ace-window](https://github.com/abo-abo/ace-window)
  26. (effective navigation between multiple windows)
  27. * [avy](https://github.com/abo-abo/avy)
  28. (effective navigation)
  29. * [crux](https://github.com/bbatsov/crux)
  30. (lots of useful editing commands)
  31. * [diff-hl](https://github.com/dgutov/diff-hl)
  32. (shows colorful diff markers in the gutter when you're editing files
  33. under version control)
  34. * [easy-kill](https://github.com/leoliu/easy-kill)
  35. * [editorconfig-mode](https://github.com/editorconfig/editorconfig-emacs)
  36. (teaches Emacs to respect [.editorconfig](https://editorconfig.org/))
  37. * [expand-region](https://github.com/magnars/expand-region.el)
  38. * [flycheck](https://www.flycheck.org/)
  39. (modern integration with many lint tools)
  40. * [guru-mode](https://github.com/bbatsov/guru-mode)
  41. (an Emacs guru that helps you learn basic Emacs keybindings)
  42. * [projectile](https://github.com/bbatsov/projectile)
  43. (powerful project navigation/interaction package)
  44. * [magit](https://magit.vc/)
  45. (the best git client in the known universe)
  46. * [git-timemachine](https://gitlab.com/pidu/git-timemachine)
  47. (navigate quickly through different versions of one file)
  48. * `nlinum`
  49. (line numbers in your buffers)
  50. * [smartparens](https://github.com/Fuco1/smartparens)
  51. (powerful package for dealing with expressions and matched
  52. delimiters in programming languages)
  53. * [super-save](https://github.com/bbatsov/super-save)
  54. (auto-save buffers when moving around)
  55. * [which-key](https://github.com/justbur/emacs-which-key)
  56. (shows you possible keybindings when you type a partial keybinding)
  57. * [zenburn-theme](https://github.com/bbatsov/zenburn-emacs)
  58. (Prelude's default color theme)
  59. * [undo-tree](https://elpa.gnu.org/packages/undo-tree.html)
  60. (A powerful way to navigate your editing history)
  61. On top of this Prelude bundles a bunch of smaller packages and makes
  62. many more packages available via optional modules.
  63. ## Programming Languages Support
  64. The following programming languages have enhanced support in Prelude:
  65. - C/C++
  66. - [Clojure](modules/clojure.md)
  67. - CoffeeScript
  68. - [Common Lisp](modules/common_lisp.md)
  69. - CSS
  70. - [Dart](modules/dart.md)
  71. - [Emacs Lisp](modules/emacs_lisp.md)
  72. - Erlang
  73. - Elixir
  74. - [F#](modules/fsharp.md)
  75. - Go
  76. - Haskell
  77. - JavaScript
  78. - LaTeX
  79. - [Lisp Base](modules/lisp.md) (common foundation for Lisp modules)
  80. - Lua
  81. - Markdown
  82. - [OCaml](modules/ocaml.md)
  83. - Org Mode
  84. - Perl
  85. - [Python](modules/python.md)
  86. - Racket
  87. - [Ruby](modules/ruby.md)
  88. - [Rust](modules/rust.md)
  89. - Scala
  90. - [Scheme](modules/scheme.md)
  91. - SCSS
  92. - TypeScript
  93. - HTML (via `web-mode`)
  94. - XML
  95. - YAML
  96. On top of this - basic support for many other programming languages
  97. will be auto-installed when needed (e.g. the first time you open a
  98. source file for some language).
  99. ## Philosophy
  100. Prelude's philosophy is quite simple:
  101. * simple
  102. * easy to understand and extend
  103. * stable
  104. * a foundation for you to build upon, as opposed to some end-user product
  105. This means that it intentionally doesn't pack all the bells and
  106. whistles that it could. Prelude aims to enhance the classic Emacs
  107. experience without deviating a lot from it - e.g. it would never
  108. enable something like `evil-mode` (vim keybindings) by default and so
  109. on.
  110. All the third-party packages that it bundles are carefully vetted and
  111. are known to be of good quality and to have reliable maintainers. That
  112. generally means that Prelude's unlikely to immediately adopt some
  113. shiny new package, that has established tried and true alternatives.
  114. In practice this translates to the following:
  115. * Prelude is less opinionated than distros like Spacemacs and Doom
  116. Emacs (meaning it's closer to the standard Emacs experience)
  117. * Prelude installs relatively few additional packages by default
  118. * Most modules in Prelude are opt-in instead of opt-out (you'll notice
  119. the default config enables only a handful of modules)
  120. * Most modules (for example, modules for programming languages) are
  121. pretty short and feature setup only for essential packages (in some
  122. cases that would be just the major mode for the language in
  123. question)
  124. * You don't really need to track Prelude's upstream - you're
  125. encouraged to just fork it and use it as the basis for your own
  126. configuration.
  127. Remember that the ultimate goal of every Emacs user is to create an
  128. Emacs setup that reflects their own experience, needs, goals and
  129. ideas. Just like Lisp, Emacs is nothing but a raw building material
  130. for the perfect editing experience.