|
25 | 25 | { "include": "#conditionalControl" }, |
26 | 26 | { "include": "#loopControl" }, |
27 | 27 | { "include": "#returnControl" }, |
| 28 | + { "include": "#scopedPropertyCommand" }, |
28 | 29 | { "include": "#builtInCommands" }, |
29 | 30 | { "include": "#knownVariables" }, |
30 | 31 | { "include": "#properties" }, |
|
41 | 42 | }, |
42 | 43 | "variableReference": { |
43 | 44 | "name": "variable.other.cmake", |
44 | | - "match": "\\$\\{\\w+\\}" |
| 45 | + "begin": "\\$\\{", |
| 46 | + "beginCaptures": { "0": { "name": "punctuation.section.variable.begin.cmake" } }, |
| 47 | + "end": "\\}", |
| 48 | + "endCaptures": { "0": { "name": "punctuation.section.variable.end.cmake" } }, |
| 49 | + "patterns": [ |
| 50 | + { "include": "#knownVariables" } |
| 51 | + ] |
45 | 52 | }, |
46 | 53 | "envVariableReference": { |
47 | 54 | "name": "variable.other.env.cmake", |
|
330 | 337 | } |
331 | 338 | ] |
332 | 339 | }, |
| 340 | + "scopedPropertyCommand": { |
| 341 | + "comment": "Property commands (set_property, get_property, etc.) with scoped keywords and property names", |
| 342 | + "begin": "\\b(?i:(set_property|get_property|define_property|set_source_files_properties|set_target_properties|get_target_property|set_tests_properties|get_test_property|set_directory_properties|get_directory_property))\\b\\s*(\\()", |
| 343 | + "beginCaptures": { |
| 344 | + "1": { "name": "support.function.cmake" }, |
| 345 | + "2": { "name": "punctuation.section.arguments.begin.cmake" } |
| 346 | + }, |
| 347 | + "end": "\\)", |
| 348 | + "endCaptures": { "0": { "name": "punctuation.section.arguments.end.cmake" } }, |
| 349 | + "patterns": [ |
| 350 | + { "include": "#nestedParens" }, |
| 351 | + { |
| 352 | + "comment": "Property command scope keywords", |
| 353 | + "name": "keyword.other.cmake", |
| 354 | + "match": "\\b(?i:GLOBAL|DIRECTORY|TARGET|SOURCE|INSTALL|TEST|CACHE|PROPERTY|APPEND|APPEND_STRING|BRIEF_DOCS|FULL_DOCS|INHERITED)\\b" |
| 355 | + }, |
| 356 | + { |
| 357 | + "comment": "Well-known CMake properties for targets, sources, tests, directories, and global scope", |
| 358 | + "name": "support.type.property.cmake", |
| 359 | + "match": "\\b(?i:COMPILE_OPTIONS|COMPILE_FEATURES|COMPILE_FLAGS|COMPILE_DEFINITIONS(_\\w+)?|LINK_OPTIONS|LINK_FLAGS(_\\w+)?|LINK_LIBRARIES|LINK_DEPENDS|LINK_SEARCH_END_STATIC|LINK_SEARCH_START_STATIC|INTERFACE_COMPILE_DEFINITIONS|INTERFACE_COMPILE_OPTIONS|INTERFACE_COMPILE_FEATURES|INTERFACE_SOURCES|INTERFACE_LINK_LIBRARIES|INTERFACE_INCLUDE_DIRECTORIES|INTERFACE_SYSTEM_INCLUDE_DIRECTORIES|INTERFACE_POSITION_INDEPENDENT_CODE|INTERFACE_HEADER_SETS|PRECOMPILE_HEADERS|UNITY_BUILD(_\\w+)?|LINK_WHAT_YOU_USE|VERIFY_INTERFACE_HEADER_SETS|OPTIMIZE_DEPENDENCIES|HEADER_SETS|POSITION_INDEPENDENT_CODE|INTERPROCEDURAL_OPTIMIZATION(_\\w+)?|EXCLUDE_FROM_ALL|SOURCES|OUTPUT_NAME(_\\w+)?|RUNTIME_OUTPUT_DIRECTORY(_\\w+)?|LIBRARY_OUTPUT_DIRECTORY(_\\w+)?|ARCHIVE_OUTPUT_(DIRECTORY|NAME)(_\\w+)?|PDB_OUTPUT_DIRECTORY|PDB_NAME(_\\w+)?|INSTALL_RPATH|INSTALL_RPATH_USE_LINK_PATH|SKIP_BUILD_RPATH|BUILD_WITH_INSTALL_RPATH|INSTALL_NAME_DIR|SOVERSION|VERSION|PREFIX|SUFFIX|DEBUG_POSTFIX|\\w+_POSTFIX|LINKER_LANGUAGE|FOLDER|LABELS|TIMEOUT|WILL_FAIL|COST|PASS_REGULAR_EXPRESSION|FAIL_REGULAR_EXPRESSION|FIXTURES_REQUIRED|FIXTURES_SETUP|FIXTURES_CLEANUP|RESOURCE_LOCK|PROCESSORS|RUN_SERIAL|WORKING_DIRECTORY|GENERATED|LANGUAGE|HEADER_FILE_ONLY|SYMBOLIC|OBJECT_DEPENDS|WRAP_EXCLUDE|MACOSX_PACKAGE_LOCATION|XCODE_ATTRIBUTE_\\w+|VS_GLOBAL_\\w+|VS_DOTNET_REFERENCES|VS_SCC_(AUXPATH|LOCALPATH|PROJECTNAME|PROVIDER)|MAP_IMPORTED_CONFIG_\\w+|IMPORTED(_\\w+)?|IMPORT_PREFIX|IMPORT_SUFFIX|AUTOMOC|AUTOMOC_MOC_OPTIONS|AUTOUIC|AUTORCC|ENABLE_EXPORTS|DEFINE_SYMBOL|OSX_ARCHITECTURES(_\\w+)?|MACOSX_BUNDLE|MACOSX_BUNDLE_INFO_PLIST|MACOSX_FRAMEWORK_INFO_PLIST|MACOSX_RPATH|STATIC_LIBRARY_FLAGS(_\\w+)?|WIN32_EXECUTABLE|VS_WINRT_EXTENSIONS|VS_WINRT_REFERENCES|COMPATIBLE_INTERFACE_BOOL|COMPATIBLE_INTERFACE_STRING|COMPATIBLE_INTERFACE_NUMBER_MAX|COMPATIBLE_INTERFACE_NUMBER_MIN|NO_SONAME|HAS_CXX|GNUtoMS|FRAMEWORK|BUNDLE(_EXTENSION)?)\\b" |
| 360 | + }, |
| 361 | + { "include": "#commonArgPatterns" } |
| 362 | + ] |
| 363 | + }, |
333 | 364 | "deprecatedKeywords": { |
334 | 365 | "comment": "Deprecated CMake keywords. All previous entries (ABSTRACT_FILES, BUILD_NAME, SOURCE_FILES, SOURCE_FILES_REMOVE, VTK_MAKE_INSTANTIATOR, VTK_WRAP_JAVA, VTK_WRAP_PYTHON, VTK_WRAP_TCL, WRAP_EXCLUDE_FILES) were removed per #4613 because they were removed from CMake 20+ years ago and collide with common user variable names like SOURCE_FILES. Re-add entries here when CMake deprecates new keywords that need highlighting.", |
335 | 366 | "name": "invalid.deprecated.cmake", |
|
348 | 379 | "knownVariables": { |
349 | 380 | "comment": "Well-known CMake variables: system/platform detection, behavior-changing, build-control, and information-providing. Consolidated from systemVariables, changeBehaviorVariables, controlBuildVariables, provideInformationVariables — all rendered identically by standard themes (support.type prefix).", |
350 | 381 | "name": "support.type.variable.cmake", |
351 | | - "match": "\\b(?i:APPLE|BORLAND|CMAKE_CL_64|CMAKE_COMPILER_2005|CMAKE_HOST_APPLE|CMAKE_HOST_SYSTEM|CMAKE_HOST_SYSTEM_NAME|CMAKE_HOST_SYSTEM_PROCESSOR|CMAKE_HOST_SYSTEM_VERSION|CMAKE_HOST_UNIX|CMAKE_HOST_WIN32|CMAKE_LIBRARY_ARCHITECTURE|CMAKE_LIBRARY_ARCHITECTURE_REGEX|CMAKE_OBJECT_PATH_MAX|CMAKE_SYSTEM|CMAKE_SYSTEM_NAME|CMAKE_SYSTEM_PROCESSOR|CMAKE_SYSTEM_VERSION|CYGWIN|MSVC|MSVC_IDE|MSVC_VERSION|MSVC_TOOLSET_VERSION|UNIX|WIN32|XCODE_VERSION|ANDROID|IOS|LINUX|MSYS|WINCE|WINDOWS_PHONE|WINDOWS_STORE|CMAKE_CROSSCOMPILING|CMAKE_SIZEOF_VOID_P|BUILD_SHARED_LIBS|(CMAKE_)?(ABSOLUTE_DESTINATION_FILES|AUTOMOC_RELAXED_MODE|BACKWARDS_COMPATIBILITY|BUILD_TYPE|COLOR_MAKEFILE|CONFIGURATION_TYPES|DEBUG_TARGET_PROPERTIES|DISABLE_FIND_PACKAGE_\\w+|FIND_LIBRARY_PREFIXES|FIND_LIBRARY_SUFFIXES|IGNORE_PATH|INCLUDE_PATH|INSTALL_DEFAULT_COMPONENT_NAME|INSTALL_PREFIX|LIBRARY_PATH|MFC_FLAG|MODULE_PATH|NOT_USING_CONFIG_FLAGS|POLICY_DEFAULT_CMP\\w+|PREFIX_PATH|PROGRAM_PATH|SKIP_INSTALL_ALL_DEPENDENCY|SYSTEM_IGNORE_PATH|SYSTEM_INCLUDE_PATH|SYSTEM_LIBRARY_PATH|SYSTEM_PREFIX_PATH|SYSTEM_PROGRAM_PATH|USER_MAKE_RULES_OVERRIDE|WARN_ON_ABSOLUTE_INSTALL_DESTINATION)|(CMAKE_)?(\\w+_POSTFIX|ARCHIVE_OUTPUT_DIRECTORY|AUTOMOC|AUTOMOC_MOC_OPTIONS|BUILD_WITH_INSTALL_RPATH|DEBUG_POSTFIX|EXE_LINKER_FLAGS|EXE_LINKER_FLAGS_\\w+|Fortran_FORMAT|Fortran_MODULE_DIRECTORY|GNUtoMS|INCLUDE_CURRENT_DIR|INCLUDE_CURRENT_DIR_IN_INTERFACE|INSTALL_NAME_DIR|INSTALL_RPATH|INSTALL_RPATH_USE_LINK_PATH|LIBRARY_OUTPUT_DIRECTORY|LIBRARY_PATH_FLAG|LINK_DEF_FILE_FLAG|LINK_DEPENDS_NO_SHARED|LINK_INTERFACE_LIBRARIES|LINK_LIBRARY_FILE_FLAG|LINK_LIBRARY_FLAG|MACOSX_BUNDLE|NO_BUILTIN_CHRPATH|PDB_OUTPUT_DIRECTORY|COMPILE_PDB_OUTPUT_DIRECTORY|POSITION_INDEPENDENT_CODE|RUNTIME_OUTPUT_DIRECTORY|SKIP_BUILD_RPATH|SKIP_INSTALL_RPATH|TRY_COMPILE_CONFIGURATION|USE_RELATIVE_PATHS|WIN32_EXECUTABLE)|EXECUTABLE_OUTPUT_PATH|LIBRARY_OUTPUT_PATH|CMAKE_(AR|ARGC|ARGV0|BINARY_DIR|BUILD_TOOL|C_STANDARD|C_STANDARD_REQUIRED|CXX_STANDARD|CXX_STANDARD_REQUIRED|C_COMPILER|CXX_COMPILER|C_COMPILER_ID|CXX_COMPILER_ID|C_FLAGS|CXX_FLAGS|C_FLAGS_DEBUG|C_FLAGS_RELEASE|C_FLAGS_MINSIZEREL|C_FLAGS_RELWITHDEBINFO|CXX_FLAGS_DEBUG|CXX_FLAGS_RELEASE|CXX_FLAGS_MINSIZEREL|CXX_FLAGS_RELWITHDEBINFO|CACHEFILE_DIR|CACHE_MAJOR_VERSION|CACHE_MINOR_VERSION|CACHE_PATCH_VERSION|CFG_INTDIR|COMMAND|CROSSCOMPILING|CTEST_COMMAND|CURRENT_BINARY_DIR|CURRENT_LIST_DIR|CURRENT_LIST_FILE|CURRENT_LIST_LINE|CURRENT_SOURCE_DIR|CURRENT_FUNCTION|CURRENT_FUNCTION_LIST_DIR|CURRENT_FUNCTION_LIST_FILE|CURRENT_FUNCTION_LIST_LINE|DL_LIBS|EDIT_COMMAND|EXECUTABLE_SUFFIX|EXTRA_GENERATOR|EXTRA_SHARED_LIBRARY_SUFFIXES|GENERATOR|GENERATOR_PLATFORM|GENERATOR_TOOLSET|HOME_DIRECTORY|IMPORT_LIBRARY_PREFIX|IMPORT_LIBRARY_SUFFIX|LINK_LIBRARY_SUFFIX|MAJOR_VERSION|MAKE_PROGRAM|MINOR_VERSION|PARENT_LIST_FILE|PATCH_VERSION|PROJECT_NAME|RANLIB|ROOT|SCRIPT_MODE_FILE|SHARED_LIBRARY_PREFIX|SHARED_LIBRARY_SUFFIX|SHARED_LINKER_FLAGS|SHARED_MODULE_PREFIX|SHARED_MODULE_SUFFIX|SIZEOF_VOID_P|SKIP_RPATH|SOURCE_DIR|STANDARD_LIBRARIES|STATIC_LIBRARY_PREFIX|STATIC_LIBRARY_SUFFIX|TWEAK_VERSION|USING_VC_FREE_TOOLS|VERBOSE_MAKEFILE|VERSION|EXPORT_COMPILE_COMMANDS|TOOLCHAIN_FILE|SYSROOT|STAGING_PREFIX|FIND_ROOT_PATH|FIND_ROOT_PATH_MODE_PROGRAM|FIND_ROOT_PATH_MODE_LIBRARY|FIND_ROOT_PATH_MODE_INCLUDE|FIND_ROOT_PATH_MODE_PACKAGE)|PROJECT_BINARY_DIR|PROJECT_NAME|PROJECT_SOURCE_DIR|PROJECT_VERSION|PROJECT_VERSION_MAJOR|PROJECT_VERSION_MINOR|PROJECT_VERSION_PATCH|PROJECT_VERSION_TWEAK|PROJECT_DESCRIPTION|PROJECT_HOMEPAGE_URL|\\w+_BINARY_DIR|\\w+_SOURCE_DIR)\\b" |
| 382 | + "match": "\\b(?i:APPLE|BORLAND|CMAKE_CL_64|CMAKE_COMPILER_2005|CMAKE_HOST_APPLE|CMAKE_HOST_SYSTEM|CMAKE_HOST_SYSTEM_NAME|CMAKE_HOST_SYSTEM_PROCESSOR|CMAKE_HOST_SYSTEM_VERSION|CMAKE_HOST_UNIX|CMAKE_HOST_WIN32|CMAKE_LIBRARY_ARCHITECTURE|CMAKE_LIBRARY_ARCHITECTURE_REGEX|CMAKE_OBJECT_PATH_MAX|CMAKE_SYSTEM|CMAKE_SYSTEM_NAME|CMAKE_SYSTEM_PROCESSOR|CMAKE_SYSTEM_VERSION|CYGWIN|MSVC|MSVC_IDE|MSVC_VERSION|MSVC_TOOLSET_VERSION|UNIX|WIN32|XCODE_VERSION|ANDROID|IOS|LINUX|MSYS|WINCE|WINDOWS_PHONE|WINDOWS_STORE|CMAKE_CROSSCOMPILING|CMAKE_SIZEOF_VOID_P|BUILD_SHARED_LIBS|(CMAKE_)?(ABSOLUTE_DESTINATION_FILES|AUTOMOC_RELAXED_MODE|BACKWARDS_COMPATIBILITY|BUILD_TYPE|COLOR_MAKEFILE|CONFIGURATION_TYPES|DEBUG_TARGET_PROPERTIES|DISABLE_FIND_PACKAGE_\\w+|FIND_LIBRARY_PREFIXES|FIND_LIBRARY_SUFFIXES|IGNORE_PATH|INCLUDE_PATH|INSTALL_DEFAULT_COMPONENT_NAME|INSTALL_PREFIX|LIBRARY_PATH|MFC_FLAG|MODULE_PATH|NOT_USING_CONFIG_FLAGS|POLICY_DEFAULT_CMP\\w+|PREFIX_PATH|PROGRAM_PATH|SKIP_INSTALL_ALL_DEPENDENCY|SYSTEM_IGNORE_PATH|SYSTEM_INCLUDE_PATH|SYSTEM_LIBRARY_PATH|SYSTEM_PREFIX_PATH|SYSTEM_PROGRAM_PATH|USER_MAKE_RULES_OVERRIDE|WARN_ON_ABSOLUTE_INSTALL_DESTINATION)|(CMAKE_)?(\\w+_POSTFIX|ARCHIVE_OUTPUT_DIRECTORY|AUTOMOC|AUTOMOC_MOC_OPTIONS|BUILD_WITH_INSTALL_RPATH|DEBUG_POSTFIX|EXE_LINKER_FLAGS|EXE_LINKER_FLAGS_\\w+|Fortran_FORMAT|Fortran_MODULE_DIRECTORY|GNUtoMS|INCLUDE_CURRENT_DIR|INCLUDE_CURRENT_DIR_IN_INTERFACE|INSTALL_NAME_DIR|INSTALL_RPATH|INSTALL_RPATH_USE_LINK_PATH|LIBRARY_OUTPUT_DIRECTORY|LIBRARY_PATH_FLAG|LINK_DEF_FILE_FLAG|LINK_DEPENDS_NO_SHARED|LINK_INTERFACE_LIBRARIES|LINK_LIBRARY_FILE_FLAG|LINK_LIBRARY_FLAG|MACOSX_BUNDLE|NO_BUILTIN_CHRPATH|PDB_OUTPUT_DIRECTORY|COMPILE_PDB_OUTPUT_DIRECTORY|POSITION_INDEPENDENT_CODE|RUNTIME_OUTPUT_DIRECTORY|SKIP_BUILD_RPATH|SKIP_INSTALL_RPATH|TRY_COMPILE_CONFIGURATION|USE_RELATIVE_PATHS|WIN32_EXECUTABLE)|EXECUTABLE_OUTPUT_PATH|LIBRARY_OUTPUT_PATH|CMAKE_(AR|ARGC|ARGV0|BINARY_DIR|BUILD_TOOL|C_STANDARD|C_STANDARD_REQUIRED|CXX_STANDARD|CXX_STANDARD_REQUIRED|C_COMPILER|CXX_COMPILER|C_COMPILER_ID|CXX_COMPILER_ID|C_FLAGS|CXX_FLAGS|C_FLAGS_DEBUG|C_FLAGS_RELEASE|C_FLAGS_MINSIZEREL|C_FLAGS_RELWITHDEBINFO|CXX_FLAGS_DEBUG|CXX_FLAGS_RELEASE|CXX_FLAGS_MINSIZEREL|CXX_FLAGS_RELWITHDEBINFO|CACHEFILE_DIR|CACHE_MAJOR_VERSION|CACHE_MINOR_VERSION|CACHE_PATCH_VERSION|CFG_INTDIR|COMMAND|CROSSCOMPILING|CTEST_COMMAND|CURRENT_BINARY_DIR|CURRENT_LIST_DIR|CURRENT_LIST_FILE|CURRENT_LIST_LINE|CURRENT_SOURCE_DIR|CURRENT_FUNCTION|CURRENT_FUNCTION_LIST_DIR|CURRENT_FUNCTION_LIST_FILE|CURRENT_FUNCTION_LIST_LINE|DL_LIBS|EDIT_COMMAND|EXECUTABLE_SUFFIX|EXTRA_GENERATOR|EXTRA_SHARED_LIBRARY_SUFFIXES|GENERATOR|GENERATOR_PLATFORM|GENERATOR_TOOLSET|HOME_DIRECTORY|IMPORT_LIBRARY_PREFIX|IMPORT_LIBRARY_SUFFIX|LINK_LIBRARY_SUFFIX|MAJOR_VERSION|MAKE_PROGRAM|MINOR_VERSION|PARENT_LIST_FILE|PATCH_VERSION|PROJECT_NAME|RANLIB|ROOT|SCRIPT_MODE_FILE|SHARED_LIBRARY_PREFIX|SHARED_LIBRARY_SUFFIX|SHARED_LINKER_FLAGS|SHARED_MODULE_PREFIX|SHARED_MODULE_SUFFIX|SIZEOF_VOID_P|SKIP_RPATH|SOURCE_DIR|STANDARD_LIBRARIES|STATIC_LIBRARY_PREFIX|STATIC_LIBRARY_SUFFIX|TWEAK_VERSION|USING_VC_FREE_TOOLS|VERBOSE_MAKEFILE|VERSION|EXPORT_COMPILE_COMMANDS|TOOLCHAIN_FILE|SYSROOT|STAGING_PREFIX|FIND_ROOT_PATH|FIND_ROOT_PATH_MODE_PROGRAM|FIND_ROOT_PATH_MODE_LIBRARY|FIND_ROOT_PATH_MODE_INCLUDE|FIND_ROOT_PATH_MODE_PACKAGE)|PROJECT_BINARY_DIR|PROJECT_NAME|PROJECT_SOURCE_DIR|PROJECT_VERSION|PROJECT_VERSION_MAJOR|PROJECT_VERSION_MINOR|PROJECT_VERSION_PATCH|PROJECT_VERSION_TWEAK|PROJECT_DESCRIPTION|PROJECT_HOMEPAGE_URL|CMAKE_\\w+_COMPILER_VERSION|CMAKE_\\w+_COMPILER_FRONTEND_VARIANT|CMAKE_\\w+_SIMULATE_ID|CMAKE_\\w+_SIMULATE_VERSION|CMAKE_\\w+_EXTENSIONS|CMAKE_\\w+_STANDARD_REQUIRED|CMAKE_\\w+_COMPILE_FEATURES|CMAKE_MSVC_RUNTIME_LIBRARY|CMAKE_INTERPROCEDURAL_OPTIMIZATION|CMAKE_UNITY_BUILD(_\\w+)?|CMAKE_COMPILE_WARNING_AS_ERROR|CMAKE_COLOR_DIAGNOSTICS|CMAKE_LINK_WHAT_YOU_USE|CMAKE_VERIFY_INTERFACE_HEADER_SETS|CMAKE_OPTIMIZE_DEPENDENCIES|CMAKE_BUILD_RPATH(_USE_ORIGIN)?|\\w+_BINARY_DIR|\\w+_SOURCE_DIR)\\b" |
352 | 383 | }, |
353 | 384 | "properties": { |
354 | 385 | "comment": "CMake properties for cache entries, source files, tests, directories, global scope, and targets. Consolidated from 6 category-specific rules — all rendered identically by standard themes (support.type prefix). commandProperties is kept separate (support.function prefix = different theme color).", |
|
0 commit comments