Skip to content

An opinionated and extensible Emacs configuration ๐Ÿ› 

License

Notifications You must be signed in to change notification settings

darth10/holy-emacs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

     __          __
    / /_  ____  / /_  __    ___  ____ ___  ____ ___________
   / __ \/ __ \/ / / / /   / _ \/ __ โ€˜__ \/ __ โ€˜/ ___/ ___/
  / / / / /_/ / / /_/ /   /  __/ / / / / / /_/ / /__(__  )
 /_/ /_/\____/_/\__, /    \___/_/ /_/ /_/\__,_/\___/____/
               /____/

release license master-build develop-build

You can use any editor you want, but remember that vi vi vi is the text editor of the beast.

Overview

  • Uses straight for package and dependency management to provide a completely reproducible setup. All required packages are installed on startup.
  • Includes magit, helm, projectile, company and yasnippet.
  • Uses god-mode for modal editing. All key bindings work in god-mode and it's only used to reduce the usage of modifier keys.
  • Uses use-package and bind-key. C-h C-l or M-x describe-personal-keybindings RET will display all available key bindings.
  • Uses which-key to interactively describe key bindings.
  • Uses desktop-save-mode to manage sessions and buffers.
  • Uses editorconfig to handle multiple indentation styles.
  • Upgrade all packages using M-x straight-pull-all RET or make upgrade-packages.

Installation

git clone [email protected]:darth10/holy-emacs.git ~/.emacs.d
cd ~/.emacs.d
# edit init.el if needed
make

On Windows, if you see strange icons/symbols, install all-the-icons.

Customization

There are several options that you can customize through M-x customize-group RET holy-emacs RET. All customized variables and faces are saved to ~/.emacs.d/var/lib/custom-defs.el and will be loaded before the default configuration on startup.

You can also further customize your Emacs configuration using Emacs Lisp code in a couple ways.

  • The ~/.emacs.d/var/lib/ directory. Files in this directory will be loaded before the default configuration on startup.
  • A directory specified by the HOLY_EMACS_HOME environment variable. This defaults to ~/.holy-emacs.d/ if the HOLY_EMACS_HOME environment variable is not set. This folder can be stored together with your dotfiles. Files in this directory will be loaded after the default configuration on startup.

god-mode

Use ESC or M-i to toggle god-mode. In god-mode, i will also disable god-mode. Remember that you can use C-[, or just [ in god-mode, instead of ESC. This has the same effect as using the meta (M-) modifier.

  • C-x C-c becomes xc.
  • C-x ( becomes x (. Note the use of the space key.
  • M-x becomes gx.
  • C-M-c becomes Gc.
  • M-10 C-n becomes 10n.
  • . or z will repeat the last command.

If you prefer to not use god-mode, toggle the holy-emacs-enable-god-mode variable through M-x customize-group RET holy-emacs RET.

Overridden default key bindings

Some of the default Emacs key bindings are changed, as follows.

  • C-s will save the current buffer (save-buffer).
  • M-s s and M-s r will perform an incremental forward and backward search respectively (isearch-forward and isearch-backward).
  • M-i won't add indentation to current line (tab-to-tab-stop). Use M-[ or C-q TAB instead.
  • M-SPC won't delete all space leaving one space (just-one-space). Use C-c \ or C-c C-\ instead.
  • C-x a n won't move the cursor to the next expansion slot (expand-jump-to-next-slot).
  • F10 won't open the main menu (menu-bar-open).
  • C-z won't minimize Emacs (suspend-frame).
  • C-w will kill the current line and M-w will copy the current line when no region is selected.
  • C-x C-c will exit Emacs with a confirmation.

Supported languages

  • Emacs Lisp
  • Clojure
  • Scheme
  • JavaScript
  • C#
  • Go
  • Haskell
  • Python
  • Ruby
  • PHP
  • C

About

An opinionated and extensible Emacs configuration ๐Ÿ› 

Resources

License

Stars

Watchers

Forks

Packages

No packages published