fileTypes: - cmake - CMakeLists.txt scopeName: source.cmake # a dictionary (i.e. key/value pairs) of rules which can be included from other # places in the grammar. The key is the name of the rule and the value is the actual rule. repository: variable-reference: name: variable.other.cmake begin: \$(ENV|CACHE)?{ beginCaptures: "0": { name: punctuation.definition.variable-ref.start.cmake } end: "}" endCaptures: "0": { name: punctuation.definition.variable-ref.end.cmake } patterns: - include: "#variable-reference" generator-expression: name: variable.other.cmake begin: \$\< beginCaptures: "0": { name: punctuation.definition.generator-exp.start.cmake } end: \> endCaptures: "0": { name: punctuation.definition.generator-exp.end.cmake } patterns: - include: "#generator-expression" patterns: # bracket comment - name: comment.block.bracket.cmake begin: '#\[(=*)\[' end: \]\1\] # line comment - name: comment.line.number-sign.cmake match: "#(.*$)" # string - name: string.quoted.double.cmake begin: '"' end: '"' patterns: - include: "#variable-reference" - include: "#generator-expression" - name: constant.character.escape.cmake # escaped character in quoted string match: \\. # bracket argument - name: meta.function.variable.parameter.cmake begin: \s+\[(=*)\[ end: \]\1\] # variable reference - include: "#variable-reference" # generator expression - include: "#generator-expression" # numbers - name: constant.numeric.cmake match: \b[0-9\.]+\b # bool constant - name: constant.language.bool.cmake match: \b(?i:ON|YES|TRUE|Y|OFF|NO|FALSE|N|IGNORE|NOTFOUND|\w*-NOTFOUND)\b # Deprecated Commands - name: invalid.deprecated.command.cmake match: ^\s*\b(?i:build_name|exec_program|export_library_dependencies|install_files|install_programs|install_targets|load_command|make_directory|output_required_files|qt_wrap_cpp|qt_wrap_ui|remove|subdir_depends|subdirs|use_mangled_mesa|utility_source|variable_requires|write_file)\b # flow control commands in cmake - name: keyword.control.cmake match: ^\s*\b(if|elif|else|endif|while|endwhile|break|continue|foreach|endforeach|return)\b # unary tests operators - name: keyword.other.unary.cmake match: \b(EXISTS|COMMAND|DEFINED)\b # binary tests operators - name: keyword.other.binary.cmake match: \b(EQUAL|LESS|LESS_EQUAL|GREATER|GREATER_EQUAL|STREQUAL|STRLESS|STRLESS_EQUAL|STRGREATER|STRGREATER_EQUAL|VERSION_EQUAL|VERSION_LESS|VERSION_LESS_EQUAL|VERSION_GREATER|VERSION_GREATER_EQUAL|MATCHES)\b # logical operators - name: keyword.other.logical.cmake match: \b(NOT|AND|OR)\b # CACHE variable type - name: entity.name.type.cmake match: \b(BOOL|FILEPATH|PATH|STRING|INTERNAL)\b # variable declaration - name: entity.name.function.cmake - match: \b(?i:(set)\s*\(\s*(\w+)\s+) captures: "1": { name: entity.name.function.cmake } "2": { name: variable.cmake } # cmake builtin functions - name: entity.name.function.cmake match: \b(?i:cmake_host_system_information|cmake_language|cmake_minimum_required|cmake_parse_arguments|cmake_path|cmake_policy|configure_file|endfunction|endmacro|execute_process|file|find_file|find_library|find_package|find_path|find_program|function|get_cmake_property|get_directory_property|get_filename_component|get_property|include|include_guard|list|macro|mark_as_advanced|math|message|option|separate_arguments|set|set_directory_properties|set_property|site_name|string|unset|variable_watch|add_compile_definitions|add_compile_options|add_custom_command|add_custom_target|add_definitions|add_dependencies|add_executable|add_library|add_link_options|add_subdirectory|add_test|aux_source_directory|build_command|create_test_sourcelist|define_property|enable_language|enable_testing|export|fltk_wrap_ui|get_source_file_property|get_target_property|get_test_property|include_directories|include_external_msproject|include_regular_expression|install|link_directories|link_libraries|load_cache|project|remove_definitions|set_source_files_properties|set_target_properties|set_tests_properties|source_group|target_compile_definitions|target_compile_features|target_compile_options|target_include_directories|target_link_directories|target_link_libraries|target_link_options|target_precompile_headers|target_sources|try_compile|try_run|ctest_build|ctest_configure|ctest_coverage|ctest_empty_binary_directory|ctest_memcheck|ctest_read_custom_files|ctest_run_script|ctest_sleep|ctest_start|ctest_submit|ctest_test|ctest_update|ctest_upload)\b