hitode909の日記

趣味はマリンスポーツですの日記です

quickrun.elをcompileで動かすやつ

quickrun.el,便利だから使っているのだけど,実行が終了するまで結果を見れないのが不便だった.
途中でsleepしている,外部と通信している,間違って無限ループしている,などのときに困ってた.
compileを使って実行するようにしてみた.
出力が逐次表示されて便利.

(defun my-quickrun ()
  "Run commands quickly for current buffer"
  (interactive)
  (quickrun-common (point-min) (point-max)))

(defun my-quickrun-with-arg (arg)
  "Run commands quickly for current buffer with arguments"
  (interactive
   (list (read-string "QuickRun Arg: ")))
  (let ((quickrun-option-args arg))
    (my-quickrun)))

(defun my-quickrun-common (start end)
  (let* ((src (file-name-nondirectory (buffer-file-name)))
         (lang (quickrun/decide-file-type src))
         (cmd-key (or (and current-prefix-arg (quickrun/prompt))
                      quickrun-option-cmdkey
                      (quickrun/get-command-key lang)
                      (quickrun/prompt)))
         (cmd-info-hash (save-excursion (quickrun/fill-templates cmd-key src))))
    (setq quickrun-last-lang cmd-key)
    (unless quickrun/compile-only-flag
      (compile (gethash :exec cmd-info-hash)))))

quickrun.elをcompileで動かすやつ — Gist


ほかにいい方法ありましたら教えてください.

追記

quickrun.elが神アップデートされたので上記は不要です.