<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -7,6 +7,7 @@ let s:did_snips_mappings = 1
 
 ino &lt;silent&gt; &lt;tab&gt; &lt;c-r&gt;=TriggerSnippet()&lt;cr&gt;
 snor &lt;silent&gt; &lt;tab&gt; &lt;esc&gt;i&lt;right&gt;&lt;c-r&gt;=TriggerSnippet()&lt;cr&gt;
+ino &lt;silent&gt; &lt;c-r&gt;&lt;tab&gt; &lt;c-r&gt;=ShowAvailableSnips()&lt;cr&gt;
 snor &lt;bs&gt; b&lt;bs&gt;
 snor ' b&lt;bs&gt;'
 snor &lt;right&gt; &lt;esc&gt;a</diff>
      <filename>after/plugin/snipMate.vim</filename>
    </modified>
    <modified>
      <diff>@@ -8,6 +8,7 @@
 &quot;                For more help see snipMate.txt; you can do this by using:
 &quot;                :helptags ~/.vim/doc
 &quot;                :h snipMate.txt
+&quot;                TOFIX: objc - md&lt;esc&gt;koiba
 
 if exists('loaded_snips') || &amp;cp || version &lt; 700
 	finish
@@ -163,7 +164,7 @@ endf
 &quot; the text after non-word characters is (e.g. check for &quot;foo&quot; in &quot;bar.foo&quot;)
 fun s:GetSnippet(word, scope)
 	let word = a:word | let snippet = ''
-	wh snippet == ''
+	while snippet == ''
 		if exists('s:snippets[&quot;'.a:scope.'&quot;][&quot;'.escape(word, '\&quot;').'&quot;]')
 			let snippet = s:snippets[a:scope][word]
 		elseif exists('s:multi_snips[&quot;'.a:scope.'&quot;][&quot;'.escape(word, '\&quot;').'&quot;]')
@@ -187,4 +188,34 @@ fun s:ChooseSnippet(scope, trigger)
 	let num = inputlist(snippet) - 1
 	return num == -1 ? '' : s:multi_snips[a:scope][a:trigger][num][1]
 endf
+
+fun ShowAvailableSnips()
+	let word = matchstr(getline('.'), '\S\+\%'.col('.').'c')
+	let words = [word]
+	if stridx(word, '.')
+		let words += split(word, '\.')
+		if word[len(word) - 1] == '.' | let words += [''] | endif
+	endif
+	let matchpos = 0
+	let matches = []
+	for scope in [bufnr('%')] + split(&amp;ft, '\.') + ['_']
+		let triggers = exists('s:snippets[&quot;'.scope.'&quot;]') ? keys(s:snippets[scope]) : []
+		if exists('s:multi_snips[&quot;'.scope.'&quot;]')
+			let triggers += keys(s:multi_snips[scope])
+		endif
+		for trigger in triggers
+			for word in words
+				if word == ''
+					let matches += [trigger] &quot; Show all matches if word is empty
+				elseif trigger =~ '^'.word
+					let matches += [trigger]
+					let len = len(word)
+					if len &gt; matchpos | let matchpos = len | endif
+				endif
+			endfor
+		endfor
+	endfor
+	call complete(col('.') - matchpos, matches)
+	return ''
+endf
 &quot; vim:noet:sw=4:ts=4:ft=vim</diff>
      <filename>plugin/snipMate.vim</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>fa6bec47b0aa1e1a48e8185949f730825b64be3f</id>
    </parent>
  </parents>
  <author>
    <name>Michael Sanders</name>
    <email>msanders42@gmail.com</email>
  </author>
  <url>http://github.com/twerth/snipmate.vim/commit/ba316ff8196df9bee94dc82ed74a4b9fd223fb0b</url>
  <id>ba316ff8196df9bee94dc82ed74a4b9fd223fb0b</id>
  <committed-date>2009-05-03T09:42:07-07:00</committed-date>
  <authored-date>2009-05-03T09:42:07-07:00</authored-date>
  <message>added menu that shows available snippets when &lt;c-r&gt;&lt;tab&gt; is pressed</message>
  <tree>583dc087f43262f4c823e8a886cfd3a7ea848e65</tree>
  <committer>
    <name>Michael Sanders</name>
    <email>msanders42@gmail.com</email>
  </committer>
</commit>
