Skip to content
This repository has been archived by the owner on Dec 15, 2022. It is now read-only.

Various snippet improvements #363

Open
wants to merge 6 commits into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
208 changes: 156 additions & 52 deletions snippets/language-c.cson
Original file line number Diff line number Diff line change
@@ -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 <typename>':

'shared pointer':
'prefix': 'sp'
'body': 'typedef std::shared_ptr<${2:${1:my_type}_t}> ${3:${4:my_type}_ptr};'

'template':
'prefix': 'tp'
'body': 'template <typename ${1:T}>'

'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";
}
'''