yagshi's website
emacsでPlatformIO開発

emacsでPlatformIO開発

やっぱりぼくは VSCode はどうしても手(と目)に馴染めなくてやっぱり emacs で開発したい、と思ったので頑張ったらできました。

なお、この記事で書いているターゲットはいわゆる Arduino フレームワークなのでそれ以外は違うかもしれません。あと、ぼくの環境は emacs + lsp なので eglot の場合は特に下記の手順 1 が違ってくるはずです (のでAIにでもお問い合わせください)。

  1. PIO の準備
    ここはまぁ、VSCode でやるのが楽でいいかと。ただ CLI で使えるようにパスは通しておきましょう。

  2. 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/*-elf-g++")))))
    
  3. プロジェクトルートで pio -t compiledb を実行して compile_commands.json を作ります。

  4. emacs を起動してこんなふうに LSP が機能してればまずは ok。注意しなきゃならないのは「概ねいい感じなんだけど LcdDisplay でLSPが働かない」ケースがあること。その対策が上記 1. なので Lcd, Display は要チェック。 screenshot

  5. デバイスでの実行は pio -t upload -t monitor です。