vim/UltiSnips/c.snippets

185 lines
2.9 KiB
Plaintext

priority 0
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 "-error"
return '(' + '|'.join(opts) + ')'
endglobal
snippet i8 "int8_t" i
int8_t
endsnippet
snippet u8 "uint8_t" i
uint8_t
endsnippet
snippet i16 "int16_t" i
int16_t
endsnippet
snippet u16 "uint16_t" i
uint16_t
endsnippet
snippet i32 "int32_t" i
int32_t
endsnippet
snippet u32 "uint32_t" i
uint32_t
endsnippet
snippet i64 "int64_t" i
int64_t
endsnippet
snippet u64 "uint64_t" i
uint64_t
endsnippet
snippet #include "Include directive"
#include <${1:header}>
endsnippet
snippet #define "Macro definition"
#define ${1:SYMBOL} $0
endsnippet
snippet #ifndef "Guarded macro definition"
#ifndef ${1/([A-Za-z0-9_]+).*/$1/}
#define ${1:SYMBOL} ${0:VALUE}
#endif // ${1/([A-Za-z0-9_]+).*/$1/}
endsnippet
snippet #if "#if block"
#if ${1:SYMBOL}
$0
#endif // ${1/([A-Za-z0-9_]+).*/$1/}
endsnippet
snippet #ifdef "#if defined(...) block"
#if defined(${1:SYMBOL})
$0
#endif // $1
endsnippet
snippet once "Include guard"
#ifndef ${2/([A-Za-z_]){1}([A-Za-z0-9_]+).*/$1$2/}$1
#define $2${1:`!p import string
snip.rv = re.sub(r'[^A-Za-z0-9]+','_', snip.fn).upper()`_INCLUDED}
$0
#endif // ${2/([A-Za-z_]){1}([A-Za-z0-9_]+).*/$1$2/}$1
endsnippet
snippet typedef "Typedef"
typedef ${1:type} ${2:custom_type};$0
endsnippet
snippet enum "Typedef enumeration"
typedef enum ${1:name} {
$0
} $1;
endsnippet
snippet struct "Typedef struct"
typedef struct ${1:name} {
$0
} $1;
endsnippet
snippet if "If statement"
if (${1:condition}) {
$0
}
endsnippet
snippet else "Else continuation"
else {
$0
}
endsnippet
snippet elif "Else if continuation"
else if (${1:condition}) {
$0
}
endsnippet
snippet for "For loop, index or range"
for (${1:int} ${2:index} = ${3:0}; $2 ${4:<} ${5:count}; $2${6:++}) {
$0
}
endsnippet
snippet while "While loop"
while (${1:condition}) {
$0
}
endsnippet
snippet do "Do while loop"
do {
$0
} while (${1:condition})
endsnippet
snippet switch "Switch statement"
switch (${1:expression}) {
$0
}
endsnippet
snippet case "Switch case"
case ${1:constant}: {
$0
} break;
endsnippet
snippet default "Switch default case"
default: {
$0
} break;
endsnippet
snippet main "Main function stub"
int main(int argc, char **argv) {
$0
}
endsnippet
# TODO: Should this be in all.snippets?
# 1. Take the form '<comment> TODO: issue ${1:id} $0'
snippet todo "Todo comment"
// TODO: redmine(${1:issue}) $0
endsnippet
# TODO: Should this be in all.snippets?
# 1. Take the form '<comment> NOTE: issue ${1:id} $0'
snippet note "Note comment"
// NOTE: $0
endsnippet
snippet in "Doxygen [in]" i
[in]
endsnippet
snippet out "Doxygen [out]" i
[out]
endsnippet
snippet @param "Doxygen param tag"
@param[$1`!p snip.rv = complete(t[1], ['in', 'out'])`]
endsnippet
snippet copydoc "Doxygen copydoc block"
/// @copydoc $0
endsnippet