/** * Name: cmake * Description: CMake language * Author: Tristan Carel * * $Id:: cmake.st 5 2006-09-22 05:42:18Z ken $ */ state cmake extends HighlightEntry { /* Comments. */ /#/ { comment_face (true); language_print ($0); call (eat_one_line); comment_face (false); } /* String constants. */ /\"/ { string_face (true); language_print ($0); call (c_string); string_face (false); } /* CMake variables */ /({)([a-zA-Z0-9_]+)(})/ { language_print ($1); type_face (true); language_print ($2); type_face (false); language_print ($3); } /* Some commands which expect a variable name as first argument. */ /\b(IF|ELSE|ENDIF|FOREACH|ENDFOREACH|WHILE|ENDWHILE|MACRO|ENDMACRO|SET|FIND_PATH|FIND_LIBRARY|FIND_FILE|FIND_PROGRAM|GET_CMAKE_PROPERTY|BUILD_COMMAND|GET_DIRECTORY_PROPERTY|GET_FILENAME_COMPONENT|GET_SOURCE_FILE_PROPERTY|GET_TARGET_PROPERTY)([ \t]*\()([a-zA-Z0-9_]+)\b/ { function_name_face (true); language_print ($1); function_name_face (false); language_print ($2); type_face (true); language_print ($3); type_face (false); } /* List of special arguments used by CMake commands */ /\b(@ONLY|ABSOLUTE|ABSTRACT|AFTER|ALL|AND|APPEND|ARCHIVE|ARGS|ASCII|BEFORE|BOOL|CACHE|CLEAR|CODE|COMMAND|COMMAND_NAME|COMMENT|COMPARE|COMPILE_DEFINITIONS|COMPILE_FLAGS|COMPONENT|CONFIGURATIONS|COPYONLY|DEFINED|DEPENDS|DESTINATION|DIRECTORY|DOC|EQUAL|ERROR_FILE|ERROR_QUIET|ERROR_VARIABLE|ESCAPE_QUOTES|EXCLUDE|EXCLUDE_FROM_ALL|EXISTS|EXT|EXTRA_INCLUDE|FALSE|FATAL_ERROR|FILEPATH|FORCE|FUNCTION|GENERATED|GET|GLOB|GLOB_RECURSE|GREATER|GROUP_SIZE|HEADER_FILE_ONLY|HEADER_LOCATION|INCLUDES|INCLUDE_INTERNALS|INPUT_FILE|INSERT|INTERNAL|IS_DIRECTORY|LENGTH|LESS|LIBRARY|LOCATION|MACOSX_BUNDLE|MAIN_DEPENDENCY|MAKE_DIRECTORY|MATCH|MATCHALL|MODULE|NAME|NAMES|NAME_WE|NO|NOTEQUAL|NOTFOUND|NO_CMAKE_ENVIRONMENT_PATH|NO_CMAKE_PATH|NO_CMAKE_SYSTEM_PATH|NO_DEFAULT_PATH|NO_SYSTEM_ENVIRONMENT_PATH|OBJECT_DEPENDS|OFF|OPTIONAL|OR|OUTPUT|OUTPUT_FILE|OUTPUT_QUIET|OUTPUT_VARIABLE|PATH|PATHS|PATH_SUFFIXES|PERMISSIONS|POST_BUILD|PREORDER|PRE_BUILD|PRE_LINK|PROGRAMS|PROPERTIES|RANGE|READ|READ_WITH_PREFIX|REGEX|REGULAR_EXPRESSION|RELATIVE|RELATIVE_PATH|REMOVE|REMOVE_AT|REMOVE_ITEM|REMOVE_RECURSE|RENAME|REPLACE|REQUIRED|RESULT_VARIABLE|RETURN_VALUE|REVERSE|RUNTIME|RUNTIME_DIRECTORY|SCRIPT|SEND_ERROR|SHARED|SORT|STATIC|STATUS|STREQUAL|STRGREATER|STRING|STRLESS|SUBSTRING|TARGET|TARGETS|TIMEOUT|TOLOWER|TOUPPER|TO_CMAKE_PATH|TO_NATIVE_PATH|TYPE|WIN32|WORKING_DIRECTORY|WRAP_EXCLUDE|WRITE|debug|optimized)\b/ { reference_face (true); language_print ($1); reference_face (false); } /* CMake commands */ /([a-zA-Z_]+)([ \t]*\()/ { function_name_face (true); language_print ($1); function_name_face (false); language_print ($2); } } /* Local variables: mode: c End: */