fnwiya's quine

自分自身を出力するブログ

emacs起動時にバックグラウンド(非同期)でシェルコマンドを走らせる

emacsは毎日起動しますよね?
だったらライブラリのアップデートなどをその起動時に自動で行うようにしたら便利なのでは?ということで設定しました。
ポイントはasync-shell-commandを使うことでバックグラウンドで起動し、
特に意識することなく普通に他の作業ができることと、
save-window-excursionに設定することでwindow分割やpopupの発生を防いでいることです。
出力結果はAsync Shell Commandバッファに出ています。
とりあえずhomebrewとapt-getのアップデートを設定しておきました。(OSの判定に統一感がないのはご容赦を)
cronで定期実行もいいですが、emacsesにはこちらもおすすめです。

(cond
 ((or (eq window-system 'ns) (eq window-system 'mac))
  (add-hook 'after-init-hook
            (lambda()
              (save-window-excursion
                (async-shell-command "brew update && brew upgrade --all && brew doctor")
              )
              )))
 ((eq system-type 'gnu/linux)
  (add-hook 'after-init-hook
            (lambda()
              (save-window-excursion
                (async-shell-command "sudo apt-get update && sudo apt-get upgrade && sudo apt-get autoremove")
              )
              )))
 )