windows上のemacsでIMEを上手くコントロールできないため、 VisualStudio Code(以下VS Codeと記す)の環境整備を頑張った所、 かなり使えるようになってきた。 これで移行できるかもしれない。
VS Codeでstm32のプログラミング電子工作プログラミング
Windows上の上のemacsといえば、 昔はmeadowとか使って不満は無かったのだが、 更新されなくなり、 gnupack の emacs だとIMEパッチが当たっていて 良いのだが、 makeコマンドが無い? 導入方法がわからないため、 導入が楽なcygwinのemasを使用し、 日本語はだましだまし使っていた。
今回、stm32のプログラムを開発するに当たって、 日本語のメモをたくさん書いていきたいと考えたため emacsに我慢できなくなり、vscodeの 環境構築にトライしてみた。 electronのプログラムで VS Codeに慣れてきたというのもある。
makeの実行
まず、vscodeからmakeコマンドの起動。 タスクの構成で、 tasks.jsonファイルを 以下のように設定することで何とかなった。
// See https://go.microsoft.com/fwlink/?LinkId=733558 // for the documentation about the tasks.json format "version": "2.0.0", "tasks": [ { "label": "make", "type": "shell", "command": "/c/MinGW/msys/1.0/bin/make.exe write ", "options": { "cwd": "${workspaceFolder}/src" }, "group": { "kind": "build", "isDefault": true }, "presentation": { "echo": true, "reveal": "always", "focus": false, "panel": "new", "showReuseMessage": true }, "problemMatcher": { "owner": "gcc", "fileLocation": [ "relative", "${workspaceRoot}/src" ], "pattern": { "regexp": "^(.*):(\\d+):(\\d+):\\s+(.*):\\s+(.*)$", "file": 1, "line": 2, "column": 3, "endLine": 2, "endColumn": 3, "severity": 4, "message": 5 } } } ] }
problemMatcherも定義しているので、 コンパイル時のエラーも「問題」パネルを 開けば、クリック一発で問題箇所を開くことができる。
emacsのnext-errorコマンドみたいに、 1コマンドで「問題」パネルを開き、最初の問題を選択してくれると 嬉しいのだが、そのようなコマンドを未だ発見できていない。
プログラムの自動フォーマット
keybinds.jsonで ctrl+I を押した時 editor.action.formatが呼び出され インデントの修正等、自動で行われるようにしているのだが、 Cのプログラムを編集しているときctrl+Iを押しても、 Cのフォーマッタが無いというようなエラーが表示されるだけで、 フォーマットされない。
そこで、 拡張機能 Microsoft C/C++ for VS Codeを導入。 無事、フォーマットされるようになった。
includePathの設定
しかし、使っていると includePathの設定がされていない、 というメッセージが出るようになる。 面倒で無視していたのだが、 C/C++拡張機能のお蔭で、高度な機能(intelliSenseとか 定義に移動とか)使えるようなので、 真面目に設定してみた所、 設定ファイルc_cpp_properties.jsonは 次のようになった。
{ "configurations": [ { "name": "Win32", "includePath": [ "C:\\cygwin64\\usr\\include", "C:\\cygwin64\\usr\\include\\w32api", "C:\\gnu_tools_arm_embedded\\6-2017-q2-update\\arm-none-eabi\\include", "C:\\gnu_tools_arm_embedded\\6-2017-q2-update\\lib\\gcc\\arm-none-eabi\\6.3.1\\include", "${workspaceFolder}\\src" ], "defines": ["__CYGWIN__"], "intelliSenseMode": "clang-x64", "compilerPath": "/c/gnu_tools_arm_embedded/6-2017-q2-update/bin/arm-none-eabi-gcc.exe", "cStandard": "c11", "cppStandard": "c++17" } ], "version": 4 }
これで、だいたい、使えるようになったのだが、まだ問題がある。
なんか includePathに定義していないPath
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include
が含まれているようなのである。
stdint.hで「定義へ移動」とすると、このフォルダーのstdint.hが
表示されてしまう。これはどうしたら良いのだろうか。