diff --git a/modules/config/default/+bindings.el b/modules/config/default/+bindings.el index fceb63f71..e87700c92 100644 --- a/modules/config/default/+bindings.el +++ b/modules/config/default/+bindings.el @@ -53,7 +53,7 @@ ;; Other sensible, textmate-esque global bindings :ne "M-r" #'+eval/buffer :ne "M-R" #'+eval/region-and-replace - :ne "M-b" #'compile + :ne "M-b" #'+default/compile :ne "M-a" #'mark-whole-buffer :ne "M-c" #'evil-yank :ne "M-q" (if (daemonp) #'delete-frame #'evil-quit-all) diff --git a/modules/config/default/autoload/default.el b/modules/config/default/autoload/default.el index 1e7810e31..15ba85e03 100644 --- a/modules/config/default/autoload/default.el +++ b/modules/config/default/autoload/default.el @@ -38,3 +38,20 @@ (defun +default/browse-snippets () (interactive) (doom-project-browse emacs-snippets-dir)) ;; NOTE No need for a browse-snippets variant, use `yas-visit-snippet-file' + + +;;;###autoload +(defun +default/compile (arg) + "Runs `compile' from the root of the current project. + +If a compilation window is already open, recompile that instead. + +If ARG (universal argument), runs `compile' from the current directory." + (interactive "P") + (if (and (bound-and-true-p compilation-in-progress) + (buffer-live-p compilation-last-buffer)) + (recompile) + (call-interactively + (if arg + #'projectile-compile-project + #'compile))))