From 4cb9c3d3a0b7cafc8c707d72b28769474da684d6 Mon Sep 17 00:00:00 2001 From: Jim Myhrberg Date: Mon, 13 Sep 2021 12:38:34 +0100 Subject: [PATCH] feat(makefile): improve makefile execution and bind it to C-c C-m Use the makefile-executor package instead of helm-make to execute make targets. But we still rely on helm-make due to it's more efficient available targets lookup function compared to that of makefile-executor. Running make targets is bound to C-c C-m now which is nice and fast, and completes via completing-read, which is currently giving a better suggested candidates via selectrum+orderless than helm-make does. And helm-make is still available via the old C-c h m keybinding. --- core/siren-core-modules.el | 1 + modules/languages/siren-makefile.el | 5 +++++ modules/navigation/siren-helm.el | 10 ---------- modules/tools/siren-makefile-executor.el | 24 ++++++++++++++++++++++++ straight/versions/default.el | 1 + 5 files changed, 31 insertions(+), 10 deletions(-) create mode 100644 modules/tools/siren-makefile-executor.el diff --git a/core/siren-core-modules.el b/core/siren-core-modules.el index 3204de4..2e94731 100644 --- a/core/siren-core-modules.el +++ b/core/siren-core-modules.el @@ -147,6 +147,7 @@ (require 'siren-helm-make) (require 'siren-httprepl) (require 'siren-kubernetes) +(require 'siren-makefile-executor) (require 'siren-restclient) ;; XWidgets diff --git a/modules/languages/siren-makefile.el b/modules/languages/siren-makefile.el index 5d4c92b..6c9bd5f 100644 --- a/modules/languages/siren-makefile.el +++ b/modules/languages/siren-makefile.el @@ -7,12 +7,17 @@ ;;; Code: (require 'siren-display-indentation) +(require 'siren-makefile-executor) (use-package make-mode :straight (:type built-in) :hook (makefile-mode . siren-makefile-mode-setup) + :bind + (:map makefile-mode-map + ("C-c C-m" . makefile-executor-execute-project-target)) + :init (add-to-list 'siren-indent-sensitive-modes 'makefile-mode) diff --git a/modules/navigation/siren-helm.el b/modules/navigation/siren-helm.el index 672dd03..ad16357 100755 --- a/modules/navigation/siren-helm.el +++ b/modules/navigation/siren-helm.el @@ -112,16 +112,6 @@ (advice-add 'helm :before 'siren-helm--hide-neotree) (advice-add 'helm :before 'siren-helm--hide-treemacs)) -(use-package helm-command - :straight helm - :after (helm-global-bindings) - :bind - ("C-c C-m" . helm-M-x) - - :custom - (helm-M-x-always-save-history t) - (helm-M-x-fuzzy-match t)) - (use-package helm-elisp :straight helm :after (helm-global-bindings) diff --git a/modules/tools/siren-makefile-executor.el b/modules/tools/siren-makefile-executor.el new file mode 100644 index 0000000..e1cb850 --- /dev/null +++ b/modules/tools/siren-makefile-executor.el @@ -0,0 +1,24 @@ +;;; siren-makefile-executor.el --- jimeh's Emacs Siren: makefile-executor configuration. + +;;; Commentary: + +;; Basic configuration for makefile-executor. + +;;; Code: + +(require 'helm-make) + +(use-package makefile-executor + :hook + (makefile-mode . makefile-executor-mode) + + :bind + ("C-c C-m" . makefile-executor-execute-project-target) + + :config + ;; Replace get targets function with that from helm-make as it faster and more + ;; efficient by not needing to write any temporary files to disk. + (defalias 'makefile-executor-get-targets 'helm--make-target-list-qp)) + +(provide 'siren-makefile-executor) +;;; siren-makefile-executor.el ends here diff --git a/straight/versions/default.el b/straight/versions/default.el index cbae60a..aa6d5ff 100644 --- a/straight/versions/default.el +++ b/straight/versions/default.el @@ -117,6 +117,7 @@ ("marginalia" . "db5812c8750f729627a927aa1d0dd9178ffc2b58") ("markdown-mode" . "f28e263b915d48ee9757990da1cdd160b355cb8c") ("melpa" . "2571aed58ce9c4df998588cbcffdde704f4dce54") + ("makefile-executor.el" . "d0a34c355fb80a8616ae7ed5eebbda8507aa14ac") ("mermaid-mode" . "562ffe86cad91627e2b94b8684818562c3ad2b5d") ("minions" . "1be68e8571336672d6cbec86246d1bf7844976be") ("mmm-mode" . "0d00cdf4d02cc166304f6967a20fa22e2eaf208b")