From 3ba364ae1026839b7d50cb41cd93701fc9df9932 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Sun, 23 May 2021 21:48:38 -0400 Subject: [PATCH] Minor refactoring across the board --- core/autoload/text.el | 7 ++++--- core/cli/autoloads.el | 1 - core/cli/packages.el | 2 +- core/core-packages.el | 15 ++++++++++++--- core/core-ui.el | 4 ++-- modules/completion/company/config.el | 10 +++++++--- modules/editor/evil/config.el | 26 +++++++++++--------------- modules/editor/parinfer/packages.el | 20 ++++++++++---------- modules/editor/rotate-text/packages.el | 3 ++- modules/lang/emacs-lisp/autoload.el | 13 ++++++++----- modules/ui/doom/config.el | 6 ++---- test/shell.nix | 4 ++++ 12 files changed, 63 insertions(+), 48 deletions(-) diff --git a/core/autoload/text.el b/core/autoload/text.el index f848f0e2c..6210b1f77 100644 --- a/core/autoload/text.el +++ b/core/autoload/text.el @@ -77,9 +77,10 @@ Detects evil visual mode as well." "Return beginning position of selection. Uses `evil-visual-beginning' if available." (declare (side-effect-free t)) - (if (bound-and-true-p evil-local-mode) - evil-visual-beginning - (region-beginning))) + (or (and (bound-and-true-p evil-local-mode) + (markerp evil-visual-beginning) + (marker-position evil-visual-beginning)) + (region-beginning))) ;;;###autoload (defun doom-region-end () diff --git a/core/cli/autoloads.el b/core/cli/autoloads.el index 7ec4cb6ee..87d629f5f 100644 --- a/core/cli/autoloads.el +++ b/core/cli/autoloads.el @@ -14,7 +14,6 @@ one wants that.") (defvar doom-autoloads-cached-vars '(doom-modules doom-disabled-packages - comp-deferred-compilation-deny-list native-comp-deferred-compilation-deny-list load-path auto-mode-alist diff --git a/core/cli/packages.el b/core/cli/packages.el index 8f8d7ffb1..a359ddb4d 100644 --- a/core/cli/packages.el +++ b/core/cli/packages.el @@ -68,7 +68,7 @@ list remains lean." "git" "log" "--oneline" "--no-merges" "-n" "26" end-ref (concat "^" (regexp-quote start-ref))) (if success - (let* ((output (string-trim-right stdout)) + (let* ((output (string-trim-right (or stdout ""))) (lines (split-string output "\n"))) (if (> (length lines) 25) (concat (string-join (butlast lines 1) "\n") "\n[...]") diff --git a/core/core-packages.el b/core/core-packages.el index 53edccc25..572e184d3 100644 --- a/core/core-packages.el +++ b/core/core-packages.el @@ -154,10 +154,19 @@ uses a straight or package.el command directly).") (defun doom--ensure-core-packages (packages) (doom-log "Installing core packages") (dolist (package packages) - (let ((name (car package))) + (let* ((name (car package)) + (repo (symbol-name name))) (when-let (recipe (plist-get (cdr package) :recipe)) - (straight-override-recipe (cons name recipe))) - (straight-use-package name)))) + (straight-override-recipe (cons name recipe)) + (when-let (local-repo (plist-get recipe :local-repo)) + (setq repo local-repo))) + ;; Only clone the package, don't build them. Straight hasn't been fully + ;; configured by this point. + (straight-use-package name nil t) + ;; In case the package hasn't been built yet. + (or (member (directory-file-name (straight--build-dir "straight")) + load-path) + (add-to-list 'load-path (directory-file-name (straight--repos-dir repo))))))) (defun doom-initialize-core-packages (&optional force-p) "Ensure `straight' is installed and was compiled with this version of Emacs." diff --git a/core/core-ui.el b/core/core-ui.el index 327ce4000..a39a028e7 100644 --- a/core/core-ui.el +++ b/core/core-ui.el @@ -414,8 +414,8 @@ windows, switch to `doom-fallback-buffer'. Otherwise, delegate to original ;; which users expect to control hl-line in Emacs. (define-globalized-minor-mode global-hl-line-mode hl-line-mode (lambda () - (and (not hl-line-mode) - (cond ((null global-hl-line-modes) nil) + (and (cond (hl-line-mode nil) + ((null global-hl-line-modes) nil) ((eq global-hl-line-modes t)) ((eq (car global-hl-line-modes) 'not) (not (derived-mode-p global-hl-line-modes))) diff --git a/modules/completion/company/config.el b/modules/completion/company/config.el index 96d54a53e..7459f83e1 100644 --- a/modules/completion/company/config.el +++ b/modules/completion/company/config.el @@ -1,7 +1,10 @@ ;;; completion/company/config.el -*- lexical-binding: t; -*- (use-package! company - :commands company-complete-common company-manual-begin company-grab-line + :commands (company-complete-common + company-complete-common-or-cycle + company-manual-begin + company-grab-line) :hook (doom-first-input . global-company-mode) :init (setq company-minimum-prefix-length 2 @@ -37,6 +40,9 @@ company-dabbrev-ignore-case nil company-dabbrev-downcase nil) + (when (featurep! +tng) + (add-hook 'global-company-mode-hook #'company-tng-mode)) + :config (when (featurep! :editor evil) (add-hook 'company-mode-hook #'evil-normalize-keymaps) @@ -60,8 +66,6 @@ (add-hook 'after-change-major-mode-hook #'+company-init-backends-h 'append) - (when (featurep! +tng) - (company-tng-mode +1)) ;; NOTE Fix #1335: ensure `company-emulation-alist' is the first item of ;; `emulation-mode-map-alists', thus higher priority than keymaps of diff --git a/modules/editor/evil/config.el b/modules/editor/evil/config.el index a5708c01e..f5d195fb6 100644 --- a/modules/editor/evil/config.el +++ b/modules/editor/evil/config.el @@ -38,7 +38,8 @@ directives. By default, this only recognizes C directives.") evil-mode-line-format 'nil ;; more vim-like behavior evil-symbol-word-search t - ;; cursor appearance + ;; if the current state is obvious from the cursor's color/shape, then + ;; we won't need superfluous indicators to do it instead. evil-default-cursor '+evil-default-cursor-fn evil-normal-state-cursor 'box evil-emacs-state-cursor '(box +evil-emacs-cursor-fn) @@ -310,7 +311,7 @@ directives. By default, this only recognizes C directives.") (use-package! evil-escape :commands evil-escape - :after-call pre-command-hook + :hook (doom-first-input . evil-escape-mode) :init (setq evil-escape-excluded-states '(normal visual multiedit emacs motion) evil-escape-excluded-major-modes '(neotree-mode treemacs-mode vterm-mode) @@ -318,15 +319,14 @@ directives. By default, this only recognizes C directives.") evil-escape-delay 0.15) (evil-define-key* '(insert replace visual operator) 'global "\C-g" #'evil-escape) :config - ;; no `evil-escape' in minibuffer, unless `evil-collection-setup-minibuffer' - ;; is enabled, where we could be in insert mode in the minibuffer. + ;; `evil-escape' in the minibuffer is more disruptive than helpful. That is, + ;; unless we have `evil-collection-setup-minibuffer' enabled, in which case we + ;; want the same behavior in insert mode as we do in normal buffers. (add-hook! 'evil-escape-inhibit-functions (defun +evil-inhibit-escape-in-minibuffer-fn () (and (minibufferp) (or (not (bound-and-true-p evil-collection-setup-minibuffer)) - (evil-normal-state-p))))) - ;; so that evil-escape-mode-hook runs, and can be toggled by evil-mc - (evil-escape-mode +1)) + (evil-normal-state-p)))))) (use-package! evil-exchange @@ -351,20 +351,16 @@ directives. By default, this only recognizes C directives.") (use-package! evil-snipe - :commands (evil-snipe-mode - evil-snipe-override-mode - evil-snipe-local-mode - evil-snipe-override-local-mode) - :after-call pre-command-hook + :commands evil-snipe-local-mode evil-snipe-override-local-mode + :hook (doom-first-input . evil-snipe-override-mode) + :hook (doom-first-input . evil-snipe-mode) :init (setq evil-snipe-smart-case t evil-snipe-scope 'line evil-snipe-repeat-scope 'visible evil-snipe-char-fold t) :config - (pushnew! evil-snipe-disabled-modes 'Info-mode 'calc-mode 'treemacs-mode) - (evil-snipe-mode +1) - (evil-snipe-override-mode +1)) + (pushnew! evil-snipe-disabled-modes 'Info-mode 'calc-mode 'treemacs-mode)) (use-package! evil-surround diff --git a/modules/editor/parinfer/packages.el b/modules/editor/parinfer/packages.el index 7cbb3c757..27c3c73e9 100644 --- a/modules/editor/parinfer/packages.el +++ b/modules/editor/parinfer/packages.el @@ -1,18 +1,18 @@ ;; -*- no-byte-compile: t; -*- ;;; editor/parinfer/packages.el -(when (and (not (featurep! +rust)) (featurep! :editor evil)) - ;; Parinfer uses `evil-define-key' without loading evil, so if evil is - ;; installed *after* parinfer, parinfer will throw up void-function errors. - ;; because evil-define-key (a macro) wasn't expanded at compile-time. So we - ;; make sure evil is installed before parinfer... - (package! evil) - ;; ...and that it can see `evil-define-key' if evil was installed in a - ;; separate session: - (autoload 'evil-define-key "evil-core" nil nil 'macro)) - (if (featurep! +rust) (package! parinfer-rust-mode :pin "f130fa04ec75131686872f24a253d0a1d5522fa4") + (when (featurep! :editor evil) + ;; Parinfer uses `evil-define-key' without loading evil, so if evil is + ;; installed *after* parinfer, parinfer will throw up void-function errors. + ;; because evil-define-key (a macro) wasn't expanded at compile-time. So we + ;; make sure evil is installed before parinfer... + (package! evil) + ;; ...and that it can see `evil-define-key' if evil was installed in a + ;; separate session: + (autoload 'evil-define-key "evil-core" nil nil 'macro)) + (package! parinfer :recipe (:host github :repo "emacsattic/parinfer") :pin "8659c99a9475ee34af683fdf8f272728c6bebb3a")) diff --git a/modules/editor/rotate-text/packages.el b/modules/editor/rotate-text/packages.el index 846641da6..eda7f664e 100644 --- a/modules/editor/rotate-text/packages.el +++ b/modules/editor/rotate-text/packages.el @@ -2,5 +2,6 @@ ;;; editor/rotate-text/packages.el (package! rotate-text - :recipe (:host github :repo "debug-ito/rotate-text.el") + :recipe (:host github + :repo "debug-ito/rotate-text.el") :pin "48f193697db996855aee1ad2bc99b38c6646fe76") diff --git a/modules/lang/emacs-lisp/autoload.el b/modules/lang/emacs-lisp/autoload.el index 69a426528..ae9ce9d9c 100644 --- a/modules/lang/emacs-lisp/autoload.el +++ b/modules/lang/emacs-lisp/autoload.el @@ -172,10 +172,12 @@ https://emacs.stackexchange.com/questions/10230/how-to-indent-keywords-aligned" (defun +emacs-lisp/buttercup-run-file () "Run all buttercup tests in the focused buffer." (interactive) - (let ((load-path (append (list (doom-path (dir!) "..") - (or (doom-project-root) - default-directory)) - load-path))) + (let ((load-path + (append (list (doom-path (dir!) "..") + (or (doom-project-root) + default-directory)) + load-path)) + (buttercup-suites nil)) (save-selected-window (eval-buffer) (buttercup-run)) @@ -188,7 +190,8 @@ https://emacs.stackexchange.com/questions/10230/how-to-indent-keywords-aligned" (let* ((default-directory (doom-project-root)) (load-path (append (list (doom-path "test") default-directory) - load-path))) + load-path)) + (buttercup-suites nil)) (buttercup-run-discover))) ;;;###autoload diff --git a/modules/ui/doom/config.el b/modules/ui/doom/config.el index fa8a59dd7..e411dc68a 100644 --- a/modules/ui/doom/config.el +++ b/modules/ui/doom/config.el @@ -6,11 +6,9 @@ (use-package! doom-themes - :defer t - :init - (setq doom-theme 'doom-one) ;; improve integration w/ org-mode - (add-hook 'doom-load-theme-hook #'doom-themes-org-config) + :hook (doom-load-theme . doom-themes-org-config) + :init (setq doom-theme 'doom-one) ;; more Atom-esque file icons for neotree/treemacs (when (featurep! :ui neotree) (add-hook 'doom-load-theme-hook #'doom-themes-neotree-config) diff --git a/test/shell.nix b/test/shell.nix index c5348d12f..110606ed2 100644 --- a/test/shell.nix +++ b/test/shell.nix @@ -14,7 +14,10 @@ # With a specific version of Emacs # # nix-shell --argstr emacs 26 # 26.3 +# nix-shell --argstr emacs 26.3 # 26.3 # nix-shell --argstr emacs 27 # 27.1 +# nix-shell --argstr emacs 27.1 # 27.1 +# nix-shell --argstr emacs 27.2 # 27.2 # nix-shell --argstr emacs 28 # 28.0.50 # nix-shell --argstr emacs gcc # 28.0.50 + native-comp # nix-shell --argstr emacs pgtk+gcc # 28.0.50 + pgtk + native-comp @@ -41,6 +44,7 @@ , doomlocaldir ? "$(pwd)/.local" }: let emacsPkg = (if emacs == "26" then pkgs.emacs26 + else if emacs == "26.3" then pkgs.emacs26 else if emacs == "27" then pkgs.emacs27-2 else if emacs == "27.1" then pkgs.emacs27 else if emacs == "27.2" then pkgs.emacs27-2