projector 20170717.1151(in MELPA)
Lightweight library for managing project-aware shell and command buffers

概要

M-! でシェルコマンドを実行していると、
実行するコマンドがだいたい決まってくるものです。

そこで、シェルコマンド履歴を ido インターフェースで選択してみませんか?

さらにシェルコマンドの実行結果を従来の*Shell Command Output*ではなく
現在のディレクトリ(プロジェクト)とコマンドごとに保存すると
次回M-!で別のコマンドを実行しても前の実行結果は消えません。

しかも、時間がかかるコマンドを
projector-always-background-regex で設定しておけば
自動的にバックグラウンドで実行してくれます。

実行結果は alert.el(レビュー) で表示されるので、
growlnotify など好きな通知プログラムが使えます。
(デフォルトはミニバッファに表示)

projectile でプロジェクトを管理しているならば、
プロジェクトルートでコマンドを実行できます。

M-x projector-run-shell-command-current-directory
カレントディレクトリで実行
M-x projector-run-shell-command-project-root
プロジェクトルートで実行

C-uを付けて実行すると強制的にバックグラウンド実行になります。

M-!をちょっとカイゼンしたいならば入れておいて損はありません。

projector.el 本体はidoとは関係なく、
単に completing-read でシェルコマンド履歴を呼んでいるので
ido-occasional.el(レビュー) でido化しています。

20150325065951.png
Fig1: idoでコマンド履歴を選択

20150325070001.png
Fig2: 実行結果は専用バッファで表示!

インストール

パッケージシステムを初めて使う人は
以下の設定を ~/.emacs.d/init.el の
先頭に加えてください。

(package-initialize)
(setq package-archives
      '(("gnu" . "http://elpa.gnu.org/packages/")
        ("melpa" . "http://melpa.org/packages/")
        ("org" . "http://orgmode.org/elpa/")))

初めてprojectorを使う方は
以下のコマンドを実行します。

M-x package-install projector

アップグレードする方は、
以下のコマンドでアップグレードしてください。
そのためにはpackage-utilsパッケージが必要です。

M-x package-install package-utils (初めてアップグレードする場合のみ)
M-x package-utils-upgrade-by-name projector

設定 150325061231.projector.1.el(以下のコードと同一)

(require 'projectile)                   ;使おうが使わまいが必要
(require 'ido-occasional)
;;; M-!を置き換え。projectile好きならば projector-run-shell-command-project-root でもよい
(global-set-key (kbd "M-!") (with-ido-completion projector-run-shell-command-current-directory))
;;; コマンドが正規表現にマッチしていれば自動でバックグラウンド実行になる
(setq projector-always-background-regex '("^mysql.server\\.*" "^powder\\.*" "sleep"))
;;; fix bug
(defvaralias 'projector-command-history 'shell-command-history)
(define-key minibuffer-local-completion-map " " nil)

実行方法

$ wget http://rubikitch.com/f/150325061231.projector.1.el
$ emacs -Q -f package-initialize -l 150325061231.projector.1.el

本サイト内の関連パッケージ


本日もお読みいただき、ありがとうございました。参考になれば嬉しいです。