🍣
2023年に Sublime Text で Haskell を書いていく
まえがき
うまくいかなかったのがなんとかうまくいったので共有します
なぜSublime Textを2023に使っているんですか
逆張りたいからです。
筆者の環境
- openSUSE Leap 15.4
- {Stack 2.9.3 + Cabal 3.6.2.0 + GHC(Any version) + HLS 2.0.0.1}
- installed via ghcup
ことはじめ
わたしは Stack を ghcup でインストールしました
- Stackのインストールは済んでいる前提で話を進めていきます
hsdevのインストール
$ mkdir hsdev
$ cd hsdev
$ stack unpack hsdev
(たぶんhsdev-0.3.4.0が降ってきてunpackされます)
$ cd hsdev-0.3.4.0
$ stack init --force --resolver=lts-17.0
(リゾルバをlts-17.0としました)
$ stack install
(this may take a while です(ほぼ確))
(lts-17.0なのでghc-8.10.3が降ってきてインストールがはじまります)
(その後依存パッケージのビルドが入り、hsdevのバイナリが出力されれば成功)
(弊環境では~/.local/bin/ に出力されました)
以下、stack install
のログです
- ghc-8.10.3 のインストール + (プリコンパイルドな依存ファイル) + hsdev-0.3.4.0 のインストールです
nick@x250suse~/w/h/hsdev-0.3.4.0> stack install
[ Error ] [GHCup-00130] The version 8.10.3 of the tool ghc is not installed.
[ Info ] downloading: https://raw.githubusercontent.com/haskell/ghcup-metadata/master/ghcup-0.0.7.yaml as file /home/nick/.ghcup/cache/ghcup-0.0.7.yaml
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
[ Warn ] New ghc version available. If you want to install this latest version, run 'ghcup install ghc 9.6.2'
[ Warn ] New cabal version available. If you want to install this latest version, run 'ghcup install cabal 3.10.1.0'
[ Warn ] New stack version available. If you want to install this latest version, run 'ghcup install stack 2.11.1'
[ Info ] downloading: https://downloads.haskell.org/~ghc/8.10.3/ghc-8.10.3-x86_64-fedora27-linux.tar.xz as file /home/nick/.ghcup/tmp/ghcup-3796f009811ff553/ghc-8.10.3-x86_64-fedora27-linux.tar.xz
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 207M 100 207M 0 0 3375k 0 0:01:02 0:01:02 --:--:-- 2905k
[ Info ] verifying digest of: ghc-8.10.3-x86_64-fedora27-linux.tar.xz
[ Info ] Unpacking: ghc-8.10.3-x86_64-fedora27-linux.tar.xz to /home/nick/.ghcup/tmp/ghcup-1ee9e0f9138e3c78
[ Info ] Installing GHC (this may take a while)
[ Info ] Merging file tree from "/home/nick/.ghcup/tmp/ghcup-a4f2275a73e15fef/home/nick/.ghcup/ghc/8.10.3" to "/home/nick/.ghcup/ghc/8.10.3"
Trouble loading CompilerPaths cache: CompilerFileMetadataMismatch
aeson > using precompiled package
---
(依存パッケージのビルド)
---
aml > using precompiled package
hlint > using precompiled package
hsdev > configure (lib + exe)
hsdev > Configuring hsdev-0.3.4.0...
hsdev > build (lib + exe)
hsdev > Preprocessing library for hsdev-0.3.4.0..
hsdev > Building library for hsdev-0.3.4.0..
hsdev > Preprocessing executable 'hsdev' for hsdev-0.3.4.0..
hsdev > Building executable 'hsdev' for hsdev-0.3.4.0..
hsdev > Linking .stack-work/dist/x86_64-linux/Cabal-3.2.1.0/build/hsdev/hsdev ...
hsdev > copy/register
hsdev > Installing library in /home/nick/workspace/hsdev/hsdev-0.3.4.0/.stack-work/install/x86_64-linux/e8ed48b2692d38910680b61d4f354be36523698463fc3df4f6335c3182324f2b/8.10.3/lib/x86_64-linux-ghc-8.10.3/hsdev-0.3.4.0-9toMDbjL8mFHA3jCBXeYZF
hsdev > Installing executable hsdev in /home/nick/workspace/hsdev/hsdev-0.3.4.0/.stack-work/install/x86_64-linux/e8ed48b2692d38910680b61d4f354be36523698463fc3df4f6335c3182324f2b/8.10.3/bin
hsdev > Registering library for hsdev-0.3.4.0..
Completed 12 action(s).
Copying from /home/nick/workspace/hsdev/hsdev-0.3.4.0/.stack-work/install/x86_64-linux/e8ed48b2692d38910680b61d4f354be36523698463fc3df4f6335c3182324f2b/8.10.3/bin/hsdev to /home/nick/.local/bin/hsdev
Copied executables to /home/nick/.local/bin:
- hsdev
SublimeHaskellのインストール
Package Control がインストールされている前提です。
- Sublime Text を起動する
- Ctrl + Shift + P を押下し、
Package Control: Install Package
を選択 -
SublimeHaskell
を選択し、Enterを押下
このままだとバージョン適合チェックで弾かれるので、~/.config/sublime-text-3/Packages/SublimeHaskell/hsdev/backend.py
の HSDEV_MAX_VER
を [0, 3, 9, 0]
とかにしてやります。
SublimeHaskellの設定
~/.config/sublime-text-3/Packages/User/SublimeHaskell.sublime-settings
を編集します。
{
"auto_completion_popup": true,
// 実行ファイルへのパス
"add_to_PATH": [
"~/.local/bin/hsdev"
],
// Additional ghc options for use in ghc-mod and ModuleInspector, for example "-package ghc"
// ghcコマンドオプション一覧の参照 : http://www.kotha.net/ghcguide_ja/7.6.2/flag-reference.html
"ghc_opts":
[
"-fno-warn-type-defaults",
"-fno-warn-missing-signatures",
"-fno-warn-incomplete-patterns",
"-fwarn-unused-binds"
]
}
hsファイルを開いて、ツール → ビルドシステム → Haskell
- 問題なくビルドできればOK!
Discussion