From b77160d36342e438708050a0fbff52a13b9b4a2c Mon Sep 17 00:00:00 2001 From: Ivan Kravets Date: Fri, 20 Apr 2018 13:56:04 +0300 Subject: [PATCH] Upgrade VSCode CPP manifest to v3 --- platformio/builder/tools/pioide.py | 6 ++--- .../vscode/.vscode/c_cpp_properties.json.tpl | 27 ++++++++++++++++--- 2 files changed, 27 insertions(+), 6 deletions(-) diff --git a/platformio/builder/tools/pioide.py b/platformio/builder/tools/pioide.py index 833d9b84..b8e5c346 100644 --- a/platformio/builder/tools/pioide.py +++ b/platformio/builder/tools/pioide.py @@ -53,7 +53,7 @@ def _dump_includes(env): if unity_dir: includes.append(unity_dir) - # remove dupicates + # remove duplicates result = [] for item in includes: if item not in result: @@ -101,8 +101,8 @@ def _dump_defines(env): .replace("ATMEGA", "ATmega").replace("ATTINY", "ATtiny"))) # built-in GCC marcos - if env.GetCompilerType() == "gcc": - defines.extend(_get_gcc_defines(env)) + # if env.GetCompilerType() == "gcc": + # defines.extend(_get_gcc_defines(env)) return defines diff --git a/platformio/ide/tpls/vscode/.vscode/c_cpp_properties.json.tpl b/platformio/ide/tpls/vscode/.vscode/c_cpp_properties.json.tpl index d428393d..d6a207bf 100644 --- a/platformio/ide/tpls/vscode/.vscode/c_cpp_properties.json.tpl +++ b/platformio/ide/tpls/vscode/.vscode/c_cpp_properties.json.tpl @@ -1,8 +1,19 @@ { + "!!! WARNING !!!": "PLEASE DO NOT MODIFY THIS FILE! USE http://docs.platformio.org/page/projectconf/section_env_build.html#build-flags", "configurations": [ { % import platform +% from os.path import commonprefix, dirname +% % systype = platform.system().lower() +% +% cleaned_includes = [] +% for include in includes: +% if "toolchain-" not in dirname(commonprefix([include, cc_path])): +% cleaned_includes.append(include) +% end +% end +% % if systype == "windows": "name": "Win32", % elif systype == "darwin": @@ -11,7 +22,7 @@ "name": "Linux", % end "includePath": [ -% for include in includes: +% for include in cleaned_includes: "{{include.replace('\\\\', '/').replace('\\', '/').replace('"', '\\"')}}", % end "" @@ -20,7 +31,7 @@ "limitSymbolsToIncludedHeaders": true, "databaseFilename": "${workspaceRoot}/.vscode/.browse.c_cpp.db", "path": [ -% for include in includes: +% for include in cleaned_includes: "{{include.replace('\\\\', '/').replace('\\', '/').replace('"', '\\"')}}", % end "" @@ -32,7 +43,17 @@ % end "" ], - "intelliSenseMode": "clang-x64" + "intelliSenseMode": "clang-x64", +% import re +% STD_RE = re.compile(r"\-std=[a-z\+]+(\d+)") +% +% if STD_RE.search(cc_flags): + "cStandard": "c{{ STD_RE.search(cc_flags).group(1) }}", +% end +% if STD_RE.search(cxx_flags): + "cppStandard": "c++{{ STD_RE.search(cxx_flags).group(1) }}", +% end + "compilerPath": "{{ cc_path }}" } ] } \ No newline at end of file