]> git.rmz.io Git - dotfiles.git/blob - vim/ultisnips/cpp.snippets
vim/ultisnips: add range-based for loop snippet
[dotfiles.git] / vim / ultisnips / cpp.snippets
1 # replace snippets of parent ft
2 priority 1
3
4 # disable horrible one word snippets
5 clearsnippets pri pro pub fr mu
6
7 snippet inc "#include <>" b
8 #include <${1:iostream}>
9 endsnippet
10
11 snippet Inc "#include \'\'" b
12 #include "${1:`!p snip.rv = snip.basename+".hpp"`}"
13 endsnippet
14
15 snippet cl "class .. (class)" b
16 class ${1:`!p snip.rv = snip.basename or "name"`}
17 {
18 public:
19 ${1/(\w+).*/$1/}(${2:arguments});
20 virtual ~${1/(\w+).*/$1/}();
21
22 private:
23 ${0:/* data */}
24 }; // class${1/.+/ $0/m}
25 endsnippet
26
27 snippet ns "namespace .. (namespace)"
28 namespace${1/.+/ /m}${1:`!p snip.rv = snip.basename or "name"`} {
29 ${VISUAL}${0}
30 }${1/.+/ \/\/ namespace $0/m}
31 endsnippet
32
33 snippet mfun "Member Function" b
34 ${4:void} ${1:`!p snip.rv = snip.basename or "name"`}::${2:memberFunction}(${3})
35 {
36 ${0}
37 }
38 endsnippet
39
40 snippet for "for loop (for)"
41 for (${4:int} ${2:i} = 0; $2 < ${1:count}; ${3:++$2})
42 {
43 ${VISUAL}${0}
44 }
45 endsnippet
46
47 snippet fore "range-based for loop"
48 for (auto ${1:n} : ${2:v})
49 {
50 ${VISUAL}${0}
51 }
52 endsnippet
53
54 snippet cplat "Cross platform pre processor split" b
55 #if defined(__GNUC__) && defined(__unix__)
56 ${1}
57 #elif defined(__APPLE__)
58 ${2}
59 #elif defined(WIN32)
60 ${3}
61 #endif
62 endsnippet
63
64 snippet pprint "Pretty print expression" b
65 #define PPRINT(x) std::cout << #x " = " << (x) << '\n';
66 PPRINT(${VISUAL}${0})
67 endsnippet
68
69 #
70 # Qt
71 #
72 global !p
73 def align(base, a, pad=' '):
74 amount = abs(len(base) - len(a))
75 return amount * pad if len(base) < len(a) else ''
76 endglobal
77
78 snippet connect "Qt connect()" b
79 connect(${1:this}, `!p snip.rv = align(t[1],t[3])`&${2:class::function},
80 ${3:this}, `!p snip.rv = align(t[3],t[1])`&${4:class::function});
81 ${0}
82 endsnippet
83
84 snippet connectl "Qt connect() lambda" b
85 connect(${1:this}, &${2:class::function},
86 [=](${3:void}) { ${4} });
87 ${0}
88 endsnippet
89
90 snippet w "Define a new QWidget" b
91 auto ${1:widget} = new ${2:QWidget};
92 $1->setObjectName("${3:$1}");
93 ${0}
94 endsnippet
95
96 snippet widget "Qt Widget Class" b
97 class ${1:`!p snip.rv = snip.basename or "WidgetClass"`} : public QWidget
98 {
99 Q_OBJECT
100
101 public:
102 explicit $1(${2}QWidget *parent = 0);
103 ~$1() = default;
104
105 $0
106 public slots:
107
108 signals:
109
110 private:
111
112 }; // class${1/.+/ $0/m}
113 endsnippet
114
115 # http://stackoverflow.com/a/9864472
116 snippet alias "Function alias" b
117 template <typename... Args>
118 auto ${1:alias}(Args&&... args)
119 -> decltype($2(std::forward<Args>(args)...))
120 {
121 return ${2:function}(std::forward<Args>(args)...);
122 }
123 endsnippet
124
125 snippet once "#pragma once" b
126 #pragma once
127
128 ${0}
129 endsnippet