doomemacs/modules/config/default
Henrik Lissner 2dc52bc9be
💥 Replace exec-path-from-shell w/ 'bin/doom env'
IMPORTANT: This is a breaking update for Mac users, as your shell
environment will no longer be inherited correctly (with the removal of
exec-path-from-shell). The quick fix is: 'bin/doom env refresh'. Also,
the set-env! autodef now does nothing (and is deprecated), be sure to
remove calls to it in your config.

Smaller changes:
+ This update also adds --no-* switches to doom quickstart
+ Includes general improvements to the documentation of several bin/doom
  commands.
+ Moves doom/reload* commands to core/autoload/config.el
+ doom/reload-project has been removed (it didn't actually do anything)

The breaking change:
This update adds an "envvar file" to Doom Emacs. This file is generated
by `doom env refresh`, populated with variables scraped from your shell
environment (from both non-interactive and interactive sessions). This
file is then (inexpensively) loaded at startup, if it exists.

+ The file is manually generated with `doom env refresh`.
+ It can be regenerated automatically whenever `doom refresh` is run by
  running `doom env enable` (`doom env clear` will reverse this and
  delete the env file).
+ `doom quickstart` will ask if you want to auto-generate this envvar
  file. You won't need it if you're confident Emacs will always be
  started from the correct environment, however.
+ Your env file can be reloaded from a running Emacs session with `M-x
  doom/reload-env`. Note: this won't work if the Emacs session you're
  running it in doesn't have a correct SHELL set. i.e. don't use this to
  create your first env file!

The idea isn't mine -- it's borrowed from Spacemacs -- and was
introduced to me in #1053 by @yurimx. I was impressed with it. Prior to
this, I was unhappy with exec-path-from-shell (no hate to the dev, I
understand its necessity), and 'doom patch-macos' wasn't ideal for mac
users (needed to be reapplied every time you update Emacs). What's more,
many users (even Linux users) had to install exec-path-from-shell
anyway.

This solution suffers from none of their shortcomings. More reliable
than patch-macos, more performant and complete than
exec-path-from-shell, and easily handled by bin/doom.
2019-03-28 01:56:09 -04:00
..
autoload Add +default/search-from-cwd & +default/search-project 2019-03-08 04:25:45 -05:00
+emacs-bindings.el Add forward/back-button bindings in help-mode 2019-03-15 15:03:30 +10:00
+emacs.el config/default: split into evil/emacs files 2019-03-09 03:43:14 -05:00
+evil-bindings.el Add maximize window key bindings 2019-03-24 14:47:55 +00:00
+evil.el config/default: split into evil/emacs files 2019-03-09 03:43:14 -05:00
config.el 💥 Replace exec-path-from-shell w/ 'bin/doom env' 2019-03-28 01:56:09 -04:00
packages.el config/default: split into evil/emacs files 2019-03-09 03:43:14 -05:00
README.org 💥 Move :private modules to :config 2018-02-14 23:36:27 -05:00

:config default

This module provides a set of reasonable defaults, including:

  • A Spacemacs-esque keybinding scheme
  • Extra Ex commands for evil-mode users
  • A yasnippet snippets library tailored to Doom emacs
  • A configuration for (almost) universally repeating searches with ; and ,

The defaults module is intended as a "reasonable-defaults" module, but also as a reference for your own private modules. You'll find my private module in a separate repo.

Refer to the Customization page on the wiki for details on starting your own private module.

Install

This module has no external dependencies.

Configuration

Using another snippets library

Don't want to use provided one? Then add this to your private module,

;; in config/$USER/packages.el
(package! emacs-snippets :ignore t)

;; in config/$USER/config.el
(def-package-hook! emacs-snippets :disabled t)
(after! yasnippet
  (push "~/path/to/my/private/snippets" yas-snippet-dirs))

I'm not an evil user…

That's fine. All evil configuration is ignored if :feature evil is disabled.

Appendix

Commands

  • +default/browse-project
  • +default/browse-templates
  • +default/find-in-templates
  • +default/browse-emacsd
  • +default/find-in-emacsd
  • +default/browse-notes
  • +default/find-in-notes
  • +default/find-in-snippets

Hacks

  • epa-pinentry-mode is set to 'loopback, forcing gpg-agent to use the Emacs minibuffer when prompting for your passphrase. Only works with GPG 2.1+!