projector
is a lightweight Emacs library for managing project-aware
shell
and shell-command
buffers. It leverages the great
projectile
project
interaction library to make it easy to manage command line tools.
For async processes, it uses
alert
for handling the exit
message. This makes it easy to hook into notification programs like
terminal-notifier
or
growlnotify
.
Recommended install from MELPA with M-x package-install projector
.
Example setup:
(require 'projector)
(setq alert-default-style 'notifier)
(setq projector-always-background-regex '("^mysql.server\\.*" "^powder\\.*"))
(setq projector-command-modes-alist '(("^heroku run\\.*" . inf-ruby-mode)))
You can set this to a list of regex patterns for commands that should
always run in the background and will alert
on completion.
An alist of command patterns to run in specific modes. The alist
should follow the format of (COMMAND-REGEX . MODE)
.
The default command to run with
projector-run-default-shell-command
. This is usually most helpful to
set on a directoy local level via a
.dir-locals.el
file:
((nil . ((projector-default-command . "foreman start"))))
Run the named shell command from the current project root in a
dedicated buffer. With the C-u
prefix, run the process in the
background and output on exit to alert
.
Same as running (projector-run-shell-command-project-root)
with the
C-u
prefix.
Run the named shell command from the current directory in a dedicated
buffer. With the C-u
prefix, run the process in the background and
output on exit to alert
.
Same as running (projector-run-shell-command-current-directory)
with
the C-u
prefix.
Execute projector-default-command
at the project root in a dedicated
buffer. With the C-u
prefix, run the process in the background and
output on exit to alert
.
Find or create a dedicated shell-mode
buffer for the current
project.
Use completing-read
to find or create a shell-mode
buffer for a
project.
Use completing-read
to switch to any shell buffer created by projector
.
Use completing-read
to switch to any shell buffer created by
projector
in the current project.
Switch to another projectile
project and run a shell command
from that project's root.
Switch to another projectile
project and run a shell command
in the background from that project's root.
Switch to another projectile
project and run the default shell
command from that project's root.
I will leave the key-binding of these up to you, or you can just call
them with M-x
if you'd prefer.