こんにちは、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") ))
■