# Copyright (c) 2005 - 2006 Hans Jeuken. All rights reserved. # This program is free software; you can redistribute it and/or # modify it under the same terms as Perl itself. # This file was generated from the 'cmake.xml' file of the syntax highlight # engine of the kate text editor (http://www.kate-editor.org #kate xml version 1.02 #kate version 2.4 #generated: Sun Feb 3 22:02:04 2008, localtime package Syntax::Highlight::Engine::Kate::CMake; use vars qw($VERSION); $VERSION = '0.03'; use strict; use warnings; use base('Syntax::Highlight::Engine::Kate::Template'); sub new { my $proto = shift; my $class = ref($proto) || $proto; my $self = $class->SUPER::new(@_); $self->attributes({ 'Commands' => 'Keyword', 'Comment' => 'Comment', 'Macros' => 'Keyword', 'Normal Text' => 'Normal', 'Region Marker' => 'RegionMarker', 'Special Args' => 'Others', 'Variable' => 'DecVal', }); $self->listAdd('commands', 'ABSTRACT_FILES', 'ADD_CUSTOM_COMMAND', 'ADD_CUSTOM_TARGET', 'ADD_DEFINITIONS', 'ADD_DEPENDENCIES', 'ADD_EXECUTABLE', 'ADD_LIBRARY', 'ADD_TEST', 'AUX_SOURCE_DIRECTORY', 'BUILD_COMMAND', 'BUILD_NAME', 'CMAKE_MINIMUM_REQUIRED', 'CONFIGURE_FILE', 'CREATE_TEST_SOURCELIST', 'ELSE', 'ENABLE_TESTING', 'ENDFOREACH', 'ENDIF', 'ENDMACRO', 'EXEC_PROGRAM', 'EXPORT_LIBRARY_DEPENDENCIES', 'FILE', 'FIND_FILE', 'FIND_LIBRARY', 'FIND_PACKAGE', 'FIND_PATH', 'FIND_PROGRAM', 'FLTK_WRAP_UI', 'FOREACH', 'GET_CMAKE_PROPERTY', 'GET_DIRECTORY_PROPERTY', 'GET_FILENAME_COMPONENT', 'GET_SOURCE_FILE_PROPERTY', 'GET_TARGET_PROPERTY', 'IF', 'INCLUDE', 'INCLUDE_DIRECTORIES', 'INCLUDE_EXTERNAL_MSPROJECT', 'INCLUDE_REGULAR_EXPRESSION', 'INSTALL_FILES', 'INSTALL_PROGRAMS', 'INSTALL_TARGETS', 'ITK_WRAP_TCL', 'LINK_DIRECTORIE', 'LINK_LIBRARIES', 'LOAD_CACHE', 'LOAD_COMMAND', 'MACRO', 'MAKE_DIRECTORY', 'MARK_AS_ADVANCED', 'MESSAGE', 'OPTION', 'OUTPUT_REQUIRED_FILES', 'PROJECT', 'QT_WRAP_CPP', 'QT_WRAP_UI', 'REMOVE', 'REMOVE_DEFINITIONS', 'SEPARATE_ARGUMENTS', 'SET', 'SET_DIRECTORY_PROPERTIES', 'SET_SOURCE_FILES_PROPERTIES', 'SET_TARGET_PROPERTIES', 'SITE_NAME', 'SOURCE_FILES', 'SOURCE_FILES_REMOVE', 'SOURCE_GROUP', 'STRING', 'SUBDIRS', 'SUBDIR_DEPENDS', 'TARGET_LINK_LIBRARIES', 'TRY_COMPILE', 'TRY_RUN', 'USE_MANGLED_MESA', 'UTILITY_SOURCE', 'VARIABLE_REQUIRES', 'VTK_MAKE_INSTANTIATOR', 'VTK_WRAP_JAVA', 'VTK_WRAP_PYTHON', 'VTK_WRAP_TCL', 'WRAP_EXCLUDE_FILES', 'WRITE_FILE', ); $self->listAdd('special_args', 'ABSOLUTE', 'ABSTRACT', 'ADDITIONAL_MAKE_CLEAN_FILES', 'ALL', 'AND', 'APPEND', 'ARGS', 'ASCII', 'BEFORE', 'CACHE', 'CACHE_VARIABLES', 'CLEAR', 'COMMAND', 'COMMANDS', 'COMMAND_NAME', 'COMMENT', 'COMPARE', 'COMPILE_FLAGS', 'COPYONLY', 'DEFINED', 'DEFINE_SYMBOL', 'DEPENDS', 'DOC', 'EQUAL', 'ESCAPE_QUOTES', 'EXCLUDE', 'EXCLUDE_FROM_ALL', 'EXISTS', 'EXPORT_MACRO', 'EXT', 'EXTRA_INCLUDE', 'FATAL_ERROR', 'FILE', 'FILES', 'FORCE', 'FUNCTION', 'GENERATED', 'GLOB', 'GLOB_RECURSE', 'GREATER', 'GROUP_SIZE', 'HEADER_FILE_ONLY', 'HEADER_LOCATION', 'IMMEDIATE', 'INCLUDES', 'INCLUDE_DIRECTORIES', 'INCLUDE_INTERNALS', 'INCLUDE_REGULAR_EXPRESSION', 'LESS', 'LINK_DIRECTORIES', 'LINK_FLAGS', 'LOCATION', 'MACOSX_BUNDLE', 'MACROS', 'MAIN_DEPENDENCY', 'MAKE_DIRECTORY', 'MATCH', 'MATCHALL', 'MATCHES', 'MODULE', 'NAME', 'NAME_WE', 'NOT', 'NOTEQUAL', 'NO_SYSTEM_PATH', 'OBJECT_DEPENDS', 'OPTIONAL', 'OR', 'OUTPUT', 'OUTPUT_VARIABLE', 'PATH', 'PATHS', 'POST_BUILD', 'POST_INSTALL_SCRIPT', 'PREFIX', 'PREORDER', 'PRE_BUILD', 'PRE_INSTALL_SCRIPT', 'PRE_LINK', 'PROGRAM', 'PROGRAM_ARGS', 'PROPERTIES', 'QUIET', 'RANGE', 'READ', 'REGEX', 'REGULAR_EXPRESSION', 'REPLACE', 'REQUIRED', 'RETURN_VALUE', 'RUNTIME_DIRECTORY', 'SEND_ERROR', 'SHARED', 'SOURCES', 'STATIC', 'STATUS', 'STREQUAL', 'STRGREATER', 'STRLESS', 'SUFFIX', 'TARGET', 'TOLOWER', 'TOUPPER', 'VAR', 'VARIABLES', 'VERSION', 'WIN32', 'WRAP_EXCLUDE', 'WRITE', ); $self->contextdata({ 'Function Args' => { callback => \&parseFunctionArgs, attribute => 'Normal Text', }, 'Normal Text' => { callback => \&parseNormalText, attribute => 'Normal Text', }, }); $self->deliminators('\\s||\\.|\\(|\\)|:|\\!|\\+|,|-|<|=|>|\\%|\\&|\\*|\\/|;|\\?|\\[|\\]|\\^|\\{|\\||\\}|\\~|\\\\'); $self->basecontext('Normal Text'); $self->keywordscase(0); $self->initialize; bless ($self, $class); return $self; } sub language { return 'CMake'; } sub parseFunctionArgs { my ($self, $text) = @_; # attribute => 'Normal Text' # char => ')' # context => '#pop' # type => 'DetectChar' if ($self->testDetectChar($text, ')', 0, 0, 0, undef, 0, '#pop', 'Normal Text')) { return 1 } # String => 'special_args' # attribute => 'Special Args' # context => '#stay' # type => 'keyword' if ($self->testKeyword($text, 'special_args', 0, undef, 0, '#stay', 'Special Args')) { return 1 } # String => '#.*$' # attribute => 'Comment' # context => '#stay' # type => 'RegExpr' if ($self->testRegExpr($text, '#.*$', 0, 0, 0, undef, 0, '#stay', 'Comment')) { return 1 } # String => '\$\{\s*\w+\s*\}' # attribute => 'Variable' # context => '#stay' # type => 'RegExpr' if ($self->testRegExpr($text, '\\$\\{\\s*\\w+\\s*\\}', 0, 0, 0, undef, 0, '#stay', 'Variable')) { return 1 } return 0; }; sub parseNormalText { my ($self, $text) = @_; # String => 'commands' # attribute => 'Commands' # context => 'Function Args' # type => 'keyword' if ($self->testKeyword($text, 'commands', 0, undef, 0, 'Function Args', 'Commands')) { return 1 } # String => '#\s*BEGIN.*$' # attribute => 'Region Marker' # beginRegion => 'block' # context => '#stay' # firstNonSpace => 'true' # type => 'RegExpr' if ($self->testRegExpr($text, '#\\s*BEGIN.*$', 0, 0, 0, undef, 1, '#stay', 'Region Marker')) { return 1 } # String => '#\s*END.*$' # attribute => 'Region Marker' # context => '#stay' # endRegion => 'block' # firstNonSpace => 'true' # type => 'RegExpr' if ($self->testRegExpr($text, '#\\s*END.*$', 0, 0, 0, undef, 1, '#stay', 'Region Marker')) { return 1 } # String => '#.*$' # attribute => 'Comment' # context => '#stay' # type => 'RegExpr' if ($self->testRegExpr($text, '#.*$', 0, 0, 0, undef, 0, '#stay', 'Comment')) { return 1 } # String => '\$\{\s*\w+\s*\}' # attribute => 'Variable' # context => '#stay' # type => 'RegExpr' if ($self->testRegExpr($text, '\\$\\{\\s*\\w+\\s*\\}', 0, 0, 0, undef, 0, '#stay', 'Variable')) { return 1 } # String => '\s*\w+\s*(?=\(.*\))' # attribute => 'Macros' # context => '#stay' # type => 'RegExpr' if ($self->testRegExpr($text, '\\s*\\w+\\s*(?=\\(.*\\))', 0, 0, 0, undef, 0, '#stay', 'Macros')) { return 1 } return 0; }; 1; __END__ =head1 NAME Syntax::Highlight::Engine::Kate::CMake - a Plugin for CMake syntax highlighting =head1 SYNOPSIS require Syntax::Highlight::Engine::Kate::CMake; my $sh = new Syntax::Highlight::Engine::Kate::CMake([ ]); =head1 DESCRIPTION Syntax::Highlight::Engine::Kate::CMake is a plugin module that provides syntax highlighting for CMake to the Syntax::Haghlight::Engine::Kate highlighting engine. This code is generated from the syntax definition files used by the Kate project. It works quite fine, but can use refinement and optimization. It inherits Syntax::Higlight::Engine::Kate::Template. See also there. =cut =head1 AUTHOR Hans Jeuken (haje toneel demon nl) =cut =head1 BUGS Unknown. If you find any, please contact the author =cut