こんにちは、chibaです!
本当にネタ切れなので、どうでも良いレベルのEmacsの日々を書きます。
emacsのVCモードでは、gitが使えるのですが、git pushはしてくれないらしく、これだけシェルで実行していたりしました。
いやいやこれでは、いけないということで、コマンドを作成。
default-directoryにパスを束縛すれば、そのディレクトリで実行される様子(この辺あまり良く分かっていないのですが…)
ちなみに、無駄にマクロにしています。コマンド名にはスペースも使えるようなので、LispWorksのエディタみたいなコマンド名にできるようなマクロです。
anything.elで絞り込むのでこういう名前でも問題ないみたいですね。
(defmacro defcommand (name lambda-list &rest forms) (let* ((lambda-list (copy-list lambda-list)) (iarg (getf lambda-list '&interactive))) `(progn (defun ,(intern name) ,(progn (remf lambda-list '&interactive) lambda-list) (interactive ,iarg) ,@forms) ,name))) (defcommand "Git Push" () (let ((default-directory (file-name-directory (buffer-file-name)))) (shell-command "git push") ))
■