diff --git a/modules/lang/emacs-lisp/autoload.el b/modules/lang/emacs-lisp/autoload.el index d1d1846ed..df200bb5a 100644 --- a/modules/lang/emacs-lisp/autoload.el +++ b/modules/lang/emacs-lisp/autoload.el @@ -101,6 +101,19 @@ if it's callable, `apropos' otherwise." (bury-buffer buf) buf))))) +;;;###autoload +(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))) + (save-selected-window + (eval-buffer) + (buttercup-run)) + (message "File executed successfully"))) + ;; ;;; Hooks diff --git a/modules/lang/emacs-lisp/config.el b/modules/lang/emacs-lisp/config.el index 4882ce31a..5a416df07 100644 --- a/modules/lang/emacs-lisp/config.el +++ b/modules/lang/emacs-lisp/config.el @@ -127,7 +127,21 @@ This marks a foldable marker for `outline-minor-mode' in elisp buffers.") (use-package! buttercup :defer t :minor ("/test[/-].+\\.el$" . buttercup-minor-mode) - :config (set-yas-minor-mode! 'buttercup-minor-mode)) + :preface + ;; buttercup.el doesn't define a keymap for `buttercup-minor-mode', as we have + ;; to fool its internal `define-minor-mode' call into thinking one exists, so + ;; it will associate it with the mode. + (defvar buttercup-minor-mode-map (make-sparse-keymap)) + :config + (set-yas-minor-mode! 'buttercup-minor-mode) + (when (featurep 'evil) + (add-hook 'buttercup-minor-mode-hook #'evil-normalize-keymaps)) + (map! :map buttercup-minor-mode-map + :localleader + :prefix "t" + "t" #'+emacs-lisp/buttercup-run-file + "a" #'buttercup-run-discover + "s" #'buttercup-run-at-point)) ;;