File cmake.syntax of Package mc

# CMake syntax
# Author: Henrik Pauli <henrik.pauli@uhusystems.com>
# Author: Emil Biserov <biserov@gmail.com>

caseinsensitive

context default
	keyword \( brightcyan
	keyword \) brightcyan

### Commands ##################################################################
	keyword whole add_custom_command yellow
	keyword whole add_custom_target yellow
	keyword whole add_definitions yellow
	keyword whole add_dependencies yellow
	keyword whole add_executable yellow
	keyword whole add_library yellow
	keyword whole add_subdirectory yellow
	keyword whole add_test yellow
	keyword whole aux_source_directory yellow
	keyword whole break magenta
	keyword whole build_command yellow
	keyword whole cmake_minimum_required yellow
	keyword whole cmake_policy yellow
	keyword whole configure_file yellow
	keyword whole create_test_sourcelist yellow
	keyword whole define_property yellow
	keyword whole else magenta
	keyword whole elseif magenta
	keyword whole enable_language yellow
	keyword whole enable_testing yellow
	keyword whole endforeach magenta
	keyword whole endfunction magenta
	keyword whole endif magenta
	keyword whole endmacro magenta
	keyword whole endwhile magenta
	keyword whole execute_process yellow
	keyword whole export yellow
	keyword whole file yellow
	keyword whole find_file yellow
	keyword whole find_library yellow
	keyword whole find_package yellow
	keyword whole find_path yellow
	keyword whole find_program yellow
	keyword whole fltk_wrap_ui yellow
	keyword whole foreach magenta
	keyword whole function magenta
	keyword whole get_cmake_property yellow
	keyword whole get_directory_property yellow
	keyword whole get_filename_component yellow
	keyword whole get_property yellow
	keyword whole get_source_file_property yellow
	keyword whole get_target_property yellow
	keyword whole get_test_property yellow
	keyword whole if magenta
	keyword whole include yellow
	keyword whole include_directories yellow
	keyword whole include_external_msproject yellow
	keyword whole include_regular_expression yellow
	keyword whole install yellow
	keyword whole link_directories yellow
	keyword whole list yellow
	keyword whole load_cache yellow
	keyword whole load_command yellow
	keyword whole macro magenta
	keyword whole mark_as_advanced yellow
	keyword whole math yellow
	keyword whole message yellow
	keyword whole option yellow
	keyword whole project yellow
	keyword whole qt_wrap_cpp yellow
	keyword whole qt_wrap_ui yellow
	keyword whole remove_definitions yellow
	keyword whole return yellow
	keyword whole separate_arguments yellow
	keyword whole set yellow
	keyword whole set_directory_properties yellow
	keyword whole set_property yellow
	keyword whole set_source_files_properties yellow
	keyword whole set_target_properties yellow
	keyword whole set_tests_properties yellow
	keyword whole site_name yellow
	keyword whole source_group yellow
	keyword whole string yellow
	keyword whole target_link_libraries yellow
	keyword whole try_compile yellow
	keyword whole try_run yellow
	keyword whole unset yellow
	keyword whole variable_watch yellow
	keyword whole while magenta
###############################################################################

	keyword ${\[^}\]+} brightgreen

#	keyword whole cpack_+ yellow
#	keyword whole get_+ yellow
#	keyword whole set_+ yellow
#	keyword whole target_+ yellow
#	keyword whole find_+ yellow
#	keyword whole file_+ yellow
#	keyword whole configure_+ yellow
#	keyword whole install yellow
#	keyword whole qt4_+ yellow

	keyword whole ON brightcyan
	keyword whole OFF brightcyan
	keyword whole TRUE brightcyan
	keyword whole FALSE brightcyan

###############################################################################

###context exclusive add_custom_command\( \)
	keyword whole OUTPUT white
	keyword whole COMMAND white
	keyword whole MAIN_DEPENDENCY white
	keyword whole DEPENDS white
	keyword whole IMPLICIT_DEPENDS white
	keyword whole WORKING_DIRECTORY white
	keyword whole COMMENT white
	keyword whole VERBATIM white
	keyword whole APPEND white

###context exclusive add_custom_target\( \)
	keyword whole ALL white
	keyword whole COMMAND white
	keyword whole DEPENDS white
	keyword whole WORKING_DIRECTORY white
	keyword whole COMMENT white
	keyword whole VERBATIM white
	keyword whole SOURCES white

###context exclusive add_executable\( \)
	keyword whole WIN32 white
	keyword whole MACOSX_BUNDLE white
	keyword whole EXCLUDE_FROM_ALL white

	keyword whole IMPORTED white
	    keyword whole GLOBAL white

###context exclusive add_library\( \)
	keyword whole STATIC white
	keyword whole SHARED white
	keyword whole MODULE white
	keyword whole EXCLUDE_FROM_ALL white

	keyword whole UNKNOWN white
	keyword whole IMPORTED white
	keyword whole GLOBAL white

	keyword whole OBJECT white

###context exclusive add_subdirectory\( \)
	keyword whole EXCLUDE_FROM_ALL white

### context exclusive add_test\( \)
	keyword whole NAME white
	keyword whole CONFIGURATIONS white
	keyword whole WORKING_DIRECTORY white
	keyword whole COMMAND white

# build_command
# cmake_minimum_required
# cmake_policy

### context exclusive configure_file\( \)
	keyword whole COPYONLY white
	keyword whole ESCAPE_QUOTES white
	keyword whole @ONLY white
	keyword whole NEWLINE_STYLE white
	    keyword whole UNIX white
	    keyword whole DOS white
	    keyword whole WIN32 white
	    keyword whole LF white
	    keyword whole CRLF white

# create_test_sourcelist

### context exclusive define_property\( \)
	keyword whole GLOBAL white
	keyword whole DIRECTORY white
	keyword whole TARGET white
	keyword whole SOURCE white
	keyword whole TEST white
	keyword whole VARIABLE white
	keyword whole CACHED_VARIABLE white
	keyword whole PROPERTY white
	keyword whole INHERITED white
	keyword whole BRIEF_DOCS white
	keyword whole FULL_DOCS white

### context exclusive enable_language\( \)
	keyword whole OPTIONAL white

### context exclusive execute_process\( \)
	keyword whole COMMAND white
	keyword whole WORKING_DIRECTORY white
	keyword whole TIMEOUT white
	keyword whole RESULT_VARIABLE white
	keyword whole OUTPUT_VARIABLE white
	keyword whole ERROR_VARIABLE white
	keyword whole INPUT_FILE white
	keyword whole OUTPUT_FILE white
	keyword whole ERROR_FILE white
	keyword whole OUTPUT_QUIET white
	keyword whole ERROR_QUIET white
	keyword whole OUTPUT_STRIP_TRAILING_WHITESPACE white
	keyword whole ERROR_STRIP_TRAILING_WHITESPACE white

### context exclusive export\( \)
	keyword whole TARGETS white
	keyword whole NAMESPACE white
	keyword whole APPEND white
	keyword whole FILE white

### context exclusive file\( \)
	keyword whole WRITE white
	keyword whole APPEND white
	keyword whole READ white
	    keyword whole LIMIT white
	    keyword whole OFFSET white
	    keyword whole HEX white

	keyword whole MD5 white
	keyword whole SHA1 white
	keyword whole SHA224 white
	keyword whole SHA256 white
	keyword whole SHA384 white
	keyword whole SHA512 white

	keyword whole STRINGS white
	    keyword whole LIMIT_COUNT white
	    keyword whole LIMIT_INPUT white
	    keyword whole LIMIT_OUTPUT white
	    keyword whole LENGTH_MINIMUM white
	    keyword whole LENGTH_MAXIMUM white
	    keyword whole NEWLINE_CONSUME white
	    keyword whole REGEX white
	    keyword whole NO_HEX_CONVERSION white

	keyword whole GLOB white
	keyword whole GLOB_RECURSE white
	    keyword whole RELATIVE white
	    keyword whole FOLLOW_SYMLINKS white

	keyword whole RENAME white
	keyword whole REMOVE white
	keyword whole REMOVE_RECURSE white
	keyword whole MAKE_DIRECTORY white
	keyword whole RELATIVE_PATH white
	keyword whole TO_CMAKE_PATH white
	keyword whole TO_NATIVE_PATH white

	keyword whole DOWNLOAD white
	    keyword whole INACTIVITY_TIMEOUT white
	    keyword whole TIMEOUT white
	    keyword whole STATUS white
	    keyword whole LOG white
	    keyword whole SHOW_PROGRESS white
	    keyword whole EXPECTED_MD5 white
	keyword whole UPLOAD white

	keyword whole COPY white
	keyword whole INSTALL white
	    keyword whole DESTINATION white
	    keyword whole FILE_PERMISSIONS white
	    keyword whole DIRECTORY_PERMISSIONS white
	    keyword whole NO_SOURCE_PERMISSIONS white
	    keyword whole USE_SOURCE_PERMISSIONS white
	    keyword whole FILES_MATCHING white
	    keyword whole PATTERN white
	    keyword whole REGEX white
	    keyword whole EXCLUDE white
	    keyword whole PERMISSIONS white

# find_file
# find_library
# find_package
# find_path
# find_program
# fltk_wrap_ui
# get_cmake_property
# get_directory_property

### context exclusive get_filename_component\( \)
	keyword whole PATH white
	keyword whole ABSOLUTE white
	keyword whole NAME white
	keyword whole EXT white
	keyword whole NAME_WE white
	keyword whole REALPATH white
	keyword whole CACHE white

	keyword whole PROGRAM white
	keyword whole PROGRAM_ARGS white

# get_property
# get_source_file_property
# get_target_property
# get_test_property

### context exclusive if\( \)
	keyword whole NOT brightcyan
	keyword whole AND brightcyan
	keyword whole OR brightcyan
	keyword whole COMMAND brightcyan
	keyword whole POLICY brightcyan
	keyword whole TARGET brightcyan
	keyword whole EXISTS brightcyan

	keyword whole IS_NEWER_THAN brightcyan
	keyword whole IS_DIRECTORY brightcyan
	keyword whole IS_SYMLINK brightcyan
	keyword whole IS_ABSOLUTE brightcyan

	keyword whole MATCHES brightcyan

	keyword whole LESS brightcyan
	keyword whole GREATER brightcyan
	keyword whole EQUAL brightcyan

	keyword whole STRLESS brightcyan
	keyword whole STRGREATER brightcyan
	keyword whole STREQUAL brightcyan

	keyword whole VERSION_LESS brightcyan
	keyword whole VERSION_EQUAL brightcyan
	keyword whole VERSION_GREATER brightcyan

	keyword whole DEFINED brightcyan

### context exclusive include\( \)
	keyword whole OPTIONAL white
	keyword whole RESULT_VARIABLE white
	keyword whole NO_POLICY_SCOPE white

# include_directories
# include_external_msproject
# include_regular_expression

###context exclusive install\( \)
	keyword whole TARGETS white
	keyword whole EXPORT white
	keyword whole ARCHIVE white
	keyword whole LIBRARY white
	keyword whole RUNTIME white
	keyword whole FRAMEWORK white
	keyword whole BUNDLE white
	keyword whole PRIVATE_HEADER white
	keyword whole PUBLIC_HEADER white
	keyword whole RESOURCE white
	keyword whole DESTINATION white
	keyword whole PERMISSIONS white
	keyword whole CONFIGURATIONS white
	keyword whole COMPONENT white
	keyword whole OPTIONAL white
	keyword whole NAMELINK_ONLY white
	keyword whole NAMELINK_SKIP white

	keyword whole FILES white
	keyword whole DESTINATION white
	keyword whole PERMISSIONS white
	keyword whole CONFIGURATIONS white
	keyword whole COMPONENT white
	keyword whole RENAME white
	keyword whole OPTIONAL white

	keyword whole OWNER_READ brightcyan
	keyword whole OWNER_WRITE brightcyan
	keyword whole OWNER_EXECUTE brightcyan
	keyword whole GROUP_READ brightcyan
	keyword whole GROUP_WRITE brightcyan
	keyword whole GROUP_EXECUTE brightcyan
	keyword whole WORLD_READ brightcyan
	keyword whole WORLD_WRITE brightcyan
	keyword whole WORLD_EXECUTE brightcyan
	keyword whole SETUID brightcyan
	keyword whole SETGID brightcyan
### FIXME: !!! install unfinished !!!

# link_directories

###context exclusive list\( \)
	keyword whole LENGTH white
	keyword whole GET white
	keyword whole APPEND white
	keyword whole FIND white
	keyword whole INSERT white
	keyword whole REMOVE_ITEM white
	keyword whole REMOVE_AT white
	keyword whole REMOVE_DUPLICATES white
	keyword whole REVERSE white
	keyword whole SORT white

# load_cache
# load_command

### context exclusive mark_as_advanced\( \)
	keyword whole CLEAR white
	keyword whole FORCE white

### context exclusive math\( \)
	keyword whole EXPR white

### context exclusive message\( \)
	keyword whole STATUS white
	keyword whole WARNING white
	keyword whole AUTHOR_WARNING white
	keyword whole FATAL_ERROR white
	keyword whole SEND_ERROR white

# qt_wrap_cpp
# qt_wrap_ui
# remove_definitions
# separate_arguments

### context exclusive set\( \)
	keyword whole CACHE white
	keyword whole FORCE white
	keyword whole PARENT_SCOPE white

# types
	keyword whole FILEPATH cyan
	keyword whole PATH cyan
	keyword whole STRING cyan
	keyword whole BOOL cyan
	keyword whole INTERNAL cyan

# set_directory_properties
# set_property
# set_source_files_properties
# set_target_properties
# set_tests_properties
# site_name
# source_group

### context exclusive string\( \)
	keyword whole REGEX white
	    keyword whole MATCH white
	    keyword whole MATCHALL white
	    keyword whole REPLACE white

	keyword whole MD5 white
	keyword whole SHA1 white
	keyword whole SHA224 white
	keyword whole SHA256 white
	keyword whole SHA384 white
	keyword whole SHA512 white

	keyword whole COMPARE white
	    keyword whole EQUAL white
	    keyword whole NOTEQUAL white
	    keyword whole LESS white
	    keyword whole GREATER white

	keyword whole ASCII white

	keyword whole CONFIGURE white
	    keyword whole \@ONLY white
	    keyword whole ESCAPE_QUOTES white

	keyword whole TOUPPER white
	keyword whole TOLOWER white
	keyword whole LENGTH white
	keyword whole SUBSTRING white
	keyword whole STRIP white

	keyword whole RANDOM white
	    keyword whole LENGTH white
	    keyword whole ALPHABET white
	    keyword whole RANDOM_SEED white

	keyword whole FIND white
	    keyword whole REVERSE white

### context exclusive target_link_libraries\( \)

### context exclusive try_compile\( \)
	keyword whole CMAKE_FLAGS white
	keyword whole OUTPUT_VARIABLE white
	keyword whole COMPILE_DEFINITIONS white
	keyword whole OUTPUT_VARIABLE white
	keyword whole COPY_FILE white

### context exclusive try_run\( \)
	keyword whole CMAKE_FLAGS white
	keyword whole COMPILE_DEFINITIONS white
	keyword whole COMPILE_OUTPUT_VARIABLE white
	keyword whole RUN_OUTPUT_VARIABLE white
	keyword whole OUTPUT_VARIABLE white
	keyword whole ARGS white

### context exclusive unset\( \)
	keyword whole CACHE white

context # \n brown

context " " green
	keyword ${\[^}\]+} brightgreen
	spellcheck