• 作成:

EmacsのquickrunでHaskellを実行する時にシステムのghcではなくStackのghcを使ってもらう方法

syohex/emacs-quickrun: Run command quickly. This packages is inspired quickrun.vim は初期設定では以下の通りrunghcをそのまま実行してHaskellを実行します.

    ("haskell" . ((:command . "runghc")
                  (:description . "Run Haskell file with runghc(GHC)")))

私はStackを使ってHaskellコンパイラを入手して実行しているのでこれでは実行できません. またStackのglobalにインストールしたライブラリも使用できません.

もちろんalistを編集すれば簡単に切り替えは可能でしょうが, あまり連想リストを直接弄りたくはありません.

設定する関数が多分あるはずだと思って探しました.

quickrun-add-commandを使えば良いようです. いや, 完全に追加ならこれで良いですが, 多分Haskell設定を上書きするのでquickrun--override-commandを使うのが正解でしょう.

(with-eval-after-load 'quickrun
  (quickrun--override-command "haskell" '((:command . "stack runghc") (:description . "Run Haskell file with Stack runghc(GHC)"))))

で正解でした.

と思ったのですがソースコードではなくドキュメントを読んだら quickrun-add-command:override tをつけられるようです. こちらの方が多分公開関数で行儀が良いでしょう.

(with-eval-after-load 'quickrun
  (quickrun-add-command "haskell"
    '((:command . "stack runghc")
      (:description . "Run Haskell file with Stack runghc(GHC)"))
    :override t))

で真の解決です.