emacsでPlatformIO開発
やっぱりぼくは VSCode はどうしても手(と目)に馴染めなくてやっぱり emacs で開発したい、と思ったので頑張ったらできました。
なお、この記事で書いているターゲットはいわゆる Arduino フレームワークなのでそれ以外は違うかもしれません。あと、ぼくの環境は emacs + lsp なので eglot の場合は特に下記の手順 1 が違ってくるはずです (のでAIにでもお問い合わせください)。
-
PIO の準備
ここはまぁ、VSCode でやるのが楽でいいかと。ただ CLI で使えるようにパスは通しておきましょう。CLIだけでやりたければ基本的には以下の通りでいいはずです。- プロジェクトフォルダ掘って、
- その中で
pio initして、 platformio.iniを編集
-
init.el の編集
ここが一番ハマりました。どうも clangd がデフォルトでは PIO のクロスコンパイラを使ってくれず、そのためそっちにだけある標準的なライブラリなどが見えないのが問題みたい。AI に教えてもらいながらこんなふうにしたらいけました。(use-package lsp-mode :ensure t :demand t :init (setq lsp-clients-clangd-args (list "--header-insertion-decorators=0" (concat "--query-driver=" (expand-file-name "~/.platformio/packages/toolchain-*/bin/*"))))) -
プロジェクトルートで
pio run -t compiledbを実行してcompile_commands.jsonを作ります。 -
emacs を起動してこんなふうに LSP が機能してればまずは ok。注意しなきゃならないのは「概ねいい感じなんだけど
LcdやDisplayでLSPが働かない」ケースがあること。その対策が上記 1. なのでLcd,Displayは要チェック。
-
デバイスでの実行は
pio run -t upload -t monitorです。