ert.el が素敵 その弐

どもです。
食べ蒔きしたミディトマトがやっとこさ色付き初めてかなりうれしく,
同時に,ハダニ,サビダニ避けに毎日霧吹きで水をかけているので,
これからは実割れを防ぐために気をつけなければと思うわけです。
そうそう。自作育苗容器に放置しているチマサンチュがぐんぐん育っていますが,
今日,葉に穴が空いているのを発見。これは間違いなく,虫。
目をこらしてなんかの幼虫(1cmもない)を見つけてはすりつぶす作業に没頭。
7,8匹くらい殺めてしまった。明日も要チェックや!
というか,そのチマサンチュをさっさとどっかへ定植しないと。
にしてもチマサンチュはすげー。日当たりが大して良くもないのに,
徒長することもなく育っちゃってます。

ert.el が素敵なのですがね。

前回,Ctrl-cCtrl-c でテストを実行できるようにして大変便利になりました。
しかし,新たな問題を発見。
テストを実行後,全部passしても*ert*バッファがアクティブになってしまって,
もとのウィンドウに戻るのが非常に面倒。
M-x apropos ^ert-[^-] してそれらしいのを探してみるが,わからず。
あぁ,around なアドバイスを書けば解決と思い書いてみるがダメ。
before でもだめ。
アドバイスの実行を開始した時点で,*ert*バッファにいることがわかった。
あぁ,そんならと気づく。こないだの関数内でなんとかすればいいと。
ほいで,改良したのがこちら。

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; for ert.el
(defun my-run-ert-test-maybe ()
  (interactive)
  (when (eq major-mode 'emacs-lisp-mode)
    (save-excursion
      (beginning-of-defun)
      (let ((line (buffer-substring-no-properties (point)
                                                  (save-excursion
                                                    (end-of-line)
                                                    (point)))))
        (when (string-match "^(ert-deftest \\([^ \n]+\\) ()$" line)
          (let ((w (selected-window)) n)
            ;; Run the test.
            (ert (match-string-no-properties 1 line))
            (save-excursion
              (when (re-search-forward "Failed: \\([^ ]+\\)" nil t)
                (setq n (string-to-number (match-string-no-properties 1)))))
            (when (zerop n)
              ;; When passed, move to the original window.
              (select-window w))))))))

(define-key emacs-lisp-mode-map "\C-c\C-c" 'my-run-ert-test-maybe)

テストを実行して,Failed が0なら,もといたウィンドウに戻るようにしました。
もしくは,Failed: 以降をパースできない場合も戻ってしまうのではということに気づいたが,
不具合がでたら修正予定。
てーか,テストにこけてももといた場所にもどりたい様な気もするなぁ。
えー,とにかく,またまた便利になりましたとさ。