diff --git a/snippets/language-c.cson b/snippets/language-c.cson index eedf889..69fd6ac 100644 --- a/snippets/language-c.cson +++ b/snippets/language-c.cson @@ -1,113 +1,217 @@ +# Snippets for C, C++, Obj-C and Obj-C++ '.source.c, .source.cpp, .source.objc, .source.objcpp': - '#ifndef … #define … #endif': - 'prefix': 'def' - 'body': '#ifndef ${1:SYMBOL}\n#define $1 ${2:value}\n#endif' - '#include <>': + 'header guard': + 'prefix': 'once' + 'body': '#ifndef ${1:SYMBOL}\n#define $1\n\n${2}\n\n#endif /* end of include guard: $1 */\n' + + 'include (default)': 'prefix': 'Inc' - 'body': '#include <${1:.h}>' - '#include ""': + 'body': '#include <${1:filename}.h>$2' + + 'include (current)': 'prefix': 'inc' - 'body': '#include "${1:.h}"' - '#pragma mark': + 'body': '#include "${1:filename}.h"$2' + + 'pragma mark': 'prefix': 'mark' 'body': '#if 0\n${1:#pragma mark -\n}#pragma mark $2\n#endif\n\n$0' - 'main()': + + 'define': + 'prefix': 'def' + 'body': '#ifndef ${1:SYMBOL}\n#define $1 ${2:value}\n#endif' + + 'typedef': + 'prefix': 'td' + 'body': 'typedef ${1:int} ${2:MyCustomType};' + + 'enumeration': + 'prefix': 'enum' + 'body': 'enum ${1:name} { $0 };' + + 'struct': + 'prefix': 'st' + 'body': 'struct ${1:name_t} {\n\t${2:/* data */}\n};' + + 'main': 'prefix': 'main' 'body': 'int main(int argc, char const *argv[]) {\n\t${1:/* code */}\n\treturn 0;\n}' - 'For Loop': + + 'for': 'prefix': 'for' 'body': 'for (size_t ${1:i} = 0; ${1:i} < ${2:count}; ${1:i}${3:++}) {\n\t${4:/* code */}\n}' - 'Header Include-Guard': - 'prefix': 'once' - 'body': '#ifndef ${1:SYMBOL}\n#define $1\n\n${2}\n\n#endif /* end of include guard: $1 */\n' - 'Shared Pointer': - 'prefix': 'sp' - 'body': 'typedef std::shared_ptr<${2:${1:my_type}_t}> ${3:${4:my_type}_ptr};' - 'Typedef': - 'prefix': 'td' - 'body': 'typedef ${1:int} ${2:MyCustomType};' - 'Do While Loop': + + 'do … while': 'prefix': 'do' - 'body': 'do {\n\t${0:/* code */}\n} while(${1:/* condition */});' - 'While Loop': + 'body': 'do {\n\t${0:/* code */}\n} while (${1:/* condition */});' + + 'while': 'prefix': 'while' 'body': 'while (${1:/* condition */}) {\n\t${2:/* code */}\n}' - 'fprintf': - 'prefix': 'fprintf' - 'body': 'fprintf(${1:stderr}, "${2:%s}\\\\n", $3);$4' - 'If Condition': + + 'if': 'prefix': 'if' 'body': 'if (${1:/* condition */}) {\n\t${2:/* code */}\n}' - 'If Else': + + 'if … else': 'prefix': 'ife' - 'body': 'if (${1:/* condition */}) {\n\t${2:/* code */}\n} else {\n\t${3:/* code */}\n}' - 'If ElseIf': + 'body': ''' + if (${1:/* condition */}) { + ${2:/* code */} + } else { + ${3:/* code */} + } + ''' + + 'if … else if': 'prefix': 'iff' - 'body': 'if (${1:/* condition */}) {\n\t${2:/* code */}\n} else if (${3:/* condition */}) {\n\t${4:/* code */}\n}' - 'If ElseIf Else': + 'body': ''' + if (${1:/* condition */}) { + ${2:/* code */} + } else if (${3:/* condition */}) { + ${4:/* code */} + } + ''' + + 'if … else if … else': 'prefix': 'iffe' - 'body': 'if (${1:/* condition */}) {\n\t${2:/* code */}\n} else if (${3:/* condition */}) {\n\t${4:/* code */}\n} else {\n\t${5:/* code */}\n}' - 'Switch Statement': + 'body': ''' + if (${1:/* condition */}) { + ${2:/* code */} + } else if (${3:/* condition */}) { + ${4:/* code */} + } else { + ${5:/* code */} + } + ''' + + 'switch': 'prefix': 'switch' 'body': 'switch (${1:/* expression */}) {\n\tcase ${2:/* value */}:\n}' + 'case': 'prefix': 'cs' 'body': 'case ${1:/* value */}:$0' + 'printf': 'prefix': 'printf' - 'body': 'printf("${1:%s}\\\\n", $2);$3' + 'body': 'printf("${1:%s}\\\\n", ${2:str});$3' + + 'fprintf': + 'prefix': 'fprintf' + 'body': 'fprintf(${1:stderr}, "${2:%s}\\\\n", ${3:str});$4' + 'scanf': 'prefix': 'scanf' - 'body': 'scanf(\"${1:%s}\\\\n\", $2);$3' - 'Struct': - 'prefix': 'st' - 'body': 'struct ${1:name_t} {\n\t${2:/* data */}\n};' + 'body': 'scanf("${1:%s}\\\\n", ${2:str});$3' + + 'fscanf': + 'prefix': 'fscanf' + 'body': 'fscanf(${1:fp}, "${2:%s}\\\\n", ${3:str});$4' + 'void': 'prefix': 'void' 'body': 'void ${1:name}(${2:/* arguments */}) {\n\t${3:/* code */}\n}' - 'any function': + + 'function': 'prefix': 'func' 'body': '${1:int} ${2:name}(${3:/* arguments */}) {\n\t${5:/* code */}\n\treturn ${4:0};\n}' + 'write file': 'prefix': 'wf' - 'body': 'FILE *${1:fp};\n${1:fp} = fopen ("${2:filename.txt}","w");\nif (${1:fp}!=NULL)\n{\n\tfprintf(${1:fp},"${3:Some String\\\\n}");\n\tfclose (${1:fp});\n}' + 'body': ''' + FILE *${1:fp}; + ${1:fp} = fopen("${2:filename.txt}", "w"); + if (${1:fp} != NULL) { + fprintf(${1:fp}, "${3:Some string\\\\n}"); + fclose(${1:fp}); + } + ''' + 'read file': 'prefix': 'rf' - 'body': 'FILE *${1:fp};\n${1:fp} = fopen ("${2:filename.txt}","r");\nif (${1:fp}!=NULL)\n{\n\tfscanf(${1:fp},"${3:Some String\\\\n}", ${3:&var});\n\tfclose (${1:fp});\n}' + 'body': ''' + FILE *${1:fp}; + ${1:fp} = fopen("${2:filename.txt}", "r"); + if (${1:fp} != NULL) { + fscanf(${1:fp}, "${3:Some string\\\\n}", ${3:&var}); + fclose(${1:fp}); + } + ''' + + + +# Snippets for C++ and Obj-C++ '.source.cpp, .source.objcpp': - 'Enumeration': - 'prefix': 'enum' - 'body': 'enum ${1:name} { $0 };' - 'Class': + 'class': 'prefix': 'cl' - 'body': 'class ${1:name_t} {\nprivate:\n\t${0:/* data */}\n\npublic:\n\t${1:name_t} (${2:arguments});\n\tvirtual ~${1:name_t} ();\n};' - 'Namespace': + 'body': ''' + class ${1:name_t} { + private: + ${0:/* data */} + + public: + ${1:name_t} (${2:arguments}); + virtual ~${1:name_t} (); + }; + ''' + + 'namespace': 'prefix': 'ns' 'body': 'namespace ${1:name} {\n\t$2\n} /* $1 */' + 'cout': 'prefix': 'cout' - 'body': 'std::cout << \"${1:/* message */}\" << \'\\\\n\';' + 'body': 'std::cout << "${1:/* message */}" << \'\\\\n\';' + 'cin': 'prefix': 'cin' 'body': 'std::cin >> ${1:/* variable */};' + 'cerr': 'prefix': 'cerr' - 'body': 'std::cerr << \"${1:/* error message */}\" << \'\\\\n\';' + 'body': 'std::cerr << "${1:/* error message */}" << \'\\\\n\';' + 'std::map': 'prefix': 'map' 'body': 'std::map<${1:key}, ${2:value}> map$3;' + 'std::string': 'prefix': 'str' 'body': 'std::string' + 'std::vector': 'prefix': 'vector' 'body': 'std::vector<${1:int}> v$2;' - 'template ': + + 'shared pointer': + 'prefix': 'sp' + 'body': 'typedef std::shared_ptr<${2:${1:my_type}_t}> ${3:${4:my_type}_ptr};' + + 'template': 'prefix': 'tp' 'body': 'template ' + 'output file': 'prefix': 'outf' - 'body': 'std::ofstream ${1:afile}("${2:filename.txt}", std::ios::out);\nif (${1:afile}.is_open()) {\n\t${1:afile} << "${3:This is a line.}\\\\n";\n\t${1:afile}.close();\n}' + 'body': ''' + std::ofstream ${1:afile}("${2:filename.txt}", std::ios::out); + if (${1:afile}.is_open()) { + ${1:afile} << "${3:This is a line.}\\\\n"; + ${1:afile}.close(); + } + ''' + 'input file': 'prefix': 'inf' - 'body': 'std::ifstream ${1:afile}("${2:filename.txt}", std::ios::in);\nif (${1:afile}.is_open()) {\n\tstd::string line;\n\twhile (std::getline(${1:afile}, line)) {\n\t\tstd::cout << line << \'\\\\n\';\n\t}\n\t${1:afile}.close();\n}\nelse {\n\tstd::cerr << "Unable to open file\\\\n";\n}' + 'body': ''' + std::ifstream ${1:afile}("${2:filename.txt}", std::ios::in); + if (${1:afile}.is_open()) { + std::string line; + while (std::getline(${1:afile}, line)) { + std::cout << line << '\\\\n'; + } + ${1:afile}.close(); + } else { + std::cerr << "Unable to open file\\\\n"; + } + '''