Skip to content

teknql/fabb

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

41 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Fabb

A babashka-tasks porcelain inside emacs.

Development

Doom looks for local packages in two dirs, including ~/.doom.d/{local-repo}.

A symlink to there, plus the following in package.el addition, then a doom sync worked for me.

# linux
ln -s ~/.doom.d/fabb ~/teknql/fabb

# osx
ln -s ~/teknql/fabb ~/.doom.d/fabb
;; doom packages.el
(package! fabb :recipe (:local-repo "fabb" :build (:not compile)))

Then you can configure fab like:

;; doom config.el
(map!
 (:leader :desc "Fabb Status" :nv "f" #'fabb-status))

(use-package! fabb
  :config
  (map!
   (:map fabb-mode-map
    :n "/" #'fabb-invoke-ivy
    :n "?" #'fabb-dispatch)))

Configuring from the doom config fixes some common bindings issues, given that many of the bindings get overwritten by doom/evil/etc, and it doesn’t seem worth adding hacks into fabb to work around that.

todo

[ ] document suggested workflows

[ ] handle bindings properly

[ ] document/handle dependencies

Things may only work due to implicit deps in my config right now

The linter led me to require these:

(require 's)
(require 'parseedn)
(require 'compile)
(require 'ivy)
(require 'evil)
(require 'cl-lib)

Not all of these are strictly necessary

[ ] don’t run ivy for non-ivy users

status

Fabb is quite useful in my daily work already! There may be some rough edges, but it’s quicker to run bb commands than popping open a shell in emacs or otherwise.

Currently I configure the bindings in my personal doom config like so:

(map!
 (:leader :desc "Fabb Status" :nv "f" #'fabb-status))

(map!
 (:after fabb
  (:map fabb-mode-map
   :n "i" #'fabb-invoke-ivy
   :n "?" #'fabb-dispatch
   :n "f" #'fabb-dispatch
   :n "q" #'quit-window)

  (:map fabb-status-mode-map
   :n "r" #'fabb-status-invoke-task-and-show-buffer
   :n "R" #'fabb-status-invoke-task-in-background
   :n "e" #'fabb-status-edit-and-invoke-task
   :n "RET" #'fabb-status-show-task-buffer
   :n "x" #'fabb-kill-fabb-buffers

   :n "j" #'fabb-status-goto-next-task
   :n "k" #'fabb-status-goto-previous-task)

  (:map fabb-task-mode-map
   :n "i" #'fabb-invoke-ivy
   :n "?" #'fabb-dispatch

   :n "e" #'fabb-task-edit-and-reinvoke-task
   :n "r" #'fabb-task-reinvoke-task-prompt
   :n "R" #'fabb-task-reinvoke-task-no-prompt))

 (:map compilation-mode-map
  :n "C-k" nil
  :n "C-j" nil)
 (:map compilation-minor-mode-map
  :n "C-k" nil
  :n "C-j" nil))

(use-package! fabb)

About

A fabulous porcelain for bb in emacs

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published