<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -5,6 +5,10 @@ if has(&quot;ruby&quot;)
 &quot; since they can't be called from outside fuzzyfinder.vim
 &quot; ====================================================================================
 
+function! s:GetCurrentTagFiles()
+  return sort(filter(map(tagfiles(), 'fnamemodify(v:val, '':p'')'), 'filereadable(v:val)'))
+endfunction
+
 function! s:ExistsPrompt(line, prompt)
   return  strlen(a:line) &gt;= strlen(a:prompt) &amp;&amp; a:line[:strlen(a:prompt) -1] ==# a:prompt
 endfunction
@@ -13,6 +17,185 @@ function! s:RemovePrompt(line, prompt)
   return a:line[(s:ExistsPrompt(a:line, a:prompt) ? strlen(a:prompt) : 0):]
 endfunction
 
+function! s:OpenBuffer(nr, mode)
+  execute printf([
+        \ ':%sbuffer',
+        \ ':%ssbuffer',
+        \ ':vertical :%ssbuffer',
+        \ ':tab :%ssbuffer',
+        \ ][a:mode], a:nr)
+endfunction
+ 
+function! s:OpenFile(path, mode)
+  let nr = bufnr('^' . a:path . '$')
+  if nr &gt; -1
+    call s:OpenBuffer(nr, a:mode)
+  else
+    execute [
+          \ ':edit ',
+          \ ':split ',
+          \ ':vsplit ',
+          \ ':tabedit ',
+          \ ][a:mode] . s:EscapeFilename(a:path)
+  endif
+endfunction
+function! s:OpenBuffer(nr, mode)
+  execute printf([
+        \ ':%sbuffer',
+        \ ':%ssbuffer',
+        \ ':vertical :%ssbuffer',
+        \ ':tab :%ssbuffer',
+        \ ][a:mode], a:nr)
+endfunction
+ 
+function! s:OpenFile(path, mode)
+  let nr = bufnr('^' . a:path . '$')
+  if nr &gt; -1
+    call s:OpenBuffer(nr, a:mode)
+  else
+    execute [
+          \ ':edit ',
+          \ ':split ',
+          \ ':vsplit ',
+          \ ':tabedit ',
+          \ ][a:mode] . s:EscapeFilename(a:path)
+  endif
+endfunction
+function! s:OpenBuffer(nr, mode)
+  execute printf([
+        \ ':%sbuffer',
+        \ ':%ssbuffer',
+        \ ':vertical :%ssbuffer',
+        \ ':tab :%ssbuffer',
+        \ ][a:mode], a:nr)
+endfunction
+ 
+function! s:OpenFile(path, mode)
+  let nr = bufnr('^' . a:path . '$')
+  if nr &gt; -1
+    call s:OpenBuffer(nr, a:mode)
+  else
+    execute [
+          \ ':edit ',
+          \ ':split ',
+          \ ':vsplit ',
+          \ ':tabedit ',
+          \ ][a:mode] . s:EscapeFilename(a:path)
+  endif
+endfunction
+function! s:OpenBuffer(nr, mode)
+  execute printf([
+        \ ':%sbuffer',
+        \ ':%ssbuffer',
+        \ ':vertical :%ssbuffer',
+        \ ':tab :%ssbuffer',
+        \ ][a:mode], a:nr)
+endfunction
+ 
+function! s:OpenFile(path, mode)
+  let nr = bufnr('^' . a:path . '$')
+  if nr &gt; -1
+    call s:OpenBuffer(nr, a:mode)
+  else
+    execute [
+          \ ':edit ',
+          \ ':split ',
+          \ ':vsplit ',
+          \ ':tabedit ',
+          \ ][a:mode] . s:EscapeFilename(a:path)
+  endif
+endfunction
+function! s:OpenBuffer(nr, mode)
+  execute printf([
+        \ ':%sbuffer',
+        \ ':%ssbuffer',
+        \ ':vertical :%ssbuffer',
+        \ ':tab :%ssbuffer',
+        \ ][a:mode], a:nr)
+endfunction
+ 
+function! s:OpenFile(path, mode)
+  let nr = bufnr('^' . a:path . '$')
+  if nr &gt; -1
+    call s:OpenBuffer(nr, a:mode)
+  else
+    execute [
+          \ ':edit ',
+          \ ':split ',
+          \ ':vsplit ',
+          \ ':tabedit ',
+          \ ][a:mode] . s:EscapeFilename(a:path)
+  endif
+endfunction
+function! s:OpenBuffer(nr, mode)
+  execute printf([
+        \ ':%sbuffer',
+        \ ':%ssbuffer',
+        \ ':vertical :%ssbuffer',
+        \ ':tab :%ssbuffer',
+        \ ][a:mode], a:nr)
+endfunction
+ 
+function! s:OpenFile(path, mode)
+  let nr = bufnr('^' . a:path . '$')
+  if nr &gt; -1
+    call s:OpenBuffer(nr, a:mode)
+  else
+    execute [
+          \ ':edit ',
+          \ ':split ',
+          \ ':vsplit ',
+          \ ':tabedit ',
+          \ ][a:mode] . s:EscapeFilename(a:path)
+  endif
+endfunction
+function! s:OpenBuffer(nr, mode)
+  execute printf([
+        \ ':%sbuffer',
+        \ ':%ssbuffer',
+        \ ':vertical :%ssbuffer',
+        \ ':tab :%ssbuffer',
+        \ ][a:mode], a:nr)
+endfunction
+ 
+function! s:OpenFile(path, mode)
+  let nr = bufnr('^' . a:path . '$')
+  if nr &gt; -1
+    call s:OpenBuffer(nr, a:mode)
+  else
+    execute [
+          \ ':edit ',
+          \ ':split ',
+          \ ':vsplit ',
+          \ ':tabedit ',
+          \ ][a:mode] . s:EscapeFilename(a:path)
+  endif
+endfunction
+function! s:OpenBuffer(nr, mode)
+  execute printf([
+        \ ':%sbuffer',
+        \ ':%ssbuffer',
+        \ ':vertical :%ssbuffer',
+        \ ':tab :%ssbuffer',
+        \ ][a:mode], a:nr)
+endfunction
+ 
+function! s:OpenFile(path, mode)
+  let nr = bufnr('^' . a:path . '$')
+  if nr &gt; -1
+    call s:OpenBuffer(nr, a:mode)
+  else
+    execute [
+          \ ':edit ',
+          \ ':split ',
+          \ ':vsplit ',
+          \ ':tabedit ',
+          \ ][a:mode] . s:EscapeFilename(a:path)
+  endif
+endfunction
+function! s:EscapeFilename(fn)
+  return escape(a:fn, &quot; \t\n*?[{`$%#'\&quot;|!&lt;&quot;)
+endfunction
 &quot; ------------------------------------------------------------------------------------
 &quot; }}}
 &quot; ====================================================================================
@@ -92,7 +275,7 @@ RUBY
         word = match[:path]
         abbr = &quot;%2d: %s&quot; % [index+1, match[:abbr]]
         menu = &quot;[%5d]&quot; % [match[:score] * 10000]
-        VIM.evaluate(&quot;add(result, { 'word' : fnamemodify(#{word.inspect},':~:.'), 'abbr' : #{abbr.inspect}, 'menu' : #{menu.inspect} })&quot;)
+        VIM.evaluate(&quot;add(result, { 'word' : #{word.inspect}, 'abbr' : #{abbr.inspect}, 'menu' : #{menu.inspect} })&quot;)
       end
 RUBY
     return result
@@ -101,7 +284,9 @@ RUBY
   function! FuzzyFinderTextMateLauncher(initial_text, partial_matching)
     call g:FuzzyFinderMode.TextMate.launch(a:initial_text, a:partial_matching)
   endfunction
-
+  function! g:FuzzyFinderMode.TextMate.on_open(expr, mode)
+    call s:OpenFile(fnamemodify(a:expr, ':~:.'), a:mode)
+  endfunction
   let g:FuzzyFinderOptions.TextMate = copy(g:FuzzyFinderOptions.File)
 endfunction &quot;}}}
 </diff>
      <filename>fuzzyfinder_textmate.vim</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>544f0017804b2ab07146f3e82f10e264ab0dd825</id>
    </parent>
  </parents>
  <author>
    <name>Seth Chandler</name>
    <email>sethbc@sethbc.org</email>
  </author>
  <url>http://github.com/sethbc/fuzzyfinder_textmate/commit/c270fad2858341609edc3fb5fbf251fbd2544e9c</url>
  <id>c270fad2858341609edc3fb5fbf251fbd2544e9c</id>
  <committed-date>2009-02-03T21:49:51-08:00</committed-date>
  <authored-date>2009-02-03T21:49:51-08:00</authored-date>
  <message>stet some deletions to fix a bug when hitting enter on an empty line</message>
  <tree>06ba5592fc94372e686b97c702e5ccbf6e1ef087</tree>
  <committer>
    <name>Seth Chandler</name>
    <email>sethbc@sethbc.org</email>
  </committer>
</commit>
