From 047e5e6a9277ecc2ce63c0e567d00580733ac351 Mon Sep 17 00:00:00 2001 From: Ivan Verevkin Date: Sun, 26 Nov 2017 02:36:33 +0300 Subject: [PATCH 01/14] Fix typo --- modules/private/hlissner/+bindings.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/private/hlissner/+bindings.el b/modules/private/hlissner/+bindings.el index 378ea57ab..b1a0623cd 100644 --- a/modules/private/hlissner/+bindings.el +++ b/modules/private/hlissner/+bindings.el @@ -170,7 +170,7 @@ :v "r" #'+eval:repl) (:desc "file" :prefix "f" - :desc "File file" :n "." #'find-file + :desc "Find file" :n "." #'find-file :desc "Sudo find file" :n ">" #'doom/sudo-find-file :desc "Find file in project" :n "/" #'projectile-find-file :desc "Find file from here" :n "?" #'counsel-file-jump From 86dd6172a8b455f35c85fb4871429dc800772b23 Mon Sep 17 00:00:00 2001 From: Amos Bird Date: Wed, 29 Nov 2017 20:39:11 +0800 Subject: [PATCH 02/14] nil check for frame --- modules/ui/unicode/config.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/ui/unicode/config.el b/modules/ui/unicode/config.el index 047c23ff6..06636b3e9 100644 --- a/modules/ui/unicode/config.el +++ b/modules/ui/unicode/config.el @@ -7,7 +7,7 @@ (defun +unicode|init-fonts (&optional frame) "Initialize `unicode-fonts', if in a GUI session." - (when (display-graphic-p frame) + (when (and frame (display-graphic-p frame)) (with-selected-frame frame (require 'unicode-fonts) ;; NOTE will impact startup time on first run From 89223e0a2fc40941bb0ac214ee68051e1c751775 Mon Sep 17 00:00:00 2001 From: Oliver Charles Date: Sat, 2 Dec 2017 00:05:51 +0000 Subject: [PATCH 03/14] lang/nix: initial commit --- modules/lang/nix/config.el | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 modules/lang/nix/config.el diff --git a/modules/lang/nix/config.el b/modules/lang/nix/config.el new file mode 100644 index 000000000..e9d090fc3 --- /dev/null +++ b/modules/lang/nix/config.el @@ -0,0 +1,4 @@ +;;; lang/nix/config.el -*- lexical-binding: t; -*- + +(def-package! nix-mode + :mode "\\.nix$") From f21c01fce283b5b559bb049682effa2e363449b4 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Thu, 16 Nov 2017 16:34:42 +0100 Subject: [PATCH 04/14] predicate cookies: restrict to first 3 lines + set load-file-name --- core/core-packages.el | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/core/core-packages.el b/core/core-packages.el index 820f9635d..e3ed9c5a3 100644 --- a/core/core-packages.el +++ b/core/core-packages.el @@ -495,8 +495,10 @@ loads MODULE SUBMODULE's packages.el file." "Returns the value of the ;;;###if predicate form in FILE." (with-temp-buffer (insert-file-contents-literally file nil 0 256) - (if (re-search-forward "^;;;###if " nil t) - (eval (sexp-at-point)) + (if (and (re-search-forward "^;;;###if " nil t) + (<= (line-number-at-pos) 3)) + (let ((load-file-name file)) + (eval (sexp-at-point))) t))) (defun doom-packages--async-run (fn) From 5364260a5cbc7a5b078af6f7340304c982244ecc Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Thu, 16 Nov 2017 16:35:46 +0100 Subject: [PATCH 05/14] Report ignored files w/ reloading autoloads --- core/core-packages.el | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/core/core-packages.el b/core/core-packages.el index e3ed9c5a3..46cdf289d 100644 --- a/core/core-packages.el +++ b/core/core-packages.el @@ -558,22 +558,21 @@ This should be run whenever init.el or an autoload file is modified. Running (dolist (path (doom-module-paths)) (let ((auto-dir (expand-file-name "autoload" path)) (auto-file (expand-file-name "autoload.el" path))) - (when (and (file-exists-p auto-file) - (doom-packages--read-if-cookies auto-file)) + (when (file-exists-p auto-file) (push auto-file targets)) (when (file-directory-p auto-dir) - (dolist (file (file-expand-wildcards (expand-file-name "*.el" auto-dir) t)) - ;; Make evil*.el autoload files a special case; don't load - ;; them unless evil is enabled. - (when (doom-packages--read-if-cookies file) - (push file targets)))))) + (dolist (file (directory-files-recursively auto-dir "\\.el$")) + (push file targets))))) (when (file-exists-p doom-autoload-file) (delete-file doom-autoload-file) (message "Deleted old autoloads.el")) (dolist (file (reverse targets)) - (message (if (update-file-autoloads file nil doom-autoload-file) - "Nothing in %s" - "Scanned %s") + (message (cond ((not (doom-packages--read-if-cookies file)) + "Ignoring %s") + ((update-file-autoloads file nil doom-autoload-file) + "Nothing in %s") + (t + "Scanned %s")) (file-relative-name file doom-emacs-dir))) (let ((buf (get-file-buffer doom-autoload-file)) current-sexp) From ff717e5c2fab3344421b19c3f764a7702830fb41 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Thu, 16 Nov 2017 16:36:00 +0100 Subject: [PATCH 06/14] Refactor quiet! macro --- core/core-lib.el | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/core/core-lib.el b/core/core-lib.el index 0ffbca94d..2b8cec15b 100644 --- a/core/core-lib.el +++ b/core/core-lib.el @@ -162,18 +162,17 @@ compilation." "Run FORMS without making any noise." `(if doom-debug-mode (progn ,@forms) - (fset 'doom--old-write-region-fn (symbol-function 'write-region)) - (cl-letf ((standard-output (lambda (&rest _))) - ((symbol-function 'load-file) (lambda (file) (load file nil t))) - ((symbol-function 'message) (lambda (&rest _))) - ((symbol-function 'write-region) - (lambda (start end filename &optional append visit lockname mustbenew) - (unless visit (setq visit 'no-message)) - (doom--old-write-region-fn - start end filename append visit lockname mustbenew))) - (inhibit-message t) - (save-silently t)) - ,@forms))) + (let ((old-fn (symbol-function 'write-region))) + (cl-letf* ((standard-output (lambda (&rest _))) + ((symbol-function 'load-file) (lambda (file) (load file nil t))) + ((symbol-function 'message) (lambda (&rest _))) + ((symbol-function 'write-region) + (lambda (start end filename &optional append visit lockname mustbenew) + (unless visit (setq visit 'no-message)) + (funcall old-fn start end filename append visit lockname mustbenew))) + (inhibit-message t) + (save-silently t)) + ,@forms)))) (defvar doom--transient-counter 0) (defmacro add-transient-hook! (hook &rest forms) From 1140af780700cbc82f8fd83f20a36ff9ce5c2197 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Thu, 16 Nov 2017 16:48:11 +0100 Subject: [PATCH 07/14] Report missing module in require! macro --- core/core-packages.el | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/core/core-packages.el b/core/core-packages.el index 46cdf289d..557c73bb2 100644 --- a/core/core-packages.el +++ b/core/core-packages.el @@ -408,13 +408,17 @@ The module is only loaded once. If RELOAD-P is non-nil, load it again." (when (or reload-p (not loaded-p)) (unless loaded-p (doom-module-enable module submodule flags)) - `(condition-case-unless-debug ex - (load! config ,(doom-module-path module submodule) t) - ('error - (lwarn 'doom-modules :error - "%s in '%s %s' -> %s" - (car ex) ,module ',submodule - (error-message-string ex))))))) + (let ((module-path (doom-module-path module submodule))) + (if (file-directory-p module-path) + `(condition-case-unless-debug ex + (load! config ,module-path t) + ('error + (lwarn 'doom-modules :error + "%s in '%s %s' -> %s" + (car ex) ,module ',submodule + (error-message-string ex)))) + (lwarn 'doom-modules :warning "Couldn't find module '%s %s'" + module submodule)))))) (defmacro featurep! (module &optional submodule flag) "A convenience macro wrapper for `doom-module-loaded-p'. It is evaluated at From 2190d2996067874e4e059fba080264522f0d5d8d Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Thu, 16 Nov 2017 18:41:17 +0100 Subject: [PATCH 08/14] Enable load-prefer-newer sooner in noninterative/debug sessions --- core/core-packages.el | 3 +-- core/core.el | 1 + 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/core/core-packages.el b/core/core-packages.el index 557c73bb2..02c436f2b 100644 --- a/core/core-packages.el +++ b/core/core-packages.el @@ -92,8 +92,7 @@ base by `doom!' and for calculating how many packages exist.") (defvar doom--refreshed-p nil) -(setq load-prefer-newer (or noninteractive doom-debug-mode) - package--init-file-ensured t +(setq package--init-file-ensured t package-user-dir (expand-file-name "elpa" doom-packages-dir) package-enable-at-startup nil package-archives diff --git a/core/core.el b/core/core.el index 06b1cad4c..34aa959ff 100644 --- a/core/core.el +++ b/core/core.el @@ -94,6 +94,7 @@ melodramatic ex-vimmer disappointed with the text-editor status quo." enable-recursive-minibuffers nil debug-on-error (and (not noninteractive) doom-debug-mode) idle-update-delay 2 ; update ui less often + load-prefer-newer (or noninteractive doom-debug-mode) ;; keep the point out of the minibuffer minibuffer-prompt-properties '(read-only t point-entered minibuffer-avoid-prompt face minibuffer-prompt) ;; History & backup settings (save nothing, that's what git is for) From f617995bbe7ebdf2f8ddb40e1c7c15adb32594b1 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Wed, 22 Nov 2017 15:47:51 -0500 Subject: [PATCH 09/14] nav-flash: blink cursor on evil-jump --- modules/ui/nav-flash/config.el | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/ui/nav-flash/config.el b/modules/ui/nav-flash/config.el index 23e0ae4b6..cf2ce8be0 100644 --- a/modules/ui/nav-flash/config.el +++ b/modules/ui/nav-flash/config.el @@ -9,6 +9,8 @@ (advice-add #'recenter :around #'+doom*blink-cursor-maybe) (after! evil + (advice-add #'evil--jumps-jump :after #'+doom/blink-cursor) + (advice-add #'evil-window-top :after #'+doom/blink-cursor) (advice-add #'evil-window-middle :after #'+doom/blink-cursor) (advice-add #'evil-window-bottom :after #'+doom/blink-cursor))) From 0118535267dd84fb7dfe0c077a1143c7216b6f7e Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Mon, 4 Dec 2017 13:22:17 -0500 Subject: [PATCH 10/14] Install core packages from melpa-stable Use-package broke in a recent update, as with Doom, since it relies so heavily on it. To combat this issue arising again, use-package will be installed from melpa-stable from now on. Addresses #283 --- core/core-packages.el | 13 ++++++++++--- core/packages.el | 1 + 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/core/core-packages.el b/core/core-packages.el index 02c436f2b..2776f0984 100644 --- a/core/core-packages.el +++ b/core/core-packages.el @@ -68,7 +68,7 @@ package's name as a symbol, and whose CDR is the plist supplied to its `package!' declaration. Set by `doom-initialize-packages'.") (defvar doom-core-packages - '(persistent-soft quelpa use-package async) + '(persistent-soft use-package quelpa) "A list of packages that must be installed (and will be auto-installed if missing) and shouldn't be deleted.") @@ -96,11 +96,18 @@ base by `doom!' and for calculating how many packages exist.") package-user-dir (expand-file-name "elpa" doom-packages-dir) package-enable-at-startup nil package-archives - '(("gnu" . "https://elpa.gnu.org/packages/") - ("melpa" . "https://melpa.org/packages/")) + '(("gnu" . "https://elpa.gnu.org/packages/") + ("melpa" . "https://melpa.org/packages/") + ("melpa-stable" . "https://stable.melpa.org/packages/")) ;; I omit Marmalade because its packages are manually submitted rather ;; than pulled, so packages are often out of date with upstream. + ;; Don't gamble with these packages. Only retrieve stable versions. Quelpa + ;; is omitted because it isn't on melpa-stable. + package-pinned-packages + '((use-package . "melpa-stable") + (persistent-soft . "melpa-stable")) + ;; security settings gnutls-verify-error (not (getenv "INSECURE")) ; you shouldn't use this tls-checktrust gnutls-verify-error diff --git a/core/packages.el b/core/packages.el index 3a5004ed5..74721a286 100644 --- a/core/packages.el +++ b/core/packages.el @@ -4,6 +4,7 @@ ;; core packages (package! s) (package! f) +(package! async) ;; core-os.el ;; In case this config is shared across multiple computers (like mine is), let's From b885164ce6167966841d2bb695d5deb3c211e0b8 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Mon, 4 Dec 2017 13:43:04 -0500 Subject: [PATCH 11/14] Update comments in core-packages --- core/core-packages.el | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/core/core-packages.el b/core/core-packages.el index 2776f0984..88e45f319 100644 --- a/core/core-packages.el +++ b/core/core-packages.el @@ -158,9 +158,9 @@ startup." (package-refresh-contents) (setq doom--refreshed-p t) (package-initialize t))) - ;; We could let `package-initialize' fill `load-path', but it costs precious - ;; milliseconds and does other stuff I don't need (like load autoload - ;; files). My premature optimization quota isn't filled yet. + ;; We could let `package-initialize' fill `load-path', but it does more than + ;; that alone (like load autoload files). If you want something prematurely + ;; optimizated right, ya gotta do it yourself. ;; ;; Also, in some edge cases involving package initialization during a ;; non-interactive session, `package-initialize' fails to fill `load-path'. @@ -556,9 +556,8 @@ This should be run whenever init.el or an autoload file is modified. Running ;; This function must not use autoloaded functions or external dependencies. ;; It must assume nothing is set up! (if (not noninteractive) - ;; This is done "asynchroniously" to protect the current session's state. - ;; This is because `doom-initialize-packages' rereads your emacs config, - ;; which has side effects. + ;; This is done in another instance to protect the current session's + ;; state. `doom-initialize-packages' will have side effects otherwise. (and (doom-packages--async-run 'doom//reload-autoloads) (load doom-autoload-file)) (doom-initialize-packages) @@ -627,9 +626,8 @@ If RECOMPILE-P is non-nil, only recompile out-of-date files." (recompile-p (or recompile-p (and (member "-r" (cdr argv)) t)))) (if (not noninteractive) - ;; This is done "asynchroniously" to protect the current session's - ;; state. This is because `doom-initialize-packages' rereads your emacs - ;; config, which has side effects. + ;; This is done in another instance to protect the current session's + ;; state. `doom-initialize-packages' will have side effects otherwise. (doom-packages--async-run 'doom//byte-compile) (let ((total-ok 0) (total-fail 0) From 85645b386ccd35eacf1e64f9b4c020f4c70105e9 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Mon, 4 Dec 2017 13:48:19 -0500 Subject: [PATCH 12/14] Fix void variable doom-popup-mode-map error #284 --- core/core-popups.el | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/core/core-popups.el b/core/core-popups.el index f19d33ae5..d6b1ded03 100644 --- a/core/core-popups.el +++ b/core/core-popups.el @@ -46,6 +46,9 @@ that was/were open in `doom-popup-history'.") when their associated popup windows are closed, despite their :autokill property.") +(defvar doom-popup-mode-map (make-sparse-keymap) + "Active keymap in popup windows.") + (def-setting! :popup (&rest rules) "Prepend a new popup rule to `shackle-rules' (see for format details). @@ -133,20 +136,17 @@ recognized by DOOM's popup system. They are: (dolist (param `(popup ,@doom-popup-window-parameters)) (push (cons param 'writable) window-persistent-parameters)) - (defvar doom-popup-mode-map - (let ((map (make-sparse-keymap))) - (define-key map [escape] #'doom/popup-close-maybe) - (define-key map (kbd "ESC") #'doom/popup-close-maybe) - (define-key map [remap quit-window] #'doom/popup-close-maybe) - (define-key map [remap doom/kill-this-buffer] #'delete-window) - (define-key map [remap split-window-right] #'ignore) - (define-key map [remap split-window-below] #'ignore) - (define-key map [remap split-window-horizontally] #'ignore) - (define-key map [remap split-window-vertically] #'ignore) - (define-key map [remap mouse-split-window-horizontally] #'ignore) - (define-key map [remap mouse-split-window-vertically] #'ignore) - map) - "Active keymap in popup windows.")) + (let ((map doom-popup-mode-map)) + (define-key map [escape] #'doom/popup-close-maybe) + (define-key map (kbd "ESC") #'doom/popup-close-maybe) + (define-key map [remap quit-window] #'doom/popup-close-maybe) + (define-key map [remap doom/kill-this-buffer] #'delete-window) + (define-key map [remap split-window-right] #'ignore) + (define-key map [remap split-window-below] #'ignore) + (define-key map [remap split-window-horizontally] #'ignore) + (define-key map [remap split-window-vertically] #'ignore) + (define-key map [remap mouse-split-window-horizontally] #'ignore) + (define-key map [remap mouse-split-window-vertically] #'ignore))) ;; From 82141f866a0947fbcd3da9e1c923f8d64b963dd9 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Mon, 4 Dec 2017 21:36:49 -0500 Subject: [PATCH 13/14] tools/eshell: no hl-line in insert mode --- modules/tools/eshell/config.el | 4 ---- 1 file changed, 4 deletions(-) diff --git a/modules/tools/eshell/config.el b/modules/tools/eshell/config.el index f2d82aa40..49efa7074 100644 --- a/modules/tools/eshell/config.el +++ b/modules/tools/eshell/config.el @@ -67,10 +67,6 @@ redefines its keys every time `eshell-mode' is enabled." [remap +workspace/close-window-or-workspace] #'eshell-life-is-too-much)) (add-hook 'eshell-mode-hook #'+eshell|init-keymap) - (add-hook! eshell-mode - (add-hook 'evil-insert-state-exit-hook #'hl-line-mode nil t) - (add-hook 'evil-insert-state-entry-hook (lambda () (hl-line-mode -1)) nil t)) - ;; Aliases (setq eshell-command-aliases-list '(("q" "exit") From 27cf1dab21b161bd18c22c072cbd70b5b0210b68 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Thu, 30 Nov 2017 20:22:51 -0500 Subject: [PATCH 14/14] Conditionally re-enable hl-line upon exiting visual mode Addresses #281 --- core/core-ui.el | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/core/core-ui.el b/core/core-ui.el index 7d965686e..44530d20d 100644 --- a/core/core-ui.el +++ b/core/core-ui.el @@ -304,12 +304,19 @@ local value, whether or not it's permanent-local. Therefore, we cycle global-hl-line-sticky-flag nil) (after! evil + (defvar-local doom-buffer-hl-line-mode nil) + ;; Disable `hl-line' in evil-visual mode (temporarily). `hl-line' can make ;; the selection region harder to see while in evil visual mode. - (defun doom|disable-hl-line () (hl-line-mode -1)) + (defun doom|disable-hl-line () + (when hl-line-mode + (setq doom-buffer-hl-line-mode t) + (hl-line-mode -1))) + (defun doom|enable-hl-line-maybe () + (if doom-buffer-hl-line-mode (hl-line-mode +1))) (add-hook 'evil-visual-state-entry-hook #'doom|disable-hl-line) - (add-hook 'evil-visual-state-exit-hook #'hl-line-mode))) + (add-hook 'evil-visual-state-exit-hook #'doom|enable-hl-line-maybe))) ;; Helps us distinguish stacked delimiter pairs. Especially in parentheses-drunk ;; languages like Lisp.