UltiSnips is one of snippet systems for vim. Below are some UltiSnips snippets that other Chromium developers will hopefully find useful.
The screencast below showcases how:
copyright
+ <tab>
will fill-in current year#ifndef
+ <tab>
will calculate the macro name based on the path
of the current filenamespace
+ <tab>
+ namespace_name
+ tab
will copy the namespace
name into a comment at the end of the namespaceThe screenscast below showcases how:
<< some->expression.logme
+ <tab>
includes the expression
text in the output<< stack
+ <tab>
logs the callstacksnippet copyright
// Copyright `date +%Y` The Chromium Authors.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
$0
endsnippet
This relies on current directory being the Chromium root directory.
snippet ifndef "include guard" w
ifndef ${1:`!p snip.rv=str(path).replace('/','_').replace('\\','_').replace('.','_').upper()+'_'`}
#define $1
$0
#endif // $1
endsnippet
snippet namespace
namespace $1 {
$0
} // namespace $1
endsnippet
snippet LOG(ERROR)
LOG(ERROR) << __func__$0;
endsnippet
snippet "<<.(.+)\.logme" "Logging expansion" r
<< "; `!p snip.rv = match.group(1).replace('"', '\\"')` = " << `!p snip.rv = match.group(1)`$0
endsnippet
snippet "<<.(.+)\.logint" "Logging expansion" r
<< "; `!p snip.rv = match.group(1).replace('"', '\\"')` = " << static_cast<int>(`!p snip.rv = match.group(1)`)$0
endsnippet
snippet "<<.stack" "Logging expansion2" r
<< "; stack = " << base::debug::StackTrace().ToString()
endsnippet
snippet "<<.jstack" "Logging expansion2" r
<< "; js stack = "
<< [](){
char* buf = nullptr; size_t size = 0;
FILE* f = open_memstream(&buf, &size);
if (!f) return std::string("<mem error>");
v8::Message::PrintCurrentStackTrace(
v8::Isolate::GetCurrent(), f);
fflush(f); fclose(f);
std::string result(buf, size);
free(buf);
return result; }();
endsnippet