1
0

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.

flycheck-smlsharpをつくった

Last updated at Posted at 2019-12-16

2017年末に作っていて記事にしとこうと思ったのに忘れてた。

GitHubレポジトリ

flycheck-smlsharp

これは何?

demo

EmacsのflycheckでSML#コンパイラを使うパッケージ。
ファイルを保存したときに、SML#コンパイラを呼び出して静的解析の結果を得る。

flymake-smlsharpを作っているκeenさんがいたので、自分が使っているflycheckでも欲しいと思って作った。

インストール方法

GitHubを見て。

leaf.elを使ってれば、楽ちんでインストールできる。

(leaf flycheck-smlsharp :require t
  :el-get (flycheck-smlsharp
           :url "https://github.com/yonta/flycheck-smlsharp.git"))

制限

ファイルを変更するたびにflycheckが走る、オンザフライの静的解析を実現できなかった
flycheckはオンザフライのチェックを行うとき、ソースファイルをコピーした一時ファイルを作って静的解析を行おうとする。
一方で、SML#のコンパイラがソースファイルを静的解析するためには、ソースファイル(.sml)以外にもインタフェースファイル(.smi)が必要である。
普通は、このソースファイルとインタフェースファイルの名前が一致する必要がある。1
よって、オンザフライのチェックを実現するには、一時ファイルの名前を取得して、同じ名前のインタフェースファイルをコピーして作る必要がある。
今回はそこまで行っていない。

参考文献

作るにあたって参考にしたサイトや記事など。
これを紹介したくて、この記事を書いた。

  1. C言語のソースとヘッダーの関係のように、ソースファイルの中で自身のインタフェースファイルの指定もできる。指定がなかった場合は、コンパイラは同じ名前のインタフェースファイルを探す。指定しないほうが他SMLコンパイラとの互換性もあるため、指定してないSML#ソースファイルが多いのが実情である。

1
0
0

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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?