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