22 changed files with 4526 additions and 1 deletions
			
			
		@ -0,0 +1,103 @@
					 | 
				
			||||
# This file contains snippets that are always defined. I personally | 
				
			||||
# have snippets for signatures and often needed texts | 
				
			||||
 | 
				
			||||
# sligthly lower priority than everything else since specialized versions | 
				
			||||
# should overwrite. The user needs to adjust her priority in her snippets to | 
				
			||||
# ~-55 so that other filetypes will still overwrite. | 
				
			||||
priority -60 | 
				
			||||
 | 
				
			||||
############## | 
				
			||||
# NICE BOXES # | 
				
			||||
############## | 
				
			||||
global !p | 
				
			||||
from vimsnippets import foldmarker, make_box, get_comment_format | 
				
			||||
endglobal | 
				
			||||
 | 
				
			||||
snippet box "A nice box with the current comment symbol" b | 
				
			||||
`!p | 
				
			||||
box = make_box(len(t[1])) | 
				
			||||
snip.rv = box[0] | 
				
			||||
snip += box[1] | 
				
			||||
`${1:${VISUAL:content}}`!p | 
				
			||||
box = make_box(len(t[1])) | 
				
			||||
snip.rv = box[2] | 
				
			||||
snip += box[3]` | 
				
			||||
$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet bbox "A nice box over the full width" b | 
				
			||||
`!p | 
				
			||||
if not snip.c: | 
				
			||||
	width = int(vim.eval("&textwidth - (virtcol('.') == 1 ? 0 : virtcol('.'))")) or 71 | 
				
			||||
box = make_box(len(t[1]), width) | 
				
			||||
snip.rv = box[0] | 
				
			||||
snip += box[1] | 
				
			||||
`${1:${VISUAL:content}}`!p | 
				
			||||
box = make_box(len(t[1]), width) | 
				
			||||
snip.rv = box[2] | 
				
			||||
snip += box[3]` | 
				
			||||
$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet fold "Insert a vim fold marker" b | 
				
			||||
`!p snip.rv = get_comment_format()[0]` ${1:Fold description} `!p snip.rv = foldmarker()[0]`${2:1} `!p snip.rv = get_comment_format()[2]` | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet foldc "Insert a vim fold close marker" b | 
				
			||||
`!p snip.rv = get_comment_format()[0]` ${2:1}`!p snip.rv = foldmarker()[1]` `!p snip.rv = get_comment_format()[2]` | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet foldp "Insert a vim fold marker pair" b | 
				
			||||
`!p snip.rv = get_comment_format()[0]` ${1:Fold description} `!p snip.rv = foldmarker()[0]` `!p snip.rv = get_comment_format()[2]` | 
				
			||||
${2:${VISUAL:Content}} | 
				
			||||
`!p snip.rv = get_comment_format()[0]` `!p snip.rv = foldmarker()[1]` $1 `!p snip.rv = get_comment_format()[2]` | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
########################## | 
				
			||||
# LOREM IPSUM GENERATORS # | 
				
			||||
########################## | 
				
			||||
snippet lorem "Lorem Ipsum - 50 Words" b | 
				
			||||
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod | 
				
			||||
tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At | 
				
			||||
vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, | 
				
			||||
no sea takimata sanctus est Lorem ipsum dolor sit amet. | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
########################## | 
				
			||||
# VIM MODELINE GENERATOR # | 
				
			||||
########################## | 
				
			||||
# See advice on `:help 'tabstop'` for why these values are set. Uses second | 
				
			||||
# modeline form ('set') to work in languages with comment terminators | 
				
			||||
# (/* like C */). | 
				
			||||
snippet modeline "Vim modeline" | 
				
			||||
vim`!v ':set '. (&expandtab ? printf('et sw=%i ts=%i', &sw, &ts) : printf('noet sts=%i sw=%i ts=%i', &sts, &sw, &ts)) . (&tw ? ' tw='. &tw : '') . ':'` | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
######### | 
				
			||||
# DATES # | 
				
			||||
######### | 
				
			||||
snippet date "YYYY-MM-DD" w | 
				
			||||
`!v strftime("%F")` | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet ddate "Month DD, YYYY" w | 
				
			||||
`!v strftime("%b %d, %Y")` | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet diso "ISO format datetime" w | 
				
			||||
`!v strftime("%F %H:%M:%S%z")` | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet time "hh:mm" w | 
				
			||||
`!v strftime("%H:%M")` | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet datetime "YYYY-MM-DD hh:mm" w | 
				
			||||
`!v strftime("%Y-%m-%d %H:%M")` | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet todo "TODO comment" bw | 
				
			||||
`!p snip.rv=get_comment_format()[0]` ${2:TODO}: $0${3: <${4:`!v strftime('%d-%m-%y')`}${5:, `!v g:snips_author`}>} `!p snip.rv=get_comment_format()[2]` | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
# vim:ft=snippets: | 
				
			||||
@ -0,0 +1,99 @@
					 | 
				
			||||
########################################################################### | 
				
			||||
#                            TextMate Snippets                            # | 
				
			||||
########################################################################### | 
				
			||||
 | 
				
			||||
priority -50 | 
				
			||||
 | 
				
			||||
snippet def "#define ..." | 
				
			||||
#define $1 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet #ifndef "#ifndef ... #define ... #endif" | 
				
			||||
#ifndef ${1/([A-Za-z0-9_]+).*/$1/} | 
				
			||||
#define ${1:SYMBOL} ${2:value} | 
				
			||||
#endif /* ifndef $1 */ | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet #if "#if #endif" b | 
				
			||||
#if ${1:0} | 
				
			||||
${VISUAL}$0 | 
				
			||||
#endif | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet mark "#pragma mark (mark)" | 
				
			||||
#if 0 | 
				
			||||
${1:#pragma mark - | 
				
			||||
}#pragma mark $2 | 
				
			||||
#endif | 
				
			||||
 | 
				
			||||
$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet main "main() (main)" | 
				
			||||
int main(int argc, char *argv[]) | 
				
			||||
{ | 
				
			||||
	${VISUAL}$0 | 
				
			||||
	return 0; | 
				
			||||
} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet for "for loop (for)" | 
				
			||||
for (${2:i} = 0; $2 < ${1:count}; ${3:++$2}) { | 
				
			||||
	${VISUAL}$0 | 
				
			||||
} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet fori "for int loop (fori)" | 
				
			||||
for (${4:int} ${2:i} = 0; $2 < ${1:count}; ${3:++$2}) { | 
				
			||||
	${VISUAL}$0 | 
				
			||||
} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet once "Include header once only guard" | 
				
			||||
#ifndef ${1:`!p | 
				
			||||
if not snip.c: | 
				
			||||
	import random, string | 
				
			||||
	name = re.sub(r'[^A-Za-z0-9]+','_', snip.fn).upper() | 
				
			||||
	rand = ''.join(random.sample(string.ascii_letters+string.digits, 8)) | 
				
			||||
	snip.rv = ('%s_%s' % (name,rand)).upper() | 
				
			||||
else: | 
				
			||||
	snip.rv = snip.c`} | 
				
			||||
#define $1 | 
				
			||||
 | 
				
			||||
${VISUAL}$0 | 
				
			||||
 | 
				
			||||
#endif /* end of include guard: $1 */ | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet fprintf "fprintf ..." | 
				
			||||
fprintf(${1:stderr}, "${2:%s}\n"${2/([^%]|%%)*(%.)?.*/(?2:, :\);)/}$3${2/([^%]|%%)*(%.)?.*/(?2:\);)/} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet eli "else if .. (eli)" | 
				
			||||
else if (${1:/* condition */}) { | 
				
			||||
	${VISUAL}$0 | 
				
			||||
} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet printf "printf .. (printf)" | 
				
			||||
printf("${1:%s}\n"${1/([^%]|%%)*(%.)?.*/(?2:, :\);)/}$2${1/([^%]|%%)*(%.)?.*/(?2:\);)/} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet st "struct" | 
				
			||||
struct ${1:`!p snip.rv = (snip.basename or "name") + "_t"`} { | 
				
			||||
	${0:/* data */} | 
				
			||||
}; | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet fun "function" b | 
				
			||||
${1:void} ${2:function_name}($3) | 
				
			||||
{ | 
				
			||||
	${VISUAL}$0 | 
				
			||||
} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet fund "function declaration" b | 
				
			||||
${1:void} ${2:function_name}($3); | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
# vim:ft=snippets: | 
				
			||||
@ -0,0 +1,110 @@
					 | 
				
			||||
priority -50 | 
				
			||||
 | 
				
			||||
extends c | 
				
			||||
 | 
				
			||||
# We want to overwrite everything in parent ft. | 
				
			||||
priority -49 | 
				
			||||
########################################################################### | 
				
			||||
#			    Global functions 						  # | 
				
			||||
########################################################################### | 
				
			||||
 | 
				
			||||
global !p | 
				
			||||
 | 
				
			||||
def write_docstring_args(arglist, snip): | 
				
			||||
	args = str(arglist).split(',') | 
				
			||||
 | 
				
			||||
	if len(args) > 1: | 
				
			||||
		c = 0 | 
				
			||||
		for arg in args: | 
				
			||||
			if c == 0: | 
				
			||||
				snip.rv += arg | 
				
			||||
				c = 1 | 
				
			||||
			else: | 
				
			||||
				snip += '*       : %s' % arg.strip() | 
				
			||||
	else: | 
				
			||||
		snip.rv = args[0] | 
				
			||||
 | 
				
			||||
 | 
				
			||||
endglobal | 
				
			||||
 | 
				
			||||
########################################################################### | 
				
			||||
#                            TextMate Snippets                            # | 
				
			||||
########################################################################### | 
				
			||||
snippet beginend "$1.begin(), $1.end() (beginend)" | 
				
			||||
${1:v}${1/^.*?(-)?(>)?$/(?2::(?1:>:.))/}begin(), $1${1/^.*?(-)?(>)?$/(?2::(?1:>:.))/}end() | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet cl "class .. (class)" | 
				
			||||
class ${1:`!p snip.rv = snip.basename or "name"`} | 
				
			||||
{ | 
				
			||||
public: | 
				
			||||
	${1/(\w+).*/$1/} (${2:arguments}); | 
				
			||||
	virtual ~${1/(\w+).*/$1/} (); | 
				
			||||
 | 
				
			||||
private: | 
				
			||||
	${0:/* data */} | 
				
			||||
}; | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet ns "namespace .. (namespace)" | 
				
			||||
namespace${1/.+/ /m}${1:`!p snip.rv = snip.basename or "name"`} | 
				
			||||
{ | 
				
			||||
	${VISUAL}$0 | 
				
			||||
}${1/.+/ \/* /m}$1${1/.+/ *\/ /m} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet readfile "read file (readF)" | 
				
			||||
std::vector<char> v; | 
				
			||||
if (FILE *fp = fopen(${1:"filename"}, "r")) | 
				
			||||
{ | 
				
			||||
	char buf[1024]; | 
				
			||||
	while(size_t len = fread(buf, 1, sizeof(buf), fp)) | 
				
			||||
		v.insert(v.end(), buf, buf + len); | 
				
			||||
	fclose(fp); | 
				
			||||
} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet map "std::map (map)" | 
				
			||||
std::map<${1:key}, ${2:value}> map$0; | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet vector "std::vector (v)" | 
				
			||||
std::vector<${1:char}> v$0; | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet tp "template <typename ..> (template)" | 
				
			||||
template <typename ${1:_InputIter}> | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet cla "An entire .h generator" b | 
				
			||||
#ifndef ${2:`!v substitute(vim_snippets#Filename('$1_H','ClassName'),'.*','\U&\E','')`} | 
				
			||||
#define $2 | 
				
			||||
 | 
				
			||||
class ${1:`!v substitute(substitute(vim_snippets#Filename('$1','ClassName'),'^.','\u&',''), '_\(\w\)', '\u\1', 'g')`} | 
				
			||||
{ | 
				
			||||
private: | 
				
			||||
	$3 | 
				
			||||
 | 
				
			||||
public: | 
				
			||||
	$1(); | 
				
			||||
	virtual ~$1(); | 
				
			||||
}; | 
				
			||||
 | 
				
			||||
#endif /* $2 */ | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
 | 
				
			||||
snippet fnc "Basic c++ doxygen function template" b | 
				
			||||
/** | 
				
			||||
* @brief: ${4:brief} | 
				
			||||
* | 
				
			||||
* @param: `!p write_docstring_args(t[3],snip)` | 
				
			||||
* | 
				
			||||
* @return: `!p snip.rv = t[1]` | 
				
			||||
*/ | 
				
			||||
${1:ReturnType} ${2:FunctionName}(${3:param}) | 
				
			||||
{ | 
				
			||||
  ${0:FunctionBody} | 
				
			||||
} | 
				
			||||
endsnippet | 
				
			||||
# vim:ft=snippets: | 
				
			||||
@ -0,0 +1,493 @@
					 | 
				
			||||
priority -50 | 
				
			||||
 | 
				
			||||
snippet p "padding" | 
				
			||||
padding: ${1:0};$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet m "margin" | 
				
			||||
margin: ${1:0};$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet bd "border" | 
				
			||||
border: ${1:0};$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet d "display" | 
				
			||||
display: ${1:none};$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet bg "background" | 
				
			||||
background: ${1:none};$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet ff "font-family" | 
				
			||||
font-family: ${1:"Helvetica Neue", Helvetica, Arial, sans-serif};$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet h "height" | 
				
			||||
height: ${1:auto};$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet w "width" | 
				
			||||
width: ${1:auto};$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet pos "position" | 
				
			||||
position: ${1:relative};$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet tt "text-transform" | 
				
			||||
text-transform: ${1:none};$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet ! "!important CSS (!)" | 
				
			||||
!important | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet tsh "text-shadow: color-hex x y blur (text)" | 
				
			||||
text-shadow: ${1:${2:color} ${3:offset-x} ${4:offset-y} ${5:blur}};$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet bxsh "box-shadow: color-hex x y blur (text)" | 
				
			||||
box-shadow: ${1:${2:offset-x} ${3:offset-y} ${4:blur} ${5:spread} ${6:color}};$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
# | 
				
			||||
# Colors | 
				
			||||
# | 
				
			||||
 | 
				
			||||
snippet rgb "color rgb" | 
				
			||||
rgb(${1:255}, ${2:255}, ${3:255})$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet rgba "color rgba" | 
				
			||||
rgba(${1:255}, ${2:255}, ${3:255}, ${4:0.5})$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet hsl "color hsl" | 
				
			||||
hsl(${1:360}, ${2:100}%, ${3:100}%)$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet hsla "color hsla" | 
				
			||||
hsla(${1:360}, ${2:100}%, ${3:100}%, ${4:0.5})$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
# | 
				
			||||
# Selectors | 
				
			||||
# | 
				
			||||
 | 
				
			||||
snippet :fc | 
				
			||||
:first-child | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet :lc | 
				
			||||
:last-child | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet :nc | 
				
			||||
:nth-child($0) | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet :nlc | 
				
			||||
:nth-last-child($0) | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet :oc | 
				
			||||
:only-child | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
# | 
				
			||||
# Pseudo-elements | 
				
			||||
# | 
				
			||||
 | 
				
			||||
snippet :a | 
				
			||||
:after | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet :b | 
				
			||||
:before | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet ::a | 
				
			||||
::after | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet ::b | 
				
			||||
::before | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
########################################################################### | 
				
			||||
#                    Most of these came from TextMate                     # | 
				
			||||
########################################################################### | 
				
			||||
 | 
				
			||||
snippet background "background-attachment: scroll:fixed (background)" | 
				
			||||
background-attachment: ${1:scroll/fixed};$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet background "background-color:  color-hex (background)" | 
				
			||||
background-color: #${1:DDD};$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet background "background-color:  color-name (background)" | 
				
			||||
background-color: ${1:red};$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet background "background-color:  color-rgb (background)" | 
				
			||||
background-color: rgb(${1:255},${2:255},${3:255});$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet background "background-color:  transparent (background)" | 
				
			||||
background-color: transparent;$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet background "background-image:  none (background)" | 
				
			||||
background-image: none;$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet background "background-image:  url (background)" | 
				
			||||
background-image: url($1);$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet background "background-position:  position (background)" | 
				
			||||
background-position: ${1:top left/top center/top right/center left/center center/center right/bottom left/bottom center/bottom right/x-% y-%/x-pos y-pos};$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet background "background-repeat:  r:r-x:r-y:n-r (background)" | 
				
			||||
background-repeat: ${1:repeat/repeat-x/repeat-y/no-repeat};$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet background "background:  color image repeat attachment position (background)" | 
				
			||||
background:${6: #${1:DDD}} url($2) ${3:repeat/repeat-x/repeat-y/no-repeat} ${4:scroll/fixed} ${5:top left/top center/top right/center left/center center/center right/bottom left/bottom center/bottom right/x-% y-%/x-pos y-pos};$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet border "border-bottom-color: size style color (border)" | 
				
			||||
border-bottom-color: #${1:999};$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet border "border-bottom-style: size style color (border)" | 
				
			||||
border-bottom-style: ${1:none/hidden/dotted/dashed/solid/double/groove/ridge/inset/outset};$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet border "border-bottom-width: size style color (border)" | 
				
			||||
border-bottom-width: ${1:1}px ${2:solid} #${3:999};$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet border "border-bottom: size style color (border)" | 
				
			||||
border-bottom: ${1:1}px ${2:solid} #${3:999};$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet border "border-color: color (border)" | 
				
			||||
border-color: ${1:999};$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet border "border-left-color: color (border)" | 
				
			||||
border-right-color: #${1:999};$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet border "border-left-style: style (border)" | 
				
			||||
border-left-style: ${1:none/hidden/dotted/dashed/solid/double/groove/ridge/inset/outset};$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet border "border-left-width: size (border)" | 
				
			||||
border-left-width: ${1:1}px | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet border "border-left: size style color (border)" | 
				
			||||
border-left: ${1:1}px ${2:solid} #${3:999};$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet border "border-right-color: color (border)" | 
				
			||||
border-right-color: #${1:999};$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet border "border-right-style: style (border)" | 
				
			||||
border-right-style: ${1:none/hidden/dotted/dashed/solid/double/groove/ridge/inset/outset};$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet border "border-right-width: size (border)" | 
				
			||||
border-right-width: ${1:1}px | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet border "border-right: size style color (border)" | 
				
			||||
border-right: ${1:1}px ${2:solid} #${3:999};$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet border "border-style: style (border)" | 
				
			||||
border-style: ${1:none/hidden/dotted/dashed/solid/double/groove/ridge/inset/outset};$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet border "border-top-color: color (border)" | 
				
			||||
border-top-color: #${1:999};$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet border "border-top-style: style (border)" | 
				
			||||
border-top-style: ${1:none/hidden/dotted/dashed/solid/double/groove/ridge/inset/outset};$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet border "border-top-width: size (border)" | 
				
			||||
border-top-width: ${1:1}px | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet border "border-top: size style color (border)" | 
				
			||||
border-top: ${1:1}px ${2:solid} #${3:999};$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet border "border-width: width (border)" | 
				
			||||
border-width: ${1:1px};$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet border "border:   size style color (border)" | 
				
			||||
border: ${1:1px} ${2:solid} #${3:999};$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet clear "clear: value (clear)" | 
				
			||||
clear: ${1:left/right/both/none};$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet color "color:  color-hex (color)" | 
				
			||||
color: #${1:DDD};$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet color "color:  color-name (color)" | 
				
			||||
color: ${1:red};$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet color "color:  color-rgb (color)" | 
				
			||||
color: rgb(${1:255},${2:255},${3:255});$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet cursor "cursor: type (cursor)" | 
				
			||||
cursor: ${1:default/auto/crosshair/pointer/move/*-resize/text/wait/help};$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet cursor "cursor: url (cursor)" | 
				
			||||
cursor: url($1);$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet direction "direction: ltr|rtl (direction)" | 
				
			||||
direction: ${1:ltr|rtl};$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet display "display: block (display)" | 
				
			||||
display: block;$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet display "display: common-types (display)" | 
				
			||||
display: ${1:none/inline/block/list-item/run-in/compact/marker};$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet display "display: inline (display)" | 
				
			||||
display: inline;$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet display "display: table-types (display)" | 
				
			||||
display: ${1:table/inline-table/table-row-group/table-header-group/table-footer-group/table-row/table-column-group/table-column/table-cell/table-caption};$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet float "float: left:right:none (float)" | 
				
			||||
float: ${1:left/right/none};$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet font "font-family:   family (font)" | 
				
			||||
font-family: ${1:Arial, "MS Trebuchet"}, ${2:sans-}serif;$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet font "font-size: size (font)" | 
				
			||||
font-size: ${1:100%};$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet font "font-style:   normal:italic:oblique (font)" | 
				
			||||
font-style: ${1:normal/italic/oblique};$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet font "font-variant:   normal:small-caps (font)" | 
				
			||||
font-variant: ${1:normal/small-caps};$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet font "font-weight: weight (font)" | 
				
			||||
font-weight: ${1:normal/bold};$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet font "font:   style variant weight size:line-height font -family (font)" | 
				
			||||
font: ${1:normal/italic/oblique} ${2:normal/small-caps} ${3:normal/bold} ${4:1em/1.5em} ${5:Arial}, ${6:sans-}serif;$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet font "font: size font (font)" | 
				
			||||
font: ${1:75%} ${2:"Lucida Grande", "Trebuchet MS", Verdana,} ${3:sans-}serif;$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet letter "letter-spacing:   length-em (letter)" | 
				
			||||
letter-spacing: $1em;$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet letter "letter-spacing:   length-px (letter)" | 
				
			||||
letter-spacing: $1px;$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet list "list-style-image: url (list)" | 
				
			||||
list-style-image: url($1);$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet list "list-style-position: pos (list)" | 
				
			||||
list-style-position: ${1:inside/outside};$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet list "list-style-type: asian (list)" | 
				
			||||
list-style-type: ${1:cjk-ideographic/hiragana/katakana/hiragana-iroha/katakana-iroha};$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet list "list-style-type: marker(list)" | 
				
			||||
list-style-type: ${1:none/disc/circle/square};$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet list "list-style-type: numeric (list)" | 
				
			||||
list-style-type: ${1:decimal/decimal-leading-zero/zero};$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet list "list-style-type: other (list)" | 
				
			||||
list-style-type: ${1:hebrew/armenian/georgian};$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet list "list-style-type: roman-alpha-greek (list)" | 
				
			||||
list-style-type: ${1:lower-roman/upper-roman/lower-alpha/upper-alpha/lower-greek/lower-latin/upper-latin};$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet list "list-style: type position image (list)" | 
				
			||||
list-style: ${1:none/disc/circle/square/decimal/zero} ${2:inside/outside} url($3);$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet margin "margin-bottom: length (margin)" | 
				
			||||
margin-bottom: ${1:20px};$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet margin "margin-left: length (margin)" | 
				
			||||
margin-left: ${1:20px};$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet margin "margin-right: length (margin)" | 
				
			||||
margin-right: ${1:20px};$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet margin "margin-top: length (margin)" | 
				
			||||
margin-top: ${1:20px};$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet margin "margin:   all (margin)" | 
				
			||||
margin: ${1:20px};$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet margin "margin: T R B L (margin)" | 
				
			||||
margin: ${1:20px} ${2:0px} ${3:40px} ${4:0px};$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet margin "margin: V H (margin)" | 
				
			||||
margin: ${1:20px} ${2:0px};$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet marker "marker-offset: auto (marker)" | 
				
			||||
marker-offset: auto;$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet marker "marker-offset: length (marker)" | 
				
			||||
marker-offset: ${1:10px};$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet overflow "overflow: type (overflow)" | 
				
			||||
overflow: ${1:visible/hidden/scroll/auto};$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet padding "padding-bottom: length (margin)" | 
				
			||||
padding-bottom: ${1:20px};$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet padding "padding-left: length (margin)" | 
				
			||||
padding-left: ${1:20px};$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet padding "padding-right: length (margin)" | 
				
			||||
padding-right: ${1:20px};$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet padding "padding-top: length (margin)" | 
				
			||||
padding-top: ${1:20px};$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet padding "padding:   T R B L (padding)" | 
				
			||||
padding: ${1:20px} ${2:0px} ${3:40px} ${4:0px};$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet padding "padding:   V H (padding)" | 
				
			||||
padding: ${1:20px} ${2:0px};$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet padding "padding:   all (padding)" | 
				
			||||
padding: ${1:20px};$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet position "position: type (position)" | 
				
			||||
position: ${1:static/relative/absolute/fixed};$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet { "properties { } ( } )" | 
				
			||||
{ | 
				
			||||
	/* $1 */ | 
				
			||||
	$0 | 
				
			||||
 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet scrollbar "scrollbar" | 
				
			||||
scrollbar-base-color:       ${1:#CCCCCC};${2: | 
				
			||||
scrollbar-arrow-color:      ${3:#000000}; | 
				
			||||
scrollbar-track-color:      ${4:#999999}; | 
				
			||||
scrollbar-3dlight-color:    ${5:#EEEEEE}; | 
				
			||||
scrollbar-highlight-color:  ${6:#FFFFFF}; | 
				
			||||
scrollbar-face-color:       ${7:#CCCCCC}; | 
				
			||||
scrollbar-shadow-color:     ${9:#999999}; | 
				
			||||
scrollbar-darkshadow-color: ${8:#666666};} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet selection "selection" | 
				
			||||
$1::-moz-selection, | 
				
			||||
$1::selection { | 
				
			||||
	color: ${2:inherit}; | 
				
			||||
	background: ${3:inherit}; | 
				
			||||
} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet text "text-align: left:center:right (txt)" | 
				
			||||
text-align: ${1:left/right/center/justify};$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet text "text-decoration: none:underline:overline:line-through:blink (text)" | 
				
			||||
text-decoration: ${1:none/underline/overline/line-through/blink};$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet text "text-indent: length (text)" | 
				
			||||
text-indent: ${1:10}px;$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet text "text-transform: capitalize:upper:lower (text)" | 
				
			||||
text-transform: ${1:capitalize/uppercase/lowercase};$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet vertical "vertical-align: type (vertical)" | 
				
			||||
vertical-align: ${1:baseline/sub/super/top/text-top/middle/bottom/text-bottom/length/%};$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet visibility "visibility: type (visibility)" | 
				
			||||
visibility: ${1:visible/hidden/collapse};$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet white "white-space:  normal:pre:nowrap (white)" | 
				
			||||
white-space: ${1:normal/pre/nowrap};$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet word "word-spacing:  length (word)" | 
				
			||||
word-spacing: ${1:10px};$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet z "z-index: index (z)" | 
				
			||||
z-index: $1;$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
# vim:ft=snippets: | 
				
			||||
@ -0,0 +1,115 @@
					 | 
				
			||||
# Snippets for Go | 
				
			||||
 | 
				
			||||
priority -50 | 
				
			||||
 | 
				
			||||
# when to abbriviate and when not? | 
				
			||||
# b doesn't work here, because it ignores whitespace | 
				
			||||
# optional local name? | 
				
			||||
snippet /^import/ "Import declaration" r | 
				
			||||
import ( | 
				
			||||
	"${1:package}" | 
				
			||||
) | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet /^package/ "Package declaration" r | 
				
			||||
// Package $1 provides ... | 
				
			||||
package ${1:main} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
# Mostly converted from: https://github.com/AlanQuatermain/go-tmbundle | 
				
			||||
snippet /^cons/ "Constants declaration" r | 
				
			||||
const ( | 
				
			||||
	${1:constant}${2/(.+)/ /}${2:type} = ${0:value} | 
				
			||||
) | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet /^con/ "Constant declaration" r | 
				
			||||
const ${1:name}${2/(.+)/ /}${2:type} = ${0:value} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet iota "Iota constant generator" b | 
				
			||||
const ( | 
				
			||||
	${1:constant}${2/(.+)/ /}${2:type} = iota | 
				
			||||
) | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet struct "Struct declaration" b | 
				
			||||
type ${1:Struct} struct { | 
				
			||||
	${0:${VISUAL}} | 
				
			||||
} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet interface "Interface declaration" b | 
				
			||||
type ${1:Interface} interface { | 
				
			||||
	${0:${VISUAL}} | 
				
			||||
} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet if "If statement" b | 
				
			||||
if ${1:condition}${1/(.+)/ /}{ | 
				
			||||
	${0:${VISUAL}} | 
				
			||||
} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet switch "Switch statement" b | 
				
			||||
switch ${1:expression}${1/(.+)/ /}{ | 
				
			||||
case$0 | 
				
			||||
} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
# functions | 
				
			||||
snippet /^main/ "Main function" r | 
				
			||||
func main() { | 
				
			||||
	${0:${VISUAL}} | 
				
			||||
} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet /^meth/ "Method" r | 
				
			||||
func (${1:receiver} ${2:type}) ${3:name}(${4:params})${5/(.+)/ /}${5:type} { | 
				
			||||
	${0:${VISUAL}} | 
				
			||||
} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet func "Function" b | 
				
			||||
func ${1:name}(${2:params})${3/(.+)/ /}${3:type} { | 
				
			||||
	${0:${VISUAL}} | 
				
			||||
} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet funch "HTTP handler" b | 
				
			||||
func ${1:handler}(${2:w} http.ResponseWriter, ${3:r} *http.Request) { | 
				
			||||
	${0:${VISUAL}} | 
				
			||||
} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
# types and variables | 
				
			||||
snippet map "Map type" b | 
				
			||||
map[${1:keytype}]${2:valtype} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet : "Variable declaration :=" b | 
				
			||||
${1:name} := ${0:value} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet var "Variable declaration" b | 
				
			||||
var ${1:name}${2/(.+)/ /}${2:type}${3: = ${0:value}} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet vars "Variables declaration" b | 
				
			||||
var ( | 
				
			||||
	${1:name}${2/(.+)/ /}${2:type}${3: = ${0:value} } | 
				
			||||
) | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet json "JSON field" | 
				
			||||
\`json:"${1:displayName}"\` | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
# vim:ft=snippets: | 
				
			||||
 | 
				
			||||
# error handling | 
				
			||||
snippet err "Basic error handling" b | 
				
			||||
if err != nil { | 
				
			||||
	log.${1:Fatal}(err) | 
				
			||||
} | 
				
			||||
endsnippet | 
				
			||||
@ -0,0 +1,244 @@
					 | 
				
			||||
priority -50 | 
				
			||||
 | 
				
			||||
########################################################################### | 
				
			||||
#                            TextMate Snippets                            # | 
				
			||||
########################################################################### | 
				
			||||
 | 
				
			||||
global !p | 
				
			||||
def x(snip): | 
				
			||||
	if snip.ft.startswith("x"): | 
				
			||||
		snip.rv = '/' | 
				
			||||
	else: | 
				
			||||
		snip.rv = "" | 
				
			||||
endglobal | 
				
			||||
 | 
				
			||||
snippet doctype "HTML - 5.0 (doctype)" b | 
				
			||||
<!DOCTYPE html> | 
				
			||||
 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
############# | 
				
			||||
# Shortcuts # | 
				
			||||
############# | 
				
			||||
snippet down "Down (down)" | 
				
			||||
↓ | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet enter "Enter (enter)" | 
				
			||||
⌅ | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet escape "Escape (escape)" | 
				
			||||
⎋ | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet shift "Shift (shift)" | 
				
			||||
⇧ | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet tab "Tab (tab)" | 
				
			||||
⇥ | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet up "Up (up)" | 
				
			||||
↑ | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet return "Return (return)" | 
				
			||||
↩ | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet right "Right (right)" | 
				
			||||
→ | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet left "Left (left)" | 
				
			||||
← | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
############# | 
				
			||||
# HTML TAGS # | 
				
			||||
############# | 
				
			||||
snippet input "Input with Label" w | 
				
			||||
<label for="${2:${1/[[:alpha:]]+|( )/(?1:_:\L$0)/g}}">$1</label><input type="${3:text/submit/hidden/button}" name="${4:$2}" value="$5"${6: id="${7:$2}"}`!p x(snip)`> | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet input "HTML   <input>" w | 
				
			||||
<input type="${1:text/submit/hidden/button}" name="${2:some_name}" value="$3"${4: id="${5:$2}"}`!p x(snip)`> | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
 | 
				
			||||
snippet option "Option" w | 
				
			||||
<option${1: value="${2:option}"}>${3:$2}</option> | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet select "Select Box" w | 
				
			||||
<select name="${1:some_name}" id="${2:$1}"${3:${4: multiple}${5: onchange="${6:}"}${7: size="${8:1}"}}> | 
				
			||||
	${0:${VISUAL}} | 
				
			||||
</select> | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
 | 
				
			||||
snippet textarea "HTML   <textarea>" w | 
				
			||||
<textarea name="${1:Name}" rows="${2:8}" cols="${3:40}">$0</textarea> | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet mailto "HTML <a mailto: >" w | 
				
			||||
<a href="mailto:${1:joe@example.com}?subject=${2:feedback}">${3:email me}</a> | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet base "HTML <base>" w | 
				
			||||
<base href="$1"${2: target="$3"}`!p x(snip)`> | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet body "<body>" | 
				
			||||
<body> | 
				
			||||
	${0:${VISUAL}} | 
				
			||||
</body> | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet div "<div>" w | 
				
			||||
<div> | 
				
			||||
	${0:${VISUAL}} | 
				
			||||
</div> | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet div. "<div> with class" w | 
				
			||||
<div`!p snip.rv=' class="' if t[1] else ""`${1:name}`!p snip.rv = '"' if t[1] else ""`> | 
				
			||||
	${0:${VISUAL}} | 
				
			||||
</div> | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet div# "<div> with ID & class" w | 
				
			||||
<div`!p snip.rv=' id="' if t[1] else ""`${1:name}`!p snip.rv = '"' if t[1] else ""``!p snip.rv=' class="' if t[2] else ""`${2:name}`!p snip.rv = '"' if t[2] else ""`> | 
				
			||||
	${0:${VISUAL}} | 
				
			||||
</div> | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet form "XHTML <form>" w | 
				
			||||
<form action="${1:`!p | 
				
			||||
snip.rv = (snip.basename or 'unnamed') + '_submit' | 
				
			||||
`}" method="${2:get}" accept-charset="utf-8"> | 
				
			||||
	${0:${VISUAL}} | 
				
			||||
</form> | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet h1 "XHTML <h1>" w | 
				
			||||
<h1>${0:${VISUAL}}</h1> | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet h2 "XHTML <h2>" w | 
				
			||||
<h2>${0:${VISUAL}}</h2> | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet h3 "XHTML <h3>" w | 
				
			||||
<h3>${0:${VISUAL}}</h3> | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet h4 "XHTML <h4>" w | 
				
			||||
<h4>${0:${VISUAL}}</h4> | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet h5 "XHTML <h5>" w | 
				
			||||
<h5>${0:${VISUAL}}</h5> | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet h6 "XHTML <h6>" w | 
				
			||||
<h6>${0:${VISUAL}}</h6> | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet head "XHTML <head>" | 
				
			||||
<head> | 
				
			||||
	<meta charset="utf-8"> | 
				
			||||
	<title>${1:`!p snip.rv = snip.basename or "Page Title"`}</title> | 
				
			||||
	${0:${VISUAL}} | 
				
			||||
</head> | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet link "XHTML <link>" w | 
				
			||||
<link rel="${1:stylesheet}" href="${2:/css/master.css}" type="text/css" media="${3:screen}" title="${4:no title}" charset="${5:utf-8}"`!p x(snip)`> | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet meta "XHTML <meta>" w | 
				
			||||
<meta name="${1:name}" content="${2:content}"`!p x(snip)`> | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet scriptsrc "HTML <script src...>" w | 
				
			||||
<script src="$1" charset="${3:utf-8}"></script> | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet script "HTML <script>" w | 
				
			||||
<script charset="utf-8"> | 
				
			||||
	${0:${VISUAL}} | 
				
			||||
</script> | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet span "<span>" w | 
				
			||||
<span> ${0:${VISUAL}} </span> | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet span. "<span> with class" w | 
				
			||||
<span`!p snip.rv=' class="' if t[1] else ""`${1:name}`!p snip.rv = '"' if t[1] else ""`> ${0:${VISUAL}} </span> | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet span# "<span> with ID & class" w | 
				
			||||
<span`!p snip.rv=' id="' if t[1] else ""`${1:name}`!p snip.rv = '"' if t[1] else ""``!p snip.rv=' class="' if t[2] else ""`${2:name}`!p snip.rv = '"' if t[2] else ""`> ${0:${VISUAL}} </span> | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet style "XHTML <style>" w | 
				
			||||
<style type="text/css" media="screen"> | 
				
			||||
	${0:${VISUAL}} | 
				
			||||
</style> | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet table "XHTML <table>" w | 
				
			||||
<table> | 
				
			||||
	${0:${VISUAL}} | 
				
			||||
</table> | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet a "Link" w | 
				
			||||
<a href="${1:http://www.${2:url.com}}"${3: target="_blank"}>${4:Anchor Text}</a> | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet p "paragraph" w | 
				
			||||
<p>${0:${VISUAL}}</p> | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet li "list item" w | 
				
			||||
<li>${0:${VISUAL}}</li> | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet ul "unordered list" w | 
				
			||||
<ul> | 
				
			||||
	${0:${VISUAL}} | 
				
			||||
</ul> | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet td "table cell" w | 
				
			||||
<td>${0:${VISUAL}}</td> | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet th "table header" w | 
				
			||||
<th>${0:${VISUAL}}</th> | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet tr "table row" w | 
				
			||||
<tr>${0:${VISUAL}}</tr> | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet title "XHTML <title>" w | 
				
			||||
<title>${1:`!p snip.rv = snip.basename or "Page Title"`}</title> | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet fieldset "Fieldset" w | 
				
			||||
<fieldset id="${1/[\w\d]+|( )/(?1:_:\L$0\E)/g}" ${2:class="${3:}"}> | 
				
			||||
	<legend>$1</legend> | 
				
			||||
	${0:${VISUAL}} | 
				
			||||
</fieldset> | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet viewport "Responsive viewport meta" w | 
				
			||||
<meta name="viewport" content="width=device-width, initial-scale=1"> | 
				
			||||
endsnippet | 
				
			||||
# vim:ft=snippets: | 
				
			||||
@ -0,0 +1,435 @@
					 | 
				
			||||
priority -50 | 
				
			||||
 | 
				
			||||
# Many of the snippets here use a global option called | 
				
			||||
# "g:ultisnips_java_brace_style" which, if set to "nl" will put a newline | 
				
			||||
# before '{' braces. | 
				
			||||
# Setting "g:ultisnips_java_junit" will change how the test method snippet | 
				
			||||
# looks, it is defaulted to junit4, setting this option to 3 will remove the | 
				
			||||
# @Test annotation from the method | 
				
			||||
 | 
				
			||||
global !p | 
				
			||||
def junit(snip): | 
				
			||||
	if snip.opt("g:ultisnips_java_junit", "") == "3": | 
				
			||||
		snip += "" | 
				
			||||
	else: | 
				
			||||
		snip.rv += "@Test\n\t" | 
				
			||||
 | 
				
			||||
def nl(snip): | 
				
			||||
	if snip.opt("g:ultisnips_java_brace_style", "") == "nl": | 
				
			||||
		snip += "" | 
				
			||||
	else: | 
				
			||||
		snip.rv += " " | 
				
			||||
def getArgs(group): | 
				
			||||
	import re | 
				
			||||
	word = re.compile('[a-zA-Z0-9><.]+ \w+') | 
				
			||||
	return [i.split(" ") for i in word.findall(group) ] | 
				
			||||
 | 
				
			||||
def camel(word): | 
				
			||||
	if not word: return '' | 
				
			||||
	return word[0].upper() + word[1:] | 
				
			||||
 | 
				
			||||
def mixedCase(word): | 
				
			||||
	if not word: return '' | 
				
			||||
	return word[0].lower() + word[1:] | 
				
			||||
 | 
				
			||||
endglobal | 
				
			||||
 | 
				
			||||
snippet sleep "try sleep catch" b | 
				
			||||
try { | 
				
			||||
	Thread.sleep(${1:1000}); | 
				
			||||
} catch (InterruptedException e){ | 
				
			||||
	e.printStackTrace(); | 
				
			||||
} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet /i|n/ "new primitive or int" br | 
				
			||||
${1:int} ${2:i} = ${3:1}; | 
				
			||||
$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet /o|v/ "new Object or variable" br | 
				
			||||
${1:Object} ${2:var} = new $1($3); | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet f "field" b | 
				
			||||
${1:private} ${2:String} ${3:`!p snip.rv = t[2].lower()`}; | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet ab "abstract" b | 
				
			||||
abstract $0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet as "assert" b | 
				
			||||
assert ${1:test}${2/(.+)/(?1: \: ")/}${2:Failure message}${2/(.+)/(?1:")/}; | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet at "assert true" b | 
				
			||||
assertTrue(${1:actual}); | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet af "assert false" b | 
				
			||||
assertFalse(${1:actual}); | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet ae "assert equals" b | 
				
			||||
assertEquals(${1:expected}, ${2:actual}); | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet br "break" | 
				
			||||
break; | 
				
			||||
 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet cs "case" b | 
				
			||||
case $1: | 
				
			||||
	$2 | 
				
			||||
$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet ca "catch" b | 
				
			||||
catch (${1:Exception} ${2:e})`!p nl(snip)`{ | 
				
			||||
	$0 | 
				
			||||
} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet cle "class extends" b | 
				
			||||
public class ${1:`!p | 
				
			||||
snip.rv = snip.basename or "untitled"`} ${2:extends ${3:Parent} }${4:implements ${5:Interface} }{ | 
				
			||||
	$0 | 
				
			||||
} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet clc "class with constructor, fields, setter and getters" b | 
				
			||||
public class `!p | 
				
			||||
snip.rv = snip.basename or "untitled"` { | 
				
			||||
`!p | 
				
			||||
args = getArgs(t[1]) | 
				
			||||
if len(args) == 0: snip.rv = "" | 
				
			||||
for i in args: | 
				
			||||
	snip.rv += "\n\tprivate " + i[0] + " " + i[1]+ ";" | 
				
			||||
if len(args) > 0: | 
				
			||||
	snip.rv += "\n"` | 
				
			||||
	public `!p snip.rv = snip.basename or "unknown"`($1) {`!p | 
				
			||||
args = getArgs(t[1]) | 
				
			||||
for i in args: | 
				
			||||
	snip.rv += "\n\t\tthis." + i[1] + " = " + i[1] + ";" | 
				
			||||
if len(args) == 0: | 
				
			||||
	snip.rv += "\n"` | 
				
			||||
	}$0 | 
				
			||||
`!p | 
				
			||||
args = getArgs(t[1]) | 
				
			||||
if len(args) == 0: snip.rv = "" | 
				
			||||
for i in args: | 
				
			||||
	snip.rv += "\n\tpublic void set" + camel(i[1]) + "(" + i[0] + " " + i[1] + ") {\n" + "\ | 
				
			||||
	\tthis." + i[1] + " = " + i[1] + ";\n\t}\n" | 
				
			||||
 | 
				
			||||
	snip.rv += "\n\tpublic " + i[0] + " get" + camel(i[1]) + "() {\n\ | 
				
			||||
	\treturn " + i[1] + ";\n\t}\n" | 
				
			||||
` | 
				
			||||
} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet clc "class with constructor, with field names" b | 
				
			||||
public class `!p | 
				
			||||
snip.rv = snip.basename or "untitled"` { | 
				
			||||
`!p | 
				
			||||
args = getArgs(t[1]) | 
				
			||||
for i in args: | 
				
			||||
	snip.rv += "\n\tprivate " + i[0] + " " + i[1]+ ";" | 
				
			||||
if len(args) > 0: | 
				
			||||
	snip.rv += "\n"` | 
				
			||||
	public `!p snip.rv = snip.basename or "unknown"`($1) {`!p | 
				
			||||
args = getArgs(t[1]) | 
				
			||||
for i in args: | 
				
			||||
	snip.rv += "\n\t\tthis.%s = %s;" % (i[1], i[1]) | 
				
			||||
if len(args) == 0: | 
				
			||||
	snip.rv += "\n"` | 
				
			||||
	} | 
				
			||||
} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet clc "class and constructor" b | 
				
			||||
public class `!p | 
				
			||||
snip.rv = snip.basename or "untitled"` { | 
				
			||||
 | 
				
			||||
	public `!p snip.rv = snip.basename or "untitled"`($2) { | 
				
			||||
		$0 | 
				
			||||
	} | 
				
			||||
} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet cl "class" b | 
				
			||||
public class ${1:`!p | 
				
			||||
snip.rv = snip.basename or "untitled"`} { | 
				
			||||
	$0 | 
				
			||||
} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet cos "constant string" b | 
				
			||||
public static final String ${1:var} = "$2";$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet co "constant" b | 
				
			||||
public static final ${1:String} ${2:var} = $3;$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet de "default" b | 
				
			||||
default: | 
				
			||||
	$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet elif "else if" | 
				
			||||
else if ($1)`!p nl(snip)`{ | 
				
			||||
	$0${VISUAL} | 
				
			||||
} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet el "else" w | 
				
			||||
else`!p nl(snip)`{ | 
				
			||||
	$0${VISUAL} | 
				
			||||
} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet fi "final" b | 
				
			||||
final $0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet fore "for (each)" b | 
				
			||||
for ($1 : $2)`!p nl(snip)`{ | 
				
			||||
	$0 | 
				
			||||
} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet fori "for" b | 
				
			||||
for (int ${1:i} = 0; $1 < ${2:10}; $1++)`!p nl(snip)`{ | 
				
			||||
	$0 | 
				
			||||
} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet for "for" b | 
				
			||||
for ($1; $2; $3)`!p nl(snip)`{ | 
				
			||||
	$0 | 
				
			||||
} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet if "if" b | 
				
			||||
if ($1)`!p nl(snip)`{ | 
				
			||||
	$0${VISUAL} | 
				
			||||
} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet imt "import junit_framework_TestCase;"  b | 
				
			||||
import junit.framework.TestCase; | 
				
			||||
$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet im "import"  b | 
				
			||||
import ${1:java}.${2:util}.$0; | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet in "interface" b | 
				
			||||
interface ${1:`!p snip.rv = snip.basename or "untitled"`} ${2:extends ${3:Parent} }{ | 
				
			||||
	$0 | 
				
			||||
} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet cc "constructor call or setter body" | 
				
			||||
this.${1:var} = $1; | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet list "Collections List" b | 
				
			||||
List<${1:String}> ${2:list} = new ${3:Array}List<$1>(); | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet map "Collections Map" b | 
				
			||||
Map<${1:String}, ${2:String}> ${3:map} = new ${4:Hash}Map<$1, $2>(); | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet set "Collections Set" b | 
				
			||||
Set<${1:String}> ${2:set} = new ${3:Hash}Set<$1>(); | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet /Str?|str/ "String" br | 
				
			||||
String $0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet cn "Constructor" b | 
				
			||||
public `!p snip.rv = snip.basename or "untitled"`(${1:}) { | 
				
			||||
	$0 | 
				
			||||
} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet cn "constructor, \w fields + assigments" b | 
				
			||||
	`!p | 
				
			||||
args = getArgs(t[1]) | 
				
			||||
for i in args: | 
				
			||||
	snip.rv += "\n\tprivate " + i[0] + " " + i[1]+ ";" | 
				
			||||
if len(args) > 0: | 
				
			||||
	snip.rv += "\n"` | 
				
			||||
public `!p snip.rv = snip.basename or "unknown"`($1) {`!p | 
				
			||||
args = getArgs(t[1]) | 
				
			||||
for i in args: | 
				
			||||
	snip.rv += "\n\t\tthis.%s = %s;" % (i[1], i[1]) | 
				
			||||
if len(args) == 0: | 
				
			||||
	snip.rv += "\n"` | 
				
			||||
} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet j.b "java_beans_" i | 
				
			||||
java.beans. | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet j.i "java_io" i | 
				
			||||
java.io. | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet j.m "java_math" i | 
				
			||||
java.math. | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet j.n "java_net_" i | 
				
			||||
java.net. | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet j.u "java_util_"  i | 
				
			||||
java.util. | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet main "method (main)" b | 
				
			||||
public static void main(String[] args)`!p nl(snip)`{ | 
				
			||||
	$0 | 
				
			||||
} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet try "try/catch" b | 
				
			||||
try { | 
				
			||||
	$1${VISUAL} | 
				
			||||
} catch(${2:Exception} ${3:e}){ | 
				
			||||
	${4:e.printStackTrace();} | 
				
			||||
} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet mt "method throws" b | 
				
			||||
${1:private} ${2:void} ${3:method}($4) ${5:throws $6 }{ | 
				
			||||
	$0 | 
				
			||||
} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet m  "method" b | 
				
			||||
${1:private} ${2:void} ${3:method}($4) { | 
				
			||||
	$0 | 
				
			||||
} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet md "Method With javadoc" b | 
				
			||||
/** | 
				
			||||
 * ${7:Short Description}`!p | 
				
			||||
for i in getArgs(t[4]): | 
				
			||||
	snip.rv += "\n\t * @param " + i[1] + " usage..."` | 
				
			||||
 *`!p | 
				
			||||
if "throws" in t[5]: | 
				
			||||
	snip.rv = "\n\t * @throws " + t[6] | 
				
			||||
else: | 
				
			||||
	snip.rv = ""``!p | 
				
			||||
if not "void" in t[2]: | 
				
			||||
	snip.rv = "\n\t * @return object" | 
				
			||||
else: | 
				
			||||
	snip.rv = ""` | 
				
			||||
 **/ | 
				
			||||
${1:public} ${2:void} ${3:method}($4) ${5:throws $6 }{ | 
				
			||||
	$0 | 
				
			||||
} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet /get(ter)?/ "getter" br | 
				
			||||
public ${1:String} get${2:Name}() { | 
				
			||||
	return `!p snip.rv = mixedCase(t[2])`; | 
				
			||||
} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet /set(ter)?/ "setter" br | 
				
			||||
public void set${1:Name}(${2:String} `!p snip.rv = mixedCase(t[1])`) { | 
				
			||||
	this.`!p snip.rv = mixedCase(t[1])` = `!p snip.rv = mixedCase(t[1])`; | 
				
			||||
} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet /se?tge?t|ge?tse?t|gs/ "setter and getter" br | 
				
			||||
public void set${1:Name}(${2:String} `!p snip.rv = mixedCase(t[1])`) { | 
				
			||||
	this.`!p snip.rv = mixedCase(t[1])` = `!p snip.rv = mixedCase(t[1])`; | 
				
			||||
}`!p snip.rv += "\n"` | 
				
			||||
public $2 get$1() { | 
				
			||||
	return `!p snip.rv = mixedCase(t[1])`; | 
				
			||||
} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet pa "package" b | 
				
			||||
package $0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet p "print" b | 
				
			||||
System.out.print($1);$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet pl "println"  b | 
				
			||||
System.out.println($1);$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet pr "private" b | 
				
			||||
private $0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet po "protected" b | 
				
			||||
protected $0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet pu "public" b | 
				
			||||
public $0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet re "return" b | 
				
			||||
return $0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet st "static" | 
				
			||||
static $0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet sw "switch" b | 
				
			||||
switch ($1)`!p nl(snip)`{ | 
				
			||||
	case $2: $0 | 
				
			||||
} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet sy "synchronized" | 
				
			||||
synchronized $0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet tc "test case" | 
				
			||||
public class ${1:`!p snip.rv = snip.basename or "untitled"`} extends ${2:TestCase}`!p nl(snip)`{ | 
				
			||||
	$0 | 
				
			||||
} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet t "test" b | 
				
			||||
`!p junit(snip)`public void test${1:Name}() { | 
				
			||||
	$0 | 
				
			||||
} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet tt "test throws" b | 
				
			||||
`!p junit(snip)`public void test${1:Name}() ${2:throws Exception }{ | 
				
			||||
	$0 | 
				
			||||
} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet th "throw" b | 
				
			||||
throw new $0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet wh "while" b | 
				
			||||
while ($1)`!p nl(snip)`{ | 
				
			||||
	$0 | 
				
			||||
} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
# vim:ft=snippets: | 
				
			||||
@ -0,0 +1,51 @@
					 | 
				
			||||
priority -50 | 
				
			||||
 | 
				
			||||
# JSDoc snippets | 
				
			||||
 | 
				
			||||
snippet /* "A JSDoc comment" b | 
				
			||||
/** | 
				
			||||
 * ${1:${VISUAL}}$0 | 
				
			||||
 */ | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet @au "@author email (First Last)" | 
				
			||||
@author ${1:`!v g:snips_author`} [${2:`!v g:snips_author_email`}] | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet @li "@license Description" | 
				
			||||
@license ${1:MIT}$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet @ver "@version Semantic version" | 
				
			||||
@version ${1:0.1.0}$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet @fileo "@fileoverview Description" b | 
				
			||||
/** | 
				
			||||
 * @fileoverview ${1:${VISUAL:A description of the file}}$0 | 
				
			||||
 */ | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet @constr "@constructor" | 
				
			||||
@constructor | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet @p "@param {Type} varname Description" | 
				
			||||
@param {${1:Type}} ${2:varname} ${3:Description} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet @ret "@return {Type} Description" | 
				
			||||
@return {${1:Type}} ${2:Description} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet @pri "@private" | 
				
			||||
@private | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet @over "@override" | 
				
			||||
@override | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet @pro "@protected" | 
				
			||||
@protected | 
				
			||||
endsnippet | 
				
			||||
@ -0,0 +1,65 @@
					 | 
				
			||||
priority -50 | 
				
			||||
 | 
				
			||||
snippet #! "shebang" | 
				
			||||
#!/usr/bin/env node | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet vreq "assign a CommonJS-style module to a var" | 
				
			||||
var ${0:${1/(.+\/)*(\w+)(-|\b|$)(\..+$)?/\u$2/g}} = require('$1'); | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet ex "module.exports" | 
				
			||||
module.exports = $1; | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet hcs "http.createServer" | 
				
			||||
http.createServer($1).listen($2); | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet ncs "net.createServer" | 
				
			||||
net.createServer(function(${1:socket}){ | 
				
			||||
	$1.on('data', function(${3:data}){ | 
				
			||||
		$4 | 
				
			||||
	}); | 
				
			||||
	$1.on('end', function(){ | 
				
			||||
		$5 | 
				
			||||
	}); | 
				
			||||
}).listen(${6:8124}); | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet pipe "pipe" | 
				
			||||
pipe(${1:stream})$2 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
# Express snippets | 
				
			||||
 | 
				
			||||
snippet eget "express GET" | 
				
			||||
${1:app}.get('$2', $3); | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet epost "express POST" | 
				
			||||
${1:app}.post('$2', $3); | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet eput "express PUT" | 
				
			||||
${1:app}.put('$2', $3); | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet edelete "express DELETE" | 
				
			||||
${1:app}.delete('$2', $3); | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
# process snippets | 
				
			||||
 | 
				
			||||
snippet stdout "stdout" | 
				
			||||
process.stdout | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet stdin "stdin" | 
				
			||||
process.stdin | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet stderr "stderr" | 
				
			||||
process.stderr | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
@ -0,0 +1,140 @@
					 | 
				
			||||
priority -50 | 
				
			||||
 | 
				
			||||
############ | 
				
			||||
#  COMMON  # | 
				
			||||
############ | 
				
			||||
 | 
				
			||||
# The smart snippets use a global options called | 
				
			||||
# "g:ultisnips_javascript.{option}" which can control the format | 
				
			||||
# of trailing semicolon, space before function paren, etc. | 
				
			||||
 | 
				
			||||
global !p | 
				
			||||
from javascript_snippets import ( | 
				
			||||
	semi, space_before_function_paren, keyword_spacing | 
				
			||||
) | 
				
			||||
endglobal | 
				
			||||
 | 
				
			||||
########################################################################### | 
				
			||||
#                            TextMate Snippets                            # | 
				
			||||
########################################################################### | 
				
			||||
snippet get "Get Elements" | 
				
			||||
getElement${1/(T)|.*/(?1:s)/}By${1:T}${1/(T)|(I)|.*/(?1:agName)(?2:d)/}('$2') | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet '':f "object method string" | 
				
			||||
'${1:${2:#thing}:${3:click}}': function`!p snip.rv = space_before_function_paren(snip)`(element) { | 
				
			||||
	${VISUAL}$0 | 
				
			||||
}${10:,} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet :f "Object Method" | 
				
			||||
${1:method_name}: function`!p snip.rv = space_before_function_paren(snip)`(${3:attribute}) { | 
				
			||||
	${VISUAL}$0 | 
				
			||||
}${10:,} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet :, "Object Value JS" | 
				
			||||
${1:value_name}: ${0:value}, | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet : "Object key key: 'value'" | 
				
			||||
${1:key}: ${2:"${3:value}"}${4:, } | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet proto "Prototype (proto)" | 
				
			||||
${1:class_name}.prototype.${2:method_name} = function`!p snip.rv = space_before_function_paren(snip)`(${3:first_argument}) { | 
				
			||||
	${VISUAL}$0 | 
				
			||||
}`!p snip.rv = semi(snip)` | 
				
			||||
 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet fun "function (fun)" w | 
				
			||||
function ${1:function_name}`!p snip.rv = space_before_function_paren(snip)`(${2:argument}) { | 
				
			||||
	${VISUAL}$0 | 
				
			||||
} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet vf "Function assigned to var" | 
				
			||||
${1:var }${2:function_name} = function $2`!p snip.rv = space_before_function_paren(snip)`($3) { | 
				
			||||
	${VISUAL}$0 | 
				
			||||
}`!p snip.rv = semi(snip)` | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet af "Anonymous Function" i | 
				
			||||
function`!p snip.rv = space_before_function_paren(snip)`($1) { | 
				
			||||
	${VISUAL}$0 | 
				
			||||
} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet iife "Immediately-Invoked Function Expression (iife)" | 
				
			||||
(function`!p snip.rv = space_before_function_paren(snip)`(${1:window}) { | 
				
			||||
	${VISUAL}$0 | 
				
			||||
}(${2:$1}))`!p snip.rv = semi(snip)` | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet ;fe "Minify safe iife" | 
				
			||||
;(function`!p snip.rv = space_before_function_paren(snip)`(${1}) { | 
				
			||||
	${VISUAL}$0 | 
				
			||||
}(${2})) | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet timeout "setTimeout function" | 
				
			||||
setTimeout(function`!p snip.rv = space_before_function_paren(snip)`() { | 
				
			||||
	${VISUAL}$0 | 
				
			||||
}${2:.bind(${3:this})}, ${1:10})`!p snip.rv = semi(snip)` | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet fi "for prop in obj using hasOwnProperty" b | 
				
			||||
for`!p snip.rv = keyword_spacing(snip)`(${1:prop} in ${2:obj}){ | 
				
			||||
	if`!p snip.rv = keyword_spacing(snip)`($2.hasOwnProperty($1)) { | 
				
			||||
		${VISUAL}$0 | 
				
			||||
	} | 
				
			||||
} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet if "if (condition) { ... }" | 
				
			||||
if`!p snip.rv = keyword_spacing(snip)`(${1:true}) { | 
				
			||||
	${VISUAL}$0 | 
				
			||||
} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet ife "if (condition) { ... } else { ... }" | 
				
			||||
if`!p snip.rv = keyword_spacing(snip)`(${1:true}) { | 
				
			||||
	${VISUAL}$0 | 
				
			||||
}`!p snip.rv = keyword_spacing(snip)`else`!p snip.rv = keyword_spacing(snip)`{ | 
				
			||||
	${2} | 
				
			||||
} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet switch | 
				
			||||
switch`!p snip.rv = keyword_spacing(snip)`(${VISUAL}${1:expression}) { | 
				
			||||
	case '${VISUAL}${3:case}': | 
				
			||||
		${4} | 
				
			||||
		break`!p snip.rv = semi(snip)` | 
				
			||||
	${0} | 
				
			||||
	default: | 
				
			||||
		${2} | 
				
			||||
} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet case "case 'xyz': ... break" | 
				
			||||
case`!p snip.rv = keyword_spacing(snip)`'${VISUAL}${1:case}': | 
				
			||||
	${VISUAL}$0 | 
				
			||||
	break`!p snip.rv = semi(snip)` | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet do "do { ... } while (condition)" | 
				
			||||
do`!p snip.rv = keyword_spacing(snip)`{ | 
				
			||||
	${VISUAL}$0 | 
				
			||||
}`!p snip.rv = keyword_spacing(snip)`while`!p snip.rv = keyword_spacing(snip)`(${1:/* condition */})`!p snip.rv = semi(snip)` | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet ret "Return statement" | 
				
			||||
return ${VISUAL}$0`!p snip.rv = semi(snip)` | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet us | 
				
			||||
'use strict'`!p snip.rv = semi(snip)` | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
# vim:ft=snippets: | 
				
			||||
@ -0,0 +1,51 @@
					 | 
				
			||||
priority -50 | 
				
			||||
 | 
				
			||||
snippet s "String" b | 
				
			||||
"${1:key}": "${0:value}", | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet n "Number" b | 
				
			||||
"${1:key}": ${0:value}, | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet a "Array" b | 
				
			||||
[ | 
				
			||||
	${VISUAL}$0 | 
				
			||||
], | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet na "Named array" b | 
				
			||||
"${1:key}": [ | 
				
			||||
	${VISUAL}$0 | 
				
			||||
], | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet o "Object" b | 
				
			||||
{ | 
				
			||||
	${VISUAL}$0 | 
				
			||||
}, | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet no "Named object" b | 
				
			||||
"${1:key}": { | 
				
			||||
	${VISUAL}$0 | 
				
			||||
}, | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet null "Null" b | 
				
			||||
"${0:key}": null, | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
 | 
				
			||||
global !p | 
				
			||||
def compB(t, opts): | 
				
			||||
	if t: | 
				
			||||
		opts = [m[len(t):] for m in opts if m.startswith(t)] | 
				
			||||
	if len(opts) == 1: | 
				
			||||
		return opts[0] | 
				
			||||
	return "(" + '|'.join(opts) + ')' | 
				
			||||
endglobal | 
				
			||||
 | 
				
			||||
snippet b "Bool" b | 
				
			||||
"${1:key}": $2`!p snip.rv=compB(t[2], ['true', 'false'])`, | 
				
			||||
endsnippet | 
				
			||||
@ -0,0 +1,92 @@
					 | 
				
			||||
priority -50 | 
				
			||||
 | 
				
			||||
global !p | 
				
			||||
def create_table(snip): | 
				
			||||
    # retrieving single line from current string and treat it like tabstops count | 
				
			||||
    placeholders_string = snip.buffer[snip.line].strip().split("x",1) | 
				
			||||
    rows_amount = int(placeholders_string[0]) | 
				
			||||
    columns_amount = int(placeholders_string[1]) | 
				
			||||
 | 
				
			||||
    # erase current line | 
				
			||||
    snip.buffer[snip.line] = '' | 
				
			||||
 | 
				
			||||
    # create anonymous snippet with expected content and number of tabstops | 
				
			||||
    anon_snippet_title = ' | '.join(['$' + str(col) for col in range(1,columns_amount+1)]) + "\n" | 
				
			||||
    anon_snippet_delimiter = ':-|' * (columns_amount-1) + ":-\n" | 
				
			||||
    anon_snippet_body = "" | 
				
			||||
    for row in range(1,rows_amount+1): | 
				
			||||
        anon_snippet_body += ' | '.join(['$' + str(row*columns_amount+col) for col in range(1,columns_amount+1)]) + "\n" | 
				
			||||
    anon_snippet_table = anon_snippet_title + anon_snippet_delimiter + anon_snippet_body | 
				
			||||
 | 
				
			||||
    # expand anonymous snippet | 
				
			||||
    snip.expand_anon(anon_snippet_table) | 
				
			||||
endglobal | 
				
			||||
 | 
				
			||||
########################### | 
				
			||||
# Sections and Paragraphs # | 
				
			||||
########################### | 
				
			||||
snippet sec "Section" b | 
				
			||||
# ${1:Section Name} # | 
				
			||||
$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet ssec "Sub Section" b | 
				
			||||
## ${1:Section Name} ## | 
				
			||||
$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet sssec "SubSub Section" b | 
				
			||||
### ${1:Section Name} ### | 
				
			||||
$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet par "Paragraph" b | 
				
			||||
#### ${1:Paragraph Name} #### | 
				
			||||
$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet spar "Paragraph" b | 
				
			||||
##### ${1:Paragraph Name} ##### | 
				
			||||
$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
################ | 
				
			||||
# Common stuff # | 
				
			||||
################ | 
				
			||||
snippet link "Link to something" | 
				
			||||
[${1:${VISUAL:Text}}](${3:http://${2:www.url.com}})$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet img "Image" | 
				
			||||
$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet ilc "Inline Code" i | 
				
			||||
\`$1\`$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet cbl "Codeblock" b | 
				
			||||
\`\`\` | 
				
			||||
$1 | 
				
			||||
\`\`\` | 
				
			||||
$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet refl "Reference Link" | 
				
			||||
[${1:${VISUAL:Text}}][${2:id}]$0 | 
				
			||||
 | 
				
			||||
[$2]:${4:http://${3:www.url.com}} "${5:$4}" | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet fnt "Footnote" | 
				
			||||
[^${1:${VISUAL:Footnote}}]$0 | 
				
			||||
 | 
				
			||||
[^$1]:${2:Text} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
post_jump "create_table(snip)" | 
				
			||||
snippet "tb(\d+x\d+)" "Customizable table" br | 
				
			||||
`!p snip.rv = match.group(1)` | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
# vim:ft=snippets: | 
				
			||||
@ -0,0 +1,174 @@
					 | 
				
			||||
priority -50 | 
				
			||||
 | 
				
			||||
snippet rs "raise" b | 
				
			||||
raise (${1:Not_found}) | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet open "open" | 
				
			||||
let open ${1:module} in | 
				
			||||
${2:e} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet try "try" | 
				
			||||
try ${1:e} | 
				
			||||
with ${2:Not_found} -> ${3:()} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet ref "ref" | 
				
			||||
let ${1:name} = ref ${2:val} in | 
				
			||||
${3:e} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet matchl "pattern match on a list" | 
				
			||||
match ${1:list} with | 
				
			||||
| [] -> ${2:()} | 
				
			||||
| x::xs -> ${3:()} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet matcho "pattern match on an option type" | 
				
			||||
match ${1:x} with | 
				
			||||
| Some(${2:y}) -> ${3:()} | 
				
			||||
| None -> ${4:()} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet fun "anonymous function" | 
				
			||||
(fun ${1:x} -> ${2:x}) | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet cc "commment" | 
				
			||||
(* ${1:comment} *) | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet let "let .. in binding" | 
				
			||||
let ${1:x} = ${2:v} in | 
				
			||||
${3:e} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet lr "let rec" | 
				
			||||
let rec ${1:f} = | 
				
			||||
	${2:expr} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet if "if" | 
				
			||||
if ${1:(* condition *)} then | 
				
			||||
	${2:(* A *)} | 
				
			||||
else | 
				
			||||
	${3:(* B *)} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet If "If" | 
				
			||||
if ${1:(* condition *)} then | 
				
			||||
	${2:(* A *)} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet while "while" | 
				
			||||
while ${1:(* condition *)} do | 
				
			||||
	${2:(* A *)} | 
				
			||||
done | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet for "for" | 
				
			||||
for ${1:i} = ${2:1} to ${3:10} do | 
				
			||||
	${4:(* BODY *)} | 
				
			||||
done | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet match "match" | 
				
			||||
match ${1:(* e1 *)} with | 
				
			||||
| ${2:p} -> ${3:e2} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet Match "match" | 
				
			||||
match ${1:(* e1 *)} with | 
				
			||||
| ${2:p} -> ${3:e2} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet class "class" | 
				
			||||
class ${1:name} = object | 
				
			||||
	${2:methods} | 
				
			||||
end | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet obj "obj" | 
				
			||||
object | 
				
			||||
	${2:methods} | 
				
			||||
end | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet Obj "object" | 
				
			||||
object (self) | 
				
			||||
	${2:methods} | 
				
			||||
end | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet {{ "object functional update" | 
				
			||||
{< ${1:x} = ${2:y} >} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet beg "beg" | 
				
			||||
begin | 
				
			||||
	${1:block} | 
				
			||||
end | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet ml "module instantiantion with functor" | 
				
			||||
module ${1:Mod} = ${2:Functor}(${3:Arg}) | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet mod "module - no signature" | 
				
			||||
module ${1:(* Name *)} = struct | 
				
			||||
	${2:(* BODY *)} | 
				
			||||
end | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet Mod "module with signature" | 
				
			||||
module ${1:(* Name *)} : ${2:(* SIG *)} = struct | 
				
			||||
	${3:(* BODY *)} | 
				
			||||
end | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet sig "anonymous signature" | 
				
			||||
sig | 
				
			||||
	${2:(* BODY *)} | 
				
			||||
end | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet sigf "functor signature or anonymous functor" | 
				
			||||
functor (${1:Arg} : ${2:ARG}) -> ${3:(* BODY *)} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet func "define functor - no signature" | 
				
			||||
module ${1:M} (${2:Arg} : ${3:ARG}) = struct | 
				
			||||
	${4:(* BODY *)} | 
				
			||||
end | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet Func "define functor - with signature" | 
				
			||||
module ${1:M} (${2:Arg} : ${3:ARG}) : ${4:SIG} = struct | 
				
			||||
	${5:(* BODY *)} | 
				
			||||
end | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet mot "Declare module signature" | 
				
			||||
module type ${1:(* Name *)} = sig | 
				
			||||
	${2:(* BODY *)} | 
				
			||||
end | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet module "Module with anonymous signature" | 
				
			||||
module ${1:(* Name *)} : sig | 
				
			||||
	${2:(* SIGNATURE *)} | 
				
			||||
end = struct | 
				
			||||
	${3:(* BODY *)} | 
				
			||||
end | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet oo "odoc" | 
				
			||||
(** ${1:odoc} *) | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet qt "inline qtest" | 
				
			||||
(*$T ${1:name} | 
				
			||||
	${2:test} | 
				
			||||
*) | 
				
			||||
endsnippet | 
				
			||||
@ -0,0 +1,712 @@
					 | 
				
			||||
priority -50 | 
				
			||||
 | 
				
			||||
########################################################################### | 
				
			||||
#                            TEXTMATE SNIPPETS                            # | 
				
			||||
########################################################################### | 
				
			||||
 | 
				
			||||
#! header | 
				
			||||
snippet #! "Shebang header for python scripts" b | 
				
			||||
#!/usr/bin/env python | 
				
			||||
# -*- coding: utf-8 -*- | 
				
			||||
$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet ifmain "ifmain" b | 
				
			||||
if __name__ == `!p snip.rv = get_quoting_style(snip)`__main__`!p snip.rv = get_quoting_style(snip)`: | 
				
			||||
	${1:${VISUAL:main()}} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet with "with" b | 
				
			||||
with ${1:expr}`!p snip.rv = " as " if t[2] else ""`${2:var}: | 
				
			||||
	${3:${VISUAL:pass}} | 
				
			||||
$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet for "for loop" b | 
				
			||||
for ${1:item} in ${2:iterable}: | 
				
			||||
	${3:${VISUAL:pass}} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
########## | 
				
			||||
# COMMON # | 
				
			||||
########## | 
				
			||||
 | 
				
			||||
# The smart def and smart class snippets use a global option called | 
				
			||||
# "g:ultisnips_python_style" which, if set to "doxygen" will use doxygen | 
				
			||||
# style comments in docstrings. | 
				
			||||
 | 
				
			||||
global !p | 
				
			||||
 | 
				
			||||
NORMAL  = 0x1 | 
				
			||||
DOXYGEN = 0x2 | 
				
			||||
SPHINX  = 0x3 | 
				
			||||
GOOGLE  = 0x4 | 
				
			||||
NUMPY   = 0x5 | 
				
			||||
JEDI    = 0x6 | 
				
			||||
 | 
				
			||||
SINGLE_QUOTES = "'" | 
				
			||||
DOUBLE_QUOTES = '"' | 
				
			||||
 | 
				
			||||
 | 
				
			||||
class Arg(object): | 
				
			||||
	def __init__(self, arg): | 
				
			||||
		self.arg = arg | 
				
			||||
		self.name = arg.split('=')[0].strip() | 
				
			||||
 | 
				
			||||
	def __str__(self): | 
				
			||||
		return self.name | 
				
			||||
 | 
				
			||||
	def __unicode__(self): | 
				
			||||
		return self.name | 
				
			||||
 | 
				
			||||
	def is_kwarg(self): | 
				
			||||
		return '=' in self.arg | 
				
			||||
 | 
				
			||||
 | 
				
			||||
def get_args(arglist): | 
				
			||||
	args = [Arg(arg) for arg in arglist.split(',') if arg] | 
				
			||||
	args = [arg for arg in args if arg.name != 'self'] | 
				
			||||
 | 
				
			||||
	return args | 
				
			||||
 | 
				
			||||
 | 
				
			||||
def get_quoting_style(snip): | 
				
			||||
	style = snip.opt("g:ultisnips_python_quoting_style", "double") | 
				
			||||
	if style == 'single': | 
				
			||||
		return SINGLE_QUOTES | 
				
			||||
	return DOUBLE_QUOTES | 
				
			||||
 | 
				
			||||
def triple_quotes(snip): | 
				
			||||
	style = snip.opt("g:ultisnips_python_triple_quoting_style") | 
				
			||||
	if not style: | 
				
			||||
		return get_quoting_style(snip) * 3 | 
				
			||||
	return (SINGLE_QUOTES if style == 'single' else DOUBLE_QUOTES) * 3 | 
				
			||||
 | 
				
			||||
def triple_quotes_handle_trailing(snip, quoting_style): | 
				
			||||
	""" | 
				
			||||
	Generate triple quoted strings and handle any trailing quote char, | 
				
			||||
	which might be there from some autoclose/autopair plugin, | 
				
			||||
	i.e. when expanding ``"|"``. | 
				
			||||
	""" | 
				
			||||
	if not snip.c: | 
				
			||||
		# Do this only once, otherwise the following error would happen: | 
				
			||||
		# RuntimeError: The snippets content did not converge: … | 
				
			||||
		_, col = vim.current.window.cursor | 
				
			||||
		line = vim.current.line | 
				
			||||
 | 
				
			||||
		# Handle already existing quote chars after the trigger. | 
				
			||||
		_ret = quoting_style * 3 | 
				
			||||
		while True: | 
				
			||||
			try: | 
				
			||||
				nextc = line[col] | 
				
			||||
			except IndexError: | 
				
			||||
				break | 
				
			||||
			if nextc == quoting_style and len(_ret): | 
				
			||||
				_ret = _ret[1:] | 
				
			||||
				col = col+1 | 
				
			||||
			else: | 
				
			||||
				break | 
				
			||||
		snip.rv = _ret | 
				
			||||
	else: | 
				
			||||
		snip.rv = snip.c | 
				
			||||
 | 
				
			||||
def get_style(snip): | 
				
			||||
	style = snip.opt("g:ultisnips_python_style", "normal") | 
				
			||||
 | 
				
			||||
	if    style == "doxygen": return DOXYGEN | 
				
			||||
	elif  style == "sphinx": return SPHINX | 
				
			||||
	elif  style == "google": return GOOGLE | 
				
			||||
	elif  style == "numpy": return NUMPY | 
				
			||||
	elif  style == "jedi": return JEDI | 
				
			||||
	else: return NORMAL | 
				
			||||
 | 
				
			||||
 | 
				
			||||
def format_arg(arg, style): | 
				
			||||
	if style == DOXYGEN: | 
				
			||||
		return "@param %s TODO" % arg | 
				
			||||
	elif style == SPHINX: | 
				
			||||
		return ":param %s: TODO" % arg | 
				
			||||
	elif style == NORMAL: | 
				
			||||
		return ":%s: TODO" % arg | 
				
			||||
	elif style == GOOGLE: | 
				
			||||
		return "%s (TODO): TODO" % arg | 
				
			||||
	elif style == JEDI: | 
				
			||||
		return ":type %s: TODO" % arg | 
				
			||||
	elif style == NUMPY: | 
				
			||||
		return "%s : TODO" % arg | 
				
			||||
 | 
				
			||||
 | 
				
			||||
def format_return(style): | 
				
			||||
	if style == DOXYGEN: | 
				
			||||
		return "@return: TODO" | 
				
			||||
	elif style in (NORMAL, SPHINX, JEDI): | 
				
			||||
		return ":returns: TODO" | 
				
			||||
	elif style == GOOGLE: | 
				
			||||
		return "Returns: TODO" | 
				
			||||
 | 
				
			||||
 | 
				
			||||
def write_docstring_args(args, snip): | 
				
			||||
	if not args: | 
				
			||||
		snip.rv += ' {0}'.format(triple_quotes(snip)) | 
				
			||||
		return | 
				
			||||
 | 
				
			||||
	snip.rv += '\n' + snip.mkline('', indent='') | 
				
			||||
 | 
				
			||||
	style = get_style(snip) | 
				
			||||
 | 
				
			||||
	if style == GOOGLE: | 
				
			||||
		write_google_docstring_args(args, snip) | 
				
			||||
	elif style == NUMPY: | 
				
			||||
		write_numpy_docstring_args(args, snip) | 
				
			||||
	else: | 
				
			||||
		for arg in args: | 
				
			||||
			snip += format_arg(arg, style) | 
				
			||||
 | 
				
			||||
 | 
				
			||||
def write_google_docstring_args(args, snip): | 
				
			||||
	kwargs = [arg for arg in args if arg.is_kwarg()] | 
				
			||||
	args = [arg for arg in args if not arg.is_kwarg()] | 
				
			||||
 | 
				
			||||
	if args: | 
				
			||||
		snip += "Args:" | 
				
			||||
		snip.shift() | 
				
			||||
		for arg in args: | 
				
			||||
			snip += format_arg(arg, GOOGLE) | 
				
			||||
		snip.unshift() | 
				
			||||
		snip.rv += '\n' + snip.mkline('', indent='') | 
				
			||||
 | 
				
			||||
	if kwargs: | 
				
			||||
		snip += "Kwargs:" | 
				
			||||
		snip.shift() | 
				
			||||
		for kwarg in kwargs: | 
				
			||||
			snip += format_arg(kwarg, GOOGLE) | 
				
			||||
		snip.unshift() | 
				
			||||
		snip.rv += '\n' + snip.mkline('', indent='') | 
				
			||||
 | 
				
			||||
 | 
				
			||||
def write_numpy_docstring_args(args, snip): | 
				
			||||
	if args: | 
				
			||||
		snip += "Parameters" | 
				
			||||
		snip += "----------" | 
				
			||||
 | 
				
			||||
	kwargs = [arg for arg in args if arg.is_kwarg()] | 
				
			||||
	args = [arg for arg in args if not arg.is_kwarg()] | 
				
			||||
 | 
				
			||||
	if args: | 
				
			||||
		for arg in args: | 
				
			||||
			snip += format_arg(arg, NUMPY) | 
				
			||||
	if kwargs: | 
				
			||||
		for kwarg in kwargs: | 
				
			||||
			snip += format_arg(kwarg, NUMPY) + ', optional' | 
				
			||||
	snip.rv += '\n' + snip.mkline('', indent='') | 
				
			||||
 | 
				
			||||
 | 
				
			||||
def write_init_body(args, parents, snip): | 
				
			||||
	parents = [p.strip() for p in parents.split(",")] | 
				
			||||
	parents = [p for p in parents if p != 'object'] | 
				
			||||
 | 
				
			||||
	for p in parents: | 
				
			||||
		snip += p + ".__init__(self)" | 
				
			||||
 | 
				
			||||
	if parents: | 
				
			||||
		snip.rv += '\n' + snip.mkline('', indent='') | 
				
			||||
 | 
				
			||||
	for arg in args: | 
				
			||||
		snip += "self._%s = %s" % (arg, arg) | 
				
			||||
 | 
				
			||||
 | 
				
			||||
def write_slots_args(args, snip): | 
				
			||||
	args = ['"_%s"' % arg for arg in args] | 
				
			||||
	snip += '__slots__ = (%s,)' % ', '.join(args) | 
				
			||||
 | 
				
			||||
 | 
				
			||||
def write_function_docstring(t, snip): | 
				
			||||
	""" | 
				
			||||
	Writes a function docstring with the current style. | 
				
			||||
 | 
				
			||||
	:param t: The values of the placeholders | 
				
			||||
	:param snip: UltiSnips.TextObjects.SnippetUtil object instance | 
				
			||||
	""" | 
				
			||||
	snip.rv = "" | 
				
			||||
	snip >> 1 | 
				
			||||
 | 
				
			||||
	args = get_args(t[2]) | 
				
			||||
	if args: | 
				
			||||
		write_docstring_args(args, snip) | 
				
			||||
 | 
				
			||||
	style = get_style(snip) | 
				
			||||
 | 
				
			||||
	if style == NUMPY: | 
				
			||||
		snip += 'Returns' | 
				
			||||
		snip += '-------' | 
				
			||||
		snip += 'TODO' | 
				
			||||
	else: | 
				
			||||
		snip += format_return(style) | 
				
			||||
	snip.rv += '\n' + snip.mkline('', indent='') | 
				
			||||
	snip += triple_quotes(snip) | 
				
			||||
 | 
				
			||||
def get_dir_and_file_name(snip): | 
				
			||||
	return os.getcwd().split(os.sep)[-1] + '.' + snip.basename | 
				
			||||
 | 
				
			||||
endglobal | 
				
			||||
 | 
				
			||||
######################################## | 
				
			||||
# Class & Special Method Name Snippets # | 
				
			||||
######################################## | 
				
			||||
 | 
				
			||||
snippet class "class with docstrings" b | 
				
			||||
class ${1:MyClass}(${2:object}): | 
				
			||||
 | 
				
			||||
	`!p snip.rv = triple_quotes(snip)`${3:Docstring for $1. }`!p snip.rv = triple_quotes(snip)` | 
				
			||||
 | 
				
			||||
	def __init__(self$4): | 
				
			||||
		`!p snip.rv = triple_quotes(snip)`${5:TODO: to be defined1.}`!p | 
				
			||||
snip.rv = "" | 
				
			||||
snip >> 2 | 
				
			||||
 | 
				
			||||
args = get_args(t[4]) | 
				
			||||
 | 
				
			||||
write_docstring_args(args, snip) | 
				
			||||
if args: | 
				
			||||
	snip.rv += '\n' + snip.mkline('', indent='') | 
				
			||||
	snip += '{0}'.format(triple_quotes(snip)) | 
				
			||||
 | 
				
			||||
write_init_body(args, t[2], snip) | 
				
			||||
` | 
				
			||||
		$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
 | 
				
			||||
snippet slotclass "class with slots and docstrings" b | 
				
			||||
class ${1:MyClass}(${2:object}): | 
				
			||||
 | 
				
			||||
	`!p snip.rv = triple_quotes(snip)`${3:Docstring for $1. }`!p snip.rv = triple_quotes(snip)` | 
				
			||||
`!p | 
				
			||||
snip >> 1 | 
				
			||||
args = get_args(t[4]) | 
				
			||||
write_slots_args(args, snip) | 
				
			||||
` | 
				
			||||
 | 
				
			||||
	def __init__(self$4): | 
				
			||||
		`!p snip.rv = triple_quotes(snip)`${5:TODO: to be defined.}`!p | 
				
			||||
snip.rv = "" | 
				
			||||
snip >> 2 | 
				
			||||
 | 
				
			||||
args = get_args(t[4]) | 
				
			||||
 | 
				
			||||
write_docstring_args(args, snip) | 
				
			||||
if args: | 
				
			||||
	snip.rv += '\n' + snip.mkline('', indent='') | 
				
			||||
	snip += triple_quotes(snip) | 
				
			||||
 | 
				
			||||
write_init_body(args, t[2], snip) | 
				
			||||
` | 
				
			||||
		$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
 | 
				
			||||
snippet contain "methods for emulating a container type" b | 
				
			||||
def __len__(self): | 
				
			||||
	${1:pass} | 
				
			||||
 | 
				
			||||
def __getitem__(self, key): | 
				
			||||
	${2:pass} | 
				
			||||
 | 
				
			||||
def __setitem__(self, key, value): | 
				
			||||
	${3:pass} | 
				
			||||
 | 
				
			||||
def __delitem__(self, key): | 
				
			||||
	${4:pass} | 
				
			||||
 | 
				
			||||
def __iter__(self): | 
				
			||||
	${5:pass} | 
				
			||||
 | 
				
			||||
def __reversed__(self): | 
				
			||||
	${6:pass} | 
				
			||||
 | 
				
			||||
def __contains__(self, item): | 
				
			||||
	${7:pass} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
 | 
				
			||||
snippet context "context manager methods" b | 
				
			||||
def __enter__(self): | 
				
			||||
	${1:pass} | 
				
			||||
 | 
				
			||||
def __exit__(self, exc_type, exc_value, traceback): | 
				
			||||
	${2:pass} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
 | 
				
			||||
snippet attr "methods for customizing attribute access" b | 
				
			||||
def __getattr__(self, name): | 
				
			||||
	${1:pass} | 
				
			||||
 | 
				
			||||
def __setattr__(self, name, value): | 
				
			||||
	${2:pass} | 
				
			||||
 | 
				
			||||
def __delattr__(self, name): | 
				
			||||
	${3:pass} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
 | 
				
			||||
snippet desc "methods implementing descriptors" b | 
				
			||||
def __get__(self, instance, owner): | 
				
			||||
	${1:pass} | 
				
			||||
 | 
				
			||||
def __set__(self, instance, value): | 
				
			||||
	${2:pass} | 
				
			||||
 | 
				
			||||
def __delete__(self, instance): | 
				
			||||
	${3:pass} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
 | 
				
			||||
snippet cmp "methods implementing rich comparison" | 
				
			||||
def __eq__(self, other): | 
				
			||||
	${1:pass} | 
				
			||||
 | 
				
			||||
def __ne__(self, other): | 
				
			||||
	${2:pass} | 
				
			||||
 | 
				
			||||
def __lt__(self, other): | 
				
			||||
	${3:pass} | 
				
			||||
 | 
				
			||||
def __le__(self, other): | 
				
			||||
	${4:pass} | 
				
			||||
 | 
				
			||||
def __gt__(self, other): | 
				
			||||
	${5:pass} | 
				
			||||
 | 
				
			||||
def __ge__(self, other): | 
				
			||||
	${6:pass} | 
				
			||||
 | 
				
			||||
def __cmp__(self, other): | 
				
			||||
	${7:pass} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
 | 
				
			||||
snippet repr "methods implementing string representation" | 
				
			||||
def __repr__(self): | 
				
			||||
	${1:pass} | 
				
			||||
 | 
				
			||||
def __str__(self): | 
				
			||||
	${2:pass} | 
				
			||||
 | 
				
			||||
def __unicode__(self): | 
				
			||||
	${3:pass} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
 | 
				
			||||
# note: reflected operands and augmented arithmeitc assignements have been | 
				
			||||
# intentionally ommited to reduce verbosity. | 
				
			||||
snippet numeric "methods for emulating a numeric type" b | 
				
			||||
def __add__(self, other): | 
				
			||||
	${1:pass} | 
				
			||||
 | 
				
			||||
def __sub__(self, other): | 
				
			||||
	${2:pass} | 
				
			||||
 | 
				
			||||
def __mul__(self, other): | 
				
			||||
	${3:pass} | 
				
			||||
 | 
				
			||||
def __div__(self, other): | 
				
			||||
	${4:pass} | 
				
			||||
 | 
				
			||||
def __truediv__(self, other): | 
				
			||||
	${5:pass} | 
				
			||||
 | 
				
			||||
def __floordiv__(self, other): | 
				
			||||
	${6:pass} | 
				
			||||
 | 
				
			||||
 | 
				
			||||
def __mod__(self, other): | 
				
			||||
	${7:pass} | 
				
			||||
 | 
				
			||||
def __divmod__(self, other): | 
				
			||||
	${8:pass} | 
				
			||||
 | 
				
			||||
def __pow__(self, other): | 
				
			||||
	${9:pass} | 
				
			||||
 | 
				
			||||
 | 
				
			||||
def __lshift__(self, other): | 
				
			||||
	${10:pass} | 
				
			||||
 | 
				
			||||
def __rshift__(self, other): | 
				
			||||
	${11:pass} | 
				
			||||
 | 
				
			||||
def __and__(self, other): | 
				
			||||
	${12:pass} | 
				
			||||
 | 
				
			||||
def __xor__(self, other): | 
				
			||||
	${13:pass} | 
				
			||||
 | 
				
			||||
def __or__(self, other): | 
				
			||||
	${14:pass} | 
				
			||||
 | 
				
			||||
 | 
				
			||||
def __neg__(self): | 
				
			||||
	${15:pass} | 
				
			||||
 | 
				
			||||
def __pos__(self): | 
				
			||||
	${16:pass} | 
				
			||||
 | 
				
			||||
def __abs__(self): | 
				
			||||
	${17:pass} | 
				
			||||
 | 
				
			||||
def __invert__(self): | 
				
			||||
	${18:pass} | 
				
			||||
 | 
				
			||||
 | 
				
			||||
def __complex__(self): | 
				
			||||
	${19:pass} | 
				
			||||
 | 
				
			||||
def __int__(self): | 
				
			||||
	${20:pass} | 
				
			||||
 | 
				
			||||
def __long__(self): | 
				
			||||
	${21:pass} | 
				
			||||
 | 
				
			||||
def __float__(self): | 
				
			||||
	${22:pass} | 
				
			||||
 | 
				
			||||
 | 
				
			||||
def __oct__(self): | 
				
			||||
	${22:pass} | 
				
			||||
 | 
				
			||||
def __hex__(self): | 
				
			||||
	${23:pass} | 
				
			||||
 | 
				
			||||
 | 
				
			||||
def __index__(self): | 
				
			||||
	${24:pass} | 
				
			||||
 | 
				
			||||
def __coerce__(self, other): | 
				
			||||
	${25:pass} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet deff | 
				
			||||
def ${1:fname}(`!p snip.rv = vim.eval('indent(".") ? "self" : ""')`$2): | 
				
			||||
	$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet def "function with docstrings" b | 
				
			||||
def ${1:function}(`!p | 
				
			||||
if snip.indent: | 
				
			||||
	snip.rv = 'self' + (", " if len(t[2]) else "")`${2:arg1}): | 
				
			||||
	`!p snip.rv = triple_quotes(snip)`${4:TODO: Docstring for $1.}`!p | 
				
			||||
write_function_docstring(t, snip) ` | 
				
			||||
	${5:${VISUAL:pass}} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
 | 
				
			||||
snippet defc "class method with docstrings" b | 
				
			||||
@classmethod | 
				
			||||
def ${1:function}(`!p | 
				
			||||
if snip.indent: | 
				
			||||
	snip.rv = 'cls' + (", " if len(t[2]) else "")`${2:arg1}): | 
				
			||||
	`!p snip.rv = triple_quotes(snip)`${4:TODO: Docstring for $1.}`!p | 
				
			||||
write_function_docstring(t, snip) ` | 
				
			||||
	${5:${VISUAL:pass}} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
 | 
				
			||||
snippet defs "static method with docstrings" b | 
				
			||||
@staticmethod | 
				
			||||
def ${1:function}(${2:arg1}): | 
				
			||||
	`!p snip.rv = triple_quotes(snip)`${4:TODO: Docstring for $1.}`!p | 
				
			||||
write_function_docstring(t, snip) ` | 
				
			||||
	${5:${VISUAL:pass}} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
 | 
				
			||||
# doesn't expand when there is a word in front | 
				
			||||
snippet /(^|(?<=\W))\./ "self." r | 
				
			||||
self. | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet from "from module import name" b | 
				
			||||
from ${1:module} import ${2:Stuff} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
 | 
				
			||||
############## | 
				
			||||
# PROPERTIES # | 
				
			||||
############## | 
				
			||||
snippet roprop "Read Only Property" b | 
				
			||||
@property | 
				
			||||
def ${1:name}(self): | 
				
			||||
	${2:return self._$1}$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet rwprop "Read write property" b | 
				
			||||
def ${1:name}(): | 
				
			||||
	`!p snip.rv = triple_quotes(snip) if t[2] else '' | 
				
			||||
`${2:TODO: Docstring for $1.}`!p | 
				
			||||
if t[2]: | 
				
			||||
	snip >> 1 | 
				
			||||
 | 
				
			||||
	style = get_style(snip) | 
				
			||||
	snip.rv += '\n' + snip.mkline('', indent='') | 
				
			||||
	snip += format_return(style) | 
				
			||||
	snip.rv += '\n' + snip.mkline('', indent='') | 
				
			||||
	snip += triple_quotes(snip) | 
				
			||||
else: | 
				
			||||
	snip.rv = ""` | 
				
			||||
	def fget(self): | 
				
			||||
		return self._$1$0 | 
				
			||||
 | 
				
			||||
	def fset(self, value): | 
				
			||||
		self._$1 = value | 
				
			||||
	return locals() | 
				
			||||
 | 
				
			||||
$1 = property(**$1(), doc=$1.__doc__) | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
 | 
				
			||||
#################### | 
				
			||||
# If / Else / Elif # | 
				
			||||
#################### | 
				
			||||
snippet if "If" b | 
				
			||||
if ${1:condition}: | 
				
			||||
	${2:${VISUAL:pass}} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet ife "If / Else" b | 
				
			||||
if ${1:condition}: | 
				
			||||
	${2:${VISUAL:pass}} | 
				
			||||
else: | 
				
			||||
	${3:pass} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet ifee "If / Elif / Else" b | 
				
			||||
if ${1:condition}: | 
				
			||||
	${2:${VISUAL:pass}} | 
				
			||||
elif ${3:condition}: | 
				
			||||
	${4:pass} | 
				
			||||
else: | 
				
			||||
	${5:pass} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
 | 
				
			||||
########################## | 
				
			||||
# Try / Except / Finally # | 
				
			||||
########################## | 
				
			||||
snippet try "Try / Except" b | 
				
			||||
try: | 
				
			||||
	${1:${VISUAL:pass}} | 
				
			||||
except ${2:Exception} as ${3:e}: | 
				
			||||
	${4:raise $3} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet trye "Try / Except / Else" b | 
				
			||||
try: | 
				
			||||
	${1:${VISUAL:pass}} | 
				
			||||
except ${2:Exception} as ${3:e}: | 
				
			||||
	${4:raise $3} | 
				
			||||
else: | 
				
			||||
	${5:pass} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet tryf "Try / Except / Finally" b | 
				
			||||
try: | 
				
			||||
	${1:${VISUAL:pass}} | 
				
			||||
except ${2:Exception} as ${3:e}: | 
				
			||||
	${4:raise $3} | 
				
			||||
finally: | 
				
			||||
	${5:pass} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet tryef "Try / Except / Else / Finally" b | 
				
			||||
try: | 
				
			||||
	${1:${VISUAL:pass}} | 
				
			||||
except${2: ${3:Exception} as ${4:e}}: | 
				
			||||
	${5:raise} | 
				
			||||
else: | 
				
			||||
	${6:pass} | 
				
			||||
finally: | 
				
			||||
	${7:pass} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
 | 
				
			||||
###################### | 
				
			||||
# Assertions & Tests # | 
				
			||||
###################### | 
				
			||||
 | 
				
			||||
snippet ae "Assert equal" b | 
				
			||||
self.assertEqual(${1:${VISUAL:first}},${2:second}) | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet at "Assert True" b | 
				
			||||
self.assertTrue(${1:${VISUAL:expression}}) | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet af "Assert False" b | 
				
			||||
self.assertFalse(${1:${VISUAL:expression}}) | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet aae "Assert almost equal" b | 
				
			||||
self.assertAlmostEqual(${1:${VISUAL:first}},${2:second}) | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet ar "Assert raises" b | 
				
			||||
self.assertRaises(${1:exception}, ${2:${VISUAL:func}}${3/.+/, /}${3:arguments}) | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet an "Assert is None" b | 
				
			||||
self.assertIsNone(${1:${VISUAL:expression}}) | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet ann "Assert is not None" b | 
				
			||||
self.assertIsNotNone(${1:${VISUAL:expression}}) | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet testcase "pyunit testcase" b | 
				
			||||
class Test${1:Class}(${2:unittest.TestCase}): | 
				
			||||
 | 
				
			||||
	`!p snip.rv = triple_quotes(snip)`${3:Test case docstring.}`!p snip.rv = triple_quotes(snip)` | 
				
			||||
 | 
				
			||||
	def setUp(self): | 
				
			||||
		${4:pass} | 
				
			||||
 | 
				
			||||
	def tearDown(self): | 
				
			||||
		${5:pass} | 
				
			||||
 | 
				
			||||
	def test_${6:name}(self): | 
				
			||||
		${7:${VISUAL:pass}} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet " "triple quoted string (double quotes)" b | 
				
			||||
""" | 
				
			||||
${1:${VISUAL:doc}} | 
				
			||||
`!p triple_quotes_handle_trailing(snip, '"')` | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet ' "triple quoted string (single quotes)" b | 
				
			||||
''' | 
				
			||||
${1:${VISUAL:doc}} | 
				
			||||
`!p triple_quotes_handle_trailing(snip, "'")` | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet doc "doc block (triple quotes)" | 
				
			||||
`!p snip.rv = triple_quotes(snip)` | 
				
			||||
${1:${VISUAL:doc}} | 
				
			||||
`!p snip.rv = triple_quotes(snip)` | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet pmdoc "pocoo style module doc string" b | 
				
			||||
# -*- coding: utf-8 -*- | 
				
			||||
""" | 
				
			||||
	`!p snip.rv = get_dir_and_file_name(snip)` | 
				
			||||
	`!p snip.rv = '~' * len(get_dir_and_file_name(snip))` | 
				
			||||
 | 
				
			||||
	${1:DESCRIPTION} | 
				
			||||
 | 
				
			||||
	:copyright: (c) `date +%Y` by ${2:YOUR_NAME}. | 
				
			||||
	:license: ${3:LICENSE_NAME}, see LICENSE for more details. | 
				
			||||
""" | 
				
			||||
$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
# vim:ft=snippets: | 
				
			||||
@ -0,0 +1,178 @@
					 | 
				
			||||
priority -50 | 
				
			||||
 | 
				
			||||
global !p | 
				
			||||
import os | 
				
			||||
from vimsnippets import complete | 
				
			||||
 | 
				
			||||
FIELD_TYPES = [ | 
				
			||||
'character', | 
				
			||||
'data.frame', | 
				
			||||
'integer', | 
				
			||||
'list', | 
				
			||||
'logical', | 
				
			||||
'matrix', | 
				
			||||
'numeric', | 
				
			||||
'vector'] | 
				
			||||
endglobal | 
				
			||||
 | 
				
			||||
snippet #! "Hashbang for Rscript (#!)" b | 
				
			||||
#!/usr/bin/env Rscript | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet setwd "Set workingdir" b | 
				
			||||
setwd("${1:`!p snip.rv = os.getcwd()`}") | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet as "Apply type on variable" w | 
				
			||||
as.$1`!p snip.rv = complete(t[1], FIELD_TYPES)`($2${VISUAL}) | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet is "Test type on variable" w | 
				
			||||
is.$1`!p snip.rv = complete(t[1], FIELD_TYPES)`($2${VISUAL}) | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet dl "Download and install a package" b | 
				
			||||
download.file("${1:${VISUAL:url to package}}", destfile = "${2:${1/.*\/(\S*)$/(?1:$1)/ga}}") | 
				
			||||
install.packages("$2", type = "source", repos = NULL) | 
				
			||||
library("${3:${2/^(\w+)_.*$/(?1:$1)/ga}}") | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet lib "Import a library" | 
				
			||||
library(${0:package}) | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet req "Require a file" | 
				
			||||
require(${0:package}) | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet source "Source a file" | 
				
			||||
source('${0:file}') | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet if "If statement" | 
				
			||||
if ($1) { | 
				
			||||
	$0 | 
				
			||||
} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet eif "Else-If statement" | 
				
			||||
else if ($1) { | 
				
			||||
	$0 | 
				
			||||
} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet el "Else statement" | 
				
			||||
else { | 
				
			||||
	$0 | 
				
			||||
} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet ife "if .. else" | 
				
			||||
if ($1) { | 
				
			||||
	$2 | 
				
			||||
} else { | 
				
			||||
	$3 | 
				
			||||
} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet wh "while loop" | 
				
			||||
while($1) { | 
				
			||||
	$2 | 
				
			||||
} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet for "for loop" | 
				
			||||
for (${1:item} in ${2:list}) { | 
				
			||||
	$3 | 
				
			||||
} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet fun "Function definition" | 
				
			||||
${1:name} <- function ($2) { | 
				
			||||
	$0 | 
				
			||||
} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet ret "Return call" | 
				
			||||
return($0) | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet df "Data frame" | 
				
			||||
${1:name}[${2:rows}, ${0:cols}] | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet c "c function" | 
				
			||||
c(${0:items}) | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet li "list function" | 
				
			||||
list(${0:items}) | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet mat "matrix function" | 
				
			||||
matrix(${1:data}, nrow = ${2:rows}, ncol = ${0:cols}) | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet apply "apply function" | 
				
			||||
apply(${1:array}, ${2:margin}, ${0:function}) | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet lapply "lapply function" | 
				
			||||
lapply(${1:list}, ${0:function}) | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet sapply "sapply function" | 
				
			||||
sapply(${1:list}, ${0:function}) | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet vapply "vapply function" | 
				
			||||
vapply(${1:list}, ${2:function}, ${0:type}) | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet mapply "mapply function" | 
				
			||||
mapply(${1:function}, ${0:...}) | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet tapply "tapply function" | 
				
			||||
tapply(${1:vector}, ${2:index}, ${0:function}) | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet rapply "rapply function" | 
				
			||||
rapply(${1:list}, ${0:function}) | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet pl "Plot function" | 
				
			||||
plot(${1:x}, ${0:y}) | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet ggp "ggplot2 plot" | 
				
			||||
ggplot(${1:data}, aes(${0:aesthetics})) | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet fis "Fisher test" | 
				
			||||
fisher.test(${1:x}, ${0:y}) | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet chi "Chi Squared test" | 
				
			||||
chisq.test(${1:x}, ${0:y}) | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet tt "t-test" | 
				
			||||
t.test(${1:x}, ${0:y}) | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet wil "Wilcox test" | 
				
			||||
wilcox.test(${1:x}, ${0:y}) | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet cor "Correlation test" | 
				
			||||
cor.test(${1:x}, ${0:y}) | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet fte "FTE test" | 
				
			||||
var.test(${1:x}, ${0:y}) | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet kvt "KV test" | 
				
			||||
kv.test(${1:x}, ${0:y}) | 
				
			||||
endsnippet | 
				
			||||
@ -0,0 +1,894 @@
					 | 
				
			||||
priority -50 | 
				
			||||
 | 
				
			||||
snippet anaf "accepts_nested_attributes_for" | 
				
			||||
accepts_nested_attributes_for :${1:association_name}${2:${3:, :allow_destroy => true}${4:, :reject_if => proc \{ |obj| ${5:obj.blank?} \}}} | 
				
			||||
 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet tcbi "Create binary column" | 
				
			||||
t.binary :${1:title}${2:, :limit => ${3:2}.megabytes} | 
				
			||||
$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet tcb "Create boolean column" | 
				
			||||
t.boolean :${1:title} | 
				
			||||
$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet clac "Create controller class" | 
				
			||||
class ${1:Model}Controller < ApplicationController | 
				
			||||
	before_filter :find_${2:model} | 
				
			||||
 | 
				
			||||
	$0 | 
				
			||||
 | 
				
			||||
	private | 
				
			||||
	def find_$2 | 
				
			||||
		@$2 = ${3:$1}.find(params[:id]) if params[:id] | 
				
			||||
	end | 
				
			||||
end | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet tcda "Create date column" | 
				
			||||
t.date :${1:title} | 
				
			||||
$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet tcdt "Create datetime column" | 
				
			||||
t.datetime :${1:title} | 
				
			||||
$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet tcd "Create decimal column" | 
				
			||||
t.decimal :${1:title}${2:${3:, :precision => ${4:10}}${5:, :scale => ${6:2}}} | 
				
			||||
$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet tcf "Create float column" | 
				
			||||
t.float :${1:title} | 
				
			||||
$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet clact "Create functional test class" | 
				
			||||
require 'test_helper' | 
				
			||||
 | 
				
			||||
class ${1:Model}ControllerTest < ActionController::TestCase | 
				
			||||
	test$0 | 
				
			||||
end | 
				
			||||
 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet tci "Create integer column" | 
				
			||||
t.integer :${1:title} | 
				
			||||
$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet tcl "Create lock_version column" | 
				
			||||
t.integer :lock_version, :null => false, :default => 0 | 
				
			||||
$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
# FIXME: handling literal bracket pair inside of nested tab groups? | 
				
			||||
snippet tcr "Create references column" | 
				
			||||
t.references :${1:taggable}${2:, :polymorphic => ${3:{ :default => '${4:Photo}' \}}} | 
				
			||||
$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet resources "Create resources controller class" | 
				
			||||
class ${1:Model}sController < ApplicationController | 
				
			||||
	before_filter :find_${1/./\l$0/}, :only => [:show, :edit, :update, :destroy] | 
				
			||||
 | 
				
			||||
	# GET /${1/./\l$0/}s | 
				
			||||
	# GET /${1/./\l$0/}s.xml | 
				
			||||
	def index | 
				
			||||
		@${1/./\l$0/}s = ${1:Model}.all | 
				
			||||
 | 
				
			||||
		respond_to do |wants| | 
				
			||||
			wants.html # index.html.erb | 
				
			||||
			wants.xml  { render :xml => @${1/./\l$0/}s } | 
				
			||||
		end | 
				
			||||
	end | 
				
			||||
 | 
				
			||||
	# GET /${1/./\l$0/}s/1 | 
				
			||||
	# GET /${1/./\l$0/}s/1.xml | 
				
			||||
	def show | 
				
			||||
		respond_to do |wants| | 
				
			||||
			wants.html # show.html.erb | 
				
			||||
			wants.xml  { render :xml => @${1/./\l$0/} } | 
				
			||||
		end | 
				
			||||
	end | 
				
			||||
 | 
				
			||||
	# GET /${1/./\l$0/}s/new | 
				
			||||
	# GET /${1/./\l$0/}s/new.xml | 
				
			||||
	def new | 
				
			||||
		@${1/./\l$0/} = ${1:Model}.new | 
				
			||||
 | 
				
			||||
		respond_to do |wants| | 
				
			||||
			wants.html # new.html.erb | 
				
			||||
			wants.xml  { render :xml => @${1/./\l$0/} } | 
				
			||||
		end | 
				
			||||
	end | 
				
			||||
 | 
				
			||||
	# GET /${1/./\l$0/}s/1/edit | 
				
			||||
	def edit | 
				
			||||
	end | 
				
			||||
 | 
				
			||||
	# POST /${1/./\l$0/}s | 
				
			||||
	# POST /${1/./\l$0/}s.xml | 
				
			||||
	def create | 
				
			||||
		@${1/./\l$0/} = ${1:Model}.new(params[:${1/./\l$0/}]) | 
				
			||||
 | 
				
			||||
		respond_to do |wants| | 
				
			||||
			if @${1/./\l$0/}.save | 
				
			||||
				flash[:notice] = '${1:Model} was successfully created.' | 
				
			||||
				wants.html { redirect_to(@${1/./\l$0/}) } | 
				
			||||
				wants.xml  { render :xml => @${1/./\l$0/}, :status => :created, :location => @${1/./\l$0/} } | 
				
			||||
			else | 
				
			||||
				wants.html { render :action => "new" } | 
				
			||||
				wants.xml  { render :xml => @${1/./\l$0/}.errors, :status => :unprocessable_entity } | 
				
			||||
			end | 
				
			||||
		end | 
				
			||||
	end | 
				
			||||
 | 
				
			||||
	# PUT /${1/./\l$0/}s/1 | 
				
			||||
	# PUT /${1/./\l$0/}s/1.xml | 
				
			||||
	def update | 
				
			||||
		respond_to do |wants| | 
				
			||||
			if @${1/./\l$0/}.update(params[:${1/./\l$0/}]) | 
				
			||||
				flash[:notice] = '${1:Model} was successfully updated.' | 
				
			||||
				wants.html { redirect_to(@${1/./\l$0/}) } | 
				
			||||
				wants.xml  { head :ok } | 
				
			||||
			else | 
				
			||||
				wants.html { render :action => "edit" } | 
				
			||||
				wants.xml  { render :xml => @${1/./\l$0/}.errors, :status => :unprocessable_entity } | 
				
			||||
			end | 
				
			||||
		end | 
				
			||||
	end | 
				
			||||
 | 
				
			||||
	# DELETE /${1/./\l$0/}s/1 | 
				
			||||
	# DELETE /${1/./\l$0/}s/1.xml | 
				
			||||
	def destroy | 
				
			||||
		@${1/./\l$0/}.destroy | 
				
			||||
 | 
				
			||||
		respond_to do |wants| | 
				
			||||
			wants.html { redirect_to(${1/./\l$0/}s_url) } | 
				
			||||
			wants.xml  { head :ok } | 
				
			||||
		end | 
				
			||||
	end | 
				
			||||
 | 
				
			||||
	private | 
				
			||||
		def find_${1/./\l$0/} | 
				
			||||
			@${1/./\l$0/} = ${1:Model}.find(params[:id]) | 
				
			||||
		end | 
				
			||||
 | 
				
			||||
end | 
				
			||||
 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet tcs "Create string column" | 
				
			||||
t.string :${1:title} | 
				
			||||
$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet tct "Create text column" | 
				
			||||
t.text :${1:title} | 
				
			||||
$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet tcti "Create time column" | 
				
			||||
t.time :${1:title} | 
				
			||||
$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet tcts "Create timestamp column" | 
				
			||||
t.timestamp :${1:title} | 
				
			||||
$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet tctss "Create timestamps columns" | 
				
			||||
t.timestamps | 
				
			||||
$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet mcol "Migration Create Column (mcc)" | 
				
			||||
t.column ${1:title}, :${2:string} | 
				
			||||
$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet mccc "Migration Create Column Continue (mccc)" | 
				
			||||
t.column ${1:title}, :${2:string} | 
				
			||||
mccc$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet mtab "Migration Drop Create Table (mdct)" | 
				
			||||
drop_table :${1:table}${2: [press tab twice to generate create_table]} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet mcol "Migration Remove and Add Column (mrac)" | 
				
			||||
remove_column :${1:table}, :${2:column}${3: [press tab twice to generate add_column]} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet rdb "RAILS_DEFAULT_LOGGER.debug (rdb)" | 
				
			||||
RAILS_DEFAULT_LOGGER.debug "${1:message}"$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet tre "Table column(s) rename" | 
				
			||||
t.rename(:${1:old_column_name}, :${2:new_column_name}) | 
				
			||||
$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet art "Test Assert Redirected To (art)" | 
				
			||||
assert_redirected_to ${2::action => "${1:index}"} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet asre "Test Assert Response (are)" | 
				
			||||
assert_response :${1:success}, @response.body$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet aftc "after_create" | 
				
			||||
after_create $0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet aftd "after_destroy" | 
				
			||||
after_destroy $0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet afts "after_save" | 
				
			||||
after_save $0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet aftu "after_update" | 
				
			||||
after_update $0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet aftv "after_validation" | 
				
			||||
after_validation $0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet aftvoc "after_validation_on_create" | 
				
			||||
after_validation_on_create $0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet aftvou "after_validation_on_update" | 
				
			||||
after_validation_on_update $0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet asg "assert(var = assigns(:var))" | 
				
			||||
assert(${1:var} = assigns(:$1), "Cannot find @$1") | 
				
			||||
$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet asd "assert_difference" | 
				
			||||
assert_difference "${1:Model}.${2:count}", ${3:1} do | 
				
			||||
	$0 | 
				
			||||
end | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet asnd "assert_no_difference" | 
				
			||||
assert_no_difference "${1:Model}.${2:count}" do | 
				
			||||
	$0 | 
				
			||||
end | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet artnpp "assert_redirected_to (nested path plural)" | 
				
			||||
assert_redirected_to ${10:${2:parent}_${3:child}_path(${4:@}${5:$2})} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet artnp "assert_redirected_to (nested path)" | 
				
			||||
assert_redirected_to ${2:${12:parent}_${13:child}_path(${14:@}${15:$12}, ${16:@}${17:$13})} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet artpp "assert_redirected_to (path plural)" | 
				
			||||
assert_redirected_to ${10:${2:model}s_path} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet artp "assert_redirected_to (path)" | 
				
			||||
assert_redirected_to ${2:${12:model}_path(${13:@}${14:$12})} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet asrj "assert_rjs" | 
				
			||||
assert_rjs :${1:replace}, ${2:"${3:dom id}"} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet ass "assert_select" | 
				
			||||
assert_select '${1:path}'${2:, :${3:text} => ${4:'${5:inner_html}'}}${6: do | 
				
			||||
	$0 | 
				
			||||
end} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet befc "before_create" | 
				
			||||
before_create $0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet befd "before_destroy" | 
				
			||||
before_destroy $0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet befs "before_save" | 
				
			||||
before_save $0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet befu "before_update" | 
				
			||||
before_update $0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet befv "before_validation" | 
				
			||||
before_validation $0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet befvoc "before_validation_on_create" | 
				
			||||
before_validation_on_create $0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet befvou "before_validation_on_update" | 
				
			||||
before_validation_on_update | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet bt "belongs_to (bt)" | 
				
			||||
belongs_to :${1:object}${2:, :class_name => "${3:${1/[[:alpha:]]+|(_)/(?1::\u$0)/g}}", :foreign_key => "${4:$1_id}"} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet crw "cattr_accessor" | 
				
			||||
cattr_accessor :${0:attr_names} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet defcreate "def create - resource" | 
				
			||||
def create | 
				
			||||
	@${1:model} = ${2:${1/[[:alpha:]]+|(_)/(?1::\u$0)/g}}.new(params[:$1]) | 
				
			||||
	$0 | 
				
			||||
	respond_to do |wants| | 
				
			||||
		if @$1.save | 
				
			||||
			flash[:notice] = '$2 was successfully created.' | 
				
			||||
			wants.html { redirect_to(@$1) } | 
				
			||||
			wants.xml { render :xml => @$1, :status => :created, :location => @$1 } | 
				
			||||
		else | 
				
			||||
			wants.html { render :action => "new" } | 
				
			||||
			wants.xml { render :xml => @$1.errors, :status => :unprocessable_entity } | 
				
			||||
		end | 
				
			||||
	end | 
				
			||||
end | 
				
			||||
 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet test "test do..end" | 
				
			||||
test "${1:something interesting}" do | 
				
			||||
	$0 | 
				
			||||
end | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet deftg "def get request" | 
				
			||||
def test_should_get_${1:action} | 
				
			||||
	${2:@${3:model} = ${4:$3s}(:${5:fixture_name}) | 
				
			||||
	}get :$1${6:, :id => @$3.to_param} | 
				
			||||
	assert_response :success | 
				
			||||
	$0 | 
				
			||||
end | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet deftp "def post request" | 
				
			||||
def test_should_post_${1:action} | 
				
			||||
	${3:@$2 = ${4:$2s}(:${5:fixture_name}) | 
				
			||||
	}post :$1${6:, :id => @$2.to_param}, :${2:model} => { $0 } | 
				
			||||
	assert_response :redirect | 
				
			||||
 | 
				
			||||
end | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet fina "find(:all)" | 
				
			||||
find(:all${1:, :conditions => ['${2:${3:field} = ?}', ${5:true}]}) | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet finf "find(:first)" | 
				
			||||
find(:first${1:, :conditions => ['${2:${3:field} = ?}', ${5:true}]}) | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet fini "find(id)" | 
				
			||||
find(${1:id}) | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet fine "find_each" | 
				
			||||
find_each(${1::conditions => {:${2:field} => ${3:true}\}}) do |${4:${TM_CURRENT_WORD/(\w+)\./\L$1/g}}| | 
				
			||||
	$0 | 
				
			||||
end | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet finb "find_in_batches" | 
				
			||||
find_in_batches(${1::conditions => {:${2:field} => ${3:true}\}}) do |${4:${TM_CURRENT_WORD/(\w+)\./\L$1/g}}s| | 
				
			||||
	$4s.each do |$4| | 
				
			||||
		$0 | 
				
			||||
	end | 
				
			||||
end | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet habtm "has_and_belongs_to_many (habtm)" | 
				
			||||
has_and_belongs_to_many :${1:object}${2:, :join_table => "${3:table_name}", :foreign_key => "${4:$1_id}"} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet hm "has_many (hm)" | 
				
			||||
has_many :${1:object}s${2:, :class_name => "$1", :foreign_key => "${4:reference}_id"} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet hmt "has_many (through)" | 
				
			||||
has_many :${1:objects}, :through => :${2:join_association}${3:, :source => :${4:$2_table_foreign_key_to_$1_table}} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet hmd "has_many :dependent => :destroy" | 
				
			||||
has_many :${1:object}s${2:, :class_name => "$1", :foreign_key => "${4:reference}_id"}, :dependent => :destroy$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet ho "has_one (ho)" | 
				
			||||
has_one :${1:object}${2:, :class_name => "${3:${1/[[:alpha:]]+|(_)/(?1::\u$0)/g}}", :foreign_key => "${4:$1_id}"} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet logd "logger.debug" | 
				
			||||
${1:Rails.}logger.debug { "${1:message}" }$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet loge "logger.error" | 
				
			||||
logger.error { "${1:message}" }$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet logf "logger.fatal" | 
				
			||||
logger.fatal { "${1:message}" }$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet logi "logger.info" | 
				
			||||
logger.info { "${1:message}" }$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet logw "logger.warn" | 
				
			||||
logger.warn { "${1:message}" }$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet mp "map(&:sym_proc)" | 
				
			||||
map(&:${1:id}) | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet mapca "map.catch_all" | 
				
			||||
${1:map}.catch_all "*${2:anything}", :controller => "${3:default}", :action => "${4:error}" | 
				
			||||
 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet map "map.named_route" | 
				
			||||
${1:map}.${2:connect} '${3::controller/:action/:id}' | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet mapr "map.resource" | 
				
			||||
${1:map}.resource :${2:resource}${10: do |${11:$2}| | 
				
			||||
	$0 | 
				
			||||
end} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet maprs "map.resources" | 
				
			||||
${1:map}.resources :${2:resource}${10: do |${11:$2}| | 
				
			||||
	$0 | 
				
			||||
end} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet mapwo "map.with_options" | 
				
			||||
${1:map}.with_options :${2:controller} => '${3:thing}' do |${4:$3}| | 
				
			||||
	$0 | 
				
			||||
end | 
				
			||||
 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet mrw "mattr_accessor" | 
				
			||||
mattr_accessor :${0:attr_names} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet ncl "named_scope lambda" | 
				
			||||
named_scope :name, lambda { |${1:param}| { :conditions => ${3:['${4:${5:field} = ?}', ${6:$1}]} } } | 
				
			||||
 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet nc "named_scope" | 
				
			||||
named_scope :name${1:, :joins => :${2:table}}, :conditions => ${3:['${4:${5:field} = ?}', ${6:true}]} | 
				
			||||
 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet dscope "default_scope" | 
				
			||||
default_scope ${1:order(${2:'${3:created_at DESC}'})} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet flash "flash[...]" | 
				
			||||
flash[:${1:notice}] = "${2:Successfully created...}"$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet rea "redirect_to (action)" | 
				
			||||
redirect_to :action => "${1:index}" | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet reai "redirect_to (action, id)" | 
				
			||||
redirect_to :action => "${1:show}", :id => ${0:@item} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet rec "redirect_to (controller)" | 
				
			||||
redirect_to :controller => "${1:items}" | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet reca "redirect_to (controller, action)" | 
				
			||||
redirect_to :controller => "${1:items}", :action => "${2:list}" | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet recai "redirect_to (controller, action, id)" | 
				
			||||
redirect_to :controller => "${1:items}", :action => "${2:show}", :id => ${0:@item} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet renpp "redirect_to (nested path plural)" | 
				
			||||
redirect_to(${2:${10:parent}_${11:child}_path(${12:@}${13:$10})}) | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet renp "redirect_to (nested path)" | 
				
			||||
redirect_to(${2:${12:parent}_${13:child}_path(${14:@}${15:$12}, ${16:@}${17:$13})}) | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet repp "redirect_to (path plural)" | 
				
			||||
redirect_to(${2:${10:model}s_path}) | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet rep "redirect_to (path)" | 
				
			||||
redirect_to(${2:${12:model}_path(${13:@}${14:$12})}) | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet reb "redirect_to :back" | 
				
			||||
redirect_to :back | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet ra "render (action)... (ra)" | 
				
			||||
render :action => "${1:action}" | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet ral "render (action,layout) (ral)" | 
				
			||||
render :action => "${1:action}", :layout => "${2:layoutname}" | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet rf "render (file) (rf)" | 
				
			||||
render :file => "${1:filepath}" | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet rfu "render (file,use_full_path) (rfu)" | 
				
			||||
render :file => "${1:filepath}", :use_full_path => ${2:false} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet ri "render (inline) (ri)" | 
				
			||||
render :inline => "${1:<%= 'hello' %>}" | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet ril "render (inline,locals) (ril)" | 
				
			||||
render :inline => "${1:<%= 'hello' %>}", :locals => { ${2::name} => "${3:value}"$4 } | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet rit "render (inline,type) (rit)" | 
				
			||||
render :inline => "${1:<%= 'hello' %>}", :type => ${2::rxml} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet rl "render (layout) (rl)" | 
				
			||||
render :layout => "${1:layoutname}" | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet rn "render (nothing) (rn)" | 
				
			||||
render :nothing => ${1:true} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet rns "render (nothing,status) (rns)" | 
				
			||||
render :nothing => ${1:true}, :status => ${2:401} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet rt "render (text) (rt)" | 
				
			||||
render :text => "${1:text to render...}" | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet rtl "render (text,layout) (rtl)" | 
				
			||||
render :text => "${1:text to render...}", :layout => "${2:layoutname}" | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet rtlt "render (text,layout => true) (rtlt)" | 
				
			||||
render :text => "${1:text to render...}", :layout => ${2:true} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet rts "render (text,status) (rts)" | 
				
			||||
render :text => "${1:text to render...}", :status => ${2:401} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet ru "render (update)" | 
				
			||||
render :update do |${2:page}| | 
				
			||||
	$2.$0 | 
				
			||||
end | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet rest "respond_to" | 
				
			||||
respond_to do |wants| | 
				
			||||
	wants.${1:html}${2: { $0 \}} | 
				
			||||
end | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
# FIXME | 
				
			||||
snippet returning "returning do |variable| ... end" | 
				
			||||
returning ${1:variable} do${2/(^(?<var>\s*[a-z_][a-zA-Z0-9_]*\s*)(,\g<var>)*,?\s*$)|.*/(?1: |)/}${2:v}${2/(^(?<var>\s*[a-z_][a-zA-Z0-9_]*\s*)(,\g<var>)*,?\s*$)|.*/(?1:|)/} | 
				
			||||
	$0 | 
				
			||||
end | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet t. "t.binary (tcbi)" | 
				
			||||
t.binary :${1:title}${2:, :limit => ${3:2}.megabytes} | 
				
			||||
t.$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet t. "t.boolean (tcb)" | 
				
			||||
t.boolean :${1:title} | 
				
			||||
t.$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet t. "t.date (tcda)" | 
				
			||||
t.date :${1:title} | 
				
			||||
t.$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet t. "t.datetime (tcdt)" | 
				
			||||
t.datetime :${1:title} | 
				
			||||
t.$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet t. "t.decimal (tcd)" | 
				
			||||
t.decimal :${1:title}${2:${3:, :precision => ${4:10}}${5:, :scale => ${6:2}}} | 
				
			||||
t.$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet t. "t.float (tcf)" | 
				
			||||
t.float :${1:title} | 
				
			||||
t.$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet t. "t.integer (tci)" | 
				
			||||
t.integer :${1:title} | 
				
			||||
t.$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet t. "t.lock_version (tcl)" | 
				
			||||
t.integer :lock_version, :null => false, :default => 0 | 
				
			||||
t.$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet t. "t.references (tcr)" | 
				
			||||
t.references :${1:taggable}${2:, :polymorphic => ${3:{ :default => '${4:Photo}' \}}} | 
				
			||||
t.$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet t. "t.rename (tre)" | 
				
			||||
t.rename(:${1:old_column_name}, :${2:new_column_name}) | 
				
			||||
t.$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet t. "t.string (tcs)" | 
				
			||||
t.string :${1:title} | 
				
			||||
t.$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet t. "t.text (tct)" | 
				
			||||
t.text :${1:title} | 
				
			||||
t.$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet t. "t.time (tcti)" | 
				
			||||
t.time :${1:title} | 
				
			||||
t.$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet t. "t.timestamp (tcts)" | 
				
			||||
t.timestamp :${1:title} | 
				
			||||
t.$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet t. "t.timestamps (tctss)" | 
				
			||||
t.timestamps | 
				
			||||
t.$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet vaoif "validates_acceptance_of if" | 
				
			||||
validates_acceptance_of :${1:terms}${2:${3:, :accept => "${4:1}"}${5:, :message => "${6:You must accept the terms of service}"}}, :if => proc { |obj| ${7:obj.condition?} }} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet vao "validates_acceptance_of" | 
				
			||||
validates_acceptance_of :${1:terms}${2:${3:, :accept => "${4:1}"}${5:, :message => "${6:You must accept the terms of service}"}} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet va "validates_associated (va)" | 
				
			||||
validates_associated :${1:attribute}${2:, :on => :${3:create}} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet vaif "validates_associated if (vaif)" | 
				
			||||
validates_associated :${1:attribute}${2:, :on => :${3:create}, :if => proc { |obj| ${5:obj.condition?} }} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet vc "validates_confirmation_of (vc)" | 
				
			||||
validates_confirmation_of :${1:attribute}${2:, :on => :${3:create}, :message => "${4:should match confirmation}"} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet vcif "validates_confirmation_of if (vcif)" | 
				
			||||
validates_confirmation_of :${1:attribute}${2:, :on => :${3:create}, :message => "${4:should match confirmation}", :if => proc { |obj| ${5:obj.condition?} }} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet ve "validates_exclusion_of (ve)" | 
				
			||||
validates_exclusion_of :${1:attribute}${2:, :in => ${3:%w( ${4:mov avi} )}, :on => :${5:create}, :message => "${6:extension %s is not allowed}"} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet veif "validates_exclusion_of if (veif)" | 
				
			||||
validates_exclusion_of :${1:attribute}${2:, :in => ${3:%w( ${4:mov avi} )}, :on => :${5:create}, :message => "${6:extension %s is not allowed}"}, :if => proc { |obj| ${7:obj.condition?} }} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet vfif "validates_format_of if" | 
				
			||||
validates_format_of :${1:attribute}, :with => /${2:^[${3:\w\d}]+\$}/${4:, :on => :${5:create}, :message => "${6:is invalid}"}, :if => proc { |obj| ${7:obj.condition?} }} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet vf "validates_format_of" | 
				
			||||
validates_format_of :${1:attribute}, :with => /${2:^[${3:\w\d}]+\$}/${4:, :on => :${5:create}, :message => "${6:is invalid}"} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet viif "validates_inclusion_of if" | 
				
			||||
validates_inclusion_of :${1:attribute}${2:, :in => ${3:%w( ${4:mov avi} )}, :on => :${5:create}, :message => "${6:extension %s is not included in the list}"}, :if => proc { |obj| ${7:obj.condition?} }} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet vi "validates_inclusion_of" | 
				
			||||
validates_inclusion_of :${1:attribute}${2:, :in => ${3:%w( ${4:mov avi} )}, :on => :${5:create}, :message => "${6:extension %s is not included in the list}"} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet vl "validates_length_of (vl)" | 
				
			||||
validates_length_of :${1:attribute}, :within => ${2:3..20}${3:, :on => :${4:create}, :message => "${5:must be present}"} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet vlif "validates_length_of if" | 
				
			||||
validates_length_of :${1:attribute}, :within => ${2:3..20}${3:, :on => :${4:create}, :message => "${5:must be present}"}, :if => proc { |obj| ${6:obj.condition?} }} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet vnif "validates_numericality_of if" | 
				
			||||
validates_numericality_of :${1:attribute}${2:, :on => :${3:create}, :message => "${4:is not a number}"}, :if => proc { |obj| ${5:obj.condition?} }} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet vn "validates_numericality_of" | 
				
			||||
validates_numericality_of :${1:attribute}${2:, :on => :${3:create}, :message => "${4:is not a number}"} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet vp "validates_presence_of (vp)" | 
				
			||||
validates_presence_of :${1:attribute}${2:, :on => :${3:create}, :message => "${4:can't be blank}"} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet vpif "validates_presence_of if (vpif) 2" | 
				
			||||
validates_presence_of :${1:attribute}${2:, :on => :${3:create}, :message => "${4:can't be blank}"}, :if => proc { |obj| ${5:obj.condition?} }} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet vu "validates_uniqueness_of (vu)" | 
				
			||||
validates_uniqueness_of :${1:attribute}${2:, :on => :${3:create}, :message => "${4:must be unique}"} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet vuif "validates_uniqueness_of if (vuif)" | 
				
			||||
validates_uniqueness_of :${1:attribute}${2:, :on => :${3:create}, :message => "${4:must be unique}", :if => proc { |obj| ${6:obj.condition?} }} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet verify "verify -- render" | 
				
			||||
verify :only => [:$1], :method => :post, :render => {:status => 500, :text => "use HTTP-POST"} | 
				
			||||
 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet verify "verify -- redirect" | 
				
			||||
verify :only => [:$1], :session => :user, :params => :id, :redirect_to => {:action => '${2:index}'} | 
				
			||||
 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet wants "wants_format" | 
				
			||||
wants.${1:js|xml|html}${2: { $0 \}} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet xdelete "xhr delete" | 
				
			||||
xhr :delete, :${1:destroy}, :id => ${2:1}$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet xget "xhr get" | 
				
			||||
xhr :get, :${1:show}${2:, :id => ${3:1}}$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet xpost "xhr post" | 
				
			||||
xhr :post, :${1:create}, :${2:object} => { $3 } | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet xput "xhr put" | 
				
			||||
xhr :put, :${1:update}, :id => ${2:1}, :${3:object} => { $4 }$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet sweeper "Create sweeper class" | 
				
			||||
class ${1:Model}Sweeper < ActionController::Caching::Sweeper | 
				
			||||
	observe ${1:Model} | 
				
			||||
 | 
				
			||||
	def after_save(${1/./\l$0/}) | 
				
			||||
		expire_cache(${1/./\l$0/}) | 
				
			||||
	end | 
				
			||||
 | 
				
			||||
	def after_destroy(${1/./\l$0/}) | 
				
			||||
		expire_cache(${1/./\l$0/}) | 
				
			||||
	end | 
				
			||||
 | 
				
			||||
	private | 
				
			||||
 | 
				
			||||
		def expire_cache(${1/./\l$0/}) | 
				
			||||
			${0:expire_page ${1/./\l$0/}s_path | 
				
			||||
			expire_page ${1/./\l$0/}_path(${1/./\l$0/})} | 
				
			||||
		end | 
				
			||||
 | 
				
			||||
end | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet col "collection routes" | 
				
			||||
collection do | 
				
			||||
	${1:get :${2:action}} | 
				
			||||
	${3:put :${4:action}} | 
				
			||||
	${5:post :${6:action}} | 
				
			||||
	${7:delete :${8:action}} | 
				
			||||
end | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet format "format (respond_with)" | 
				
			||||
format.${1:html|xml|json|js|any} { $0 } | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet gem "gem" | 
				
			||||
gem '${1:name}'${2:${3:, "${4:1.0}"}${5:${6:, :require => ${7:"${8:$1}"}}${9:, :group => :${10:test}}}} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet gemg "gem :git" | 
				
			||||
gem '${1:paperclip}', :git => "${2:git://github.com/thoughtbot/paperclip.git}"${3:, :branch => "${4:rails3}"} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet match "match" | 
				
			||||
match '${1:${2::controller}${3:/${4::action}${5:/${6::id}${7:(.:format)}}}}'${8: => '${9:$2}#${10:$4}'${11:, :as => :${12:$10}}} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet member "member routes" | 
				
			||||
member do | 
				
			||||
	${1:get :${2:action}} | 
				
			||||
	${3:put :${4:action}} | 
				
			||||
	${5:post :${6:action}} | 
				
			||||
	${7:delete :${8:action}} | 
				
			||||
end | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet res "resources" | 
				
			||||
resources :${1:posts}${2: do | 
				
			||||
	$3 | 
				
			||||
end} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet scope "scope" | 
				
			||||
scope :${1:name}, ${2:joins(:${3:table}).}where(${4:'${5:$3.${6:field}} = ?', ${7:'${8:value}'}}) | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet scopel "scope lambda" | 
				
			||||
scope :${1:name}, lambda { |${2:param}| ${3:where(${4::${5:field} => ${6:"${7:value}"}})} } | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet scopee "scope with extension" | 
				
			||||
scope :${1:name}, ${2:where(${3::${4:field} => ${5:'${6:value}'}})} do | 
				
			||||
	def ${7:method_name} | 
				
			||||
		$0 | 
				
			||||
	end | 
				
			||||
end | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet sb "scoped_by" | 
				
			||||
scoped_by_${1:attribute}(${2:id}) | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet setup "setup do..end" | 
				
			||||
setup do | 
				
			||||
	$0 | 
				
			||||
end | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet trans "Translation snippet" | 
				
			||||
I18n.t('`!v substitute(substitute(substitute(@%, substitute(getcwd() . "/", "\/", "\\\\/", "g"), "", ""), "\\(\\.\\(html\\|js\\)\\.\\(haml\\|erb\\)\\|\\(_controller\\)\\?\\.rb\\)$", "", ""), "/", ".", "g")`.${2:${1/[^\w]/_/g}}$3', :default => "${1:some_text}"$4)${5:$0} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet route_spec | 
				
			||||
it 'routes to #${1:action}' do | 
				
			||||
	${2:get}('/${3:url}').should route_to('`!v substitute(expand('%:t:r'), '_routing_spec$', '', '')`#$1'${4:, ${5:params}})$6 | 
				
			||||
end | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
# vim:ft=snippets: | 
				
			||||
@ -0,0 +1,329 @@
					 | 
				
			||||
priority -50 | 
				
			||||
 | 
				
			||||
# | 
				
			||||
# Global functions | 
				
			||||
# | 
				
			||||
 | 
				
			||||
global !p | 
				
			||||
 | 
				
			||||
def write_instance_vars(arglist, snip): | 
				
			||||
	args = str(arglist).split(',') | 
				
			||||
	for arg in args: | 
				
			||||
		name = arg.strip().replace(':', ' ').split(' ', 1)[0] | 
				
			||||
		if name: | 
				
			||||
			snip += '  @{} = {}'.format(name, name) | 
				
			||||
		else: | 
				
			||||
			snip += '' | 
				
			||||
 | 
				
			||||
endglobal | 
				
			||||
 | 
				
			||||
# | 
				
			||||
# Snippets | 
				
			||||
# | 
				
			||||
 | 
				
			||||
snippet "^#!" "#!/usr/bin/env ruby" r | 
				
			||||
#!/usr/bin/env ruby | 
				
			||||
$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet "^# ?[uU][tT][fF]-?8" "# encoding: UTF-8" r | 
				
			||||
# encoding: UTF-8 | 
				
			||||
$0 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet "\b(de)?f" "def <name>..." r | 
				
			||||
def ${1:function_name}${2:(${3:*args})} | 
				
			||||
	$0 | 
				
			||||
end | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet defi "def initialize ..." | 
				
			||||
def initialize($1)`!p write_instance_vars(t[1],snip)`$0 | 
				
			||||
end | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet defr "def <name> ... rescue ..." | 
				
			||||
def ${1:function_name}${2:(${3:*args})} | 
				
			||||
	$4 | 
				
			||||
rescue | 
				
			||||
	$0 | 
				
			||||
end | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet For "(<from>..<to>).each { |<i>| <block> }" | 
				
			||||
(${1:from}..${2:to}).each { |${3:i}| $0 } | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet "(\S+)\.Merge!" ".merge!(<other_hash>) { |<key>,<oldval>,<newval>| <block> }" r | 
				
			||||
`!p snip.rv=match.group(1)`.merge!(${1:other_hash}) { |${2:key},${3:oldval},${4:newval}| ${5:block} } | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet "(\S+)\.merge!" ".merge!(<other_hash>) do |<key>,<oldval>,<newval>| <block> end" r | 
				
			||||
`!p snip.rv=match.group(1)`.merge!(${1:other_hash}) do |${2:key},${3:oldval},${4:newval}| | 
				
			||||
	${0:block} | 
				
			||||
end | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet "(\S+)\.Del(ete)?_?if" ".delete_if { |<key>,<value>| <block> }" r | 
				
			||||
`!p snip.rv=match.group(1)`.delete_if { |${1:key},${2:value}| $0 } | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet "(\S+)\.del(ete)?_?if" ".delete_if do |<key>,<value>| <block> end" r | 
				
			||||
`!p snip.rv=match.group(1)`.delete_if do |${1:key},${2:value}| | 
				
			||||
	$0 | 
				
			||||
end | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet "(\S+)\.Keep_?if" ".keep_if { |<key>,<value>| <block> }" r | 
				
			||||
`!p snip.rv=match.group(1)`.keep_if { |${1:key},${2:value}| $0 } | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet "(\S+)\.keep_?if" ".keep_if do <key>,<value>| <block> end" r | 
				
			||||
`!p snip.rv=match.group(1)`.keep_if do |${1:key},${2:value}| | 
				
			||||
	$0 | 
				
			||||
end | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet "(\S+)\.Reject" ".reject { |<key>,<value>| <block> }" r | 
				
			||||
`!p snip.rv=match.group(1)`.reject { |${1:key},${2:value}| $0 } | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet "(\S+)\.reject" ".reject do <key>,<value>| <block> end" r | 
				
			||||
`!p snip.rv=match.group(1)`.reject do |${1:key},${2:value}| | 
				
			||||
	$0 | 
				
			||||
end | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet "(\S+)\.Select" ".select { |<item>| <block>}" r | 
				
			||||
`!p snip.rv=match.group(1)`.select { |${1:item}| ${2:block} } | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet "(\S+)\.select" ".select do |<item>| <block> end" r | 
				
			||||
`!p snip.rv=match.group(1)`.select do |${1:item}| | 
				
			||||
	${0:block} | 
				
			||||
end | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet "(\S+)\.Sort" ".sort { |<a>,<b>| <block> }" r | 
				
			||||
`!p snip.rv=match.group(1)`.sort { |${1:a},${2:b}| $0 } | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet "(\S+)\.sort" ".sort do |<a>,<b>| <block> end" r | 
				
			||||
`!p snip.rv=match.group(1)`.sort do |${1:a},${2:b}| | 
				
			||||
	$0 | 
				
			||||
end | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet "(\S+)\.Each_?k(ey)?" ".each_key { |<key>| <block> }" r | 
				
			||||
`!p snip.rv=match.group(1)`.each_key { |${1:key}| $0 } | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet "(\S+)\.each_?k(ey)?" ".each_key do |key| <block> end" r | 
				
			||||
`!p snip.rv=match.group(1)`.each_key do |${1:key}| | 
				
			||||
	$0 | 
				
			||||
end | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet "(\S+)\.Each_?val(ue)?" ".each_value { |<value>| <block> }" r | 
				
			||||
`!p snip.rv=match.group(1)`.each_value { |${1:value}| $0 } | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet "(\S+)\.each_?val(ue)?" ".each_value do |<value>| <block> end" r | 
				
			||||
`!p snip.rv=match.group(1)`.each_value do |${1:value}| | 
				
			||||
	$0 | 
				
			||||
end | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet "(\S+)\.ea" "<elements>.each do |<element>| <block> end" r | 
				
			||||
`!p snip.rv=match.group(1)`.each { |${1:e}| $0 } | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet "(\S+)\.ead" "<elements>.each do |<element>| <block> end" r | 
				
			||||
`!p snip.rv=match.group(1)`.each do |${1:e}| | 
				
			||||
	$0 | 
				
			||||
end | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet "each_?s(lice)?" "<array>.each_slice(n) do |slice| <block> end" r | 
				
			||||
${1:elements}.each_slice(${2:2}) do |${3:slice}| | 
				
			||||
	$0 | 
				
			||||
end | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet "Each_?s(lice)?" "<array>.each_slice(n) { |slice| <block> }" r | 
				
			||||
${1:elements}.each_slice(${2:2}) { |${3:slice}| $0 } | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet "(\S+)\.Map" ".map { |<element>| <block> }" r | 
				
			||||
`!p snip.rv=match.group(1)`.map { |${1:`!p | 
				
			||||
element_name = match.group(1).lstrip('$@') | 
				
			||||
ematch = re.search("([A-Za-z][A-Za-z0-9_]+?)s?[^A-Za-z0-9_]*?$", element_name) | 
				
			||||
try: | 
				
			||||
	wmatch = re.search("([A-Za-z][A-Za-z0-9_]+)$", ematch.group(1)) | 
				
			||||
	snip.rv = wmatch.group(1).lower() | 
				
			||||
except: | 
				
			||||
	snip.rv = 'element' | 
				
			||||
`}| $0 } | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet "(\S+)\.map" ".map do |<element>| <block> end" r | 
				
			||||
`!p snip.rv=match.group(1)`.map do |${1:`!p | 
				
			||||
element_name = match.group(1).lstrip('$@') | 
				
			||||
ematch = re.search("([A-Za-z][A-Za-z0-9_]+?)s?[^A-Za-z0-9_]*?$", element_name) | 
				
			||||
try: | 
				
			||||
	wmatch = re.search("([A-Za-z][A-Za-z0-9_]+)$", ematch.group(1)) | 
				
			||||
	snip.rv = wmatch.group(1).lower() | 
				
			||||
except: | 
				
			||||
	snip.rv = 'element' | 
				
			||||
`}| | 
				
			||||
	$0 | 
				
			||||
end | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet "(\S+)\.Rev(erse)?_?each" ".reverse_each { |<element>| <block> }" r | 
				
			||||
`!p snip.rv=match.group(1)`.reverse_each { |${1:`!p | 
				
			||||
element_name = match.group(1).lstrip('$@') | 
				
			||||
ematch = re.search("([A-Za-z][A-Za-z0-9_]+?)s?[^A-Za-z0-9_]*?$", element_name) | 
				
			||||
try: | 
				
			||||
	wmatch = re.search("([A-Za-z][A-Za-z0-9_]+)$", ematch.group(1)) | 
				
			||||
	snip.rv = wmatch.group(1).lower() | 
				
			||||
except: | 
				
			||||
	snip.rv = 'element' | 
				
			||||
`}| $0 } | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet "(\S+)\.rev(erse)?_?each" ".reverse_each do |<element>| <block> end" r | 
				
			||||
`!p snip.rv=match.group(1)`.reverse_each do |${1:`!p | 
				
			||||
element_name = match.group(1).lstrip('$@') | 
				
			||||
ematch = re.search("([A-Za-z][A-Za-z0-9_]+?)s?[^A-Za-z0-9_]*?$", element_name) | 
				
			||||
try: | 
				
			||||
	wmatch = re.search("([A-Za-z][A-Za-z0-9_]+)$", ematch.group(1)) | 
				
			||||
	snip.rv = wmatch.group(1).lower() | 
				
			||||
except: | 
				
			||||
	snip.rv = 'element' | 
				
			||||
`}| | 
				
			||||
	$0 | 
				
			||||
end | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet "(\S+)\.Each" ".each { |<element>| <block> }" r | 
				
			||||
`!p snip.rv=match.group(1)`.each { |${1:`!p | 
				
			||||
element_name = match.group(1).lstrip('$@') | 
				
			||||
ematch = re.search("([A-Za-z][A-Za-z0-9_]+?)s?[^A-Za-z0-9_]*?$", element_name) | 
				
			||||
try: | 
				
			||||
	wmatch = re.search("([A-Za-z][A-Za-z0-9_]+)$", ematch.group(1)) | 
				
			||||
	snip.rv = wmatch.group(1).lower() | 
				
			||||
except: | 
				
			||||
	snip.rv = 'element' | 
				
			||||
`}| $0 } | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet "(\S+)\.each" ".each do |<element>| <block> end" r | 
				
			||||
`!p snip.rv=match.group(1)`.each do |${1:`!p | 
				
			||||
element_name = match.group(1).lstrip('$@') | 
				
			||||
ematch = re.search("([A-Za-z][A-Za-z0-9_]+?)s?[^A-Za-z0-9_]*?$", element_name) | 
				
			||||
try: | 
				
			||||
	wmatch = re.search("([A-Za-z][A-Za-z0-9_]+)$", ematch.group(1)) | 
				
			||||
	snip.rv = wmatch.group(1).lower() | 
				
			||||
except: | 
				
			||||
	snip.rv = 'element' | 
				
			||||
`}| | 
				
			||||
	$0 | 
				
			||||
end | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet "(\S+)\.Each_?p(air)?"  ".each_pair { |<key>,<value>| <block> }" r | 
				
			||||
`!p snip.rv=match.group(1)`.each_pair { |${1:key},${2:value}| $0 } | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet "(\S+)\.each_?p(air)?" ".each_pair do |<key>,<value>| <block> end" r | 
				
			||||
`!p snip.rv=match.group(1)`.each_pair do |${1:key},${2:value}| | 
				
			||||
	$0 | 
				
			||||
end | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet "(\S+)\.sub" ".sub(<expression>) { <block> }" r | 
				
			||||
`!p snip.rv=match.group(1)`.sub(${1:expression}) { ${2:"replace_with"} } | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet "(\S+)\.gsub" ".gsub(<expression>) { <block> }" r | 
				
			||||
`!p snip.rv=match.group(1)`.gsub(${1:expression}) { ${2:"replace_with"} } | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet "(\S+)\.index" ".index { |item| <block> }" r | 
				
			||||
`!p snip.rv=match.group(1)`.index { |${1:item}| ${2:block} } | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet "(\S+)\.Index" ".index do |item| ... end" r | 
				
			||||
`!p snip.rv=match.group(1)`.index do |${1:item}| | 
				
			||||
	${0:block} | 
				
			||||
end | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet until "until <expression> ... end" | 
				
			||||
until ${1:expression} | 
				
			||||
	$0 | 
				
			||||
end | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet Until "begin ... end until <expression>" | 
				
			||||
begin | 
				
			||||
	$0 | 
				
			||||
end until ${1:expression} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet while "while <expression> ... end" | 
				
			||||
while ${1:expression} | 
				
			||||
	$0 | 
				
			||||
end | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet While "begin ... end while <expression>" | 
				
			||||
begin | 
				
			||||
	$0 | 
				
			||||
end while ${1:expression} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet begin "begin ... rescue ... end" | 
				
			||||
begin | 
				
			||||
	$1 | 
				
			||||
rescue | 
				
			||||
	$0 | 
				
			||||
end | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet rescue | 
				
			||||
rescue Exception => e | 
				
			||||
	puts e.message | 
				
			||||
	puts e.backtrace.inspect | 
				
			||||
	${0:# Rescue} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet "\b(case|sw(itch)?)" "case <variable> when <expression> ... end" r | 
				
			||||
case ${1:variable} | 
				
			||||
when ${2:expression} | 
				
			||||
$0 | 
				
			||||
end | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet class "class <class_name> def initialize ... end end" | 
				
			||||
class ${1:class_name} | 
				
			||||
	def initialize(${2:*args}) | 
				
			||||
		$0 | 
				
			||||
	end | 
				
			||||
end | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet module "module" | 
				
			||||
module ${1:module_name} | 
				
			||||
	$0 | 
				
			||||
end | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet ### | 
				
			||||
=begin | 
				
			||||
	$0 | 
				
			||||
=end | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
# vim: set ts=2 sw=2 expandtab: | 
				
			||||
@ -0,0 +1,106 @@
					 | 
				
			||||
####################################################################### | 
				
			||||
#                            Rust Snippets                            # | 
				
			||||
####################################################################### | 
				
			||||
 | 
				
			||||
priority -50 | 
				
			||||
 | 
				
			||||
snippet let "let variable declaration" b | 
				
			||||
let ${1:name}${2:: ${3:type}} = $4; | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet letm "let mut variable declaration" b | 
				
			||||
let mut ${1:name}${2:: ${3:type}} = $4; | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet fn "A function, optionally with arguments and return type." | 
				
			||||
fn ${1:function_name}($2)${3/..*/ -> /}$3 { | 
				
			||||
	${VISUAL}$0 | 
				
			||||
} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet pfn "A public function, optionally with arguments and return type." | 
				
			||||
pub fn ${1:function_name}($2)${3/..*/ -> /}$3 { | 
				
			||||
	${VISUAL}$0 | 
				
			||||
} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet arg "Function Arguments" i | 
				
			||||
${1:a}: ${2:T}${3:, arg} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet || "Closure, anonymous function (inline)" i | 
				
			||||
${1:move }|$2| { $3 } | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet |} "Closure, anonymous function (block)" i | 
				
			||||
${1:move }|$2| { | 
				
			||||
	$3 | 
				
			||||
} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet pri "print!(..)" b | 
				
			||||
print!("$1"${2/..*/, /}$2); | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet pln "println!(..)" b | 
				
			||||
println!("$1"${2/..*/, /}$2); | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet fmt "format!(..)" | 
				
			||||
format!("$1"${2/..*/, /}$2); | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet macro "macro_rules!" b | 
				
			||||
macro_rules! ${1:name} { | 
				
			||||
	(${2:matcher}) => ( | 
				
			||||
		$3 | 
				
			||||
	) | 
				
			||||
} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet mod "A module" b | 
				
			||||
mod ${1:`!p snip.rv = snip.basename.lower() or "name"`} { | 
				
			||||
	${VISUAL}$0 | 
				
			||||
} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet for "for .. in .." b | 
				
			||||
for ${1:i} in $2 { | 
				
			||||
	${VISUAL}$0 | 
				
			||||
} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet todo "A Todo comment" | 
				
			||||
// [TODO]: ${1:Description} - `!v strftime("%Y-%m-%d %I:%M%P")` | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet st "Struct" b | 
				
			||||
struct ${1:`!p snip.rv = snip.basename.title() or "Name"`} { | 
				
			||||
	${VISUAL}$0 | 
				
			||||
} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
# TODO: fancy dynamic field mirroring like Python slotclass | 
				
			||||
snippet stn "Struct with new constructor." b | 
				
			||||
pub struct ${1:`!p snip.rv = snip.basename.title() or "Name"`} { | 
				
			||||
	fd$0 | 
				
			||||
} | 
				
			||||
 | 
				
			||||
impl $1 { | 
				
			||||
	pub fn new($2) -> $1 { | 
				
			||||
		$1 { $3 } | 
				
			||||
	} | 
				
			||||
} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet fd "Struct field definition" w | 
				
			||||
${1:name}: ${2:Type}, | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet impl "Struct/Trait implementation" b | 
				
			||||
impl ${1:Type/Trait}${2: for ${3:Type}} { | 
				
			||||
	$0 | 
				
			||||
} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
# vim:ft=snippets: | 
				
			||||
@ -0,0 +1,99 @@
					 | 
				
			||||
priority -50 | 
				
			||||
 | 
				
			||||
global !p | 
				
			||||
import vim | 
				
			||||
 | 
				
			||||
# Tests for the existence of a variable declared by Vim's filetype detection | 
				
			||||
# suggesting the type of shell script of the current file | 
				
			||||
def testShell(scope, shell): | 
				
			||||
	return vim.eval("exists('" + scope + ":is_" + shell + "')") | 
				
			||||
 | 
				
			||||
# Loops over the possible variables, checking for global variables | 
				
			||||
# first since they indicate an override by the user. | 
				
			||||
def getShell(): | 
				
			||||
	for scope in ["g", "b"]: | 
				
			||||
		for shell in ["bash", "posix", "sh", "kornshell"]: | 
				
			||||
			if testShell(scope, shell) == "1": | 
				
			||||
				if shell == "kornshell": | 
				
			||||
					return "ksh" | 
				
			||||
				if shell == "posix": | 
				
			||||
					return "sh" | 
				
			||||
				return shell | 
				
			||||
	return "sh" | 
				
			||||
endglobal | 
				
			||||
 | 
				
			||||
########################################################################### | 
				
			||||
#                            TextMate Snippets                            # | 
				
			||||
########################################################################### | 
				
			||||
snippet #! | 
				
			||||
`!p snip.rv = '#!/bin/' + getShell() + "\n\n" ` | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet !env "#!/usr/bin/env (!env)" | 
				
			||||
`!p snip.rv = '#!/usr/bin/env ' + getShell() + "\n\n" ` | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet sbash "safe bash options" | 
				
			||||
#!/usr/bin/env bash | 
				
			||||
set -euo pipefail | 
				
			||||
IFS=$'\n\t' | 
				
			||||
`!p snip.rv ='\n\n' ` | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet temp "Tempfile" | 
				
			||||
${1:TMPFILE}="$(mktemp -t ${2:`!p | 
				
			||||
snip.rv = re.sub(r'[^a-zA-Z]', '_', snip.fn) or "untitled" | 
				
			||||
`})" | 
				
			||||
${3:${4/(.+)/trap "/}${4:rm -f '$${1/.*\s//}'}${4/(.+)/" 0               # EXIT\n/}${5/(.+)/trap "/}${5:rm -f '$${1/.*\s//}'; exit 1}${5/(.+)/" 2       # INT\n/}${6/(.+)/trap "/}${6:rm -f '$${1/.*\s//}'; exit 1}${6/(.+)/" 1 15    # HUP TERM\n/}} | 
				
			||||
 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet case "case .. esac (case)" | 
				
			||||
case ${1:word} in | 
				
			||||
	${2:pattern} ) | 
				
			||||
		$0;; | 
				
			||||
esac | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet elif "elif .. (elif)" | 
				
			||||
elif ${2:[[ ${1:condition} ]]}; then | 
				
			||||
	${0:#statements} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet for "for ... done (for)" | 
				
			||||
for (( i = 0; i < ${1:10}; i++ )); do | 
				
			||||
	${0:#statements} | 
				
			||||
done | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet forin "for ... in ... done (forin)" | 
				
			||||
for ${1:i}${2/.+/ in /}${2:words}; do | 
				
			||||
	${0:#statements} | 
				
			||||
done | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet here "here document (here)" | 
				
			||||
<<-${2:'${1:TOKEN}'} | 
				
			||||
	$0 | 
				
			||||
${1/['"`](.+)['"`]/$1/} | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet if "if ... then (if)" | 
				
			||||
if ${2:[[ ${1:condition} ]]}; then | 
				
			||||
	${0:#statements} | 
				
			||||
fi | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet until "until ... (done)" | 
				
			||||
until ${2:[[ ${1:condition} ]]}; do | 
				
			||||
	${0:#statements} | 
				
			||||
done | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet while "while ... (done)" | 
				
			||||
while ${2:[[ ${1:condition} ]]}; do | 
				
			||||
	${0:#statements} | 
				
			||||
done | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
# vim:ft=snippets: | 
				
			||||
@ -0,0 +1,16 @@
					 | 
				
			||||
priority -50 | 
				
			||||
 | 
				
			||||
snippet xml "XML declaration" b | 
				
			||||
<?xml version="1.0"?> | 
				
			||||
 | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet t "Simple tag" b | 
				
			||||
<${1:tag}> | 
				
			||||
	${2:content} | 
				
			||||
</${1/([\w:._-]+).*/$1/}> | 
				
			||||
endsnippet | 
				
			||||
 | 
				
			||||
snippet ti "Inline tag" b | 
				
			||||
<${1:tag}>${2:content}</${1/([\w:._-]+).*/$1/}> | 
				
			||||
endsnippet | 
				
			||||
					Loading…
					
					
				
		Reference in new issue