global !p def complete(t, opts): if t: opts = [m[len(t):] for m in opts if m.startswith(t)] if len(opts) == 1: return opts[0] elif len(opts) == 0: return "" return '[' + '|'.join(opts) + ']' endglobal snippet add_compile_options "add_compile_options" add_compile_options($1) endsnippet snippet add_custom_command "add_custom_command OUTPUT" add_custom_command(OUTPUT ${1:outputs} COMMAND ${2:command}${3: COMMAND ${4:command}}${5: MAIN_DEPENDENCY ${6:depend}}${7: DEPENDS ${8:depends}}${9: IMPLICIT_DEPENDS ${10:lang} ${11:depend}}${12: WORKING_DIRECTORY ${13:dir}}${14: COMMENT "${15:comment}"}${16: VERBATIM}${17: APPEND}) endsnippet snippet add_custom_command "add_custom_command TARGET" add_custom_command(TARGET ${1:target} $2`!p snip.rv=complete(t[2], ['PRE_BUILD', 'PRE_LINK', 'POST_BUILD'])` COMMAND ${3:command}${4: COMMAND ${5:command}}${6: WORKING_DIRECTORY ${7:directory}}${8: COMMENT "${9:comment}"}${10: VERBATIM}) endsnippet snippet add_custom_target "add_custom_target" add_custom_target(${1:target} ${2:ALL} ${3:command}${4: COMMAND ${5:command}}${6: DEPENDS ${7:depends}}${8: WORKING_DIRECTORY ${9:directory}}${10: COMMENT "${11:comment}"}${12: VERBATIM}${13: SOURCES ${14:sources}}) endsnippet snippet add_definitions "add_definitions" add_definitions(-D${1:MACRO}$2) endsnippet snippet add_dependencies "add_dependencies" add_dependencies(${1:target} ${2:dependencies}) endsnippet snippet add_executable "add_executable" add_executable(${1:target}${2: WIN32}${3: MACOSX_BUNDLE}${4: EXCLUDE_FROM_ALL} ${0:sources}) endsnippet snippet add_library "add_library" add_library(${1:target} $2`!p snip.rv=complete(t[2], ['STATIC', 'SHARED', 'MODULE'])`${4: EXCLUDE_FROM_ALL} ${0:sources}) endsnippet snippet add_subdirectory "add_subdirectory" add_subdirectory(${1:source_dir} ${2:binary_dir}${3: EXCLUDE_FROM_ALL}) endsnippet snippet add_test "add_test" add_test(NAME ${1:name} COMMAND ${2:command}${3: CONFIGURATIONS ${4:config}}${5: WORKING_DIRECTORY ${6:directory}}) endsnippet snippet aux_source_directory "aux_source_directory" aux_source_directory(${1:directory} ${2:variable}) endsnippet snippet break "break" break() endsnippet snippet build_command "build_command" build_command(${1:variable}${2: CONFIGURATION ${3:config}}${4: TARGET ${6:target}}) endsnippet snippet cmake_host_system_information "cmake_host_system_information" cmake_host_system_information(RESULT ${1:variable} QUERY $2`!p snip.rv=complete(t[2], ['NUMBER_OF_LOGICAL_CORES', 'NUMBER_OF_PHYSICAL_CORES', 'HOSTNAME', 'FQDN', 'TOTAL_VIRTUAL_MEMORY', 'AVAILABLE_VIRTUAL_MEMORY', 'TOTAL_PHYSICAL_MEMORY', 'AVAILABLE_PHYSICAL_MEMORY'])`) endsnippet snippet cmake_minimum_required "cmake_minimum_required" cmake_minimum_required(VERSION $1${2: FATAL_ERROR}) endsnippet snippet cmake_policy "cmake_policy VERSION" cmake_policy(VERSION ${1:version}) endsnippet snippet cmake_policy "cmake_policy SET" cmake_policy(SET CMP${1:0000} $2`!p snip.rv=complete(t[2], ['OLD', 'NEW'])`) endsnippet snippet cmake_policy "cmake_policy GET" cmake_policy(GET CMP${1:0000} ${2:variable}) endsnippet snippet cmake_policy "cmake_policy PUSH/POP" cmake_policy($1`!p snip.rv=complete(t[1], ['PUSH', 'POP'])`) endsnippet snippet configure_file "configure_file" configure_file(${1:input} ${2:output}${3: COPYONLY}${4: ESCAPE_QUOTES}${5: @ONLY}${6: NEWLINE_STYLE $7`!p snip.rv=complete(t[7], ['UNIX','DOS','WIN32','LF','CRLF'])`}) endsnippet snippet create_test_sourcelist "create_test_sourcelist" create_test_sourcelist( ${1:sourceListName} ${2:driverName} ${3:tests} EXTRA_INCLUDE ${4:include} FUNCTION ${5:function}) endsnippet snippet define_property "define_property" define_property($1`!p snip.rv=complete(t[1], ['GLOBAL','DIRECTORY','TARGET','SOURCE','TEST','VARIABLE','CACHED_VARIABLE'])` PROPERTY ${2:name}${3: INHERITED} BRIEF_DOCS ${4:brief-docs} FULL_DOCS ${5:full-docs}) endsnippet snippet elseif "elseif" elseif(${1:condition}) $0 endsnippet snippet enable_language "enable_language" enable_language($1`!p snip.rv=complete(t[1], ['C', 'CXX', 'FORTRAN'])`${2: OPTIONAL}) endsnippet snippet enable_testing "enable_testing" enable_testing() endsnippet snippet execute_process "execute_process" execute_process( COMMAND ${1:commands}${2: WORKING_DIRECTORY ${3:directory}}${4: TIMEOUT ${5:seconds}}${6: RESULT_VARIABLE ${7:variable}}${8: OUTPUT_VARIABLE ${9:variable}}${10: ERROR_VARIABLE ${11:variable}}${12: INPUT_FILE ${13:file}}${14: OUTPUT_FILE ${15:file}}${16: ERROR_FILE ${17:file}}${18: OUTPUT_QUIET}${19: ERROR_QUIET}${20: OUTPUT_STRIP_TRAILING_WHITESPACE}${21: ERROR_STRIP_TRAILING_WHITESPACE}) endsnippet snippet export "export" export(EXPORT ${1:export-name}${2: NAMESPACE ${3:namespace}}${4: FILE ${5:filename}}) endsnippet snippet file "file WRITE" file(WRITE ${1:filename} "${2:message to write}") endsnippet snippet file "file APPEND" file(APPEND ${1:filename} "${2:message to write}") endsnippet snippet file "file READ" file(READ ${1:filename} ${2:variable}${3: LIMIT ${4:numBytes}}${5: OFFSET ${6:offset}}${7: HEX}) endsnippet snippet file "file HASH" file($1`!p snip.rv=complete(t[1], ['MD5','SHA1','SHA224','SHA256','SHA384','SHA512'])` ${2:filename} ${3:variable}) endsnippet # file(STRINGS filename variable [LIMIT_COUNT num] # [LIMIT_INPUT numBytes] [LIMIT_OUTPUT numBytes] # [LENGTH_MINIMUM numBytes] [LENGTH_MAXIMUM numBytes] # [NEWLINE_CONSUME] [REGEX regex] # [NO_HEX_CONVERSION]) # file(GLOB variable [RELATIVE path] [globbing expressions]...) # file(GLOB_RECURSE variable [RELATIVE path] # [FOLLOW_SYMLINKS] [globbing expressions]...) # file(RENAME ) # file(REMOVE [file1 ...]) # file(REMOVE_RECURSE [file1 ...]) # file(MAKE_DIRECTORY [directory1 directory2 ...]) # file(RELATIVE_PATH variable directory file) # file(TO_CMAKE_PATH path result) # file(TO_NATIVE_PATH path result) # file(DOWNLOAD url file [INACTIVITY_TIMEOUT timeout] # [TIMEOUT timeout] [STATUS status] [LOG log] [SHOW_PROGRESS] # [EXPECTED_HASH ALGO=value] [EXPECTED_MD5 sum] # [TLS_VERIFY on|off] [TLS_CAINFO file]) # file(UPLOAD filename url [INACTIVITY_TIMEOUT timeout] # [TIMEOUT timeout] [STATUS status] [LOG log] [SHOW_PROGRESS]) # file(TIMESTAMP filename variable [] [UTC]) # file(GENERATE OUTPUT output_file # # [CONDITION expression]) # TODO: find_file() # TODO: find_package() # TODO: find_path() snippet find_program "find_program" find_program(${1:variable} NAMES ${2:names}${3: HINTS ${4:paths}${5: ENV ${6:variable}}}${7: PATHS ${8:paths}${9: ENV ${10:variable}}}${11: PATH_SUFFIXES ${12:suffixes}}${13: DOC "${14:doc string}"}${15:${16: NO_DEFAULT_PATH}${17: NO_CMAKE_ENVIRONMENT_PATH}${18: NO_CMAKE_PATH}${19: NO_SYSTEM_ENVIRONMENT_PATH}${20: NO_CMAKE_SYSTEM_PATH}${21: $22`!p snip.rv=complete(t[22], ['CMAKE_FIND_ROOT_PATH_BOTH', 'ONLY_CMAKE_FIND_ROOT_PATH', 'NO_CMAKE_FIND_ROOT_PATH'])`}}) endsnippet # TODO: fltk_wrap_ui() snippet foreach "foreach" foreach(${1:item} \$\{${2:list}\}) $0 endforeach() endsnippet snippet function "function" function(${1:name} ${2:...}) $0 endfunction() endsnippet # TODO: get_cmake_property() # TODO: get_directory_property() # TODO: get_filename_property() # TODO: get_property() # TODO: get_source_file_property() # TODO: get_target_property() # TODO: get_test_property() snippet if "if" if(${1:condition}) $0 endif() endsnippet snippet include_directories "include_directories" include_directories($1) endsnippet # TODO: include_external_msproject() # TODO: include_regular_expression() # TODO: include() # TODO: install() # TODO: link_directories() # TODO: list() # TODO: load_cache() # TODO: load_command() # TODO: macro() # TODO: mark_as_advanced() # TODO: math() snippet message "message" message($1`!p snip.rv=complete(t[1], ['STATUS', 'WARNING', 'AUTHOR_WARNING', 'SEND_ERROR', 'FATAL_ERROR', 'DEPRECATION'])` "$2") endsnippet snippet option "option" option(${1:option} "${2:description}." $3`!p snip.rv=complete(t[3], ['ON', 'OFF'])`) endsnippet snippet project "project" project(${1:name}${2: VERSION ${4:version}}${5: LANGUAGES ${6:languages}}) endsnippet # TODO: qt_wrap_cpp() # TODO: qt_wrap_ui() # TODO: remove_definitions() snippet return "return" return() endsnippet snippet separate_arguments "separate_arguments" separate_arguments(${1:variable} $2`!p snip.rv=complete(t[2], ['UNIX_COMMAND', 'WINDOWS_COMMAND'])` "${3:arguments}") endsnippet snippet set_directory_properties "set_directory_properties" set_directory_properties(PROPERTIES ${1:property} ${2:value}) endsnippet snippet set_property "set_property" set_property($1`!p scopes=['GLOBAL', 'DIRECTORY', 'TARGET', 'SOURCE', 'TEST', 'CACHE'] snip.rv=complete(t[1], scopes)`${2/(.*)/(?1: :)/}${2:`!p if 0 == len(t[1]): snip.rv='' elif 'DIRECTORY'.startswith(t[1]): snip.rv='directory' elif 2 <= len(t[1]) and 'TARGET'.startswith(t[1]): snip.rv='targets' elif 'SOURCE'.startswith(t[1]): snip.rv='sources' elif 2 <= len(t[1]) and 'TEST'.startswith(t[1]): snip.rv='tests' elif 'CACHE'.startswith(t[1]): snip.rv='entries' else: snip.rv=''`}${3: APPEND}${4: APPEND_STRING} PROPERTY ${5:name}${6: ${7:values}}) endsnippet snippet set "set" set(${1:variable} ${2:value}) endsnippet snippet set_source_files_properties "set_source_files_properties" set_source_files_properties(${1:files} PROPERTIES ${property} ${value}) endsnippet snippet set_target_properties "set_target_properties" set_target_properties(${1:targets} PROPERTIES ${2:property} ${3:value}) endsnippet snippet set_tests_properties "set_tests_properties" set_tests_properties(${1:tests} PROPERTIES ${2:property} ${3:value}) endsnippet snippet site_name "site_name" site_name(${1:variable}) endsnippet snippet source_group "source_group" source_group(${1:name}${2: FILES ${3:sources}}${4: REGULAR_EXPRESSION "${5:regex}"}) endsnippet #string(REGEX MATCH # [...]) #string(REGEX MATCHALL # [...]) #string(REGEX REPLACE # # [...]) #string(REPLACE # # [...]) #string(CONCAT [...]) #string( # ) #string(COMPARE EQUAL ) #string(COMPARE NOTEQUAL ) #string(COMPARE LESS ) #string(COMPARE GREATER ) #string(ASCII [ ...] ) #string(CONFIGURE # [@ONLY] [ESCAPE_QUOTES]) #string(TOUPPER ) #string(TOLOWER ) #string(LENGTH ) #string(SUBSTRING ) #string(STRIP ) #string(RANDOM [LENGTH ] [ALPHABET ] # [RANDOM_SEED ] ) #string(FIND [REVERSE]) #string(TIMESTAMP [] [UTC]) #string(MAKE_C_IDENTIFIER ) snippet target_compile_definitions "target_compile_options" target_compile_definitions(${1:target} $2`!p snip.rv=complete(t[2], ['INTERFACE', 'PUBLIC', 'PRIVATE'])` ${4:definitions}) endsnippet snippet target_compile_options "target_compile_options" target_compile_options(${1:target}${2: BEFORE} $3`!p snip.rv=complete(t[3], ['INTERFACE', 'PUBLIC', 'PRIVATE'])` ${4:options}) endsnippet snippet target_include_directories "target_include_directories" target_include_directories(${1:target}${2: SYSTEM}${3: BEFORE} $4`!p snip.rv=complete(t[4], ['INTERFACE', 'PUBLIC', 'PRIVATE'])` ${5:includes}) endsnippet snippet target_link_libraries "target_link_libraries" target_link_libraries(${1:target} $2`!p snip.rv=complete(t[2], ['PRIVATE', 'PUBLIC', 'INTERFACE'])` ${3:libraries}) endsnippet snippet try_compile "try_compile CMAKE" try_compile(${1:result} ${2:binary_dir} ${3:source_dir} ${4:project_name}${5: ${6:target_name}}${7: CMAKE_FLAGS ${8:flags}}${9: OUTPUT_VARIABLE ${10:variable}}) endsnippet snippet try_compile "try_compile RAW" try_compile(${1:result} ${2:binary_dir}${3: SOURCES} ${4:source_files}${5: CMAKE_FLAGS ${6:flags}}${7: COMPILE_DEFINITIONS ${8:flags}}${9: LINK_LIBRARIES ${10:libs}}${11: OUTPUT_VARIABLE ${12:output}}${13: COPY_FILE ${14:file_name} COPY_FILE_ERROR ${15:copy_result}}) endsnippet snippet try_run "try_run" try_run(${1:run_result} ${2:compile_result} ${3:binary_dir} ${4:source_file}${5: CMAKE_FLAGS ${6:flags}}${7: COMPILE_DEFINITIONS ${8:flags}}${9: COMPILE_OUTPUT_VARIABLE ${10:compile_output}}${11: RUN_OUTPUT_VARIABLE ${12:run_output}}${13: OUTPUT_VARIABLE ${14:output}}${15: ARGS ${16:arguments}}) endsnippet snippet unset "unset" unset(${1:variable}${2: $3`!p snip.rv=complete(t[3], ['CACHE', 'PARENT_SCOPE'])`}) endsnippet snippet variable_watch "variable_watch" variable_watch(${1:variable}${2: ${3:command}}) endsnippet snippet while "while" while(${1:condition}) $0 endwhile() endsnippet