]> git.rmz.io Git - dotfiles.git/blob - vim/ultisnips/cpp.snippets
vim/snippets: add cmake FetchContent snippets
[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 t
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}) = default;
20 virtual ~${1/(\w+).*/$1/}() = default;
21
22 private:
23 ${0:/* data */}
24 }; // class${1/.+/ $0/m}
25 endsnippet
26
27 snippet rule5 "Default constructors/destructors/operaters" b
28 ${1:classname}() = default;
29 ~$1() = default;
30 $1($1 const &) = default;
31 $1($1 &&) = default;
32 $1 &operator=($1 const &) = default;
33 $1 &operator=($1 &&) = default;
34 endsnippet
35
36 snippet ns "namespace .. (namespace)"
37 namespace${1/.+/ /m}${1} {
38 ${VISUAL}${0}
39 } // namespace${1/.+/ $0/m}
40 endsnippet
41
42 snippet mfun "Member Function" b
43 ${4:void} ${1:`!p snip.rv = snip.basename or "name"`}::${2:memberFunction}(${3})
44 {
45 ${0}
46 }
47 endsnippet
48
49 clearsnippets for
50 snippet fori "for loop (for)" b
51 for (${4:size_t} ${2:i} = 0; $2 < ${1:count}; ${3:++$2})
52 {
53 ${VISUAL}${0}
54 }
55 endsnippet
56
57 snippet fore "range-based for loop"
58 for (auto ${1:n} : ${2:v})
59 {
60 ${VISUAL}${0}
61 }
62 endsnippet
63
64 snippet cplat "Cross platform pre processor split" b
65 #if defined(__GNUC__) && defined(__unix__)
66 ${1}
67 #elif defined(__APPLE__)
68 ${2}
69 #elif defined(_WIN32)
70 ${3}
71 #endif
72 endsnippet
73
74 snippet pprint "Pretty print expression" b
75 #define PPRINT(x) std::cout << #x " = " << (x) << '\n';
76 PPRINT(${VISUAL}${0})
77 endsnippet
78
79 #
80 # Qt
81 #
82 global !p
83 def align(base, a, pad=' '):
84 amount = abs(len(base) - len(a))
85 return amount * pad if len(base) < len(a) else ''
86 endglobal
87
88 snippet connect "Qt connect()" b
89 connect(${1:this}, `!p snip.rv = align(t[1],t[3])`&${2:class::function},
90 ${3:this}, `!p snip.rv = align(t[3],t[1])`&${4:class::function});
91 ${0}
92 endsnippet
93
94 snippet connectl "Qt connect() lambda" b
95 connect(${1:this}, &${2:class::function},
96 [=](${3:void}) { ${4} });
97 ${0}
98 endsnippet
99
100 snippet w "Define a new QWidget" b
101 auto ${1:widget} = new ${2:QWidget};
102 $1->setObjectName("${3:$1}");
103 ${0}
104 endsnippet
105
106 snippet widget "Qt Widget Class" b
107 class ${1:`!p snip.rv = snip.basename or "WidgetClass"`} : public QWidget
108 {
109 Q_OBJECT
110
111 public:
112 explicit $1(${2}QWidget *parent = nullptr);
113 virtual ~$1() = default;
114
115 $0
116 public slots:
117
118 signals:
119
120 private:
121
122 }; // class${1/.+/ $0/m}
123 endsnippet
124
125 # http://stackoverflow.com/a/9864472
126 snippet alias "Function alias" b
127 template <typename... Args>
128 auto ${1:alias}(Args&&... args)
129 -> decltype($2(std::forward<Args>(args)...))
130 {
131 return ${2:function}(std::forward<Args>(args)...);
132 }
133 endsnippet
134
135 # https://stackoverflow.com/a/14803335
136 snippet bind_memfun
137 template<typename Ret, typename T, typename... Args>
138 std::function<Ret(Args...)> ${1:object_bind}(Ret (T::* fun)(Args...), T &t)
139 {
140 return [=](Args... args) { return (t.*fun)(args...); };
141 }
142 endsnippet
143
144 snippet once "#pragma once" b
145 #pragma once
146
147 ${0}
148 endsnippet
149
150 snippet ostream "operator<<(ostream)" b
151 inline std::ostream & operator<<(std::ostream &os, ${1:Type} const & rhs)
152 {
153 os << ${0};
154 return os;
155 }
156 endsnippet
157
158 snippet pragma-ignore "ignore diagnostics"
159 #pragma GCC diagnostic push
160 #pragma GCC diagnostic ignored "-W${1}"
161 ${VISUAL}${0}
162 #pragma GCC diagnostic pop
163 endsnippet
164
165 snippet FPP "FPP Copyright" b
166 // Copyright © Focal Point Positioning Limited `!v strftime("%Y")`. All Rights Reserved.
167 // This code is the copyright of Focal Point Positioning Limited and
168 // cannot be used, copied or distributed without the express written
169 // permission of Focal Point Positioning Limited.
170 ${0}
171 endsnippet