英語を読めばわかると言われればそれはそうなんだけど英語力クソザコなので。。。。。。。。。
developブランチで利用可能になった
linterである clj-kondo
と joker
が使えるようになった(Clojure Layerの README.org
に項目が追加されている)
https://github.com/syl20bnr/spacemacs/tree/develop/layers/%2Blang/clojure#enabling-automatic-linting
clj-kondo
は履歴でいうとコレなのかなぁ…
...
290cacf2a * [python] Bind formatter to == only for LSP backend
c4a05f7eb * Corrected keybinding collision (format-buffer)
592fb5863 * documentation formatting: Sat Aug 31 19:04:38 UTC 2019
-> b71c78655 * add flycheck-clj-kondo as an optional package
145f7e56c * [ansible] Fix void-variable company-backends
e61e91fbc * documentation formatting: Thu Aug 29 23:13:44 UTC 2019
424d02919 * Revert "[gnus] Add G prefix to evil state"
c5c63f48c * ansible: simplify filename matching re
...
該当コミット => https://github.com/syl20bnr/spacemacs/commit/b71c78655f105739c1062452fe5c60bbcaf5ea0c
clj-kondoを使う
インストール
公式いわく、
This linter based on static syntax checking and requires the clj-kondo binary installed on the system PATH that spacemacs.env includes. Please read the clj-kondo binary installation instructions
clj-kondo binary installation instructions
リンク先を読めば何とかなる(雑)。
飛んだ先は clj-kondo
のREADME。下の方に Installationというリンクがあるのでまた飛ぶ。 clj-kondo/doc/install.md
だと思う。
色々書いてあるけど、基本はMac or Linux向け。その中にぽつんと、
NPM (Linux, MacOS, Windows)
npm install -g clj-kondo
Note: on Windows this invokes the standalone jar.
これに従い、npmでインストールする(Nodeバージョンは確認してないけど 10.14.0
は大丈夫だった)
おまけ:
npm install -g
でインストールした場合、clj-kondoの更新はこんな感じ。
更新があるか確認し、
> npm outdated -g
Package Current Wanted Latest Location
clj-kondo 2019.10.11-alpha.1 2019.11.23 2020.1.13 global
Wantedのバージョンのほうが新しければ更新を行い、
> npm update -g clj-kondo
npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142
C:\nvm_windows\clj-kondo -> C:\nvm_windows\node_modules\clj-kondo\bin\clj-kondo
> clj-kondo@2019.11.23 install C:\nvm_windows\node_modules\clj-kondo
> binwrap-install
+ clj-kondo@2019.11.23
removed 1 package and updated 14 packages in 8.701s
再び npm outdated -g
で、更新された (CurrentとWantedが一致している)ことを確認する。
参考 => npm入門
spacemac側の設定
公式のEnable clj-kondo linterに書いてある。 .spacemacs
にこんな感じで追記すればいい
;; to use clj-kondo as a linter, add this variable to the clojure layer
;; wrapping the clojure layer in a list
dotspacemacs-configuration-layers
'(...
(clojure :variables
clojure-enable-linters 'clj-kondo)
)
joker
など他のlinterと併用する場合はEnable multiple lintersが示すように書く。
使えているか確認する
spacemacsを再起動して、適当な .clj
ファイルで (def- okimochi 1)
とか書けば unresolved symbol def-
とか怒ってくれる。
jokerを使う
インストール
公式には joker
のインストール方法が載ってる => https://github.com/syl20bnr/spacemacs/tree/develop/layers/%2Blang/clojure#enable-joker-linter
This linter is based on static syntax checking and requires the joker binary installed on the system PATH that spacemacs.env includes. Please read the joker binary installation instructions
やはり joker binary installation instructions
リンク先を見に行けばわかる(雑)らしい。
ちょうど joker
READMEのInstallationに飛ぶ。
On macOS, the easiest way to install Joker is via Homebrew:
やはりMacを前提とされている😇
しかし、Windows10でも使えることを仄めかす記述もある。
On other platforms (or if you prefer manual installation), download a precompiled binary for your platform and put it on your PATH.
You can also build Joker from the source code.
precompiled binary
リンクから飛ぶとGithub上のReleasesページに着く。
Windows10なら、たとえば joker-0.13.0-win-amd64.zip
をダウンロードする。
解凍したディレクトリ内には joker.exe
だけが入っているので、これを好きな場所に置く。たとえば C:\joker-0.13.0-win-amd64\joker.exe
そしてWindows環境変数Pathに、そのディレクトリを加える。たとえば上記の場所なら C:\joker-0.13.0-win-amd64
どうやらjoker
はこれでインストール完了のようだ。
spacemacs側の設定
※環境変数Pathを設定したということは、 .spacemacs.env
にも joker
のPathが書かれていなければならない。
自動で更新されない場合😇は、Pathを追記しておく。
公式のEnable joker linterにあるように、 .spacemacs
に追記する。
;; to use joker as a linter, add this variable to the clojure layer
;; wrapping the clojure layer in a list
dotspacemacs-configuration-layers
'(...
(clojure :variables
clojure-enable-linters 'joker)
)
clj-kondo
など他のlinterと併用する場合はEnable multiple lintersが示すように書く。
使えているか確認する
spacemacs再起動後、適当な .clj
ファイルで (let [a 1])
とか書けば let form with empty body
と怒ってくれる。
誤検知っぽい何かをどうにかする
正しく動いているコードでも、 joker
がエラーを出すことはある。
対処法は joker
公式のReducing false positivesに書いてある。
Leiningenプロジェクトなら、プロジェクトのルートディレクトリ直下に .joker
ファイルを置いておくと効きそう。
たとえば clojure.spec.alpha/fdef
(マクロ?)に出されるエラーを無視するなら以下のようになりそう。
{:known-macros [clojure.spec.alpha/fdef]}
まとめ
- Windows10で掃除屋を雇えた気がする