Atom-Beatifyとclang-format

投稿者: | 2020年5月11日
atom-beauty

最近やっと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.htmlPre-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ファイルを保存するとこのようなエラーが出てきました。

callback

とりあえず調べてみると、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だと動かなかったのですが、偶然いいパッケージを見つけました。

clang-format

まんまの名前です。Atomにclang-foramtをインストールして、clang-formatのsettingから"Format C++ on save"にチェックを入れるだけ。

これで自動整形されるようになりました。

参考文献

Clang Format error linux #2290

【2019年6月版】fs.writeFile したら ERR_INVALID_CALLBACK ですって

clang-format

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください