最近やっとABCに復帰して、B4の時にサボりすぎたことを痛感してる今日このごろです。
さて、ABCの問題をちゃんと復習して、それをメモとして残すために記事を書いています。
私は記事をmarkdownで書くのですが、記事は画面が多いほうが書きやすいのでメインPCで書いています。ついでに、コードもメインPCで書くことが増えてきました。
メインPCはwindows機でエディターはAtomを使っています。Atomはパッケージを入れるだけでいろいろなことができるので助かっています。
問題となったのは入れているパッケージの一つであるAtom-beautifyでした。エラーは、私がよく書く言語であるC++で起こりました。(gccはMinGW環境)
目次
Error1:clang-formatの使い方
これは私がバカだったので起こったエラーです。この記事の趣旨からは少し外れます。
今更なのですが、windows環境におけるAtom-BeautifyのC/C++は次のように設定します。
1.LLVMをダウンロード
https://releases.llvm.org/download.html のPre-Built Binaries:にあるwindws(64-bit)(.sig)またはwindows(32-bit)(.sig)をクリックしてexeファイルをダウンロードします。
2.LLVMをインストール
exeファイルを開いてインストールします。途中でPATHを通すか聞かれますが、デフォルトのNoで行きます。
3.Atom-Beautifulを入れる
InstallからAtom-Beautifulを検索、パッケージをインストール。
4.Clang-formatのPathを入れる
Atom-BeautifyのSettingを開いて、Executables→ClangFormat→Binary/Script Pathの下の入力欄にclang-format.exeのpathを通します。LLVMインストール時にいじってなければ、C:\Program Files\LLVM\bin\clang-format.exeで良いと思います。
5.Clang-formatを使う設定にする
Atom-BeautifyのSettingから、C++(今回はC++で書いたソースコードを整形するため。C言語ならC)を開く。
Default Beautifierをclang-formatに。Beautify On Saveにチェック。
これでcppファイルを保存する度にAtom-Beautifyが自動整形してくれる・・・はずでした。
Error2.Callback must be a function
cppファイルを保存するとこのようなエラーが出てきました。
とりあえず調べてみると、Atom-BeautifyのIssuesにこんなのがありました。
Clang Format error linux #2290
callbackについては、node.jsの公式ドキュメントでv7から第3引数が必須になったらしいです。
そういうことで、Issueでは第3引数を入れるようにしています。
変更の仕方は次の通り
1.clang-coffeeを開く
AtomのSettingを開いて、"設定フォルダを開く"をクリック。
新しくウィンドウが開くので、.atom→packeages→atom-beautfy→src→clang-format.coffeeでclang-coffeeを開く。
2.84行目に第3引数を挿入
return @exe("clang-format").run([
@dumpToFile(dumpFile, text)
["--style=file"]
]).finally( ->
fs.unlink(dumpFile) )
)
を
return @exe("clang-format").run([
@dumpToFile(dumpFile, text)
["--style=file"]
]).finally( ->
fs.unlink(dumpFile, ->) )
)
に変更。要するにAtom側で84行目のfs.unlink(dumpFile)をfs.unlink(dumpFile, ->)に変えればOKです。
3.結果
じゃあこれで動くって言ってるし、やってみようとやったのですが変わらなかったです。
ケツにブランケット足したらできたよ!とかwindows10環境でもできたよ!ってコメントがあるのですが、私の環境ではだめでした。
どうしよう?
Solution:clang-formatを使う
Atom-Beautifyだと動かなかったのですが、偶然いいパッケージを見つけました。
まんまの名前です。Atomにclang-foramtをインストールして、clang-formatのsettingから"Format C++ on save"にチェックを入れるだけ。
これで自動整形されるようになりました。
参考文献
Clang Format error linux #2290