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が
表示されてしまう。これはどうしたら良いのだろうか。