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($1) endsnippet snippet 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 "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(${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(-D${1:MACRO}$2) endsnippet snippet add_dependencies add_dependencies(${1:target} ${2:dependencies}) endsnippet snippet add_executable add_executable(${1:target}${2: WIN32}${3: MACOSX_BUNDLE}${4: EXCLUDE_FROM_ALL} ${0:sources}) endsnippet snippet 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(${1:source_dir} ${2:binary_dir}${3: EXCLUDE_FROM_ALL}) endsnippet snippet 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(${1:directory} ${2:variable}) endsnippet snippet break break() endsnippet snippet build_command build_command(${1:variable}${2: CONFIGURATION ${3:config}}${4: TARGET ${6:target}}) endsnippet snippet 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(VERSION ${1:version}${2: FATAL_ERROR}) endsnippet snippet cmake_policy "version" cmake_policy(VERSION ${1:version}) endsnippet snippet cmake_policy "set" cmake_policy(SET CMP${1:0000} $2`!p snip.rv=complete(t[2], ['OLD', 'NEW'])`) endsnippet snippet cmake_policy "get" cmake_policy(GET CMP${1:0000} ${2:variable}) endsnippet snippet cmake_policy "push/pop" cmake_policy($1`!p snip.rv=complete(t[1], ['PUSH', 'POP'])`) endsnippet snippet 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( ${1:sourceListName} ${2:driverName} ${3:tests} EXTRA_INCLUDE ${4:include} FUNCTION ${5:function}) endsnippet snippet 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(${1:condition}) $0 endsnippet snippet enable_language enable_language($1`!p snip.rv=complete(t[1], ['C', 'CXX', 'FORTRAN'])`${2: OPTIONAL}) endsnippet snippet enable_testing enable_testing() endsnippet snippet 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 ${1:export-name}${2: NAMESPACE ${3:namespace}}${4: FILE ${5:filename}}) endsnippet snippet file "write" file(WRITE ${1:filename} "${2:message to write}") endsnippet snippet file "append" file(APPEND ${1:filename} "${2:message to write}") endsnippet snippet file "read" file(READ ${1:filename} ${2:variable}${3: LIMIT ${4:numBytes}}${5: OFFSET ${6:offset}}${7: HEX}) endsnippet snippet file "hash" file($1`!p snip.rv=complete(t[1], ['MD5','SHA1','SHA224','SHA256','SHA384','SHA512'])` ${2:filename} ${3:variable}) endsnippet snippet file "strings" file(STRINGS ${1:filename} ${2:variable}${3: LIMIT_COUNT ${4:number}}${5: ${6:LIMIT_INPUT ${7:numBytes}}${8: LIMIT_OUTPUT ${9:numBytes}}}${10: ${11:LENGTH_MINIMUM ${12:numBytes}}${13: LENGTH_MAXIMUM ${14:numBytes}}}${15: NEWLINE_CONSUME}${16: REGEX "${17:regex}"}${18: NO_HEX_CONVERSION}) endsnippet snippet file "glob" file(GLOB ${1:variable}${2: RELATIVE ${3:path}}${4: ${5:globbing expressions}}) endsnippet snippet file "glob recursive" le(GLOB_RECURSE ${1:variable}${2: RELATIVE ${3:path}}${4: FOLLOW_SYMLINKS}${5: ${6:globbing expressions}}) endsnippet snippet file "rename" file(RENAME ${1:oldname} ${2:newname}) endsnippet snippet REMOVE "remove" file(REMOVE ${1:files}) endsnippet snippet file "remove recursive" file(REMOVE_RECURSE ${1:files}) endsnippet snippet file "make directory" file(MAKE_DIRECTORY ${1:directories}) endsnippet snippet file "relative path" file(RELATIVE_PATH ${1:variable} ${2:directory} ${3:file}) endsnippet snippet file "to cmake path" file(TO_CMAKE_PATH ${1:path} ${2:result}) endsnippet snippet file "to native path" file(TO_NATIVE_PATH ${1:path} ${2:result}) endsnippet snippet file "download" file(DOWNLOAD ${1:url} ${2:file}${3: INACTIVITY_TIMEOUT ${4:timeout}}${5: TIMEOUT ${6:timeout}}${7: STATUS ${8:status}}${9: LOG ${10:log}}${11: SHOW_PROGRESS}${12: EXPECTED_HASH ALGO=${13:value}}${14: EXPECTED_MD5 ${15:sum}}${16: TLS_VERIFY $17`!p snip.rv=complete(t[17], ['on', 'off'])`}${18: TLS_CAINFO ${19:file}}) endsnippet snippet file "upload" file(UPLOAD ${1:filename} ${2:url}${3: INACTIVITY_TIMEOUT ${4:timeout}}${5: TIMEOUT ${6:timeout}}${7: STATUS ${8:status}}${9: LOG ${10:log}}${11: SHOW_PROGRESS}) endsnippet snippet file "timestamp" file(TIMESTAMP ${1:filename} ${2:variable}${3: ${4:format string}}${5: ${6:UTC}}) endsnippet snippet file "generate output" file(GENERATE OUTPUT ${1:output_file} $2`!p snip.rv=complete(t[2], ['INPUT', 'CONTENT'])` ${3:input}${4: CONDITION ${5:expression}}) endsnippet snippet find_file "shorthand" find_file(${1:variable} ${2:paths}) endsnippet snippet find_file "general" find_file(${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: find_package snippet find_path "shorthand" find_path(${1:variable} ${1:names}) endsnippet snippet find_path "general" find_path(${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 snippet find_program "shorthand" find_program(${1:variable} ${2:name}${3: ${4:paths}}) endsnippet snippet find_program "general" 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 snippet fltk_wrap_ui fltk_wrap_ui(${1:resulting_library_name} ${2:sources}) endsnippet snippet foreach foreach(${1:item} \$\{${2:list}\}) $0 endforeach() endsnippet snippet function function(${1:name} ${2:arguments}) $0 endfunction() endsnippet # TODO: get_cmake_property() # TODO: get_directory_property() # TODO: get_filename_property() global !p PROPERTY_OPTIONS=['SET', 'DEFINED', 'BRIEF_DOCS', 'FULL_DOCS'] endglobal snippet get_property "global" get_property(${1:variable} GLOBAL PROPERTY ${2:name} $3`!p snip.rv=complete(t[3], PROPERTY_OPTIONS)`) endsnippet snippet get_property "directory" get_property(${1:variable} DIRECTORY ${2:directory} PROPERTY ${3:name} $4`!p snip.rv=complete(t[4], PROPERTY_OPTIONS)`) endsnippet snippet get_property "target" get_property(${1:variable} TARGET ${2:target} PROPERTY ${3:name} $4`!p snip.rv=complete(t[4], PROPERTY_OPTIONS)`) endsnippet snippet get_property "source" get_property(${1:variable} SOURCE ${2:source} PROPERTY ${3:name} $4`!p snip.rv=complete(t[4], PROPERTY_OPTIONS)`) endsnippet snippet get_property "cache" get_property(${1:variable} CACHE ${2:entry} PROPERTY ${3:name} $4`!p snip.rv=complete(t[4], PROPERTY_OPTIONS)`) endsnippet snippet get_property "cache" get_property(${1:variable} VARIABLE PROPERTY ${2:name} $3`!p snip.rv=complete(t[4], PROPERTY_OPTIONS)`) endsnippet # TODO: get_source_file_property() # TODO: get_target_property() # TODO: get_test_property() snippet if if(${1:condition}) $0 endif() endsnippet snippet include_directories include_directories(${1:SYSTEM }$3) endsnippet snippet include_external_msproject "include_external_msproject" include_external_msproject(${1:projectname} ${2:location}${3: TYPE ${4:projectTypeGUID}}${5: GUID ${6:projectGUID}}${7: PLATFORM ${8:platformName}} ${9:dependencies}) endsnippet snippet include_regular_expression "include_regular_expression" include_regular_expression(${1:regex_match}${2: ${3:regex_complain}}) endsnippet snippet include include(${1:file|module}${2: ${3:OPTIONAL}}${4: ${5:RESULT_VARIABLE} ${6:variable}}${7: NO_POLICY_SCOPE}) endsnippet # TODO: install() snippet link_directories link_directories(${1:directories}) endsnippet snippet list list(APPEND ${1:list} ${2:elements}) endsnippet snippet load_cache "prefix" load_cache(${1:path_to_cache_file} READ_WITH_PREFIX ${2:prefix} ${3:entries}) endsnippet snippet load_cache "internal" load_cache(${1:path_to_cache_file}${2: EXCLUDE ${3:entries}}${4: INCLUDE_INTERNALS ${5:entries}}) endsnippet snippet load_command load_command(COMMAND_NAME ${1:locations}) endsnippet snippet macro macro(${1:name} ${2:arguments}) $0 endmacro() endsnippet snippet mark_as_advanced mark_as_advanced($1`!p snip.rv=complete(t[1], ['CLEAR', 'FORCE'])` ${2:variables}) endsnippet snippet math math(EXPR ${1:output} ${2:expression}) endsnippet snippet message message($1`!p snip.rv=complete(t[1], ['STATUS', 'WARNING', 'AUTHOR_WARNING', 'SEND_ERROR', 'FATAL_ERROR', 'DEPRECATION'])` "$2") endsnippet snippet option option(${1:option} "${2:description}." $3`!p snip.rv=complete(t[3], ['ON', 'OFF'])`) endsnippet snippet project project(${1:name}${2: VERSION ${4:version}}${5: LANGUAGES ${6:languages}}) endsnippet snippet qt_wrap_cpp qt_wrap_cpp(${1:resulting_library_name} ${2:destination_name} ${3:source_lists}) endsnippet snippet qt_wrap_ui qt_wrap_ui(${1:resulting_library_name} ${2:header_destination_name} ${3:sources_destination_name} ${4:source_lists}) endsnippet snippet remove_definitions remove_definitions(${1:definitions}) endsnippet snippet return return() endsnippet snippet 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(PROPERTIES ${1:property} ${2:value}) endsnippet snippet set_property "global" set_property(GLOBAL${1: ${2:APPEND}}${3: ${4:APPEND_STRING}} PROPERTY ${5:name}${6: ${7:values}}) endsnippet snippet set_property "directory" set_property(DIRECTORY ${1:directory}${2: ${3:APPEND}}${4: ${5:APPEND_STRING}} PROPERTY ${6:name}${7: ${8:values}}) endsnippet snippet set_property "target" set_property(TARGET ${1:targets}${2: ${3:APPEND}}${4: ${5:APPEND_STRING}} PROPERTY ${6:name}${7: ${8:values}}) endsnippet snippet set_property "source" set_property(SOURCE ${1:sources}${2: ${3:APPEND}}${4: ${5:APPEND_STRING}} PROPERTY ${6:name}${7: ${8:values}}) endsnippet snippet set_property "test" set_property(TEST ${1:tests}${2: ${3:APPEND}}${4: ${5:APPEND_STRING}} PROPERTY ${6:name}${7: ${8:values}}) endsnippet snippet set_property "cache" set_property(CACHE ${1:entries}${2: ${3:APPEND}}${4: ${5:APPEND_STRING}} PROPERTY ${6:name}${7: ${8:values}}) endsnippet # TODO Add support for CACHE|PARENT_SCOPE options. snippet set set(${1:variable} ${2:value}) endsnippet snippet set_source_files_properties set_source_files_properties(${1:files} PROPERTIES ${property} ${value}) endsnippet snippet set_target_properties set_target_properties(${1:targets} PROPERTIES ${2:property} ${3:value}) endsnippet snippet set_tests_properties set_tests_properties(${1:tests} PROPERTIES ${2:property} ${3:value}) endsnippet snippet site_name site_name(${1:variable}) endsnippet snippet source_group source_group(${1:name}${2: FILES ${3:sources}}${4: REGULAR_EXPRESSION "${5:regex}"}) endsnippet snippet string "regex match" string(REGEX MATCH ${1:regex} ${2:output} ${3:inputs}) endsnippet snippet string "regex match all" string(REGEX MATCHALL ${1:regex} ${2:output} ${3:inputs}) endsnippet snippet string "regex replace" string(REGEX MATCHALL ${1:regex} ${2:replace} ${3:output} ${4:inputs}) endsnippet snippet string "replace" string(REPLACE ${1:match} ${2:replace} ${3:output} ${4:inputs}) endsnippet snippet string "concatinate" string(CONCAT ${1:output}${2: ${3:inputs}}) endsnippet snippet string "hash" string($1`!p snip.rv=complete(t[1], ['MD5', 'SHA1', 'SHA224', 'SHA256', 'SHA384', 'SHA512'])` ${2:output} ${3:input}) endsnippet snippet string "compare equal" string(COMPARE EQUAL ${1:string1} ${2:string2} ${3:output}) endsnippet snippet string "compare not equal" string(COMPARE NOTEQUAL ${1:string1} ${2:string2} ${3:output}) endsnippet snippet string "compare less" string(COMPARE LESS ${1:string1} ${2:string2} ${3:output}) endsnippet snippet string "compare greater" string(COMPARE GREATER ${1:string1} ${2:string2} ${3:output}) endsnippet snippet string "ASCII" string(ASCII ${1:number}${2: ${3:numbers}} ${4:output}) endsnippet snippet string "configure" string(CONFIGURE ${1:string} ${2:output}${3: @ONLY}${4: ESCAPE_QUOTES}) endsnippet snippet string "to upper" string(TOUPPER ${1:string} ${2:output}) endsnippet snippet string "to lower" string(TOLOWER ${1:string} ${2:output}) endsnippet snippet string "length" string(LENGTH ${1:string} ${2:output}) endsnippet snippet string "sub string" string(LENGTH ${1:string} ${2:begin} ${3:length} ${4:output}) endsnippet snippet string "strip" string(STRIP ${1:string} ${2:output}) endsnippet snippet string "random" string(RANDOM${1: LENGTH ${2:length}}${3: ALPHABET ${4:alphabet}}${5: RANDOM_SEED ${6:seed}} ${7:output}) endsnippet snippet string "find" string(FIND ${1:string} ${2:substring} ${3:output}${4: REVERSE}) endsnippet snippet string "timestamp" string(TIMESTAMP ${1:output}${2: ${3:format}}${4: UTC}) endsnippet snippet string "make C identifier" string(MAKE_C_IDENTIFIER ${1:input} ${2:output}) endsnippet snippet target_compile_definitions 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(${1:target}${2: BEFORE} $3`!p snip.rv=complete(t[3], ['INTERFACE', 'PUBLIC', 'PRIVATE'])` ${4:options}) endsnippet snippet 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(${1:target} $2`!p snip.rv=complete(t[2], ['PRIVATE', 'PUBLIC', 'INTERFACE'])` ${3:libraries}) endsnippet snippet 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 "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(${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(${1:variable}${2: $3`!p snip.rv=complete(t[3], ['CACHE', 'PARENT_SCOPE'])`}) endsnippet snippet variable_watch variable_watch(${1:variable}${2: ${3:command}}) endsnippet snippet while while(${1:condition}) $0 endwhile() endsnippet