9
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Haskell(stack)のEmacs環境 on NixOS

Posted at

Haskell 環境

Emacsでhaskell-modeを準備する際にinteroが非常に便利だったのだけど
NixOSでは躓くこともしばしばあったためメモ

  • NixOS
    • Stack (--nix)
      • hlint
      • ghc-mod
      • hoogle
    • Emacs
      • intero

Stack (--nix)

nixpkgsでインストールする

$ nix-env -i stack

stackのsetupを行う

$ stack --nix setup

interoやその他のツール(ghc-mod,hlint,hoogle)で
依存してるライブラリを ~/.stack/config.yaml に追記する
(NixOSでない場合はそれっぽいパッケージを各自インストール)


....

nix:
  enable: true
  packages:
    - gcc      #
    - ncurses  # interoで必要
    - libcxx   #
    - icu      #
    - zlib     # hoogleで必要

stackから使うツールをインストールする

$ stack --nix install hlint ghc-mod hoogle

Emacs

Intero for Emacs の通り intero をインストール
個人的に package.el をそのまま使っているためインストール後 init.el

(require 'haskell-mode)
(require 'intero)
(add-hook 'haskell-mode-hook 'intero-mode)

実行

stackで適当なプロジェクトを作成する

$ stack --nix new myhs

emacsで myhs/src/Lib.hs を開くと intero のビルドが自動的に走り 環境構築終了

Key Function Description
C-c C-c intero-repl-eval-region 範囲選択している箇所の実行
C-c C-e intero-expand-splice-at-point
C-c TAB intero-info 定義情報を別バッファに表示
C-c C-l intero-repl-load REPLに編集中の.hsファイルを読み込む
C-c C-r intero-apply-suggestions import等で不足しているものがあったりする場合読み込んでくれる
C-c C-t intero-type-at 関数や変数の型をminiバッファに表示
C-c C-z intero-repl REPLのバッファに移動する
M-. intero-goto-definition 定義箇所にジャンプする
9
10
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?