Updating Doom Emacs.

This commit is contained in:
Derek Taylor
2020-06-19 22:43:40 -05:00
parent 0f664d532a
commit a5c86c514a
453 changed files with 13527 additions and 12455 deletions

View File

@@ -67,27 +67,8 @@ Or ~nix-env -i direnv~
* Troubleshooting
** direnv + nix is slow
Consider augmenting direnv with [[https://github.com/target/lorri][lorri]], which will cache nix builds and speed up
direnv tremendously.
At the time of writing, the lorri package in nixpkgs simply emits an error
message, telling you to install it manually. You can get around this with:
direnv tremendously:
#+BEGIN_SRC nix
nixpkgs.overlays = [
(self: super: {
lorri =
let src = (super.fetchFromGitHub {
owner = "target";
repo = "lorri";
rev = "38eae3d487526ece9d1b8c9bb0d27fb45cf60816";
sha256 = "11k9lxg9cv6dlxj4haydvw4dhcfyszwvx7jx9p24jadqsy9jmbj4";
});
in import src { inherit src; };
})
];
environment.systemPackages = [ pkgs.lorri ];
services.lorri.enable = true;
#+END_SRC
Otherwise, follow [[https://github.com/target/lorri#installing-lorri][the instructions in lorri's README]] on how to install it
manually.

View File

@@ -1,69 +1,34 @@
;;; tools/direnv/config.el -*- lexical-binding: t; -*-
(defvar +direnv--keywords
(defvar +direnv-keywords
'("direnv_layout_dir" "PATH_add" "path_add" "log_status" "log_error" "has"
"join_args" "expand_path" "dotenv" "user_rel_path" "find_up" "source_env"
"watch_file" "source_up" "direnv_load" "MANPATH_add" "load_prefix" "layout"
"use" "rvm" "use_nix" "use_guix")
"TODO")
;;
;;; Packages
(use-package! direnv
:after-call after-find-file dired-initial-position-hook
:hook (before-hack-local-variables . direnv--maybe-update-environment)
:hook (flycheck-before-syntax-check . direnv--maybe-update-environment)
:hook (direnv-envrc-mode . +direnv-envrc-fontify-keywords-h)
:config
(add-hook! 'direnv-mode-hook
(defun +direnv-init-h ()
"Instead of checking for direnv on `post-command-hook', check only once,
when the file is first opened/major mode is activated. This is significantly
less expensive, but is less sensitive to changes to .envrc done outside of
Emacs."
(direnv--disable)
(when direnv-mode
(add-hook 'after-change-major-mode-hook
#'direnv--maybe-update-environment))))
(add-to-list 'direnv-non-file-modes 'vterm-mode)
(defadvice! +direnv--make-process-environment-buffer-local-a (items)
:filter-return #'direnv--export
(when items
(mapc 'kill-local-variable '(process-environment exec-path))
(mapc 'make-local-variable '(process-environment exec-path)))
items)
(defun +direnv-envrc-fontify-keywords-h ()
"Fontify special .envrc keywords; it's a good indication of whether or not
we've typed them correctly."
(font-lock-add-keywords
nil `((,(regexp-opt +direnv-keywords 'symbols)
(0 font-lock-keyword-face)))))
;; Fontify special .envrc keywords; it's a good indication of whether or not
;; we've typed them correctly.
(add-hook! 'direnv-envrc-mode-hook
(defun +direnv-envrc-fontify-keywords-h ()
(font-lock-add-keywords
nil `((,(regexp-opt +direnv--keywords 'symbols)
(0 font-lock-keyword-face)))))
(defun +direnv-update-on-save-h ()
(add-hook 'after-save-hook #'direnv--maybe-update-environment
nil 'local)))
(defadvice! +direnv-update-a (&rest _)
"Update direnv. Useful to advise functions that may run
environment-sensitive logic like `flycheck-default-executable-find'. This fixes
flycheck issues with direnv and on nix."
:before #'flycheck-default-executable-find
(direnv--maybe-update-environment))
(defadvice! +direnv--fail-gracefully-a (orig-fn)
"Don't try to update direnv if the executable isn't present."
:around #'direnv--maybe-update-environment
(if (executable-find "direnv")
(when (file-readable-p (or buffer-file-name default-directory))
(funcall orig-fn))
(doom-log "Couldn't find direnv executable")))
(defadvice! +direnv-update-async-shell-command-a (command &optional output-buffer _error-buffer)
:before #'shell-command
(when (string-match "[ \t]*&[ \t]*\\'" command)
(let ((environment process-environment)
(path exec-path)
(shell shell-file-name))
(with-current-buffer
(get-buffer-create (or output-buffer "*Async Shell Command*"))
(setq-local process-environment environment)
(setq-local exec-path path)
(setq-local shell-file-name shell)))))
(defadvice! +direnv--fail-gracefully-a (&rest _)
"Don't try to use direnv if the executable isn't present."
:before-while #'direnv-update-directory-environment
(or (executable-find "direnv")
(ignore (doom-log "Couldn't find direnv executable"))))
(direnv-mode +1))

View File

@@ -1,4 +1,4 @@
;; -*- no-byte-compile: t; -*-
;;; tools/direnv/packages.el
(package! direnv)
(package! direnv :pin "f5484b0fc33d4e5116612626294efb362ff9ecd4")