Commits

Anonymous committed 480699d

Update of snipmate
remove unused ruby stuff from GRB initial conf
add creole syntax file

  • Participants
  • Parent commits be697c1

Comments (0)

Files changed (79)

 ~$
+.pyc$
+.swp$

File .vim/after/ftplugin/c_snips.vim

-if !exists('loaded_snips') || exists('s:did_c_snips')
-	fini
-en
-let s:did_c_snips = 1
-let snippet_filetype = 'c'
-
-" main()
-exe "Snipp main int main (int argc, char const* argv[])\n{\n\t${1}\n\treturn 0;\n}"
-" #include <...>
-exe 'Snipp inc #include <${1:stdio}.h>${2}'
-" #include "..."
-exe 'Snipp Inc #include "${1:`Filename("$1.h")`}"${2}'
-" #ifndef ... #define ... #endif
-exe "Snipp def #ifndef $1\n#define ${1:SYMBOL} ${2:value}\n#endif${3}"
-" Header Include-Guard
-" (the randomizer code is taken directly from TextMate; it could probably be
-" cleaner, I don't know how to do it in vim script)
-exe "Snipp once #ifndef ${1:`toupper(Filename('', 'UNTITLED').'_'.system(\"/usr/bin/ruby -e 'print (rand * 2821109907455).round.to_s(36)'\"))`}\n"
-	\ ."#define $1\n\n${2}\n\n#endif /* end of include guard: $1 */"
-" If Condition
-exe "Snipp if if (${1:/* condition */}) {\n\t${2:/* code */}\n}"
-exe "Snipp el else {\n\t${1}\n}"
-" Tertiary conditional
-exe 'Snipp t ${1:/* condition */} ? ${2:a} : ${3:b}'
-" Do While Loop
-exe "Snipp do do {\n\t${2:/* code */}\n} while (${1:/* condition */});"
-" While Loop
-exe "Snipp wh while (${1:/* condition */}) {\n\t${2:/* code */}\n}"
-" For Loop
-exe "Snipp for for (${2:i} = 0; $2 < ${1:count}; $2${3:++}) {\n\t${4:/* code */}\n}"
-" Custom For Loop
-exe "Snipp forr for (${1:i} = 0; ${2:$1 < 5}; $1${3:++}) {\n\t${4:/* code */}\n}"
-" Function
-exe "Snipp fun ${1:void} ${2:function_name} (${3})\n{\n\t${4:/* code */}\n}"
-" Typedef
-exe 'Snipp td typedef ${1:int} ${2:MyCustomType};'
-" Struct
-exe "Snipp st struct ${1:`Filename('$1_t', 'name')`} {\n\t${2:/* data */}\n}${3: /* optional variable list */};${4}"
-" Typedef struct
-exe "Snipp tds typedef struct ${2:$1 }{\n\t${3:/* data */}\n} ${1:`Filename('$1_t', 'name')`};"
-" printf
-" unfortunately version this isn't as nice as TextMates's, given the lack of a
-" dynamic `...`
-exe 'Snipp pr printf("${1:%s}\n"${2});${3}'
-" fprintf (again, this isn't as nice as TextMate's version, but it works)
-exe 'Snipp fpr fprintf(${1:stderr}, "${2:%s}\n"${3});${4}'

File .vim/after/ftplugin/cpp_snips.vim

-if !exists('g:loaded_snips') || exists('s:did_cpp_snips')
-	 finish
-endif
-let s:did_cpp_snips = 1
-let snippet_filetype = 'cpp'
-
-" Read File Into Vector
-exe "Snipp readfile std::vector<char> v;\nif (FILE *${2:fp} = fopen(${1:\"filename\"}, \"r\")) {\n\tchar buf[1024];\n\twhile (size_t len = "
-	\ ."fread(buf, 1, sizeof(buf), $2))\n\t\tv.insert(v.end(), buf, buf + len);\n\tfclose($2);\n}${3}"
-" std::map
-exe "Snipp map std::map<${1:key}, ${2:value}> map${3};"
-" std::vector
-exe "Snipp vector std::vector<${1:char}> v${2};"
-" Namespace
-exe "Snipp ns namespace ${1:`Filename('', 'my')`} {\n\t${2}\n} /* $1 */"
-" Class
-exe "Snipp cl class ${1:`Filename('$1_t', 'name')`} {\npublic:\n\t$1 (${2:arguments});\n\tvirtual ~$1 ();\n\nprivate:\n\t${3:/* data */}\n};"

File .vim/after/ftplugin/eruby_snips.vim

-if !exists('loaded_snips') || exists('s:did_eruby_snips')
-	fini
-en
-let s:did_eruby_snips = 1
-let snippet_filetype = 'eruby'
-
-" #!/usr/bin/ruby
-exe "Snipp #! #!/usr/bin/ruby\n"
-" New Block
-exe "Snipp =b =begin rdoc\n\t${1}\n=end"
-exe "Snipp y :yields: ${1:arguments}"
-exe "Snipp rb #!/usr/bin/env ruby -wKU\n"
-exe 'Snipp req require "${1}"${2}'
-exe 'Snipp # # =>'
-exe 'Snipp end __END__'
-exe "Snipp case case ${1:object}\nwhen ${2:condition}\n\t${3}\nend"
-exe "Snipp when when ${1:condition}\n\t${2}"
-exe "Snipp def def ${1:method_name}\n\t${2}\nend"
-exe "Snipp deft def test_${1:case_name}\n\t${2}\nend"
-exe "Snipp if if ${1:condition}\n\t${2}\nend"
-exe "Snipp ife if ${1:condition}\n\t${2}\nelse\n\t${3}\nend"
-exe "Snipp elsif elsif ${1:condition}\n\t${2}"
-exe "Snipp unless unless ${1:condition}\n\t${2}\nend"
-exe "Snipp while while ${1:condition}\n\t${2}\nend"
-exe "Snipp until until ${1:condition}\n\t${2}\nend"
-exe "Snipp! cla \"class .. end\" class ${1:`substitute(Filename(), '^.', '\\u&', '')`}\n\t${2}\nend"
-exe "Snipp! cla \"class .. initialize .. end\" class ${1:`substitute(Filename(), '^.', '\\u&', '')`}\n\tdef initialize(${2:args})\n\t\t${3}\n\tend\n\n\nend"
-exe "Snipp! cla \"class .. < ParentClass .. initialize .. end\" class ${1:`substitute(Filename(), '^.', '\\u&', '')`} < ${2:ParentClass}\n\tdef initialize(${3:args})\n\t\t${4}\n\tend\n\n\nend"
-exe "Snipp! cla \"ClassName = Struct .. do .. end\" ${1:`substitute(Filename(), '^.', '\\u&', '')`} = Struct.new(:${2:attr_names}) do\n\tdef ${3:method_name}\n\t\t${4}\n\tend\n\n\nend"
-exe "Snipp! cla \"class BlankSlate .. initialize .. end\" class ${1:BlankSlate}\n\tinstance_methods.each { |meth| undef_method(meth) unless meth =~ /\A__/ }"
-\ ."\n\n\tdef initialize(${2:args})\n\t\t@${3:delegate} = ${4:$3_object}\n\n\t\t${5}\n\tend\n\n\tdef method_missing(meth, *args, &block)\n\t\t@$3.send(meth, *args, &block)\n\tend\n\n\nend"
-exe "Snipp! cla \"class << self .. end\" class << ${1:self}\n\t${2}\nend"
-" class .. < DelegateClass .. initialize .. end
-exe "Snipp cla- class ${1:`substitute(Filename(), '^.', '\\u&', '')`} < DelegateClass(${2:ParentClass})\n\tdef initialize(${3:args})\n\t\tsuper(${4:del_obj})\n\n\t\t${5}\n\tend\n\n\nend"
-exe "Snipp! mod \"module .. end\" module ${1:`substitute(Filename(), '^.', '\\u&', '')`}\n\t${2}\nend"
-exe "Snipp! mod \"module .. module_function .. end\" module ${1:`substitute(Filename(), '^.', '\\u&', '')`}\n\tmodule_function\n\n\t${2}\nend"
-exe "Snipp! mod \"module .. ClassMethods .. end\" module ${1:`substitute(Filename(), '^.', '\\u&', '')`}\n\tmodule ClassMethods\n\t\t${2}\n\tend\n\n\t"
-\."module InstanceMethods\n\n\tend\n\n\tdef self.included(receiver)\n\t\treceiver.extend         ClassMethods\n\t\treseiver.send :include, InstanceMethods\n\tend\nend"
-" attr_reader
-exe 'Snipp r attr_reader :${1:attr_names}'
-" attr_writer
-exe 'Snipp w attr_writer :${1:attr_names}'
-" attr_accessor
-exe 'Snipp rw attr_accessor :${1:attr_names}'
-" include Enumerable
-exe "Snipp Enum include Enumerable\n\ndef each(&block)\n\t${1}\nend"
-" include Comparable
-exe "Snipp Comp include Comparable\n\ndef <=>(other)\n\t${1}\nend"
-" extend Forwardable
-exe 'Snipp Forw- extend Forwardable'
-" def self
-exe "Snipp defs def self.${1:class_method_name}\n\t${2}\nend"
-" def method_missing
-exe "Snipp defmm def method_missing(meth, *args, &blk)\n\t${1}\nend"
-exe 'Snipp defd def_delegator :${1:@del_obj}, :${2:del_meth}, :${3:new_name}'
-exe 'Snipp defds def_delegators :${1:@del_obj}, :${2:del_methods}'
-exe 'Snipp am alias_method :${1:new_name}, :${2:old_name}'
-exe "Snipp app if __FILE__ == $PROGRAM_NAME\n\t${1}\nend"
-" usage_if()
-exe "Snipp usai if ARGV.${1}\n\tabort \"Usage: #{$PROGRAM_NAME} ${2:ARGS_GO_HERE}\"${3}\nend"
-" usage_unless()
-exe "Snipp usau unless ARGV.${1}\n\tabort \"Usage: #{$PROGRAM_NAME} ${2:ARGS_GO_HERE}\"${3}\nend"
-exe 'Snipp array Array.new(${1:10}) { |${2:i}| ${3} }'
-exe 'Snipp hash Hash.new { |${1:hash}, ${2:key}| $1[$2] = ${3} }'
-exe 'Snipp! file "File.foreach() { |line| .. }" File.foreach(${1:"path/to/file"}) { |${2:line}| ${3} }'
-exe 'Snipp! file "File.read()" File.read(${1:"path/to/file"})${2}'
-exe 'Snipp! Dir "Dir.global() { |file| .. }" Dir.glob(${1:"dir/glob/*"}) { |${2:file}| ${3} }'
-exe 'Snipp! Dir "Dir[''..'']" Dir[${1:"glob/**/*.rb"}]${2}'
-exe 'Snipp dir Filename.dirname(__FILE__)'
-exe 'Snipp deli delete_if { |${1:e}| ${2} }'
-exe 'Snipp fil fill(${1:range}) { |${2:i}| ${3} }'
-" flatten_once()
-exe 'Snipp flao inject(Array.new) { |${1:arr}, ${2:a}| $1.push(*$2)}${3}'
-exe 'Snipp zip zip(${1:enums}) { |${2:row}| ${3} }'
-" downto(0) { |n| .. }
-exe 'Snipp dow downto(${1:0}) { |${2:n}| ${3} }'
-exe 'Snipp ste step(${1:2}) { |${2:n}| ${3} }'
-exe 'Snipp tim times { |${1:n}| ${2} }'
-exe 'Snipp upt upto(${1:1.0/0.0}) { |${2:n}| ${3} }'
-exe 'Snipp loo loop { ${1} }'
-exe 'Snipp ea each { |${1:e}| ${2} }'
-exe 'Snipp eab each_byte { |${1:byte}| ${2} }'
-exe 'Snipp! eac- "each_char { |chr| .. }" each_char { |${1:chr}| ${2} }'
-exe 'Snipp! eac- "each_cons(..) { |group| .. }" each_cons(${1:2}) { |${2:group}| ${3} }'
-exe 'Snipp eai each_index { |${1:i}| ${2} }'
-exe 'Snipp eak each_key { |${1:key}| ${2} }'
-exe 'Snipp eal each_line { |${1:line}| ${2} }'
-exe 'Snipp eap each_pair { |${1:name}, ${2:val}| ${3} }'
-exe 'Snipp eas- each_slice(${1:2}) { |${2:group}| ${3} }'
-exe 'Snipp eav each_value { |${1:val}| ${2} }'
-exe 'Snipp eawi each_with_index { |${1:e}, ${2:i}| ${3} }'
-exe 'Snipp reve reverse_each { |${1:e}| ${2} }'
-exe 'Snipp inj inject(${1:init}) { |${2:mem}, ${3:var}| ${4} }'
-exe 'Snipp map map { |${1:e}| ${2} }'
-exe 'Snipp mapwi- enum_with_index.map { |${1:e}, ${2:i}| ${3} }'
-exe 'Snipp sor sort { |a, b| ${1} }'
-exe 'Snipp sorb sort_by { |${1:e}| ${2} }'
-exe 'Snipp ran sort_by { rand }'
-exe 'Snipp all all? { |${1:e}| ${2} }'
-exe 'Snipp any any? { |${1:e}| ${2} }'
-exe 'Snipp cl classify { |${1:e}| ${2} }'
-exe 'Snipp col collect { |${1:e}| ${2} }'
-exe 'Snipp det detect { |${1:e}| ${2} }'
-exe 'Snipp fet fetch(${1:name}) { |${2:key}| ${3} }'
-exe 'Snipp fin find { |${1:e}| ${2} }'
-exe 'Snipp fina find_all { |${1:e}| ${2} }'
-exe 'Snipp gre grep(${1:/pattern/}) { |${2:match}| ${3} }'
-exe 'Snipp sub ${1:g}sub(${2:/pattern/}) { |${3:match}| ${4} }'
-exe 'Snipp sca scan(${1:/pattern/}) { |${2:match}| ${3} }'
-exe 'Snipp max max { |a, b|, ${1} }'
-exe 'Snipp min min { |a, b|, ${1} }'
-exe 'Snipp par partition { |${1:e}|, ${2} }'
-exe 'Snipp rej reject { |${1:e}|, ${2} }'
-exe 'Snipp sel select { |${1:e}|, ${2} }'
-exe 'Snipp lam lambda { |${1:args}| ${2} }'
-exe "Snipp do do |${1:variable}|\n\t${2}\nend"
-exe 'Snipp : :${1:key} => ${2:"value"}${3}'
-exe 'Snipp ope open(${1:"path/or/url/or/pipe"}, "${2:w}") { |${3:io}| ${4} }'
-" path_from_here()
-exe 'Snipp patfh File.join(File.dirname(__FILE__), *%2[${1:rel path here}])${2}'
-" unix_filter {}
-exe "Snipp unif ARGF.each_line${1} do |${2:line}|\n\t${3}\nend"
-" option_parse {}
-exe "Snipp optp require \"optparse\"\n\noptions = {${1:default => \"args\"}}\n\nARGV.options do |opts|\n\topts.banner = \"Usage: #{File.basename($PROGRAM_NAME)}"
-\."[OPTIONS] ${2:OTHER_ARGS}\"\n\n\topts.separator \"\"\n\topts.separator \"Specific Options:\"\n\n\t${3}\n\n\topts.separator \"Common Options:\"\n\n\t"
-\."opts.on( \"-h\", \"--help\",\n           \"Show this message.\" ) do\n\t\tputs opts\n\t\texit\n\tend\n\n\tbegin\n\t\topts.parse!\n\trescue\n\t\tputs opts\n\t\texit\n\tend\nend"
-exe "Snipp opt opts.on( \"-${1:o}\", \"--${2:long-option-name}\", ${3:String},\n         \"${4:Option description.}\") do |${5:opt}|\n\t${6}\nend"
-exe "Snipp tc require \"test/unit\"\n\nrequire \"${1:library_file_name}\"\n\nclass Test${2:$1} < Test::Unit::TestCase\n\tdef test_${3:case_name}\n\t\t${4}\n\tend\nend"
-exe "Snipp ts require \"test/unit\"\n\nrequire \"tc_${1:test_case_file}\"\nrequire \"tc_${2:test_case_file}\"${3}"
-exe 'Snipp as assert(${1:test}, \"${2:Failure message.}\")${3}'
-exe 'Snipp ase assert_equal(${1:expected}, ${2:actual})${3}'
-exe 'Snipp asne assert_not_equal(${1:unexpected}, ${2:actual})${3}'
-exe 'Snipp asid assert_in_delta(${1:expected_float}, ${2:actual_float}, ${3:2 ** -20})${4}'
-exe 'Snipp asio assert_instance_of(${1:ExpectedClass}, ${2:actual_instance})${3}'
-exe 'Snipp asko assert_kind_of(${1:ExpectedKind}, ${2:actual_instance})${3}'
-exe 'Snipp asn assert_nil(${1:instance})${2}'
-exe 'Snipp asnn assert_not_nil(${1:instance})${2}'
-exe 'Snipp asm assert_match(/${1:expected_pattern}/, ${2:actual_string})${3}'
-exe 'Snipp asnm assert_no_match(/${1:unexpected_pattern}/, ${2:actual_string})${3}'
-exe 'Snipp aso assert_operator(${1:left}, :${2:operator}, ${3:right})${4}'
-exe 'Snipp asr assert_raise(${1:Exception}) { ${2} }'
-exe 'Snipp asnr assert_nothing_raised(${1:Exception}) { ${2} }'
-exe 'Snipp asrt assert_respond_to(${1:object}, :${2:method})${3}'
-exe 'Snipp! ass "assert_same(..)" assert_same(${1:expected}, ${2:actual})${3}'
-exe 'Snipp! ass "assert_send(..)" assert_send([${1:object}, :${2:message}, ${3:args}])${4}'
-exe 'Snipp asns assert_not_same(${1:unexpected}, ${2:actual})${3}'
-exe 'Snipp ast assert_throws(:${1:expected}) { ${2} }'
-exe 'Snipp asnt assert_nothing_thrown { ${1} }'
-exe 'Snipp fl flunk("${1:Failure message.}")${2}'
-" Benchmark.bmbm do .. end
-exe "Snipp bm- TESTS = ${1:10_000}\nBenchmark.bmbm do |results|\n\t${2}\nend"
-exe 'Snipp rep results.report("${1:name}:") { TESTS.times { ${2} }}'
-" Marshal.dump(.., file)
-exe 'Snipp Md File.open(${1:"path/to/file.dump"}, "wb") { |${2:file}| Marshal.dump(${3:obj}, $2) }${4}'
-" Mashal.load(obj)
-exe 'Snipp Ml File.open(${1:"path/to/file.dump"}, "rb") { |${2:file}| Marshal.load($2) }${3}'
-" deep_copy(..)
-exe 'Snipp deec Marshal.load(Marshal.dump(${1:obj_to_copy}))${2}'
-exe 'Snipp Pn- PStore.new(${1:"file_name.pstore"})${2}'
-exe 'Snipp tra transaction(${1:true}) { ${2} }'
-" xmlread(..)
-exe 'Snipp xml- REXML::Document.new(File.read(${1:"path/to/file"}))${2}'
-" xpath(..) { .. }
-exe "Snipp xpa elements.each(${1:\"//Xpath\"}) do |${2:node}|\n\t${3}\nend"
-" class_from_name()
-exe 'Snipp clafn split("::").inject(Object) { |par, const| par.const_get(const) }'
-" singleton_class()
-exe 'Snipp sinc class << self; self end'
-exe "Snipp nam namespace :${1:`Filename()`} do\n\t${2}\nend"
-exe "Snipp tas desc \"${1:Task description\}\"\ntask :${2:task_name => [:dependent, :tasks]} do\n\t${3}\nend"

File .vim/after/ftplugin/html_snips.vim

-let snippet_filetype = stridx(&ft, 'xhtml') > -1 ? 'xhtml' : 'html'
-if !exists('g:loaded_snips') || exists('s:did_'.snippet_filetype.'_snips')
-	fini
-en
-let s:did_{snippet_filetype}_snips = 1
-
-" automatically add a closing '/' to the end of xhtml tags
-let c = snippet_filetype == 'xhtml' ? ' /' : ''
-
-" Some useful Unicode entities
-" Non-Breaking Space
-exe 'Snipp nbs &nbsp;'
-" ←
-exe 'Snipp left &#x2190;'
-" →
-exe 'Snipp right &#x2192;'
-" ↑
-exe 'Snipp up &#x2191;'
-" ↓
-exe 'Snipp down &#x2193;'
-" ↩
-exe 'Snipp return &#x21A9;'
-" ⇤
-exe 'Snipp backtab &#x21E4;'
-" ⇥
-exe 'Snipp tab &#x21E5;'
-" ⇧
-exe 'Snipp shift &#x21E7;'
-" ⌃
-exe 'Snipp control &#x2303;'
-" ⌅
-exe 'Snipp enter &#x2305;'
-" ⌘
-exe 'Snipp command &#x2318;'
-" ⌥
-exe 'Snipp option &#x2325;'
-" ⌦
-exe 'Snipp delete &#x2326;'
-" ⌫
-exe 'Snipp backspace &#x232B;'
-" ⎋
-exe 'Snipp escape &#x238B;'
-" Generic Doctype
-exe "Snipp! doctype \"HTML 4.01 Strict\" <!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\"\"\n\"http://www.w3.org/TR/html4/strict.dtd\">"
-exe "Snipp! doctype \"HTML 4.01 Transitional\" <!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\"\"\n\"http://www.w3.org/TR/html4/loose.dtd\">"
-exe "Snipp! doctype \"HTML 5\" <!DOCTYPE HTML>"
-exe "Snipp! doctype \"XHTML 1.0 Frameset\" <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\"\n\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">"
-exe "Snipp! doctype \"XHTML 1.0 Strict\" <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\"\n\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">"
-exe "Snipp! doctype \"XHTML 1.0 Transitional\" <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">"
-exe "Snipp! doctype \"XHTML 1.1\" <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\"\n\"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">"
-" HTML Doctype 4.01 Strict
-exe "Snipp docts <!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\"\"\n\"http://www.w3.org/TR/html4/strict.dtd\">"
-" HTML Doctype 4.01 Transitional
-exe "Snipp doct <!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\"\"\n\"http://www.w3.org/TR/html4/loose.dtd\">"
-" HTML Doctype 5
-exe 'Snipp doct5 <!DOCTYPE HTML>'
-" XHTML Doctype 1.0 Frameset
-exe "Snipp docxf <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Frameset//EN\"\n\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd\">"
-" XHTML Doctype 1.0 Strict
-exe "Snipp docxs <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\"\n\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">"
-" XHTML Doctype 1.0 Transitional
-exe "Snipp docxt <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">"
-" XHTML Doctype 1.1
-exe "Snipp docx <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\"\n\"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">"
-exe "Snipp html <html>\n${1}\n</html>"
-exe "Snipp xhtml <html xmlns=\"http://www.w3.org/1999/xhtml\">\n${1}\n</html>"
-exe "Snipp body <body>\n\t${1}\n</body>"
-exe "Snipp head <head>\n\t<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\"".c.">\n\t"
-\. "<title>${1:`substitute(Filename('', 'Page Title'), '^.', '\\u&', '')`}</title>\n\t${2}\n</head>"
-exe 'Snipp title <title>${1:`substitute(Filename("", "Page Title"), "^.", "\\u&", "")`}</title>${2}'
-exe "Snipp script <script type=\"text/javascript\" charset=\"utf-8\">\n\t${1}\n</script>${2}"
-exe "Snipp scriptsrc <script src=\"${1}.js\" type=\"text/javascript\" charset=\"utf-8\"></script>${2}"
-exe "Snipp style <style type=\"text/css\" media=\"${1:screen}\">\n\t${2}\n</style>${3}"
-exe 'Snipp base <base href="${1}" target="${2}"'.c.'>'
-exe 'Snipp r <br'.c[1:].'>'
-exe "Snipp div <div id=\"${1:name}\">\n\t${2}\n</div>"
-" Embed QT Movie
-exe "Snipp movie <object width=\"$2\" height=\"$3\" classid=\"clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B\""
-\ ." codebase=\"http://www.apple.com/qtactivex/qtplugin.cab\">\n\t<param name=\"src\" value=\"$1\"".c.">\n\t<param name=\"controller\" value=\"$4\"".c
-\ .">\n\t<param name=\"autoplay\" value=\"$5\"".c.">\n\t<embed src=\"${1:movie.mov}\"\n\t\twidth=\"${2:320}\" height=\"${3:240}\"\n\t\t"
-\ ."controller=\"${4:true}\" autoplay=\"${5:true}\"\n\t\tscale=\"tofit\" cache=\"true\"\n\t\tpluginspage=\"http://www.apple.com/quicktime/download/\"\n\t".c[1:].">\n</object>${6}"
-exe "Snipp fieldset <fieldset id=\"$1\">\n\t<legend>${1:name}</legend>\n\n\t${3}\n</fieldset>"
-exe "Snipp form <form action=\"${1:`Filename('$1_submit')`}\" method=\"${2:get}\" accept-charset=\"utf-8\">\n\t${3}\n\n\t"
-\."<p><input type=\"submit\" value=\"Continue &rarr;\"".c."></p>\n</form>"
-exe 'Snipp h1 <h1 id="${1:heading}">${2:$1}</h1>'
-exe 'Snipp input <input type="${1:text/submit/hidden/button}" name="${2:some_name}" value="${3}"'.c.'>${4}'
-exe 'Snipp label <label for="${2:$1}">${1:name}</label><input type="${3:text/submit/hidden/button}" name="${4:$2}" value="${5}" id="${6:$2}"'.c.'>${7}'
-exe 'Snipp link <link rel="${1:stylesheet}" href="${2:/css/master.css}" type="text/css" media="${3:screen}" charset="utf-8"'.c.'>${4}'
-exe 'Snipp mailto <a href="mailto:${1:joe@example.com}?subject=${2:feedback}">${3:email me}</a>'
-exe 'Snipp meta <meta name="${1:name}" content="${2:content}"'.c.'>${3}'
-exe 'Snipp opt <option value="${1:option}">${2:$1}</option>${3}'
-exe 'Snipp optt <option>${1:option}</option>${2}'
-exe "Snipp select <select name=\"${1:some_name}\" id=\"${2:$1}\">\n\t<option value=\"${3:option}\">${4:$3}</option>\n</select>${5}"
-exe "Snipp table <table border=\"${1:0}\">\n\t<tr><th>${2:Header}</th></tr>\n\t<tr><th>${3:Data}</th></tr>\n</table>${4}"
-exe 'Snipp textarea <textarea name="${1:Name}" rows="${2:8}" cols="${3:40}">${4}</textarea>${5}'

File .vim/after/ftplugin/java_snips.vim

-if !exists('loaded_snips') || exists('s:did_java_snips')
-	fini
-en
-let s:did_java_snips = 1
-let snippet_filetype = 'java'
-
-exe "Snipp main public static void main (String [] args)\n{\n\t${1:/* code */}\n}"
-exe 'Snipp pu public'
-exe 'Snipp po protected'
-exe 'Snipp pr private'
-exe 'Snipp st static'
-exe 'Snipp fi final'
-exe 'Snipp ab abstract'
-exe 'Snipp re return'
-exe 'Snipp br break;'
-exe "Snipp de default:\n\t${1}"
-exe 'Snipp ca catch(${1:Exception} ${2:e}) ${3}'
-exe 'Snipp th throw '
-exe 'Snipp sy synchronized'
-exe 'Snipp im import'
-exe 'Snipp j.u java.util'
-exe 'Snipp j.i java.io.'
-exe 'Snipp j.b java.beans.'
-exe 'Snipp j.n java.net.'
-exe 'Snipp j.m java.math.'
-exe 'Snipp if if (${1}) ${2}'
-exe 'Snipp el else '
-exe 'Snipp elif else if (${1}) ${2}'
-exe 'Snipp wh while (${1}) ${2}'
-exe 'Snipp for for (${1}; ${2}; ${3}) ${4}'
-exe 'Snipp fore for (${1} : ${2}) ${3}'
-exe 'Snipp sw switch (${1}) ${2}'
-exe "Snipp cs case ${1}:\n\t${2}\n${3}"
-exe 'Snipp tc public class ${1:`Filename()`} extends ${2:TestCase}'
-exe 'Snipp t public void test${1:Name}() throws Exception ${2}'
-exe 'Snipp cl class ${1:`Filename("", "untitled")`} ${2}'
-exe 'Snipp in interface ${1:`Filename("", "untitled")`} ${2:extends Parent}${3}'
-exe 'Snipp m ${1:void} ${2:method}(${3}) ${4:throws }${5}'
-exe 'Snipp v ${1:String} ${2:var}${3: = null}${4};${5}'
-exe 'Snipp co static public final ${1:String} ${2:var} = ${3};${4}'
-exe 'Snipp cos static public final String ${1:var} = "${2}";${3}'
-exe 'Snipp as assert ${1:test} : "${2:Failure message}";${3}'

File .vim/after/ftplugin/javascript_snips.vim

-if !exists('loaded_snips') || exists('s:did_js_snips')
-	fini
-en
-let s:did_js_snips = 1
-let snippet_filetype = 'javascript'
-
-" Prototype
-exe "Snipp proto ${1:class_name}.prototype.${2:method_name} =\nfunction(${3:first_argument}) {\n\t${4:// body...}\n};"
-" Function
-exe "Snipp fun function ${1:function_name} (${2:argument}) {\n\t${3:// body...}\n}"
-" Anonymous Function
-exe 'Snipp f function(${1}) {${2}};'
-" if
-exe 'Snipp if if (${1:true}) {${2}};'
-" if ... else
-exe "Snipp ife if (${1:true}) {${2}}\nelse{${3}};"
-" tertiary conditional
-exe 'Snipp t ${1:/* condition */} ? ${2:a} : ${3:b}'
-" switch
-exe "Snipp switch switch(${1:expression}) {\n\tcase '${3:case}':\n\t\t${4:// code}\n\t\tbreak;\n\t${5}\n\tdefault:\n\t\t${2:// code}\n}"
-" case
-exe "Snipp case case '${1:case}':\n\t${2:// code}\n\tbreak;\n${3}"
-" for (...) {...}
-exe "Snipp for for (var ${2:i} = 0; $2 < ${1:Things}.length; $2${3:++}) {\n\t${4:$1[$2]}\n};"
-" for (...) {...} (Improved Native For-Loop)
-exe "Snipp forr for (var ${2:i} = ${1:Things}.length - 1; $2 >= 0; $2${3:--}) {\n\t${4:$1[$2]}\n};"
-" while (...) {...}
-exe "Snipp wh while (${1:/* condition */}) {\n\t${2:/* code */}\n}"
-" do...while
-exe "Snipp do do {\n\t${2:/* code */}\n} while (${1:/* condition */});"
-" Object Method
-exe "Snipp :f ${1:method_name}: function(${2:attribute}) {\n\t${4}\n}${3:,}"
-" setTimeout function
-exe 'Snipp timeout setTimeout(function() {${3}}${2}, ${1:10};'
-" Get Elements
-exe "Snipp get getElementsBy${1:TagName}('${2}')${3}"
-" Get Element
-exe "Snipp gett getElementBy${1:Id}('${2}')${3}"

File .vim/after/ftplugin/objc_snips.vim

-if !exists('loaded_snips') || exists('s:did_objc_snips')
-	fini
-en
-let s:did_objc_snips = 1
-let snippet_filetype = 'objc'
-
-" #import <...>
-exe 'Snipp imp #import <${1:Cocoa/Cocoa.h}>${2}'
-" #import "..."
-exe 'Snipp Imp #import "${1:`Filename()`.h}"${2}'
-" @selector(...)
-exe 'Snipp sel @selector(${1:method}:)${3}'
-" NSLog(...)
-exe 'Snipp log NSLog(@"${1}"${2});${3}'
-" Class
-exe "Snipp objc @interface ${1:`Filename('', 'object')`} : ${2:NSObject}\n{\n}\n@end\n\n@implementation $1\n- (id) init\n{\n\tif (self = [super init])"
-\."\n\t{${3}\n\t}\n\treturn self\n}\n@end"
-" Class Interface
-exe "Snipp clh @interface ${1:ClassName} : ${2:NSObject}\n{${3}\n}\n${4}\n@end"
-exe 'Snipp ibo IBOutlet ${1:NSSomeClass} *${2:$1};'
-" Category
-exe "Snipp cat @interface ${1:NSObject} (${2:Category})\n@end\n\n@implementation $1 ($2)\n${3}\n@end"
-" Category Interface
-exe "Snipp cath @interface ${1:NSObject} (${2:Category})\n${3}\n@end"
-" NSArray
-exe 'Snipp array NSMutableArray *${1:array} = [NSMutable array];${2}'
-" NSDictionary
-exe 'Snipp dict NSMutableDictionary *${1:dict} = [NSMutableDictionary dictionary];${2}'
-" NSBezierPath
-exe 'Snipp bez NSBezierPath *${1:path} = [NSBezierPath bezierPath];${2}'
-" Method
-exe "Snipp m - (${1:id})${2:method}\n{\n\t${3:return self;}\n}"
-" Method declaration
-exe "Snipp md - (${1:id})${2:method};${3}"
-" Class Method
-exe "Snipp M + (${1:id})${2:method}\n{${3}\n\treturn nil;\n}"
-" Sub-method (Call super)
-exe "Snipp sm - (${1:id})${2:method}\n{\n\t[super $2];${3}\n\treturn self;\n}"
-" Method: Initialize
-exe "Snipp I + (void) initialize\n{\n\t[[NSUserDefaults standardUserDefaults] registerDefaults:[NSDictionary dictionaryWIthObjectsAndKeys:\n\t\t${1}@\"value\", @\"key\",\n\t\tnil]];\n}"
-" Accessor Methods For:
-" Object
-exe "Snipp objacc - (${1:id})${2:thing}\n{\n\treturn $2;\n}\n\n- (void) set$2:($1)\n{\n\t$1 old$2 = $2;\n\t$2 = [aValue retain];\n\t[old$2 release];\n}"
-exe "Snipp forarray unsigned int\t${1:object}Count = [${2:array} count];\n\nfor (unsigned int index = 0; index < $1Count; index++)\n{\n\t${3:id}\t$1 = [$2 $1AtIndex:index];\n\t${4}\n}"
-" IBOutlet
-" @property (Objective-C 2.0)
-exe "Snipp prop @property (${1:retain}) ${2:NSSomeClass} *${3:$2};${4}"
-" @synthesize (Objective-C 2.0)
-exe "Snipp syn @synthesize ${1:NSSomeClass};${2}"
-" [[ alloc] init]
-exe 'Snipp alloc [[${1:foo} alloc] init]${2};${3}'
-" retain
-exe 'Snipp ret [${1:foo} retain];${2}'
-" release
-exe 'Snipp rel [${1:foo} release];${2}'

File .vim/after/ftplugin/perl_snips.vim

-if !exists('loaded_snips') || exists('s:did_perl_snips')
-	fini
-en
-let s:did_perl_snips = 1
-let snippet_filetype = 'perl'
-
-" #!/usr/bin/perl
-exe "Snipp #! #!/usr/bin/perl\n"
-" Hash Pointer
-exe 'Snipp .  =>'
-" Function
-exe "Snipp sub sub ${1:function_name} {\n\t${2:#body ...}\n}"
-" Conditional
-exe "Snipp if if (${1}) {\n\t${2:# body...}\n}"
-" Conditional if..else
-exe "Snipp ife if (${1}) {\n\t${2:# body...}\n} else {\n\t${3:# else...}\n}"
-" Conditional if..elsif..else
-exe "Snipp ifee if (${1}) {\n\t${2:# body...}\n} elsif (${3}) {\n\t${4:# elsif...}\n} else {\n\t${5:# else...}\n}"
-" Conditional One-line
-exe 'Snipp xif ${1:expression} if ${2:condition};${3}'
-" Unless conditional
-exe "Snipp unless unless (${1}) {\n\t${2:# body...}\n}"
-" Unless conditional One-line
-exe 'Snipp xunless ${1:expression} unless ${2:condition};${3}'
-" Try/Except
-exe "Snipp eval eval {\n\t${1:# do something risky...}\n};\nif ($@) {\n\t${2:# handle failure...}\n}"
-" While Loop
-exe "Snipp wh while (${1}) {\n\t${2:# body...}\n}"
-" While Loop One-line
-exe "Snipp xwh ${1:expression} while ${2:condition};${3}"
-" For Loop
-exe "Snipp for for (my $${2:var} = 0; $$2 < ${1:count}; $$2${3:++}) {\n\t${4:# body...}\n}"
-" Foreach Loop
-exe "Snipp fore foreach my $${1:x} (@${2:array}) {\n\t${3:# body...}\n}"
-" Foreach Loop One-line
-exe 'Snipp xfore ${1:expression} foreach @${2:array};${3}'
-" Package
-exe "Snipp cl package ${1:ClassName};\n\nuse base qw(${2:ParentClass});\n\nsub new {\n\tmy $class = shift;\n\t$class = ref $class if ref $class;\n\tmy $self = bless {}, $class;\n\t$self;\n}\n\n1;${3}"
-" Read File
-exe "Snipp slurp my $${1:var};\n{ local $/ = undef; local *FILE; open FILE, \"<${2:file}\"; $$1 = <FILE>; close FILE }${2}"

File .vim/after/ftplugin/php_snips.vim

-if !exists('loaded_snips') || exists('s:did_php_snips')
-	fini
-en
-let s:did_php_snips = 1
-let snippet_filetype = 'php'
-
-exe "Snipp php <?php\n${1}\n?>"
-exe 'Snipp ec echo "${1:string}"${2};'
-exe "Snipp inc include '${1:file}';${2}"
-exe "Snipp inc1 include_once '${1:file}';${2}"
-exe "Snipp req require '${1:file}';${2}"
-exe "Snipp req1 require_once '${1:file}';${2}"
-" $GLOBALS['...']
-exe "Snipp globals $GLOBALS['${1:variable}']${2: = }${3:something}${4:;}${5}"
-exe "Snipp! $_ \"COOKIE['...']\" $_COOKIE['${1:variable}']${2}"
-exe "Snipp! $_ \"ENV['...']\" $_ENV['${1:variable}']${2}"
-exe "Snipp! $_ \"FILES['...']\" $_FILES['${1:variable}']${2}"
-exe "Snipp! $_ \"Get['...']\" $_GET['${1:variable}']${2}"
-exe "Snipp! $_ \"POST['...']\" $_POST['${1:variable}']${2}"
-exe "Snipp! $_ \"REQUEST['...']\" $_REQUEST['${1:variable}']${2}"
-exe "Snipp! $_ \"SERVER['...']\" $_SERVER['${1:variable}']${2}"
-exe "Snipp! $_ \"SESSION['...']\" $_SESSION['${1:variable}']${2}"
-" Start Docblock
-exe "Snipp /* /**\n * ${1}\n **/"
-" Class - post doc
-exe "Snipp doc_cp /**\n * ${1:undocumented class}\n *\n * @package ${2:default}\n * @author ${3:`g:snips_author`}\n**/${4}"
-" Class Variable - post doc
-exe "Snipp doc_vp /**\n * ${1:undocumented class variable}\n *\n * @var ${2:string}\n **/${3}"
-" Class Variable
-exe "Snipp doc_v /**\n * ${3:undocumented class variable}\n *\n * @var ${4:string}\n **/\n${1:var} $${2};${5}"
-" Class
-exe "Snipp doc_c /**\n * ${3:undocumented class}\n *\n * @packaged ${4:default}\n * @author ${5:`g:snips_author`}\n **/\n${1:}class ${2:}\n{${6}\n} // END $1class $2"
-" Constant Definition - post doc
-exe "Snipp doc_dp /**\n * ${1:undocumented constant}\n **/${2}"
-" Constant Definition
-exe "Snipp doc_d /**\n * ${3:undocumented constant}\n **/\ndefine(${1}, ${2});${4}"
-" Function - post doc
-exe "Snipp doc_fp /**\n * ${1:undocumented function}\n *\n * @return ${2:void}\n * @author ${3:`g:snips_author`}\n **/${4}"
-" Function signature
-exe "Snipp doc_s /**\n * ${4:undocumented function}\n *\n * @return ${5:void}\n * @author ${6:`g:snips_author`}\n **/\n${1}function ${2}(${3});${7}"
-" Function
-exe "Snipp doc_f /**\n * ${4:undocumented function}\n *\n * @return ${5:void}\n * @author ${6:`g:snips_author`}\n **/\n${1}function ${2}(${3})\n{${7}\n}"
-" Header
-exe "Snipp doc_h /**\n * ${1}\n *\n * @author ${2:`g:snips_author`}\n * @version ${3:$Id$}\n * @copyright ${4:$2}, `strftime('%d %B, %Y')`\n * @package ${5:default}\n **/\n\n/**\n * Define DocBlock\n *//"
-" Interface
-exe "Snipp doc_i /**\n * ${2:undocumented class}\n *\n * @package ${3:default}\n * @author ${4:`g:snips_author`}\n **/\ninterface ${1:}\n{${5}\n} // END interface $1"
-" class ...
-exe "Snipp class /**\n * ${1}\n **/\nclass ${2:ClassName}\n{\n\t${3}\n\tfunction ${4:__construct}(${5:argument})\n\t{\n\t\t${6:// code...}\n\t}\n}"
-" define(...)
-exe "Snipp def define('${1}'${2});${3}"
-" defined(...)
-exe "Snipp def? ${1}defined('${2}')${3}"
-exe "Snipp wh while (${1:/* condition */}) {\n\t${2:// code...}\n}"
-" do ... while
-exe "Snipp do do {\n\t${2:// code... }\n} while (${1:/* condition */});"
-exe "Snipp if if (${1:/* condition */}) {\n\t${2:// code...}\n}"
-exe "Snipp ife if (${1:/* condition */}) {\n\t${2:// code...}\n} else {\n\t${3:// code...}\n}\n${4}"
-exe "Snipp else else {\n\t${1:// code...}\n}"
-exe "Snipp elseif elseif (${1:/* condition */}) {\n\t${2:// code...}\n}"
-" Tertiary conditional
-exe "Snipp t $${1:retVal} = (${2:condition}) ? ${3:a} : ${4:b};${5}"
-exe "Snipp switch switch ($${1:variable}) {\n\tcase '${2:value}':\n\t\t${3:// code...}\n\t\tbreak;\n\t${5}\n\tdefault:\n\t\t${4:// code...}\n\t\tbreak;\n}"
-exe "Snipp case case '${1:value}':\n\t${2:// code...}\n\tbreak;${3}"
-exe "Snipp for for ($${2:i} = 0; $$2 < ${1:count}; $$2${3:++}) {\n\t${4: // code...}\n}"
-exe "Snipp foreach foreach ($${1:variable} as $${2:key}) {\n\t${3:// code...}\n}"
-exe "Snipp fun ${1:public }function ${2:FunctionName}(${3})\n{\n\t${4:// code...}\n}"
-" $... = array (...)
-exe "Snipp array $${1:arrayName} = array('${2}' => ${3});${4}"

File .vim/after/ftplugin/python_snips.vim

-if !exists('loaded_snips') || exists('s:did_python_snips')
-	fini
-en
-let s:did_python_snips = 1
-let snippet_filetype = 'python'
-
-" #!/usr/bin/python
-exe "Snipp #! #!/usr/bin/python\n"
-" True and False
-exe "Snipp t True"
-exe "Snipp f False"
-" None
-exe "Snipp n None"
-" Self
-exe "Snipp s self."
-" Init function
-exe "Snipp i def __init__(self, "
-" While
-exe "Snipp wh while ${1:condition}:\n\t${2:# code...}"
-" New Class
-exe "Snipp cl class ${1:ClassName}(${2:object}):\n\t\"\"\"${3:docstring for $1}\"\"\"\n\tdef __init__(self, ${4:arg}):\n\t\t${5:super($1, self).__init__()}\n\t\tself.$4 = $4\n\t\t${6}"
-" New Function
-exe "Snipp def def ${1:name}(${2:args}):\n\t${3:pass}"
-" New Method
-exe "Snipp defs def ${1:mname}(self, ${2:arg})):\n\t${3:pass}"
-" New Property
-exe "Snipp property def ${1:foo}():\n\tdoc = \"${2:The $1 property.}\"\n\tdef fget(self):\n\t\t\t${3:return self._$1}\n\tdef fset(self, value):\n\t\t"
-\."${4:self._$1 = value}\n\tdef fdel(self):\n\t\t\t${5:del self._$1}\n\treturn locals()\n$1 = property(**$1())${6}"
-" Self
-exe 'Snipp . self.'
-" Try/Except
-exe "Snipp try try:\n\t${1:pass}\nexcept ${2:Exception}, ${3:e}:\n\t${4:raise $3}"
-" Try/Except/Else
-exe "Snipp trye try:\n\t${1:pass}\nexcept ${2:Exception}, ${3:e}:\n\t${4:raise $3}\nelse:\n\t${5:pass}"
-" Try/Except/Finally
-exe "Snipp tryf try:\n\t${1:pass}\nexcept ${2:Exception}, ${3:e}:\n\t${4:raise $3}\nfinally:\n\t${5:pass}"
-" Try/Except/Else/Finally
-exe "Snipp tryef try:\n\t${1:pass}\nexcept ${2:Exception}, ${3:e}:\n\t${4:raise $3}\nelse:\n\t${5:pass}\nfinally:\n\t${6:pass}"
-" if __name__ == '__main__':
-exe "Snipp ifmain if __name__ == '__main__':\n\t${1:main()}"
-" __magic__
-exe 'Snipp _ __${1:init}__${2}'

File .vim/after/ftplugin/ruby_snips.vim

-if !exists('loaded_snips') || exists('s:did_ruby_snips')
-	fini
-en
-let s:did_ruby_snips = 1
-let snippet_filetype = 'ruby'
-
-" GRB
-exe "Snipp i inspect"
-
-" #!/usr/bin/ruby
-exe "Snipp #! #!/usr/bin/ruby\n"
-" New Block
-exe "Snipp =b =begin rdoc\n\t${1}\n=end"
-exe "Snipp y :yields: ${1:arguments}"
-exe "Snipp rb #!/usr/bin/env ruby -wKU\n"
-exe 'Snipp req require "${1}"${2}'
-exe 'Snipp # # =>'
-exe 'Snipp end __END__'
-exe "Snipp case case ${1:object}\nwhen ${2:condition}\n\t${3}\nend"
-exe "Snipp when when ${1:condition}\n\t${2}"
-exe "Snipp def def ${1:method_name}\n\t${2}\nend"
-exe "Snipp deft def test_${1:case_name}\n\t${2}\nend"
-exe "Snipp if if ${1:condition}\n\t${2}\nend"
-exe "Snipp ife if ${1:condition}\n\t${2}\nelse\n\t${3}\nend"
-exe "Snipp elsif elsif ${1:condition}\n\t${2}"
-exe "Snipp unless unless ${1:condition}\n\t${2}\nend"
-exe "Snipp while while ${1:condition}\n\t${2}\nend"
-exe "Snipp until until ${1:condition}\n\t${2}\nend"
-exe "Snipp! cla \"class .. end\" class ${1:`substitute(Filename(), '^.', '\\u&', '')`}\n\t${2}\nend"
-exe "Snipp! cla \"class .. initialize .. end\" class ${1:`substitute(Filename(), '^.', '\\u&', '')`}\n\tdef initialize(${2:args})\n\t\t${3}\n\tend\n\n\nend"
-exe "Snipp! cla \"class .. < ParentClass .. initialize .. end\" class ${1:`substitute(Filename(), '^.', '\\u&', '')`} < ${2:ParentClass}\n\tdef initialize(${3:args})\n\t\t${4}\n\tend\n\n\nend"
-exe "Snipp! cla \"ClassName = Struct .. do .. end\" ${1:`substitute(Filename(), '^.', '\\u&', '')`} = Struct.new(:${2:attr_names}) do\n\tdef ${3:method_name}\n\t\t${4}\n\tend\n\n\nend"
-exe "Snipp! cla \"class BlankSlate .. initialize .. end\" class ${1:BlankSlate}\n\tinstance_methods.each { |meth| undef_method(meth) unless meth =~ /\A__/ }"
-\ ."\n\n\tdef initialize(${2:args})\n\t\t@${3:delegate} = ${4:$3_object}\n\n\t\t${5}\n\tend\n\n\tdef method_missing(meth, *args, &block)\n\t\t@$3.send(meth, *args, &block)\n\tend\n\n\nend"
-exe "Snipp! cla \"class << self .. end\" class << ${1:self}\n\t${2}\nend"
-" class .. < DelegateClass .. initialize .. end
-exe "Snipp cla- class ${1:`substitute(Filename(), '^.', '\\u&', '')`} < DelegateClass(${2:ParentClass})\n\tdef initialize(${3:args})\n\t\tsuper(${4:del_obj})\n\n\t\t${5}\n\tend\n\n\nend"
-exe "Snipp! mod \"module .. end\" module ${1:`substitute(Filename(), '^.', '\\u&', '')`}\n\t${2}\nend"
-exe "Snipp! mod \"module .. module_function .. end\" module ${1:`substitute(Filename(), '^.', '\\u&', '')`}\n\tmodule_function\n\n\t${2}\nend"
-exe "Snipp! mod \"module .. ClassMethods .. end\" module ${1:`substitute(Filename(), '^.', '\\u&', '')`}\n\tmodule ClassMethods\n\t\t${2}\n\tend\n\n\t"
-\."module InstanceMethods\n\n\tend\n\n\tdef self.included(receiver)\n\t\treceiver.extend         ClassMethods\n\t\treseiver.send :include, InstanceMethods\n\tend\nend"
-" attr_reader
-exe 'Snipp r attr_reader :${1:attr_names}'
-" attr_writer
-exe 'Snipp w attr_writer :${1:attr_names}'
-" attr_accessor
-exe 'Snipp rw attr_accessor :${1:attr_names}'
-" include Enumerable
-exe "Snipp Enum include Enumerable\n\ndef each(&block)\n\t${1}\nend"
-" include Comparable
-exe "Snipp Comp include Comparable\n\ndef <=>(other)\n\t${1}\nend"
-" extend Forwardable
-exe 'Snipp Forw- extend Forwardable'
-" def self
-exe "Snipp defs def self.${1:class_method_name}\n\t${2}\nend"
-" def method_missing
-exe "Snipp defmm def method_missing(meth, *args, &blk)\n\t${1}\nend"
-exe 'Snipp defd def_delegator :${1:@del_obj}, :${2:del_meth}, :${3:new_name}'
-exe 'Snipp defds def_delegators :${1:@del_obj}, :${2:del_methods}'
-exe 'Snipp am alias_method :${1:new_name}, :${2:old_name}'
-exe "Snipp app if __FILE__ == $PROGRAM_NAME\n\t${1}\nend"
-" usage_if()
-exe "Snipp usai if ARGV.${1}\n\tabort \"Usage: #{$PROGRAM_NAME} ${2:ARGS_GO_HERE}\"${3}\nend"
-" usage_unless()
-exe "Snipp usau unless ARGV.${1}\n\tabort \"Usage: #{$PROGRAM_NAME} ${2:ARGS_GO_HERE}\"${3}\nend"
-exe 'Snipp array Array.new(${1:10}) { |${2:i}| ${3} }'
-exe 'Snipp hash Hash.new { |${1:hash}, ${2:key}| $1[$2] = ${3} }'
-exe 'Snipp! file "File.foreach() { |line| .. }" File.foreach(${1:"path/to/file"}) { |${2:line}| ${3} }'
-exe 'Snipp! file "File.read()" File.read(${1:"path/to/file"})${2}'
-exe 'Snipp! Dir "Dir.global() { |file| .. }" Dir.glob(${1:"dir/glob/*"}) { |${2:file}| ${3} }'
-exe 'Snipp! Dir "Dir[''..'']" Dir[${1:"glob/**/*.rb"}]${2}'
-exe 'Snipp dir Filename.dirname(__FILE__)'
-exe 'Snipp deli delete_if { |${1:e}| ${2} }'
-exe 'Snipp fil fill(${1:range}) { |${2:i}| ${3} }'
-" flatten_once()
-exe 'Snipp flao inject(Array.new) { |${1:arr}, ${2:a}| $1.push(*$2)}${3}'
-exe 'Snipp zip zip(${1:enums}) { |${2:row}| ${3} }'
-" downto(0) { |n| .. }
-exe 'Snipp dow downto(${1:0}) { |${2:n}| ${3} }'
-exe 'Snipp ste step(${1:2}) { |${2:n}| ${3} }'
-exe 'Snipp tim times { |${1:n}| ${2} }'
-exe 'Snipp upt upto(${1:1.0/0.0}) { |${2:n}| ${3} }'
-exe 'Snipp loo loop { ${1} }'
-exe 'Snipp ea each { |${1:e}| ${2} }'
-exe 'Snipp eab each_byte { |${1:byte}| ${2} }'
-exe 'Snipp! eac- "each_char { |chr| .. }" each_char { |${1:chr}| ${2} }'
-exe 'Snipp! eac- "each_cons(..) { |group| .. }" each_cons(${1:2}) { |${2:group}| ${3} }'
-exe 'Snipp eai each_index { |${1:i}| ${2} }'
-exe 'Snipp eak each_key { |${1:key}| ${2} }'
-exe 'Snipp eal each_line { |${1:line}| ${2} }'
-exe 'Snipp eap each_pair { |${1:name}, ${2:val}| ${3} }'
-exe 'Snipp eas- each_slice(${1:2}) { |${2:group}| ${3} }'
-exe 'Snipp eav each_value { |${1:val}| ${2} }'
-exe 'Snipp eawi each_with_index { |${1:e}, ${2:i}| ${3} }'
-exe 'Snipp reve reverse_each { |${1:e}| ${2} }'
-exe 'Snipp inj inject(${1:init}) { |${2:mem}, ${3:var}| ${4} }'
-exe 'Snipp map map { |${1:e}| ${2} }'
-exe 'Snipp mapwi- enum_with_index.map { |${1:e}, ${2:i}| ${3} }'
-exe 'Snipp sor sort { |a, b| ${1} }'
-exe 'Snipp sorb sort_by { |${1:e}| ${2} }'
-exe 'Snipp ran sort_by { rand }'
-exe 'Snipp all all? { |${1:e}| ${2} }'
-exe 'Snipp any any? { |${1:e}| ${2} }'
-exe 'Snipp cl classify { |${1:e}| ${2} }'
-exe 'Snipp col collect { |${1:e}| ${2} }'
-exe 'Snipp det detect { |${1:e}| ${2} }'
-exe 'Snipp fet fetch(${1:name}) { |${2:key}| ${3} }'
-exe 'Snipp fin find { |${1:e}| ${2} }'
-exe 'Snipp fina find_all { |${1:e}| ${2} }'
-exe 'Snipp gre grep(${1:/pattern/}) { |${2:match}| ${3} }'
-exe 'Snipp sub ${1:g}sub(${2:/pattern/}) { |${3:match}| ${4} }'
-exe 'Snipp sca scan(${1:/pattern/}) { |${2:match}| ${3} }'
-exe 'Snipp max max { |a, b|, ${1} }'
-exe 'Snipp min min { |a, b|, ${1} }'
-exe 'Snipp par partition { |${1:e}|, ${2} }'
-exe 'Snipp rej reject { |${1:e}|, ${2} }'
-exe 'Snipp sel select { |${1:e}|, ${2} }'
-exe 'Snipp lam lambda { |${1:args}| ${2} }'
-exe "Snipp do do |${1:variable}|\n\t${2}\nend"
-exe 'Snipp : :${1:key} => ${2:"value"}${3}'
-exe 'Snipp ope open(${1:"path/or/url/or/pipe"}, "${2:w}") { |${3:io}| ${4} }'
-" path_from_here()
-exe 'Snipp patfh File.join(File.dirname(__FILE__), *%2[${1:rel path here}])${2}'
-" unix_filter {}
-exe "Snipp unif ARGF.each_line${1} do |${2:line}|\n\t${3}\nend"
-" option_parse {}
-exe "Snipp optp require \"optparse\"\n\noptions = {${1:default => \"args\"}}\n\nARGV.options do |opts|\n\topts.banner = \"Usage: #{File.basename($PROGRAM_NAME)}"
-\."[OPTIONS] ${2:OTHER_ARGS}\"\n\n\topts.separator \"\"\n\topts.separator \"Specific Options:\"\n\n\t${3}\n\n\topts.separator \"Common Options:\"\n\n\t"
-\."opts.on( \"-h\", \"--help\",\n           \"Show this message.\" ) do\n\t\tputs opts\n\t\texit\n\tend\n\n\tbegin\n\t\topts.parse!\n\trescue\n\t\tputs opts\n\t\texit\n\tend\nend"
-exe "Snipp opt opts.on( \"-${1:o}\", \"--${2:long-option-name}\", ${3:String},\n         \"${4:Option description.}\") do |${5:opt}|\n\t${6}\nend"
-exe "Snipp tc require \"test/unit\"\n\nrequire \"${1:library_file_name}\"\n\nclass Test${2:$1} < Test::Unit::TestCase\n\tdef test_${3:case_name}\n\t\t${4}\n\tend\nend"
-exe "Snipp ts require \"test/unit\"\n\nrequire \"tc_${1:test_case_file}\"\nrequire \"tc_${2:test_case_file}\"${3}"
-exe 'Snipp as assert(${1:test}, \"${2:Failure message.}\")${3}'
-exe 'Snipp ase assert_equal(${1:expected}, ${2:actual})${3}'
-exe 'Snipp asne assert_not_equal(${1:unexpected}, ${2:actual})${3}'
-exe 'Snipp asid assert_in_delta(${1:expected_float}, ${2:actual_float}, ${3:2 ** -20})${4}'
-exe 'Snipp asio assert_instance_of(${1:ExpectedClass}, ${2:actual_instance})${3}'
-exe 'Snipp asko assert_kind_of(${1:ExpectedKind}, ${2:actual_instance})${3}'
-exe 'Snipp asn assert_nil(${1:instance})${2}'
-exe 'Snipp asnn assert_not_nil(${1:instance})${2}'
-exe 'Snipp asm assert_match(/${1:expected_pattern}/, ${2:actual_string})${3}'
-exe 'Snipp asnm assert_no_match(/${1:unexpected_pattern}/, ${2:actual_string})${3}'
-exe 'Snipp aso assert_operator(${1:left}, :${2:operator}, ${3:right})${4}'
-exe 'Snipp asr assert_raise(${1:Exception}) { ${2} }'
-exe 'Snipp asnr assert_nothing_raised(${1:Exception}) { ${2} }'
-exe 'Snipp asrt assert_respond_to(${1:object}, :${2:method})${3}'
-exe 'Snipp! ass "assert_same(..)" assert_same(${1:expected}, ${2:actual})${3}'
-exe 'Snipp! ass "assert_send(..)" assert_send([${1:object}, :${2:message}, ${3:args}])${4}'
-exe 'Snipp asns assert_not_same(${1:unexpected}, ${2:actual})${3}'
-exe 'Snipp ast assert_throws(:${1:expected}) { ${2} }'
-exe 'Snipp asnt assert_nothing_thrown { ${1} }'
-exe 'Snipp fl flunk("${1:Failure message.}")${2}'
-" Benchmark.bmbm do .. end
-exe "Snipp bm- TESTS = ${1:10_000}\nBenchmark.bmbm do |results|\n\t${2}\nend"
-exe 'Snipp rep results.report("${1:name}:") { TESTS.times { ${2} }}'
-" Marshal.dump(.., file)
-exe 'Snipp Md File.open(${1:"path/to/file.dump"}, "wb") { |${2:file}| Marshal.dump(${3:obj}, $2) }${4}'
-" Mashal.load(obj)
-exe 'Snipp Ml File.open(${1:"path/to/file.dump"}, "rb") { |${2:file}| Marshal.load($2) }${3}'
-" deep_copy(..)
-exe 'Snipp deec Marshal.load(Marshal.dump(${1:obj_to_copy}))${2}'
-exe 'Snipp Pn- PStore.new(${1:"file_name.pstore"})${2}'
-exe 'Snipp tra transaction(${1:true}) { ${2} }'
-" xmlread(..)
-exe 'Snipp xml- REXML::Document.new(File.read(${1:"path/to/file"}))${2}'
-" xpath(..) { .. }
-exe "Snipp xpa elements.each(${1:\"//Xpath\"}) do |${2:node}|\n\t${3}\nend"
-" class_from_name()
-exe 'Snipp clafn split("::").inject(Object) { |par, const| par.const_get(const) }'
-" singleton_class()
-exe 'Snipp sinc class << self; self end'
-exe "Snipp nam namespace :${1:`Filename()`} do\n\t${2}\nend"
-exe "Snipp tas desc \"${1:Task description\}\"\ntask :${2:task_name => [:dependent, :tasks]} do\n\t${3}\nend"

File .vim/after/ftplugin/sh_snips.vim

-if !exists('loaded_snips') || exists('s:did_sh_snips')
-	fini
-en
-let s:did_sh_snips = 1
-let snippet_filetype = 'sh'
-
-" #!/bin/bash
-exe "Snipp #! #!/bin/bash\n"
-exe "Snipp if if [[ ${1:condition} ]]; then\n\t${2:#statements}\nfi"
-exe "Snipp elif elif [[ ${1:condition} ]]; then\n\t${2:#statements}"
-exe "Snipp for for (( ${2:i} = 0; $2 < ${1:count}; $2++ )); do\n\t${3:#statements}\ndone"
-exe "Snipp wh while [[ ${1:condition} ]]; do\n\t${2:#statements}\ndone"
-exe "Snipp until [[ ${1:condition} ]]; do\n\t${2:#statements}\ndone"
-exe "Snipp case case ${1:word} in\n\t${2:pattern})\n\t\t${3};;\nesac"

File .vim/after/ftplugin/tex_snips.vim

-if !exists('loaded_snips') || exists('s:did_tex_snips')
-	fini
-en
-let s:did_tex_snips = 1
-let snippet_filetype = 'tex'
-
-" \begin{}...\end{}
-exe "Snipp begin \\begin{${1:env}}\n\t${2}\n\\end{$1}"
-" Tabular
-exe "Snipp tab \\begin{${1:tabular}}{${2:c}}\n${3}\n\\end{$1}"
-" Align(ed)
-exe "Snipp ali \\begin{align${1:ed}}\n\t${2}\n\\end{align$1}"
-" Gather(ed)
-exe "Snipp gat \\begin{gather${1:ed}}\n\t${2}\n\\end{gather$1}"
-" Equation
-exe "Snipp eq \\begin{equation}\n\t${1}\n\\end{equation}"
-" Unnumbered Equation
-exe "Snipp \\ \\\\[\n\t${1}\n\\\\]"
-" Enumerate
-exe "Snipp enum \\begin{enumerate}\n\t\\item ${1}\n\\end{enumerate}"
-" Itemize
-exe "Snipp item \\begin{itemize}\n\t\\item ${1}\n\\end{itemize}"
-" Description
-exe "Snipp desc \\begin{description}\n\t\\item[${1}] ${2}\n\\end{description}"
-" Matrix
-exe "Snipp mat \\begin{${1:p/b/v/V/B/small}matrix}\n\t${2}\n\\end{$1matrix}"
-" Cases
-exe "Snipp cas \\begin{cases}\n\t${1:equation}, &\\text{ if }${2:case}\\\\\n\t${3}\n\\end{cases}"
-" Split
-exe "Snipp spl \\begin{split}\n\t${1}\n\\end{split}"
-" Part
-exe "Snipp part \\part{${1:part name}} % (fold)\n\\label{prt:${2:$1}}\n${3}\n% part $2 (end)"
-" Chapter
-exe "Snipp cha \\chapter{${1:chapter name}} % (fold)\n\\label{cha:${2:$1}}\n${3}\n% chapter $2 (end)"
-" Section
-exe "Snipp sec \\section{${1:section name}} % (fold)\n\\label{sec:${2:$1}}\n${3}\n% section $2 (end)"
-" Sub Section
-exe "Snipp sub \\subsection{${1:subsection name}} % (fold)\n\\label{sub:${2:$1}}\n${3}\n% subsection $2 (end)"
-" Sub Sub Section
-exe "Snipp subs \\subsubsection{${1:subsubsection name}} % (fold)\n\\label{ssub:${2:$1}}\n${3}\n% subsubsection $2 (end)"
-" Paragraph
-exe "Snipp par \\paragraph{${1:paragraph name}} % (fold)\n\\label{par:${2:$1}}\n${3}\n% paragraph $2 (end)"
-" Sub Paragraph
-exe "Snipp subp \\subparagraph{${1:subparagraph name}} % (fold)\n\\label{subp:${2:$1}}\n${3}\n% subparagraph $2 (end)"
-exe 'Snipp itd \item[${1:description}] ${2:item}'
-exe 'Snipp figure ${1:Figure}~\ref{${2:fig:}}${3}'
-exe 'Snipp table ${1:Table}~\ref{${2:tab:}}${3}'
-exe 'Snipp listing ${1:Listing}~\ref{${2:list}}${3}'
-exe 'Snipp section ${1:Section}~\ref{${2:sec:}}${3}'
-exe 'Snipp page ${1:page}~\pageref{${2}}${3}'

File .vim/after/ftplugin/vim_snips.vim

-if !exists('g:loaded_snips') || exists('s:did_vim_snips')
-	fini
-en
-let s:did_vim_snips = 1
-let snippet_filetype = 'vim'
-
-" snippets for making snippets :)
-exe 'Snipp snip exe "Snipp ${1:trigger}"${2}'
-exe "Snipp snipp exe 'Snipp ${1:trigger}'${2}"
-exe 'Snipp bsnip exe "BufferSnip ${1:trigger}"${2}'
-exe "Snipp bsnipp exe 'BufferSnip ${1:trigger}'${2}"
-exe 'Snipp gsnip exe "GlobalSnip ${1:trigger}"${2}'
-exe "Snipp gsnipp exe 'GlobalSnip ${1:trigger}'${2}"
-exe "Snipp guard if !exists('g:loaded_snips') || exists('s:did_".
-	\ "${1:`substitute(expand(\"%:t:r\"), \"_snips\", \"\", \"\")`}_snips')\n\t"
-	\ "finish\nendif\nlet s:did_$1_snips = 1\nlet snippet_filetype = '$1'${2}"
-
-exe "Snipp f fun ${1:function_name}()\n\t${2:\" code}\nendfun"
-exe "Snipp for for ${1:needle} in ${2:haystack}\n\t${3:\" code}\nendfor"
-exe "Snipp wh wh ${1:condition}\n\t${2:\" code}\nendw"
-exe "Snipp if if ${1:condition}\n\t${2:\" code}\nendif"
-exe "Snipp ife if ${1:condition}\n\t${2}\nelse\n\t${3}\nendif"

File .vim/after/plugin/global_snips.vim

-if !exists('g:loaded_snips') || exists('s:did_snips')
-	fini
-en
-let s:did_snips = 1
-
-" (c) holds no legal value ;)
-exe 'GlobalSnip c) '.(&enc[:2] == 'utf' ? '©' : '(c)').' Copyright `strftime("%Y")` ${1:`g:snips_author`}. All Rights Reserved.${2}'
-exe 'GlobalSnip date `strftime("%Y-%m-%d")`'

File .vim/after/plugin/snipMate.vim

 " These are the mappings for snipMate.vim. Putting it here ensures that it
 " will be mapped after other plugins such as supertab.vim.
-if exists('s:did_snips_mappings') || &cp || version < 700
+if !exists('loaded_snips') || exists('s:did_snips_mappings')
 	finish
 endif
 let s:did_snips_mappings = 1
 
-" ino <silent> <tab> <c-r>=TriggerSnippet()<cr>
-" snor <silent> <tab> <esc>i<right><c-r>=TriggerSnippet()<cr>
+ino <silent> <tab> <c-r>=TriggerSnippet()<cr>
+snor <silent> <tab> <esc>i<right><c-r>=TriggerSnippet()<cr>
+ino <silent> <s-tab> <c-r>=BackwardsSnippet()<cr>
+snor <silent> <s-tab> <esc>i<right><c-r>=BackwardsSnippet()<cr>
+ino <silent> <c-r><tab> <c-r>=ShowAvailableSnips()<cr>
+
+" The default mappings for these are annoying & sometimes break snipMate.
+" You can change them back if you want, I've put them here for convenience.
 snor <bs> b<bs>
-snor ' b<bs>'
 snor <right> <esc>a
 snor <left> <esc>bi
+snor ' b<bs>'
+snor ` b<bs>`
+snor % b<bs>%
+snor U b<bs>U
+snor ^ b<bs>^
+snor \ b<bs>\
+snor <c-x> b<bs><c-x>
 
-au FileType objc,cpp,cs let &ft = expand('<amatch>').'.c'
+" By default load snippets in snippets_dir
+if empty(snippets_dir)
+	finish
+endif
 
-" By default load snippets in ~/.vim/snippets/<filetype>
-if !exists('snippets_dir')
-	let snippets_dir = $HOME.(has('win16') || has('win32') || has('win64') ?
-							\ '\vimfiles\snippets\' : '/.vim/snippets/')
-endif
-if !isdirectory(snippets_dir) | finish | endif
+call GetSnippets(snippets_dir, '_') " Get global snippets
 
-if isdirectory(snippets_dir.'_')
-	call ExtractSnips(snippets_dir.'_', '_')
-endif
-au FileType * call s:GetSnippets()
-fun s:GetSnippets()
-	for ft in split(&ft, '\.')
-		if !exists('g:did_ft_'.ft) && isdirectory(g:snippets_dir.ft)
-			call ExtractSnips(g:snippets_dir.ft, ft)
-		endif
-	endfor
-endf
+au FileType * if &ft != 'help' | call GetSnippets(snippets_dir, &ft) | endif
 " vim:noet:sw=4:ts=4:ft=vim

File .vim/autoload/snipMate.vim

+fun! Filename(...)
+	let filename = expand('%:t:r')
+	if filename == '' | return a:0 == 2 ? a:2 : '' | endif
+	return !a:0 || a:1 == '' ? filename : substitute(a:1, '$1', filename, 'g')
+endf
+
+fun s:RemoveSnippet()
+	unl! g:snipPos s:curPos s:snipLen s:endCol s:endLine s:prevLen
+	     \ s:lastBuf s:oldWord
+	if exists('s:update')
+		unl s:startCol s:origWordLen s:update
+		if exists('s:oldVars') | unl s:oldVars s:oldEndCol | endif
+	endif
+	aug! snipMateAutocmds
+endf
+
+fun snipMate#expandSnip(snip, col)
+	let lnum = line('.') | let col = a:col
+
+	let snippet = s:ProcessSnippet(a:snip)
+	" Avoid error if eval evaluates to nothing
+	if snippet == '' | return '' | endif
+
+	" Expand snippet onto current position with the tab stops removed
+	let snipLines = split(substitute(snippet, '$\d\+\|${\d\+.\{-}}', '', 'g'), "\n", 1)
+
+	let line = getline(lnum)
+	let afterCursor = strpart(line, col - 1)
+	" Keep text after the cursor
+	if afterCursor != "\t" && afterCursor != ' '
+		let line = strpart(line, 0, col - 1)
+		let snipLines[-1] .= afterCursor
+	else
+		let afterCursor = ''
+		" For some reason the cursor needs to move one right after this
+		if line != '' && col == 1 && &ve != 'all' && &ve != 'onemore'
+			let col += 1
+		endif
+	endif
+
+	call setline(lnum, line.snipLines[0])
+
+	" Autoindent snippet according to previous indentation
+	let indent = matchend(line, '^.\{-}\ze\(\S\|$\)') + 1
+	call append(lnum, map(snipLines[1:], "'".strpart(line, 0, indent - 1)."'.v:val"))
+
+	" Open any folds snippet expands into
+	if &fen | sil! exe lnum.','.(lnum + len(snipLines) - 1).'foldopen' | endif
+
+	let [g:snipPos, s:snipLen] = s:BuildTabStops(snippet, lnum, col - indent, indent)
+
+	if s:snipLen
+		aug snipMateAutocmds
+			au CursorMovedI * call s:UpdateChangedSnip(0)
+			au InsertEnter * call s:UpdateChangedSnip(1)
+		aug END
+		let s:lastBuf = bufnr(0) " Only expand snippet while in current buffer
+		let s:curPos = 0
+		let s:endCol = g:snipPos[s:curPos][1]
+		let s:endLine = g:snipPos[s:curPos][0]
+
+		call cursor(g:snipPos[s:curPos][0], g:snipPos[s:curPos][1])
+		let s:prevLen = [line('$'), col('$')]
+		if g:snipPos[s:curPos][2] != -1 | return s:SelectWord() | endif
+	else
+		unl g:snipPos s:snipLen
+		" Place cursor at end of snippet if no tab stop is given
+		let newlines = len(snipLines) - 1
+		call cursor(lnum + newlines, indent + len(snipLines[-1]) - len(afterCursor)
+					\ + (newlines ? 0: col - 1))
+	endif
+	return ''
+endf
+
+" Prepare snippet to be processed by s:BuildTabStops
+fun s:ProcessSnippet(snip)
+	let snippet = a:snip
+	" Evaluate eval (`...`) expressions.
+	" Using a loop here instead of a regex fixes a bug with nested "\=".
+	if stridx(snippet, '`') != -1
+		while match(snippet, '`.\{-}`') != -1
+			let snippet = substitute(snippet, '`.\{-}`',
+						\ substitute(eval(matchstr(snippet, '`\zs.\{-}\ze`')),
+						\ "\n\\%$", '', ''), '')
+		endw
+		let snippet = substitute(snippet, "\r", "\n", 'g')
+	endif
+
+	" Place all text after a colon in a tab stop after the tab stop
+	" (e.g. "${#:foo}" becomes "${:foo}foo").
+	" This helps tell the position of the tab stops later.
+	let snippet = substitute(snippet, '${\d\+:\(.\{-}\)}', '&\1', 'g')
+
+	" Update the a:snip so that all the $# become the text after
+	" the colon in their associated ${#}.
+	" (e.g. "${1:foo}" turns all "$1"'s into "foo")
+	let i = 1
+	while stridx(snippet, '${'.i) != -1
+		let s = matchstr(snippet, '${'.i.':\zs.\{-}\ze}')
+		if s != ''
+			let snippet = substitute(snippet, '$'.i, s.'&', 'g')
+		endif
+		let i += 1
+	endw
+
+	if &et " Expand tabs to spaces if 'expandtab' is set.
+		return substitute(snippet, '\t', repeat(' ', &sts ? &sts : &sw), 'g')
+	endif
+	return snippet
+endf
+
+" Counts occurences of haystack in needle
+fun s:Count(haystack, needle)
+	let counter = 0
+	let index = stridx(a:haystack, a:needle)
+	while index != -1
+		let index = stridx(a:haystack, a:needle, index+1)
+		let counter += 1
+	endw
+	return counter
+endf
+
+" Builds a list of a list of each tab stop in the snippet containing:
+" 1.) The tab stop's line number.
+" 2.) The tab stop's column number
+"     (by getting the length of the string between the last "\n" and the
+"     tab stop).
+" 3.) The length of the text after the colon for the current tab stop
+"     (e.g. "${1:foo}" would return 3). If there is no text, -1 is returned.
+" 4.) If the "${#:}" construct is given, another list containing all
+"     the matches of "$#", to be replaced with the placeholder. This list is
+"     composed the same way as the parent; the first item is the line number,
+"     and the second is the column.
+fun s:BuildTabStops(snip, lnum, col, indent)
+	let snipPos = []
+	let i = 1
+	let withoutVars = substitute(a:snip, '$\d\+', '', 'g')
+	while stridx(a:snip, '${'.i) != -1
+		let beforeTabStop = matchstr(withoutVars, '^.*\ze${'.i.'\D')
+		let withoutOthers = substitute(withoutVars, '${\('.i.'\D\)\@!\d\+.\{-}}', '', 'g')
+
+		let j = i - 1
+		call add(snipPos, [0, 0, -1])
+		let snipPos[j][0] = a:lnum + s:Count(beforeTabStop, "\n")
+		let snipPos[j][1] = a:indent + len(matchstr(withoutOthers, '.*\(\n\|^\)\zs.*\ze${'.i.'\D'))
+		if snipPos[j][0] == a:lnum | let snipPos[j][1] += a:col | endif
+
+		" Get all $# matches in another list, if ${#:name} is given
+		if stridx(withoutVars, '${'.i.':') != -1
+			let snipPos[j][2] = len(matchstr(withoutVars, '${'.i.':\zs.\{-}\ze}'))
+			let dots = repeat('.', snipPos[j][2])
+			call add(snipPos[j], [])
+			let withoutOthers = substitute(a:snip, '${\d\+.\{-}}\|$'.i.'\@!\d\+', '', 'g')
+			while match(withoutOthers, '$'.i.'\(\D\|$\)') != -1
+				let beforeMark = matchstr(withoutOthers, '^.\{-}\ze'.dots.'$'.i.'\(\D\|$\)')
+				call add(snipPos[j][3], [0, 0])
+				let snipPos[j][3][-1][0] = a:lnum + s:Count(beforeMark, "\n")
+				let snipPos[j][3][-1][1] = a:indent + (snipPos[j][3][-1][0] > a:lnum
+				                           \ ? len(matchstr(beforeMark, '.*\n\zs.*'))
+				                           \ : a:col + len(beforeMark))
+				let withoutOthers = substitute(withoutOthers, '$'.i.'\ze\(\D\|$\)', '', '')
+			endw
+		endif
+		let i += 1
+	endw
+	return [snipPos, i - 1]
+endf
+
+fun snipMate#jumpTabStop(backwards)
+	let leftPlaceholder = exists('s:origWordLen')
+	                      \ && s:origWordLen != g:snipPos[s:curPos][2]
+	if leftPlaceholder && exists('s:oldEndCol')
+		let startPlaceholder = s:oldEndCol + 1
+	endif
+
+	if exists('s:update')
+		call s:UpdatePlaceholderTabStops()
+	else
+		call s:UpdateTabStops()
+	endif
+
+	" Don't reselect placeholder if it has been modified
+	if leftPlaceholder && g:snipPos[s:curPos][2] != -1
+		if exists('startPlaceholder')
+			let g:snipPos[s:curPos][1] = startPlaceholder
+		else
+			let g:snipPos[s:curPos][1] = col('.')
+			let g:snipPos[s:curPos][2] = 0
+		endif
+	endif
+
+	let s:curPos += a:backwards ? -1 : 1
+	" Loop over the snippet when going backwards from the beginning
+	if s:curPos < 0 | let s:curPos = s:snipLen - 1 | endif
+
+	if s:curPos == s:snipLen
+		let sMode = s:endCol == g:snipPos[s:curPos-1][1]+g:snipPos[s:curPos-1][2]
+		call s:RemoveSnippet()
+		return sMode ? "\<tab>" : TriggerSnippet()
+	endif
+
+	call cursor(g:snipPos[s:curPos][0], g:snipPos[s:curPos][1])
+
+	let s:endLine = g:snipPos[s:curPos][0]
+	let s:endCol = g:snipPos[s:curPos][1]
+	let s:prevLen = [line('$'), col('$')]
+
+	return g:snipPos[s:curPos][2] == -1 ? '' : s:SelectWord()
+endf
+
+fun s:UpdatePlaceholderTabStops()
+	let changeLen = s:origWordLen - g:snipPos[s:curPos][2]
+	unl s:startCol s:origWordLen s:update
+	if !exists('s:oldVars') | return | endif
+	" Update tab stops in snippet if text has been added via "$#"
+	" (e.g., in "${1:foo}bar$1${2}").
+	if changeLen != 0
+		let curLine = line('.')
+
+		for pos in g:snipPos
+			if pos == g:snipPos[s:curPos] | continue | endif
+			let changed = pos[0] == curLine && pos[1] > s:oldEndCol
+			let changedVars = 0
+			let endPlaceholder = pos[2] - 1 + pos[1]
+			" Subtract changeLen from each tab stop that was after any of
+			" the current tab stop's placeholders.
+			for [lnum, col] in s:oldVars
+				if lnum > pos[0] | break | endif
+				if pos[0] == lnum
+					if pos[1] > col || (pos[2] == -1 && pos[1] == col)
+						let changed += 1
+					elseif col < endPlaceholder
+						let changedVars += 1
+					endif
+				endif
+			endfor
+			let pos[1] -= changeLen * changed
+			let pos[2] -= changeLen * changedVars " Parse variables within placeholders
+                                                  " e.g., "${1:foo} ${2:$1bar}"
+
+			if pos[2] == -1 | continue | endif
+			" Do the same to any placeholders in the other tab stops.
+			for nPos in pos[3]
+				let changed = nPos[0] == curLine && nPos[1] > s:oldEndCol
+				for [lnum, col] in s:oldVars
+					if lnum > nPos[0] | break | endif
+					if nPos[0] == lnum && nPos[1] > col
+						let changed += 1
+					endif
+				endfor
+				let nPos[1] -= changeLen * changed
+			endfor
+		endfor
+	endif
+	unl s:endCol s:oldVars s:oldEndCol
+endf
+
+fun s:UpdateTabStops()
+	let changeLine = s:endLine - g:snipPos[s:curPos][0]
+	let changeCol = s:endCol - g:snipPos[s:curPos][1]
+	if exists('s:origWordLen')
+		let changeCol -= s:origWordLen
+		unl s:origWordLen
+	endif
+	let lnum = g:snipPos[s:curPos][0]
+	let col = g:snipPos[s:curPos][1]
+	" Update the line number of all proceeding tab stops if <cr> has
+	" been inserted.
+	if changeLine != 0
+		let changeLine -= 1
+		for pos in g:snipPos
+			if pos[0] >= lnum
+				if pos[0] == lnum | let pos[1] += changeCol | endif
+				let pos[0] += changeLine
+			endif
+			if pos[2] == -1 | continue | endif
+			for nPos in pos[3]
+				if nPos[0] >= lnum
+					if nPos[0] == lnum | let nPos[1] += changeCol | endif
+					let nPos[0] += changeLine
+				endif
+			endfor
+		endfor
+	elseif changeCol != 0
+		" Update the column of all proceeding tab stops if text has
+		" been inserted/deleted in the current line.
+		for pos in g:snipPos
+			if pos[1] >= col && pos[0] == lnum
+				let pos[1] += changeCol
+			endif
+			if pos[2] == -1 | continue | endif
+			for nPos in pos[3]
+				if nPos[0] > lnum | break | endif
+				if nPos[0] == lnum && nPos[1] >= col
+					let nPos[1] += changeCol
+				endif
+			endfor
+		endfor
+	endif
+endf
+
+fun s:SelectWord()
+	let s:origWordLen = g:snipPos[s:curPos][2]
+	let s:oldWord = strpart(getline('.'), g:snipPos[s:curPos][1] - 1,
+				\ s:origWordLen)
+	let s:prevLen[1] -= s:origWordLen
+	if !empty(g:snipPos[s:curPos][3])
+		let s:update = 1
+		let s:endCol = -1
+		let s:startCol = g:snipPos[s:curPos][1] - 1
+	endif
+	if !s:origWordLen | return '' | endif
+	let l = col('.') != 1 ? 'l' : ''
+	if &sel == 'exclusive'
+		return "\<esc>".l.'v'.s:origWordLen."l\<c-g>"
+	endif
+	return s:origWordLen == 1 ? "\<esc>".l.'gh'
+							\ : "\<esc>".l.'v'.(s:origWordLen - 1)."l\<c-g>"
+endf
+
+" This updates the snippet as you type when text needs to be inserted
+" into multiple places (e.g. in "${1:default text}foo$1bar$1",
+" "default text" would be highlighted, and if the user types something,
+" UpdateChangedSnip() would be called so that the text after "foo" & "bar"
+" are updated accordingly)
+"
+" It also automatically quits the snippet if the cursor is moved out of it
+" while in insert mode.
+fun s:UpdateChangedSnip(entering)
+	if exists('g:snipPos') && bufnr(0) != s:lastBuf
+		call s:RemoveSnippet()
+	elseif exists('s:update') " If modifying a placeholder
+		if !exists('s:oldVars') && s:curPos + 1 < s:snipLen
+			" Save the old snippet & word length before it's updated
+			" s:startCol must be saved too, in case text is added
+			" before the snippet (e.g. in "foo$1${2}bar${1:foo}").
+			let s:oldEndCol = s:startCol
+			let s:oldVars = deepcopy(g:snipPos[s:curPos][3])
+		endif
+		let col = col('.') - 1
+
+		if s:endCol != -1
+			let changeLen = col('$') - s:prevLen[1]
+			let s:endCol += changeLen
+		else " When being updated the first time, after leaving select mode
+			if a:entering | return | endif
+			let s:endCol = col - 1
+		endif
+
+		" If the cursor moves outside the snippet, quit it
+		if line('.') != g:snipPos[s:curPos][0] || col < s:startCol ||
+					\ col - 1 > s:endCol
+			unl! s:startCol s:origWordLen s:oldVars s:update
+			return s:RemoveSnippet()
+		endif
+
+		call s:UpdateVars()
+		let s:prevLen[1] = col('$')
+	elseif exists('g:snipPos')
+		if !a:entering && g:snipPos[s:curPos][2] != -1
+			let g:snipPos[s:curPos][2] = -2
+		endif
+
+		let col = col('.')
+		let lnum = line('.')
+		let changeLine = line('$') - s:prevLen[0]
+
+		if lnum == s:endLine
+			let s:endCol += col('$') - s:prevLen[1]
+			let s:prevLen = [line('$'), col('$')]
+		endif
+		if changeLine != 0
+			let s:endLine += changeLine
+			let s:endCol = col
+		endif
+
+		" Delete snippet if cursor moves out of it in insert mode
+		if (lnum == s:endLine && (col > s:endCol || col < g:snipPos[s:curPos][1]))
+			\ || lnum > s:endLine || lnum < g:snipPos[s:curPos][0]
+			call s:RemoveSnippet()
+		endif
+	endif
+endf
+
+" This updates the variables in a snippet when a placeholder has been edited.
+" (e.g., each "$1" in "${1:foo} $1bar $1bar")
+fun s:UpdateVars()
+	let newWordLen = s:endCol - s:startCol + 1
+	let newWord = strpart(getline('.'), s:startCol, newWordLen)
+	if newWord == s:oldWord || empty(g:snipPos[s:curPos][3])
+		return
+	endif
+
+	let changeLen = g:snipPos[s:curPos][2] - newWordLen
+	let curLine = line('.')
+	let startCol = col('.')
+	let oldStartSnip = s:startCol
+	let updateTabStops = changeLen != 0
+	let i = 0
+
+	for [lnum, col] in g:snipPos[s:curPos][3]
+		if updateTabStops
+			let start = s:startCol
+			if lnum == curLine && col <= start
+				let s:startCol -= changeLen
+				let s:endCol -= changeLen
+			endif
+			for nPos in g:snipPos[s:curPos][3][(i):]
+				" This list is in ascending order, so quit if we've gone too far.
+				if nPos[0] > lnum | break | endif
+				if nPos[0] == lnum && nPos[1] > col
+					let nPos[1] -= changeLen
+				endif
+			endfor
+			if lnum == curLine && col > start
+				let col -= changeLen
+				let g:snipPos[s:curPos][3][i][1] = col
+			endif
+			let i += 1
+		endif
+
+		" "Very nomagic" is used here to allow special characters.
+		call setline(lnum, substitute(getline(lnum), '\%'.col.'c\V'.
+						\ escape(s:oldWord, '\'), escape(newWord, '\&'), ''))
+	endfor
+	if oldStartSnip != s:startCol
+		call cursor(0, startCol + s:startCol - oldStartSnip)
+	endif
+
+	let s:oldWord = newWord
+	let g:snipPos[s:curPos][2] = newWordLen
+endf
+" vim:noet:sw=4:ts=4:ft=vim

File .vim/compiler/nose.vim

-" Vim compiler file
-" Compiler:	Nose unit testing tool for Python
-" Maintainer:	Max Ischenko <ischenko@gmail.com>
-" Last Change: 2006 Nov 13
-
-if exists("current_compiler")
-  finish
-endif
-let current_compiler = "nose"
-
-if exists(":CompilerSet") != 2		" older Vim always used :setlocal
-  command -nargs=* CompilerSet setlocal <args>
-endif
-
-CompilerSet errorformat=%f:%l:\ fail:\ %m,%f:%l:\ error:\ %m
-CompilerSet makeprg=nosetests\ --machine-out

File .vim/doc/snipMate.txt

 *snipMate.txt*  Plugin for using TextMate-style snippets in Vim.
 
 snipMate                                       *snippet* *snippets* *snipMate*
-Last Change: March 15, 2009
+Last Change: July 13, 2009
 
 |snipMate-description|   Description
+|snipMate-syntax|        Snippet syntax
 |snipMate-usage|         Usage
-|snipMate-syntax|        Snippet syntax
+|snipMate-settings|      Settings
 |snipMate-features|      Features
 |snipMate-disadvantages| Disadvantages to TextMate
 |snipMate-contact|       Contact
 ==============================================================================
 DESCRIPTION                                             *snipMate-description*
 
-snipMate.vim implements some of TextMate's snippets features in
-Vim. A snippet is a piece of often-typed text that you can
-insert into your document using a trigger word followed by a <tab>.
+snipMate.vim implements some of TextMate's snippets features in Vim. A
+snippet is a piece of often-typed text that you can insert into your
+document using a trigger word followed by a <tab>.
 
-For instance, in a C file using the default installation of
-snipMate.vim, if you type "for<tab>" in insert mode,
-it will expand a typical for loop in C: >
+For instance, in a C file using the default installation of snipMate.vim, if
+you type "for<tab>" in insert mode, it will expand a typical for loop in C: >
 
  for (i = 0; i < count; i++) {
 
  }
 
 
-To go to the next item in the loop, simply <tab>
-over to it; if there is repeated code, such as the "i" variable
-in this example, you can simply start typing once it's
-highlighted and all the matches specified in the snippet will
-be updated.
+To go to the next item in the loop, simply <tab> over to it; if there is
+repeated code, such as the "i" variable in this example, you can simply
+start typing once it's highlighted and all the matches specified in the
+snippet will be updated. To go in reverse, use <shift-tab>.
 
 ==============================================================================
-USAGE                                                         *snipMate-usage*
+SYNTAX                                                        *snippet-syntax*
 
-There are currently two ways to make snippets: file-based and command-based.
-File-based snippets are simply *.snippet files named after the trigger of
-the snippet placed in the directory of the filetype
-(<filetype>/<trigger>.snippet); command-based snippets are snippets defined
-using the |Snipp| , |BufferSnip|, and |GlobalSnip| commands. File-based
-snippets have the advantage of being easier to read, but do not support
-special characters in snippet triggers, while command-based snippets are
-obviously convenient for short snippets but can quickly get unreadable.
+Snippets can be defined in two ways. They can be in their own file, named
+after their trigger in 'snippets/<filetype>/<trigger>.snippet', or they can be
+defined together in a 'snippets/<filetype>.snippets' file. Note that dotted
+'filetype' syntax is supported -- e.g., you can use >
 
-                                                            *command-snippets*
-------------------------------------------------------------------------------
-Command Snippets~
+	:set ft=html.eruby
 
-Command-based snippets should be installed in the 'after' directory, typically
-located in '~/.vim/after' (see |vimfiles|). Filetype specific snippets should
-be installed in 'after/ftplugin', such as 'after/ftplugin/<filetype>_snips.vim'.
-See |ftplugins|. Global snippets should be installed in 'after/plugin'.
-To ensure user snippets are not lost when upgrading the plugin, name them
-using an ending other than "snips" such as "<filetype>_mysnips.vim"
+to activate snippets for both HTML and eRuby for the current file.
 
-                                       *g:snippet_filetype* *snippet_filetype*
-Partly due to the addition of file-based snippets, it is now necessary to
-define the current filetype for snippets at the top of command-based snippet
-files. For instance, at the top of the 'c_snips.vim' file included with
-snipMate: >
+The syntax for snippets in *.snippets files is the following: >
 
- let snippet_filetype = 'c'
+ snippet trigger
+ 	expanded text
+	more expanded text
 
-This ensures dotted filetypes (see 'filetype') are dealt with correctly.
+Note that the first hard tab after the snippet trigger is required, and not
+expanded in the actual snippet. The syntax for *.snippet files is the same,
+only without the trigger declaration and starting indentation.
 
-                                             *Snipp* *BufferSnip* *GlobalSnip*
-Snipp, BufferSnip, and GlobalSnip Commands~
+Also note that snippets must be defined using hard tabs. They can be expanded
+to spaces later if desired (see |snipMate-indenting|).
 
-Snippets are added via the "Snipp" and "GlobalSnip" commands. The syntax for
-these are "Snipp <trigger> <text>"; e.g.: >
+"#" is used as a line-comment character in *.snippets files; however, they can
+only be used outside of a snippet declaration. E.g.: >
 
- exe "Snipp trigger The cursor will be placed at the end of this sentence."
- exe "GlobalSnip another_trigger foo"
- exe "BufferSnip bar This snippet only works for the current buffer."
+ # this is a correct comment
+ snippet trigger
+ 	expanded text
+ snippet another_trigger
+ 	# this isn't a comment!
+	expanded text
+<
+This should hopefully be obvious with the included syntax highlighting.
 
-"Snipp" creates snippets for the current filetype, "GlobalSnip" creates global
-snippets, and "BufferSnip" creates snippets for the current buffer. "Snipp"
-is used instead of "Snip" to avoid conflicts with the imaps.vim vim script
-that uses that command name.
-
-These commands are conveniently bound to snippets themselves; "snip", "bsnip",
-and "gsnip", respectively (in vim files). So to expand a Snipp command with
-double quotes, just type snip<tab>. Single quote Snipp and GlobalSnip
-commands are bound to the snippets "snipp", "bsnipp" and "gsnipp". See
-|literal-string| for the difference between single and double quotes.
-
-                             *multi_snip* *Snipp!* *BufferSnip!* *GlobalSnip!*
-To specify that a snippet can have multiple matches, use the Snipp,
-BufferSnip, or GlobalSnip command followed by a bang (!). The syntax for these
-are 'Snipp! <trigger> "<name>" <text>'. (Note that the name must be enclosed
-in double quotes). E.g.: >
-
- exe 'Snipp! trigger "Snippet name #1" expand_this_text'
- exe 'Snipp! trigger "Snippet name #2" expand_THIS_text!'
-
-In this example, when "trigger<tab>" is typed, a numbered menu containing all
-of the names for the "trigger" will be shown; when the user presses the
-corresponding number, that snippet will then be expanded.
-
-To create a create a snippet with multiple matches using file-based snippets,
-simply place all the snippets in a subdirectory with the trigger name, i.e.
-'snippets/<filetype>/<trigger>/<name>.snippet'.
-
-To ensure snipMate.vim is loaded, 'compatible' is not set, and your snippet
-file is only loaded once make sure to add: >
-
- if !exists('g:loaded_snips') || exists('s:did_my_snips')
-     finish
- endif
- let s:did_my_snips = 1
-
-to the top of your snippets files. The snippet "guard" comes with snipMate to
-automate this if you'd rather not type it all out.
-
-------------------------------------------------------------------------------
-
-                                                               *file-snippets*
-File Snippets ~
-------------------------------------------------------------------------------
-
-                                 *'snippets'* *g:snippets_dir*
-File-based snippets are by default looked for in the 'snippets' directory
-inside your home '.vim' directory, typically located in
-'~/.vim/snippets/<filetype>' on *nix or '$HOME\vimfiles\snippets\<filetype>'
-on Windows. To change that location or add another one, change the
-g:snippets_dir variable in your |.vimrc| to your preferred directory, or use
-the |ExtractSnips()|function. NOTE: g:snippets_dir must end in a backslash or
-forward slash.
-
-File-based snippets have the same syntax as command-based snippets; just make
-sure to use hard tabs instead of spaces in the files for indenting. They can
-be automatically converted later if desired (see |snipMate-indenting|).
-
-ExtractSnips({directory}, {filetype})                         *ExtractSnips()*
-
-ExtractSnips() extracts *.snippet files from the specified directory and
-defines them as snippets for the given filetype; to define a global snippet,
-use '_' for the {filetype} argument.
-
-                                                                *ResetSnips()*
-The ResetSnips() function removes all snippets from memory. This is useful to
-put at the top of a snippet setup file for file-based snippets if you would
-like to |:source| it multiple times.
-
-------------------------------------------------------------------------------
-
-==============================================================================
-SYNTAX                                       *snipMate-syntax* *snipMate-${#}*
-
+                                                               *snipMate-${#}*
 Tab stops ~
 
 By default, the cursor is placed at the end of a snippet. To specify where the
 stop. E.g., to place the cursor first on the id of a <div> tag, and then allow
 the user to press <tab> to go to the middle of it:
  >
- exe "Snipp div <div id=\"${1}\">\n\t${2}\n</div>"
+ snippet div
+ 	<div id="${1}">
+		${2}
+	</div>
 <
                         *snipMate-placeholders* *snipMate-${#:}* *snipMate-$#*
 Placeholders ~
 the tab stop. This text then can be copied throughout the snippet using "$#",
 given # is the same number as used before. So, to make a C for loop: >
 
- exe "Snipp for for (${2:i}; $2 < ${1:count}; $1++) {\n\t${4}\n}"
+ snippet for
+ 	for (${2:i}; $2 < ${1:count}; $1++) {
+		${4}
+	}
 
 This will cause "count" to first be selected and change if the user starts
 typing. When <tab> is pressed, the "i" in ${2}'s position will be selected;
 
 Variables within variables are also possible. For instance: >
 
- exe 'Snipp opt <option value="${1:option}">${2:$1}</option>'
+ snippet opt
+ 	<option value="${1:option}">${2:$1}</option>
 
 Will, as usual, cause "option" to first be selected and update all the $1
 variables if the user starts typing. Since one of these variables is inside of
 To copy a value throughout a snippet without supplying default text, simply
 use the "${#:}" construct without the text; e.g.: >
 
- exe 'Snipp foo${1:}bar$1'
+ snippet foo
+ 	${1:}bar$1
 <                                                          *snipMate-commands*
 Interpolated Vim Script ~
 
 when the snippet is inserted. Commands are given inside backticks (`...`); for
 TextMates's functionality, use the |system()| function. E.g.: >
 
- exe 'Snipp date `system("date +%Y-%m-%d")`'
+ snippet date
+ 	`system("date +%Y-%m-%d")`
 
 will insert the current date, assuming you are on a Unix system. Note that you
 can also (and should) use |strftime()| for this example.
 if you only want the filename to be returned, the first argument can be left
 blank. Examples: >
 
- exe 'Snipp filename `Filename()`'
- exe 'Snipp filename_with_default `Filename("", "name")`'
- exe 'Snipp filename_foo `Filename("$1_foo")`'
-
+ snippet filename
+ 	`Filename()`
+ snippet filename_with_default
+ 	`Filename('', 'name')`
+ snippet filename_foo
+ 	`filename('$1_foo')`
 
 The first example returns the filename if it the file has been named, and an
 empty string if it hasn't. The second returns the filename if it's been named,
 and "name" if it hasn't. The third returns the filename followed by "_foo" if
 it has been named, and an empty string if it hasn't.
 
-                                          *snipMate-settings* *g:snips_author*
+                                                                   *multi_snip*
+To specify that a snippet can have multiple matches in a *.snippets file, use
+this syntax: >
+
+ snippet trigger A description of snippet #1
+ 	expand this text
+ snippet trigger A description of snippet #2
+ 	expand THIS text!
+
+In this example, when "trigger<tab>" is typed, a numbered menu containing all
+of the descriptions of the "trigger" will be shown; when the user presses the
+corresponding number, that snippet will then be expanded.
+
+To create a snippet with multiple matches using *.snippet files,
+simply place all the snippets in a subdirectory with the trigger name:
+'snippets/<filetype>/<trigger>/<name>.snippet'.
+
+==============================================================================
+USAGE                                                         *snipMate-usage*
+
+                                                 *'snippets'* *g:snippets_dir*
+Snippets are by default looked for any 'snippets' directory in your
+'runtimepath'. Typically, it is located at '~/.vim/snippets/' on *nix or
+'$HOME\vimfiles\snippets\' on Windows. To change that location or add another
+one, change the g:snippets_dir variable in your |.vimrc| to your preferred
+directory, or use the |ExtractSnips()|function. This will be used by the
+|globpath()| function, and so accepts the same syntax as it (e.g.,
+comma-separated paths).
+
+ExtractSnipsFile({directory}, {filetype})     *ExtractSnipsFile()* *.snippets*
+
+ExtractSnipsFile() extracts the specified *.snippets file for the given
+filetype. A .snippets file contains multiple snippet declarations for the
+filetype. It is further explained above, in |snippet-syntax|.
+
+ExtractSnips({directory}, {filetype})             *ExtractSnips()* *.snippet*
+
+ExtractSnips() extracts *.snippet files from the specified directory and
+defines them as snippets for the given filetype. The directory tree should
+look like this: 'snippets/<filetype>/<trigger>.snippet'. If the snippet has
+multiple matches, it should look like this:
+'snippets/<filetype>/<trigger>/<name>.snippet' (see |multi_snip|).
+
+                                                            *ResetSnippets()*
+The ResetSnippets() function removes all snippets from memory. This is useful
+to put at the top of a snippet setup file for if you would like to |:source|
+it multiple times.
+
+                                             *list-snippets* *i_CTRL-R_<Tab>*
+If you would like to see what snippets are available, simply type <c-r><tab>
+in the current buffer to show a list via |popupmenu-completion|.
+
+==============================================================================
+SETTINGS                                  *snipMate-settings* *g:snips_author*
+
 The g:snips_author string (similar to $TM_FULLNAME in TextMate) should be set
 to your name; it can then be used in snippets to automatically add it. E.g.: >
 
  let g:snips_author = 'Hubert Farnsworth'
- exe 'Snipp name `g:snips_author`'
+ snippet name
+ 	`g:snips_author`
 <
-
                                      *snipMate-expandtab* *snipMate-indenting*
-If you would like your snippets to use spaces instead of tabs, just enable
-'expandtab' and set 'softtabstop' to your preferred amount of spaces. If
-'softtabstop' is not set, 'shiftwidth' is used instead.
+If you would like your snippets to be expanded using spaces instead of tabs,
+just enable 'expandtab' and set 'softtabstop' to your preferred amount of
+spaces. If 'softtabstop' is not set, 'shiftwidth' is used instead.
 
                                                               *snipMate-remap*
 snipMate does not come with a setting to customize the trigger key, but you
 can remap it easily in the two lines it's defined in the 'after' directory
 under 'plugin/snipMate.vim'. For instance, to change the trigger key
-to shift-tab, just change this: >
+to CTRL-J, just change this: >
 
- ino <tab> <c-r>=ExpandSnippet()<cr>
- snor <tab> <esc>i<right><c-r>=ExpandSnippet()<cr>
+ ino <tab> <c-r>=TriggerSnippet()<cr>
+ snor <tab> <esc>i<right><c-r>=TriggerSnippet()<cr>
 
 to this: >
- ino <s-tab> <c-r>=ExpandSnippet()<cr>
- snor <s-tab> <esc>i<right><c-r>=ExpandSnippet()<cr>
+ ino <c-j> <c-r>=TriggerSnippet()<cr>
+ snor <c-j> <esc>i<right><c-r>=TriggerSnippet()<cr>
 
 ==============================================================================
 FEATURES                                                   *snipMate-features*
   - Snippets can have multiple matches.
   - Snippets can be out of order. For instance, in a do...while loop, the
     condition can be added before the code.
-  - (New) File-based snippets are supported.
-  - (New) Triggers after non-word delimiters are expanded, e.g. "foo"
+  - [New] File-based snippets are supported.
+  - [New] Triggers after non-word delimiters are expanded, e.g. "foo"
     in "bar.foo".
-  - (New) Nested snippets are possible.
+  - [New] <shift-tab> can now be used to jump tab stops in reverse order.
 
 ==============================================================================
 DISADVANTAGES                                         *snipMate-disadvantages*
 
 snipMate.vim currently has the following disadvantages to TextMate's snippets:
-    - There is no way to go back a tab stop, like shift-tab in TextMate.
     - There is no $0; the order of tab stops must be explicitly stated.
     - Placeholders within placeholders are not possible. E.g.: >
 
 
 I greatly appreciate any suggestions or improvements offered for the script.
 
+==============================================================================
+
 vim:tw=78:ts=8:ft=help:norl:

File .vim/ftdetect/creole.vim

+au BufRead,BufNewFile *.creole set filetype=creole

File .vim/ftplugin/html_snip_helper.vim

+" Helper function for (x)html snippets
+if exists('s:did_snip_helper') || &cp || !exists('loaded_snips')
+	finish
+endif
+let s:did_snip_helper = 1
+
+" Automatically closes tag if in xhtml
+fun! Close()
+	return stridx(&ft, 'xhtml') == -1 ? '' : ' /'
+endf

File .vim/ftplugin/python/pyflakes/pyflakes/__init__.pyc

Binary file removed.

File .vim/ftplugin/python/pyflakes/pyflakes/checker.pyc

Binary file removed.

File .vim/ftplugin/python/pyflakes/pyflakes/messages.pyc

Binary file removed.

File .vim/ftplugin/python/pyflakes/pyflakes/test/test_imports.pyc

Empty file removed.

File .vim/ftplugin/python/pyflakes/pyflakes/test/test_other.pyc

Empty file removed.

File .vim/ftplugin/python/pyflakes/pyflakes/test/test_script.pyc

Empty file removed.

File .vim/ftplugin/python/pyflakes/pyflakes/test/test_undefined_names.pyc

Empty file removed.

File .vim/plugin/snipMate.vim

 " File:          snipMate.vim
 " Author:        Michael Sanders
-" Version:       0.73
-" Last Updated:  March 15, 2009.
+" Last Updated:  July 13, 2009
+" Version:       0.83
 " Description:   snipMate.vim implements some of TextMate's snippets features in
 "                Vim. A snippet is a piece of often-typed text that you can
 "                insert into your document using a trigger word followed by a "<tab>".
 let loaded_snips = 1
 if !exists('snips_author') | let snips_author = 'Me' | endif
 
-com! -nargs=+ -bang Snipp call s:MakeSnippet(<q-args>, snippet_filetype, <bang>0)
-com! -nargs=+ -bang BufferSnip call s:MakeSnippet(<q-args>, bufnr('%'), <bang>0)
-com! -nargs=+ -bang GlobalSnip call s:MakeSnippet(<q-args>, '_', <bang>0)
+au BufRead,BufNewFile *.snippets\= set ft=snippet
+au FileType snippet setl noet fdm=indent
 
 let s:snippets = {} | let s:multi_snips = {}
 
-fun! Filename(...)
-	let filename = expand('%:t:r')
-	if filename == '' | return a:0 == 2 ? a:2 : '' | endif
-	return !a:0 || a:1 == '' ? filename : substitute(a:1, '$1', filename, 'g')
-endf
+if !exists('snippets_dir')
+	let snippets_dir = substitute(globpath(&rtp, 'snippets/'), "\n", ',', 'g')
+endif