/project-tasks

Efficient task management for your project.

Primary LanguageEmacs Lisp

project-tasks.el - Efficient task management for your project

Concept

Formed during work on projects, I need to:

  • run docker-compose up
  • access the database shell of the db service in docker-compose
  • run mitmproxy
  • run a new shell

Using org-babel of org-mode is a great solution (Literate Devops with Org-Mode).

Therefore, this package provides a convenient interface for accessing those tasks instead of accessing org-mode files and executing org-babel code blocks.

Features

  • M-x project-tasks
Find-file `project-tasks-file` org file
  -> get all src-blocks by `(org-babel-src-block-names)`
    -> display src-blocks to user
      -> user select and run `(org-babel-execute-src-block)`
  • M-x project-tasks-capture
Let `org-default-notes-file` to `current_project/project-tasks-file`
  -> `(org-capture)`
  • M-x project-tasks-jump
Find-file `current_project/project-tasks-file`

Usage

(use-package project-tasks
  :ensure t :defer t

  :straight
  ( :host github
    :repo "TxGVNN/project-tasks"
    :files ("*.el"))

  :after (project)
  :commands (project-tasks)

  :init
  ;; Show project-tasks when switching projects
  (add-to-list 'project-switch-commands '(project-tasks "tasks") t)
  ;; Add action to embark-file map
  (with-eval-after-load 'embark
    (define-key embark-file-map (kbd "P") #'project-tasks-in-dir))

  :custom
  ;; Set the default filename in project
  (project-tasks-file "tasks.org")
  ;; Set the function to get current project dir
  (project-tasks-root-func #'project-tasks-project-root)

  ;; Bind project-tasks to project keymap
  :bind
  (:map project-prefix-map
        ("P" . project-tasks)
        ("o" . project-tasks-capture)
        ("O" . project-tasks-jump))
  )

Notice

You need to ensure that your code blocks work as intended. This package serves as an interface for interacting with Org files but does not affect your Org configuration.