From 3f21d8267ae9ce90d71ec685b516460f2fea6156 Mon Sep 17 00:00:00 2001 From: Seong Yong-ju Date: Mon, 11 May 2020 23:25:46 +0900 Subject: [PATCH] Add tools/taskrunner module Co-authored-by: chrunchyjesus --- init.example.el | 1 + modules/config/default/+emacs-bindings.el | 6 +++- modules/config/default/+evil-bindings.el | 8 +++-- modules/tools/taskrunner/README.org | 38 +++++++++++++++++++++++ modules/tools/taskrunner/autoload.el | 9 ++++++ modules/tools/taskrunner/config.el | 11 +++++++ modules/tools/taskrunner/packages.el | 14 +++++++++ 7 files changed, 84 insertions(+), 3 deletions(-) create mode 100644 modules/tools/taskrunner/README.org create mode 100644 modules/tools/taskrunner/autoload.el create mode 100644 modules/tools/taskrunner/config.el create mode 100644 modules/tools/taskrunner/packages.el diff --git a/init.example.el b/init.example.el index 370dd77d4..4c94ef380 100644 --- a/init.example.el +++ b/init.example.el @@ -98,6 +98,7 @@ ;;pdf ; pdf enhancements ;;prodigy ; FIXME managing external services & code builders ;;rgb ; creating color strings + ;;taskrunner ; taskrunner for all your projects ;;terraform ; infrastructure as code ;;tmux ; an API for interacting with tmux ;;upload ; map local to remote projects via ssh/ftp diff --git a/modules/config/default/+emacs-bindings.el b/modules/config/default/+emacs-bindings.el index ac6310c75..54b7f9ca4 100644 --- a/modules/config/default/+emacs-bindings.el +++ b/modules/config/default/+emacs-bindings.el @@ -209,9 +209,13 @@ :desc "Search project for symbol" "." #'+default/search-project-for-symbol-at-point :desc "Find file in other project" "F" #'doom/find-file-in-other-project :desc "Search project" "s" #'+default/search-project - :desc "List project tasks" "t" #'magit-todos-list + :desc "List project todos" "t" #'magit-todos-list :desc "Open project scratch buffer" "x" #'doom/open-project-scratch-buffer :desc "Switch to project scratch buffer" "X" #'doom/switch-to-project-scratch-buffer + (:when (and (featurep! :tools taskrunner) + (or (featurep! :completion ivy) + (featurep! :completion helm))) + :desc "List project tasks" "z" #'+taskrunner/project-tasks) ;; later expanded by projectile (:prefix ("4" . "in other window")) (:prefix ("5" . "in other frame"))) diff --git a/modules/config/default/+evil-bindings.el b/modules/config/default/+evil-bindings.el index 2cc5d3f40..49221a32d 100644 --- a/modules/config/default/+evil-bindings.el +++ b/modules/config/default/+evil-bindings.el @@ -573,10 +573,14 @@ :desc "Find recent project files" "r" #'projectile-recentf :desc "Run project" "R" #'projectile-run-project :desc "Save project files" "s" #'projectile-save-project-buffers - :desc "List project tasks" "t" #'magit-todos-list + :desc "List project todos" "t" #'magit-todos-list :desc "Test project" "T" #'projectile-test-project :desc "Pop up scratch buffer" "x" #'doom/open-project-scratch-buffer - :desc "Switch to scratch buffer" "X" #'doom/switch-to-project-scratch-buffer) + :desc "Switch to scratch buffer" "X" #'doom/switch-to-project-scratch-buffer + (:when (and (featurep! :tools taskrunner) + (or (featurep! :completion ivy) + (featurep! :completion helm))) + :desc "List project tasks" "z" #'+taskrunner/project-tasks)) ;;; q --- quit/session (:prefix-map ("q" . "quit/session") diff --git a/modules/tools/taskrunner/README.org b/modules/tools/taskrunner/README.org new file mode 100644 index 000000000..085e0debf --- /dev/null +++ b/modules/tools/taskrunner/README.org @@ -0,0 +1,38 @@ +#+TITLE: tools/taskrunner +#+DATE: November 9, 2019 +#+SINCE: {replace with next tagged release version} +#+STARTUP: inlineimages + +* Table of Contents :TOC_3:noexport: +- [[#description][Description]] + - [[#module-flags][Module Flags]] + - [[#plugins][Plugins]] +- [[#prerequisites][Prerequisites]] +- [[#features][Features]] +- [[#configuration][Configuration]] +- [[#troubleshooting][Troubleshooting]] + +* Description +This module integrates [[https://github.com/emacs-taskrunner/emacs-taskrunner][Taskrunner]] into Doom Emacs, which scraps runnable tasks +from build systems like make, gradle, npm and the like. + +** Module Flags +This module provides no flags. + +** Plugins ++ [[https://github.com/emacs-taskrunner/emacs-taskrunner][emacs-taskrunner]] ++ [[https://github.com/emacs-taskrunner/ivy-taskrunner][ivy-taskrunner]] ++ [[https://github.com/emacs-taskrunner/helm-taskrunner][helm-taskrunner]] + +* Prerequisites +This module has no prereqisites. + +* Features +Keybindings + +| Binding | Description | +| ~p z~ | ~List project tasks~ | + +* Configuration + +* Troubleshooting diff --git a/modules/tools/taskrunner/autoload.el b/modules/tools/taskrunner/autoload.el new file mode 100644 index 000000000..da91b970a --- /dev/null +++ b/modules/tools/taskrunner/autoload.el @@ -0,0 +1,9 @@ +;;; app/taskrunner/autoload.el -*- lexical-binding: t; -*- + +;;;###autoload +(defun +taskrunner/project-tasks () + "Invokes `ivy-taskrunner' or `helm-tasksrunner', depending on which is +available." + (interactive) + (cond ((featurep! :completion ivy) (ivy-taskrunner)) + ((featurep! :completion helm) (helm-taskrunner)))) diff --git a/modules/tools/taskrunner/config.el b/modules/tools/taskrunner/config.el new file mode 100644 index 000000000..1d035b48c --- /dev/null +++ b/modules/tools/taskrunner/config.el @@ -0,0 +1,11 @@ +;;; tools/taskrunner/config.el -*- lexical-binding: t; -*- + +(use-package! helm-taskrunner + :when (featurep! :completion helm) + :defer t + :config (helm-taskrunner-minor-mode +1)) + +(use-package! ivy-taskrunner + :when (featurep! :completion ivy) + :defer t + :config (ivy-taskrunner-minor-mode +1)) diff --git a/modules/tools/taskrunner/packages.el b/modules/tools/taskrunner/packages.el new file mode 100644 index 000000000..91d6da641 --- /dev/null +++ b/modules/tools/taskrunner/packages.el @@ -0,0 +1,14 @@ +;; -*- no-byte-compile: t; -*- +;;; tools/taskrunner/packages.el + +(package! taskrunner :pin "716323aff410b4d864d137c9ebe4bbb5b8587f5e") + +(when (featurep! :completion helm) + (package! helm-taskrunner + :pin "70ef8117aafdc01a1f06151a82cecb9a2fcf4d32" + :recipe (:host github :repo "emacs-taskrunner/helm-taskrunner"))) + +(when (featurep! :completion ivy) + (package! ivy-taskrunner + :pin "c731ee6279f65061ef70e79d3818ea1d9678e6da" + :recipe (:host github :repo "emacs-taskrunner/ivy-taskrunner")))