fastri-server が起動しているか気にしたくない(修正版)
この記事は旧くなっています。 d:id:elim:20080930:1223721748 を参照ください。
id:elim:20080410:force_start_fastri_server が間違っていたので訂正します。
ri に defadvice していましたが、これでは advice が働かずに進んでしまい、ri-ruby.el に "Couldn't start ruby script" と叱られてしまいます*1。
以下のように改変しました。
- ri-ruby-get-process への advice へ変更しました。
- astri-server の起動完了を STDOUT への出力で確認していましたが、実際に fri で引けるか試すように変更しました。
(defun force-start-fastri-server () (let* ((progname "fastri-server") (buffname (format "*%s*" progname))) (with-temp-buffer (call-process-shell-command (format "ps uxww |sed -e '/%s/!d' -e '/sed/d'" progname) nil t) (goto-char (point-min)) (unless (re-search-forward progname nil t) (with-current-buffer (get-buffer-create buffname) (erase-buffer) (start-process progname buffname progname) (while (not (progn (sit-for 0.5) (with-temp-buffer (call-process-shell-command (format "fri 'Kernel#lambda'" progname) nil t) (goto-char (point-min)) (re-search-forward "lambda" nil t)))))))))) (defadvice ri-ruby-get-process (before ri/force-start-fastri-server activate) (force-start-fastri-server))
*1:interactive で引数を決定しているからでしょうか?