+snippet w "Define a new QWidget" b
+auto ${1:widget} = new ${2:QWidget};
+$1->setObjectName("${3:$1}");
+${0}
+endsnippet
+
+snippet widget "Qt Widget Class" b
+class ${1:`!p snip.rv = snip.basename or "WidgetClass"`} : public QWidget
+{
+ Q_OBJECT
+
+public:
+ explicit $1(${2}QWidget *parent = nullptr);
+ virtual ~$1() = default;
+
+ $0
+public slots:
+
+signals:
+
+private:
+
+}; // class${1/.+/ $0/m}
+endsnippet
+
+# http://stackoverflow.com/a/9864472
+snippet alias "Function alias" b
+template <typename... Args>
+auto ${1:alias}(Args&&... args)
+ -> decltype($2(std::forward<Args>(args)...))
+{
+ return ${2:function}(std::forward<Args>(args)...);
+}
+endsnippet
+
+# https://stackoverflow.com/a/14803335
+snippet bind_memfun
+template<typename Ret, typename T, typename... Args>
+std::function<Ret(Args...)> ${1:object_bind}(Ret (T::* fun)(Args...), T &t)
+{
+ return [=](Args... args) { return (t.*fun)(args...); };
+}
+endsnippet
+
+snippet once "#pragma once" b
+#pragma once
+
+${0}
+endsnippet
+
+snippet ostream "operator<<(ostream)" b
+inline std::ostream & operator<<(std::ostream &os, ${1:Type} const & rhs)
+{
+ os << ${0};
+ return os;
+}
+endsnippet
+
+snippet pragma-ignore "ignore diagnostics"
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-W${1}"
+${VISUAL}${0}
+#pragma GCC diagnostic pop
+endsnippet
+
+snippet FPP "FPP Copyright" b
+// Copyright © Focal Point Positioning Limited `!v strftime("%Y")`. All Rights Reserved.
+// This code is the copyright of Focal Point Positioning Limited and
+// cannot be used, copied or distributed without the express written
+// permission of Focal Point Positioning Limited.
+${0}
+endsnippet